diff options
Diffstat (limited to 'Build')
289 files changed, 24367 insertions, 4507 deletions
diff --git a/Build/source/.github/scripts/build-tl.sh b/Build/source/.github/scripts/build-tl.sh index dde36ebe2b5..8f8fd36f00e 100755 --- a/Build/source/.github/scripts/build-tl.sh +++ b/Build/source/.github/scripts/build-tl.sh @@ -56,7 +56,9 @@ then solaris) # pkg install pkg://solaris/developer/gcc-5 # maybe only the following is enough, and fortran and gobjc needs not be installed? - pkg install pkg://solaris/developer/gcc/gcc-c++-5 + # pkg install pkg://solaris/developer/gcc/gcc-c++-5 + /opt/csw/bin/pkgutil -U + /opt/csw/bin/pkgutil -y -i autoconf automake gcc5core libtool ;; *) echo "Unsupported build system: $buildsys" >&2 diff --git a/Build/source/configure b/Build/source/configure index 701ded6197a..4caf5f3457d 100755 --- a/Build/source/configure +++ b/Build/source/configure @@ -856,6 +856,7 @@ enable_luahbtex enable_luajithbtex enable_mp enable_pmp +enable_texprof enable_upmp enable_xetex enable_xetex_synctex @@ -1679,6 +1680,7 @@ Optional Features: --disable-luajithbtex do not compile and install LuaHBJITTeX --disable-mp do not compile and install MetaPost --disable-pmp do not compile and install pMetaPost + --disable-texprof do not compile and install TeXprof --disable-upmp do not compile and install upMetaPost --disable-xetex do not compile and install XeTeX --disable-xetex-synctex build XeTeX without SyncTeX support @@ -5904,6 +5906,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && { need_libpng=yes need_ptexenc=yes } +# Check whether --enable-texprof was given. +if test ${enable_texprof+y} +then : + enableval=$enable_texprof; +fi +case $enable_texprof in #( + yes | no) : + ;; #( + *) : + enable_texprof=yes ;; +esac # Check whether --enable-upmp was given. if test ${enable_upmp+y} then : diff --git a/Build/source/libs/README b/Build/source/libs/README index 2e4bb26357e..cb87f44feff 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -28,7 +28,7 @@ graphite2 1.3.14 - checked 10apr20 https://sourceforge.net/projects/silgraphite/files/graphite2/ (requires C++11) -harfbuzz 9.0.0 - checked 27aug24 +harfbuzz 10.0.1 - checked 25sep24 https://github.com/harfbuzz/harfbuzz/releases/latest icu 74.2 - checked 22dec23 @@ -37,7 +37,7 @@ icu 74.2 - checked 22dec23 libpaper 1.1.29 - checked 07jan24 https://ftp.debian.org/debian/pool/main/libp/libpaper/ -libpng 1.6.43 - checked 24feb24 +libpng 1.6.44 - checked 13sep24 https://sourceforge.net/projects/libpng/files/ - used by many lua 5.2.4 diff --git a/Build/source/libs/configure b/Build/source/libs/configure index 7a8ec29d2b2..4f2ed804031 100755 --- a/Build/source/libs/configure +++ b/Build/source/libs/configure @@ -799,6 +799,7 @@ enable_luahbtex enable_luajithbtex enable_mp enable_pmp +enable_texprof enable_upmp enable_xetex enable_xetex_synctex @@ -1599,6 +1600,7 @@ Optional Features: --disable-luajithbtex do not compile and install LuaHBJITTeX --disable-mp do not compile and install MetaPost --disable-pmp do not compile and install pMetaPost + --disable-texprof do not compile and install TeXprof --disable-upmp do not compile and install upMetaPost --disable-xetex do not compile and install XeTeX --disable-xetex-synctex build XeTeX without SyncTeX support @@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && { need_libpng=yes need_ptexenc=yes } +# Check whether --enable-texprof was given. +if test ${enable_texprof+y} +then : + enableval=$enable_texprof; +fi +case $enable_texprof in #( + yes | no) : + ;; #( + *) : + enable_texprof=yes ;; +esac # Check whether --enable-upmp was given. if test ${enable_upmp+y} then : diff --git a/Build/source/libs/harfbuzz/ChangeLog b/Build/source/libs/harfbuzz/ChangeLog index 44c06e7ba95..629856d5b41 100644 --- a/Build/source/libs/harfbuzz/ChangeLog +++ b/Build/source/libs/harfbuzz/ChangeLog @@ -1,3 +1,13 @@ +2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import harfbuzz-10.0.1. + * version.ac: Adjusted. + +2024-09-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import harfbuzz-10.0.0. + * version.ac: Adjusted. + 2024-08-27 Akira Kakuto <kakuto@jcom.zaq.ne.jp> * Makefile.am: Use amalgam harfbuzz.cc, since it is easy to diff --git a/Build/source/libs/harfbuzz/TLpatches/ChangeLog b/Build/source/libs/harfbuzz/TLpatches/ChangeLog index 3571fec9e0f..b9d1fb3dbd2 100644 --- a/Build/source/libs/harfbuzz/TLpatches/ChangeLog +++ b/Build/source/libs/harfbuzz/TLpatches/ChangeLog @@ -1,3 +1,13 @@ +2024-09-25 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Imported harfbuzz-10.0.1 source tree from: + https://github.com/harfbuzz/harfbuzz/releases/download/10.0.1/ + +2024-09-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Imported harfbuzz-10.0.0 source tree from: + https://github.com/harfbuzz/harfbuzz/releases/download/10.0.0/ + 2024-08-26 Akira Kakuto <kakuto@jcom.zaq.ne.jp> Imported harfbuzz-9.0.0 source tree from: diff --git a/Build/source/libs/harfbuzz/TLpatches/TL-Changes b/Build/source/libs/harfbuzz/TLpatches/TL-Changes index f0e43685762..e66a14e7d9f 100644 --- a/Build/source/libs/harfbuzz/TLpatches/TL-Changes +++ b/Build/source/libs/harfbuzz/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the harfbuzz-9.0.0/ tree as obtained from: - https://github.com/harfbuzz/harfbuzz/releases/download/9.0.0/ +Changes applied to the harfbuzz-10.0.1/ tree as obtained from: + https://github.com/harfbuzz/harfbuzz/releases/download/10.0.1/ Removed: .clang-format diff --git a/Build/source/libs/harfbuzz/configure b/Build/source/libs/harfbuzz/configure index f90439f7222..1aa85873ec8 100755 --- a/Build/source/libs/harfbuzz/configure +++ b/Build/source/libs/harfbuzz/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 9.0.0. +# Generated by GNU Autoconf 2.72 for harfbuzz (TeX Live) 10.0.1. # # Report bugs to <tex-k@tug.org>. # @@ -604,8 +604,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='harfbuzz (TeX Live)' PACKAGE_TARNAME='harfbuzz--tex-live-' -PACKAGE_VERSION='9.0.0' -PACKAGE_STRING='harfbuzz (TeX Live) 9.0.0' +PACKAGE_VERSION='10.0.1' +PACKAGE_STRING='harfbuzz (TeX Live) 10.0.1' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures harfbuzz (TeX Live) 9.0.0 to adapt to many kinds of systems. +'configure' configures harfbuzz (TeX Live) 10.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1413,7 +1413,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of harfbuzz (TeX Live) 9.0.0:";; + short | recursive ) echo "Configuration of harfbuzz (TeX Live) 10.0.1:";; esac cat <<\_ACEOF @@ -1518,7 +1518,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -harfbuzz (TeX Live) configure 9.0.0 +harfbuzz (TeX Live) configure 10.0.1 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2075,7 +2075,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by harfbuzz (TeX Live) $as_me 9.0.0, which was +It was created by harfbuzz (TeX Live) $as_me 10.0.1, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -5252,7 +5252,7 @@ fi # Define the identity of the package. PACKAGE='harfbuzz--tex-live-' - VERSION='9.0.0' + VERSION='10.0.1' # Some tools Automake needs. @@ -5440,10 +5440,10 @@ WARNING_CFLAGS=$kpse_cv_warning_cflags echo 'tldbg:KPSE_BASIC done (pkg=harfbuzz, amopt=no-define)' >&5 -HB_VERSION_MAJOR=9 +HB_VERSION_MAJOR=10 HB_VERSION_MINOR=0 -HB_VERSION_MICRO=0 -HB_VERSION=9.0.0 +HB_VERSION_MICRO=1 +HB_VERSION=10.0.1 ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -9292,7 +9292,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by harfbuzz (TeX Live) $as_me 9.0.0, which was +This file was extended by harfbuzz (TeX Live) $as_me 10.0.1, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9360,7 +9360,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -harfbuzz (TeX Live) config.status 9.0.0 +harfbuzz (TeX Live) config.status 10.0.1 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS index 9a18f34bff8..38d1c849ba1 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/NEWS +++ b/Build/source/libs/harfbuzz/harfbuzz-src/NEWS @@ -1,3 +1,57 @@ +Overview of changes leading to 10.0.1 +Tuesday, Sep 24, 2024 +==================================== +- Relax sanitization checks for “morx” subtables to fix broken AAT shaping of + macOS 15.0 version of GeezaPro. + + +Overview of changes leading to 10.0.0 +Monday, Sep 23, 2024 +==================================== +- Unicode 16.0.0 support. +- Various documentation fixes. +- Various build fixes. +- Add API to allow HarfBuzz client to set what glyph to use when a Unicode + Variation Selector is not supported by the font, which would allow the client + to customize what happens in this case, by using a different font for example. +- Add a callback to for “hb_face_t” for getting the list of table tags. This is + now used to make calling “hb_face_get_table_tags()” work on a faces created by + “hb_face_create_for_tables()” (e.g. faces returned by “hb_subset_or_fail()”). +- CGJ and Mongolian Variation Selectors are now ignored during glyph + positioning, previously they would block both glyph substitution and + positioning across them. +- Support cairo script as an output format for “hb-view” command line tool. +- Drop an optimization that would cause HarfBuzz not apply pair positioning + lookup subtables under certain circumstances, for compatibility with other + implementations that do apply these subtables. +- Subsetting will now fail if source font has no glyphs, so feeding the subsetter + invalid data will not silently return an empty face. +- If after partially instancing a font no variation data is left (the instance + is fully static), don’t consider this a failure. +- Workaround a Firefox bug in displaying SVGs generated be “hb-view” command + line tool under certain circumstances. +- Fix bug in macroman mapping for “cmap” table. +- Fix difference shaping output when HarfBuzz is built with with + “HB_NO_OT_RULESETS_FAST_PATH” enabled. +- Various subsetting and instancing fixes. +- Various fuzzing fixes. +- Add “with_libstdcxx” meson build option. + + +- New API: ++HB_SCRIPT_GARAY ++HB_SCRIPT_GURUNG_KHEMA ++HB_SCRIPT_KIRAT_RAI ++HB_SCRIPT_OL_ONAL ++HB_SCRIPT_SUNUWAR ++HB_SCRIPT_TODHRI ++HB_SCRIPT_TULU_TIGALARI ++hb_buffer_set_not_found_variation_selector_glyph() ++hb_buffer_get_not_found_variation_selector_glyph() ++hb_get_table_tags_func_t ++hb_face_set_get_table_tags_func() + + Overview of changes leading to 9.0.0 Thursday, Jun 27, 2024 ==================================== @@ -27,7 +81,7 @@ Monday, May 13, 2024 - Various build fixes. - Various subsetter and instancer fixes. -- New API +- New API: +HB_SUBSET_FLAGS_OPTIMIZE_IUP_DELTAS +hb_subset_input_get_axis_range() +hb_subset_input_pin_axis_location() diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README b/Build/source/libs/harfbuzz/harfbuzz-src/README deleted file mode 100644 index e69de29bb2d..00000000000 --- a/Build/source/libs/harfbuzz/harfbuzz-src/README +++ /dev/null diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/README.md b/Build/source/libs/harfbuzz/harfbuzz-src/README.md index da4de65cf09..2cd8b4068e3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/README.md +++ b/Build/source/libs/harfbuzz/harfbuzz-src/README.md @@ -14,7 +14,7 @@ HarfBuzz is a text shaping engine. It primarily supports [OpenType][1], but also [Apple Advanced Typography][2]. HarfBuzz is used in Android, Chrome, ChromeOS, Firefox, GNOME, GTK+, KDE, Qt, LibreOffice, OpenJDK, XeTeX, PlayStation, Microsoft Edge, Adobe Photoshop, Illustrator, InDesign, -Godot Engine, and other places. +Godot Engine, Unreal Engine, and other places. [![xkcd-derived image](xkcd.png)](https://xkcd.com/2347/) @@ -52,8 +52,8 @@ For custom configurations, see [CONFIG.md](CONFIG.md). For testing and profiling, see [TESTING.md](TESTING.md). To get a better idea of where HarfBuzz stands in the text rendering stack you -may want to read [State of Text Rendering][6], though, that document is many -years old. Here are a few presentation slides about HarfBuzz at the +may want to read [State of Text Rendering 2024][6]. +Here are a few presentation slides about HarfBuzz at the Internationalization and Unicode Conference over the years: * November 2014, [Unicode, OpenType, and HarfBuzz: Closing the Circle][7], @@ -97,7 +97,7 @@ transliterated using the Latin script. It also means "talkative" or [3]: https://github.com/harfbuzz/harfbuzz/releases [4]: https://github.com/harfbuzz/harfbuzz [5]: http://mces.blogspot.com/2009/11/pango-vs-harfbuzz.html -[6]: http://behdad.org/text/ +[6]: http://behdad.org/text2024 [7]: https://goo.gl/FSIQuC [8]: https://goo.gl/2wSRu [9]: http://behdad.org/download/Presentations/slippy/harfbuzz_slides.pdf diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build index 9606190b9c8..ee064a00e2e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/meson.build +++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson.build @@ -1,6 +1,6 @@ project('harfbuzz', 'c', 'cpp', meson_version: '>= 0.55.0', - version: '9.0.0', + version: '10.0.1', default_options: [ 'cpp_eh=none', # Just to support msvc, we are passing -fno-exceptions also anyway # 'cpp_rtti=false', # Do NOT enable, wraps inherit it and ICU needs RTTI @@ -186,7 +186,8 @@ else endif if icu_dep.found() and icu_dep.version().version_compare('>=75.1') and (get_option('cpp_std') == 'c++11' or get_option('cpp_std') == 'c++14') - add_project_arguments('-std=c++17', language: 'cpp') + cpp17_arg = cpp.get_argument_syntax() == 'msvc' ? '/std:c++17' : '-std=c++17' + add_project_arguments(cpp17_arg, language: 'cpp') endif if icu_dep.found() and icu_dep.type_name() == 'pkgconfig' diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt index 97d6daec1a6..c53cf45fcb4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt +++ b/Build/source/libs/harfbuzz/harfbuzz-src/meson_options.txt @@ -40,6 +40,8 @@ option('benchmark', type: 'feature', value: 'disabled', description: 'Enable benchmark tests') option('icu_builtin', type: 'boolean', value: false, description: 'Don\'t separate ICU support as harfbuzz-icu module') +option('with_libstdcxx', type: 'boolean', value: false, + description: 'Allow linking with libstdc++') option('experimental_api', type: 'boolean', value: false, description: 'Enable experimental APIs') option('ragel_subproject', type: 'boolean', value: false, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh index 53c4ce0d437..6b5b104f3d3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Color/COLR/COLR.hh @@ -2339,7 +2339,11 @@ struct COLR c->plan->colrv1_varstore_inner_maps.as_array ())) return_trace (false); - if (!out->varStore.serialize_serialize (c->serializer, + /* do not serialize varStore if there's no variation data after + * instancing: region_list or var_data is empty */ + if (item_vars.get_region_list () && + item_vars.get_vardata_encodings () && + !out->varStore.serialize_serialize (c->serializer, item_vars.has_long_word (), c->plan->axis_tags, item_vars.get_region_list (), @@ -2347,7 +2351,9 @@ struct COLR return_trace (false); /* if varstore is optimized, update colrv1_new_deltaset_idx_varidx_map in - * subset plan */ + * subset plan. + * If varstore is empty after instancing, varidx_map would be empty and + * all var_idxes will be updated to VarIdx::NO_VARIATION */ if (optimize) { const hb_map_t &varidx_map = item_vars.get_varidx_map (); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh index 45baeb4ec59..16b232a2ae7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GDEF/GDEF.hh @@ -633,8 +633,8 @@ struct GDEFVersion1_2 ligCaretList.sanitize (c, this) && markAttachClassDef.sanitize (c, this) && hb_barrier () && - (version.to_int () < 0x00010002u || markGlyphSetsDef.sanitize (c, this)) && - (version.to_int () < 0x00010003u || varStore.sanitize (c, this))); + ((version.to_int () < 0x00010002u && hb_barrier ()) || markGlyphSetsDef.sanitize (c, this)) && + ((version.to_int () < 0x00010003u && hb_barrier ()) || varStore.sanitize (c, this))); } static void remap_varidx_after_instantiation (const hb_map_t& varidx_map, @@ -668,13 +668,13 @@ struct GDEFVersion1_2 // the end of the GDEF table. // See: https://github.com/harfbuzz/harfbuzz/issues/4636 auto snapshot_version0 = c->serializer->snapshot (); - if (unlikely (version.to_int () >= 0x00010002u && !c->serializer->embed (markGlyphSetsDef))) + if (unlikely (version.to_int () >= 0x00010002u && hb_barrier () && !c->serializer->embed (markGlyphSetsDef))) return_trace (false); bool subset_varstore = false; unsigned varstore_index = (unsigned) -1; auto snapshot_version2 = c->serializer->snapshot (); - if (version.to_int () >= 0x00010003u) + if (version.to_int () >= 0x00010003u && hb_barrier ()) { if (unlikely (!c->serializer->embed (varStore))) return_trace (false); if (c->plan->all_axes_pinned) @@ -712,7 +712,7 @@ struct GDEFVersion1_2 } bool subset_markglyphsetsdef = false; - if (version.to_int () >= 0x00010002u) + if (version.to_int () >= 0x00010002u && hb_barrier ()) { subset_markglyphsetsdef = out->markGlyphSetsDef.serialize_subset (c, markGlyphSetsDef, this); } @@ -875,7 +875,7 @@ struct GDEF bool has_mark_glyph_sets () const { switch (u.version.major) { - case 1: return u.version.to_int () >= 0x00010002u && u.version1.markGlyphSetsDef != 0; + case 1: return u.version.to_int () >= 0x00010002u && hb_barrier () && u.version1.markGlyphSetsDef != 0; #ifndef HB_NO_BEYOND_64K case 2: return u.version2.markGlyphSetsDef != 0; #endif @@ -885,7 +885,7 @@ struct GDEF const MarkGlyphSets &get_mark_glyph_sets () const { switch (u.version.major) { - case 1: return u.version.to_int () >= 0x00010002u ? this+u.version1.markGlyphSetsDef : Null(MarkGlyphSets); + case 1: return u.version.to_int () >= 0x00010002u && hb_barrier () ? this+u.version1.markGlyphSetsDef : Null(MarkGlyphSets); #ifndef HB_NO_BEYOND_64K case 2: return this+u.version2.markGlyphSetsDef; #endif @@ -895,7 +895,7 @@ struct GDEF bool has_var_store () const { switch (u.version.major) { - case 1: return u.version.to_int () >= 0x00010003u && u.version1.varStore != 0; + case 1: return u.version.to_int () >= 0x00010003u && hb_barrier () && u.version1.varStore != 0; #ifndef HB_NO_BEYOND_64K case 2: return u.version2.varStore != 0; #endif @@ -905,7 +905,7 @@ struct GDEF const ItemVariationStore &get_var_store () const { switch (u.version.major) { - case 1: return u.version.to_int () >= 0x00010003u ? this+u.version1.varStore : Null(ItemVariationStore); + case 1: return u.version.to_int () >= 0x00010003u && hb_barrier () ? this+u.version1.varStore : Null(ItemVariationStore); #ifndef HB_NO_BEYOND_64K case 2: return this+u.version2.varStore; #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh index 9c805b39a18..5ffeb5d0c10 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/OT/Layout/GPOS/PairPosFormat2.hh @@ -139,14 +139,8 @@ struct PairPosFormat2_4 : ValueBase return_trace (false); } - unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint); - if (!klass2) - { - buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1); - return_trace (false); - } - unsigned int klass1 = (this+classDef1).get_class (buffer->cur().codepoint); + unsigned int klass2 = (this+classDef2).get_class (buffer->info[skippy_iter.idx].codepoint); if (unlikely (klass1 >= class1Count || klass2 >= class2Count)) { buffer->unsafe_to_concat (buffer->idx, skippy_iter.idx + 1); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py index 4ef970265d1..2c8abcca670 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-indic-table.py @@ -34,6 +34,7 @@ ALLOWED_BLOCKS = [ 'Devanagari Extended', 'Myanmar Extended-B', 'Myanmar Extended-A', + 'Myanmar Extended-C', ] files = [open (x, encoding='utf-8') for x in sys.argv[1:]] diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py index 0012e5db041..9d65dbdf230 100755 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/gen-use-table.py @@ -389,7 +389,11 @@ def map_to_use(data): # and https://github.com/harfbuzz/harfbuzz/issues/1631 if U in [0x11302, 0x11303, 0x114C1]: UIPC = Top - assert (UIPC in [Not_Applicable, Visual_Order_Left] or U == 0x0F7F or + # TODO: https://github.com/microsoft/font-tools/issues/17#issuecomment-2346952091 + if U == 0x113CF: UIPC = Bottom + + assert (UIPC in [Not_Applicable, Visual_Order_Left] or + U in {0x0F7F, 0x11A3A} or USE in use_positions), "%s %s %s %s %s %s %s" % (hex(U), UIPC, USE, UISC, UDI, UGC, AJT) pos_mapping = use_positions.get(USE, None) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh index 2a9d8346c0b..b24507ece17 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/graph/graph.hh @@ -368,7 +368,7 @@ struct graph_t // it's parent where possible. int64_t modified_distance = - hb_min (hb_max(distance + distance_modifier (), 0), 0x7FFFFFFFFFF); + hb_clamp (distance + distance_modifier (), (int64_t) 0, 0x7FFFFFFFFFF); if (has_max_priority ()) { modified_distance = 0; } @@ -1141,7 +1141,7 @@ struct graph_t unsigned clone_idx = duplicate (child_idx); if (clone_idx == (unsigned) -1) return false; - + for (unsigned parent_idx : *parents) { // duplicate shifts the root node idx, so if parent_idx was root update it. if (parent_idx == clone_idx) parent_idx++; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh index b9fe63a2540..2ea86a2a192 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-common.hh @@ -468,11 +468,11 @@ struct Lookup const T* get_value (hb_codepoint_t glyph_id, unsigned int num_glyphs) const { switch (u.format) { - case 0: return u.format0.get_value (glyph_id, num_glyphs); - case 2: return u.format2.get_value (glyph_id); - case 4: return u.format4.get_value (glyph_id); - case 6: return u.format6.get_value (glyph_id); - case 8: return u.format8.get_value (glyph_id); + case 0: hb_barrier (); return u.format0.get_value (glyph_id, num_glyphs); + case 2: hb_barrier (); return u.format2.get_value (glyph_id); + case 4: hb_barrier (); return u.format4.get_value (glyph_id); + case 6: hb_barrier (); return u.format6.get_value (glyph_id); + case 8: hb_barrier (); return u.format8.get_value (glyph_id); default:return nullptr; } } @@ -481,7 +481,7 @@ struct Lookup { switch (u.format) { /* Format 10 cannot return a pointer. */ - case 10: return u.format10.get_value_or_null (glyph_id); + case 10: hb_barrier (); return u.format10.get_value_or_null (glyph_id); default: const T *v = get_value (glyph_id, num_glyphs); return v ? *v : Null (T); @@ -492,12 +492,12 @@ struct Lookup void collect_glyphs (set_t &glyphs, unsigned int num_glyphs) const { switch (u.format) { - case 0: u.format0.collect_glyphs (glyphs, num_glyphs); return; - case 2: u.format2.collect_glyphs (glyphs); return; - case 4: u.format4.collect_glyphs (glyphs); return; - case 6: u.format6.collect_glyphs (glyphs); return; - case 8: u.format8.collect_glyphs (glyphs); return; - case 10: u.format10.collect_glyphs (glyphs); return; + case 0: hb_barrier (); u.format0.collect_glyphs (glyphs, num_glyphs); return; + case 2: hb_barrier (); u.format2.collect_glyphs (glyphs); return; + case 4: hb_barrier (); u.format4.collect_glyphs (glyphs); return; + case 6: hb_barrier (); u.format6.collect_glyphs (glyphs); return; + case 8: hb_barrier (); u.format8.collect_glyphs (glyphs); return; + case 10: hb_barrier (); u.format10.collect_glyphs (glyphs); return; default:return; } } @@ -516,12 +516,12 @@ struct Lookup if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 0: return_trace (u.format0.sanitize (c)); - case 2: return_trace (u.format2.sanitize (c)); - case 4: return_trace (u.format4.sanitize (c)); - case 6: return_trace (u.format6.sanitize (c)); - case 8: return_trace (u.format8.sanitize (c)); - case 10: return_trace (u.format10.sanitize (c)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c)); + case 6: hb_barrier (); return_trace (u.format6.sanitize (c)); + case 8: hb_barrier (); return_trace (u.format8.sanitize (c)); + case 10: hb_barrier (); return_trace (u.format10.sanitize (c)); default:return_trace (true); } } @@ -531,11 +531,11 @@ struct Lookup if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 0: return_trace (u.format0.sanitize (c, base)); - case 2: return_trace (u.format2.sanitize (c, base)); - case 4: return_trace (u.format4.sanitize (c, base)); - case 6: return_trace (u.format6.sanitize (c, base)); - case 8: return_trace (u.format8.sanitize (c, base)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c, base)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c, base)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c, base)); + case 6: hb_barrier (); return_trace (u.format6.sanitize (c, base)); + case 8: hb_barrier (); return_trace (u.format8.sanitize (c, base)); case 10: return_trace (false); /* We don't support format10 here currently. */ default:return_trace (true); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh index ee08da172ea..9531b5e4b31 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-just-table.hh @@ -189,12 +189,12 @@ struct ActionSubrecord switch (u.header.actionType) { - case 0: return_trace (u.decompositionAction.sanitize (c)); - case 1: return_trace (u.unconditionalAddGlyphAction.sanitize (c)); - case 2: return_trace (u.conditionalAddGlyphAction.sanitize (c)); - // case 3: return_trace (u.stretchGlyphAction.sanitize (c)); - case 4: return_trace (u.decompositionAction.sanitize (c)); - case 5: return_trace (u.decompositionAction.sanitize (c)); + case 0: hb_barrier (); return_trace (u.decompositionAction.sanitize (c)); + case 1: hb_barrier (); return_trace (u.unconditionalAddGlyphAction.sanitize (c)); + case 2: hb_barrier (); return_trace (u.conditionalAddGlyphAction.sanitize (c)); + // case 3: hb_barrier (); return_trace (u.stretchGlyphAction.sanitize (c)); + case 4: hb_barrier (); return_trace (u.decompositionAction.sanitize (c)); + case 5: hb_barrier (); return_trace (u.decompositionAction.sanitize (c)); default: return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh index 4a0f6da161c..d31834402ad 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-morx-table.hh @@ -1062,7 +1062,8 @@ struct ChainSubtable bool apply (hb_aat_apply_context_t *c) const { TRACE_APPLY (this); - hb_sanitize_with_object_t with (&c->sanitizer, this); + // Disabled for https://github.com/harfbuzz/harfbuzz/issues/4873 + //hb_sanitize_with_object_t with (&c->sanitizer, this); return_trace (dispatch (c)); } @@ -1075,7 +1076,8 @@ struct ChainSubtable c->check_range (this, length))) return_trace (false); - hb_sanitize_with_object_t with (c, this); + // Disabled for https://github.com/harfbuzz/harfbuzz/issues/4873 + //hb_sanitize_with_object_t with (c, this); return_trace (dispatch (c)); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh index 9840d3a5541..dc75f5db57b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-aat-layout-opbd-table.hh @@ -133,8 +133,8 @@ struct opbd { switch (format) { - case 0: return u.format0.get_bounds (font, glyph_id, extents, this); - case 1: return u.format1.get_bounds (font, glyph_id, extents, this); + case 0: hb_barrier (); return u.format0.get_bounds (font, glyph_id, extents, this); + case 1: hb_barrier (); return u.format1.get_bounds (font, glyph_id, extents, this); default:return false; } } @@ -148,8 +148,8 @@ struct opbd switch (format) { - case 0: return_trace (u.format0.sanitize (c, this)); - case 1: return_trace (u.format1.sanitize (c, this)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c, this)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c, this)); default:return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc index 671d6eda8c9..345f08d260f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer-verify.cc @@ -412,7 +412,7 @@ hb_buffer_t::verify (hb_buffer_t *text_buffer, &len, HB_BUFFER_SERIALIZE_FORMAT_TEXT, HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS); - buffer_verify_error (this, font, BUFFER_VERIFY_ERROR "text was: %s.", bytes.arrayZ); + buffer_verify_error (this, font, BUFFER_VERIFY_ERROR "text was: %s.", bytes.arrayZ ? bytes.arrayZ : ""); } #endif } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc index d621a7cc55d..3fc869887e2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.cc @@ -271,6 +271,7 @@ hb_buffer_t::similar (const hb_buffer_t &src) replacement = src.replacement; invisible = src.invisible; not_found = src.not_found; + not_found_variation_selector = src.not_found_variation_selector; } void @@ -283,6 +284,7 @@ hb_buffer_t::reset () replacement = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT; invisible = 0; not_found = 0; + not_found_variation_selector = HB_CODEPOINT_INVALID; clear (); } @@ -705,6 +707,7 @@ DEFINE_NULL_INSTANCE (hb_buffer_t) = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT, 0, /* invisible */ 0, /* not_found */ + HB_CODEPOINT_INVALID, /* not_found_variation_selector */ HB_BUFFER_CONTENT_TYPE_INVALID, @@ -1361,6 +1364,46 @@ hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer) } /** + * hb_buffer_set_not_found_variation_selector_glyph: + * @buffer: An #hb_buffer_t + * @not_found_variation_selector: the not-found-variation-selector #hb_codepoint_t + * + * Sets the #hb_codepoint_t that replaces variation-selector characters not resolved + * in the font during shaping. + * + * The not-found-variation-selector glyph defaults to #HB_CODEPOINT_INVALID, + * in which case an unresolved variation-selector will be removed from the glyph + * string during shaping. This API allows for changing that and retaining a glyph, + * such that the situation can be detected by the client and handled accordingly + * (e.g. by using a different font). + * + * Since: 10.0.0 + **/ +void +hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer, + hb_codepoint_t not_found_variation_selector) +{ + buffer->not_found_variation_selector = not_found_variation_selector; +} + +/** + * hb_buffer_get_not_found_variation_selector_glyph: + * @buffer: An #hb_buffer_t + * + * See hb_buffer_set_not_found_variation_selector_glyph(). + * + * Return value: + * The @buffer not-found-variation-selector #hb_codepoint_t + * + * Since: 10.0.0 + **/ +hb_codepoint_t +hb_buffer_get_not_found_variation_selector_glyph (const hb_buffer_t *buffer) +{ + return buffer->not_found_variation_selector; +} + +/** * hb_buffer_set_random_state: * @buffer: An #hb_buffer_t * @state: the new random state diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h index f75fe96b214..dd0edb9b7d7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.h @@ -488,6 +488,13 @@ HB_EXTERN hb_codepoint_t hb_buffer_get_not_found_glyph (const hb_buffer_t *buffer); HB_EXTERN void +hb_buffer_set_not_found_variation_selector_glyph (hb_buffer_t *buffer, + hb_codepoint_t not_found_variation_selector); + +HB_EXTERN hb_codepoint_t +hb_buffer_get_not_found_variation_selector_glyph (const hb_buffer_t *buffer); + +HB_EXTERN void hb_buffer_set_random_state (hb_buffer_t *buffer, unsigned state); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh index 0a198722d62..2a6ad6128c8 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-buffer.hh @@ -52,6 +52,7 @@ enum hb_buffer_scratch_flags_t { HB_BUFFER_SCRATCH_FLAG_HAS_CGJ = 0x00000010u, HB_BUFFER_SCRATCH_FLAG_HAS_GLYPH_FLAGS = 0x00000020u, HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE = 0x00000040u, + HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK= 0x00000080u, /* Reserved for shapers' internal use. */ HB_BUFFER_SCRATCH_FLAG_SHAPER0 = 0x01000000u, @@ -80,6 +81,7 @@ struct hb_buffer_t hb_codepoint_t replacement; /* U+FFFD or something else. */ hb_codepoint_t invisible; /* 0 or something else. */ hb_codepoint_t not_found; /* 0 or something else. */ + hb_codepoint_t not_found_variation_selector; /* HB_CODEPOINT_INVALID or something else. */ /* * Buffer contents diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh index a08b10b5ff1..b513a1e8c23 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-cff-interp-dict-common.hh @@ -84,7 +84,7 @@ struct dict_opset_t : opset_t<number_t> enum Nibble { DECIMAL=10, EXP_POS, EXP_NEG, RESERVED, NEG, END }; - char buf[32]; + char buf[32] = {0}; unsigned char byte = 0; for (unsigned i = 0, count = 0; count < ARRAY_LENGTH (buf); ++i, ++count) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h index 533de915627..11085454816 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-common.h @@ -504,6 +504,13 @@ hb_language_matches (hb_language_t language, * @HB_SCRIPT_MATH: `Zmth`, Since: 3.4.0 * @HB_SCRIPT_KAWI: `Kawi`, Since: 5.2.0 * @HB_SCRIPT_NAG_MUNDARI: `Nagm`, Since: 5.2.0 + * @HB_SCRIPT_GARAY: `Gara`, Since: 10.0.0 + * @HB_SCRIPT_GURUNG_KHEMA: `Gukh`, Since: 10.0.0 + * @HB_SCRIPT_KIRAT_RAI: `Krai`, Since: 10.0.0 + * @HB_SCRIPT_OL_ONAL: `Onao`, Since: 10.0.0 + * @HB_SCRIPT_SUNUWAR: `Sunu`, Since: 10.0.0 + * @HB_SCRIPT_TODHRI: `Todr`, Since: 10.0.0 + * @HB_SCRIPT_TULU_TIGALARI: `Tutg`, Since: 10.0.0 * @HB_SCRIPT_INVALID: No script set * * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding @@ -731,6 +738,17 @@ typedef enum HB_SCRIPT_KAWI = HB_TAG ('K','a','w','i'), /*15.0*/ HB_SCRIPT_NAG_MUNDARI = HB_TAG ('N','a','g','m'), /*15.0*/ + /* + * Since 10.0.0 + */ + HB_SCRIPT_GARAY = HB_TAG ('G','a','r','a'), /*16.0*/ + HB_SCRIPT_GURUNG_KHEMA = HB_TAG ('G','u','k','h'), /*16.0*/ + HB_SCRIPT_KIRAT_RAI = HB_TAG ('K','r','a','i'), /*16.0*/ + HB_SCRIPT_OL_ONAL = HB_TAG ('O','n','a','o'), /*16.0*/ + HB_SCRIPT_SUNUWAR = HB_TAG ('S','u','n','u'), /*16.0*/ + HB_SCRIPT_TODHRI = HB_TAG ('T','o','d','r'), /*16.0*/ + HB_SCRIPT_TULU_TIGALARI = HB_TAG ('T','u','t','g'), /*16.0*/ + /* No script set. */ HB_SCRIPT_INVALID = HB_TAG_NONE, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc index a87cb5cd028..070b8be02fa 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-coretext.cc @@ -48,6 +48,8 @@ /* https://developer.apple.com/documentation/coretext/1508745-ctfontcreatewithgraphicsfont */ #define HB_CORETEXT_DEFAULT_FONT_SIZE 12.f +static CTFontRef create_ct_font (CGFontRef cg_font, CGFloat font_size); + static void release_table_data (void *user_data) { @@ -76,6 +78,52 @@ _hb_cg_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data release_table_data); } +static unsigned +_hb_cg_get_table_tags (const hb_face_t *face HB_UNUSED, + unsigned int start_offset, + unsigned int *table_count, + hb_tag_t *table_tags, + void *user_data) +{ + CGFontRef cg_font = reinterpret_cast<CGFontRef> (user_data); + + CTFontRef ct_font = create_ct_font (cg_font, (CGFloat) HB_CORETEXT_DEFAULT_FONT_SIZE); + + auto arr = CTFontCopyAvailableTables (ct_font, kCTFontTableOptionNoOptions); + + unsigned population = (unsigned) CFArrayGetCount (arr); + unsigned end_offset; + + if (!table_count) + goto done; + + if (unlikely (start_offset >= population)) + { + *table_count = 0; + goto done; + } + + end_offset = start_offset + *table_count; + if (unlikely (end_offset < start_offset)) + { + *table_count = 0; + goto done; + } + end_offset= hb_min (end_offset, (unsigned) population); + + *table_count = end_offset - start_offset; + for (unsigned i = start_offset; i < end_offset; i++) + { + CTFontTableTag tag = (CTFontTableTag)(uintptr_t) CFArrayGetValueAtIndex (arr, i); + table_tags[i - start_offset] = tag; + } + +done: + CFRelease (arr); + CFRelease (ct_font); + return population; +} + static void _hb_cg_font_release (void *data) { @@ -294,7 +342,9 @@ _hb_coretext_shaper_face_data_destroy (hb_coretext_face_data_t *data) hb_face_t * hb_coretext_face_create (CGFontRef cg_font) { - return hb_face_create_for_tables (_hb_cg_reference_table, CGFontRetain (cg_font), _hb_cg_font_release); + hb_face_t *face = hb_face_create_for_tables (_hb_cg_reference_table, CGFontRetain (cg_font), _hb_cg_font_release); + hb_face_set_get_table_tags_func (face, _hb_cg_get_table_tags, cg_font, nullptr); + return face; } /** diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc index 84b14d28d60..beea89ed22f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face-builder.cc @@ -42,7 +42,7 @@ struct face_table_info_t { hb_blob_t* data; - signed order; + unsigned order; }; struct hb_face_builder_data_t @@ -153,6 +153,50 @@ _hb_face_builder_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void return hb_blob_reference (data->tables[tag].data); } +static unsigned +_hb_face_builder_get_table_tags (const hb_face_t *face HB_UNUSED, + unsigned int start_offset, + unsigned int *table_count, + hb_tag_t *table_tags, + void *user_data) +{ + hb_face_builder_data_t *data = (hb_face_builder_data_t *) user_data; + + unsigned population = data->tables.get_population (); + + if (!table_count) + return population; + + if (unlikely (start_offset >= population)) + { + if (table_count) + *table_count = 0; + return population; + } + + // Sort the tags. + hb_vector_t<hb_tag_t> sorted_tags; + data->tables.keys () | hb_sink (sorted_tags); + if (unlikely (sorted_tags.in_error ())) + { + // Not much to do... + } + sorted_tags.qsort ([] (const void* a, const void* b) { + return * (hb_tag_t *) a < * (hb_tag_t *) b ? -1 : + * (hb_tag_t *) a == * (hb_tag_t *) b ? 0 : + +1; + }); + + auto array = sorted_tags.as_array ().sub_array (start_offset, table_count); + auto out = hb_array (table_tags, *table_count); + + + array.iter () + | hb_sink (out) + ; + + return population; +} + /** * hb_face_builder_create: @@ -171,9 +215,16 @@ hb_face_builder_create () hb_face_builder_data_t *data = _hb_face_builder_data_create (); if (unlikely (!data)) return hb_face_get_empty (); - return hb_face_create_for_tables (_hb_face_builder_reference_table, - data, - _hb_face_builder_data_destroy); + hb_face_t *face = hb_face_create_for_tables (_hb_face_builder_reference_table, + data, + _hb_face_builder_data_destroy); + + hb_face_set_get_table_tags_func (face, + _hb_face_builder_get_table_tags, + data, + nullptr); + + return face; } /** @@ -199,7 +250,7 @@ hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob) hb_face_builder_data_t *data = (hb_face_builder_data_t *) face->user_data; hb_blob_t* previous = data->tables.get (tag).data; - if (!data->tables.set (tag, face_table_info_t {hb_blob_reference (blob), -1})) + if (!data->tables.set (tag, face_table_info_t {hb_blob_reference (blob), (unsigned) -1})) { hb_blob_destroy (blob); return false; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc index e340710586c..9b4af16f4d4 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.cc @@ -90,10 +90,6 @@ DEFINE_NULL_INSTANCE (hb_face_t) = { HB_OBJECT_HEADER_STATIC, - nullptr, /* reference_table_func */ - nullptr, /* user_data */ - nullptr, /* destroy */ - 0, /* index */ 1000, /* upem */ 0, /* num_glyphs */ @@ -110,8 +106,9 @@ DEFINE_NULL_INSTANCE (hb_face_t) = * * Variant of hb_face_create(), built for those cases where it is more * convenient to provide data for individual tables instead of the whole font - * data. With the caveat that hb_face_get_table_tags() does not currently work - * with faces created this way. + * data. With the caveat that hb_face_get_table_tags() would not work + * with faces created this way. You can address that by calling the + * hb_face_set_get_table_tags_func() function and setting the appropriate callback. * * Creates a new face object from the specified @user_data and @reference_table_func, * with the @destroy callback. @@ -194,6 +191,22 @@ _hb_face_for_data_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void return blob; } +static unsigned +_hb_face_for_data_get_table_tags (const hb_face_t *face HB_UNUSED, + unsigned int start_offset, + unsigned int *table_count, + hb_tag_t *table_tags, + void *user_data) +{ + hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) user_data; + + const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> (); + const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index); + + return ot_face.get_table_tags (start_offset, table_count, table_tags); +} + + /** * hb_face_create: * @blob: #hb_blob_t to work upon @@ -240,6 +253,10 @@ hb_face_create (hb_blob_t *blob, face = hb_face_create_for_tables (_hb_face_for_data_reference_table, closure, _hb_face_for_data_closure_destroy); + hb_face_set_get_table_tags_func (face, + _hb_face_for_data_get_table_tags, + closure, + nullptr); face->index = index; @@ -306,6 +323,9 @@ hb_face_destroy (hb_face_t *face) face->data.fini (); face->table.fini (); + if (face->get_table_tags_destroy) + face->get_table_tags_destroy (face->get_table_tags_user_data); + if (face->destroy) face->destroy (face->user_data); @@ -548,6 +568,37 @@ hb_face_get_glyph_count (const hb_face_t *face) } /** + * hb_face_set_get_table_tags_func: + * @face: A face object + * @func: (closure user_data) (destroy destroy) (scope notified): The table-tag-fetching function + * @user_data: A pointer to the user data, to be destroyed by @destroy when not needed anymore + * @destroy: (nullable): A callback to call when @func is not needed anymore + * + * Sets the table-tag-fetching function for the specified face object. + * + * Since: 10.0.0 + */ +HB_EXTERN void +hb_face_set_get_table_tags_func (hb_face_t *face, + hb_get_table_tags_func_t func, + void *user_data, + hb_destroy_func_t destroy) +{ + if (hb_object_is_immutable (face)) + { + if (destroy) + destroy (user_data); + } + + if (face->get_table_tags_destroy) + face->get_table_tags_destroy (face->get_table_tags_user_data); + + face->get_table_tags_func = func; + face->get_table_tags_user_data = user_data; + face->get_table_tags_destroy = destroy; +} + +/** * hb_face_get_table_tags: * @face: A face object * @start_offset: The index of first table tag to retrieve @@ -568,19 +619,14 @@ hb_face_get_table_tags (const hb_face_t *face, unsigned int *table_count, /* IN/OUT */ hb_tag_t *table_tags /* OUT */) { - if (face->destroy != (hb_destroy_func_t) _hb_face_for_data_closure_destroy) + if (!face->get_table_tags_func) { if (table_count) *table_count = 0; return 0; } - hb_face_for_data_closure_t *data = (hb_face_for_data_closure_t *) face->user_data; - - const OT::OpenTypeFontFile &ot_file = *data->blob->as<OT::OpenTypeFontFile> (); - const OT::OpenTypeFontFace &ot_face = ot_file.get_face (data->index); - - return ot_face.get_table_tags (start_offset, table_count, table_tags); + return face->get_table_tags_func (face, start_offset, table_count, table_tags, face->get_table_tags_user_data); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h index 2e54ccf13b7..98d0afec267 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.h @@ -135,6 +135,34 @@ hb_face_set_glyph_count (hb_face_t *face, HB_EXTERN unsigned int hb_face_get_glyph_count (const hb_face_t *face); + +/** + * hb_get_table_tags_func_t: + * @face: A face object + * @start_offset: The index of first table tag to retrieve + * @table_count: (inout): Input = the maximum number of table tags to return; + * Output = the actual number of table tags returned (may be zero) + * @table_tags: (out) (array length=table_count): The array of table tags found + * @user_data: User data pointer passed by the caller + * + * Callback function for hb_face_get_table_tags(). + * + * Return value: Total number of tables, or zero if it is not possible to list + * + * Since: 10.0.0 + */ +typedef unsigned int (*hb_get_table_tags_func_t) (const hb_face_t *face, + unsigned int start_offset, + unsigned int *table_count, /* IN/OUT */ + hb_tag_t *table_tags /* OUT */, + void *user_data); + +HB_EXTERN void +hb_face_set_get_table_tags_func (hb_face_t *face, + hb_get_table_tags_func_t func, + void *user_data, + hb_destroy_func_t destroy); + HB_EXTERN unsigned int hb_face_get_table_tags (const hb_face_t *face, unsigned int start_offset, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh index aff3ff0d07c..6401568326b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-face.hh @@ -48,13 +48,17 @@ struct hb_face_t { hb_object_header_t header; + unsigned int index; /* Face index in a collection, zero-based. */ + mutable hb_atomic_int_t upem; /* Units-per-EM. */ + mutable hb_atomic_int_t num_glyphs; /* Number of glyphs. */ + hb_reference_table_func_t reference_table_func; void *user_data; hb_destroy_func_t destroy; - unsigned int index; /* Face index in a collection, zero-based. */ - mutable hb_atomic_int_t upem; /* Units-per-EM. */ - mutable hb_atomic_int_t num_glyphs; /* Number of glyphs. */ + hb_get_table_tags_func_t get_table_tags_func; + void *get_table_tags_user_data; + hb_destroy_func_t get_table_tags_destroy; hb_shaper_object_dataset_t<hb_face_t> data;/* Various shaper data. */ hb_ot_face_t table; /* All the face's tables. */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc index 3de4a6d5d41..f6d8bf4136a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ft.cc @@ -1104,6 +1104,45 @@ _hb_ft_reference_table (hb_face_t *face HB_UNUSED, hb_tag_t tag, void *user_data buffer, hb_free); } +static unsigned +_hb_ft_get_table_tags (const hb_face_t *face HB_UNUSED, + unsigned int start_offset, + unsigned int *table_count, + hb_tag_t *table_tags, + void *user_data) +{ + FT_Face ft_face = (FT_Face) user_data; + + FT_ULong population = 0; + FT_Sfnt_Table_Info (ft_face, + 0, // table_index; ignored + nullptr, + &population); + + if (!table_count) + return population; + else + *table_count = 0; + + if (unlikely (start_offset >= population)) + return population; + + unsigned end_offset = hb_min (start_offset + *table_count, (unsigned) population); + if (unlikely (end_offset < start_offset)) + return population; + + *table_count = end_offset - start_offset; + for (unsigned i = start_offset; i < end_offset; i++) + { + FT_ULong tag = 0, length; + FT_Sfnt_Table_Info (ft_face, i, &tag, &length); + table_tags[i - start_offset] = tag; + } + + return population; +} + + /** * hb_ft_face_create: * @ft_face: (destroy destroy) (scope notified): FT_Face to work upon @@ -1145,6 +1184,7 @@ hb_ft_face_create (FT_Face ft_face, hb_blob_destroy (blob); } else { face = hb_face_create_for_tables (_hb_ft_reference_table, ft_face, destroy); + hb_face_set_get_table_tags_func (face, _hb_ft_get_table_tags, ft_face, nullptr); } hb_face_set_index (face, ft_face->face_index); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh index 1157ea46d0d..6c98226f21a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-file.hh @@ -250,7 +250,7 @@ struct TTCHeader { switch (u.header.version.major) { case 2: /* version 2 is compatible with version 1 */ - case 1: return u.version1.get_face_count (); + case 1: hb_barrier (); return u.version1.get_face_count (); default:return 0; } } @@ -258,7 +258,7 @@ struct TTCHeader { switch (u.header.version.major) { case 2: /* version 2 is compatible with version 1 */ - case 1: return u.version1.get_face (i); + case 1: hb_barrier (); return u.version1.get_face (i); default:return Null (OpenTypeFontFace); } } @@ -270,7 +270,7 @@ struct TTCHeader hb_barrier (); switch (u.header.version.major) { case 2: /* version 2 is compatible with version 1 */ - case 1: return_trace (u.version1.sanitize (c)); + case 1: hb_barrier (); return_trace (u.version1.sanitize (c)); default:return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh index 642332cb902..6655259b7a3 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-open-type.hh @@ -209,7 +209,7 @@ struct HBUINT32VAR } protected: - unsigned char v[1]; + unsigned char v[5]; public: DEFINE_SIZE_MIN (1); @@ -654,7 +654,7 @@ struct UnsizedListOfOffset16To : UnsizedArray16OfOffsetTo<Type, OffsetType, Base unsigned int i = (unsigned int) i_; const OffsetTo<Type, OffsetType, BaseType, has_null> *p = &this->arrayZ[i]; if (unlikely ((const void *) p < (const void *) this->arrayZ)) return Null (Type); /* Overflowed. */ - _hb_compiler_memory_r_barrier (); + hb_barrier (); return this+*p; } Type& operator [] (int i_) @@ -662,7 +662,7 @@ struct UnsizedListOfOffset16To : UnsizedArray16OfOffsetTo<Type, OffsetType, Base unsigned int i = (unsigned int) i_; const OffsetTo<Type, OffsetType, BaseType, has_null> *p = &this->arrayZ[i]; if (unlikely ((const void *) p < (const void *) this->arrayZ)) return Crap (Type); /* Overflowed. */ - _hb_compiler_memory_r_barrier (); + hb_barrier (); return this+*p; } @@ -713,14 +713,14 @@ struct ArrayOf { unsigned int i = (unsigned int) i_; if (unlikely (i >= len)) return Null (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i]; } Type& operator [] (int i_) { unsigned int i = (unsigned int) i_; if (unlikely (i >= len)) return Crap (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i]; } @@ -853,14 +853,14 @@ struct List16OfOffsetTo : ArrayOf<OffsetTo<Type, OffsetType>, HBUINT16> { unsigned int i = (unsigned int) i_; if (unlikely (i >= this->len)) return Null (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return this+this->arrayZ[i]; } const Type& operator [] (int i_) { unsigned int i = (unsigned int) i_; if (unlikely (i >= this->len)) return Crap (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return this+this->arrayZ[i]; } @@ -898,14 +898,14 @@ struct HeadlessArrayOf { unsigned int i = (unsigned int) i_; if (unlikely (i >= lenP1 || !i)) return Null (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i-1]; } Type& operator [] (int i_) { unsigned int i = (unsigned int) i_; if (unlikely (i >= lenP1 || !i)) return Crap (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i-1]; } unsigned int get_size () const @@ -992,14 +992,14 @@ struct ArrayOfM1 { unsigned int i = (unsigned int) i_; if (unlikely (i > lenM1)) return Null (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i]; } Type& operator [] (int i_) { unsigned int i = (unsigned int) i_; if (unlikely (i > lenM1)) return Crap (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return arrayZ[i]; } unsigned int get_size () const @@ -1184,14 +1184,14 @@ struct VarSizedBinSearchArrayOf { unsigned int i = (unsigned int) i_; if (unlikely (i >= get_length ())) return Null (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return StructAtOffset<Type> (&bytesZ, i * header.unitSize); } Type& operator [] (int i_) { unsigned int i = (unsigned int) i_; if (unlikely (i >= get_length ())) return Crap (Type); - _hb_compiler_memory_r_barrier (); + hb_barrier (); return StructAtOffset<Type> (&bytesZ, i * header.unitSize); } unsigned int get_length () const @@ -1441,7 +1441,7 @@ struct CFFIndex hb_ubytes_t operator [] (unsigned int index) const { if (unlikely (index >= count)) return hb_ubytes_t (); - _hb_compiler_memory_r_barrier (); + hb_barrier (); unsigned offset0 = offset_at (index); unsigned offset1 = offset_at (index + 1); if (unlikely (offset1 < offset0 || offset1 > offset_at (count))) @@ -1496,7 +1496,7 @@ struct TupleValues }; static unsigned compile (hb_array_t<const int> values, /* IN */ - hb_array_t<char> encoded_bytes /* OUT */) + hb_array_t<unsigned char> encoded_bytes /* OUT */) { unsigned num_values = values.length; unsigned encoded_len = 0; @@ -1517,7 +1517,7 @@ struct TupleValues } static unsigned encode_value_run_as_zeroes (unsigned& i, - hb_array_t<char> encoded_bytes, + hb_array_t<unsigned char> encoded_bytes, hb_array_t<const int> values) { unsigned num_values = values.length; @@ -1546,7 +1546,7 @@ struct TupleValues } static unsigned encode_value_run_as_bytes (unsigned &i, - hb_array_t<char> encoded_bytes, + hb_array_t<unsigned char> encoded_bytes, hb_array_t<const int> values) { unsigned start = i; @@ -1600,7 +1600,7 @@ struct TupleValues } static unsigned encode_value_run_as_words (unsigned &i, - hb_array_t<char> encoded_bytes, + hb_array_t<unsigned char> encoded_bytes, hb_array_t<const int> values) { unsigned start = i; @@ -1661,7 +1661,7 @@ struct TupleValues } static unsigned encode_value_run_as_longs (unsigned &i, - hb_array_t<char> encoded_bytes, + hb_array_t<unsigned char> encoded_bytes, hb_array_t<const int> values) { unsigned start = i; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh index 15f27883882..b49c0be5171 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff-common.hh @@ -308,8 +308,8 @@ struct FDSelect { switch (format) { - case 0: return format.static_size + u.format0.get_size (num_glyphs); - case 3: return format.static_size + u.format3.get_size (); + case 0: hb_barrier (); return format.static_size + u.format0.get_size (num_glyphs); + case 3: hb_barrier (); return format.static_size + u.format3.get_size (); default:return 0; } } @@ -320,8 +320,8 @@ struct FDSelect switch (format) { - case 0: return u.format0.get_fd (glyph); - case 3: return u.format3.get_fd (glyph); + case 0: hb_barrier (); return u.format0.get_fd (glyph); + case 3: hb_barrier (); return u.format3.get_fd (glyph); default:return 0; } } @@ -332,8 +332,8 @@ struct FDSelect switch (format) { - case 0: return u.format0.get_fd_range (glyph); - case 3: return u.format3.get_fd_range (glyph); + case 0: hb_barrier (); return u.format0.get_fd_range (glyph); + case 3: hb_barrier (); return u.format3.get_fd_range (glyph); default:return {0, 1}; } } @@ -347,8 +347,8 @@ struct FDSelect switch (format) { - case 0: return_trace (u.format0.sanitize (c, fdcount)); - case 3: return_trace (u.format3.sanitize (c, fdcount)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c, fdcount)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c, fdcount)); default:return_trace (false); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh index bb4b204c977..b84d896e3ee 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff1-table.hh @@ -239,8 +239,8 @@ struct Encoding unsigned int size = min_size; switch (table_format ()) { - case 0: size += u.format0.get_size (); break; - case 1: size += u.format1.get_size (); break; + case 0: hb_barrier (); size += u.format0.get_size (); break; + case 1: hb_barrier (); size += u.format1.get_size (); break; } if (has_supplement ()) size += suppEncData ().get_size (); @@ -251,8 +251,8 @@ struct Encoding { switch (table_format ()) { - case 0: return u.format0.get_code (glyph); - case 1: return u.format1.get_code (glyph); + case 0: hb_barrier (); return u.format0.get_code (glyph); + case 1: hb_barrier (); return u.format1.get_code (glyph); default:return 0; } } @@ -276,8 +276,8 @@ struct Encoding switch (table_format ()) { - case 0: if (unlikely (!u.format0.sanitize (c))) { return_trace (false); } break; - case 1: if (unlikely (!u.format1.sanitize (c))) { return_trace (false); } break; + case 0: hb_barrier (); if (unlikely (!u.format0.sanitize (c))) { return_trace (false); } break; + case 1: hb_barrier (); if (unlikely (!u.format1.sanitize (c))) { return_trace (false); } break; default:return_trace (false); } return_trace (likely (!has_supplement () || suppEncData ().sanitize (c))); @@ -288,8 +288,8 @@ struct Encoding { switch (table_format ()) { - case 0: return StructAfter<CFF1SuppEncData> (u.format0.codes[u.format0.nCodes ()-1]); - case 1: return StructAfter<CFF1SuppEncData> (u.format1.ranges[u.format1.nRanges ()-1]); + case 0: hb_barrier (); return StructAfter<CFF1SuppEncData> (u.format0.codes[u.format0.nCodes ()-1]); + case 1: hb_barrier (); return StructAfter<CFF1SuppEncData> (u.format1.ranges[u.format1.nRanges ()-1]); default:return Null (CFF1SuppEncData); } } @@ -567,9 +567,9 @@ struct Charset { switch (format) { - case 0: return min_size + u.format0.get_size (num_glyphs); - case 1: return min_size + u.format1.get_size (num_glyphs); - case 2: return min_size + u.format2.get_size (num_glyphs); + case 0: hb_barrier (); return min_size + u.format0.get_size (num_glyphs); + case 1: hb_barrier (); return min_size + u.format1.get_size (num_glyphs); + case 2: hb_barrier (); return min_size + u.format2.get_size (num_glyphs); default:return 0; } } @@ -579,9 +579,9 @@ struct Charset { switch (format) { - case 0: return u.format0.get_sid (glyph, num_glyphs); - case 1: return u.format1.get_sid (glyph, num_glyphs, cache); - case 2: return u.format2.get_sid (glyph, num_glyphs, cache); + case 0: hb_barrier (); return u.format0.get_sid (glyph, num_glyphs); + case 1: hb_barrier (); return u.format1.get_sid (glyph, num_glyphs, cache); + case 2: hb_barrier (); return u.format2.get_sid (glyph, num_glyphs, cache); default:return 0; } } @@ -590,9 +590,9 @@ struct Charset { switch (format) { - case 0: u.format0.collect_glyph_to_sid_map (mapping, num_glyphs); return; - case 1: u.format1.collect_glyph_to_sid_map (mapping, num_glyphs); return; - case 2: u.format2.collect_glyph_to_sid_map (mapping, num_glyphs); return; + case 0: hb_barrier (); u.format0.collect_glyph_to_sid_map (mapping, num_glyphs); return; + case 1: hb_barrier (); u.format1.collect_glyph_to_sid_map (mapping, num_glyphs); return; + case 2: hb_barrier (); u.format2.collect_glyph_to_sid_map (mapping, num_glyphs); return; default:return; } } @@ -601,9 +601,9 @@ struct Charset { switch (format) { - case 0: return u.format0.get_glyph (sid, num_glyphs); - case 1: return u.format1.get_glyph (sid, num_glyphs); - case 2: return u.format2.get_glyph (sid, num_glyphs); + case 0: hb_barrier (); return u.format0.get_glyph (sid, num_glyphs); + case 1: hb_barrier (); return u.format1.get_glyph (sid, num_glyphs); + case 2: hb_barrier (); return u.format2.get_glyph (sid, num_glyphs); default:return 0; } } @@ -617,9 +617,9 @@ struct Charset switch (format) { - case 0: return_trace (u.format0.sanitize (c, c->get_num_glyphs (), num_charset_entries)); - case 1: return_trace (u.format1.sanitize (c, c->get_num_glyphs (), num_charset_entries)); - case 2: return_trace (u.format2.sanitize (c, c->get_num_glyphs (), num_charset_entries)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c, c->get_num_glyphs (), num_charset_entries)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c, c->get_num_glyphs (), num_charset_entries)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c, c->get_num_glyphs (), num_charset_entries)); default:return_trace (false); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh index 94804b70eb5..c52c0511c67 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cff2-table.hh @@ -62,9 +62,9 @@ struct CFF2FDSelect { switch (format) { - case 0: return format.static_size + u.format0.get_size (num_glyphs); - case 3: return format.static_size + u.format3.get_size (); - case 4: return format.static_size + u.format4.get_size (); + case 0: hb_barrier (); return format.static_size + u.format0.get_size (num_glyphs); + case 3: hb_barrier (); return format.static_size + u.format3.get_size (); + case 4: hb_barrier (); return format.static_size + u.format4.get_size (); default:return 0; } } @@ -76,9 +76,9 @@ struct CFF2FDSelect switch (format) { - case 0: return u.format0.get_fd (glyph); - case 3: return u.format3.get_fd (glyph); - case 4: return u.format4.get_fd (glyph); + case 0: hb_barrier (); return u.format0.get_fd (glyph); + case 3: hb_barrier (); return u.format3.get_fd (glyph); + case 4: hb_barrier (); return u.format4.get_fd (glyph); default:return 0; } } @@ -92,9 +92,9 @@ struct CFF2FDSelect switch (format) { - case 0: return_trace (u.format0.sanitize (c, fdcount)); - case 3: return_trace (u.format3.sanitize (c, fdcount)); - case 4: return_trace (u.format4.sanitize (c, fdcount)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c, fdcount)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c, fdcount)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c, fdcount)); default:return_trace (false); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh index 64d2b138804..0f1edce0b0d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-cmap-table.hh @@ -43,27 +43,145 @@ namespace OT { static inline uint8_t unicode_to_macroman (hb_codepoint_t u) { - uint16_t mapping[] = { - 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, - 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, - 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, - 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, - 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, - 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, - 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, - 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, - 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, - 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, - 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, - 0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, - 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, - 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, - 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, - 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7 + static const struct unicode_to_macroman_t + { + uint16_t unicode; + uint8_t macroman; + } + mapping[] = + { + { 0x00A0, 0xCA }, + { 0x00A1, 0xC1 }, + { 0x00A2, 0xA2 }, + { 0x00A3, 0xA3 }, + { 0x00A5, 0xB4 }, + { 0x00A7, 0xA4 }, + { 0x00A8, 0xAC }, + { 0x00A9, 0xA9 }, + { 0x00AA, 0xBB }, + { 0x00AB, 0xC7 }, + { 0x00AC, 0xC2 }, + { 0x00AE, 0xA8 }, + { 0x00AF, 0xF8 }, + { 0x00B0, 0xA1 }, + { 0x00B1, 0xB1 }, + { 0x00B4, 0xAB }, + { 0x00B5, 0xB5 }, + { 0x00B6, 0xA6 }, + { 0x00B7, 0xE1 }, + { 0x00B8, 0xFC }, + { 0x00BA, 0xBC }, + { 0x00BB, 0xC8 }, + { 0x00BF, 0xC0 }, + { 0x00C0, 0xCB }, + { 0x00C1, 0xE7 }, + { 0x00C2, 0xE5 }, + { 0x00C3, 0xCC }, + { 0x00C4, 0x80 }, + { 0x00C5, 0x81 }, + { 0x00C6, 0xAE }, + { 0x00C7, 0x82 }, + { 0x00C8, 0xE9 }, + { 0x00C9, 0x83 }, + { 0x00CA, 0xE6 }, + { 0x00CB, 0xE8 }, + { 0x00CC, 0xED }, + { 0x00CD, 0xEA }, + { 0x00CE, 0xEB }, + { 0x00CF, 0xEC }, + { 0x00D1, 0x84 }, + { 0x00D2, 0xF1 }, + { 0x00D3, 0xEE }, + { 0x00D4, 0xEF }, + { 0x00D5, 0xCD }, + { 0x00D6, 0x85 }, + { 0x00D8, 0xAF }, + { 0x00D9, 0xF4 }, + { 0x00DA, 0xF2 }, + { 0x00DB, 0xF3 }, + { 0x00DC, 0x86 }, + { 0x00DF, 0xA7 }, + { 0x00E0, 0x88 }, + { 0x00E1, 0x87 }, + { 0x00E2, 0x89 }, + { 0x00E3, 0x8B }, + { 0x00E4, 0x8A }, + { 0x00E5, 0x8C }, + { 0x00E6, 0xBE }, + { 0x00E7, 0x8D }, + { 0x00E8, 0x8F }, + { 0x00E9, 0x8E }, + { 0x00EA, 0x90 }, + { 0x00EB, 0x91 }, + { 0x00EC, 0x93 }, + { 0x00ED, 0x92 }, + { 0x00EE, 0x94 }, + { 0x00EF, 0x95 }, + { 0x00F1, 0x96 }, + { 0x00F2, 0x98 }, + { 0x00F3, 0x97 }, + { 0x00F4, 0x99 }, + { 0x00F5, 0x9B }, + { 0x00F6, 0x9A }, + { 0x00F7, 0xD6 }, + { 0x00F8, 0xBF }, + { 0x00F9, 0x9D }, + { 0x00FA, 0x9C }, + { 0x00FB, 0x9E }, + { 0x00FC, 0x9F }, + { 0x00FF, 0xD8 }, + { 0x0131, 0xF5 }, + { 0x0152, 0xCE }, + { 0x0153, 0xCF }, + { 0x0178, 0xD9 }, + { 0x0192, 0xC4 }, + { 0x02C6, 0xF6 }, + { 0x02C7, 0xFF }, + { 0x02D8, 0xF9 }, + { 0x02D9, 0xFA }, + { 0x02DA, 0xFB }, + { 0x02DB, 0xFE }, + { 0x02DC, 0xF7 }, + { 0x02DD, 0xFD }, + { 0x03A9, 0xBD }, + { 0x03C0, 0xB9 }, + { 0x2013, 0xD0 }, + { 0x2014, 0xD1 }, + { 0x2018, 0xD4 }, + { 0x2019, 0xD5 }, + { 0x201A, 0xE2 }, + { 0x201C, 0xD2 }, + { 0x201D, 0xD3 }, + { 0x201E, 0xE3 }, + { 0x2020, 0xA0 }, + { 0x2021, 0xE0 }, + { 0x2022, 0xA5 }, + { 0x2026, 0xC9 }, + { 0x2030, 0xE4 }, + { 0x2039, 0xDC }, + { 0x203A, 0xDD }, + { 0x2044, 0xDA }, + { 0x20AC, 0xDB }, + { 0x2122, 0xAA }, + { 0x2202, 0xB6 }, + { 0x2206, 0xC6 }, + { 0x220F, 0xB8 }, + { 0x2211, 0xB7 }, + { 0x221A, 0xC3 }, + { 0x221E, 0xB0 }, + { 0x222B, 0xBA }, + { 0x2248, 0xC5 }, + { 0x2260, 0xAD }, + { 0x2264, 0xB2 }, + { 0x2265, 0xB3 }, + { 0x25CA, 0xD7 }, + { 0xF8FF, 0xF0 }, + { 0xFB01, 0xDE }, + { 0xFB02, 0xDF }, }; - uint16_t *c = hb_bsearch (u, mapping, ARRAY_LENGTH (mapping), sizeof (mapping[0]), - _hb_cmp_operator<uint16_t, uint16_t>); - return c ? (c - mapping) + 0x7F : 0; + auto *c = hb_bsearch (u, mapping, ARRAY_LENGTH (mapping), sizeof (mapping[0]), + _hb_cmp_operator<uint16_t, uint16_t>); + return c ? c->macroman : 0; } struct CmapSubtableFormat0 @@ -1379,12 +1497,12 @@ struct CmapSubtable hb_codepoint_t *glyph) const { switch (u.format) { - case 0: return u.format0 .get_glyph (codepoint, glyph); - case 4: return u.format4 .get_glyph (codepoint, glyph); - case 6: return u.format6 .get_glyph (codepoint, glyph); - case 10: return u.format10.get_glyph (codepoint, glyph); - case 12: return u.format12.get_glyph (codepoint, glyph); - case 13: return u.format13.get_glyph (codepoint, glyph); + case 0: hb_barrier (); return u.format0 .get_glyph (codepoint, glyph); + case 4: hb_barrier (); return u.format4 .get_glyph (codepoint, glyph); + case 6: hb_barrier (); return u.format6 .get_glyph (codepoint, glyph); + case 10: hb_barrier (); return u.format10.get_glyph (codepoint, glyph); + case 12: hb_barrier (); return u.format12.get_glyph (codepoint, glyph); + case 13: hb_barrier (); return u.format13.get_glyph (codepoint, glyph); case 14: default: return false; } @@ -1392,12 +1510,12 @@ struct CmapSubtable void collect_unicodes (hb_set_t *out, unsigned int num_glyphs = UINT_MAX) const { switch (u.format) { - case 0: u.format0 .collect_unicodes (out); return; - case 4: u.format4 .collect_unicodes (out); return; - case 6: u.format6 .collect_unicodes (out); return; - case 10: u.format10.collect_unicodes (out); return; - case 12: u.format12.collect_unicodes (out, num_glyphs); return; - case 13: u.format13.collect_unicodes (out, num_glyphs); return; + case 0: hb_barrier (); u.format0 .collect_unicodes (out); return; + case 4: hb_barrier (); u.format4 .collect_unicodes (out); return; + case 6: hb_barrier (); u.format6 .collect_unicodes (out); return; + case 10: hb_barrier (); u.format10.collect_unicodes (out); return; + case 12: hb_barrier (); u.format12.collect_unicodes (out, num_glyphs); return; + case 13: hb_barrier (); u.format13.collect_unicodes (out, num_glyphs); return; case 14: default: return; } @@ -1408,12 +1526,12 @@ struct CmapSubtable unsigned num_glyphs = UINT_MAX) const { switch (u.format) { - case 0: u.format0 .collect_mapping (unicodes, mapping); return; - case 4: u.format4 .collect_mapping (unicodes, mapping); return; - case 6: u.format6 .collect_mapping (unicodes, mapping); return; - case 10: u.format10.collect_mapping (unicodes, mapping); return; - case 12: u.format12.collect_mapping (unicodes, mapping, num_glyphs); return; - case 13: u.format13.collect_mapping (unicodes, mapping, num_glyphs); return; + case 0: hb_barrier (); u.format0 .collect_mapping (unicodes, mapping); return; + case 4: hb_barrier (); u.format4 .collect_mapping (unicodes, mapping); return; + case 6: hb_barrier (); u.format6 .collect_mapping (unicodes, mapping); return; + case 10: hb_barrier (); u.format10.collect_mapping (unicodes, mapping); return; + case 12: hb_barrier (); u.format12.collect_mapping (unicodes, mapping, num_glyphs); return; + case 13: hb_barrier (); u.format13.collect_mapping (unicodes, mapping, num_glyphs); return; case 14: default: return; } @@ -1422,12 +1540,12 @@ struct CmapSubtable unsigned get_language () const { switch (u.format) { - case 0: return u.format0 .get_language (); - case 4: return u.format4 .get_language (); - case 6: return u.format6 .get_language (); - case 10: return u.format10.get_language (); - case 12: return u.format12.get_language (); - case 13: return u.format13.get_language (); + case 0: hb_barrier (); return u.format0 .get_language (); + case 4: hb_barrier (); return u.format4 .get_language (); + case 6: hb_barrier (); return u.format6 .get_language (); + case 10: hb_barrier (); return u.format10.get_language (); + case 12: hb_barrier (); return u.format12.get_language (); + case 13: hb_barrier (); return u.format13.get_language (); case 14: default: return 0; } @@ -1442,9 +1560,9 @@ struct CmapSubtable const void *base) { switch (format) { - case 4: return u.format4.serialize (c, it); - case 12: return u.format12.serialize (c, it); - case 14: return u.format14.serialize (c, &plan->unicodes, &plan->glyphs_requested, plan->glyph_map, base); + case 4: hb_barrier (); return u.format4.serialize (c, it); + case 12: hb_barrier (); return u.format12.serialize (c, it); + case 14: hb_barrier (); return u.format14.serialize (c, &plan->unicodes, &plan->glyphs_requested, plan->glyph_map, base); default: return; } } @@ -1455,13 +1573,13 @@ struct CmapSubtable if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 0: return_trace (u.format0 .sanitize (c)); - case 4: return_trace (u.format4 .sanitize (c)); - case 6: return_trace (u.format6 .sanitize (c)); - case 10: return_trace (u.format10.sanitize (c)); - case 12: return_trace (u.format12.sanitize (c)); - case 13: return_trace (u.format13.sanitize (c)); - case 14: return_trace (u.format14.sanitize (c)); + case 0: hb_barrier (); return_trace (u.format0 .sanitize (c)); + case 4: hb_barrier (); return_trace (u.format4 .sanitize (c)); + case 6: hb_barrier (); return_trace (u.format6 .sanitize (c)); + case 10: hb_barrier (); return_trace (u.format10.sanitize (c)); + case 12: hb_barrier (); return_trace (u.format12.sanitize (c)); + case 13: hb_barrier (); return_trace (u.format13.sanitize (c)); + case 14: hb_barrier (); return_trace (u.format14.sanitize (c)); default:return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh index b87ac8f4947..2abda78af84 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-kern-table.hh @@ -132,7 +132,7 @@ struct KernSubTable { switch (get_type ()) { /* This method hooks up to hb_font_t's get_h_kerning. Only support Format0. */ - case 0: return u.format0.get_kerning (left, right); + case 0: hb_barrier (); return u.format0.get_kerning (left, right); default:return 0; } } @@ -311,9 +311,9 @@ struct kern bool has_state_machine () const { switch (get_type ()) { - case 0: return u.ot.has_state_machine (); + case 0: hb_barrier (); return u.ot.has_state_machine (); #ifndef HB_NO_AAT_SHAPE - case 1: return u.aat.has_state_machine (); + case 1: hb_barrier (); return u.aat.has_state_machine (); #endif default:return false; } @@ -322,9 +322,9 @@ struct kern bool has_cross_stream () const { switch (get_type ()) { - case 0: return u.ot.has_cross_stream (); + case 0: hb_barrier (); return u.ot.has_cross_stream (); #ifndef HB_NO_AAT_SHAPE - case 1: return u.aat.has_cross_stream (); + case 1: hb_barrier (); return u.aat.has_cross_stream (); #endif default:return false; } @@ -333,9 +333,9 @@ struct kern int get_h_kerning (hb_codepoint_t left, hb_codepoint_t right) const { switch (get_type ()) { - case 0: return u.ot.get_h_kerning (left, right); + case 0: hb_barrier (); return u.ot.get_h_kerning (left, right); #ifndef HB_NO_AAT_SHAPE - case 1: return u.aat.get_h_kerning (left, right); + case 1: hb_barrier (); return u.aat.get_h_kerning (left, right); #endif default:return 0; } @@ -370,9 +370,9 @@ struct kern AAT::kern_accelerator_data_t create_accelerator_data (unsigned num_glyphs) const { switch (get_type ()) { - case 0: return u.ot.create_accelerator_data (num_glyphs); + case 0: hb_barrier (); return u.ot.create_accelerator_data (num_glyphs); #ifndef HB_NO_AAT_SHAPE - case 1: return u.aat.create_accelerator_data (num_glyphs); + case 1: hb_barrier (); return u.aat.create_accelerator_data (num_glyphs); #endif default:return AAT::kern_accelerator_data_t (); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh index 56290905cec..68a4e7cba75 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-base-table.hh @@ -172,9 +172,9 @@ struct BaseCoord hb_direction_t direction) const { switch (u.format) { - case 1: return u.format1.get_coord (font, direction); - case 2: return u.format2.get_coord (font, direction); - case 3: return u.format3.get_coord (font, var_store, direction); + case 1: hb_barrier (); return u.format1.get_coord (font, direction); + case 2: hb_barrier (); return u.format2.get_coord (font, direction); + case 3: hb_barrier (); return u.format3.get_coord (font, var_store, direction); default:return 0; } } @@ -182,7 +182,7 @@ struct BaseCoord void collect_variation_indices (hb_set_t& varidx_set /* OUT */) const { switch (u.format) { - case 3: u.format3.collect_variation_indices (varidx_set); + case 3: hb_barrier (); u.format3.collect_variation_indices (varidx_set); default:return; } } @@ -193,9 +193,9 @@ struct BaseCoord if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); - case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); + case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); + case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); default:return_trace (c->default_return_value ()); } } @@ -206,9 +206,9 @@ struct BaseCoord if (unlikely (!u.format.sanitize (c))) return_trace (false); hb_barrier (); switch (u.format) { - case 1: return_trace (u.format1.sanitize (c)); - case 2: return_trace (u.format2.sanitize (c)); - case 3: return_trace (u.format3.sanitize (c)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c)); default:return_trace (false); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh index 66274534b0b..8216f54ca1a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-common.hh @@ -646,8 +646,7 @@ struct FeatureParamsCharacterVariants return; unsigned last_name_id = (unsigned) firstParamUILabelNameID + (unsigned) numNamedParameters - 1; - if (last_name_id >= 256 && last_name_id <= 32767) - nameids_to_retain->add_range (firstParamUILabelNameID, last_name_id); + nameids_to_retain->add_range (firstParamUILabelNameID, last_name_id); } bool subset (hb_subset_context_t *c) const @@ -2068,11 +2067,11 @@ struct ClassDef unsigned int get_class (hb_codepoint_t glyph_id) const { switch (u.format) { - case 1: return u.format1.get_class (glyph_id); - case 2: return u.format2.get_class (glyph_id); + case 1: hb_barrier (); return u.format1.get_class (glyph_id); + case 2: hb_barrier (); return u.format2.get_class (glyph_id); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.get_class (glyph_id); - case 4: return u.format4.get_class (glyph_id); + case 3: hb_barrier (); return u.format3.get_class (glyph_id); + case 4: hb_barrier (); return u.format4.get_class (glyph_id); #endif default:return 0; } @@ -2081,11 +2080,11 @@ struct ClassDef unsigned get_population () const { switch (u.format) { - case 1: return u.format1.get_population (); - case 2: return u.format2.get_population (); + case 1: hb_barrier (); return u.format1.get_population (); + case 2: hb_barrier (); return u.format2.get_population (); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.get_population (); - case 4: return u.format4.get_population (); + case 3: hb_barrier (); return u.format3.get_population (); + case 4: hb_barrier (); return u.format4.get_population (); #endif default:return NOT_COVERED; } @@ -2147,11 +2146,11 @@ struct ClassDef switch (u.format) { - case 1: return_trace (u.format1.serialize (c, it)); - case 2: return_trace (u.format2.serialize (c, it)); + case 1: hb_barrier (); return_trace (u.format1.serialize (c, it)); + case 2: hb_barrier (); return_trace (u.format2.serialize (c, it)); #ifndef HB_NO_BEYOND_64K - case 3: return_trace (u.format3.serialize (c, it)); - case 4: return_trace (u.format4.serialize (c, it)); + case 3: hb_barrier (); return_trace (u.format3.serialize (c, it)); + case 4: hb_barrier (); return_trace (u.format4.serialize (c, it)); #endif default:return_trace (false); } @@ -2165,11 +2164,11 @@ struct ClassDef { TRACE_SUBSET (this); switch (u.format) { - case 1: return_trace (u.format1.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); - case 2: return_trace (u.format2.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); + case 1: hb_barrier (); return_trace (u.format1.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); + case 2: hb_barrier (); return_trace (u.format2.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); #ifndef HB_NO_BEYOND_64K - case 3: return_trace (u.format3.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); - case 4: return_trace (u.format4.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); + case 3: hb_barrier (); return_trace (u.format3.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); + case 4: hb_barrier (); return_trace (u.format4.subset (c, klass_map, keep_empty_table, use_class_zero, glyph_filter)); #endif default:return_trace (false); } @@ -2181,11 +2180,11 @@ struct ClassDef if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 1: return_trace (u.format1.sanitize (c)); - case 2: return_trace (u.format2.sanitize (c)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c)); #ifndef HB_NO_BEYOND_64K - case 3: return_trace (u.format3.sanitize (c)); - case 4: return_trace (u.format4.sanitize (c)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c)); #endif default:return_trace (true); } @@ -2194,11 +2193,11 @@ struct ClassDef unsigned cost () const { switch (u.format) { - case 1: return u.format1.cost (); - case 2: return u.format2.cost (); + case 1: hb_barrier (); return u.format1.cost (); + case 2: hb_barrier (); return u.format2.cost (); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.cost (); - case 4: return u.format4.cost (); + case 3: hb_barrier (); return u.format3.cost (); + case 4: hb_barrier (); return u.format4.cost (); #endif default:return 0u; } @@ -2210,11 +2209,11 @@ struct ClassDef bool collect_coverage (set_t *glyphs) const { switch (u.format) { - case 1: return u.format1.collect_coverage (glyphs); - case 2: return u.format2.collect_coverage (glyphs); + case 1: hb_barrier (); return u.format1.collect_coverage (glyphs); + case 2: hb_barrier (); return u.format2.collect_coverage (glyphs); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.collect_coverage (glyphs); - case 4: return u.format4.collect_coverage (glyphs); + case 3: hb_barrier (); return u.format3.collect_coverage (glyphs); + case 4: hb_barrier (); return u.format4.collect_coverage (glyphs); #endif default:return false; } @@ -2226,11 +2225,11 @@ struct ClassDef bool collect_class (set_t *glyphs, unsigned int klass) const { switch (u.format) { - case 1: return u.format1.collect_class (glyphs, klass); - case 2: return u.format2.collect_class (glyphs, klass); + case 1: hb_barrier (); return u.format1.collect_class (glyphs, klass); + case 2: hb_barrier (); return u.format2.collect_class (glyphs, klass); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.collect_class (glyphs, klass); - case 4: return u.format4.collect_class (glyphs, klass); + case 3: hb_barrier (); return u.format3.collect_class (glyphs, klass); + case 4: hb_barrier (); return u.format4.collect_class (glyphs, klass); #endif default:return false; } @@ -2239,11 +2238,11 @@ struct ClassDef bool intersects (const hb_set_t *glyphs) const { switch (u.format) { - case 1: return u.format1.intersects (glyphs); - case 2: return u.format2.intersects (glyphs); + case 1: hb_barrier (); return u.format1.intersects (glyphs); + case 2: hb_barrier (); return u.format2.intersects (glyphs); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.intersects (glyphs); - case 4: return u.format4.intersects (glyphs); + case 3: hb_barrier (); return u.format3.intersects (glyphs); + case 4: hb_barrier (); return u.format4.intersects (glyphs); #endif default:return false; } @@ -2251,11 +2250,11 @@ struct ClassDef bool intersects_class (const hb_set_t *glyphs, unsigned int klass) const { switch (u.format) { - case 1: return u.format1.intersects_class (glyphs, klass); - case 2: return u.format2.intersects_class (glyphs, klass); + case 1: hb_barrier (); return u.format1.intersects_class (glyphs, klass); + case 2: hb_barrier (); return u.format2.intersects_class (glyphs, klass); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.intersects_class (glyphs, klass); - case 4: return u.format4.intersects_class (glyphs, klass); + case 3: hb_barrier (); return u.format3.intersects_class (glyphs, klass); + case 4: hb_barrier (); return u.format4.intersects_class (glyphs, klass); #endif default:return false; } @@ -2264,11 +2263,11 @@ struct ClassDef void intersected_class_glyphs (const hb_set_t *glyphs, unsigned klass, hb_set_t *intersect_glyphs) const { switch (u.format) { - case 1: return u.format1.intersected_class_glyphs (glyphs, klass, intersect_glyphs); - case 2: return u.format2.intersected_class_glyphs (glyphs, klass, intersect_glyphs); + case 1: hb_barrier (); return u.format1.intersected_class_glyphs (glyphs, klass, intersect_glyphs); + case 2: hb_barrier (); return u.format2.intersected_class_glyphs (glyphs, klass, intersect_glyphs); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.intersected_class_glyphs (glyphs, klass, intersect_glyphs); - case 4: return u.format4.intersected_class_glyphs (glyphs, klass, intersect_glyphs); + case 3: hb_barrier (); return u.format3.intersected_class_glyphs (glyphs, klass, intersect_glyphs); + case 4: hb_barrier (); return u.format4.intersected_class_glyphs (glyphs, klass, intersect_glyphs); #endif default:return; } @@ -2277,11 +2276,11 @@ struct ClassDef void intersected_classes (const hb_set_t *glyphs, hb_set_t *intersect_classes) const { switch (u.format) { - case 1: return u.format1.intersected_classes (glyphs, intersect_classes); - case 2: return u.format2.intersected_classes (glyphs, intersect_classes); + case 1: hb_barrier (); return u.format1.intersected_classes (glyphs, intersect_classes); + case 2: hb_barrier (); return u.format2.intersected_classes (glyphs, intersect_classes); #ifndef HB_NO_BEYOND_64K - case 3: return u.format3.intersected_classes (glyphs, intersect_classes); - case 4: return u.format4.intersected_classes (glyphs, intersect_classes); + case 3: hb_barrier (); return u.format3.intersected_classes (glyphs, intersect_classes); + case 4: hb_barrier (); return u.format4.intersected_classes (glyphs, intersect_classes); #endif default:return; } @@ -3638,8 +3637,8 @@ struct DeltaSetIndexMap unsigned length = plan.get_output_map ().length; u.format = length <= 0xFFFF ? 0 : 1; switch (u.format) { - case 0: return_trace (u.format0.serialize (c, plan)); - case 1: return_trace (u.format1.serialize (c, plan)); + case 0: hb_barrier (); return_trace (u.format0.serialize (c, plan)); + case 1: hb_barrier (); return_trace (u.format1.serialize (c, plan)); default:return_trace (false); } } @@ -3647,8 +3646,8 @@ struct DeltaSetIndexMap uint32_t map (unsigned v) const { switch (u.format) { - case 0: return (u.format0.map (v)); - case 1: return (u.format1.map (v)); + case 0: hb_barrier (); return (u.format0.map (v)); + case 1: hb_barrier (); return (u.format1.map (v)); default:return v; } } @@ -3656,8 +3655,8 @@ struct DeltaSetIndexMap unsigned get_map_count () const { switch (u.format) { - case 0: return u.format0.get_map_count (); - case 1: return u.format1.get_map_count (); + case 0: hb_barrier (); return u.format0.get_map_count (); + case 1: hb_barrier (); return u.format1.get_map_count (); default:return 0; } } @@ -3665,8 +3664,8 @@ struct DeltaSetIndexMap unsigned get_width () const { switch (u.format) { - case 0: return u.format0.get_width (); - case 1: return u.format1.get_width (); + case 0: hb_barrier (); return u.format0.get_width (); + case 1: hb_barrier (); return u.format1.get_width (); default:return 0; } } @@ -3674,8 +3673,8 @@ struct DeltaSetIndexMap unsigned get_inner_bit_count () const { switch (u.format) { - case 0: return u.format0.get_inner_bit_count (); - case 1: return u.format1.get_inner_bit_count (); + case 0: hb_barrier (); return u.format0.get_inner_bit_count (); + case 1: hb_barrier (); return u.format1.get_inner_bit_count (); default:return 0; } } @@ -3686,8 +3685,8 @@ struct DeltaSetIndexMap if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 0: return_trace (u.format0.sanitize (c)); - case 1: return_trace (u.format1.sanitize (c)); + case 0: hb_barrier (); return_trace (u.format0.sanitize (c)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c)); default:return_trace (true); } } @@ -3696,8 +3695,8 @@ struct DeltaSetIndexMap { TRACE_SERIALIZE (this); switch (u.format) { - case 0: return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format0.copy (c))); - case 1: return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format1.copy (c))); + case 0: hb_barrier (); return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format0.copy (c))); + case 1: hb_barrier (); return_trace (reinterpret_cast<DeltaSetIndexMap *> (u.format1.copy (c))); default:return_trace (nullptr); } } @@ -3799,6 +3798,7 @@ enum Cond_with_Var_flag_t DROP_RECORD_WITH_VAR = 3, }; +struct Condition; template <typename Instancer> static bool @@ -4111,11 +4111,11 @@ struct Condition Instancer *instancer) const { switch (u.format) { - case 1: return u.format1.evaluate (coords, coord_len, instancer); - case 2: return u.format2.evaluate (coords, coord_len, instancer); - case 3: return u.format3.evaluate (coords, coord_len, instancer); - case 4: return u.format4.evaluate (coords, coord_len, instancer); - case 5: return u.format5.evaluate (coords, coord_len, instancer); + case 1: hb_barrier (); return u.format1.evaluate (coords, coord_len, instancer); + case 2: hb_barrier (); return u.format2.evaluate (coords, coord_len, instancer); + case 3: hb_barrier (); return u.format3.evaluate (coords, coord_len, instancer); + case 4: hb_barrier (); return u.format4.evaluate (coords, coord_len, instancer); + case 5: hb_barrier (); return u.format5.evaluate (coords, coord_len, instancer); default:return false; } } @@ -4124,7 +4124,7 @@ struct Condition hb_map_t *condition_map /* OUT */) const { switch (u.format) { - case 1: return u.format1.keep_with_variations (c, condition_map); + case 1: hb_barrier (); return u.format1.keep_with_variations (c, condition_map); // TODO(subset) default: c->apply = false; return KEEP_COND_WITH_VAR; } @@ -4136,11 +4136,11 @@ struct Condition if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); - case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); - case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); - case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); + case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); + case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); + case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); + case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); default:return_trace (c->default_return_value ()); } } @@ -4151,11 +4151,11 @@ struct Condition if (!u.format.sanitize (c)) return_trace (false); hb_barrier (); switch (u.format) { - case 1: return_trace (u.format1.sanitize (c)); - case 2: return_trace (u.format2.sanitize (c)); - case 3: return_trace (u.format3.sanitize (c)); - case 4: return_trace (u.format4.sanitize (c)); - case 5: return_trace (u.format5.sanitize (c)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c)); + case 5: hb_barrier (); return_trace (u.format5.sanitize (c)); default:return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh index a0e3f1fde46..2c9056c7051 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout-gsubgpos.hh @@ -406,6 +406,7 @@ struct hb_ot_apply_context_t : void set_ignore_zwnj (bool ignore_zwnj_) { ignore_zwnj = ignore_zwnj_; } void set_ignore_zwj (bool ignore_zwj_) { ignore_zwj = ignore_zwj_; } + void set_ignore_hidden (bool ignore_hidden_) { ignore_hidden = ignore_hidden_; } void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; } void set_mask (hb_mask_t mask_) { mask = mask_; } void set_per_syllable (bool per_syllable_) { per_syllable = per_syllable_; } @@ -451,9 +452,10 @@ struct hb_ot_apply_context_t : if (!c->check_glyph_property (&info, lookup_props)) return SKIP_YES; - if (unlikely (_hb_glyph_info_is_default_ignorable_and_not_hidden (&info) && + if (unlikely (_hb_glyph_info_is_default_ignorable (&info) && (ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) && - (ignore_zwj || !_hb_glyph_info_is_zwj (&info)))) + (ignore_zwj || !_hb_glyph_info_is_zwj (&info)) && + (ignore_hidden || !_hb_glyph_info_is_hidden (&info)))) return SKIP_MAYBE; return SKIP_NO; @@ -464,6 +466,7 @@ struct hb_ot_apply_context_t : hb_mask_t mask = -1; bool ignore_zwnj = false; bool ignore_zwj = false; + bool ignore_hidden = false; bool per_syllable = false; uint8_t syllable = 0; match_func_t match_func = nullptr; @@ -486,6 +489,8 @@ struct hb_ot_apply_context_t : matcher.set_ignore_zwnj (c->table_index == 1 || (context_match && c->auto_zwnj)); /* Ignore ZWJ if we are matching context, or asked to. */ matcher.set_ignore_zwj (context_match || c->auto_zwj); + /* Ignore hidden glyphs (like CGJ) during GPOS. */ + matcher.set_ignore_hidden (c->table_index == 1); matcher.set_mask (context_match ? -1 : c->lookup_mask); /* Per syllable matching is only for GSUB. */ matcher.set_per_syllable (c->table_index == 0 && c->per_syllable); @@ -2901,12 +2906,12 @@ struct Context if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); - case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); + case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); + case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); #ifndef HB_NO_BEYOND_64K - case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); - case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); + case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); + case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); #endif default:return_trace (c->default_return_value ()); } @@ -3390,6 +3395,15 @@ struct ChainRuleSet * * Replicated from LigatureSet::apply(). */ + /* If the input skippy has non-auto joiners behavior (as in Indic shapers), + * skip this fast path, as we don't distinguish between input & lookahead + * matching in the fast path. + * + * https://github.com/harfbuzz/harfbuzz/issues/4813 + */ + if (!c->auto_zwnj || !c->auto_zwj) + goto slow; + hb_ot_apply_context_t::skipping_iterator_t &skippy_iter = c->iter_input; skippy_iter.reset (c->buffer->idx); skippy_iter.set_match_func (match_always, nullptr); @@ -3429,10 +3443,10 @@ struct ChainRuleSet } matched = skippy_iter.next (); if (likely (matched && !skippy_iter.may_skip (c->buffer->info[skippy_iter.idx]))) - { + { second = &c->buffer->info[skippy_iter.idx]; unsafe_to2 = skippy_iter.idx + 1; - } + } auto match_input = lookup_context.funcs.match[1]; auto match_lookahead = lookup_context.funcs.match[2]; @@ -4225,12 +4239,12 @@ struct ChainContext if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); - case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); + case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); + case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); #ifndef HB_NO_BEYOND_64K - case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); - case 5: return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); + case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); + case 5: hb_barrier (); return_trace (c->dispatch (u.format5, std::forward<Ts> (ds)...)); #endif default:return_trace (c->default_return_value ()); } @@ -4314,7 +4328,7 @@ struct Extension unsigned int get_type () const { switch (u.format) { - case 1: return u.format1.get_type (); + case 1: hb_barrier (); return u.format1.get_type (); default:return 0; } } @@ -4322,7 +4336,7 @@ struct Extension const X& get_subtable () const { switch (u.format) { - case 1: return u.format1.template get_subtable<typename T::SubTable> (); + case 1: hb_barrier (); return u.format1.template get_subtable<typename T::SubTable> (); default:return Null (typename T::SubTable); } } @@ -4334,7 +4348,7 @@ struct Extension typename hb_subset_context_t::return_t dispatch (hb_subset_context_t *c, Ts&&... ds) const { switch (u.format) { - case 1: return u.format1.subset (c); + case 1: hb_barrier (); return u.format1.subset (c); default: return c->default_return_value (); } } @@ -4345,7 +4359,7 @@ struct Extension if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (u.format1.dispatch (c, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (u.format1.dispatch (c, std::forward<Ts> (ds)...)); default:return_trace (c->default_return_value ()); } } @@ -4560,9 +4574,9 @@ struct GSUBGPOS unsigned int get_size () const { switch (u.version.major) { - case 1: return u.version1.get_size (); + case 1: hb_barrier (); return u.version1.get_size (); #ifndef HB_NO_BEYOND_64K - case 2: return u.version2.get_size (); + case 2: hb_barrier (); return u.version2.get_size (); #endif default: return u.version.static_size; } @@ -4575,9 +4589,9 @@ struct GSUBGPOS if (unlikely (!u.version.sanitize (c))) return_trace (false); hb_barrier (); switch (u.version.major) { - case 1: return_trace (u.version1.sanitize<TLookup> (c)); + case 1: hb_barrier (); return_trace (u.version1.sanitize<TLookup> (c)); #ifndef HB_NO_BEYOND_64K - case 2: return_trace (u.version2.sanitize<TLookup> (c)); + case 2: hb_barrier (); return_trace (u.version2.sanitize<TLookup> (c)); #endif default: return_trace (true); } @@ -4587,9 +4601,9 @@ struct GSUBGPOS bool subset (hb_subset_layout_context_t *c) const { switch (u.version.major) { - case 1: return u.version1.subset<TLookup> (c); + case 1: hb_barrier (); return u.version1.subset<TLookup> (c); #ifndef HB_NO_BEYOND_64K - case 2: return u.version2.subset<TLookup> (c); + case 2: hb_barrier (); return u.version2.subset<TLookup> (c); #endif default: return false; } @@ -4598,9 +4612,9 @@ struct GSUBGPOS const ScriptList &get_script_list () const { switch (u.version.major) { - case 1: return this+u.version1.scriptList; + case 1: hb_barrier (); return this+u.version1.scriptList; #ifndef HB_NO_BEYOND_64K - case 2: return this+u.version2.scriptList; + case 2: hb_barrier (); return this+u.version2.scriptList; #endif default: return Null (ScriptList); } @@ -4608,9 +4622,9 @@ struct GSUBGPOS const FeatureList &get_feature_list () const { switch (u.version.major) { - case 1: return this+u.version1.featureList; + case 1: hb_barrier (); return this+u.version1.featureList; #ifndef HB_NO_BEYOND_64K - case 2: return this+u.version2.featureList; + case 2: hb_barrier (); return this+u.version2.featureList; #endif default: return Null (FeatureList); } @@ -4618,9 +4632,9 @@ struct GSUBGPOS unsigned int get_lookup_count () const { switch (u.version.major) { - case 1: return (this+u.version1.lookupList).len; + case 1: hb_barrier (); return (this+u.version1.lookupList).len; #ifndef HB_NO_BEYOND_64K - case 2: return (this+u.version2.lookupList).len; + case 2: hb_barrier (); return (this+u.version2.lookupList).len; #endif default: return 0; } @@ -4628,9 +4642,9 @@ struct GSUBGPOS const Lookup& get_lookup (unsigned int i) const { switch (u.version.major) { - case 1: return (this+u.version1.lookupList)[i]; + case 1: hb_barrier (); return (this+u.version1.lookupList)[i]; #ifndef HB_NO_BEYOND_64K - case 2: return (this+u.version2.lookupList)[i]; + case 2: hb_barrier (); return (this+u.version2.lookupList)[i]; #endif default: return Null (Lookup); } @@ -4638,9 +4652,9 @@ struct GSUBGPOS const FeatureVariations &get_feature_variations () const { switch (u.version.major) { - case 1: return (u.version.to_int () >= 0x00010001u ? this+u.version1.featureVars : Null (FeatureVariations)); + case 1: hb_barrier (); return (u.version.to_int () >= 0x00010001u && hb_barrier () ? this+u.version1.featureVars : Null (FeatureVariations)); #ifndef HB_NO_BEYOND_64K - case 2: return this+u.version2.featureVars; + case 2: hb_barrier (); return this+u.version2.featureVars; #endif default: return Null (FeatureVariations); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh index d71889331d8..3a8d36ac49a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-layout.hh @@ -173,12 +173,12 @@ _hb_next_syllable (hb_buffer_t *buffer, unsigned int start) /* Design: * unicode_props() is a two-byte number. The low byte includes: - * - General_Category: 5 bits. + * - Extended General_Category: 5 bits. * - A bit each for: * * Is it Default_Ignorable(); we have a modified Default_Ignorable(). * * Whether it's one of the four Mongolian Free Variation Selectors, * CGJ, or other characters that are hidden but should not be ignored - * like most other Default_Ignorable()s do during matching. + * like most other Default_Ignorable()s do during GSUB matching. * * Whether it's a grapheme continuation. * * The high-byte has different meanings, switched by the Gen-Cat: @@ -311,12 +311,15 @@ _hb_glyph_info_is_default_ignorable (const hb_glyph_info_t *info) return (info->unicode_props() & UPROPS_MASK_IGNORABLE) && !_hb_glyph_info_substituted (info); } +static inline void +_hb_glyph_info_clear_default_ignorable (hb_glyph_info_t *info) +{ + info->unicode_props() &= ~ UPROPS_MASK_IGNORABLE; +} static inline bool -_hb_glyph_info_is_default_ignorable_and_not_hidden (const hb_glyph_info_t *info) +_hb_glyph_info_is_hidden (const hb_glyph_info_t *info) { - return ((info->unicode_props() & (UPROPS_MASK_IGNORABLE|UPROPS_MASK_HIDDEN)) - == UPROPS_MASK_IGNORABLE) && - !_hb_glyph_info_substituted (info); + return info->unicode_props() & UPROPS_MASK_HIDDEN; } static inline void _hb_glyph_info_unhide (hb_glyph_info_t *info) diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh index d44233610a6..67d1b6aa713 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table-v2subset.hh @@ -84,9 +84,9 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const old_gid_new_index_map.alloc (num_glyphs); glyph_name_to_new_index.alloc (num_glyphs); - for (hb_codepoint_t new_gid = 0; new_gid < num_glyphs; new_gid++) + for (auto _ : c->plan->new_to_old_gid_list) { - hb_codepoint_t old_gid = reverse_glyph_map.get (new_gid); + hb_codepoint_t old_gid = _.second; unsigned old_index = glyphNameIndex[old_gid]; unsigned new_index; @@ -125,13 +125,22 @@ HB_INTERNAL bool postV2Tail::subset (hb_subset_context_t *c) const old_gid_new_index_map.set (old_gid, new_index); } + if (old_gid_new_index_map.in_error()) + return_trace (false); + auto index_iter = + hb_range (num_glyphs) - | hb_map (reverse_glyph_map) - | hb_map_retains_sorting ([&](hb_codepoint_t old_gid) + | hb_map_retains_sorting ([&](hb_codepoint_t new_gid) { - unsigned new_index = old_gid_new_index_map.get (old_gid); - return hb_pair_t<unsigned, unsigned> (old_gid, new_index); + hb_codepoint_t *old_gid; + /* use 0 for retain-gid holes, which refers to the name .notdef, + * as the glyphNameIndex entry for that glyph ID."*/ + unsigned new_index = 0; + if (reverse_glyph_map.has (new_gid, &old_gid)) { + new_index = old_gid_new_index_map.get (*old_gid); + return hb_pair_t<unsigned, unsigned> (*old_gid, new_index); + } + return hb_pair_t<unsigned, unsigned> (new_gid, new_index); }) ; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh index 41918790371..18ecea18256 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-post-table.hh @@ -301,7 +301,7 @@ struct post return_trace (c->check_struct (this) && hb_barrier () && (version.to_int () == 0x00010000 || - (version.to_int () == 0x00020000 && v2X.sanitize (c)) || + (version.to_int () == 0x00020000 && hb_barrier () && v2X.sanitize (c)) || version.to_int () == 0x00030000)); } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc index 7948899ab8b..b86649d7782 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.cc @@ -153,7 +153,7 @@ decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shor hb_codepoint_t u = buffer->cur().codepoint; hb_codepoint_t glyph = 0; - if (shortest && c->font->get_nominal_glyph (u, &glyph, c->not_found)) + if (shortest && c->font->get_nominal_glyph (u, &glyph, buffer->not_found)) { next_char (buffer, glyph); return; @@ -165,7 +165,7 @@ decompose_current_character (const hb_ot_shape_normalize_context_t *c, bool shor return; } - if (!shortest && c->font->get_nominal_glyph (u, &glyph, c->not_found)) + if (!shortest && c->font->get_nominal_glyph (u, &glyph, buffer->not_found)) { next_char (buffer, glyph); return; @@ -220,6 +220,13 @@ handle_variation_selector_cluster (const hb_ot_shape_normalize_context_t *c, /* Just pass on the two characters separately, let GSUB do its magic. */ set_glyph (buffer->cur(), font); (void) buffer->next_glyph (); + + buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK; + _hb_glyph_info_set_general_category (&buffer->cur(), + _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR); + if (buffer->not_found_variation_selector != HB_CODEPOINT_INVALID) + _hb_glyph_info_clear_default_ignorable (&buffer->cur()); + set_glyph (buffer->cur(), font); (void) buffer->next_glyph (); } @@ -295,7 +302,8 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan, buffer, font, buffer->unicode, - buffer->not_found, + plan->shaper->decompose ? plan->shaper->decompose : hb_ot_shape_normalize_context_t::decompose_unicode, + plan->shaper->compose ? plan->shaper->compose : hb_ot_shape_normalize_context_t::compose_unicode }; c.override_decompose_and_compose (plan->shaper->decompose, plan->shaper->compose); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh index 0e8a54b60e3..f12cb35c0fe 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape-normalize.hh @@ -89,7 +89,6 @@ struct hb_ot_shape_normalize_context_t hb_buffer_t *buffer; hb_font_t *font; hb_unicode_funcs_t *unicode; - const hb_codepoint_t not_found; bool (*decompose) (const hb_ot_shape_normalize_context_t *c, hb_codepoint_t ab, hb_codepoint_t *a, diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc index bbf07c1f3a1..1aca39101ef 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shape.cc @@ -838,6 +838,29 @@ hb_ot_zero_width_default_ignorables (const hb_buffer_t *buffer) } static void +hb_ot_deal_with_variation_selectors (hb_buffer_t *buffer) +{ + if (!(buffer->scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_VARIATION_SELECTOR_FALLBACK) || + buffer->not_found_variation_selector == HB_CODEPOINT_INVALID) + return; + + unsigned int count = buffer->len; + hb_glyph_info_t *info = buffer->info; + hb_glyph_position_t *pos = buffer->pos; + + for (unsigned int i = 0; i < count; i++) + { + if (_hb_glyph_info_get_general_category (&info[i]) == + _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR) + { + info[i].codepoint = buffer->not_found_variation_selector; + pos[i].x_advance = pos[i].y_advance = pos[i].x_offset = pos[i].y_offset = 0; + _hb_glyph_info_set_general_category (&info[i], HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK); + } + } +} + +static void hb_ot_hide_default_ignorables (hb_buffer_t *buffer, hb_font_t *font) { @@ -966,6 +989,7 @@ hb_ot_substitute_post (const hb_ot_shape_context_t *c) hb_aat_layout_remove_deleted_glyphs (c->buffer); #endif + hb_ot_deal_with_variation_selectors (c->buffer); hb_ot_hide_default_ignorables (c->buffer, c->font); if (c->plan->shaper->postprocess_glyphs && diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh index a5a7b84af45..e38686e3ebb 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-joining-list.hh @@ -6,10 +6,10 @@ * * on files with these headers: * - * # ArabicShaping-15.1.0.txt - * # Date: 2023-01-05 - * # Scripts-15.1.0.txt - * # Date: 2023-07-28, 16:01:07 GMT + * # ArabicShaping-16.0.0.txt + * # Date: 2024-07-30 + * # Scripts-16.0.0.txt + * # Date: 2024-04-30, 21:48:40 GMT */ #ifndef HB_OT_SHAPER_ARABIC_JOINING_LIST_HH diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh index 336a1391e97..d9917a15874 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic-table.hh @@ -6,10 +6,10 @@ * * on files with these headers: * - * # ArabicShaping-15.1.0.txt - * # Date: 2023-01-05 - * # Blocks-15.1.0.txt - * # Date: 2023-07-28, 15:47:20 GMT + * # ArabicShaping-16.0.0.txt + * # Date: 2024-07-30 + * # Blocks-16.0.0.txt + * # Date: 2024-02-02 * UnicodeData.txt does not have a header. */ @@ -136,7 +136,13 @@ static const uint8_t joining_table[] = /* 10D00 */ L,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, /* 10D20 */ D,D,R,D, -#define joining_offset_0x10f30u 1182 +#define joining_offset_0x10ec2u 1182 + + /* Arabic Extended-C */ + + /* 10EC0 */ R,D,D, + +#define joining_offset_0x10f30u 1185 /* Sogdian */ @@ -155,14 +161,14 @@ static const uint8_t joining_table[] = /* 10FA0 */ D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D, /* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L, -#define joining_offset_0x110bdu 1338 +#define joining_offset_0x110bdu 1341 /* Kaithi */ /* 110A0 */ U,X,X, /* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U, -#define joining_offset_0x1e900u 1355 +#define joining_offset_0x1e900u 1358 /* Adlam */ @@ -170,7 +176,7 @@ static const uint8_t joining_table[] = /* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, /* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T, -}; /* Table items: 1431; occupancy: 57% */ +}; /* Table items: 1434; occupancy: 57% */ static unsigned int @@ -198,6 +204,7 @@ joining_type (hb_codepoint_t u) if (hb_in_range<hb_codepoint_t> (u, 0x10AC0u, 0x10AEFu)) return joining_table[u - 0x10AC0u + joining_offset_0x10ac0u]; if (hb_in_range<hb_codepoint_t> (u, 0x10B80u, 0x10BAFu)) return joining_table[u - 0x10B80u + joining_offset_0x10b80u]; if (hb_in_range<hb_codepoint_t> (u, 0x10D00u, 0x10D23u)) return joining_table[u - 0x10D00u + joining_offset_0x10d00u]; + if (hb_in_range<hb_codepoint_t> (u, 0x10EC2u, 0x10EC4u)) return joining_table[u - 0x10EC2u + joining_offset_0x10ec2u]; if (hb_in_range<hb_codepoint_t> (u, 0x10F30u, 0x10FCBu)) return joining_table[u - 0x10F30u + joining_offset_0x10f30u]; break; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc index d70746ed2bb..4e3b512b482 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-arabic.cc @@ -233,10 +233,7 @@ collect_features_arabic (hb_ot_shape_planner_t *plan) map->enable_feature (HB_TAG('c','a','l','t'), F_MANUAL_ZWJ); /* https://github.com/harfbuzz/harfbuzz/issues/1573 */ if (!map->has_feature (HB_TAG('r','c','l','t'))) - { map->add_gsub_pause (nullptr); - map->enable_feature (HB_TAG('r','c','l','t'), F_MANUAL_ZWJ); - } map->enable_feature (HB_TAG('l','i','g','a'), F_MANUAL_ZWJ); map->enable_feature (HB_TAG('c','l','i','g'), F_MANUAL_ZWJ); diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc index d9899a633c1..adea32efdae 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-indic-table.cc @@ -6,12 +6,12 @@ * * on files with these headers: * - * # IndicSyllabicCategory-15.1.0.txt - * # Date: 2023-01-05 - * # IndicPositionalCategory-15.1.0.txt - * # Date: 2023-01-05 - * # Blocks-15.1.0.txt - * # Date: 2023-07-28, 15:47:20 GMT + * # IndicSyllabicCategory-16.0.0.txt + * # Date: 2024-04-30, 21:48:21 GMT + * # IndicPositionalCategory-16.0.0.txt + * # Date: 2024-04-30, 21:48:21 GMT + * # Blocks-16.0.0.txt + * # Date: 2024-02-02 */ #include "hb.hh" @@ -89,7 +89,7 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _OT_MW OT_MW /* 2 chars; MW */ #define _OT_MY OT_MY /* 3 chars; MY */ #define _OT_N OT_N /* 17 chars; N */ -#define _OT_GB OT_PLACEHOLDER /* 165 chars; PLACEHOLDER */ +#define _OT_GB OT_PLACEHOLDER /* 185 chars; PLACEHOLDER */ #define _OT_PT OT_PT /* 8 chars; PT */ #define _OT_R OT_Ra /* 14 chars; Ra */ #define _OT_Rf OT_Repha /* 1 chars; Repha */ @@ -112,7 +112,7 @@ static_assert (OT_VPst == M_Cat(VPst), ""); #define _POS_A POS_AFTER_MAIN /* 3 chars; AFTER_MAIN */ #define _POS_AP POS_AFTER_POST /* 50 chars; AFTER_POST */ #define _POS_AS POS_AFTER_SUB /* 51 chars; AFTER_SUB */ -#define _POS_C POS_BASE_C /* 833 chars; BASE_C */ +#define _POS_C POS_BASE_C /* 853 chars; BASE_C */ #define _POS_BS POS_BEFORE_SUB /* 25 chars; BEFORE_SUB */ #define _POS_B POS_BELOW_C /* 13 chars; BELOW_C */ #define _POS_X POS_END /* 71 chars; END */ @@ -458,7 +458,16 @@ static const uint16_t indic_table[] = { /* 11338 */ _(X,X), _(X,X), _(X,X), _(N,X), _(N,X), _(X,X), _(X,X), _(X,X), -}; /* Table items: 1728; occupancy: 71% */ +#define indic_offset_0x116d0u 1728 + + + /* Myanmar Extended-C */ + + /* 116D0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), + /* 116D8 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(GB,C), + /* 116E0 */ _(GB,C), _(GB,C), _(GB,C), _(GB,C), _(X,X), _(X,X), _(X,X), _(X,X), + +}; /* Table items: 1752; occupancy: 71% */ uint16_t hb_indic_get_categories (hb_codepoint_t u) @@ -498,6 +507,7 @@ hb_indic_get_categories (hb_codepoint_t u) case 0x11u: if (hb_in_range<hb_codepoint_t> (u, 0x11300u, 0x11307u)) return indic_table[u - 0x11300u + indic_offset_0x11300u]; if (hb_in_range<hb_codepoint_t> (u, 0x11338u, 0x1133Fu)) return indic_table[u - 0x11338u + indic_offset_0x11338u]; + if (hb_in_range<hb_codepoint_t> (u, 0x116D0u, 0x116E7u)) return indic_table[u - 0x116D0u + indic_offset_0x116d0u]; break; default: diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh index d581b65c07b..e8218834e76 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-use-table.hh @@ -6,18 +6,18 @@ * * on files with these headers: * - * # IndicSyllabicCategory-15.1.0.txt - * # Date: 2023-01-05 - * # IndicPositionalCategory-15.1.0.txt - * # Date: 2023-01-05 - * # ArabicShaping-15.1.0.txt - * # Date: 2023-01-05 - * # DerivedCoreProperties-15.1.0.txt - * # Date: 2023-08-07, 15:21:24 GMT - * # Blocks-15.1.0.txt - * # Date: 2023-07-28, 15:47:20 GMT - * # Scripts-15.1.0.txt - * # Date: 2023-07-28, 16:01:07 GMT + * # IndicSyllabicCategory-16.0.0.txt + * # Date: 2024-04-30, 21:48:21 GMT + * # IndicPositionalCategory-16.0.0.txt + * # Date: 2024-04-30, 21:48:21 GMT + * # ArabicShaping-16.0.0.txt + * # Date: 2024-07-30 + * # DerivedCoreProperties-16.0.0.txt + * # Date: 2024-05-31, 18:09:32 GMT + * # Blocks-16.0.0.txt + * # Date: 2024-02-02 + * # Scripts-16.0.0.txt + * # Date: 2024-04-30, 21:48:40 GMT * # Override values For Indic_Syllabic_Category * # Not derivable * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17 @@ -27,6 +27,7 @@ * # Updated for Unicode 14.0 by Andrew Glass 2021-09-25 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14 + * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11 * # Override values For Indic_Positional_Category * # Not derivable * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17 @@ -38,6 +39,7 @@ * # Updated for Unicode 14.0 by Andrew Glass 2021-09-28 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14 + * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11 * UnicodeData.txt does not have a header. */ @@ -99,16 +101,16 @@ #ifndef HB_OPTIMIZE_SIZE static const uint8_t -hb_use_u8[3187] = +hb_use_u8[3343] = { - 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 51, 57, 58, 179, 195, 61, + 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 14, 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2, + 15, 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 4, 2, 2, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 2, 2, 17, 18, 19, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 2, 33, 2, 2, 2, @@ -121,24 +123,26 @@ hb_use_u8[3187] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 47, 48, 2, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 51, 2, 2, 2, - 2, 2, 2, 2, 2, 52, 53, 2, 54, 2, 2, 55, 2, 2, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 2, 66, 67, 2, 68, 69, 70, 71, - 2, 72, 2, 73, 74, 75, 76, 2, 2, 77, 78, 79, 80, 2, 81, 82, - 2, 83, 83, 83, 83, 83, 83, 83, 83, 84, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 52, 53, 2, 54, 2, 2, 55, 56, 2, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 2, 70, 71, 72, 73, + 2, 74, 2, 75, 76, 77, 78, 2, 2, 79, 80, 81, 82, 2, 83, 84, + 2, 85, 85, 85, 85, 85, 85, 85, 85, 86, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 87, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 89, 90, 2, 2, 2, 91, 2, 2, 2, 92, + 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 94, 94, 94, 95, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 85, 86, 2, 2, 2, 2, 2, 2, 2, 87, - 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 89, 89, 89, 90, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 96, 97, 2, 2, 2, 2, 2, + 2, 2, 2, 98, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 91, 92, 2, 2, 2, 2, 2, - 2, 2, 2, 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 94, 2, 2, 95, 2, 2, 2, 96, 2, 2, 2, 2, 2, - 2, 2, 2, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 98, 98, 99, 100, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 2, 2, 2, 99, 2, 2, 100, 2, 2, 2, 101, 2, 102, 2, 2, 2, + 2, 2, 2, 103, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 104, 104, 105, 106, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -167,7 +171,7 @@ hb_use_u8[3187] = 0, 0, 0, 27, 31, 2, 9, 0, 0, 10, 29, 30, 2, 2, 2, 9, 2, 2, 2, 30, 2, 2, 0, 17, 45, 0, 0, 35, 47, 0, 0, 0, 9, 50, 51, 0, 0, 0, 0, 0, 0, 11, 29, 2, 2, 2, 2, 9, - 2, 2, 2, 2, 2, 2, 52, 53, 23, 23, 19, 31, 48, 33, 48, 34, + 2, 2, 2, 2, 2, 2, 52, 53, 23, 19, 20, 31, 48, 33, 48, 34, 54, 0, 0, 0, 35, 0, 0, 0, 30, 12, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 9, 0, 2, 2, 2, 2, 30, 2, 2, 2, 2, 30, 0, 2, 2, 2, 9, 0, 55, 0, 35, 23, 22, 31, 31, 18, 48, 48, @@ -195,88 +199,95 @@ hb_use_u8[3187] = 0, 2, 2, 100, 101, 102, 103, 61, 63, 104, 16, 45, 22, 59, 21, 80, 48, 48, 76, 11, 11, 11, 105, 46, 40, 11, 106, 74, 2, 2, 2, 2, 2, 2, 2, 107, 22, 20, 20, 22, 48, 48, 22, 108, 2, 2, 2, 9, - 0, 0, 0, 0, 0, 0, 109, 110, 111, 111, 111, 0, 0, 0, 0, 0, - 0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 112, 61, + 0, 0, 0, 0, 0, 0, 109, 110, 110, 110, 110, 0, 0, 0, 0, 0, + 0, 106, 74, 2, 2, 2, 2, 2, 2, 60, 61, 59, 25, 22, 111, 61, 2, 2, 2, 2, 107, 22, 23, 45, 45, 102, 14, 0, 0, 0, 0, 0, - 0, 2, 2, 61, 18, 48, 23, 113, 102, 102, 102, 114, 115, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 116, 116, 116, 11, 116, - 116, 15, 116, 116, 116, 26, 0, 40, 0, 0, 0, 117, 51, 11, 5, 0, - 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 6, 119, - 120, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, - 121, 120, 120, 120, 120, 120, 120, 120, 120, 0, 0, 122, 0, 0, 0, 0, - 0, 0, 7, 122, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 123, 123, 0, 0, + 0, 2, 2, 61, 18, 48, 23, 112, 102, 102, 102, 113, 114, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 0, 30, 2, 11, 46, 115, 115, 115, 11, 115, + 115, 15, 115, 115, 115, 26, 0, 40, 0, 0, 0, 116, 51, 11, 5, 0, + 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 6, 118, + 119, 42, 42, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 119, + 120, 119, 119, 119, 119, 119, 119, 119, 119, 0, 0, 121, 0, 0, 0, 0, + 0, 0, 7, 121, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 124, 0, 123, 123, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2, + 123, 0, 122, 122, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31, 0, 2, 2, 0, 0, 0, 0, 0, - 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 125, 23, 23, 23, 23, - 23, 23, 23, 126, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 127, 116, - 0, 2, 2, 2, 128, 20, 59, 20, 113, 102, 129, 0, 0, 0, 0, 0, - 0, 11, 130, 2, 2, 2, 2, 2, 2, 2, 131, 23, 22, 20, 48, 132, - 133, 134, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2, - 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 135, 136, 137, 0, 0, 0, - 0, 2, 138, 2, 2, 2, 2, 139, 0, 30, 2, 42, 5, 0, 79, 15, - 2, 53, 22, 140, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 141, 21, 25, 0, 0, 142, 143, 0, 0, 0, - 0, 2, 65, 45, 23, 80, 47, 144, 0, 81, 81, 81, 81, 81, 81, 81, - 81, 0, 0, 0, 0, 0, 0, 0, 6, 120, 120, 120, 120, 121, 0, 0, + 0, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 124, 23, 23, 23, 23, + 23, 23, 23, 125, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 2, 0, 0, 0, 0, 0, 52, 2, 2, 2, 22, 22, 126, 115, + 0, 2, 2, 2, 127, 20, 59, 20, 112, 102, 128, 0, 0, 0, 0, 0, + 0, 11, 129, 2, 2, 2, 2, 2, 2, 2, 130, 23, 22, 20, 48, 131, + 132, 133, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2, + 2, 2, 2, 2, 2, 10, 22, 59, 99, 76, 134, 135, 136, 0, 0, 0, + 0, 2, 137, 2, 2, 2, 2, 138, 0, 30, 2, 42, 5, 0, 79, 15, + 2, 53, 22, 139, 52, 53, 2, 2, 105, 10, 9, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 140, 21, 25, 0, 0, 141, 142, 0, 0, 0, + 0, 2, 65, 45, 23, 80, 47, 143, 0, 81, 81, 81, 81, 81, 81, 81, + 81, 0, 0, 0, 0, 0, 0, 0, 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 2, 30, 2, 2, 2, - 2, 2, 30, 2, 2, 2, 30, 9, 0, 128, 20, 27, 31, 0, 0, 145, - 146, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0, - 147, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 2, 2, 30, 2, 2, 2, 30, 9, 0, 127, 20, 27, 31, 0, 0, 144, + 145, 2, 2, 30, 2, 30, 2, 2, 2, 2, 2, 2, 0, 14, 37, 0, + 146, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, 9, 2, 2, 11, 41, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 116, 116, 116, 116, - 116, 148, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0, + 0, 2, 2, 2, 0, 27, 22, 22, 30, 2, 2, 2, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 27, 38, 0, 2, 2, 2, 115, 115, 115, 115, + 115, 147, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2, 2, 30, 2, 9, 0, 30, 2, 0, - 0, 149, 150, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20, - 20, 20, 22, 22, 134, 0, 0, 0, 0, 0, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0, - 153, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0, + 0, 148, 149, 150, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 22, 20, + 20, 20, 22, 22, 133, 0, 0, 0, 0, 0, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 2, 2, 2, 2, 2, 53, 52, 53, 0, 0, 0, 0, + 152, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 11, 49, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 128, 20, 22, 154, 22, 21, 155, 156, 2, 2, 2, 2, - 2, 0, 0, 65, 157, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, - 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 158, 0, 0, 56, 159, 31, - 160, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, - 19, 22, 22, 161, 44, 0, 0, 0, 49, 128, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 127, 20, 22, 153, 22, 21, 154, 155, 2, 2, 2, 2, + 2, 0, 0, 65, 156, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, + 0, 2, 65, 25, 20, 20, 20, 22, 22, 108, 157, 0, 0, 56, 158, 31, + 159, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 23, + 19, 22, 22, 160, 44, 0, 0, 0, 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, - 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 162, 31, 0, + 30, 2, 2, 2, 2, 2, 2, 2, 10, 18, 19, 21, 22, 161, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46, 0, 11, 11, 46, 0, 0, 0, 0, - 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 126, 15, 17, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 0, 163, 164, 0, 0, 0, 0, 0, 0, - 0, 18, 19, 20, 20, 66, 99, 25, 160, 11, 165, 9, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11, - 166, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20, - 0, 23, 19, 20, 20, 21, 16, 82, 166, 38, 0, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 10, 167, 25, 20, 22, 22, 165, 9, 0, 0, - 0, 2, 2, 2, 2, 2, 9, 43, 136, 23, 22, 20, 76, 21, 22, 0, - 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18, - 19, 20, 21, 22, 105, 166, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2, - 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 168, - 169, 170, 171, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, - 2, 65, 25, 20, 20, 0, 22, 23, 29, 108, 0, 33, 0, 0, 0, 0, - 0, 52, 20, 22, 22, 22, 140, 2, 2, 2, 172, 173, 11, 15, 174, 72, - 175, 0, 0, 1, 147, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2, - 2, 2, 2, 158, 158, 158, 176, 176, 176, 176, 176, 176, 15, 177, 0, 30, - 0, 22, 20, 20, 31, 22, 22, 11, 166, 0, 61, 61, 61, 61, 61, 61, - 61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2, - 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 159, 178, 174, 0, 0, 0, - 0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23, - 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 179, 66, 47, 0, 0, 0, - 0, 11, 180, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0, - 48, 16, 143, 0, 0, 0, 0, 0, 0, 181, 181, 181, 181, 181, 181, 181, - 181, 182, 182, 182, 183, 184, 182, 181, 181, 185, 181, 181, 186, 187, 187, 187, - 187, 187, 187, 187, 0, 0, 0, 0, 0, 11, 11, 11, 46, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 9, 0, 58, 188, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, - 40, 116, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 58, - 37, 0, 6, 120, 120, 120, 121, 0, 0, 11, 11, 11, 49, 2, 2, 2, - 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, - 46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22, - 22, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O, + 0, 2, 2, 2, 2, 2, 30, 0, 9, 2, 2, 2, 30, 45, 59, 20, + 20, 31, 33, 32, 32, 25, 162, 29, 163, 164, 37, 0, 0, 0, 0, 0, + 0, 12, 26, 0, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20, + 22, 23, 125, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, + 165, 166, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25, + 159, 11, 167, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 65, 25, 20, 20, 0, 48, 48, 11, 168, 37, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82, + 168, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 169, + 25, 20, 22, 22, 167, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43, + 135, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 168, 37, 0, + 0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2, + 2, 23, 23, 18, 32, 33, 12, 170, 164, 171, 172, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23, + 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 139, 2, + 2, 2, 173, 174, 11, 15, 175, 61, 176, 0, 0, 1, 146, 0, 0, 0, + 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 157, 157, 157, 177, 177, + 177, 177, 177, 177, 15, 178, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11, + 168, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, + 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22, + 27, 11, 158, 179, 180, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, + 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0, + 0, 2, 181, 66, 47, 0, 0, 0, 0, 11, 182, 2, 2, 2, 2, 2, + 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 142, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 155, 0, 0, 183, 183, 183, 183, 183, 183, 183, + 183, 184, 184, 184, 185, 186, 184, 183, 183, 187, 183, 183, 188, 189, 189, 189, + 189, 189, 189, 189, 0, 0, 0, 0, 0, 183, 183, 183, 183, 183, 190, 0, + 0, 2, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, 22, 22, 191, 192, + 193, 11, 11, 11, 46, 0, 0, 0, 0, 29, 74, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 65, 47, 0, 2, 2, 2, 2, 2, 9, 0, + 58, 194, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 0, 0, 0, 40, 115, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 119, 119, 119, 120, 0, + 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11, + 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, + 20, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O, SB, O, SE, GB, O, O, WJ,FMPst,FMPst, O, CGJ, B, O, B,VMAbv,VMAbv, VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst, H, VPre, VPst,VMBlw, O, O, @@ -290,20 +301,20 @@ hb_use_u8[3187] = FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS,FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB, CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, - VPst, H, B, O,SMAbv,SMBlw,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv, - CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, - SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B, - CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, - FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, - IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, - IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,FMAbv, - B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, IS, R, MPst, R, MPst, - CMBlw, B,FMBlw, VBlw,VMAbv, R, MBlw, MBlw, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, GB, - VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, G, G, HM, HM, - HM, O, VBlw, + VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw, + VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, + H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, + MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, + B, B, VPre, O,VMPst, IS, O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, + B,VMPst,VMAbv,VMPst, CS, CS, B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, + O, VPst, B, R, R,CMBlw, VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv, + CMBlw, IS, R,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, + R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, + IS, R, MBlw, GB, VAbv, R,VMPst, G, G, J, J, J, SB, SE, J, HR, + G, G, HM, HM, HM, G, O, MPre, MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, }; static const uint16_t -hb_use_u16[808] = +hb_use_u16[856] = { 0, 0, 1, 2, 0, 3, 0, 3, 0, 0, 4, 5, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, @@ -332,28 +343,31 @@ hb_use_u16[808] = 0, 0, 0, 0, 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0,166,166,167, 34,168, 0, 0, 0, 0, 169,170, 10,171, 95, 0, 0, 0, 0, 0, 0, 0, 70, 10,172, 0, - 10,173,174, 0, 0, 0, 0, 0, 10, 10,175, 2, 0, 0, 0, 0, - 10, 10,176,173, 0, 0, 0, 0, 0, 0, 0, 10,177,178, 0, 10, - 179, 0, 0,180,181, 0, 0, 0,182, 10, 10,183,184,185,186,187, - 188, 10, 10,189,190, 0, 0, 0,191, 10,192,193,194, 10, 10,195, - 188, 10, 10,196,197,106,198,103, 10, 34,199,200,201, 0, 0, 0, - 202,203, 95, 10, 10,204,205, 2,206, 21, 22,207,208,209,210,211, - 10, 10, 10,212,213,214,215, 0,198, 10, 10,216,217, 2, 0, 0, - 10, 10,218,219,220,221, 0, 0, 10, 10, 10,222,223, 2, 0, 0, - 10, 10,224,225, 2, 0, 0, 0, 10,226,227,104,228, 0, 0, 0, - 10, 10,229,230, 0, 0, 0, 0,231,232, 10,233,234, 2, 0, 0, - 0, 0,235, 10, 10,236,237, 0,238, 10, 10,239,240,241, 10, 10, - 242,243, 0, 0, 0, 0, 0, 0, 22, 10,218,244, 8, 10, 71, 19, - 10,245, 74,246, 0, 0, 0, 0,247, 10, 10,248,249, 2,250, 10, - 251,252, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,253, - 254, 49, 10,255,256, 2, 0, 0,257,257,257,257,257,257,257,257, - 257,257,257,258,259,260, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 10, 10, 10,261, 0, 0, 0, 0, 10, 10, 10, 10,262,263,264,264, - 265,266, 0, 0, 0, 0,267, 0, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10,268, 0, 0, 10, 10, 10, 10, 10, 10,106, 71, - 95,269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,270, - 10, 10, 71,271,272, 0, 0, 0, 0, 10,273, 0, 10, 10,274, 2, - 0, 0, 0, 0, 0, 10,275, 2, 10, 10, 10, 10,276, 2, 0, 0, + 10,173,174, 0, 0, 0, 0, 0, 10, 10,175, 2, 9, 10,176, 10, + 177, 0, 0, 0, 0, 0, 0, 0, 10, 10,178,173, 0, 0, 0, 0, + 0, 0, 0, 10,179,180, 0, 10,181, 0, 0,182,183, 0, 0, 0, + 184, 10, 10,185,186,187,188,189,190, 10, 10,191,192, 0, 0, 0, + 193, 10,194,195,196, 10, 10,197,190, 10, 10,198,199,106,200,103, + 10, 34,201,202,203, 0, 0, 0,204,205, 95, 10, 10,206,207, 2, + 208, 21, 22,209,210,211,212,213,214, 10, 10,215,216,217,218, 0, + 10, 10, 10,219,220,221,222, 0,200, 10, 10,223,224, 2, 0, 0, + 10, 10,225,226,227,228, 0, 0, 10, 10, 10,229,230, 2, 0, 0, + 10, 10,231,232, 2, 10,141, 0, 10,233,234,104,235, 0, 0, 0, + 10, 10,236,237, 0, 0, 0, 0,238,239, 10,240,241, 2, 0, 0, + 0, 0,242, 10, 10,243,244, 0,245, 10, 10,246,247,248, 10, 10, + 249,250, 0, 0, 0, 0, 0, 0, 22, 10,225,251, 8, 10, 71, 19, + 10,252, 74,253, 0, 0, 0, 0,254, 10, 10,255,256, 2,257, 10, + 258,259, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,260, + 261, 49, 10,262,263,264, 0, 0,265,265,265,265,265,265,265,265, + 265,265,265,266,267,268,265,265,265,265,265,265,265,265,265,269, + 10,270,271, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 10, 10, 10,272, 0, 0, 0, 0, 0, 0, 0, 0,273, 10,274, 2, + 10, 10, 10, 10,275,276,277,277,278,279, 0, 0, 0, 0,280, 0, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,177, 0,281, + 10, 10, 10, 10, 10, 10,106, 71, 95,282, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,283, 10, 10, 71,284,285, 0, 0, 0, + 0, 10,286, 0, 10, 10,287, 2, 0, 0, 0, 0, 0, 10,288, 2, + 0, 0, 0, 0, 0, 10,289,106, 10, 10, 10, 10,290, 2, 0, 0, 130,130,130,130,130,130,130,130,163,163,163,163,163,163,163,163, 163,163,163,163,163,163,163,130, }; @@ -366,23 +380,23 @@ hb_use_b4 (const uint8_t* a, unsigned i) static inline uint_fast8_t hb_use_get_category (unsigned u) { - return u<921600u?hb_use_u8[2809+(((hb_use_u8[593+(((hb_use_u16[((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>3>>5))<<5)+((u>>1>>3>>3)&31u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O; + return u<921600u?hb_use_u8[2953+(((hb_use_u8[625+(((hb_use_u16[((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>3>>5))<<5)+((u>>1>>3>>3)&31u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O; } #else static const uint8_t -hb_use_u8[3483] = +hb_use_u8[3655] = { - 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 51, 57, 58, 179, 195, 61, + 16, 50, 51, 51, 51, 52, 51, 83, 118, 131, 57, 58, 59, 195, 211, 62, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 14, 0, 1, 1, 2, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1, + 15, 0, 1, 1, 2, 1, 1, 3, 4, 5, 6, 7, 8, 9, 10, 1, 11, 12, 1, 1, 1, 1, 1, 1, 13, 14, 15, 16, 17, 18, 19, 1, 1, 20, 1, 1, 1, 1, 21, 1, 22, 1, 1, 1, 1, 1, 23, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -390,14 +404,15 @@ hb_use_u8[3483] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 29, 30, 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 32, 33, 1, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 1, 48, 49, 50, - 51, 52, 52, 52, 52, 53, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 54, 55, 1, 1, 1, - 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 57, 58, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, - 1, 1, 60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 61, 62, 1, 63, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, - 1, 65, 66, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 0, 1, 2, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, + 51, 52, 52, 52, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 56, 57, 1, 58, 1, + 59, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 60, 61, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 62, 1, 1, + 1, 1, 63, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 64, 65, 1, 66, 67, 1, 1, 1, 68, 1, 1, 1, 1, 1, + 1, 69, 70, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 0, 1, 2, 2, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 9, 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, @@ -414,23 +429,25 @@ hb_use_u8[3483] = 122, 0, 0, 0, 0, 0, 0, 56, 123, 124, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 127, 128, 129, 0, 0, 130, 131, 132, 0, 0, 0, 51, 133, 0, 0, 0, 0, 134, 135, 0, - 0, 56, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 137, 0, - 0, 0, 101, 138, 101, 139, 140, 141, 0, 142, 143, 144, 145, 146, 147, 148, - 0, 149, 150, 151, 152, 146, 153, 154, 155, 156, 157, 158, 0, 159, 160, 161, - 162, 163, 164, 165, 166, 0, 0, 0, 0, 56, 167, 168, 169, 170, 171, 172, - 0, 0, 0, 0, 0, 56, 173, 174, 0, 56, 175, 176, 0, 56, 177, 67, - 0, 178, 179, 180, 0, 0, 0, 0, 0, 56, 181, 0, 0, 0, 0, 0, - 0, 182, 183, 184, 0, 0, 185, 186, 187, 188, 189, 190, 56, 191, 0, 0, - 0, 192, 193, 194, 195, 196, 197, 0, 0, 198, 199, 200, 201, 202, 67, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 205, 206, 0, 0, 0, 0, - 0, 207, 207, 207, 207, 207, 207, 207, 207, 207, 208, 209, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 67, 0, 56, 210, 0, 0, 0, 0, 0, - 0, 56, 56, 211, 212, 213, 0, 0, 214, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 215, 0, 56, 56, 56, 216, 217, 0, 0, - 0, 0, 0, 0, 218, 0, 0, 0, 0, 56, 219, 220, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 101, 221, 56, 222, 0, 0, 0, 0, 0, 0, 101, - 223, 56, 56, 224, 0, 0, 0, 0, 0, 225, 225, 225, 225, 225, 225, 225, - 225, 226, 226, 226, 226, 226, 226, 226, 227, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 136, 7, 137, 138, 0, 0, 0, 0, 0, 0, 0, 56, 139, 0, + 0, 0, 101, 140, 101, 141, 142, 143, 0, 144, 145, 146, 147, 148, 149, 150, + 0, 151, 152, 153, 154, 148, 155, 156, 157, 158, 159, 160, 0, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 56, 173, 174, 175, 176, 177, 178, + 0, 0, 0, 0, 0, 56, 179, 180, 0, 56, 181, 182, 0, 56, 183, 184, + 185, 186, 187, 188, 0, 0, 0, 0, 0, 56, 189, 0, 0, 0, 0, 0, + 0, 190, 191, 192, 0, 0, 193, 194, 195, 196, 197, 198, 56, 199, 0, 0, + 0, 200, 201, 202, 203, 204, 205, 0, 0, 206, 207, 208, 209, 210, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 212, 213, 214, 0, 0, 0, 0, + 0, 215, 215, 215, 215, 215, 215, 215, 215, 215, 216, 217, 215, 215, 215, 215, + 215, 215, 215, 215, 215, 215, 215, 215, 218, 219, 220, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 67, 0, 56, 221, 0, 0, 0, 0, 0, + 0, 0, 0, 222, 223, 0, 0, 0, 0, 56, 56, 224, 225, 226, 0, 0, + 227, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 228, + 229, 56, 56, 56, 230, 231, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, + 0, 56, 233, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 235, 56, + 236, 0, 0, 0, 0, 0, 0, 101, 237, 0, 0, 0, 0, 0, 0, 101, + 238, 56, 56, 239, 0, 0, 0, 0, 0, 240, 240, 240, 240, 240, 240, 240, + 240, 241, 241, 241, 241, 241, 241, 241, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 5, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, @@ -460,7 +477,7 @@ hb_use_u8[3483] = 0, 10, 29, 30, 2, 2, 2, 9, 2, 2, 2, 30, 2, 2, 0, 17, 45, 0, 0, 35, 47, 0, 0, 0, 9, 50, 51, 0, 0, 0, 0, 0, 0, 11, 29, 2, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 52, 53, - 23, 23, 19, 31, 48, 33, 48, 34, 54, 0, 0, 0, 35, 0, 0, 0, + 23, 19, 20, 31, 48, 33, 48, 34, 54, 0, 0, 0, 35, 0, 0, 0, 30, 12, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 9, 0, 2, 2, 2, 2, 30, 2, 2, 2, 2, 30, 0, 2, 2, 2, 9, 0, 55, 0, 35, 23, 22, 31, 31, 18, 48, 48, 25, 0, 23, 0, 0, 0, 0, 0, @@ -488,87 +505,94 @@ hb_use_u8[3483] = 63, 104, 16, 45, 22, 59, 21, 80, 48, 48, 76, 11, 11, 11, 105, 46, 40, 11, 106, 74, 2, 2, 2, 2, 2, 2, 2, 107, 22, 20, 20, 22, 48, 48, 22, 108, 2, 2, 2, 9, 0, 0, 0, 0, 0, 0, 109, 110, - 111, 111, 111, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2, - 2, 60, 61, 59, 25, 22, 112, 61, 2, 2, 2, 2, 107, 22, 23, 45, - 45, 102, 14, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 113, - 102, 102, 102, 114, 115, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30, - 2, 11, 46, 116, 116, 116, 11, 116, 116, 15, 116, 116, 116, 26, 0, 40, - 0, 0, 0, 117, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 118, 0, - 0, 0, 0, 0, 0, 0, 6, 119, 120, 42, 42, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 120, 120, 121, 120, 120, 120, 120, 120, 120, 120, - 120, 0, 0, 122, 0, 0, 0, 0, 0, 0, 7, 122, 0, 0, 0, 0, + 110, 110, 110, 0, 0, 0, 0, 0, 0, 106, 74, 2, 2, 2, 2, 2, + 2, 60, 61, 59, 25, 22, 111, 61, 2, 2, 2, 2, 107, 22, 23, 45, + 45, 102, 14, 0, 0, 0, 0, 0, 0, 2, 2, 61, 18, 48, 23, 112, + 102, 102, 102, 113, 114, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 30, + 2, 11, 46, 115, 115, 115, 11, 115, 115, 15, 115, 115, 115, 26, 0, 40, + 0, 0, 0, 116, 51, 11, 5, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 0, 0, 6, 118, 119, 42, 42, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 119, 119, 120, 119, 119, 119, 119, 119, 119, 119, + 119, 0, 0, 121, 0, 0, 0, 0, 0, 0, 7, 121, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 0, 123, 123, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 124, 0, 123, 123, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 122, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 123, 0, 122, 122, 0, 0, 0, 0, 0, 2, 53, 2, 108, 2, 10, 2, 2, 2, 65, 19, 16, 0, 0, 31, 0, 2, 2, 0, 0, 0, 0, 0, 0, 29, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 125, 23, 23, 23, 23, 23, 23, 23, 126, 0, 0, 0, 0, + 2, 2, 2, 124, 23, 23, 23, 23, 23, 23, 23, 125, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 0, 0, 0, 0, 0, - 52, 2, 2, 2, 22, 22, 127, 116, 0, 2, 2, 2, 128, 20, 59, 20, - 113, 102, 129, 0, 0, 0, 0, 0, 0, 11, 130, 2, 2, 2, 2, 2, - 2, 2, 131, 23, 22, 20, 48, 132, 133, 134, 0, 0, 0, 0, 0, 0, + 52, 2, 2, 2, 22, 22, 126, 115, 0, 2, 2, 2, 127, 20, 59, 20, + 112, 102, 128, 0, 0, 0, 0, 0, 0, 11, 129, 2, 2, 2, 2, 2, + 2, 2, 130, 23, 22, 20, 48, 131, 132, 133, 0, 0, 0, 0, 0, 0, 0, 2, 2, 52, 30, 2, 2, 2, 2, 2, 2, 2, 2, 10, 22, 59, - 99, 76, 135, 136, 137, 0, 0, 0, 0, 2, 138, 2, 2, 2, 2, 139, - 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 140, 52, 53, 2, 2, - 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 141, 21, - 25, 0, 0, 142, 143, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 144, + 99, 76, 134, 135, 136, 0, 0, 0, 0, 2, 137, 2, 2, 2, 2, 138, + 0, 30, 2, 42, 5, 0, 79, 15, 2, 53, 22, 139, 52, 53, 2, 2, + 105, 10, 9, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 140, 21, + 25, 0, 0, 141, 142, 0, 0, 0, 0, 2, 65, 45, 23, 80, 47, 143, 0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0, - 6, 120, 120, 120, 120, 121, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, + 6, 119, 119, 119, 119, 120, 0, 0, 0, 2, 2, 2, 2, 2, 9, 2, 2, 2, 9, 2, 30, 2, 2, 2, 2, 2, 30, 2, 2, 2, 30, 9, - 0, 128, 20, 27, 31, 0, 0, 145, 146, 2, 2, 30, 2, 30, 2, 2, - 2, 2, 2, 2, 0, 14, 37, 0, 147, 2, 2, 13, 37, 0, 30, 2, + 0, 127, 20, 27, 31, 0, 0, 144, 145, 2, 2, 30, 2, 30, 2, 2, + 2, 2, 2, 2, 0, 14, 37, 0, 146, 2, 2, 13, 37, 0, 30, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, - 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38, - 0, 2, 2, 2, 116, 116, 116, 116, 116, 148, 2, 9, 0, 0, 0, 0, + 9, 2, 2, 11, 41, 0, 0, 0, 0, 2, 2, 2, 0, 27, 22, 22, + 30, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 27, 38, + 0, 2, 2, 2, 115, 115, 115, 115, 115, 147, 2, 9, 0, 0, 0, 0, 0, 2, 14, 14, 0, 0, 0, 0, 0, 9, 2, 2, 9, 2, 2, 2, - 2, 30, 2, 9, 0, 30, 2, 0, 0, 149, 150, 151, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 134, 0, 0, 0, - 0, 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 2, 2, 2, 2, - 2, 53, 52, 53, 0, 0, 0, 0, 153, 11, 74, 2, 2, 2, 2, 2, + 2, 30, 2, 9, 0, 30, 2, 0, 0, 148, 149, 150, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 22, 22, 20, 20, 20, 22, 22, 133, 0, 0, 0, + 0, 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 2, 2, 2, 2, + 2, 53, 52, 53, 0, 0, 0, 0, 152, 11, 74, 2, 2, 2, 2, 2, 2, 18, 19, 21, 16, 24, 37, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 20, 22, 154, - 22, 21, 155, 156, 2, 2, 2, 2, 2, 0, 0, 65, 157, 0, 0, 0, + 0, 11, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 20, 22, 153, + 22, 21, 154, 155, 2, 2, 2, 2, 2, 0, 0, 65, 156, 0, 0, 0, 0, 2, 13, 0, 0, 0, 0, 0, 0, 2, 65, 25, 20, 20, 20, 22, - 22, 108, 158, 0, 0, 56, 159, 31, 160, 30, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 161, 44, 0, 0, 0, - 49, 128, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, + 22, 108, 157, 0, 0, 56, 158, 31, 159, 30, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 23, 19, 22, 22, 160, 44, 0, 0, 0, + 49, 127, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 9, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, - 10, 18, 19, 21, 22, 162, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, + 10, 18, 19, 21, 22, 161, 31, 0, 0, 11, 11, 30, 2, 2, 2, 9, 30, 9, 2, 30, 2, 2, 58, 17, 23, 16, 23, 47, 32, 33, 32, 34, 0, 0, 0, 0, 35, 0, 0, 0, 2, 2, 23, 0, 11, 11, 11, 46, - 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 65, 25, 20, 20, 20, - 22, 23, 126, 15, 17, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, - 163, 164, 0, 0, 0, 0, 0, 0, 0, 18, 19, 20, 20, 66, 99, 25, - 160, 11, 165, 9, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, - 65, 25, 20, 20, 0, 48, 48, 11, 166, 37, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 2, 20, 0, 23, 19, 20, 20, 21, 16, 82, - 166, 38, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 10, 167, - 25, 20, 22, 22, 165, 9, 0, 0, 0, 2, 2, 2, 2, 2, 9, 43, - 136, 23, 22, 20, 76, 21, 22, 0, 0, 2, 2, 2, 9, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 22, 105, 166, 37, 0, - 0, 2, 2, 2, 9, 30, 0, 2, 2, 2, 2, 30, 9, 2, 2, 2, - 2, 23, 23, 18, 32, 33, 12, 168, 169, 170, 171, 0, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 0, 2, 2, 2, 65, 25, 20, 20, 0, 22, 23, - 29, 108, 0, 33, 0, 0, 0, 0, 0, 52, 20, 22, 22, 22, 140, 2, - 2, 2, 172, 173, 11, 15, 174, 72, 175, 0, 0, 1, 147, 0, 0, 0, - 0, 52, 20, 22, 16, 19, 20, 2, 2, 2, 2, 158, 158, 158, 176, 176, - 176, 176, 176, 176, 15, 177, 0, 30, 0, 22, 20, 20, 31, 22, 22, 11, - 166, 0, 61, 61, 61, 61, 61, 61, 61, 66, 21, 82, 46, 0, 0, 0, - 0, 2, 2, 2, 9, 2, 30, 2, 2, 52, 22, 22, 31, 0, 38, 22, - 27, 11, 159, 178, 174, 0, 0, 0, 0, 2, 2, 2, 30, 9, 2, 2, - 2, 2, 2, 2, 2, 2, 23, 23, 47, 22, 35, 82, 68, 0, 0, 0, - 0, 2, 179, 66, 47, 0, 0, 0, 0, 11, 180, 2, 2, 2, 2, 2, - 2, 2, 2, 23, 22, 20, 31, 0, 48, 16, 143, 0, 0, 0, 0, 0, - 0, 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 182, 183, 184, 182, 181, - 181, 185, 181, 181, 186, 187, 187, 187, 187, 187, 187, 187, 0, 0, 0, 0, - 0, 11, 11, 11, 46, 0, 0, 0, 0, 2, 2, 2, 2, 2, 9, 0, - 58, 188, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 0, 0, 0, 40, 116, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 9, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, - 0, 2, 2, 2, 2, 2, 0, 58, 37, 0, 6, 120, 120, 120, 121, 0, - 0, 11, 11, 11, 49, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, - 2, 2, 2, 2, 2, 2, 2, 2, 46, 2, 2, 2, 2, 2, 2, 11, - 11, 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 44, 44, 44, 92, 0, + 0, 11, 11, 46, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 30, 0, + 9, 2, 2, 2, 30, 45, 59, 20, 20, 31, 33, 32, 32, 25, 162, 29, + 163, 164, 37, 0, 0, 0, 0, 0, 0, 12, 26, 0, 0, 0, 0, 0, + 0, 2, 2, 65, 25, 20, 20, 20, 22, 23, 125, 15, 17, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 0, 0, 165, 166, 0, 0, 0, 0, 0, 0, + 0, 18, 19, 20, 20, 66, 99, 25, 159, 11, 167, 9, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 2, 2, 65, 25, 20, 20, 0, 48, 48, 11, + 168, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 20, + 0, 23, 19, 20, 20, 21, 16, 82, 168, 38, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 2, 2, 10, 169, 25, 20, 22, 22, 167, 9, 0, 0, + 0, 2, 2, 2, 2, 2, 9, 43, 135, 23, 22, 20, 76, 21, 22, 0, + 0, 2, 2, 2, 9, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 18, + 19, 20, 21, 22, 105, 168, 37, 0, 0, 2, 2, 2, 9, 30, 0, 2, + 2, 2, 2, 30, 9, 2, 2, 2, 2, 23, 23, 18, 32, 33, 12, 170, + 164, 171, 172, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 2, + 2, 65, 25, 20, 20, 0, 22, 23, 29, 108, 0, 33, 0, 0, 0, 0, + 0, 52, 20, 22, 22, 22, 139, 2, 2, 2, 173, 174, 11, 15, 175, 61, + 176, 0, 0, 1, 146, 0, 0, 0, 0, 52, 20, 22, 16, 19, 20, 2, + 2, 2, 2, 157, 157, 157, 177, 177, 177, 177, 177, 177, 15, 178, 0, 30, + 0, 22, 20, 20, 31, 22, 22, 11, 168, 0, 61, 61, 61, 61, 61, 61, + 61, 66, 21, 82, 46, 0, 0, 0, 0, 2, 2, 2, 9, 2, 30, 2, + 2, 52, 22, 22, 31, 0, 38, 22, 27, 11, 158, 179, 180, 0, 0, 0, + 0, 2, 2, 2, 30, 9, 2, 2, 2, 2, 2, 2, 2, 2, 23, 23, + 47, 22, 35, 82, 68, 0, 0, 0, 0, 2, 181, 66, 47, 0, 0, 0, + 0, 11, 182, 2, 2, 2, 2, 2, 2, 2, 2, 23, 22, 20, 31, 0, + 48, 16, 142, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 155, 0, + 0, 183, 183, 183, 183, 183, 183, 183, 183, 184, 184, 184, 185, 186, 184, 183, + 183, 187, 183, 183, 188, 189, 189, 189, 189, 189, 189, 189, 0, 0, 0, 0, + 0, 183, 183, 183, 183, 183, 190, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 22, 22, 22, 22, 22, 22, 191, 192, 193, 11, 11, 11, 46, 0, 0, 0, + 0, 29, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 47, + 0, 2, 2, 2, 2, 2, 9, 0, 58, 194, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, + 40, 115, 26, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 2, 2, 2, 2, 0, 58, + 37, 0, 6, 119, 119, 119, 120, 0, 0, 11, 11, 11, 49, 2, 2, 2, + 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, + 46, 2, 2, 2, 2, 2, 2, 11, 11, 2, 2, 2, 2, 2, 2, 22, + 22, 2, 2, 2, 2, 2, 2, 2, 20, 2, 2, 44, 44, 44, 92, 0, 0, O, O, O, GB, B, B, O, SB, O, SE, GB, O, O, WJ,FMPst, FMPst, O, CGJ, B, O, B,VMAbv,VMAbv,VMAbv, O,VMAbv, B,CMBlw,CMBlw,CMBlw,VMAbv, VMPst, VAbv, VPst,CMBlw, B, VPst, VPre, VPst, VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, @@ -582,20 +606,21 @@ hb_use_u8[3483] = VMPst, VBlw, VPst, CGJ, CGJ, VPst,VMAbv,VMAbv,FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv, IS, FMAbv, B,FMAbv, B, CGJ, WJ, CGJ, GB,CMAbv,CMAbv, B, GB, B, VAbv, SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv, VPre, B, MPre, MBlw, SUB, FAbv, FAbv, MAbv, - SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, B, O,SMAbv,SMBlw,SMAbv,SMAbv, - SMAbv, VPst, IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, - CGJ, WJ, WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv, - VMBlw, B, VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, - MPst, MPre, MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS, - O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, - B, N, N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw, - VAbv, VPre,VMAbv,VMAbv, H, VAbv,CMBlw,FMAbv, B, CS, CS, H,CMBlw,VMPst, H,VMPst, - VAbv,VMAbv, VPst, IS, R, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, R, MBlw, MBlw, - GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, GB, VAbv, R,VMPst, G, G, J, J, J, - SB, SE, J, HR, G, G, HM, HM, HM, O, VBlw, + SUB, Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, H, B, O,SMAbv,SMAbv,SMAbv, VPst, + IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,VMBlw,VMAbv, CS, O,FMAbv, ZWNJ, CGJ, WJ, + WJ, WJ, O,FMPst, O, SB, SE, O, H, MPst, VPst, H,VMAbv, VAbv,VMBlw, B, + VBlw, FPst, VPst, FAbv,VMPst, B,CMAbv, VAbv, MBlw, MPst, MBlw, H, O, VBlw, MPst, MPre, + MAbv, MBlw, O, B, FAbv, FAbv, FPst, VBlw, B, B, VPre, O,VMPst, IS, O,VMPst, + VBlw, VPst,VMBlw,VMBlw,VMAbv, O, IS,VMBlw, B,VMPst,VMAbv,VMPst, CS, CS, B, N, + N, O, HN, VPre, VBlw, VAbv, IS,CMAbv, O, VPst, B, R, R,CMBlw, VAbv, VPre, + VMAbv,VMAbv, H, VAbv,CMBlw,VMPst, O,VMAbv,CMBlw, IS, R,FMAbv, B, CS, CS, H, + CMBlw,VMPst, H,VMPst, VAbv,VMAbv, VPst, MPst, R, MPst,CMBlw, B,FMBlw, VBlw,VMAbv, CS, + SUB, SUB, GB, FBlw, FBlw,CMAbv, IS, VBlw, IS, R, MBlw, GB, VAbv, R,VMPst, G, + G, J, J, J, SB, SE, J, HR, G, G, HM, HM, HM, G, O, MPre, + MPre, MPst,VMAbv, MBlw, VBlw, O, VBlw, }; static const uint16_t -hb_use_u16[456] = +hb_use_u16[486] = { 0, 0, 1, 2, 0, 3, 4, 5, 0, 6, 7, 0, 8, 0, 9, 10, 11, 12, 10, 13, 14, 10, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -614,18 +639,20 @@ hb_use_u16[456] = 148,149,150, 10, 10,151,152, 2,153, 99,154,155,156, 2, 10,157, 10,158,159, 0,160,161,162, 2,163, 0, 0,164, 0,165, 0,166, 166,167, 34,168,169,170, 10,171, 95, 0,172, 0, 10,173,174, 0, - 175, 2,176,173,177,178,179, 0, 0,180,181, 0,182, 10, 10,183, - 184,185,186,187,188, 10, 10,189,190, 0,191, 10,192,193,194, 10, - 10,195, 10,196,197,106,198,103, 10, 34,199,200,201, 0,202,203, - 95, 10, 10,204,205, 2,206, 21, 22,207,208,209,210,211, 10,212, - 213,214,215, 0,198, 10, 10,216,217, 2,218,219,220,221, 10,222, - 223, 2,224,225, 10,226,227,104,228, 0,229,230,231,232, 10,233, - 234, 2,235, 10, 10,236,237, 0,238, 10, 10,239,240,241,242,243, - 22, 10,218,244, 8, 10, 71, 19, 10,245, 74,246,247, 10, 10,248, - 249, 2,250, 10,251,252, 10,253,254, 49, 10,255,256, 2,257,257, - 257,258,259,260, 10,261,262,263,264,264,265,266,267, 0, 10,268, - 106, 71, 95,269, 0,270, 71,271,272, 0,273, 0,274, 2,275, 2, - 276, 2,130,130,163,163,163,130, + 175, 2,176, 10,177, 0,178,173,179,180,181, 0, 0,182,183, 0, + 184, 10, 10,185,186,187,188,189,190, 10, 10,191,192, 0,193, 10, + 194,195,196, 10, 10,197, 10,198,199,106,200,103, 10, 34,201,202, + 203, 0,204,205, 95, 10, 10,206,207, 2,208, 21, 22,209,210,211, + 212,213,214, 10, 10,215,216,217,218, 0, 10,219,220,221,222, 0, + 200, 10, 10,223,224, 2,225,226,227,228, 10,229,230, 2,231,232, + 2, 10,141, 0, 10,233,234,104,235, 0,236,237,238,239, 10,240, + 241, 2,242, 10, 10,243,244, 0,245, 10, 10,246,247,248,249,250, + 22, 10,225,251, 8, 10, 71, 19, 10,252, 74,253,254, 10, 10,255, + 256, 2,257, 10,258,259, 10,260,261, 49, 10,262,263,264,265,265, + 265,266,267,268,265,269, 10,270,271, 2, 10,272,273, 10,274, 2, + 275,276,277,277,278,279,280, 0, 10,177, 0,281,106, 71, 95,282, + 0,283, 71,284,285, 0,286, 0,287, 2,288, 2,289,106,290, 2, + 130,130,163,163,163,130, }; static inline unsigned @@ -636,7 +663,7 @@ hb_use_b4 (const uint8_t* a, unsigned i) static inline uint_fast8_t hb_use_get_category (unsigned u) { - return u<921600u?hb_use_u8[3105+(((hb_use_u8[889+(((hb_use_u16[((hb_use_u8[353+(((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>1>>3>>4))<<4)+((u>>1>>3>>1>>3)&15u))])<<3)+((u>>1>>3>>1)&7u))])<<1)+((u>>1>>3)&1u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O; + return u<921600u?hb_use_u8[3265+(((hb_use_u8[937+(((hb_use_u16[((hb_use_u8[369+(((hb_use_u8[113+(((hb_use_b4(hb_use_u8,u>>1>>3>>1>>3>>4))<<4)+((u>>1>>3>>1>>3)&15u))])<<3)+((u>>1>>3>>1)&7u))])<<1)+((u>>1>>3)&1u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:O; } #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc index d1ed8945966..dbe781e5625 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper-vowel-constraints.cc @@ -10,8 +10,8 @@ * # Date: 2015-03-12, 21:17:00 GMT [AG] * # Date: 2019-11-08, 23:22:00 GMT [AG] * - * # Scripts-15.1.0.txt - * # Date: 2023-07-28, 16:01:07 GMT + * # Scripts-16.0.0.txt + * # Date: 2024-04-30, 21:48:40 GMT */ #include "hb.hh" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh index 9097be79ee2..8a094739cb7 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-shaper.hh @@ -387,6 +387,15 @@ hb_ot_shaper_categorize (hb_script_t script, case HB_SCRIPT_KAWI: case HB_SCRIPT_NAG_MUNDARI: + /* Unicode-16.0 additions */ + case HB_SCRIPT_GARAY: + case HB_SCRIPT_GURUNG_KHEMA: + case HB_SCRIPT_KIRAT_RAI: + case HB_SCRIPT_OL_ONAL: + case HB_SCRIPT_SUNUWAR: + case HB_SCRIPT_TODHRI: + case HB_SCRIPT_TULU_TIGALARI: + /* If the designer designed the font for the 'DFLT' script, * (or we ended up arbitrarily pick 'latn'), use the default shaper. * Otherwise, use the specific shaper. diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh index ea5459ef4e2..7a46be1fffc 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-stat-table.hh @@ -354,10 +354,10 @@ struct AxisValue { switch (u.format) { - case 1: return u.format1.get_value (); - case 2: return u.format2.get_value (); - case 3: return u.format3.get_value (); - case 4: return u.format4.get_axis_record (axis_index).get_value (); + case 1: hb_barrier (); return u.format1.get_value (); + case 2: hb_barrier (); return u.format2.get_value (); + case 3: hb_barrier (); return u.format3.get_value (); + case 4: hb_barrier (); return u.format4.get_axis_record (axis_index).get_value (); default:return 0.f; } } @@ -366,9 +366,9 @@ struct AxisValue { switch (u.format) { - case 1: return u.format1.get_axis_index (); - case 2: return u.format2.get_axis_index (); - case 3: return u.format3.get_axis_index (); + case 1: hb_barrier (); return u.format1.get_axis_index (); + case 2: hb_barrier (); return u.format2.get_axis_index (); + case 3: hb_barrier (); return u.format3.get_axis_index (); /* case 4: Makes more sense for variable fonts which are handled by fvar in hb-style */ default:return -1; } @@ -378,10 +378,10 @@ struct AxisValue { switch (u.format) { - case 1: return u.format1.get_value_name_id (); - case 2: return u.format2.get_value_name_id (); - case 3: return u.format3.get_value_name_id (); - case 4: return u.format4.get_value_name_id (); + case 1: hb_barrier (); return u.format1.get_value_name_id (); + case 2: hb_barrier (); return u.format2.get_value_name_id (); + case 3: hb_barrier (); return u.format3.get_value_name_id (); + case 4: hb_barrier (); return u.format4.get_value_name_id (); default:return HB_OT_NAME_ID_INVALID; } } @@ -392,10 +392,10 @@ struct AxisValue if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value (); TRACE_DISPATCH (this, u.format); switch (u.format) { - case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); - case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); - case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); - case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); + case 1: hb_barrier (); return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); + case 2: hb_barrier (); return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); + case 3: hb_barrier (); return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...)); + case 4: hb_barrier (); return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...)); default:return_trace (c->default_return_value ()); } } @@ -405,10 +405,10 @@ struct AxisValue { switch (u.format) { - case 1: return u.format1.keep_axis_value (axis_records, user_axes_location); - case 2: return u.format2.keep_axis_value (axis_records, user_axes_location); - case 3: return u.format3.keep_axis_value (axis_records, user_axes_location); - case 4: return u.format4.keep_axis_value (axis_records, user_axes_location); + case 1: hb_barrier (); return u.format1.keep_axis_value (axis_records, user_axes_location); + case 2: hb_barrier (); return u.format2.keep_axis_value (axis_records, user_axes_location); + case 3: hb_barrier (); return u.format3.keep_axis_value (axis_records, user_axes_location); + case 4: hb_barrier (); return u.format4.keep_axis_value (axis_records, user_axes_location); default:return false; } } @@ -422,10 +422,10 @@ struct AxisValue switch (u.format) { - case 1: return_trace (u.format1.sanitize (c)); - case 2: return_trace (u.format2.sanitize (c)); - case 3: return_trace (u.format3.sanitize (c)); - case 4: return_trace (u.format4.sanitize (c)); + case 1: hb_barrier (); return_trace (u.format1.sanitize (c)); + case 2: hb_barrier (); return_trace (u.format2.sanitize (c)); + case 3: hb_barrier (); return_trace (u.format3.sanitize (c)); + case 4: hb_barrier (); return_trace (u.format4.sanitize (c)); default:return_trace (true); } } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh index 7fc9b7c7411..efbbfb25d7b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-common.hh @@ -238,8 +238,8 @@ struct tuple_delta_t /* compiled data: header and deltas * compiled point data is saved in a hashmap within tuple_variations_t cause * some point sets might be reused by different tuple variations */ - hb_vector_t<char> compiled_tuple_header; - hb_vector_t<char> compiled_deltas; + hb_vector_t<unsigned char> compiled_tuple_header; + hb_vector_t<unsigned char> compiled_deltas; /* compiled peak coords, empty for non-gvar tuples */ hb_vector_t<char> compiled_peak_coords; @@ -517,7 +517,7 @@ struct tuple_delta_t static bool compile_deltas (const hb_vector_t<bool> &point_indices, const hb_vector_t<double> &x_deltas, const hb_vector_t<double> &y_deltas, - hb_vector_t<char> &compiled_deltas /* OUT */) + hb_vector_t<unsigned char> &compiled_deltas /* OUT */) { hb_vector_t<int> rounded_deltas; if (unlikely (!rounded_deltas.alloc (point_indices.length))) @@ -560,7 +560,7 @@ struct tuple_delta_t return compiled_deltas.resize (encoded_len); } - static unsigned compile_deltas (hb_array_t<char> encoded_bytes, + static unsigned compile_deltas (hb_array_t<unsigned char> encoded_bytes, hb_array_t<const int> deltas) { return TupleValues::compile (deltas, encoded_bytes); @@ -705,20 +705,20 @@ struct tuple_delta_t opt_indices.arrayZ[i] = false; } - hb_vector_t<char> opt_point_data; + hb_vector_t<unsigned char> opt_point_data; if (!compile_point_set (opt_indices, opt_point_data)) return false; - hb_vector_t<char> opt_deltas_data; + hb_vector_t<unsigned char> opt_deltas_data; if (!compile_deltas (opt_indices, is_comp_glyph_wo_deltas ? opt_deltas_x : deltas_x, is_comp_glyph_wo_deltas ? opt_deltas_y : deltas_y, opt_deltas_data)) return false; - hb_vector_t<char> point_data; + hb_vector_t<unsigned char> point_data; if (!compile_point_set (indices, point_data)) return false; - hb_vector_t<char> deltas_data; + hb_vector_t<unsigned char> deltas_data; if (!compile_deltas (indices, deltas_x, deltas_y, deltas_data)) return false; @@ -740,7 +740,7 @@ struct tuple_delta_t } static bool compile_point_set (const hb_vector_t<bool> &point_indices, - hb_vector_t<char>& compiled_points /* OUT */) + hb_vector_t<unsigned char>& compiled_points /* OUT */) { unsigned num_points = 0; for (bool i : point_indices) @@ -1134,7 +1134,7 @@ struct TupleVariationData continue; } - hb_vector_t<char> compiled_point_data; + hb_vector_t<unsigned char> compiled_point_data; if (!tuple_delta_t::compile_point_set (*points_set, compiled_point_data)) return false; @@ -1663,7 +1663,9 @@ struct item_variations_t } } - if (!all_regions || !all_unique_regions) return false; + /* regions are empty means no variation data, return true */ + if (!all_regions || !all_unique_regions) return true; + if (!region_list.alloc (all_regions.get_population ())) return false; @@ -1728,7 +1730,8 @@ struct item_variations_t bool as_item_varstore (bool optimize=true, bool use_no_variation_idx=true) { - if (!region_list) return false; + /* return true if no variation data */ + if (!region_list) return true; unsigned num_cols = region_list.length; /* pre-alloc a 2D vector for all sub_table's VarData rows */ unsigned total_rows = 0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh index 7bbaed35e5d..b021a00f669 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ot-var-gvar-table.hh @@ -359,7 +359,10 @@ struct gvar out->glyphCountX = hb_min (0xFFFFu, num_glyphs); unsigned glyph_var_data_size = glyph_vars.compiled_byte_size (); - bool long_offset = glyph_var_data_size & ~0xFFFFu || force_long_offsets; + /* According to the spec: If the short format (Offset16) is used for offsets, + * the value stored is the offset divided by 2, so the maximum data size should + * be 2 * 0xFFFFu, which is 0x1FFFEu */ + bool long_offset = glyph_var_data_size > 0x1FFFEu || force_long_offsets; out->flags = long_offset ? 1 : 0; HBUINT8 *glyph_var_data_offsets = c->allocate_size<HBUINT8> ((long_offset ? 4 : 2) * (num_glyphs + 1), false); @@ -440,7 +443,10 @@ struct gvar subset_data_size += get_glyph_var_data_bytes (c->source_blob, glyph_count, old_gid).length; } - bool long_offset = (subset_data_size & ~0xFFFFu); + /* According to the spec: If the short format (Offset16) is used for offsets, + * the value stored is the offset divided by 2, so the maximum data size should + * be 2 * 0xFFFFu, which is 0x1FFFEu */ + bool long_offset = subset_data_size > 0x1FFFEu; #ifdef HB_EXPERIMENTAL_API long_offset = long_offset || (c->plan->flags & HB_SUBSET_FLAGS_IFTB_REQUIREMENTS); #endif @@ -540,7 +546,7 @@ struct gvar unsigned get_offset (unsigned glyph_count, unsigned i) const { if (unlikely (i > glyph_count)) return 0; - _hb_compiler_memory_r_barrier (); + hb_barrier (); return is_long_offset () ? get_long_offset_array ()[i] : get_short_offset_array ()[i] * 2; } diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh index 3a37f7daec5..2d4491e0717 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-paint-extents.hh @@ -70,7 +70,10 @@ struct hb_paint_extents_context_t const hb_transform_t &t = transforms.tail (); t.transform_extents (extents); - clips.push (hb_bounds_t {extents}); + auto bounds = hb_bounds_t {extents}; + bounds.intersect (clips.tail ()); + + clips.push (bounds); } void pop_clip () diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc index bd5cb5c6be0..fbab091e8c2 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-style.cc @@ -61,8 +61,8 @@ _hb_ratio_to_angle (float r) * @style_tag: a style tag. * * Searches variation axes of a #hb_font_t object for a specific axis first, - * if not set, then tries to get default style values from different - * tables of the font. + * if not set, first tries to get default style values in `STAT` table + * then tries to polyfill from different tables of the font. * * Returns: Corresponding axis or default value to a style tag. * diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc index 9c9117d52fc..eb5cb0c625e 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-cff2.cc @@ -666,9 +666,6 @@ OT::cff2::accelerator_subset_t::serialize (hb_serialize_context_t *c, bool OT::cff2::accelerator_subset_t::subset (hb_subset_context_t *c) const { - if (c->plan->normalized_coords && !c->plan->all_axes_pinned) - fprintf (stdout, "warning: CFF partial instancing is not supported.\n"); - cff2_subset_plan cff2_plan; if (unlikely (!cff2_plan.create (*this, c->plan))) return false; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc index ca903e2707e..ec015759904 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset-instancer-solver.cc @@ -376,7 +376,7 @@ double renormalizeValue (double v, const Triple &triple, assert (lower <= def && def <= upper); if (!extrapolate) - v = hb_max (hb_min (v, upper), lower); + v = hb_clamp (v, lower, upper); if (v == def) return 0.0; diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc index f10ef54dbdc..7cea9f18374 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc @@ -594,14 +594,20 @@ static void _attach_accelerator_data (hb_subset_plan_t* plan, * @input: input to use for the subsetting. * * Subsets a font according to provided input. Returns nullptr - * if the subset operation fails. + * if the subset operation fails or the face has no glyphs. * * Since: 2.9.0 **/ hb_face_t * hb_subset_or_fail (hb_face_t *source, const hb_subset_input_t *input) { - if (unlikely (!input || !source)) return hb_face_get_empty (); + if (unlikely (!input || !source)) return nullptr; + + if (unlikely (!source->get_num_glyphs ())) + { + DEBUG_MSG (SUBSET, nullptr, "No glyphs in source font."); + return nullptr; + } hb_subset_plan_t *plan = hb_subset_plan_create_or_fail (source, input); if (unlikely (!plan)) { diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh index 8d3807a80f0..8731a0bcf8d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-ucd-table.hh @@ -4,7 +4,7 @@ * * ./gen-ucd-table.py ucd.nounihan.grouped.xml * - * on file with this description: Unicode 15.1.0 + * on file with this description: Unicode 16.0.0 */ #ifndef HB_UCD_TABLE_HH @@ -13,7 +13,7 @@ #include "hb.hh" static const hb_script_t -_hb_ucd_sc_map[165] = +_hb_ucd_sc_map[172] = { HB_SCRIPT_COMMON, HB_SCRIPT_INHERITED, HB_SCRIPT_UNKNOWN, HB_SCRIPT_ARABIC, @@ -97,7 +97,10 @@ _hb_ucd_sc_map[165] = HB_SCRIPT_OLD_UYGHUR, HB_SCRIPT_TANGSA, HB_SCRIPT_TOTO, HB_SCRIPT_VITHKUQI, HB_SCRIPT_MATH, HB_SCRIPT_KAWI, - HB_SCRIPT_NAG_MUNDARI, + HB_SCRIPT_NAG_MUNDARI, HB_SCRIPT_GARAY, + HB_SCRIPT_GURUNG_KHEMA, HB_SCRIPT_KIRAT_RAI, + HB_SCRIPT_OL_ONAL, HB_SCRIPT_SUNUWAR, + HB_SCRIPT_TODHRI, HB_SCRIPT_TULU_TIGALARI, }; static const uint16_t _hb_ucd_dm1_p0_map[825] = @@ -868,7 +871,7 @@ _hb_ucd_dm2_u32_map[638] = HB_CODEPOINT_ENCODE3_11_7_14 (0x04E9u, 0x0308u, 0x04EBu), }; static const uint64_t -_hb_ucd_dm2_u64_map[388] = +_hb_ucd_dm2_u64_map[408] = { HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B7u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05B8u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D0u, 0x05BCu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x05D1u, 0x05BCu, 0x0000u), @@ -1051,13 +1054,23 @@ _hb_ucd_dm2_u64_map[388] = HB_CODEPOINT_ENCODE3 (0x30F0u, 0x3099u, 0x30F8u), HB_CODEPOINT_ENCODE3 (0x30F1u, 0x3099u, 0x30F9u), HB_CODEPOINT_ENCODE3 (0x30F2u, 0x3099u, 0x30FAu), HB_CODEPOINT_ENCODE3 (0x30FDu, 0x3099u, 0x30FEu), HB_CODEPOINT_ENCODE3 (0xFB49u, 0x05C1u, 0x0000u), HB_CODEPOINT_ENCODE3 (0xFB49u, 0x05C2u, 0x0000u), + HB_CODEPOINT_ENCODE3 (0x105D2u, 0x0307u, 0x105C9u), HB_CODEPOINT_ENCODE3 (0x105DAu, 0x0307u, 0x105E4u), HB_CODEPOINT_ENCODE3 (0x11099u, 0x110BAu, 0x1109Au),HB_CODEPOINT_ENCODE3 (0x1109Bu, 0x110BAu, 0x1109Cu), HB_CODEPOINT_ENCODE3 (0x110A5u, 0x110BAu, 0x110ABu),HB_CODEPOINT_ENCODE3 (0x11131u, 0x11127u, 0x1112Eu), HB_CODEPOINT_ENCODE3 (0x11132u, 0x11127u, 0x1112Fu),HB_CODEPOINT_ENCODE3 (0x11347u, 0x1133Eu, 0x1134Bu), - HB_CODEPOINT_ENCODE3 (0x11347u, 0x11357u, 0x1134Cu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114B0u, 0x114BCu), - HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BAu, 0x114BBu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BDu, 0x114BEu), - HB_CODEPOINT_ENCODE3 (0x115B8u, 0x115AFu, 0x115BAu),HB_CODEPOINT_ENCODE3 (0x115B9u, 0x115AFu, 0x115BBu), - HB_CODEPOINT_ENCODE3 (0x11935u, 0x11930u, 0x11938u), HB_CODEPOINT_ENCODE3 (0x1D157u, 0x1D165u, 0x0000u), + HB_CODEPOINT_ENCODE3 (0x11347u, 0x11357u, 0x1134Cu),HB_CODEPOINT_ENCODE3 (0x11382u, 0x113C9u, 0x11383u), + HB_CODEPOINT_ENCODE3 (0x11384u, 0x113BBu, 0x11385u),HB_CODEPOINT_ENCODE3 (0x1138Bu, 0x113C2u, 0x1138Eu), + HB_CODEPOINT_ENCODE3 (0x11390u, 0x113C9u, 0x11391u),HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113B8u, 0x113C7u), + HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113C2u, 0x113C5u),HB_CODEPOINT_ENCODE3 (0x113C2u, 0x113C9u, 0x113C8u), + HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114B0u, 0x114BCu),HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BAu, 0x114BBu), + HB_CODEPOINT_ENCODE3 (0x114B9u, 0x114BDu, 0x114BEu),HB_CODEPOINT_ENCODE3 (0x115B8u, 0x115AFu, 0x115BAu), + HB_CODEPOINT_ENCODE3 (0x115B9u, 0x115AFu, 0x115BBu),HB_CODEPOINT_ENCODE3 (0x11935u, 0x11930u, 0x11938u), + HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x1611Eu, 0x16121u),HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x1611Fu, 0x16123u), + HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x16120u, 0x16125u),HB_CODEPOINT_ENCODE3 (0x1611Eu, 0x16129u, 0x16122u), + HB_CODEPOINT_ENCODE3 (0x16121u, 0x1611Fu, 0x16126u),HB_CODEPOINT_ENCODE3 (0x16121u, 0x16120u, 0x16128u), + HB_CODEPOINT_ENCODE3 (0x16122u, 0x1611Fu, 0x16127u),HB_CODEPOINT_ENCODE3 (0x16129u, 0x1611Fu, 0x16124u), + HB_CODEPOINT_ENCODE3 (0x16D63u, 0x16D67u, 0x16D69u),HB_CODEPOINT_ENCODE3 (0x16D67u, 0x16D67u, 0x16D68u), + HB_CODEPOINT_ENCODE3 (0x16D69u, 0x16D67u, 0x16D6Au), HB_CODEPOINT_ENCODE3 (0x1D157u, 0x1D165u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D158u, 0x1D165u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D16Eu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D16Fu, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D170u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D171u, 0x0000u), HB_CODEPOINT_ENCODE3 (0x1D15Fu, 0x1D172u, 0x0000u), @@ -1069,90 +1082,59 @@ _hb_ucd_dm2_u64_map[388] = #ifndef HB_OPTIMIZE_SIZE static const uint8_t -_hb_ucd_u8[17884] = +_hb_ucd_u8[17612] = { - 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 11, 12, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 22, 22, 22, 22, 24, 7, 7, - 25, 26, 22, 22, 22, 27, 28, 29, 22, 30, 31, 32, 33, 34, 35, 36, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 22, 42, - 7, 7, 43, 7, 44, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 46, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 47, + 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 5, 17, 15, 18, 19, 20, 21, 22, 23, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 25, 26, 5, 27, 28, + 5, 29, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 33, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 34, 35, 36, 37, 38, 39, 34, 34, 34, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 69, 72, 73, - 69, 69, 64, 74, 64, 64, 75, 76, 77, 78, 79, 80, 81, 82, 69, 83, - 84, 85, 86, 87, 88, 89, 69, 69, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 90, 34, 34, 34, 34, - 91, 34, 34, 34, 34, 34, 34, 34, 34, 92, 34, 34, 93, 94, 95, 96, - 97, 98, 99,100,101,102,103,104, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,105, - 106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, - 107,107, 34, 34,108,109,110,111, 34, 34,112,113,114,115,116,117, - 118,119,120,121,122,123,124,125,126,127,128,129, 34, 34,130,131, - 132,133,134,135,136,137,138,139,140,141,142,122,143,144,145,146, - 147,148,149,150,151,152,153,122,154,155,122,156,157,158,159,122, - 160,161,162,163,164,165,166,122,167,168,169,170,122,171,172,173, - 34, 34, 34, 34, 34, 34, 34,174,175, 34,176,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,177, - 34, 34, 34, 34, 34, 34, 34, 34,178,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122, 34, 34, 34, 34,179,122,122,122, - 34, 34, 34, 34,180,181,182,183,122,122,122,122,184,185,186,187, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,188, - 34, 34, 34, 34, 34, 34, 34, 34, 34,189,190,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,191, - 34, 34,192, 34, 34,193,122,122,122,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,194,195,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,196,197, - 69,198,199,200,201,202,203,122,204,205,206,207,208,209,210,211, - 69, 69, 69, 69,212,213,122,122,122,122,122,122,122,122,214,122, - 215,216,217,122,122,218,122,122,122,219,122,122,122,122,122,220, - 34,221,222,122,122,122,122,122,223,224,225,122,226,227,122,122, - 228,229,230,231,232,122, 69,233, 69, 69, 69, 69, 69,234,235,236, - 237,238, 69, 69,239,240, 69,241,122,122,122,122,122,122,122,122, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,242, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,243, 34, - 244, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,245, 34, 34, - 34, 34, 34, 34, 34, 34, 34,246, 34, 34, 34, 34,247,122,122,122, - 34, 34, 34, 34,248,122,122,122,122,122,122,122,122,122,122,122, - 34, 34, 34, 34, 34, 34,249, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34,250,122,122,122,122,122,122,122,122, - 251,122,252,253,122,122,122,122,122,122,122,122,122,122,122,122, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,254, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,255, + 16, 17, 18, 19, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 33, 41, 42, 43, 44, 45, + 46, 47, 48, 39, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 49, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 50, 17, 17, 17, 51, 17, 52, 53, 54, 55, 56, 57, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 58, 59, 59, 59, 59, 59, 59, 59, 59, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 17, 61, 62, 17, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 17, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 17, 17, 17, 97, 98, 99,100,100,100,100,100,100,100,100,100,101, + 17, 17, 17, 17,102, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17,103, 17, 17,104,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,105,100,100,100,100,100,100, 17, 17,106,107,100,108,109,110, + 17, 17, 17, 17, 17, 17, 17,111, 17, 17, 17, 17,112,113,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,114, + 17,115,116,100,100,100,100,100,100,100,100,100,117,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,118, 39,119,120, + 121,122,123,124,125,126,127,128, 39, 39,129,100,100,100,100,130, + 131,132,133,100,134,135,100,136,137,138,100,100,139,140,141,100, + 142,143,144,145, 39, 39,146,147,148, 39,149,150,100,100,100,100, + 17, 17, 17, 17, 17, 17,151, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17,152,153, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,154, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,155, 17, 17,156,100, + 100,100,100,100,100,100,100,100, 17, 17,157,100,100,100,100,100, + 17, 17, 17,158, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17,159,100,100,100,100,100,100,100,100,100,100,100,100, + 160,161,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,162, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,163, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, @@ -1189,7 +1171,7 @@ _hb_ucd_u8[17884] = 43, 43, 40, 21, 2, 81, 57, 20, 36, 36, 36, 43, 43, 75, 43, 43, 43, 43, 75, 43, 75, 43, 43, 44, 2, 2, 2, 2, 2, 2, 2, 64, 36, 36, 36, 36, 70, 43, 44, 64, 36, 36, 36, 36, 36, 61, 44, 44, - 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 44, 43, 43, 43, 43, + 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 57, 43, 43, 43, 43, 36, 36, 36, 36, 83, 43, 43, 43, 43, 84, 43, 43, 43, 43, 43, 43, 43, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 85, 71, 86, 87, 43, 43, 43, 85, 86, 87, 86, 70, 43, 43, 43, 36, 36, 36, 36, @@ -1262,13 +1244,13 @@ _hb_ucd_u8[17884] = 85, 85, 87, 43, 43, 43, 85, 86, 86, 87, 43, 43, 43, 43, 80, 57, 2, 2, 2, 88, 2, 2, 2, 44, 43, 43, 43, 43, 43, 43, 43,109, 43, 43, 43, 43, 43, 43, 43, 80, 43, 43, 98, 36, 36, 36, 36, 36, - 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 44, - 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 64, + 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 2, + 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 2, 43, 98, 36, 36, 36, 36, 36, 36, 94, 43, 43, 86, 43, 87, 43, 36, 36, 36, 36, 85, 43, 86, 87, 87, 43, 86, 44, 44, 44, 44, 2, 2, 36, 36, 86, 86, 86, 86, 43, 43, 43, 43, 86, 43, 44, 93, 2, 2, 7, 7, 7, 7, 7, 44, 62, 36, 36, 36, 36, 36, 40, 40, 40, 2, - 16, 16, 16, 16,110, 44, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11, + 16, 16, 16, 16, 34,110, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11, 2, 2, 2, 2, 44, 44, 44, 44, 43, 60, 43, 43, 43, 43, 43, 43, 85, 43, 43, 43, 71, 36, 70, 36, 36, 36, 71, 94, 43, 61, 44, 44, 16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 45, 16, 16, @@ -1296,33 +1278,33 @@ _hb_ucd_u8[17884] = 67, 67, 67, 67, 4, 4, 67, 67, 8, 67, 67, 67,145,146, 67, 67, 67, 67, 67, 67, 67, 67,144, 67, 67, 67, 67, 67, 67, 26, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, - 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, - 67, 67, 67, 67, 67, 92, 44, 44, 27, 27, 27, 27, 27, 27, 67, 67, - 67, 67, 67, 67, 67, 27, 27, 27, 67, 67, 67, 26, 67, 67, 67, 67, - 26, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8, - 67, 67, 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, 4, 4, 4, 4, - 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, - 8, 8,129,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, - 8,129,148,148,148,148,148,148,148,148,148,148,147, 8, 8, 8, - 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, - 8, 8,144, 26, 8, 8,144, 67, 67, 67, 44, 67, 67, 67, 67, 67, - 67, 67, 67, 55, 67, 67, 67, 67, 32, 11, 32, 34, 34, 34, 34, 11, - 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,140, 67, 67,138, 34,149, - 43, 32, 44, 44, 93, 2, 99, 2, 16, 16, 16,150, 44, 44,150, 44, - 36, 36, 36, 36, 44, 44, 44, 52, 64, 44, 44, 44, 44, 44, 44, 57, - 36, 36, 36, 61, 44, 44, 44, 44, 36, 36, 36, 61, 36, 36, 36, 61, - 2,121,121, 2,125,126,121, 2, 2, 2, 2, 6, 2,108,121, 2, - 121, 4, 4, 4, 4, 2, 2, 88, 2, 2, 2, 2, 2,120, 2, 2, - 108,151, 2, 2, 2, 2, 2, 2, 67, 2,152,148,148,148,153, 44, - 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, - 67, 67, 67, 44, 44, 44, 44, 44, 1, 2,154,155, 4, 4, 4, 4, - 4, 67, 4, 4, 4, 4,156,157,158,105,105,105,105, 43, 43, 86, - 159, 40, 40, 67,105,160, 63, 67, 36, 36, 36, 61, 57,161,162, 69, - 36, 36, 36, 36, 36, 63, 40, 69, 44, 44, 62, 36, 36, 36, 36, 36, - 67, 27, 27, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 55, - 67, 67, 67, 67, 67, 67, 67, 92, 27, 27, 27, 27, 27, 67, 67, 67, - 67, 67, 67, 67, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, - 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,164, 2, + 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, + 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, + 67, 67, 67, 26, 67, 67, 67, 67, 26, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 26, + 67, 67, 67, 67, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27, + 27, 27, 67, 67, 67, 67, 67, 67, 8, 8,129,147, 8, 8, 8, 8, + 8, 8, 8, 4, 4, 4, 4, 4, 8,129,148,148,148,148,148,148, + 148,148,148,148,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, + 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,144, 26, 8, 8,144, 67, + 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, + 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11, + 32, 32,140, 67, 67,138, 34,149, 43, 32, 44, 44, 93, 2, 99, 2, + 16, 16, 16,150, 44, 44,150, 44, 36, 36, 36, 36, 44, 44, 44, 52, + 64, 44, 44, 44, 44, 44, 44, 57, 36, 36, 36, 61, 44, 44, 44, 44, + 36, 36, 36, 61, 36, 36, 36, 61, 2,121,121, 2,125,126,121, 2, + 2, 2, 2, 6, 2,108,121, 2,121, 4, 4, 4, 4, 2, 2, 88, + 2, 2, 2, 2, 2,120, 2, 2,108,151, 2, 2, 2, 2, 2, 2, + 67, 2,152,148,148,148,153, 44, 67, 67, 67, 67, 67, 55, 67, 67, + 67, 67, 44, 44, 44, 44, 44, 44, 67, 67, 67, 44, 44, 44, 44, 44, + 1, 2,154,155, 4, 4, 4, 4, 4, 67, 4, 4, 4, 4,156,157, + 158,105,105,105,105, 43, 43, 86,159, 40, 40, 67,105,160, 63, 67, + 36, 36, 36, 61, 57,161,162, 69, 36, 36, 36, 36, 36, 63, 40, 69, + 44, 44, 62, 36, 36, 36, 36, 36, 67, 27, 27, 67, 67, 67, 67, 67, + 67, 67, 67, 44, 44, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, 92, + 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, + 163, 27, 27, 27, 27, 27, 27, 27, 36, 36, 83, 36, 36, 36, 36, 36, + 67, 67, 67, 92, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36,164, 2, 7, 7, 7, 7, 7, 36, 44, 44, 32, 32, 32, 32, 32, 32, 32, 70, 51,165, 43, 43, 43, 43, 43, 88, 32, 32, 32, 32, 32, 32, 40, 43, 36, 36, 36,105,105,105,105,105, 43, 2, 2, 2, 44, 44, 44, 44, @@ -1330,7 +1312,7 @@ _hb_ucd_u8[17884] = 16, 32, 32, 32, 32, 32, 32, 32, 45, 16, 16, 16, 34, 34, 34, 32, 32, 32, 32, 32, 42,166, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, - 32, 32, 11, 11, 34,110, 44, 44, 32,150,150, 32, 32, 44, 44, 44, + 32, 32, 11, 11, 34, 34, 32, 44, 32,150,150, 32, 32, 32, 47, 44, 44, 40,167, 35, 40, 35, 36, 36, 36, 71, 36, 71, 36, 70, 36, 36, 36, 94, 87, 85, 67, 67, 80, 44, 27, 27, 27, 67,168, 44, 44, 44, 36, 36, 2, 2, 44, 44, 44, 44, 86, 36, 36, 36, 36, 36, 36, 36, @@ -1391,8 +1373,10 @@ _hb_ucd_u8[17884] = 36, 61, 44, 44, 27, 27, 27, 27, 36, 44, 44, 44, 93, 2, 64, 44, 44, 44, 44, 44,179, 27, 27, 27, 11, 47, 44, 44, 44, 44, 44, 44, 16,110, 44, 44, 44, 27, 27, 27, 36, 36, 43, 43, 44, 44, 44, 44, - 27, 27, 27, 27, 27, 27, 27,100, 36, 36, 36, 36, 36, 57,184, 44, - 36, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 43, + 7, 7, 7, 7, 7, 36, 36, 69, 11, 11, 11, 44, 57, 43, 43,159, + 16, 16, 16, 44, 44, 44, 44, 8, 27, 27, 27, 27, 27, 27, 27,100, + 36, 36, 36, 36, 36, 57,184, 44, 36, 44, 44, 44, 44, 44, 44, 44, + 44, 36, 61, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 27, 27, 27, 95, 44, 44, 44, 44,180, 27, 30, 2, 2, 44, 44, 44, 36, 43, 43, 2, 2, 44, 44, 44, 36, 36,183, 27, 27, 27, 44, 44, 87, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, @@ -1410,14 +1394,18 @@ _hb_ucd_u8[17884] = 86, 87, 43, 43, 43, 80, 44, 44, 43, 86, 62, 36, 36, 36, 61, 62, 61, 36, 62, 36, 36, 57, 71, 86, 85, 86, 90, 89, 90, 89, 86, 44, 61, 44, 44, 89, 44, 44, 62, 36, 36, 86, 44, 43, 43, 43, 80, 44, - 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 94, 86, 43, 43, 43, 43, - 86, 43, 85, 71, 36, 63, 2, 2, 7, 7, 7, 7, 7, 2, 93, 71, - 86, 87, 43, 43, 85, 85, 86, 87, 85, 43, 36, 72, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 36, 36, 94, 86, 43, 43, 44, 86, 86, 43, 87, - 60, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 44, - 86, 87, 43, 43, 43, 85, 87, 87, 60, 2, 61, 44, 44, 44, 44, 44, - 2, 2, 2, 2, 2, 2, 64, 44, 36, 36, 36, 36, 36, 70, 87, 86, - 43, 43, 43, 87, 63, 44, 44, 44, 86, 43, 43, 87, 43, 43, 44, 44, + 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 62, 44, 61, + 36, 36, 36, 62, 86, 87, 43, 43, 80, 90, 89, 89, 86, 90, 86, 85, + 71, 71, 2, 93, 64, 44, 44, 44, 57, 80, 44, 44, 44, 44, 44, 44, + 36, 36, 94, 86, 43, 43, 43, 43, 86, 43, 85, 71, 36, 63, 2, 2, + 7, 7, 7, 7, 7, 2, 93, 71, 86, 87, 43, 43, 85, 85, 86, 87, + 85, 43, 36, 72, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 94, + 86, 43, 43, 44, 86, 86, 43, 87, 60, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 36, 36, 43, 44, 86, 87, 43, 43, 43, 85, 87, 87, + 60, 2, 61, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 2, 64, 44, + 36, 36, 36, 36, 36, 70, 87, 86, 43, 43, 43, 87, 63, 44, 44, 44, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 44, 44, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 61, 57, 87, 86, 43, 43, 87, 43, 43, 44, 44, 7, 7, 7, 7, 7, 27, 2, 97, 43, 43, 43, 43, 87, 60, 44, 44, 27,100, 44, 44, 44, 44, 44, 62, 36, 36, 36, 61, 62, 44, 36, 36, 36, 36, 62, 61, 36, 36, 36, 36, 86, 86, 86, 89, 90, 57, 85, 71, @@ -1427,49 +1415,52 @@ _hb_ucd_u8[17884] = 2, 2, 2, 59, 44, 44, 44, 44, 70, 43, 43, 85, 87, 43, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 85, 43, 2, 72, 2, 2, 64, 44, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 44, 44, 44, - 43, 43, 43, 80, 43, 43, 43, 87, 63, 2, 2, 44, 44, 44, 44, 44, - 2, 36, 36, 36, 36, 36, 36, 36, 44, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 89, 43, 43, 43, 85, 43, 87, 80, 44, 44, 44, 44, - 36, 36, 36, 61, 36, 62, 36, 36, 70, 43, 43, 80, 44, 80, 43, 57, - 43, 43, 43, 70, 44, 44, 44, 44, 36, 36, 36, 62, 61, 36, 36, 36, - 36, 36, 36, 36, 36, 86, 86, 90, 43, 89, 87, 87, 61, 44, 44, 44, - 36, 70, 85,107, 64, 44, 44, 44, 43, 94, 36, 36, 36, 36, 36, 36, - 36, 36, 86, 43, 43, 80, 44, 86, 85, 60, 2, 2, 2, 2, 2, 2, + 63, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 80, 43, 43, 43, 87, + 63, 2, 2, 44, 44, 44, 44, 44, 2, 36, 36, 36, 36, 36, 36, 36, + 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 89, 43, 43, 43, + 85, 43, 87, 80, 44, 44, 44, 44, 36, 36, 36, 61, 36, 62, 36, 36, + 70, 43, 43, 80, 44, 80, 43, 57, 43, 43, 43, 70, 44, 44, 44, 44, + 36, 36, 36, 62, 61, 36, 36, 36, 36, 36, 36, 36, 36, 86, 86, 90, + 43, 89, 87, 87, 61, 44, 44, 44, 36, 70, 85,107, 64, 44, 44, 44, + 43, 94, 36, 36, 36, 36, 36, 36, 36, 36, 86, 43, 43, 80, 44, 86, + 85, 60, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 80, 44, 44, 27, 27, 91, 67, 67, 67, 56, 20,168, 67, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, 93,105,105,105,105,105,105,105,181, 2, 2, 64, 44, 44, 44, 44, 44, 63, 64, 44, 44, 44, 44, 44, 44, 65, 65, 65, 65, 65, 65, 65, 65, 71, 36, 36, 70, 43, 43, 43, 43, - 43, 43, 43, 44, 44, 44, 44, 44, 43, 43, 60, 44, 44, 44, 44, 44, + 43, 43, 43, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 43, + 43, 43, 43, 43, 43, 86, 87, 43, 43, 43, 60, 44, 44, 44, 44, 44, 43, 43, 43, 60, 2, 2, 67, 67, 40, 40, 97, 44, 44, 44, 44, 44, 7, 7, 7, 7, 7,179, 27, 27, 27, 62, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 44, 44, 62, 36, 27, 27, 27, 30, 2, 64, 44, 44, + 36, 36, 36, 36, 44, 44, 62, 36, 40, 69, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 83,164, 2, 27, 27, 27, 30, 2, 64, 44, 44, 36, 36, 36, 36, 36, 61, 44, 57, 94, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 44, 44, 44, 57, 43, 74, 40, 40, 40, 40, 40, 40, 40, 88, 80, 44, 44, 44, 44, 44, - 86, 44, 44, 44, 44, 44, 44, 44, 40, 40, 52, 40, 40, 40, 52, 81, - 36, 61, 44, 44, 44, 44, 44, 44, 44, 61, 44, 44, 44, 44, 44, 44, - 36, 61, 62, 44, 44, 44, 44, 44, 44, 44, 36, 36, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 44, 50, 60, 65, 65, 44, 44, 44, 44, 44, 44, - 43, 43, 43, 43, 43, 43, 43, 44, 43, 43, 43, 80, 44, 44, 44, 44, - 67, 67, 67, 92, 55, 67, 67, 67, 67, 67,186, 87, 43, 67,186, 86, - 86,187, 65, 65, 65, 84, 43, 43, 43, 76, 50, 43, 43, 43, 67, 67, - 67, 67, 67, 67, 67, 43, 43, 67, 67, 43, 76, 44, 44, 44, 44, 44, - 27, 27, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 16, 16,110, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 47, 11, 44, 47, 48, 47, 48, 11, 47, 11, - 11, 11, 11, 16, 16,150,150, 16, 16, 16,150, 16, 16, 16, 16, 16, - 16, 16, 11, 48, 11, 47, 48, 11, 11, 11, 47, 11, 11, 11, 47, 16, - 16, 16, 16, 16, 11, 48, 11, 47, 11, 11, 47, 47, 44, 11, 11, 11, - 47, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 44, 11, 11, 11, 11, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 44, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 43, 43, 43, 76, 67, 50, 43, 43, + 86, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 62, + 40, 40, 52, 40, 40, 40, 52, 81, 36, 61, 44, 44, 44, 44, 44, 44, + 44, 61, 44, 44, 44, 44, 44, 44, 36, 61, 62, 44, 44, 44, 44, 44, + 44, 44, 36, 36, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 50, 60, + 65, 65, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, + 43, 43, 43, 80, 44, 44, 44, 44, 67, 67, 67, 92, 55, 67, 67, 67, + 67, 67,186, 87, 43, 67,186, 86, 86,187, 65, 65, 65, 84, 43, 43, + 43, 76, 50, 43, 43, 43, 67, 67, 67, 67, 67, 67, 67, 43, 43, 67, + 67, 43, 76, 44, 44, 44, 44, 44, 27, 27, 44, 44, 44, 44, 44, 44, + 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 16, 16, 16,110, 16, 16, 16, 16, 16, + 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 11, + 44, 47, 48, 47, 48, 11, 47, 11, 11, 11, 11, 16, 16,150,150, 16, + 16, 16,150, 16, 16, 16, 16, 16, 16, 16, 11, 48, 11, 47, 48, 11, + 11, 11, 47, 11, 11, 11, 47, 16, 16, 16, 16, 16, 11, 48, 11, 47, + 11, 11, 47, 47, 44, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, + 16, 16, 16, 44, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, + 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, + 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, + 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, + 16, 33, 16, 16, 16, 32, 44, 7, 43, 43, 43, 76, 67, 50, 43, 43, 43, 43, 43, 43, 43, 43, 76, 67, 67, 67, 50, 67, 67, 67, 67, 67, 67, 67, 76, 21, 2, 2, 44, 44, 44, 44, 44, 44, 44, 57, 43, 43, 16, 16, 16, 16, 16, 39, 16, 16, 16, 16, 16, 16, 16, 16, 16,110, @@ -1479,22 +1470,23 @@ _hb_ucd_u8[17884] = 43, 43, 43, 74, 40, 40, 40, 44, 7, 7, 7, 7, 7, 44, 44, 77, 36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 43, 43, 7, 7, 7, 7, 7, 44, 44, 96, 36, 36, 36, 36, 36, 83, 43, 43, - 36, 36, 36, 61, 36, 36, 62, 61, 36, 36, 61,179, 27, 27, 27, 27, - 16, 16, 43, 43, 43, 74, 44, 44, 27, 27, 27, 27, 27, 27,163, 27, - 188, 27,100, 44, 44, 44, 44, 44, 27, 27, 27, 27, 27, 27, 27,163, - 27, 27, 27, 27, 27, 27, 27, 44, 36, 36, 62, 36, 36, 36, 36, 36, - 62, 61, 61, 62, 62, 36, 36, 36, 36, 61, 36, 36, 62, 62, 44, 44, - 44, 61, 44, 62, 62, 62, 62, 36, 62, 61, 61, 62, 62, 62, 62, 62, - 62, 61, 61, 62, 36, 61, 36, 36, 36, 61, 36, 36, 62, 36, 61, 61, - 36, 36, 36, 36, 36, 62, 36, 36, 62, 36, 62, 36, 36, 62, 36, 36, - 8, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 44, 44, - 55, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, 27, 27, 91, 67, - 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, - 67, 92, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 92, 44, 44, 44, - 67, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 25, 41, 41, - 67, 67, 67, 67, 44, 44, 67, 67, 67, 67, 67, 92, 44, 55, 67, 67, - 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 67, 55, - 67, 67, 67, 44, 44, 44, 44, 67, 67, 92, 67, 67, 67, 67, 67, 67, + 188, 7, 7, 7, 7,189, 44, 93, 36, 36, 36, 61, 36, 36, 62, 61, + 36, 36, 61,179, 27, 27, 27, 27, 16, 16, 43, 43, 43, 74, 44, 44, + 27, 27, 27, 27, 27, 27,163, 27,190, 27,100, 44, 44, 44, 44, 44, + 27, 27, 27, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, 44, + 36, 36, 62, 36, 36, 36, 36, 36, 62, 61, 61, 62, 62, 36, 36, 36, + 36, 61, 36, 36, 62, 62, 44, 44, 44, 61, 44, 62, 62, 62, 62, 36, + 62, 61, 61, 62, 62, 62, 62, 62, 62, 61, 61, 62, 36, 61, 36, 36, + 36, 61, 36, 36, 62, 36, 61, 61, 36, 36, 36, 36, 36, 62, 36, 36, + 62, 36, 62, 36, 36, 62, 36, 36, 8, 44, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, + 27, 27, 27, 27, 27, 27, 91, 67, 67, 67, 67, 67, 67, 67, 67, 44, + 44, 44, 44, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 92, 44, 44, 44, 67, 44, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 25, 41, 41, 67, 67, 67, 67, 44, 44, 67, 67, + 67, 67, 67, 92, 44, 55, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 92, 44, 44, 44, 67, + 67, 67, 67, 67, 67, 67, 92, 55, 67, 92, 67, 67, 67, 67, 67, 67, 79, 44, 44, 44, 44, 44, 44, 44,171,171,171,171,171,171,171, 44, 171,171,171,171,171,171,171, 0, 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9, @@ -1520,366 +1512,350 @@ _hb_ucd_u8[17884] = 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 25, 2, 25, 24, 2, 15, 12, 15, 14, 2, 21, 14, 7, 15, 12, 17, 21, 1, 26, 10, 10, 1, - 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, - 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, + 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, - 0, 0, 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, - 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, - 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, - 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, - 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, - 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, - 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0, - 0, 79, 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0, - 0, 87, 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0, - 80, 0, 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0, - 51, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0, - 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, - 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0, - 0,107, 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0, - 0, 0,110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0, - 0, 0, 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 5, 6, 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, - 0, 13, 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, - 21, 0, 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, - 0, 27, 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, - 33, 0, 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, - 38, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, - 42, 0, 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, - 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, - 0, 56, 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, - 0, 0, 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, - 0, 0, 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, - 0, 0, 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, - 0, 81, 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, - 84, 0, 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, - 0, 0, 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, - 0, 0, 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, - 0, 0, 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, - 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0, - 102, 0, 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106, - 107, 0, 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110, - 33, 0,111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0, - 0, 0, 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0, - 121, 0, 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123, - 0, 0, 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128, - 129, 0,130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0, - 0, 0, 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0, - 138, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, - 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, - 18, 1, 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, - 25, 26, 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, - 34, 35, 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, - 42, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, - 21, 0, 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, - 0, 0, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, - 54, 21, 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, - 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, - 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, - 0, 0, 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, - 0, 77, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, - 0, 80, 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, - 0, 0, 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, - 1, 52, 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, - 1, 0, 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, - 0, 78, 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, - 21, 1, 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, - 81, 99,100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, - 0, 0, 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, - 0, 0, 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, - 61, 0, 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, - 0, 0, 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, - 0, 0, 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, + 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, + 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, + 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, + 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, + 67, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, + 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77, + 0, 78, 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85, + 86, 87, 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0, + 93, 0, 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0, + 0, 0, 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0, + 0,102, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, + 0, 0, 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114, + 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, + 0,118, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, + 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, + 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, + 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, + 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, + 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, + 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, + 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, + 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61, + 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67, + 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78, + 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0, + 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0, + 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88, + 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0, + 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0, + 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, + 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0, + 103, 0, 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107, + 108, 0, 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111, + 33, 0,112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120, + 88, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0, + 0,122, 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127, + 0,128, 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0, + 134,135,136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0, + 0, 0,138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4, + 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1, + 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28, + 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36, + 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0, + 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47, + 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1, + 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59, + 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0, + 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, + 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0, + 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0, + 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0, + 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86, + 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, + 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, + 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92, + 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4, + 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, + 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38, + 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0, + 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107, + 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108, + 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0, 19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0, 62, 0, 0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55, - 0, 38, 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0, - 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, - 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, - 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117, - 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50, - 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0, - 0, 0, 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0, - 0, 0, 0, 0,230,230,230,230,230,232,220,220,220,220,232,216, - 220,220,220,220,220,202,202,220,220,220,220,202,202,220,220,220, - 1, 1, 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220, - 220,220,230,230,230,220,220, 0,230,230,230,220,220,220,220,230, - 232,220,220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230, - 0,220,230,230,230,230,220,230,230,230,222,220,230,230,220,220, - 230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, - 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230, - 220,230,230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230, - 230, 0,220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230, - 220,220,230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0, - 230,230, 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220, - 230,220,220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0, - 0, 9, 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0, - 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0, - 103,103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122, - 220,220, 0, 0, 0,220, 0,220, 0,216, 0, 0, 0,129,130, 0, - 132, 0, 0, 0, 0, 0,130,130,130,130, 0, 0,130, 0,230,230, - 9, 0,230,230, 0, 0,220, 0, 0, 0, 0, 7, 0, 9, 9, 0, - 9, 9, 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220, - 220, 0, 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0, - 0, 0, 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0, - 230,234,214,220,202,230,230,230,230,230,232,228,228,220,218,230, - 233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230, - 220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, - 0, 0, 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, - 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, - 0, 0,230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, - 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, - 0,226,216,216,216,216,216, 0,220,220,220, 0,232,232,220,230, - 230,230, 7, 0, 16, 17, 17, 17, 17, 17, 17, 33, 17, 17, 17, 19, - 17, 17, 17, 17, 20,101, 17,113,129,169, 17, 27, 28, 17, 17, 17, + 0, 38, 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0, + 115, 0, 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, + 79, 0, 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, + 0, 0, 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, + 0, 0, 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, + 48,105, 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112, + 4,122, 0, 0, 0, 1,124, 0, 0, 0, 0, 0,230,230,230,230, + 230,232,220,220,220,220,232,216,220,220,220,220,220,202,202,220, + 220,220,220,202,202,220,220,220, 1, 1, 1, 1, 1,220,220,220, + 220,230,230,230,230,240,230,220,220,220,230,230,230,220,220, 0, + 230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233, + 234,234,233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230, + 230,230,222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0, + 230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0, + 0, 0,230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0, + 0, 36, 0, 0,230,220,230,230,220,220,230,220,220,230,220,230, + 220,230,230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230, + 230,230, 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220, + 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230, + 230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9, + 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107, + 118,118, 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220, + 0,216, 0, 0, 0,129,130, 0,132, 0, 0, 0, 0, 0,130,130, + 130,130, 0, 0,130, 0,230,230, 9, 0,230,230, 0, 0,220, 0, + 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0, + 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220, + 230,220, 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0, + 230, 0, 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230, + 230,230,232,228,228,220,218,230,233,220,230,220,230,230, 1, 1, + 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228, + 232,222,224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230, + 220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, + 0,230,220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0, + 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0, + 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0, + 220,220,220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 17, + 17, 17, 17, 33, 17, 17, 17, 19, 17, 17, 17, 17, 20,101, 17,113, + 129,169, 17, 27, 28, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17,237, 0, 1, 2, 2, 0, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 6, 7, 8, 9, 0, 0, 0, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 0, 21, 22, 0, 0, 0, 0, 23, 24, 25, 26, 0, 27, 0, 28, - 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 36, 0, - 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, - 0, 0, 0, 0, 1, 2, 40, 41, 0, 1, 2, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 3, 4, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 7, 1, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 11, 12, - 0, 13, 0, 14, 15, 16, 0, 0, 0, 0, 0, 1, 17, 18, 0, 19, - 7, 1, 0, 0, 0, 20, 20, 7, 20, 20, 20, 20, 20, 20, 20, 8, - 21, 0, 22, 0, 7, 23, 24, 0, 20, 20, 25, 0, 0, 0, 26, 27, - 1, 7, 20, 20, 20, 20, 20, 1, 28, 29, 30, 31, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 20, 20, - 20, 1, 0, 0, 8, 21, 32, 4, 0, 10, 0, 33, 7, 20, 20, 20, - 0, 0, 0, 0, 8, 34, 34, 35, 36, 34, 37, 0, 38, 1, 20, 20, - 0, 0, 39, 0, 1, 1, 0, 8, 21, 1, 20, 0, 0, 0, 1, 0, - 0, 40, 1, 1, 0, 0, 8, 21, 0, 1, 0, 1, 0, 1, 0, 0, - 0, 0, 26, 34, 34, 34, 34, 34, 34, 34, 34, 34, 21, 7, 20, 41, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 21, 0, 42, 43, 44, 0, 45, - 0, 8, 21, 0, 0, 0, 0, 0, 0, 0, 0, 46, 7, 1, 10, 1, - 0, 0, 0, 1, 20, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 34, 9, 0, 0, 20, 20, 1, 20, 20, 0, 0, 0, 0, 0, - 0, 0, 26, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, - 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 9, 10, 11, 11, 11, 11, 12, 13, 13, 13, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 13, 22, 13, 13, 13, 13, 23, 24, 24, 25, 26, 13, 13, - 13, 27, 28, 29, 13, 30, 31, 32, 33, 34, 35, 36, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 13, 42, 7, 7, 43, 7, - 44, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,237, 0, 1, 2, 2, + 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 6, 7, 8, + 9, 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 22, 0, 0, 0, 0, + 23, 24, 25, 26, 0, 27, 0, 28, 29, 30, 31, 32, 0, 0, 0, 0, + 0, 0, 0, 33, 34, 35, 36, 0, 0, 0, 0, 0, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 1, 2, 40, 41, + 0, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 5, 0, + 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, + 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 10, 0, 0, 10, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, + 0, 0, 0, 0, 0, 0, 11, 12, 0, 13, 0, 14, 15, 16, 0, 0, + 0, 0, 0, 1, 17, 18, 0, 19, 7, 1, 0, 0, 0, 20, 20, 7, + 20, 20, 20, 20, 20, 20, 20, 8, 21, 0, 22, 0, 7, 23, 24, 0, + 20, 20, 25, 0, 0, 0, 26, 27, 1, 7, 20, 20, 20, 20, 20, 1, + 28, 29, 30, 31, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 10, 0, + 0, 0, 0, 0, 0, 0, 20, 20, 20, 1, 0, 0, 8, 21, 32, 4, + 0, 10, 0, 33, 7, 20, 20, 20, 0, 0, 0, 0, 8, 34, 34, 35, + 36, 34, 37, 0, 38, 1, 20, 20, 0, 0, 39, 0, 1, 1, 0, 8, + 21, 1, 20, 0, 0, 0, 1, 0, 0, 40, 1, 1, 0, 0, 8, 21, + 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 26, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 21, 7, 20, 41, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 21, 0, 42, 43, 44, 0, 45, 0, 8, 21, 0, 0, 0, 0, 0, + 0, 0, 0, 46, 7, 1, 10, 1, 0, 0, 0, 1, 20, 20, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 34, 9, 0, 0, 20, 20, + 1, 20, 20, 0, 0, 0, 0, 0, 0, 0, 26, 21, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 47, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 13, 13, 13, 13, 13, 14, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 15, 16, 17, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 20, 20, 20, 20, 20, + 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 20, 33, + 34, 35, 34, 34, 36, 37, 20, 20, 20, 20, 20, 20, 38, 20, 39, 40, + 41, 41, 41, 41, 41, 42, 43, 44, 20, 20, 20, 20, 20, 20, 20, 45, + 46, 20, 20, 47, 20, 20, 20, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 20, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 45, 0, 0, 1, - 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 32, 33, 34, 35, 36, 37, 37, 37, 37, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 2, 2, 53, 54, 55, 56, - 57, 58, 59, 59, 59, 59, 60, 59, 59, 59, 59, 59, 59, 59, 61, 61, - 59, 59, 59, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 59, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 79, 70, 70, 70, 70, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 81, 82, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 95, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 70, 70, 97, 98, 99,100,101,101,102,103,104,105,106,107,108,109, - 110,111, 96,112,113,114,115,116,117,118,119,119,120,121,122,123, - 124,125,126,127,128,129,130,131,132, 96,133,134,135,136,137,138, - 139,140,141,142,143, 96,144,145, 96,146,147,148,149, 96,150,151, - 152,153,154,155,156, 96,157,158,159,160, 96,161,162,163,164,164, - 164,164,164,164,164,165,166,164,167, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,168,169,169, - 169,169,169,169,169,169,170, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96,171,171,171,171,172, 96, 96, 96,173,173, - 173,173,174,175,176,177, 96, 96, 96, 96,178,179,180,181,182,182, - 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, - 182,182,182,182,182,182,182,182,182,182,182,182,182,183,182,182, - 182,182,182,182,184,184,184,185,186, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,187,188,189, - 190,191,191,192, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96,193,194, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,195,196, 59,197, - 198,199,200,201,202, 96,203,204,205, 59, 59,206, 59,207,208,208, - 208,208,208,209, 96, 96, 96, 96, 96, 96, 96, 96,210, 96,211,212, - 213, 96, 96,214, 96, 96, 96,215, 96, 96, 96, 96, 96,216,217,218, - 219, 96, 96, 96, 96, 96,220,221,222, 96,223,224, 96, 96,225,226, - 59,227,228, 96, 59, 59, 59, 59, 59, 59, 59,229,230,231,232,233, - 59, 59,234,235, 59,236, 96, 96, 96, 96, 96, 96, 96, 96, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,237, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,238, 70,239, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,240, 70, 70, 70, 70, - 70, 70, 70, 70, 70,241, 70, 70, 70, 70,242, 96, 96, 96, 70, 70, - 70, 70,243, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 70, 70, - 70, 70, 70, 70,244, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70,245, 96, 96, 96, 96, 96, 96, 96, 96,246, 96, - 247,248, 0, 1, 2, 2, 0, 1, 2, 2, 2, 3, 4, 5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, - 26, 26, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, - 9, 9, 0, 9, 9, 9, 2, 2, 9, 9, 9, 9, 0, 9, 2, 2, - 2, 2, 9, 0, 9, 0, 9, 9, 9, 2, 9, 2, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9, - 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 2, - 2, 2, 2, 2, 2, 2, 14, 14, 14, 2, 2, 2, 2, 14, 14, 14, - 14, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, - 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3, - 3, 3, 3, 3, 3, 3, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 2, 37, 37, 37, 37, 2, 2, 37, 37, 37, 38, 38, - 38, 38, 38, 38, 38, 38, 38, 38, 2, 2, 2, 2, 2, 2, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 2, 2, 90, 90, - 90, 90, 90, 90, 90, 2, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 2, 2, 95, 2, 37, 37, 37, 2, 2, 2, 2, 2, 3, 3, - 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, - 0, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, - 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 5, 5, - 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 5, 5, 2, - 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, - 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 5, 5, - 2, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 2, 2, 2, - 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 5, 5, 2, 5, 5, 5, - 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 11, - 11, 11, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2, - 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, - 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11, - 2, 2, 11, 2, 11, 11, 11, 2, 2, 11, 11, 11, 2, 2, 2, 11, - 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, 2, 11, 2, 2, 2, - 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 10, - 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, - 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, - 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, 10, - 2, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 2, 2, 10, 2, - 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, - 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 10, 10, 10, 2, 21, - 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, - 2, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 2, - 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 2, 21, 21, 21, 21, 21, - 2, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 2, 2, 2, 2, - 2, 2, 2, 21, 21, 21, 2, 2, 2, 2, 21, 21, 2, 21, 21, 21, - 21, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22, - 22, 2, 2, 2, 22, 22, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, - 22, 2, 22, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, 22, 22, 2, - 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, - 22, 2, 2, 2, 2, 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 2, 23, 23, 23, 2, 23, 23, 23, 23, 23, 23, 23, 23, - 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, 23, 2, 2, 2, 2, - 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23, 2, 2, 23, 23, - 23, 23, 2, 2, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 2, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 16, - 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, 2, - 2, 2, 2, 16, 16, 2, 16, 16, 16, 16, 2, 2, 16, 16, 2, 16, - 16, 16, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 2, 20, 20, 20, 2, 20, 20, 20, 20, 20, 20, 2, 2, - 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 2, 2, 20, 20, 2, 36, - 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36, 36, - 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, 2, - 36, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, - 2, 2, 2, 2, 36, 36, 2, 2, 36, 36, 36, 2, 2, 2, 2, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 2, 2, 2, 2, 0, 24, 24, 24, 24, 2, 2, 2, 2, 2, 18, - 18, 2, 18, 2, 18, 18, 18, 18, 18, 2, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18, - 18, 18, 18, 18, 2, 2, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, - 18, 18, 18, 18, 18, 2, 18, 18, 2, 2, 18, 18, 18, 18, 25, 25, - 25, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 2, 2, 2, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, - 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 2, 2, 2, 2, 33, 33, - 33, 33, 33, 33, 33, 33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 2, 8, 2, 2, 2, 2, 2, 8, 2, 2, 8, 8, - 8, 0, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30, - 30, 30, 30, 30, 30, 2, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30, - 30, 30, 30, 2, 2, 2, 30, 30, 2, 2, 2, 2, 2, 2, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 2, 28, 28, - 28, 28, 28, 28, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 2, 2, 2, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 2, 2, 2, 2, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 0, 0, 2, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 2, 2, 2, 2, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, - 46, 46, 46, 2, 46, 46, 46, 2, 46, 46, 2, 2, 2, 2, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2, 2, 31, 31, - 2, 2, 2, 2, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 2, 2, 2, 2, 2, 2, 32, 2, - 2, 2, 2, 2, 2, 2, 32, 32, 32, 2, 2, 2, 2, 2, 28, 28, - 28, 28, 28, 28, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 2, 48, 48, 48, 48, 2, 2, 2, 2, 48, 2, - 2, 2, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, 2, 2, 52, 52, 52, 52, 52, 2, 2, 2, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2, 2, 2, 2, 58, 58, - 2, 2, 2, 2, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 2, 2, 54, 54, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 2, 91, 91, - 91, 91, 91, 2, 2, 91, 91, 91, 2, 2, 2, 2, 2, 2, 91, 91, - 91, 91, 91, 91, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 2, 2, 2, 62, 62, - 62, 62, 62, 62, 62, 2, 76, 76, 76, 76, 76, 76, 76, 76, 93, 93, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 60, 13, 13, + 13, 61, 62, 13, 13, 13, 13, 63, 13, 13, 13, 13, 13, 13, 64, 65, + 20, 20, 66, 20, 13, 13, 13, 13, 67, 13, 13, 13, 68, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 19, 19, + 19, 19, 19, 19, 19, 0, 19, 0, 0, 0, 0, 0, 0, 0, 19, 19, + 19, 19, 19, 0, 0, 0, 0, 0, 26, 26, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2, + 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9, + 9, 2, 9, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 2, 9, 9, 9, 9, 9, 9, 9, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, + 4, 2, 2, 4, 4, 4, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 2, 2, 2, 2, 2, 2, 2, 2, 14, 14, + 14, 2, 2, 2, 2, 14, 14, 14, 14, 14, 14, 2, 2, 2, 3, 3, + 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 0, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37, + 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, + 2, 2, 2, 2, 2, 2, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 2, 2, 90, 90, 90, 90, 90, 90, 90, 2, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 2, 2, 95, 2, 37, 37, + 37, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, + 2, 2, 2, 2, 2, 3, 3, 3, 0, 3, 3, 3, 3, 3, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 7, 7, 7, 7, 7, + 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, + 5, 5, 5, 2, 2, 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 2, + 5, 2, 2, 2, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 5, 2, + 2, 5, 5, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, + 2, 2, 5, 5, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 2, 2, 11, 11, 11, 2, 11, 11, 11, 11, 11, + 11, 2, 2, 2, 2, 11, 11, 2, 2, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 11, 11, 11, 11, 11, 2, + 11, 11, 2, 11, 11, 2, 11, 11, 2, 2, 11, 2, 11, 11, 11, 2, + 2, 11, 11, 11, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 11, + 11, 11, 11, 2, 11, 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 2, 2, 10, 10, 10, 2, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 2, 10, 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 2, + 10, 10, 2, 10, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, 10, 10, + 2, 10, 10, 10, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 10, 10, + 10, 10, 2, 2, 10, 10, 10, 10, 2, 2, 2, 2, 2, 2, 2, 10, + 10, 10, 10, 10, 10, 10, 2, 21, 21, 21, 2, 21, 21, 21, 21, 21, + 21, 21, 21, 2, 2, 21, 21, 2, 2, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 2, + 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 21, 21, 2, + 2, 21, 21, 21, 2, 2, 2, 2, 2, 2, 2, 21, 21, 21, 2, 2, + 2, 2, 21, 21, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, 2, + 22, 22, 2, 22, 22, 22, 22, 22, 22, 2, 2, 2, 22, 22, 22, 2, + 22, 22, 22, 22, 2, 2, 2, 22, 22, 2, 22, 2, 22, 22, 2, 2, + 2, 22, 22, 2, 2, 2, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 2, 2, 2, 2, 22, 22, 22, 2, 2, 2, 2, 2, 2, 22, 2, 2, + 2, 2, 2, 2, 22, 22, 22, 22, 22, 2, 2, 2, 2, 2, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 2, 23, 23, 23, 2, + 23, 23, 23, 23, 23, 23, 23, 23, 2, 2, 23, 23, 23, 23, 23, 2, + 23, 23, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 23, 2, 23, 23, + 23, 2, 2, 23, 2, 2, 23, 23, 23, 23, 2, 2, 23, 23, 2, 2, + 2, 2, 2, 2, 2, 23, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 2, 16, 16, 16, 2, 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 2, 16, 16, 16, 16, 16, 2, 2, 16, 16, 16, 16, 16, 2, + 16, 16, 16, 16, 2, 2, 2, 2, 2, 2, 2, 16, 16, 2, 16, 16, + 16, 16, 2, 2, 16, 16, 2, 16, 16, 16, 2, 2, 2, 2, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 20, 20, 20, 2, + 20, 20, 20, 20, 20, 20, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, + 20, 20, 2, 2, 20, 20, 2, 36, 36, 36, 2, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2, + 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 36, + 36, 36, 36, 2, 36, 2, 2, 2, 2, 2, 2, 2, 36, 36, 2, 2, + 36, 36, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 2, 2, 2, 2, 0, 24, 24, + 24, 24, 2, 2, 2, 2, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18, + 18, 2, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 2, 18, 18, + 18, 18, 18, 2, 18, 2, 18, 18, 18, 18, 18, 18, 18, 2, 18, 18, + 2, 2, 18, 18, 18, 18, 25, 25, 25, 25, 25, 25, 25, 25, 2, 25, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 2, 2, 2, 25, 25, + 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 0, 0, 0, 0, 25, + 25, 2, 2, 2, 2, 2, 33, 33, 33, 33, 33, 33, 33, 33, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 8, 2, 2, + 2, 2, 2, 8, 2, 2, 8, 8, 8, 0, 8, 8, 8, 8, 12, 12, + 12, 12, 12, 12, 12, 12, 30, 30, 30, 30, 30, 30, 30, 30, 30, 2, + 30, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, + 30, 2, 2, 30, 30, 30, 30, 30, 30, 30, 30, 2, 2, 2, 30, 30, + 2, 2, 2, 2, 2, 2, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 2, 2, 28, 28, 28, 28, 28, 28, 28, 28, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, + 2, 2, 2, 2, 2, 2, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 0, 0, 2, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 2, 2, 2, 2, 46, 46, + 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 2, 46, 46, 46, 2, + 46, 46, 2, 2, 2, 2, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 2, 2, 31, 31, 2, 2, 2, 2, 2, 2, 32, 32, + 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 2, 2, 2, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 32, 32, + 32, 2, 2, 2, 2, 2, 28, 28, 28, 28, 28, 28, 2, 2, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 2, 48, 48, + 48, 48, 2, 2, 2, 2, 48, 2, 2, 2, 48, 48, 48, 48, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 2, 2, 52, 52, + 52, 52, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 58, 2, 2, 2, 2, 58, 58, 2, 2, 2, 2, 2, 2, 58, 58, + 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 2, 2, 54, 54, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 2, 91, 91, 91, 91, 91, 2, 2, 91, 91, 91, + 2, 2, 2, 2, 2, 2, 91, 91, 91, 91, 91, 91, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 2, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 2, 62, 62, 76, 76, 76, 76, 76, 76, 76, 76, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 2, 2, 2, 2, 2, 2, 2, 2, 93, 93, 93, 93, 70, 70, 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 73, 73, - 73, 73, 73, 73, 73, 73, 6, 2, 2, 2, 2, 2, 2, 2, 8, 8, + 73, 73, 73, 73, 73, 73, 6, 6, 6, 2, 2, 2, 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 2, 2, 2, 2, 2, 19, 19, @@ -1896,31 +1872,30 @@ _hb_ucd_u8[17884] = 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 19, 0, 0, 0, 2, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, - 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 56, 56, - 56, 56, 56, 56, 56, 56, 55, 55, 55, 55, 2, 2, 2, 2, 2, 55, - 55, 55, 55, 55, 55, 55, 61, 61, 61, 61, 61, 61, 61, 61, 2, 2, - 2, 2, 2, 2, 2, 61, 61, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 0, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 13, 13, - 13, 13, 13, 13, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, 13, - 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, - 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 17, 17, 2, 2, - 2, 2, 2, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 2, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 0, 0, - 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 12, 12, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 27, 27, + 27, 27, 27, 27, 27, 27, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 56, 56, 56, 56, 56, 56, 56, 56, 55, 55, + 55, 55, 2, 2, 2, 2, 2, 55, 55, 55, 55, 55, 55, 55, 61, 61, + 61, 61, 61, 61, 61, 61, 2, 2, 2, 2, 2, 2, 2, 61, 61, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 2, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 2, 2, 2, 2, 13, 13, 13, 13, 13, 13, 2, 2, 0, 0, + 0, 0, 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 1, 1, 1, 1, 12, 12, 13, 13, 13, 13, 0, 0, 0, 0, 2, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 2, 2, 1, 1, 0, 0, 15, 15, 15, 0, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 0, 0, 17, 17, 17, 2, 2, 2, 2, 2, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 2, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2, 2, 2, 0, 12, 12, 12, 12, 12, 12, 12, 0, 17, 17, 17, 17, 17, 17, 17, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 2, 2, 2, 39, 39, 39, 39, 39, 39, 39, 2, 86, 86, 86, 86, 86, 86, 86, 86, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 2, 2, 2, 2, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, 19, 19, 19, 19, 19, 19, 0, 0, - 0, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 19, 19, - 2, 19, 2, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 2, 2, 2, - 19, 19, 19, 19, 19, 19, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 65, 65, + 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 19, 19, + 2, 19, 2, 19, 19, 19, 2, 2, 19, 19, 19, 19, 19, 19, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 65, 65, 65, 65, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 2, 2, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, @@ -1943,36 +1918,38 @@ _hb_ucd_u8[17884] = 2, 14, 14, 2, 14, 14, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 1, 1, - 1, 1, 1, 1, 6, 6, 0, 0, 0, 2, 0, 0, 0, 0, 3, 3, - 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 0, 2, 2, 12, 12, 12, 12, 12, 12, 2, 2, - 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 2, 49, 49, 49, 2, 49, 49, 2, 49, 49, 49, - 49, 49, 49, 49, 2, 2, 49, 49, 49, 2, 2, 2, 2, 2, 0, 0, - 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, - 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 0, 0, - 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 2, - 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 2, 2, 2, 2, 2,118,118,118,118,118,118,118,118,118,118, - 118, 2, 2, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, - 59, 59, 2, 2, 2, 2, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, - 40, 40, 40, 40, 40, 40, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 2, 2, 50, 50, - 2, 2, 2, 2, 2, 2,135,135,135,135,135,135,135,135,135,135, - 135,135, 2, 2, 2, 2,106,106,106,106,106,106,106,106,104,104, - 104,104,104,104,104,104,104,104,104,104, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2,104,161,161,161,161,161,161,161,161,161,161, - 161, 2,161,161,161,161,161,161,161, 2,161,161, 2,161,161,161, - 2,161,161,161,161,161,161,161, 2,161,161, 2, 2, 2,110,110, - 110,110,110,110,110,110,110,110,110,110,110,110,110, 2,110,110, - 110,110,110,110, 2, 2, 19, 19, 19, 19, 19, 19, 2, 19, 19, 2, - 19, 19, 19, 19, 19, 19, 47, 47, 47, 47, 47, 47, 2, 2, 47, 2, + 1, 1, 1, 1, 6, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, + 3, 3, 3, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 2, 2, + 12, 12, 12, 12, 12, 12, 2, 2, 12, 12, 12, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 2, 2, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 2, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, + 49, 2, 49, 49, 2, 49, 49, 49, 49, 49, 49, 49, 2, 2, 49, 49, + 49, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 9, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 2, 2, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 2, 2, 2, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 2, 2, 2, 2, 2, 2, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, + 42, 42, 2, 2, 2, 2, 2, 2, 2, 2, 2, 42, 42, 42, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, 41, 2, 2, 2, 2, 2,118,118, + 118,118,118,118,118,118,118,118,118, 2, 2, 2, 2, 2, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 2, 53, 59, 59, + 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 2, 2, 2, 2, 59, 59, + 59, 59, 59, 59, 2, 2, 40, 40, 40, 40, 40, 40, 40, 40, 51, 51, + 51, 51, 51, 51, 51, 51, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 2, 2, 50, 50, 2, 2, 2, 2, 2, 2,135,135, + 135,135,135,135,135,135,135,135,135,135, 2, 2, 2, 2,106,106, + 106,106,106,106,106,106,104,104,104,104,104,104,104,104,104,104, + 104,104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,104,161,161, + 161,161,161,161,161,161,161,161,161, 2,161,161,161,161,161,161, + 161, 2,161,161, 2,161,161,161, 2,161,161,161,161,161,161,161, + 2,161,161, 2, 2, 2,170,170,170,170,170,170,170,170,170,170, + 170,170, 2, 2, 2, 2,110,110,110,110,110,110,110,110,110,110, + 110,110,110,110,110, 2,110,110,110,110,110,110, 2, 2, 19, 19, + 19, 19, 19, 19, 2, 19, 19, 2, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 2, 2, 2, 2, 2, 47, 47, 47, 47, 47, 47, 2, 2, 47, 2, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, 2, 47, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 2, 81,120,120, @@ -1998,122 +1975,135 @@ _hb_ucd_u8[17884] = 122,122,122,122,122,122, 89, 89, 89, 89, 89, 89, 89, 89, 89, 2, 2, 2, 2, 2, 2, 2,130,130,130,130,130,130,130,130,130,130, 130, 2, 2, 2, 2, 2, 2, 2,130,130,130,130,130,130,144,144, - 144,144,144,144,144,144,144,144, 2, 2, 2, 2, 2, 2,156,156, + 144,144,144,144,144,144,144,144, 2, 2, 2, 2, 2, 2,165,165, + 165,165,165,165,165,165,165,165,165,165,165,165, 2, 2, 2,165, + 165,165,165,165,165,165, 2, 2, 2, 2, 2, 2,165,165,156,156, 156,156,156,156,156,156,156,156, 2,156,156,156, 2, 2,156,156, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,147,147, - 147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148, - 2, 2, 2, 2, 2, 2,158,158,158,158,158,158,158,158,158,158, - 2, 2, 2, 2, 2, 2,153,153,153,153,153,153,153,153,153,153, - 153,153, 2, 2, 2, 2,149,149,149,149,149,149,149,149,149,149, - 149,149,149,149,149, 2, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 94, 94, 94, 94, 2, 2, - 2, 2, 2, 2, 2, 94, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2,101,101, - 101,101,101,101,101,101,101, 2, 2, 2, 2, 2, 2, 2,101,101, - 2, 2, 2, 2, 2, 2, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 2, 96, 96,111,111,111,111,111,111,111,111,111,111, - 111,111,111,111,111, 2,100,100,100,100,100,100,100,100, 2, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2,108,108, - 108,108,108,108,108,108,108,108, 2,108,108,108,108,108,108,108, - 2, 2, 2, 2, 2, 2,129,129,129,129,129,129,129, 2,129, 2, - 129,129,129,129, 2,129,129,129,129,129,129,129,129,129,129,129, - 129,129,129,129, 2,129,129,129, 2, 2, 2, 2, 2, 2,109,109, - 109,109,109,109,109,109,109,109,109, 2, 2, 2, 2, 2,109,109, - 2, 2, 2, 2, 2, 2,107,107,107,107, 2,107,107,107,107,107, - 107,107,107, 2, 2,107,107, 2, 2,107,107,107,107,107,107,107, - 107,107,107,107,107,107,107, 2,107,107,107,107,107,107,107, 2, - 107,107, 2,107,107,107,107,107, 2, 1,107,107,107,107,107, 2, - 2,107,107,107, 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2, - 2, 2, 2,107,107,107,107,107,107,107, 2, 2,107,107,107,107, - 107,107,107, 2, 2, 2,137,137,137,137,137,137,137,137,137,137, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 3,147,147,147,147,147,147,147,147,148,148, + 148,148,148,148,148,148,148,148, 2, 2, 2, 2, 2, 2,158,158, + 158,158,158,158,158,158,158,158, 2, 2, 2, 2, 2, 2,153,153, + 153,153,153,153,153,153,153,153,153,153, 2, 2, 2, 2,149,149, + 149,149,149,149,149,149,149,149,149,149,149,149,149, 2, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, + 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, 2, 2, 2, 94, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 85, 2, 2,101,101,101,101,101,101,101,101,101, 2, + 2, 2, 2, 2, 2, 2,101,101, 2, 2, 2, 2, 2, 2, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 2, 96, 96,111,111, + 111,111,111,111,111,111,111,111,111,111,111,111,111, 2,100,100, + 100,100,100,100,100,100, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 2, 2, 2,108,108,108,108,108,108,108,108,108,108, + 2,108,108,108,108,108,108,108, 2, 2, 2, 2, 2, 2,129,129, + 129,129,129,129,129, 2,129, 2,129,129,129,129, 2,129,129,129, + 129,129,129,129,129,129,129,129,129,129,129,129, 2,129,129,129, + 2, 2, 2, 2, 2, 2,109,109,109,109,109,109,109,109,109,109, + 109, 2, 2, 2, 2, 2,109,109, 2, 2, 2, 2, 2, 2,107,107, + 107,107, 2,107,107,107,107,107,107,107,107, 2, 2,107,107, 2, + 2,107,107,107,107,107,107,107,107,107,107,107,107,107,107, 2, + 107,107,107,107,107,107,107, 2,107,107, 2,107,107,107,107,107, + 2, 1,107,107,107,107,107, 2, 2,107,107,107, 2, 2,107, 2, + 2, 2, 2, 2, 2,107, 2, 2, 2, 2, 2,107,107,107,107,107, + 107,107, 2, 2,107,107,107,107,107,107,107, 2, 2, 2,171,171, + 171,171,171,171,171,171,171,171, 2,171, 2, 2,171, 2,171,171, + 171,171,171,171, 2,171,171, 2,171, 2, 2,171, 2,171,171,171, + 171, 2,171,171,171,171,171, 2, 2, 2, 2, 2, 2, 2, 2,171, + 171, 2, 2, 2, 2, 2,137,137,137,137,137,137,137,137,137,137, 137,137, 2,137,137,137,137,137, 2, 2, 2, 2, 2, 2,124,124, 124,124,124,124,124,124,124,124, 2, 2, 2, 2, 2, 2,123,123, 123,123,123,123,123,123,123,123,123,123,123,123, 2, 2,114,114, 114,114,114,114,114,114,114,114,114,114,114, 2, 2, 2,114,114, 2, 2, 2, 2, 2, 2, 32, 32, 32, 32, 32, 2, 2, 2,102,102, - 102,102,102,102,102,102,102,102, 2, 2, 2, 2, 2, 2,126,126, - 126,126,126,126,126,126,126,126,126, 2, 2,126,126,126,126,126, - 126,126, 2, 2, 2, 2,126,126,126,126,126,126,126, 2,142,142, - 142,142,142,142,142,142,142,142,142,142, 2, 2, 2, 2,125,125, - 125,125,125,125,125,125,125,125,125, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2,125,154,154,154,154,154,154,154, 2, 2,154, - 2, 2,154,154,154,154,154,154,154,154, 2,154,154, 2,154,154, - 154,154,154,154,154,154,154,154,154,154,154,154, 2,154,154, 2, - 2,154,154,154,154,154,154,154, 2, 2, 2, 2, 2, 2,150,150, - 150,150,150,150,150,150, 2, 2,150,150,150,150,150,150,150,150, - 150,150,150, 2, 2, 2,141,141,141,141,141,141,141,141,140,140, - 140,140,140,140,140,140,140,140,140, 2, 2, 2, 2, 2,121,121, - 121,121,121,121,121,121,121, 2, 2, 2, 2, 2, 2, 2, 7, 7, - 2, 2, 2, 2, 2, 2,133,133,133,133,133,133,133,133,133, 2, - 133,133,133,133,133,133,133,133,133,133,133,133,133, 2,133,133, - 133,133,133,133, 2, 2,133,133,133,133,133, 2, 2, 2,134,134, - 134,134,134,134,134,134, 2, 2,134,134,134,134,134,134, 2,134, - 134,134,134,134,134,134,134,134,134,134,134,134,134, 2,138,138, - 138,138,138,138,138, 2,138,138, 2,138,138,138,138,138,138,138, - 138,138,138,138,138,138, 2, 2,138, 2,138,138, 2,138,138,138, - 2, 2, 2, 2, 2, 2,143,143,143,143,143,143, 2,143,143, 2, - 143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143, - 143,143,143,143,143, 2,143,143, 2,143,143,143,143,143,143, 2, - 2, 2, 2, 2, 2, 2,143,143, 2, 2, 2, 2, 2, 2,145,145, - 145,145,145,145,145,145,145, 2, 2, 2, 2, 2, 2, 2,163,163, - 163,163,163,163,163,163,163, 2,163,163,163,163,163,163,163,163, - 163, 2, 2, 2,163,163,163,163, 2, 2, 2, 2, 2, 2, 86, 2, - 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 22, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, 63, - 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157,157, - 157,157,157,157,157,157,157,157,157, 2, 2, 2, 2, 2, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 2, 2,127,127, - 127,127,127,127,127,127,127,127,127,127,127,127,127, 2, 79, 2, + 102,102,102,102,102,102,102,102, 2, 2, 2, 2, 2, 2, 33, 33, + 33, 33, 2, 2, 2, 2,126,126,126,126,126,126,126,126,126,126, + 126, 2, 2,126,126,126,126,126,126,126, 2, 2, 2, 2,126,126, + 126,126,126,126,126, 2,142,142,142,142,142,142,142,142,142,142, + 142,142, 2, 2, 2, 2,125,125,125,125,125,125,125,125,125,125, + 125, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,125,154,154, + 154,154,154,154,154, 2, 2,154, 2, 2,154,154,154,154,154,154, + 154,154, 2,154,154, 2,154,154,154,154,154,154,154,154,154,154, + 154,154,154,154, 2,154,154, 2, 2,154,154,154,154,154,154,154, + 2, 2, 2, 2, 2, 2,150,150,150,150,150,150,150,150, 2, 2, + 150,150,150,150,150,150,150,150,150,150,150, 2, 2, 2,141,141, + 141,141,141,141,141,141,140,140,140,140,140,140,140,140,140,140, + 140, 2, 2, 2, 2, 2,121,121,121,121,121,121,121,121,121, 2, + 2, 2, 2, 2, 2, 2, 7, 7, 2, 2, 2, 2, 2, 2,169,169, + 169,169,169,169,169,169,169,169, 2, 2, 2, 2, 2, 2,133,133, + 133,133,133,133,133,133,133, 2,133,133,133,133,133,133,133,133, + 133,133,133,133,133, 2,133,133,133,133,133,133, 2, 2,133,133, + 133,133,133, 2, 2, 2,134,134,134,134,134,134,134,134, 2, 2, + 134,134,134,134,134,134, 2,134,134,134,134,134,134,134,134,134, + 134,134,134,134,134, 2,138,138,138,138,138,138,138, 2,138,138, + 2,138,138,138,138,138,138,138,138,138,138,138,138,138, 2, 2, + 138, 2,138,138, 2,138,138,138, 2, 2, 2, 2, 2, 2,143,143, + 143,143,143,143, 2,143,143, 2,143,143,143,143,143,143,143,143, + 143,143,143,143,143,143,143,143,143,143,143,143,143, 2,143,143, + 2,143,143,143,143,143,143, 2, 2, 2, 2, 2, 2, 2,143,143, + 2, 2, 2, 2, 2, 2,145,145,145,145,145,145,145,145,145, 2, + 2, 2, 2, 2, 2, 2,163,163,163,163,163,163,163,163,163, 2, + 163,163,163,163,163,163,163,163,163, 2, 2, 2,163,163,163,163, + 163, 2, 2, 2, 2, 2, 86, 2, 2, 2, 2, 2, 2, 2, 22, 22, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 22, 63, 63, + 63, 63, 63, 63, 63, 63, 63, 63, 2, 2, 2, 2, 2, 2, 63, 63, + 63, 63, 63, 63, 63, 2, 63, 63, 63, 63, 63, 2, 2, 2, 63, 63, + 63, 63, 2, 2, 2, 2,157,157,157,157,157,157,157,157,157,157, + 157, 2, 2, 2, 2, 2, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 2, 2, 80, 80, 80, 2, 2, 2, 2, 2,127,127, + 127,127,127,127,127,127,127,127,127,127,127,127,127, 2,166,166, + 166,166,166,166,166,166,166,166, 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 2, 2,115,115,115,115,115,115,115,115,115,115, 115,115,115,115,115, 2,115,115, 2, 2, 2, 2,115,115,159,159, 159,159,159,159,159,159,159,159,159,159,159,159,159, 2,159,159, 2, 2, 2, 2, 2, 2,103,103,103,103,103,103,103,103,103,103, 103,103,103,103, 2, 2,119,119,119,119,119,119,119,119,119,119, 119,119,119,119, 2, 2,119,119, 2,119,119,119,119,119, 2, 2, - 2, 2, 2,119,119,119,146,146,146,146,146,146,146,146,146,146, + 2, 2, 2,119,119,119,167,167,167,167,167,167,167,167,167,167, + 2, 2, 2, 2, 2, 2,146,146,146,146,146,146,146,146,146,146, 146, 2, 2, 2, 2, 2, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 99,136,139, 13, 13,155, 2, 2, 2,136,136,136,136,136,136,136,136,155,155, - 155,155,155,155,155,155,155,155,155,155,155,155, 2, 2,136, 2, - 2, 2, 2, 2, 2, 2, 17, 17, 17, 17, 2, 17, 17, 17, 17, 17, - 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 15, 15, 15, 15, 17, 17, - 17, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 2, 15, 15, - 15, 2, 2, 17, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17,139,139, - 139,139,139,139,139,139,139,139,139,139, 2, 2, 2, 2,105,105, - 105,105,105,105,105,105,105,105,105, 2, 2, 2, 2, 2,105,105, - 105,105,105, 2, 2, 2,105, 2, 2, 2, 2, 2, 2, 2,105,105, - 2, 2,105,105,105,105, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, - 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, - 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 0, 0,131,131,131,131,131,131,131,131,131,131, - 131,131, 2, 2, 2, 2, 2, 2, 2,131,131,131,131,131, 2,131, - 131,131,131,131,131,131, 2, 2, 2, 2, 2, 19, 19, 19, 56, 56, - 56, 56, 56, 56, 56, 2, 56, 2, 2, 56, 56, 56, 56, 56, 56, 56, - 2, 56, 56, 2, 56, 56, 56, 56, 56, 2, 2, 2, 2, 2, 6, 6, - 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,151,151, - 151,151,151,151,151,151,151,151,151,151,151, 2, 2, 2,151,151, - 151,151,151,151, 2, 2,151,151, 2, 2, 2, 2,151,151,160,160, - 160,160,160,160,160,160,160,160,160,160,160,160,160, 2,152,152, - 152,152,152,152,152,152,152,152, 2, 2, 2, 2, 2,152,164,164, - 164,164,164,164,164,164,164,164, 2, 2, 2, 2, 2, 2, 30, 30, - 30, 30, 2, 30, 30, 2,113,113,113,113,113,113,113,113,113,113, - 113,113,113, 2, 2,113,113,113,113,113,113,113,113, 2,132,132, - 132,132,132,132,132,132,132,132,132,132, 2, 2, 2, 2,132,132, - 2, 2, 2, 2,132,132, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3, - 3, 2, 3, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3, - 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 3, - 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, - 3, 3, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 0, 0, 15, 0, + 155,155,155,155,155,155,155,155,155,155,155,155, 2, 2, 2, 2, + 2, 2, 2, 2, 2,155,136, 2, 2, 2, 2, 2, 2, 2, 17, 17, + 17, 17, 2, 17, 17, 17, 17, 17, 17, 17, 2, 17, 17, 2, 17, 15, + 15, 15, 15, 15, 15, 15, 17, 17, 17, 2, 2, 2, 2, 2, 2, 2, + 15, 2, 2, 2, 2, 2, 15, 15, 15, 2, 2, 17, 2, 2, 2, 2, + 2, 2, 17, 17, 17, 17,139,139,139,139,139,139,139,139,139,139, + 139,139, 2, 2, 2, 2,105,105,105,105,105,105,105,105,105,105, + 105, 2, 2, 2, 2, 2,105,105,105,105,105, 2, 2, 2,105, 2, + 2, 2, 2, 2, 2, 2,105,105, 2, 2,105,105,105,105, 1, 1, + 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 0, 0, 2, 2, 0, 2, 2, 0, 0, 2, 2, 0, + 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,131,131, + 131,131,131,131,131,131,131,131,131,131, 2, 2, 2, 2, 2, 2, + 2,131,131,131,131,131, 2,131,131,131,131,131,131,131, 2, 2, + 2, 2, 2, 19, 19, 19, 56, 56, 56, 56, 56, 56, 56, 2, 56, 2, + 2, 56, 56, 56, 56, 56, 56, 56, 2, 56, 56, 2, 56, 56, 56, 56, + 56, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 6,151,151,151,151,151,151,151,151,151,151, + 151,151,151, 2, 2, 2,151,151,151,151,151,151, 2, 2,151,151, + 2, 2, 2, 2,151,151,160,160,160,160,160,160,160,160,160,160, + 160,160,160,160,160, 2,152,152,152,152,152,152,152,152,152,152, + 2, 2, 2, 2, 2,152,164,164,164,164,164,164,164,164,164,164, + 2, 2, 2, 2, 2, 2,168,168,168,168,168,168,168,168,168,168, + 168, 2, 2, 2, 2,168, 30, 30, 30, 30, 2, 30, 30, 2,113,113, + 113,113,113,113,113,113,113,113,113,113,113, 2, 2,113,113,113, + 113,113,113,113,113, 2,132,132,132,132,132,132,132,132,132,132, + 132,132, 2, 2, 2, 2,132,132, 2, 2, 2, 2,132,132, 3, 3, + 3, 3, 2, 3, 3, 3, 2, 3, 3, 2, 3, 2, 2, 3, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 3, + 2, 3, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 3, + 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, + 3, 3, 3, 2, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 15, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, - 2, 0, 0, 0, 0, 0, 13, 2, 2, 2, 2, 2, 2, 2, 13, 13, + 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 2, 2, 0, 13, 2, 2, 2, 2, 2, 2, 2, 13, 13, 13, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -2123,13 +2113,13 @@ _hb_ucd_u8[17884] = 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 18, 19, 20, 9, 21, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 9, + 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -2138,7 +2128,7 @@ _hb_ucd_u8[17884] = 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 24, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2175,23 +2165,29 @@ _hb_ucd_u8[17884] = 132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147, 148,149,150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,162,163, 0, 0, 0, 0, 0, 0, 0,164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,162, 0,163, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,164,165, 0, 0, 0, 0, 0, 0, 0,166, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 167, 0, 0, 0,168,169, 0, 0,170, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,169,170, 0, 0, 0, 0,171,172, 0, 0, 0,173,174,175,176, - 177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192, - 193,194,195,196,197,198,199,200,201,202,203,204,205,206, 0, 0, + 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,176,177, 0, 0, 0, 0,178,179, 0, 0, 0,180,181,182,183, + 184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199, + 200,201,202,203,204,205,206,207,208,209,210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, }; static const uint16_t -_hb_ucd_u16[9344] = +_hb_ucd_u16[10400] = { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, @@ -2210,9 +2206,10 @@ _hb_ucd_u16[9344] = 136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140, 146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140, 48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 168, 169, 48, 48, - 168, 48, 48, 170, 171, 172, 48, 48, 48, 171, 48, 48, 48, 173, 174, 175, - 48, 176, 9, 9, 9, 9, 9, 177, 178, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48, + 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177, + 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183, 48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193, 194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199, @@ -2225,28 +2222,34 @@ _hb_ucd_u16[9344] = 241, 242, 241, 241, 242, 243, 241, 244, 245, 245, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 272, 273, 274, 275, 209, 276, 277, 209, 278, - 279, 279, 279, 279, 279, 279, 279, 279, 280, 209, 281, 209, 209, 209, 209, 282, - 209, 283, 279, 284, 209, 285, 286, 209, 209, 209, 287, 140, 288, 140, 271, 271, - 271, 289, 209, 209, 209, 209, 290, 271, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 291, 292, 209, 209, 293, 209, 209, 209, 209, 209, 209, 294, 209, - 209, 209, 209, 209, 209, 209, 295, 296, 271, 297, 209, 209, 298, 279, 299, 279, - 300, 301, 279, 279, 279, 302, 279, 303, 209, 209, 209, 279, 304, 209, 209, 305, - 209, 306, 209, 209, 209, 209, 209, 209, 9, 9, 9, 11, 11, 11, 307, 308, - 13, 13, 13, 13, 13, 13, 309, 310, 11, 11, 311, 48, 48, 48, 312, 313, - 48, 314, 315, 315, 315, 315, 32, 32, 316, 317, 318, 319, 320, 321, 140, 140, - 209, 322, 209, 209, 209, 209, 209, 323, 209, 209, 209, 209, 209, 324, 140, 209, - 325, 326, 327, 328, 136, 48, 48, 48, 48, 329, 178, 48, 48, 48, 48, 330, - 331, 48, 48, 136, 48, 48, 48, 48, 200, 332, 48, 48, 209, 209, 333, 48, - 209, 334, 335, 209, 336, 337, 209, 209, 335, 209, 209, 337, 209, 209, 209, 209, - 48, 48, 48, 48, 209, 209, 209, 209, 48, 338, 48, 48, 48, 48, 48, 48, - 151, 209, 209, 209, 287, 48, 48, 229, 339, 48, 340, 140, 13, 13, 341, 342, - 13, 343, 48, 48, 48, 48, 344, 345, 31, 346, 347, 348, 13, 13, 13, 349, - 350, 351, 352, 353, 354, 355, 140, 356, 357, 48, 358, 359, 48, 48, 48, 360, - 361, 48, 48, 362, 363, 192, 32, 364, 64, 48, 365, 48, 366, 367, 48, 151, - 76, 48, 48, 368, 369, 370, 371, 372, 48, 48, 373, 374, 375, 376, 48, 377, - 48, 48, 48, 378, 379, 380, 381, 382, 383, 384, 315, 11, 11, 385, 386, 11, - 11, 11, 11, 11, 48, 48, 387, 192, 48, 48, 388, 48, 389, 48, 48, 206, - 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391, + 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 280, 209, 281, 209, 209, 209, 209, 282, 209, 283, 279, 284, 209, 285, 286, 209, + 209, 209, 176, 140, 287, 140, 271, 271, 271, 288, 209, 209, 209, 209, 289, 271, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 290, 291, 209, 209, 292, + 209, 209, 209, 209, 209, 209, 293, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 294, 295, 271, 296, 209, 209, 297, 279, 298, 279, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 279, 279, 279, 279, 279, 279, 279, 279, 299, 300, 279, 279, 279, 301, 279, 302, + 209, 209, 209, 279, 303, 209, 209, 304, 209, 305, 209, 209, 209, 209, 209, 209, + 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309, + 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32, + 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209, + 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329, + 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48, + 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209, + 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 229, + 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345, + 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356, + 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364, + 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372, + 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382, + 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140, 392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48, 48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403, @@ -2257,108 +2260,204 @@ _hb_ucd_u16[9344] = 140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430, 48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140, 9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439, - 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 140, 140, 140, 140, - 48, 48, 48, 314, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, + 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388, + 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, 448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453, 48, 454, 48, 455, 140, 140, 140, 140, 48, 48, 48, 456, 271, 457, 271, 271, 458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467, 48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140, 48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474, - 48, 48, 475, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 271, 476, - 48, 48, 477, 478, 140, 140, 140, 479, 48, 464, 480, 48, 62, 481, 140, 48, - 482, 140, 140, 48, 483, 140, 48, 314, 484, 48, 48, 485, 486, 457, 487, 488, - 222, 48, 48, 489, 490, 48, 196, 192, 491, 48, 492, 493, 494, 48, 48, 495, - 222, 48, 48, 496, 497, 498, 499, 500, 48, 97, 501, 502, 503, 140, 140, 140, - 504, 505, 506, 48, 48, 507, 508, 192, 509, 83, 84, 510, 511, 512, 513, 514, - 48, 48, 48, 515, 516, 517, 478, 140, 48, 48, 48, 518, 519, 192, 140, 140, - 48, 48, 520, 521, 522, 523, 140, 140, 48, 48, 48, 524, 525, 192, 526, 140, - 48, 48, 527, 528, 192, 140, 140, 140, 48, 173, 529, 530, 314, 140, 140, 140, - 48, 48, 501, 531, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 532, - 533, 534, 48, 535, 536, 192, 140, 140, 140, 140, 537, 48, 48, 538, 539, 140, - 540, 48, 48, 541, 542, 543, 48, 48, 544, 545, 546, 48, 48, 48, 48, 196, - 547, 140, 140, 140, 140, 140, 140, 140, 84, 48, 520, 548, 549, 148, 175, 550, - 48, 551, 552, 553, 140, 140, 140, 140, 554, 48, 48, 555, 556, 192, 557, 48, - 558, 559, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 560, - 561, 115, 48, 562, 563, 192, 140, 140, 140, 140, 140, 100, 271, 564, 565, 566, - 48, 207, 140, 140, 140, 140, 140, 140, 272, 272, 272, 272, 272, 272, 567, 568, - 48, 48, 48, 48, 388, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 569, - 48, 48, 48, 570, 571, 572, 140, 140, 48, 48, 48, 48, 314, 140, 140, 140, - 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 573, - 48, 48, 48, 574, 575, 576, 577, 578, 48, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 9, 9, 11, 11, 271, 579, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 580, 581, 582, 582, 583, 584, 140, 140, 140, 140, 585, 586, - 48, 48, 48, 48, 48, 48, 48, 440, 48, 48, 48, 48, 48, 199, 140, 140, - 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 587, - 48, 48, 588, 589, 140, 590, 591, 48, 48, 48, 48, 48, 48, 48, 48, 206, - 48, 48, 48, 48, 48, 48, 71, 151, 196, 592, 593, 140, 140, 140, 140, 140, - 32, 32, 594, 32, 595, 209, 209, 209, 209, 209, 209, 209, 323, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 324, 209, 209, 596, 209, 209, 209, 597, 598, - 599, 209, 600, 209, 209, 209, 288, 140, 209, 209, 209, 209, 601, 140, 140, 140, - 140, 140, 140, 140, 271, 602, 271, 602, 209, 209, 209, 209, 209, 287, 271, 461, - 9, 603, 11, 604, 605, 606, 241, 9, 607, 608, 609, 610, 611, 9, 603, 11, - 612, 613, 11, 614, 615, 616, 617, 9, 618, 11, 9, 603, 11, 604, 605, 11, - 241, 9, 607, 617, 9, 618, 11, 9, 603, 11, 619, 9, 620, 621, 622, 623, - 11, 624, 9, 625, 626, 627, 628, 11, 629, 9, 630, 11, 631, 632, 632, 632, - 32, 32, 32, 633, 32, 32, 634, 635, 636, 637, 45, 140, 140, 140, 140, 140, - 638, 639, 640, 140, 140, 140, 140, 140, 641, 642, 643, 27, 27, 27, 644, 140, - 645, 140, 140, 140, 140, 140, 140, 140, 48, 48, 151, 646, 647, 140, 140, 140, - 140, 48, 648, 140, 48, 48, 649, 650, 140, 140, 140, 140, 140, 48, 651, 192, - 140, 140, 140, 140, 140, 140, 652, 200, 48, 48, 48, 48, 653, 595, 140, 140, - 9, 9, 607, 11, 654, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 499, - 271, 271, 655, 656, 140, 140, 140, 140, 499, 271, 657, 658, 140, 140, 140, 140, - 659, 48, 660, 661, 662, 663, 664, 665, 666, 206, 667, 206, 140, 140, 140, 668, - 209, 209, 669, 209, 209, 209, 209, 209, 209, 323, 334, 670, 670, 670, 209, 324, - 671, 209, 209, 209, 209, 209, 209, 209, 209, 209, 672, 140, 140, 140, 673, 209, - 674, 209, 209, 669, 675, 676, 324, 140, 209, 209, 209, 209, 209, 209, 209, 677, - 209, 209, 209, 209, 209, 678, 426, 426, 209, 209, 209, 209, 209, 209, 209, 679, - 209, 209, 209, 209, 209, 176, 669, 427, 669, 209, 209, 209, 680, 176, 209, 209, - 680, 209, 672, 676, 140, 140, 140, 140, 209, 209, 209, 209, 209, 323, 672, 426, - 675, 209, 209, 681, 682, 669, 675, 675, 209, 683, 209, 209, 288, 140, 140, 192, - 48, 48, 48, 48, 48, 48, 140, 140, 48, 48, 48, 207, 48, 48, 48, 48, - 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 478, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 100, 48, 48, 48, 48, 48, 48, 204, 140, 140, - 48, 204, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 71, 48, 48, 48, - 48, 48, 48, 140, 140, 140, 140, 140, 684, 140, 570, 570, 570, 570, 570, 570, + 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 271, 479, 48, 48, 480, 481, 482, 140, 140, 483, + 48, 464, 484, 48, 62, 485, 140, 48, 486, 140, 140, 48, 487, 140, 48, 313, + 488, 48, 48, 489, 490, 457, 491, 492, 222, 48, 48, 493, 494, 48, 196, 192, + 495, 48, 496, 497, 498, 48, 48, 499, 222, 48, 48, 500, 501, 502, 503, 504, + 48, 97, 505, 506, 507, 140, 140, 140, 508, 509, 510, 48, 48, 511, 512, 192, + 513, 83, 84, 514, 515, 516, 517, 518, 519, 48, 48, 520, 521, 522, 523, 140, + 48, 48, 48, 524, 525, 526, 481, 140, 48, 48, 48, 527, 528, 192, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 529, 530, 531, 532, 140, 140, + 48, 48, 48, 533, 534, 192, 535, 140, 48, 48, 536, 537, 192, 538, 539, 140, + 48, 540, 541, 542, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 505, 543, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 544, + 545, 546, 48, 547, 548, 192, 140, 140, 140, 140, 549, 48, 48, 550, 551, 140, + 552, 48, 48, 553, 554, 555, 48, 48, 556, 557, 558, 48, 48, 48, 48, 196, + 559, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 560, 192, + 84, 48, 529, 561, 562, 148, 175, 563, 48, 564, 565, 566, 140, 140, 140, 140, + 567, 48, 48, 568, 569, 192, 570, 48, 571, 572, 192, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 573, + 574, 115, 48, 575, 576, 577, 140, 140, 140, 140, 140, 100, 271, 578, 579, 580, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, + 272, 272, 272, 272, 272, 272, 581, 582, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 583, + 48, 48, 48, 584, 585, 586, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 71, + 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 587, 588, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 589, + 48, 48, 48, 590, 591, 592, 593, 594, 48, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 595, 48, 596, 192, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 9, 9, 11, 11, 271, 597, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 48, 598, 599, 600, 600, 601, 602, 140, 140, 140, 140, 603, 604, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 440, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 605, + 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 606, + 48, 48, 607, 608, 140, 609, 610, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206, + 48, 48, 48, 48, 48, 48, 71, 151, 196, 611, 612, 140, 140, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 192, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, 140, + 32, 32, 613, 32, 614, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, + 209, 209, 615, 209, 209, 209, 616, 617, 618, 209, 619, 209, 209, 209, 287, 140, + 209, 209, 209, 209, 620, 140, 140, 140, 140, 140, 140, 140, 271, 621, 271, 621, + 209, 209, 209, 209, 209, 338, 271, 461, 140, 140, 140, 140, 140, 140, 140, 140, + 9, 622, 11, 623, 624, 625, 241, 9, 626, 627, 628, 629, 630, 9, 622, 11, + 631, 632, 11, 633, 634, 635, 636, 9, 637, 11, 9, 622, 11, 623, 624, 11, + 241, 9, 626, 636, 9, 637, 11, 9, 622, 11, 638, 9, 639, 640, 641, 642, + 11, 643, 9, 644, 645, 646, 647, 11, 648, 9, 649, 11, 650, 538, 538, 538, + 32, 32, 32, 651, 32, 32, 652, 653, 654, 655, 45, 140, 140, 140, 140, 140, + 656, 657, 658, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 659, 660, 661, 27, 27, 27, 662, 140, 663, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 151, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 666, 140, 48, 48, 667, 668, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 669, 192, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 587, 670, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 671, 200, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 672, 614, 140, 140, + 9, 9, 626, 11, 673, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 503, 271, 271, 674, 675, 140, 140, 140, 140, + 503, 271, 676, 677, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 678, 48, 679, 680, 681, 682, 683, 684, 685, 206, 686, 206, 140, 140, 140, 687, + 209, 209, 688, 209, 209, 209, 209, 209, 209, 322, 333, 689, 689, 689, 209, 323, + 690, 209, 209, 209, 209, 209, 209, 209, 209, 209, 691, 140, 140, 140, 692, 209, + 693, 209, 209, 688, 694, 695, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 696, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 697, 426, 426, + 209, 209, 209, 209, 209, 209, 209, 698, 209, 209, 209, 209, 209, 176, 688, 427, + 688, 209, 209, 209, 699, 176, 209, 209, 699, 209, 691, 688, 695, 140, 140, 140, + 209, 209, 209, 209, 209, 322, 691, 426, 700, 209, 209, 209, 701, 702, 176, 694, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 703, 209, 209, 209, 209, 209, 192, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, + 48, 48, 48, 207, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48, + 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 140, 140, 140, + 704, 140, 584, 584, 584, 584, 584, 584, 140, 140, 140, 140, 140, 140, 140, 140, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140, - 391, 391, 391, 391, 391, 391, 391, 685, 391, 391, 391, 391, 391, 391, 391, 686, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 705, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 706, + 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, + 11, 11, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 57, 58, 59, 60, 60, 60, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 7, 4, 4, 4, 4, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 110, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 112, 112, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 0, + 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 124, 125, 126, 126, 126, 127, + 128, 129, 130, 131, 132, 60, 133, 134, 135, 136, 0, 137, 138, 139, 0, 0, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 141, 142, 143, 143, 143, 143, 144, 11, 145, 146, 147, 4, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 166, 167, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 126, 126, 126, 126, 126, 169, 126, 170, 171, 172, 19, 173, + 19, 19, 19, 19, 174, 19, 175, 176, 177, 178, 19, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 168, 168, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 206, 206, 206, 207, 208, 209, 168, + 210, 211, 212, 213, 214, 168, 215, 216, 217, 218, 219, 220, 221, 222, 223, 168, + 224, 225, 226, 227, 228, 229, 230, 168, 168, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 168, 168, 258, 259, 260, 261, 262, 263, 264, 265, 168, 168, + 266, 168, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 168, 168, 278, + 279, 280, 281, 168, 282, 283, 284, 168, 168, 168, 168, 285, 286, 287, 288, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, 168, + 290, 292, 290, 290, 290, 293, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 294, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 297, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 298, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 301, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, 305, 306, 307, 308, 309, 168, + 168, 168, 168, 168, 168, 310, 168, 168, 168, 311, 312, 168, 313, 314, 315, 316, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, 319, 319, 319, 319, + 319, 319, 319, 320, 321, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 322, + 323, 324, 324, 324, 325, 326, 327, 327, 327, 327, 327, 328, 168, 168, 168, 168, + 329, 330, 331, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 333, 168, 334, 335, 0, 336, + 0, 0, 0, 337, 338, 339, 340, 341, 189, 342, 168, 343, 0, 344, 168, 168, + 0, 345, 346, 347, 348, 349, 0, 0, 0, 0, 350, 0, 0, 0, 0, 351, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 168, 168, 168, 168, 168, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 354, 168, 168, 168, + 355, 356, 357, 168, 358, 359, 168, 168, 168, 168, 360, 361, 168, 168, 168, 168, + 168, 168, 168, 362, 168, 168, 168, 363, 168, 168, 168, 168, 168, 168, 168, 364, + 365, 365, 365, 366, 367, 368, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, + 168, 369, 370, 168, 371, 168, 168, 168, 372, 373, 374, 375, 168, 168, 168, 168, + 376, 0, 377, 378, 0, 0, 379, 380, 381, 382, 168, 168, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 384, 0, 385, + 386, 387, 388, 389, 0, 0, 0, 0, 0, 390, 391, 392, 0, 0, 393, 332, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 394, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 395, 126, 126, 126, + 396, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 397, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 398, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 399, 168, 168, 168, 168, 168, 168, + 126, 126, 126, 126, 126, 126, 126, 126, 399, 168, 168, 168, 168, 168, 168, 168, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 400, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 401, 168, + 402, 0, 168, 168, 7, 7, 7, 403, 0, 1, 2, 3, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 0, 0, 0, 0, 0, 4, 0, 4, 2, 2, 5, 2, 2, 2, 5, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 6, 0, 0, 0, 0, 7, 8, 0, 0, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, - 12, 13, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, 16, 17, 14, 14, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 20, 21, 21, 21, 22, 20, 21, 21, 21, 21, - 21, 23, 24, 25, 25, 25, 25, 25, 25, 26, 25, 25, 25, 27, 28, 26, - 29, 30, 31, 32, 31, 31, 31, 31, 33, 34, 35, 31, 31, 31, 36, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 29, 31, 31, 31, 31, - 37, 38, 37, 37, 37, 37, 37, 37, 37, 39, 31, 31, 31, 31, 31, 31, - 40, 40, 40, 40, 40, 40, 41, 26, 42, 42, 42, 42, 42, 42, 42, 43, - 44, 44, 44, 44, 44, 45, 44, 46, 47, 47, 47, 48, 37, 49, 31, 31, - 31, 50, 51, 31, 31, 31, 31, 31, 31, 31, 31, 31, 52, 31, 31, 31, - 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 53, 55, 53, 53, 53, - 56, 57, 58, 59, 59, 60, 61, 62, 57, 63, 64, 65, 66, 59, 59, 67, - 68, 69, 70, 71, 71, 72, 73, 74, 69, 75, 76, 77, 78, 71, 79, 26, - 80, 81, 82, 83, 83, 84, 85, 86, 81, 87, 88, 26, 89, 83, 90, 91, - 92, 93, 94, 95, 95, 96, 97, 98, 93, 99, 100, 101, 102, 95, 95, 26, - 103, 104, 105, 106, 107, 104, 108, 109, 104, 105, 110, 26, 111, 108, 108, 112, - 113, 114, 115, 113, 113, 115, 113, 116, 114, 117, 118, 119, 120, 113, 121, 113, - 122, 123, 124, 122, 122, 124, 125, 126, 123, 127, 128, 128, 129, 122, 130, 26, - 131, 132, 133, 131, 131, 131, 131, 131, 132, 133, 134, 131, 135, 131, 131, 131, - 136, 137, 138, 139, 137, 137, 140, 141, 138, 142, 143, 137, 144, 137, 145, 26, - 146, 147, 147, 147, 147, 147, 147, 148, 147, 147, 147, 149, 26, 26, 26, 26, - 150, 151, 152, 152, 153, 152, 152, 154, 155, 156, 152, 157, 26, 26, 26, 26, - 158, 158, 158, 158, 158, 158, 158, 158, 158, 159, 158, 158, 158, 160, 159, 158, - 158, 158, 158, 159, 158, 158, 158, 161, 158, 161, 162, 163, 26, 26, 26, 26, - 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, + 0, 0, 0, 0, 7, 8, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 10, 11, 12, 13, 14, 14, 15, 14, 14, 14, + 14, 14, 14, 14, 16, 17, 14, 14, 18, 18, 18, 18, 18, 18, 18, 18, + 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 20, 21, + 21, 21, 22, 20, 21, 21, 21, 21, 21, 23, 24, 25, 25, 25, 25, 25, + 25, 26, 25, 25, 25, 27, 28, 26, 29, 30, 31, 32, 31, 31, 31, 31, + 33, 34, 35, 31, 31, 31, 36, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 29, 31, 31, 31, 31, 37, 38, 37, 37, 37, 37, 37, 37, + 37, 39, 31, 31, 31, 31, 31, 31, 40, 40, 40, 40, 40, 40, 41, 26, + 42, 42, 42, 42, 42, 42, 42, 43, 44, 44, 44, 44, 44, 45, 44, 46, + 47, 47, 47, 48, 37, 49, 31, 31, 31, 50, 51, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 52, 31, 31, 31, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 54, 53, 55, 53, 53, 53, 56, 57, 58, 59, 59, 60, 61, 62, + 57, 63, 64, 65, 66, 59, 59, 67, 68, 69, 70, 71, 71, 72, 73, 74, + 69, 75, 76, 77, 78, 71, 79, 26, 80, 81, 82, 83, 83, 84, 85, 86, + 81, 87, 88, 26, 89, 83, 90, 91, 92, 93, 94, 95, 95, 96, 97, 98, + 93, 99, 100, 101, 102, 95, 95, 26, 103, 104, 105, 106, 107, 104, 108, 109, + 104, 105, 110, 26, 111, 108, 108, 112, 113, 114, 115, 113, 113, 115, 113, 116, + 114, 117, 118, 119, 120, 113, 121, 113, 122, 123, 124, 122, 122, 124, 125, 126, + 123, 127, 128, 128, 129, 122, 130, 26, 131, 132, 133, 131, 131, 131, 131, 131, + 132, 133, 134, 131, 135, 131, 131, 131, 136, 137, 138, 139, 137, 137, 140, 141, + 138, 142, 143, 137, 144, 137, 145, 26, 146, 147, 147, 147, 147, 147, 147, 148, + 147, 147, 147, 149, 26, 26, 26, 26, 150, 151, 152, 152, 153, 152, 152, 154, + 155, 156, 152, 157, 26, 26, 26, 26, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 158, 158, 158, 160, 159, 158, 158, 158, 158, 159, 158, 158, 158, 161, + 158, 161, 162, 163, 26, 26, 26, 26, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, 165, 165, 166, 167, 165, 165, 165, 165, 165, 168, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 170, 170, 170, 170, 170, 170, 170, 170, 170, 171, 172, 171, 170, 170, 170, 170, - 170, 171, 170, 170, 170, 170, 171, 172, 171, 170, 172, 170, 170, 170, 170, 170, - 170, 170, 171, 170, 170, 170, 170, 170, 170, 170, 170, 173, 170, 170, 170, 174, - 170, 170, 170, 175, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 177, 177, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 169, 169, 169, 169, 169, 169, 169, 169, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 171, 172, 171, 170, 170, 170, 170, 170, 171, 170, 170, 170, 170, 171, 172, + 171, 170, 172, 170, 170, 170, 170, 170, 170, 170, 171, 170, 170, 170, 170, 170, + 170, 170, 170, 173, 170, 170, 170, 174, 170, 170, 170, 175, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 177, 177, 178, 178, 178, 178, 178, 178, 178, 178, 179, 179, 179, 180, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 181, 183, 184, 184, 185, 186, 187, 187, 188, 26, 189, 189, 190, 26, 191, 192, 193, 26, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 195, 194, 196, 194, 196, @@ -2368,208 +2467,164 @@ _hb_ucd_u16[9344] = 210, 210, 210, 210, 210, 211, 210, 210, 210, 212, 210, 213, 194, 194, 194, 194, 214, 214, 214, 215, 216, 216, 216, 216, 216, 216, 216, 217, 216, 216, 216, 218, 216, 219, 216, 219, 216, 220, 9, 9, 9, 221, 26, 26, 26, 26, 26, 26, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 222, 222, 222, 222, 222, 224, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 227, 228, - 229, 229, 229, 229, 229, 229, 229, 230, 229, 231, 232, 232, 232, 232, 232, 232, - 18, 233, 165, 165, 165, 165, 165, 234, 225, 26, 235, 9, 236, 237, 238, 239, - 2, 2, 2, 2, 240, 241, 2, 2, 2, 2, 2, 242, 243, 244, 2, 245, - 2, 2, 2, 2, 2, 2, 2, 246, 9, 9, 9, 9, 9, 9, 9, 9, - 14, 14, 247, 247, 14, 14, 14, 14, 247, 247, 14, 248, 14, 14, 14, 247, - 14, 14, 14, 14, 14, 14, 249, 14, 249, 14, 250, 251, 14, 14, 252, 253, - 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 256, 257, - 0, 258, 2, 259, 0, 0, 0, 0, 260, 26, 9, 9, 9, 9, 261, 26, - 0, 0, 0, 0, 262, 263, 4, 0, 0, 264, 0, 0, 2, 2, 2, 2, - 2, 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 258, 26, 26, 26, 0, 266, 26, 26, 0, 0, 0, 0, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, - 0, 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 2, 2, 2, 2, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 271, 272, - 165, 165, 165, 165, 166, 167, 273, 273, 273, 273, 273, 273, 273, 274, 275, 274, - 170, 170, 172, 26, 172, 172, 172, 172, 172, 172, 172, 172, 18, 18, 18, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 26, 26, 26, 26, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 223, 222, 222, 222, 222, 222, 222, + 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 226, 227, + 228, 228, 228, 228, 228, 228, 228, 229, 228, 230, 231, 231, 231, 231, 231, 231, + 18, 232, 165, 165, 165, 165, 165, 233, 224, 26, 234, 9, 235, 236, 237, 238, + 2, 2, 2, 2, 239, 240, 2, 2, 2, 2, 2, 241, 242, 243, 2, 244, + 2, 2, 2, 2, 2, 2, 2, 245, 14, 14, 246, 246, 14, 14, 14, 14, + 246, 246, 14, 247, 14, 14, 14, 246, 14, 14, 14, 14, 14, 14, 248, 14, + 248, 14, 249, 250, 14, 14, 251, 252, 0, 253, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 254, 0, 255, 256, 0, 257, 2, 258, 0, 0, 0, 0, + 259, 26, 9, 9, 9, 9, 260, 26, 0, 0, 0, 0, 261, 262, 4, 0, + 0, 263, 0, 0, 2, 2, 2, 2, 2, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 265, 26, 26, 0, 266, 26, 26, 0, 0, 0, 0, + 267, 267, 267, 267, 267, 267, 267, 267, 0, 0, 0, 0, 0, 0, 268, 0, + 0, 0, 269, 0, 0, 0, 0, 0, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 2, 2, 2, 2, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 271, 272, 165, 165, 165, 165, 166, 167, 273, 273, + 273, 273, 273, 273, 273, 274, 275, 274, 170, 170, 172, 26, 172, 172, 172, 172, + 172, 172, 172, 172, 18, 18, 18, 18, 0, 0, 0, 276, 26, 26, 26, 26, 277, 277, 277, 278, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 279, 26, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 26, 26, 26, 0, 0, 281, 0, 0, 0, 282, 283, 0, 284, 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, 287, 288, 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, - 292, 293, 293, 293, 293, 293, 294, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 169, 295, 0, 0, 293, 293, 293, 293, 0, 0, 0, 0, 296, 297, 290, 290, - 169, 169, 169, 295, 0, 0, 0, 0, 0, 0, 0, 0, 169, 169, 169, 298, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290, 290, 290, 290, 290, 299, + 292, 293, 293, 293, 293, 293, 294, 169, 169, 295, 0, 0, 293, 293, 293, 293, + 0, 0, 0, 0, 276, 296, 290, 290, 169, 169, 169, 295, 0, 0, 0, 0, + 0, 0, 0, 0, 169, 169, 169, 297, 0, 0, 290, 290, 290, 290, 290, 298, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 0, 0, 0, 0, 0, - 277, 277, 277, 277, 277, 277, 277, 277, 0, 0, 0, 0, 0, 0, 0, 0, - 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, - 300, 301, 300, 300, 300, 300, 300, 300, 302, 26, 303, 303, 303, 303, 303, 303, - 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, - 304, 304, 304, 304, 304, 305, 26, 26, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 26, - 0, 0, 0, 0, 307, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 308, 2, 2, 2, 2, 2, 2, 2, 309, 310, 311, 26, 26, 312, 2, - 313, 313, 313, 313, 313, 314, 0, 315, 316, 316, 316, 316, 316, 316, 316, 26, - 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, 317, 320, 53, 53, 53, 53, - 321, 321, 321, 321, 321, 322, 323, 323, 323, 323, 324, 325, 169, 169, 169, 326, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 328, 327, 329, 164, 164, 164, 330, - 331, 331, 331, 331, 331, 331, 332, 26, 331, 333, 331, 334, 164, 164, 164, 164, - 335, 335, 335, 335, 335, 335, 335, 335, 336, 26, 26, 337, 338, 338, 339, 26, - 340, 340, 340, 26, 172, 172, 2, 2, 2, 2, 2, 341, 342, 343, 176, 176, - 176, 176, 176, 176, 176, 176, 176, 176, 338, 338, 338, 338, 338, 344, 338, 345, - 169, 169, 169, 169, 346, 26, 169, 169, 295, 347, 169, 169, 169, 169, 169, 346, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 348, 26, 26, 26, 26, - 349, 26, 350, 351, 25, 25, 352, 353, 354, 25, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 355, 26, 356, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 357, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 358, 31, 31, 31, 31, 31, 31, 359, 26, 26, 26, 26, 31, 31, - 9, 9, 0, 315, 9, 360, 0, 0, 0, 0, 361, 0, 258, 296, 362, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 363, - 364, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 365, 290, 289, 290, - 290, 290, 290, 366, 169, 169, 169, 295, 367, 367, 367, 368, 258, 258, 26, 369, - 370, 371, 370, 370, 372, 370, 370, 373, 370, 374, 370, 374, 26, 26, 26, 26, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 375, - 376, 0, 0, 0, 0, 0, 377, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 253, 0, 378, 379, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 380, - 381, 381, 381, 382, 383, 383, 383, 383, 383, 383, 384, 26, 385, 0, 0, 296, - 386, 386, 386, 386, 387, 388, 389, 389, 389, 390, 391, 391, 391, 391, 391, 392, - 393, 393, 393, 394, 395, 395, 395, 395, 396, 395, 397, 26, 26, 26, 26, 26, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, 399, 399, 399, 399, 399, 399, - 400, 400, 400, 401, 400, 402, 403, 403, 403, 403, 404, 403, 403, 403, 403, 404, - 405, 405, 405, 405, 405, 26, 406, 406, 406, 406, 406, 406, 407, 408, 409, 410, - 409, 410, 411, 409, 412, 409, 412, 413, 26, 26, 26, 26, 26, 26, 26, 26, - 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 414, 414, 414, 415, 26, 414, 414, 416, 26, 414, 26, 26, 26, - 417, 2, 2, 2, 2, 2, 418, 309, 26, 26, 26, 26, 26, 26, 26, 26, - 419, 420, 421, 421, 421, 421, 422, 423, 424, 424, 425, 424, 426, 426, 426, 426, - 427, 427, 427, 428, 429, 427, 26, 26, 26, 26, 26, 26, 430, 430, 431, 432, - 433, 433, 433, 434, 435, 435, 435, 436, 26, 26, 26, 26, 26, 26, 26, 26, - 437, 437, 437, 437, 438, 438, 438, 439, 438, 438, 440, 438, 438, 438, 438, 438, - 441, 442, 443, 444, 445, 445, 446, 447, 445, 448, 445, 448, 449, 449, 449, 449, - 450, 450, 450, 450, 26, 26, 26, 26, 451, 451, 451, 451, 452, 453, 452, 26, - 454, 454, 454, 454, 454, 454, 455, 456, 457, 457, 458, 457, 459, 459, 460, 459, - 461, 461, 462, 463, 26, 464, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 465, 465, 465, 465, 465, 465, 465, 465, 465, 466, 26, 26, 26, 26, 26, 26, - 467, 467, 467, 467, 467, 467, 468, 26, 467, 467, 467, 467, 467, 467, 468, 469, - 470, 470, 470, 470, 470, 26, 470, 471, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 31, 31, 50, - 472, 472, 472, 472, 472, 473, 474, 26, 26, 26, 26, 26, 26, 26, 26, 475, - 476, 476, 476, 476, 476, 26, 477, 477, 477, 477, 477, 478, 26, 26, 479, 479, - 479, 480, 26, 26, 26, 26, 481, 481, 481, 482, 26, 26, 483, 483, 484, 26, - 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, 487, 485, 485, 485, 486, 488, - 489, 489, 489, 489, 489, 489, 489, 489, 490, 491, 492, 492, 492, 493, 492, 494, - 495, 495, 495, 495, 495, 495, 496, 495, 495, 26, 497, 497, 497, 497, 498, 26, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, 500, 137, 501, 26, - 502, 502, 503, 502, 502, 502, 502, 502, 504, 26, 26, 26, 26, 26, 26, 26, - 505, 506, 507, 508, 507, 509, 510, 510, 510, 510, 510, 510, 510, 511, 510, 512, - 513, 514, 515, 516, 516, 517, 518, 519, 514, 520, 521, 522, 523, 524, 524, 26, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, 526, 527, 26, 26, 26, - 528, 528, 528, 528, 528, 528, 528, 528, 528, 26, 528, 529, 26, 26, 26, 26, - 530, 530, 530, 530, 530, 530, 531, 530, 530, 530, 530, 531, 26, 26, 26, 26, - 532, 532, 532, 532, 532, 532, 532, 532, 533, 26, 532, 534, 198, 535, 26, 26, - 536, 536, 536, 536, 536, 536, 536, 537, 536, 537, 26, 26, 26, 26, 26, 26, - 538, 538, 538, 539, 538, 540, 538, 538, 541, 26, 26, 26, 26, 26, 26, 26, - 542, 542, 542, 542, 542, 542, 542, 543, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, - 547, 548, 549, 550, 550, 550, 551, 552, 547, 26, 550, 553, 26, 26, 26, 26, - 26, 26, 26, 26, 554, 555, 554, 554, 554, 554, 554, 555, 556, 26, 26, 26, - 557, 557, 557, 557, 557, 557, 557, 557, 557, 26, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 559, 26, 178, 178, 560, 560, 560, 560, 560, 560, 560, 561, - 53, 562, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 563, 564, 563, 563, 563, 563, 565, 563, 566, 26, 563, 563, 563, 567, 568, 568, - 568, 568, 569, 568, 568, 570, 571, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 572, 573, 574, 574, 574, 574, 572, 575, 574, 26, 574, 576, 577, 578, 579, 579, - 579, 580, 581, 582, 579, 583, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 584, 584, 584, 585, - 586, 586, 587, 586, 586, 586, 586, 588, 586, 586, 586, 589, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 590, 26, 108, 108, 108, 108, 108, 108, 591, 592, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 594, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, 595, 596, 26, - 593, 593, 593, 593, 593, 593, 593, 593, 597, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, 599, 26, - 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 601, 26, 26, 26, 26, 26, - 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, - 602, 602, 602, 602, 602, 602, 602, 602, 603, 26, 26, 26, 26, 26, 26, 26, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 604, 605, 605, 605, 606, 605, 607, 608, 608, - 608, 608, 608, 608, 608, 608, 608, 609, 608, 610, 611, 611, 611, 612, 612, 26, - 613, 613, 613, 613, 613, 613, 613, 613, 614, 26, 613, 615, 615, 613, 613, 616, - 613, 613, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 617, 617, 617, 617, 617, 617, 617, 617, - 617, 617, 617, 618, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 619, 619, 619, 619, 619, 619, 619, 619, 619, 620, 619, 619, 619, 619, 619, 619, - 619, 621, 619, 619, 26, 26, 26, 26, 26, 26, 26, 26, 622, 26, 348, 26, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, 26, - 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, - 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, 625, 26, 26, 26, 26, 26, - 623, 626, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 627, 628, - 629, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 630, 26, 631, 26, 26, 26, 632, 26, 633, 26, 634, 634, - 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, - 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, 635, - 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, 637, 636, 638, - 636, 639, 636, 640, 296, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 9, 9, 9, 9, 9, 641, 9, 9, 221, 26, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 296, 26, 26, 26, 26, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 276, 26, - 0, 0, 0, 0, 258, 364, 0, 0, 0, 0, 0, 0, 642, 643, 0, 644, - 645, 646, 0, 0, 0, 647, 0, 0, 0, 0, 0, 0, 0, 266, 26, 26, - 14, 14, 14, 14, 14, 14, 14, 14, 247, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 296, 26, 0, 0, 296, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 26, 0, 0, 0, 260, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, - 0, 0, 0, 255, 648, 649, 0, 650, 651, 0, 0, 0, 0, 0, 0, 0, - 269, 652, 255, 255, 0, 0, 0, 653, 654, 655, 656, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 658, 26, 659, 660, 657, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 2, 2, 2, 349, 661, 309, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 662, 270, 270, 663, 664, 665, 18, 18, 18, 18, 18, 18, 18, 666, 26, 26, - 26, 667, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 668, 668, 668, 668, 668, 669, 668, 670, 668, 671, 26, 26, 26, 26, 26, 26, - 26, 26, 672, 672, 672, 673, 26, 26, 674, 674, 674, 674, 674, 674, 674, 675, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 676, 676, 676, 676, 676, 677, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 172, 678, 170, 172, - 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, 679, - 679, 679, 679, 679, 679, 679, 679, 679, 680, 679, 681, 26, 26, 26, 26, 26, - 682, 682, 682, 682, 682, 682, 682, 682, 682, 683, 682, 684, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 364, 0, - 0, 0, 0, 0, 0, 0, 378, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 364, 0, 0, 0, 0, 0, 0, 276, 26, 26, 26, 26, 26, 26, 26, 26, - 685, 31, 31, 31, 686, 687, 688, 689, 690, 691, 686, 692, 686, 688, 688, 693, - 31, 694, 31, 695, 696, 694, 31, 695, 26, 26, 26, 26, 26, 26, 51, 26, - 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 296, 26, 0, 258, 364, 0, 364, 0, 364, 0, 0, 0, 276, 26, - 0, 0, 0, 0, 0, 276, 26, 26, 26, 26, 26, 26, 697, 0, 0, 0, - 698, 26, 0, 0, 0, 0, 0, 296, 0, 260, 315, 26, 276, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 699, 0, 378, 0, 378, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 700, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, 0, 296, 260, 26, - 0, 296, 0, 0, 0, 0, 0, 0, 0, 26, 0, 315, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 276, 315, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296, 26, 0, 276, 0, 378, - 0, 260, 0, 0, 0, 0, 0, 269, 276, 697, 0, 296, 0, 260, 0, 260, - 0, 0, 361, 0, 0, 0, 0, 0, 0, 266, 26, 26, 26, 26, 0, 315, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 26, 26, 26, 26, - 277, 277, 277, 277, 277, 277, 277, 348, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 280, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 348, 26, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 701, 26, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 280, 26, 26, 26, 26, - 277, 277, 277, 280, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 702, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 703, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, 299, 299, 299, 299, 299, 299, + 301, 26, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 303, 303, 303, + 303, 303, 303, 303, 303, 304, 26, 26, 18, 18, 18, 18, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 26, 0, 0, 0, 0, 306, 2, 2, 2, + 2, 307, 2, 2, 2, 2, 2, 2, 2, 308, 309, 258, 26, 26, 310, 2, + 311, 311, 311, 311, 311, 312, 0, 265, 313, 313, 313, 313, 313, 313, 313, 26, + 314, 314, 314, 314, 314, 314, 314, 314, 315, 316, 314, 317, 53, 53, 53, 53, + 318, 318, 318, 318, 318, 319, 320, 320, 320, 320, 321, 322, 169, 169, 169, 323, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 325, 324, 326, 164, 164, 164, 327, + 328, 328, 328, 328, 328, 328, 329, 26, 328, 330, 328, 331, 164, 164, 164, 164, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 26, 26, 334, 335, 335, 336, 26, + 337, 337, 337, 26, 172, 172, 2, 2, 2, 2, 2, 338, 339, 340, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 335, 335, 335, 335, 335, 341, 335, 342, + 169, 169, 169, 169, 343, 26, 169, 169, 295, 344, 169, 169, 169, 169, 169, 343, + 26, 26, 26, 26, 26, 26, 26, 26, 277, 277, 277, 277, 277, 280, 277, 277, + 277, 277, 277, 345, 26, 26, 26, 26, 346, 26, 347, 348, 25, 25, 349, 350, + 351, 25, 31, 31, 31, 31, 31, 31, 352, 26, 353, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 354, 31, 31, 355, 31, 31, 31, 31, 31, + 31, 356, 26, 26, 26, 26, 31, 31, 9, 9, 0, 265, 9, 357, 0, 0, + 0, 0, 358, 0, 257, 359, 360, 31, 31, 31, 31, 31, 31, 31, 31, 361, + 362, 0, 0, 0, 1, 2, 2, 3, 1, 2, 2, 3, 363, 290, 289, 290, + 290, 290, 290, 364, 169, 169, 169, 295, 365, 365, 365, 366, 257, 257, 26, 367, + 368, 369, 368, 368, 370, 368, 368, 371, 368, 372, 368, 372, 26, 26, 26, 26, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, 373, + 374, 0, 0, 0, 0, 0, 375, 0, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 252, 0, 376, 377, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 378, + 379, 379, 379, 380, 381, 381, 381, 381, 381, 381, 382, 26, 383, 0, 0, 359, + 384, 384, 384, 384, 385, 386, 387, 387, 387, 388, 389, 389, 389, 389, 389, 390, + 391, 391, 391, 392, 393, 393, 393, 393, 394, 393, 395, 26, 26, 26, 26, 26, + 396, 396, 396, 396, 396, 396, 396, 396, 396, 396, 397, 397, 397, 397, 397, 397, + 398, 398, 398, 399, 398, 400, 401, 401, 401, 401, 402, 401, 401, 401, 401, 402, + 403, 403, 403, 403, 403, 26, 404, 404, 404, 404, 404, 404, 405, 406, 407, 408, + 407, 408, 409, 407, 410, 407, 410, 411, 412, 412, 412, 412, 412, 412, 413, 26, + 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 415, 26, + 414, 414, 416, 26, 414, 26, 26, 26, 417, 2, 2, 2, 2, 2, 418, 419, + 420, 421, 422, 422, 422, 422, 423, 424, 425, 425, 426, 425, 427, 427, 427, 427, + 428, 428, 428, 429, 430, 428, 26, 26, 26, 26, 26, 26, 431, 431, 432, 433, + 434, 434, 434, 435, 436, 436, 436, 437, 438, 438, 438, 438, 439, 439, 439, 440, + 439, 439, 441, 439, 439, 439, 439, 439, 442, 443, 444, 445, 446, 446, 447, 448, + 446, 449, 446, 449, 450, 450, 450, 450, 451, 451, 451, 451, 26, 26, 26, 26, + 452, 452, 452, 452, 453, 454, 453, 26, 455, 455, 455, 455, 455, 455, 456, 457, + 458, 458, 459, 458, 460, 460, 461, 460, 462, 462, 463, 464, 26, 465, 26, 26, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 467, 26, 26, 26, 26, 26, 26, + 468, 468, 468, 468, 468, 468, 469, 26, 468, 468, 468, 468, 468, 468, 469, 470, + 471, 471, 471, 471, 471, 26, 471, 472, 473, 473, 473, 473, 474, 475, 473, 473, + 474, 476, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 31, 31, 31, 50, + 477, 477, 477, 477, 477, 478, 479, 26, 480, 26, 26, 26, 26, 26, 26, 481, + 482, 482, 482, 482, 482, 26, 483, 483, 483, 483, 483, 484, 26, 26, 485, 485, + 485, 486, 26, 26, 26, 26, 487, 487, 487, 488, 26, 26, 489, 489, 490, 26, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 492, 493, 491, 491, 491, 492, 494, + 495, 495, 495, 495, 495, 495, 495, 495, 496, 497, 498, 498, 498, 499, 498, 500, + 501, 501, 501, 501, 501, 501, 502, 501, 501, 26, 503, 503, 503, 503, 504, 26, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 506, 137, 507, 26, + 508, 508, 509, 508, 508, 508, 508, 508, 510, 26, 26, 26, 26, 26, 26, 26, + 511, 512, 513, 514, 513, 515, 516, 516, 516, 516, 516, 516, 516, 517, 516, 518, + 519, 520, 521, 522, 522, 523, 524, 525, 520, 526, 527, 528, 529, 530, 530, 26, + 531, 532, 531, 531, 531, 531, 533, 531, 534, 535, 533, 536, 537, 26, 26, 26, + 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, 539, 540, 26, 26, 26, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 26, 541, 542, 26, 26, 26, 26, + 543, 543, 543, 543, 543, 543, 544, 543, 543, 543, 543, 544, 26, 26, 26, 26, + 545, 545, 545, 545, 545, 545, 545, 545, 546, 26, 545, 547, 198, 548, 26, 26, + 549, 549, 549, 549, 549, 549, 549, 550, 549, 550, 164, 164, 551, 26, 26, 26, + 552, 552, 552, 553, 552, 554, 552, 552, 555, 26, 26, 26, 26, 26, 26, 26, + 556, 556, 556, 556, 556, 556, 556, 557, 26, 26, 26, 26, 558, 558, 558, 558, + 558, 558, 558, 558, 558, 558, 559, 560, 561, 562, 563, 564, 564, 564, 565, 566, + 561, 26, 564, 567, 26, 26, 26, 26, 26, 26, 26, 26, 568, 569, 568, 568, + 568, 568, 568, 569, 570, 26, 26, 26, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 26, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, 26, 178, 178, + 574, 574, 574, 574, 574, 574, 574, 575, 53, 576, 26, 26, 26, 26, 26, 26, + 577, 577, 577, 577, 578, 26, 577, 578, 579, 580, 579, 579, 579, 579, 581, 579, + 582, 26, 579, 579, 579, 583, 584, 584, 584, 584, 585, 584, 584, 586, 587, 26, + 588, 589, 590, 590, 590, 590, 588, 591, 590, 26, 590, 592, 593, 594, 595, 595, + 595, 596, 597, 598, 595, 599, 26, 26, 26, 26, 26, 26, 600, 600, 600, 601, + 602, 602, 603, 602, 602, 602, 602, 604, 602, 602, 602, 605, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 606, 26, 108, 108, 108, 108, 108, 108, 607, 608, + 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 610, 26, 26, 26, 26, + 609, 609, 609, 609, 609, 611, 612, 26, 613, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, 26, + 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 617, 26, 616, 616, 616, 616, + 616, 616, 616, 616, 616, 616, 616, 618, 619, 619, 619, 619, 619, 619, 619, 619, + 620, 26, 26, 26, 26, 26, 26, 26, 621, 621, 621, 621, 621, 621, 621, 622, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 623, + 624, 624, 624, 625, 624, 626, 627, 627, 627, 627, 627, 627, 627, 627, 627, 628, + 627, 629, 630, 630, 630, 631, 631, 26, 632, 632, 632, 632, 632, 632, 632, 632, + 633, 26, 632, 634, 634, 632, 632, 635, 632, 632, 26, 26, 26, 26, 26, 26, + 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638, 638, 638, 638, 638, + 638, 638, 638, 639, 26, 26, 26, 26, 640, 640, 640, 640, 640, 640, 640, 640, + 640, 641, 640, 640, 640, 640, 640, 640, 640, 642, 640, 640, 26, 26, 26, 26, + 26, 26, 26, 26, 643, 26, 345, 26, 644, 644, 644, 644, 644, 644, 644, 644, + 644, 644, 644, 644, 644, 644, 644, 26, 645, 645, 645, 645, 645, 645, 645, 645, + 645, 645, 646, 26, 26, 26, 26, 647, 644, 648, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 649, 650, 651, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 652, 26, 653, 26, + 26, 26, 654, 26, 655, 26, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 657, 658, 658, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 659, 658, 660, 658, 661, 658, 662, 359, 26, 26, 26, + 0, 0, 0, 0, 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, 359, 26, + 9, 9, 9, 9, 9, 663, 9, 9, 221, 26, 0, 0, 0, 0, 0, 0, + 359, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 276, 26, + 0, 0, 0, 0, 257, 362, 0, 0, 0, 0, 0, 0, 664, 665, 0, 666, + 667, 668, 0, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 266, 26, 26, + 246, 26, 26, 26, 26, 26, 26, 26, 0, 0, 359, 26, 0, 0, 359, 26, + 0, 0, 257, 26, 0, 0, 0, 259, 0, 0, 254, 0, 0, 0, 0, 0, + 0, 0, 0, 254, 670, 671, 0, 672, 673, 0, 0, 0, 0, 0, 0, 0, + 269, 674, 254, 254, 0, 0, 0, 675, 676, 677, 678, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 276, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 0, + 679, 679, 679, 679, 679, 679, 679, 679, 679, 680, 26, 681, 682, 679, 26, 26, + 2, 2, 2, 346, 683, 419, 26, 26, 684, 270, 270, 685, 686, 687, 18, 18, + 18, 18, 18, 18, 18, 688, 26, 26, 26, 689, 26, 26, 26, 26, 26, 26, + 690, 690, 690, 690, 690, 691, 690, 692, 690, 693, 26, 26, 26, 26, 26, 26, + 26, 26, 694, 694, 694, 695, 26, 26, 696, 696, 696, 696, 696, 696, 696, 697, + 26, 26, 698, 698, 698, 698, 698, 699, 26, 26, 700, 700, 700, 700, 700, 701, + 26, 26, 26, 26, 172, 702, 170, 172, 703, 703, 703, 703, 703, 703, 703, 703, + 704, 703, 705, 26, 26, 26, 26, 26, 706, 706, 706, 706, 706, 706, 706, 706, + 706, 707, 706, 708, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 362, 0, + 0, 0, 0, 0, 0, 0, 376, 26, 362, 0, 0, 0, 0, 0, 0, 276, + 709, 31, 31, 31, 710, 711, 712, 713, 714, 715, 710, 716, 710, 712, 712, 717, + 31, 718, 31, 719, 720, 718, 31, 719, 26, 26, 26, 26, 26, 26, 721, 26, + 0, 0, 0, 0, 0, 359, 0, 0, 0, 0, 359, 26, 0, 257, 362, 0, + 362, 0, 362, 0, 0, 0, 276, 26, 0, 0, 0, 0, 0, 276, 26, 26, + 26, 26, 26, 26, 722, 0, 0, 0, 723, 26, 0, 0, 0, 0, 0, 359, + 0, 259, 265, 26, 276, 26, 26, 26, 0, 0, 0, 724, 0, 376, 0, 376, + 0, 0, 0, 0, 0, 0, 257, 725, 0, 0, 0, 265, 0, 359, 259, 26, + 0, 359, 0, 0, 0, 0, 0, 0, 0, 26, 0, 265, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 276, 0, 359, 265, 26, 26, 26, 26, 26, 26, 26, + 0, 0, 359, 26, 0, 276, 0, 376, 0, 726, 0, 0, 0, 0, 0, 0, + 257, 722, 0, 727, 0, 265, 0, 259, 0, 0, 358, 0, 0, 0, 0, 0, + 277, 277, 277, 277, 26, 26, 26, 26, 277, 277, 277, 277, 277, 277, 277, 345, + 277, 277, 277, 280, 277, 277, 277, 277, 277, 277, 277, 277, 345, 26, 277, 277, + 277, 277, 277, 277, 728, 26, 277, 277, 277, 277, 277, 280, 26, 26, 26, 26, + 277, 729, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 26, 26, + 730, 26, 26, 26, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0, @@ -2732,17 +2787,24 @@ _hb_ucd_u16[9344] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1602,1603,1934,1935,1574,1575, 1576,1577,1579,1580,1581,1583,1584, 0,1585,1587,1588,1589,1591, 0,1592, 0, 1593,1594, 0,1595,1596, 0,1598,1599,1600,1601,1604,1582,1578,1590,1597, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0,1937, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1939,1940, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1944,1943, 0,1945, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1946,1947, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1949,1950, - 1951,1952,1953,1954,1955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1956,1957,1958,1960,1959, - 1961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0,1939, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1940, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1941,1942, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1943,1944, 0, 0, 0, + 0, 0, 0,1945, 0,1946, 0, 0, 0, 0, 0, 0, 0, 0,1947, 0, + 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1950, 0,1949,1951, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1953,1952, 0,1954, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1955,1956, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1957, 0, 0, 0, 0, 0, 0, 0, + 0,1958,1961,1959,1965,1960,1962,1964,1963, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1967,1966,1968, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1969,1970, + 1971,1972,1973,1974,1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1976,1977,1978,1980,1979, + 1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, @@ -2799,12 +2861,12 @@ _hb_ucd_i16[196] = static inline uint_fast8_t _hb_ucd_gc (unsigned u) { - return u<1114110u?_hb_ucd_u8[6808+(((_hb_ucd_u8[1312+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; + return u<1114110u?_hb_ucd_u8[6472+(((_hb_ucd_u8[816+(((_hb_ucd_u16[((_hb_ucd_u8[272+(((_hb_ucd_u8[u>>1>>3>>4>>4])<<4)+((u>>1>>3>>4)&15u))])<<4)+((u>>1>>3)&15u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; } static inline uint_fast8_t _hb_ucd_ccc (unsigned u) { - return u<125259u?_hb_ucd_u8[8800+(((_hb_ucd_u8[8244+(((_hb_ucd_u8[7784+(((_hb_ucd_u8[7432+(((_hb_ucd_u8[7186+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; + return u<125259u?_hb_ucd_u8[8504+(((_hb_ucd_u8[7936+(((_hb_ucd_u8[7460+(((_hb_ucd_u8[7100+(((_hb_ucd_u8[6854+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; } static inline unsigned _hb_ucd_b4 (const uint8_t* a, unsigned i) @@ -2814,107 +2876,76 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i) static inline int_fast16_t _hb_ucd_bmg (unsigned u) { - return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9548+(((_hb_ucd_u8[9428+(((_hb_ucd_b4(9300+_hb_ucd_u8,u>>2>>3>>3))<<3)+((u>>2>>3)&7u))])<<3)+((u>>2)&7u))])<<2)+((u)&3u)]:0; + return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9252+(((_hb_ucd_u8[9132+(((_hb_ucd_b4(9004+_hb_ucd_u8,u>>2>>3>>3))<<3)+((u>>2>>3)&7u))])<<3)+((u>>2)&7u))])<<2)+((u)&3u)]:0; } static inline uint_fast8_t _hb_ucd_sc (unsigned u) { - return u<918000u?_hb_ucd_u8[11070+(((_hb_ucd_u16[2048+(((_hb_ucd_u8[10334+(((_hb_ucd_u8[9884+(u>>3>>4>>4)])<<4)+((u>>3>>4)&15u))])<<4)+((u>>3)&15u))])<<3)+((u)&7u))]:2; + return u<918000u?_hb_ucd_u8[10486+(((_hb_ucd_u16[3744+(((_hb_ucd_u16[2624+(((_hb_ucd_u8[9588+(u>>3>>3>>4)])<<4)+((u>>3>>3)&15u))])<<3)+((u>>3)&7u))])<<3)+((u)&7u))]:2; } static inline uint_fast16_t _hb_ucd_dm (unsigned u) { - return u<195102u?_hb_ucd_u16[6032+(((_hb_ucd_u8[17084+(((_hb_ucd_u8[16702+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; + return u<195102u?_hb_ucd_u16[6976+(((_hb_ucd_u8[16716+(((_hb_ucd_u8[16334+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; } #elif !defined(HB_NO_UCD_UNASSIGNED) static const uint8_t -_hb_ucd_u8[14752] = +_hb_ucd_u8[17524] = { - 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 11, 12, 13, 13, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 22, 22, 22, 22, 24, 7, 7, - 25, 26, 22, 22, 22, 27, 28, 29, 22, 30, 31, 32, 33, 34, 35, 36, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7, 7, 41, 22, 42, - 7, 7, 43, 7, 44, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 46, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 47, + 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 6, 5, 5, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 5, 17, 15, 18, 19, 20, 21, 22, 23, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 24, 25, 26, 5, 27, 28, + 5, 29, 30, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 31, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 33, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 34, 35, 36, 37, 38, 39, 34, 34, 34, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 69, 72, 73, - 69, 69, 64, 74, 64, 64, 75, 76, 77, 78, 79, 80, 81, 82, 69, 83, - 84, 85, 86, 87, 88, 89, 69, 69, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 90, 34, 34, 34, 34, - 91, 34, 34, 34, 34, 34, 34, 34, 34, 92, 34, 34, 93, 94, 95, 96, - 97, 98, 99,100,101,102,103,104, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,105, - 106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107, - 107,107, 34, 34,108,109,110,111, 34, 34,112,113,114,115,116,117, - 118,119,120,121,122,123,124,125,126,127,128,129, 34, 34,130,131, - 132,133,134,135,136,137,138,139,140,141,142,122,143,144,145,146, - 147,148,149,150,151,152,153,122,154,155,122,156,157,158,159,122, - 160,161,162,163,164,165,166,122,167,168,169,170,122,171,172,173, - 34, 34, 34, 34, 34, 34, 34,174,175, 34,176,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,177, - 34, 34, 34, 34, 34, 34, 34, 34,178,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122, 34, 34, 34, 34,179,122,122,122, - 34, 34, 34, 34,180,181,182,183,122,122,122,122,184,185,186,187, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,188, - 34, 34, 34, 34, 34, 34, 34, 34, 34,189,190,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,122,191, - 34, 34,192, 34, 34,193,122,122,122,122,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,194,195,122,122,122,122,122,122, - 122,122,122,122,122,122,122,122,122,122,122,122,122,122,196,197, - 69,198,199,200,201,202,203,122,204,205,206,207,208,209,210,211, - 69, 69, 69, 69,212,213,122,122,122,122,122,122,122,122,214,122, - 215,216,217,122,122,218,122,122,122,219,122,122,122,122,122,220, - 34,221,222,122,122,122,122,122,223,224,225,122,226,227,122,122, - 228,229,230,231,232,122, 69,233, 69, 69, 69, 69, 69,234,235,236, - 237,238, 69, 69,239,240, 69,241,122,122,122,122,122,122,122,122, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,242, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,243, 34, - 244, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,245, 34, 34, - 34, 34, 34, 34, 34, 34, 34,246, 34, 34, 34, 34,247,122,122,122, - 34, 34, 34, 34,248,122,122,122,122,122,122,122,122,122,122,122, - 34, 34, 34, 34, 34, 34,249, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34,250,122,122,122,122,122,122,122,122, - 251,122,252,253,122,122,122,122,122,122,122,122,122,122,122,122, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,254, - 107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,255, + 16, 17, 18, 19, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 33, 41, 42, 43, 44, 45, + 46, 47, 48, 39, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 49, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 50, 17, 17, 17, 51, 17, 52, 53, 54, 55, 56, 57, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 58, 59, 59, 59, 59, 59, 59, 59, 59, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 17, 61, 62, 17, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 17, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 17, 17, 17, 97, 98, 99,100,100,100,100,100,100,100,100,100,101, + 17, 17, 17, 17,102, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17,103, 17, 17,104,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,105,100,100,100,100,100,100, 17, 17,106,107,100,108,109,110, + 17, 17, 17, 17, 17, 17, 17,111, 17, 17, 17, 17,112,113,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,114, + 17,115,116,100,100,100,100,100,100,100,100,100,117,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,118, 39,119,120, + 121,122,123,124,125,126,127,128, 39, 39,129,100,100,100,100,130, + 131,132,133,100,134,135,100,136,137,138,100,100,139,140,141,100, + 142,143,144,145, 39, 39,146,147,148, 39,149,150,100,100,100,100, + 17, 17, 17, 17, 17, 17,151, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17,152,153, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,154, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,155, 17, 17,156,100, + 100,100,100,100,100,100,100,100, 17, 17,157,100,100,100,100,100, + 17, 17, 17,158, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17,159,100,100,100,100,100,100,100,100,100,100,100,100, + 160,161,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,162, + 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,163, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, @@ -2951,7 +2982,7 @@ _hb_ucd_u8[14752] = 43, 43, 40, 21, 2, 81, 57, 20, 36, 36, 36, 43, 43, 75, 43, 43, 43, 43, 75, 43, 75, 43, 43, 44, 2, 2, 2, 2, 2, 2, 2, 64, 36, 36, 36, 36, 70, 43, 44, 64, 36, 36, 36, 36, 36, 61, 44, 44, - 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 44, 43, 43, 43, 43, + 36, 36, 36, 36, 82, 36, 36, 61, 65, 44, 44, 57, 43, 43, 43, 43, 36, 36, 36, 36, 83, 43, 43, 43, 43, 84, 43, 43, 43, 43, 43, 43, 43, 85, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 85, 71, 86, 87, 43, 43, 43, 85, 86, 87, 86, 70, 43, 43, 43, 36, 36, 36, 36, @@ -3024,13 +3055,13 @@ _hb_ucd_u8[14752] = 85, 85, 87, 43, 43, 43, 85, 86, 86, 87, 43, 43, 43, 43, 80, 57, 2, 2, 2, 88, 2, 2, 2, 44, 43, 43, 43, 43, 43, 43, 43,109, 43, 43, 43, 43, 43, 43, 43, 80, 43, 43, 98, 36, 36, 36, 36, 36, - 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 44, - 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 64, + 36, 36, 85, 43, 43, 85, 85, 86, 86, 85, 98, 36, 36, 36, 61, 2, + 97, 67, 67, 67, 67, 50, 43, 43, 43, 43, 67, 67, 67, 67, 21, 2, 43, 98, 36, 36, 36, 36, 36, 36, 94, 43, 43, 86, 43, 87, 43, 36, 36, 36, 36, 85, 43, 86, 87, 87, 43, 86, 44, 44, 44, 44, 2, 2, 36, 36, 86, 86, 86, 86, 43, 43, 43, 43, 86, 43, 44, 93, 2, 2, 7, 7, 7, 7, 7, 44, 62, 36, 36, 36, 36, 36, 40, 40, 40, 2, - 16, 16, 16, 16,110, 44, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11, + 16, 16, 16, 16, 34,110, 44, 44, 11, 11, 11, 11, 11, 47, 48, 11, 2, 2, 2, 2, 44, 44, 44, 44, 43, 60, 43, 43, 43, 43, 43, 43, 85, 43, 43, 43, 71, 36, 70, 36, 36, 36, 71, 94, 43, 61, 44, 44, 16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 45, 16, 16, @@ -3058,33 +3089,33 @@ _hb_ucd_u8[14752] = 67, 67, 67, 67, 4, 4, 67, 67, 8, 67, 67, 67,145,146, 67, 67, 67, 67, 67, 67, 67, 67,144, 67, 67, 67, 67, 67, 67, 26, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, - 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, - 67, 67, 67, 67, 67, 92, 44, 44, 27, 27, 27, 27, 27, 27, 67, 67, - 67, 67, 67, 67, 67, 27, 27, 27, 67, 67, 67, 26, 67, 67, 67, 67, - 26, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 8, 8, 8, 8, - 67, 67, 67, 67, 67, 67, 67, 26, 67, 67, 67, 67, 4, 4, 4, 4, - 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, - 8, 8,129,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, - 8,129,148,148,148,148,148,148,148,148,148,148,147, 8, 8, 8, - 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, - 8, 8,144, 26, 8, 8,144, 67, 67, 67, 44, 67, 67, 67, 67, 67, - 67, 67, 67, 55, 67, 67, 67, 67, 32, 11, 32, 34, 34, 34, 34, 11, - 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,140, 67, 67,138, 34,149, - 43, 32, 44, 44, 93, 2, 99, 2, 16, 16, 16,150, 44, 44,150, 44, - 36, 36, 36, 36, 44, 44, 44, 52, 64, 44, 44, 44, 44, 44, 44, 57, - 36, 36, 36, 61, 44, 44, 44, 44, 36, 36, 36, 61, 36, 36, 36, 61, - 2,121,121, 2,125,126,121, 2, 2, 2, 2, 6, 2,108,121, 2, - 121, 4, 4, 4, 4, 2, 2, 88, 2, 2, 2, 2, 2,120, 2, 2, - 108,151, 2, 2, 2, 2, 2, 2, 67, 2,152,148,148,148,153, 44, - 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, - 67, 67, 67, 44, 44, 44, 44, 44, 1, 2,154,155, 4, 4, 4, 4, - 4, 67, 4, 4, 4, 4,156,157,158,105,105,105,105, 43, 43, 86, - 159, 40, 40, 67,105,160, 63, 67, 36, 36, 36, 61, 57,161,162, 69, - 36, 36, 36, 36, 36, 63, 40, 69, 44, 44, 62, 36, 36, 36, 36, 36, - 67, 27, 27, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 55, - 67, 67, 67, 67, 67, 67, 67, 92, 27, 27, 27, 27, 27, 67, 67, 67, - 67, 67, 67, 67, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, - 36, 36, 83, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,164, 2, + 8, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 92, 44, 44, + 27, 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, + 67, 67, 67, 26, 67, 67, 67, 67, 26, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 8, 8, 8, 8, 67, 67, 67, 67, 67, 67, 67, 26, + 67, 67, 67, 67, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27, + 27, 27, 67, 67, 67, 67, 67, 67, 8, 8,129,147, 8, 8, 8, 8, + 8, 8, 8, 4, 4, 4, 4, 4, 8,129,148,148,148,148,148,148, + 148,148,148,148,147, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, + 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,144, 26, 8, 8,144, 67, + 67, 67, 44, 67, 67, 67, 67, 67, 67, 67, 67, 55, 67, 67, 67, 67, + 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11, + 32, 32,140, 67, 67,138, 34,149, 43, 32, 44, 44, 93, 2, 99, 2, + 16, 16, 16,150, 44, 44,150, 44, 36, 36, 36, 36, 44, 44, 44, 52, + 64, 44, 44, 44, 44, 44, 44, 57, 36, 36, 36, 61, 44, 44, 44, 44, + 36, 36, 36, 61, 36, 36, 36, 61, 2,121,121, 2,125,126,121, 2, + 2, 2, 2, 6, 2,108,121, 2,121, 4, 4, 4, 4, 2, 2, 88, + 2, 2, 2, 2, 2,120, 2, 2,108,151, 2, 2, 2, 2, 2, 2, + 67, 2,152,148,148,148,153, 44, 67, 67, 67, 67, 67, 55, 67, 67, + 67, 67, 44, 44, 44, 44, 44, 44, 67, 67, 67, 44, 44, 44, 44, 44, + 1, 2,154,155, 4, 4, 4, 4, 4, 67, 4, 4, 4, 4,156,157, + 158,105,105,105,105, 43, 43, 86,159, 40, 40, 67,105,160, 63, 67, + 36, 36, 36, 61, 57,161,162, 69, 36, 36, 36, 36, 36, 63, 40, 69, + 44, 44, 62, 36, 36, 36, 36, 36, 67, 27, 27, 67, 67, 67, 67, 67, + 67, 67, 67, 44, 44, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, 92, + 27, 27, 27, 27, 27, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, + 163, 27, 27, 27, 27, 27, 27, 27, 36, 36, 83, 36, 36, 36, 36, 36, + 67, 67, 67, 92, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36,164, 2, 7, 7, 7, 7, 7, 36, 44, 44, 32, 32, 32, 32, 32, 32, 32, 70, 51,165, 43, 43, 43, 43, 43, 88, 32, 32, 32, 32, 32, 32, 40, 43, 36, 36, 36,105,105,105,105,105, 43, 2, 2, 2, 44, 44, 44, 44, @@ -3092,7 +3123,7 @@ _hb_ucd_u8[14752] = 16, 32, 32, 32, 32, 32, 32, 32, 45, 16, 16, 16, 34, 34, 34, 32, 32, 32, 32, 32, 42,166, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, - 32, 32, 11, 11, 34,110, 44, 44, 32,150,150, 32, 32, 44, 44, 44, + 32, 32, 11, 11, 34, 34, 32, 44, 32,150,150, 32, 32, 32, 47, 44, 44, 40,167, 35, 40, 35, 36, 36, 36, 71, 36, 71, 36, 70, 36, 36, 36, 94, 87, 85, 67, 67, 80, 44, 27, 27, 27, 67,168, 44, 44, 44, 36, 36, 2, 2, 44, 44, 44, 44, 86, 36, 36, 36, 36, 36, 36, 36, @@ -3153,8 +3184,10 @@ _hb_ucd_u8[14752] = 36, 61, 44, 44, 27, 27, 27, 27, 36, 44, 44, 44, 93, 2, 64, 44, 44, 44, 44, 44,179, 27, 27, 27, 11, 47, 44, 44, 44, 44, 44, 44, 16,110, 44, 44, 44, 27, 27, 27, 36, 36, 43, 43, 44, 44, 44, 44, - 27, 27, 27, 27, 27, 27, 27,100, 36, 36, 36, 36, 36, 57,184, 44, - 36, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 43, + 7, 7, 7, 7, 7, 36, 36, 69, 11, 11, 11, 44, 57, 43, 43,159, + 16, 16, 16, 44, 44, 44, 44, 8, 27, 27, 27, 27, 27, 27, 27,100, + 36, 36, 36, 36, 36, 57,184, 44, 36, 44, 44, 44, 44, 44, 44, 44, + 44, 36, 61, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43, 43, 27, 27, 27, 95, 44, 44, 44, 44,180, 27, 30, 2, 2, 44, 44, 44, 36, 43, 43, 2, 2, 44, 44, 44, 36, 36,183, 27, 27, 27, 44, 44, 87, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, @@ -3172,14 +3205,18 @@ _hb_ucd_u8[14752] = 86, 87, 43, 43, 43, 80, 44, 44, 43, 86, 62, 36, 36, 36, 61, 62, 61, 36, 62, 36, 36, 57, 71, 86, 85, 86, 90, 89, 90, 89, 86, 44, 61, 44, 44, 89, 44, 44, 62, 36, 36, 86, 44, 43, 43, 43, 80, 44, - 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 94, 86, 43, 43, 43, 43, - 86, 43, 85, 71, 36, 63, 2, 2, 7, 7, 7, 7, 7, 2, 93, 71, - 86, 87, 43, 43, 85, 85, 86, 87, 85, 43, 36, 72, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 36, 36, 94, 86, 43, 43, 44, 86, 86, 43, 87, - 60, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 44, - 86, 87, 43, 43, 43, 85, 87, 87, 60, 2, 61, 44, 44, 44, 44, 44, - 2, 2, 2, 2, 2, 2, 64, 44, 36, 36, 36, 36, 36, 70, 87, 86, - 43, 43, 43, 87, 63, 44, 44, 44, 86, 43, 43, 87, 43, 43, 44, 44, + 43, 43, 80, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 62, 44, 61, + 36, 36, 36, 62, 86, 87, 43, 43, 80, 90, 89, 89, 86, 90, 86, 85, + 71, 71, 2, 93, 64, 44, 44, 44, 57, 80, 44, 44, 44, 44, 44, 44, + 36, 36, 94, 86, 43, 43, 43, 43, 86, 43, 85, 71, 36, 63, 2, 2, + 7, 7, 7, 7, 7, 2, 93, 71, 86, 87, 43, 43, 85, 85, 86, 87, + 85, 43, 36, 72, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 94, + 86, 43, 43, 44, 86, 86, 43, 87, 60, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 36, 36, 43, 44, 86, 87, 43, 43, 43, 85, 87, 87, + 60, 2, 61, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 2, 64, 44, + 36, 36, 36, 36, 36, 70, 87, 86, 43, 43, 43, 87, 63, 44, 44, 44, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 44, 44, 44, 44, 44, 44, + 36, 36, 36, 36, 36, 61, 57, 87, 86, 43, 43, 87, 43, 43, 44, 44, 7, 7, 7, 7, 7, 27, 2, 97, 43, 43, 43, 43, 87, 60, 44, 44, 27,100, 44, 44, 44, 44, 44, 62, 36, 36, 36, 61, 62, 44, 36, 36, 36, 36, 62, 61, 36, 36, 36, 36, 86, 86, 86, 89, 90, 57, 85, 71, @@ -3189,49 +3226,52 @@ _hb_ucd_u8[14752] = 2, 2, 2, 59, 44, 44, 44, 44, 70, 43, 43, 85, 87, 43, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 85, 43, 2, 72, 2, 2, 64, 44, 44, 44, 44, 44, 44, 2, 2, 2, 2, 2, 44, 44, 44, - 43, 43, 43, 80, 43, 43, 43, 87, 63, 2, 2, 44, 44, 44, 44, 44, - 2, 36, 36, 36, 36, 36, 36, 36, 44, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 89, 43, 43, 43, 85, 43, 87, 80, 44, 44, 44, 44, - 36, 36, 36, 61, 36, 62, 36, 36, 70, 43, 43, 80, 44, 80, 43, 57, - 43, 43, 43, 70, 44, 44, 44, 44, 36, 36, 36, 62, 61, 36, 36, 36, - 36, 36, 36, 36, 36, 86, 86, 90, 43, 89, 87, 87, 61, 44, 44, 44, - 36, 70, 85,107, 64, 44, 44, 44, 43, 94, 36, 36, 36, 36, 36, 36, - 36, 36, 86, 43, 43, 80, 44, 86, 85, 60, 2, 2, 2, 2, 2, 2, + 63, 44, 44, 44, 44, 44, 44, 44, 43, 43, 43, 80, 43, 43, 43, 87, + 63, 2, 2, 44, 44, 44, 44, 44, 2, 36, 36, 36, 36, 36, 36, 36, + 44, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 89, 43, 43, 43, + 85, 43, 87, 80, 44, 44, 44, 44, 36, 36, 36, 61, 36, 62, 36, 36, + 70, 43, 43, 80, 44, 80, 43, 57, 43, 43, 43, 70, 44, 44, 44, 44, + 36, 36, 36, 62, 61, 36, 36, 36, 36, 36, 36, 36, 36, 86, 86, 90, + 43, 89, 87, 87, 61, 44, 44, 44, 36, 70, 85,107, 64, 44, 44, 44, + 43, 94, 36, 36, 36, 36, 36, 36, 36, 36, 86, 43, 43, 80, 44, 86, + 85, 60, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 80, 44, 44, 27, 27, 91, 67, 67, 67, 56, 20,168, 67, 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 44, 44, 93,105,105,105,105,105,105,105,181, 2, 2, 64, 44, 44, 44, 44, 44, 63, 64, 44, 44, 44, 44, 44, 44, 65, 65, 65, 65, 65, 65, 65, 65, 71, 36, 36, 70, 43, 43, 43, 43, - 43, 43, 43, 44, 44, 44, 44, 44, 43, 43, 60, 44, 44, 44, 44, 44, + 43, 43, 43, 44, 44, 44, 44, 44, 36, 36, 36, 36, 36, 36, 36, 43, + 43, 43, 43, 43, 43, 86, 87, 43, 43, 43, 60, 44, 44, 44, 44, 44, 43, 43, 43, 60, 2, 2, 67, 67, 40, 40, 97, 44, 44, 44, 44, 44, 7, 7, 7, 7, 7,179, 27, 27, 27, 62, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 44, 44, 62, 36, 27, 27, 27, 30, 2, 64, 44, 44, + 36, 36, 36, 36, 44, 44, 62, 36, 40, 69, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 83,164, 2, 27, 27, 27, 30, 2, 64, 44, 44, 36, 36, 36, 36, 36, 61, 44, 57, 94, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 44, 44, 44, 57, 43, 74, 40, 40, 40, 40, 40, 40, 40, 88, 80, 44, 44, 44, 44, 44, - 86, 44, 44, 44, 44, 44, 44, 44, 40, 40, 52, 40, 40, 40, 52, 81, - 36, 61, 44, 44, 44, 44, 44, 44, 44, 61, 44, 44, 44, 44, 44, 44, - 36, 61, 62, 44, 44, 44, 44, 44, 44, 44, 36, 36, 44, 44, 44, 44, - 36, 36, 36, 36, 36, 44, 50, 60, 65, 65, 44, 44, 44, 44, 44, 44, - 43, 43, 43, 43, 43, 43, 43, 44, 43, 43, 43, 80, 44, 44, 44, 44, - 67, 67, 67, 92, 55, 67, 67, 67, 67, 67,186, 87, 43, 67,186, 86, - 86,187, 65, 65, 65, 84, 43, 43, 43, 76, 50, 43, 43, 43, 67, 67, - 67, 67, 67, 67, 67, 43, 43, 67, 67, 43, 76, 44, 44, 44, 44, 44, - 27, 27, 44, 44, 44, 44, 44, 44, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 16, 16,110, 16, 16, 16, 16, 16, 11, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 47, 11, 44, 47, 48, 47, 48, 11, 47, 11, - 11, 11, 11, 16, 16,150,150, 16, 16, 16,150, 16, 16, 16, 16, 16, - 16, 16, 11, 48, 11, 47, 48, 11, 11, 11, 47, 11, 11, 11, 47, 16, - 16, 16, 16, 16, 11, 48, 11, 47, 11, 11, 47, 47, 44, 11, 11, 11, - 47, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 16, 16, 16, 44, 11, 11, 11, 11, - 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, - 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, - 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, - 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 44, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 43, 43, 43, 76, 67, 50, 43, 43, + 86, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 62, + 40, 40, 52, 40, 40, 40, 52, 81, 36, 61, 44, 44, 44, 44, 44, 44, + 44, 61, 44, 44, 44, 44, 44, 44, 36, 61, 62, 44, 44, 44, 44, 44, + 44, 44, 36, 36, 44, 44, 44, 44, 36, 36, 36, 36, 36, 44, 50, 60, + 65, 65, 44, 44, 44, 44, 44, 44, 43, 43, 43, 43, 43, 43, 43, 44, + 43, 43, 43, 80, 44, 44, 44, 44, 67, 67, 67, 92, 55, 67, 67, 67, + 67, 67,186, 87, 43, 67,186, 86, 86,187, 65, 65, 65, 84, 43, 43, + 43, 76, 50, 43, 43, 43, 67, 67, 67, 67, 67, 67, 67, 43, 43, 67, + 67, 43, 76, 44, 44, 44, 44, 44, 27, 27, 44, 44, 44, 44, 44, 44, + 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 16, 16, 16,110, 16, 16, 16, 16, 16, + 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 47, 11, + 44, 47, 48, 47, 48, 11, 47, 11, 11, 11, 11, 16, 16,150,150, 16, + 16, 16,150, 16, 16, 16, 16, 16, 16, 16, 11, 48, 11, 47, 48, 11, + 11, 11, 47, 11, 11, 11, 47, 16, 16, 16, 16, 16, 11, 48, 11, 47, + 11, 11, 47, 47, 44, 11, 11, 11, 47, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, + 16, 16, 16, 44, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, + 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, + 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, + 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, + 16, 33, 16, 16, 16, 32, 44, 7, 43, 43, 43, 76, 67, 50, 43, 43, 43, 43, 43, 43, 43, 43, 76, 67, 67, 67, 50, 67, 67, 67, 67, 67, 67, 67, 76, 21, 2, 2, 44, 44, 44, 44, 44, 44, 44, 57, 43, 43, 16, 16, 16, 16, 16, 39, 16, 16, 16, 16, 16, 16, 16, 16, 16,110, @@ -3241,22 +3281,23 @@ _hb_ucd_u8[14752] = 43, 43, 43, 74, 40, 40, 40, 44, 7, 7, 7, 7, 7, 44, 44, 77, 36, 36, 36, 36, 36, 36, 36, 80, 36, 36, 36, 36, 36, 36, 43, 43, 7, 7, 7, 7, 7, 44, 44, 96, 36, 36, 36, 36, 36, 83, 43, 43, - 36, 36, 36, 61, 36, 36, 62, 61, 36, 36, 61,179, 27, 27, 27, 27, - 16, 16, 43, 43, 43, 74, 44, 44, 27, 27, 27, 27, 27, 27,163, 27, - 188, 27,100, 44, 44, 44, 44, 44, 27, 27, 27, 27, 27, 27, 27,163, - 27, 27, 27, 27, 27, 27, 27, 44, 36, 36, 62, 36, 36, 36, 36, 36, - 62, 61, 61, 62, 62, 36, 36, 36, 36, 61, 36, 36, 62, 62, 44, 44, - 44, 61, 44, 62, 62, 62, 62, 36, 62, 61, 61, 62, 62, 62, 62, 62, - 62, 61, 61, 62, 36, 61, 36, 36, 36, 61, 36, 36, 62, 36, 61, 61, - 36, 36, 36, 36, 36, 62, 36, 36, 62, 36, 62, 36, 36, 62, 36, 36, - 8, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 44, 44, - 55, 67, 67, 67, 67, 67, 67, 67, 27, 27, 27, 27, 27, 27, 91, 67, - 67, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, - 67, 92, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 92, 44, 44, 44, - 67, 44, 44, 44, 44, 44, 44, 44, 67, 67, 67, 67, 67, 25, 41, 41, - 67, 67, 67, 67, 44, 44, 67, 67, 67, 67, 67, 92, 44, 55, 67, 67, - 67, 67, 67, 67, 44, 44, 44, 44, 67, 67, 67, 67, 67, 67, 67, 55, - 67, 67, 67, 44, 44, 44, 44, 67, 67, 92, 67, 67, 67, 67, 67, 67, + 188, 7, 7, 7, 7,189, 44, 93, 36, 36, 36, 61, 36, 36, 62, 61, + 36, 36, 61,179, 27, 27, 27, 27, 16, 16, 43, 43, 43, 74, 44, 44, + 27, 27, 27, 27, 27, 27,163, 27,190, 27,100, 44, 44, 44, 44, 44, + 27, 27, 27, 27, 27, 27, 27,163, 27, 27, 27, 27, 27, 27, 27, 44, + 36, 36, 62, 36, 36, 36, 36, 36, 62, 61, 61, 62, 62, 36, 36, 36, + 36, 61, 36, 36, 62, 62, 44, 44, 44, 61, 44, 62, 62, 62, 62, 36, + 62, 61, 61, 62, 62, 62, 62, 62, 62, 61, 61, 62, 36, 61, 36, 36, + 36, 61, 36, 36, 62, 36, 61, 61, 36, 36, 36, 36, 36, 62, 36, 36, + 62, 36, 62, 36, 36, 62, 36, 36, 8, 44, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 67, 67, 67, 67, + 27, 27, 27, 27, 27, 27, 91, 67, 67, 67, 67, 67, 67, 67, 67, 44, + 44, 44, 44, 67, 67, 67, 67, 67, 67, 92, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 92, 44, 44, 44, 67, 44, 44, 44, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 25, 41, 41, 67, 67, 67, 67, 44, 44, 67, 67, + 67, 67, 67, 92, 44, 55, 67, 67, 67, 67, 67, 67, 44, 44, 44, 44, + 67, 67, 67, 67, 67, 44, 44, 55, 67, 67, 67, 92, 44, 44, 44, 67, + 67, 67, 67, 67, 67, 67, 92, 55, 67, 92, 67, 67, 67, 67, 67, 67, 79, 44, 44, 44, 44, 44, 44, 44,171,171,171,171,171,171,171, 44, 171,171,171,171,171,171,171, 0, 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9, @@ -3282,482 +3323,677 @@ _hb_ucd_u8[14752] = 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 25, 2, 25, 24, 2, 15, 12, 15, 14, 2, 21, 14, 7, 15, 12, 17, 21, 1, 26, 10, 10, 1, - 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, - 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, + 7, 13, 13, 2, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 10, 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, - 0, 0, 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, - 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, - 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, - 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, - 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, - 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, - 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, - 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, - 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0, - 0, 79, 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0, - 0, 87, 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0, - 80, 0, 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0, - 51, 0, 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0, - 0, 0, 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, - 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0, - 0,107, 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0, - 0, 0,110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0, - 0, 0, 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 5, 6, 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, - 0, 13, 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, - 21, 0, 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, - 0, 27, 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, - 33, 0, 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, - 38, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, - 42, 0, 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, - 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, - 0, 56, 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, - 0, 0, 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, - 0, 0, 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, - 0, 0, 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, - 0, 81, 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, - 84, 0, 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, - 0, 0, 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, - 0, 0, 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, - 0, 0, 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, - 0, 0, 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0, - 102, 0, 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106, - 107, 0, 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110, - 33, 0,111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0, - 0, 0, 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0, - 121, 0, 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123, - 0, 0, 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128, - 129, 0,130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0, - 0, 0, 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0, - 138, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, - 5, 6, 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, - 18, 1, 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, - 25, 26, 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, - 34, 35, 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, - 42, 0, 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, - 21, 0, 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, - 0, 0, 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, - 54, 21, 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, - 0, 0, 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, - 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, - 0, 0, 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, - 0, 77, 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, - 0, 80, 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, - 0, 0, 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, - 1, 52, 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, - 1, 0, 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, - 0, 78, 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, - 21, 1, 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, - 81, 99,100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, - 0, 0, 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, - 0, 0, 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, - 61, 0, 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, - 0, 0, 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, - 0, 0, 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, + 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, + 0, 0, 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, + 16, 17, 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, + 21, 19, 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 34, 0, 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, + 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, + 60, 61, 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, + 67, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, + 0, 0, 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77, + 0, 78, 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85, + 86, 87, 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0, + 93, 0, 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0, + 0, 0, 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0, + 0,102, 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, + 0, 0, 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114, + 0, 0, 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, + 0,118, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, + 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, + 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, + 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, + 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, + 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, + 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, + 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, + 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, + 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, + 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61, + 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67, + 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78, + 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0, + 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0, + 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88, + 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0, + 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0, + 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, + 0, 0, 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0, + 103, 0, 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107, + 108, 0, 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111, + 33, 0,112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120, + 88, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0, + 0,122, 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127, + 0,128, 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0, + 134,135,136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0, + 0, 0,138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4, + 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1, + 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28, + 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36, + 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0, + 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47, + 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1, + 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1, + 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59, + 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0, + 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, + 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0, + 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0, + 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0, + 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86, + 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, + 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, + 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92, + 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4, + 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, + 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38, + 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0, + 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107, + 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108, + 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0, 19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0, 62, 0, 0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55, - 0, 38, 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0, - 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, - 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, - 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117, - 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50, - 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0, - 0, 0, 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0, - 0, 0, 0, 0,230,230,230,230,230,232,220,220,220,220,232,216, - 220,220,220,220,220,202,202,220,220,220,220,202,202,220,220,220, - 1, 1, 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220, - 220,220,230,230,230,220,220, 0,230,230,230,220,220,220,220,230, - 232,220,220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230, - 0,220,230,230,230,230,220,230,230,230,222,220,230,230,220,220, - 230,222,228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, - 21, 22, 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230, - 220,230,230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230, - 230, 0,220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230, - 220,220,230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0, - 230,230, 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220, - 230,220,220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0, - 0, 9, 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0, - 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0, - 103,103, 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122, - 220,220, 0, 0, 0,220, 0,220, 0,216, 0, 0, 0,129,130, 0, - 132, 0, 0, 0, 0, 0,130,130,130,130, 0, 0,130, 0,230,230, - 9, 0,230,230, 0, 0,220, 0, 0, 0, 0, 7, 0, 9, 9, 0, - 9, 9, 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220, - 220, 0, 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0, - 0, 0, 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0, - 230,234,214,220,202,230,230,230,230,230,232,228,228,220,218,230, - 233,220,230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230, - 220,230, 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, - 0, 0, 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, - 0,220, 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, - 0, 0,230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, - 6, 6, 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, - 0,226,216,216,216,216,216, 0,220,220,220, 0,232,232,220,230, - 230,230, 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145, - 26, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 0, 38, 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0, + 115, 0, 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, + 79, 0, 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, + 0, 0, 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, + 0, 0, 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, + 48,105, 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112, + 4,122, 0, 0, 0, 1,124, 0, 0, 0, 0, 0,230,230,230,230, + 230,232,220,220,220,220,232,216,220,220,220,220,220,202,202,220, + 220,220,220,202,202,220,220,220, 1, 1, 1, 1, 1,220,220,220, + 220,230,230,230,230,240,230,220,220,220,230,230,230,220,220, 0, + 230,230,230,220,220,220,220,230,232,220,220,230,233,234,234,233, + 234,234,233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230, + 230,230,222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0, + 230,220, 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0, + 0, 0,230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0, + 0, 36, 0, 0,230,220,230,230,220,220,230,220,220,230,220,230, + 220,230,230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230, + 230,230, 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220, + 27, 28, 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230, + 230, 0, 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9, + 9, 0, 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107, + 118,118, 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220, + 0,216, 0, 0, 0,129,130, 0,132, 0, 0, 0, 0, 0,130,130, + 130,130, 0, 0,130, 0,230,230, 9, 0,230,230, 0, 0,220, 0, + 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0, + 0,228, 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220, + 230,220, 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0, + 230, 0, 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230, + 230,230,232,228,228,220,218,230,233,220,230,220,230,230, 1, 1, + 1, 1, 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228, + 232,222,224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230, + 220, 0, 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, + 0,230,220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0, + 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0, + 0,216,216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0, + 220,220,220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 33, + 17, 49, 17, 17, 84, 97,135,145, 26, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3, - 3, 3, 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12, - 13, 3, 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3, - 3, 3, 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3, - 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3, - 27, 28, 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, - 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, - 13, 0, 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22, - 23, 24, 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0, - 0, 8, 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34, - 35, 19, 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31, - 0, 1, 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0, - 14, 0, 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51, - 52, 53, 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14, - 19, 1, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31, - 0, 0, 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2, - 0, 0, 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0, - 0, 7, 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14, - 15, 16, 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0, - 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8, - 21, 9, 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0, - 26, 0, 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0, - 1, 28, 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9, - 1, 4, 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21, - 21, 21, 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0, - 39, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0, - 0, 0, 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1, - 1, 1, 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0, - 0, 0, 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21, - 21, 21, 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8, - 9, 1, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, 11, 11, 11, 12, 13, - 13, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 13, 22, 13, 13, 13, - 13, 23, 24, 24, 25, 26, 13, 13, 13, 27, 28, 29, 13, 30, 31, 32, - 33, 34, 35, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 37, 7, 38, 39, 7, 40, 7, 7, - 7, 41, 13, 42, 7, 7, 43, 7, 44, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 45, 0, 0, 1, 2, 2, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 35, 36, 37, 37, - 37, 37, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 2, 2, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 60, 59, - 59, 59, 59, 59, 59, 59, 61, 61, 59, 59, 59, 59, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 59, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 79, 70, 70, 70, 70, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, - 82, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 95, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 70, 70, 97, 98, 99,100,101,101, - 102,103,104,105,106,107,108,109,110,111, 96,112,113,114,115,116, - 117,118,119,119,120,121,122,123,124,125,126,127,128,129,130,131, - 132, 96,133,134,135,136,137,138,139,140,141,142,143, 96,144,145, - 96,146,147,148,149, 96,150,151,152,153,154,155,156, 96,157,158, - 159,160, 96,161,162,163,164,164,164,164,164,164,164,165,166,164, - 167, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96,168,169,169,169,169,169,169,169,169,170, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,171,171, - 171,171,172, 96, 96, 96,173,173,173,173,174,175,176,177, 96, 96, - 96, 96,178,179,180,181,182,182,182,182,182,182,182,182,182,182, - 182,182,182,182,182,182,182,182,182,182,182,182,182,182,182,182, - 182,182,182,182,182,183,182,182,182,182,182,182,184,184,184,185, - 186, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96,187,188,189,190,191,191,192, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,193,194, - 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, - 96, 96, 96, 96,195,196, 59,197,198,199,200,201,202, 96,203,204, - 205, 59, 59,206, 59,207,208,208,208,208,208,209, 96, 96, 96, 96, - 96, 96, 96, 96,210, 96,211,212,213, 96, 96,214, 96, 96, 96,215, - 96, 96, 96, 96, 96,216,217,218,219, 96, 96, 96, 96, 96,220,221, - 222, 96,223,224, 96, 96,225,226, 59,227,228, 96, 59, 59, 59, 59, - 59, 59, 59,229,230,231,232,233, 59, 59,234,235, 59,236, 96, 96, - 96, 96, 96, 96, 96, 96, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70,237, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70,238, 70,239, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70,240, 70, 70, 70, 70, 70, 70, 70, 70, 70,241, 70, 70, - 70, 70,242, 96, 96, 96, 70, 70, 70, 70,243, 96, 96, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 70, 70, 70, 70, 70, 70,244, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,245, 96, 96, - 96, 96, 96, 96, 96, 96,246, 96,247,248, 0, 1, 2, 2, 0, 1, - 2, 2, 2, 3, 4, 5, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0, 0, 0, - 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, 2, 2, - 9, 9, 9, 9, 0, 9, 2, 2, 2, 2, 9, 0, 9, 0, 9, 9, - 9, 2, 9, 2, 9, 9, 9, 9, 2, 9, 9, 9, 55, 55, 55, 55, - 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 2, 2, 2, 2, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, - 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1, - 3, 3, 1, 3, 3, 3, 37, 37, 37, 37, 37, 37, 2, 37, 37, 37, - 37, 2, 2, 37, 37, 37, 38, 38, 38, 38, 38, 38, 2, 2, 64, 64, - 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90, 90, 90, 90, 90, - 2, 2, 90, 90, 90, 2, 95, 95, 95, 95, 2, 2, 95, 2, 3, 3, - 3, 2, 3, 3, 2, 2, 3, 3, 0, 3, 7, 7, 7, 7, 7, 1, - 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, 2, 5, - 5, 5, 5, 2, 2, 5, 5, 2, 5, 5, 5, 2, 5, 2, 2, 2, - 5, 5, 5, 5, 2, 2, 5, 5, 5, 2, 2, 2, 2, 5, 5, 5, - 2, 5, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2, - 2, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11, - 2, 2, 2, 11, 2, 2, 11, 2, 11, 2, 2, 2, 11, 11, 2, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, - 2, 2, 10, 2, 2, 2, 2, 2, 10, 10, 2, 21, 21, 21, 21, 21, - 21, 21, 21, 2, 2, 21, 21, 2, 21, 21, 21, 21, 2, 2, 21, 21, - 2, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22, - 22, 2, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, - 2, 22, 22, 2, 2, 2, 22, 22, 22, 22, 23, 23, 23, 23, 23, 2, - 23, 23, 23, 23, 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23, - 2, 2, 2, 2, 23, 23, 2, 2, 2, 23, 16, 16, 16, 16, 16, 2, - 16, 16, 2, 16, 16, 16, 16, 16, 2, 2, 2, 16, 16, 2, 2, 2, - 16, 16, 20, 20, 20, 20, 20, 2, 20, 20, 2, 2, 20, 20, 2, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, - 2, 36, 2, 36, 2, 2, 2, 2, 36, 2, 2, 2, 2, 36, 36, 2, - 36, 2, 36, 2, 2, 2, 2, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 2, 2, 2, 2, 0, 2, 18, 18, 2, 18, 2, 18, 18, 18, 18, - 18, 2, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18, 2, 2, 18, 2, - 18, 2, 25, 25, 25, 25, 2, 25, 25, 25, 25, 2, 2, 2, 25, 2, - 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 33, 33, 33, 33, 8, 8, - 8, 8, 8, 8, 2, 8, 2, 8, 2, 2, 8, 8, 8, 0, 12, 12, - 12, 12, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30, - 30, 2, 2, 30, 30, 30, 30, 2, 2, 2, 29, 29, 29, 29, 29, 29, - 2, 2, 28, 28, 28, 28, 34, 34, 34, 34, 34, 2, 2, 2, 35, 35, - 35, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 45, 45, - 45, 45, 45, 45, 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 0, - 0, 2, 43, 43, 43, 43, 46, 46, 46, 46, 46, 2, 46, 46, 31, 31, - 31, 31, 31, 31, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, - 32, 32, 32, 32, 2, 2, 32, 2, 2, 2, 32, 32, 32, 2, 28, 28, - 2, 2, 48, 48, 48, 48, 48, 48, 48, 2, 48, 2, 2, 2, 52, 52, - 52, 52, 52, 52, 2, 2, 52, 2, 2, 2, 58, 58, 58, 58, 58, 58, - 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54, 54, 54, 2, 2, - 54, 54, 91, 91, 91, 91, 91, 91, 91, 2, 91, 2, 2, 91, 91, 91, - 2, 2, 1, 1, 1, 2, 62, 62, 62, 62, 62, 2, 2, 2, 62, 62, - 62, 2, 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 2, 2, - 2, 70, 70, 70, 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 6, 2, - 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1, 1, 0, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 2, 19, 19, - 9, 9, 9, 9, 9, 6, 19, 9, 9, 9, 9, 9, 19, 19, 9, 9, - 9, 19, 6, 19, 19, 19, 19, 19, 19, 9, 9, 9, 2, 2, 2, 9, - 2, 9, 2, 9, 9, 9, 1, 1, 0, 0, 0, 2, 0, 0, 0, 19, - 2, 2, 0, 0, 0, 19, 0, 0, 0, 2, 19, 2, 2, 2, 0, 2, - 2, 2, 1, 2, 2, 2, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27, - 27, 27, 2, 2, 0, 0, 0, 0, 2, 0, 56, 56, 56, 56, 2, 55, - 55, 55, 61, 61, 61, 61, 2, 2, 2, 61, 61, 2, 2, 2, 0, 0, - 2, 2, 13, 13, 13, 13, 13, 13, 2, 13, 13, 13, 2, 2, 0, 13, - 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 2, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, 1, 0, 0, 15, - 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 2, 26, - 26, 26, 26, 26, 26, 26, 2, 12, 12, 12, 12, 12, 12, 2, 12, 12, - 12, 0, 39, 39, 39, 39, 39, 2, 2, 2, 39, 39, 39, 2, 86, 86, - 86, 86, 77, 77, 77, 77, 79, 79, 79, 79, 19, 19, 19, 2, 19, 19, - 2, 19, 2, 19, 19, 19, 19, 19, 2, 2, 2, 2, 19, 19, 60, 60, - 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 75, 75, 75, 75, 75, 75, - 2, 2, 2, 2, 75, 75, 69, 69, 69, 69, 69, 69, 0, 69, 74, 74, - 74, 74, 2, 2, 2, 74, 12, 2, 2, 2, 84, 84, 84, 84, 84, 84, - 2, 0, 84, 84, 2, 2, 2, 2, 84, 84, 33, 33, 33, 2, 68, 68, - 68, 68, 68, 68, 68, 2, 68, 68, 2, 2, 92, 92, 92, 92, 92, 92, - 92, 2, 2, 2, 2, 92, 87, 87, 87, 87, 87, 87, 87, 2, 19, 9, - 19, 19, 19, 19, 0, 0, 87, 87, 2, 2, 2, 2, 2, 12, 2, 2, - 2, 4, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 2, 2, - 2, 3, 3, 3, 0, 0, 2, 2, 3, 3, 1, 1, 6, 6, 3, 2, - 3, 3, 3, 2, 2, 0, 2, 0, 0, 0, 0, 0, 17, 17, 17, 17, - 0, 0, 2, 2, 12, 12, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49, - 49, 2, 49, 49, 2, 49, 49, 49, 2, 2, 9, 2, 2, 2, 0, 1, - 2, 2, 71, 71, 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 2, - 2, 2, 42, 42, 42, 42, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, - 41, 2,118,118,118,118,118,118,118, 2, 53, 53, 53, 53, 53, 53, - 2, 53, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, 40, 40, 51, 51, - 51, 51, 50, 50, 50, 50, 50, 50, 2, 2,135,135,135,135,106,106, - 106,106,104,104,104,104, 2, 2, 2,104,161,161,161,161,161,161, - 161, 2,161,161, 2,161,161, 2, 2, 2,110,110,110,110,110,110, - 110, 2,110,110, 2, 2, 19, 2, 19, 19, 47, 47, 47, 47, 47, 47, - 2, 2, 47, 2, 47, 47, 47, 47, 2, 47, 47, 2, 2, 2, 47, 2, - 2, 47, 81, 81, 81, 81, 81, 81, 2, 81,120,120,120,120,116,116, - 116,116,116,116,116, 2, 2, 2, 2,116,128,128,128,128,128,128, - 128, 2,128,128, 2, 2, 2, 2, 2,128, 66, 66, 66, 66, 2, 2, - 2, 66, 72, 72, 72, 72, 72, 72, 2, 2, 2, 2, 2, 72, 98, 98, - 98, 98, 97, 97, 97, 97, 2, 2, 97, 97, 57, 57, 57, 57, 2, 57, - 57, 2, 2, 57, 57, 57, 57, 57, 2, 2, 57, 57, 57, 2, 2, 2, - 2, 57, 57, 2, 2, 2, 88, 88, 88, 88,117,117,117,117,112,112, - 112,112,112,112,112, 2, 2, 2, 2,112, 78, 78, 78, 78, 78, 78, - 2, 2, 2, 78, 78, 78, 83, 83, 83, 83, 83, 83, 2, 2, 82, 82, - 82, 82, 82, 82, 82, 2,122,122,122,122,122,122, 2, 2, 2,122, - 122,122,122, 2, 2, 2, 89, 89, 89, 89, 89, 2, 2, 2,130,130, - 130,130,130,130,130, 2, 2, 2,130,130,144,144,144,144,144,144, - 2, 2,156,156,156,156,156,156, 2,156,156,156, 2, 2, 2, 3, - 3, 3,147,147,147,147,148,148,148,148,148,148, 2, 2,158,158, - 158,158,158,158, 2, 2,153,153,153,153,149,149,149,149,149,149, - 149, 2, 94, 94, 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 2, 2, - 2, 94, 85, 85, 85, 85, 85, 85, 85, 2, 2, 85, 2, 2,101,101, - 101,101,101, 2, 2, 2,101,101, 2, 2, 96, 96, 96, 96, 96, 2, - 96, 96,111,111,111,111,111,111,111, 2,100,100,100,100,108,108, - 108,108,108,108, 2,108,108,108, 2, 2,129,129,129,129,129,129, - 129, 2,129, 2,129,129,129,129, 2,129,129,129, 2, 2,109,109, - 109,109,109,109,109, 2,109,109, 2, 2,107,107,107,107, 2,107, - 107,107,107, 2, 2,107,107, 2,107,107,107,107, 2, 1,107,107, - 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2,107,107,137,137, - 137,137, 2,137,137,137,137,137, 2, 2,124,124,124,124,124,124, - 2, 2,123,123,123,123,123,123, 2, 2,114,114,114,114,114, 2, - 2, 2,114,114, 2, 2,102,102,102,102,102,102, 2, 2,126,126, - 126,126,126,126,126, 2, 2,126,126,126,142,142,142,142,125,125, - 125,125,125,125,125, 2, 2, 2, 2,125,154,154,154,154,154,154, - 154, 2, 2,154, 2, 2, 2,154,154, 2,154,154, 2,154,154, 2, - 2,154,154,154, 2, 2,150,150,150,150, 2, 2,150,150,150, 2, - 2, 2,141,141,141,141,140,140,140,140,140,140,140, 2,121,121, - 121,121,121, 2, 2, 2, 7, 7, 2, 2,133,133,133,133,133, 2, - 133,133,133,133,133, 2,133,133, 2, 2,133, 2, 2, 2,134,134, - 134,134, 2, 2,134,134, 2,134,134,134,134,134,134, 2,138,138, - 138,138,138,138,138, 2,138,138, 2,138, 2, 2,138, 2,138,138, - 2, 2,143,143,143,143,143,143, 2,143,143, 2,143,143,143,143, - 143, 2,143, 2, 2, 2,143,143, 2, 2,145,145,145,145,145, 2, - 2, 2,163,163,163,163,163, 2,163,163,163,163,163, 2, 2, 2, - 163,163,163,163, 2, 2, 86, 2, 2, 2, 63, 63, 63, 63, 63, 63, - 2, 2, 63, 63, 63, 2, 63, 2, 2, 2,157,157,157,157,157,157, - 157, 2, 80, 80, 80, 80, 80, 80, 2, 2,127,127,127,127,127,127, - 127, 2, 79, 2, 2, 2,115,115,115,115,115,115,115, 2,115,115, - 2, 2, 2, 2,115,115,159,159,159,159,159,159,159, 2,159,159, - 2, 2,103,103,103,103,103,103, 2, 2,119,119,119,119,119,119, - 2, 2,119,119, 2,119, 2,119,119,119,146,146,146,146,146,146, - 146, 2, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 99,136,139, - 13, 13,155, 2, 2, 2,136,136,136,136,155,155,155,155,155,155, - 2, 2,136, 2, 2, 2, 2, 17, 17, 17, 2, 17, 17, 2, 17, 15, - 15, 15, 17, 17, 17, 2, 2, 2, 15, 2, 2, 17, 2, 2,139,139, - 139,139,105,105,105,105,105,105,105, 2,105, 2, 2, 2,105,105, - 2, 2, 1, 1, 2, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, - 1, 1, 2, 2, 0, 2, 2, 0, 0, 2, 0, 2, 0, 2,131,131, - 131,131, 2, 2, 2,131, 2,131,131,131, 56, 56, 56, 2, 56, 2, - 2, 56, 56, 56, 2, 56, 56, 2, 56, 56, 6, 6, 2, 2, 2, 2, - 2, 6,151,151,151,151,151, 2, 2, 2,151,151, 2, 2, 2, 2, - 151,151,160,160,160,160,160,160,160, 2,152,152,152,152,152,152, - 2, 2, 2, 2, 2,152,164,164,164,164,164,164, 2, 2, 2, 30, - 30, 2,113,113,113,113,113, 2, 2,113,113,113,113, 2,132,132, - 132,132,132,132, 2, 2, 2, 2,132,132, 2, 3, 3, 2, 3, 2, - 2, 3, 2, 3, 2, 3, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, - 2, 3, 15, 0, 0, 2, 13, 2, 2, 2, 13, 13, 13, 2, 2, 0, - 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, - 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,177, 0, 1, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 6, 7, 8, 3, + 3, 3, 3, 3, 9, 10, 11, 12, 13, 3, 3, 3, 3, 3, 3, 3, + 3, 14, 3, 15, 3, 3, 3, 3, 3, 3, 16, 17, 18, 19, 20, 21, + 3, 3, 3, 22, 23, 24, 3, 3, 3, 3, 3, 3, 25, 3, 3, 3, + 3, 3, 3, 3, 3, 26, 3, 3, 27, 28, 0, 1, 0, 0, 0, 0, + 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, + 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0, + 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, 0, 14, 15, 16, 6, 0, + 17, 18, 19, 19, 19, 20, 21, 22, 23, 24, 19, 25, 0, 26, 27, 19, + 19, 28, 29, 30, 0, 31, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, + 0, 19, 28, 0, 32, 33, 9, 34, 35, 19, 0, 0, 36, 37, 38, 39, + 40, 19, 0, 41, 42, 43, 44, 31, 0, 1, 45, 42, 0, 0, 0, 0, + 0, 32, 14, 14, 0, 0, 0, 0, 14, 0, 0, 46, 47, 47, 47, 47, + 48, 49, 47, 47, 47, 47, 50, 51, 52, 53, 43, 21, 0, 0, 0, 0, + 0, 0, 0, 54, 6, 55, 0, 14, 19, 1, 0, 0, 0, 0, 56, 57, + 0, 0, 0, 0, 0, 19, 58, 31, 0, 0, 0, 0, 0, 0, 0, 59, + 14, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 60, + 61, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, + 0, 4, 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 1, 1, 0, + 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, + 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 1, 0, + 0, 18, 19, 0, 0, 0, 20, 0, 0, 0, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 0, 8, 21, 9, 0, 0, 22, 0, 0, 0, + 0, 1, 0, 23, 24, 25, 0, 0, 26, 0, 0, 0, 8, 21, 27, 0, + 1, 0, 0, 1, 1, 1, 1, 0, 1, 28, 29, 30, 0, 31, 32, 20, + 1, 1, 0, 0, 0, 8, 21, 9, 1, 4, 5, 0, 0, 0, 33, 9, + 0, 1, 1, 1, 0, 8, 21, 21, 21, 21, 34, 1, 35, 21, 21, 21, + 9, 36, 0, 0, 37, 38, 1, 0, 39, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 8, 21, 9, 1, 0, 0, 0, 40, 0, 8, 21, 21, 21, + 21, 21, 21, 21, 21, 9, 0, 1, 1, 1, 1, 8, 21, 21, 21, 9, + 0, 0, 0, 41, 0, 42, 43, 0, 0, 0, 1, 44, 0, 0, 0, 45, + 8, 9, 1, 0, 0, 0, 8, 21, 21, 21, 9, 0, 1, 0, 1, 1, + 8, 21, 21, 9, 0, 4, 5, 8, 9, 1, 0, 0, 0, 1, 2, 3, + 4, 5, 5, 5, 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 9, 16, 17, 18, 9, 19, 20, 21, 22, 23, 24, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 25, 26, 27, 5, 28, 29, 5, 30, 31, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 19, 20, 9, 21, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 32, 0, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 20, 21, 22, 23, 24, 25, 26, 27, 28, 1, 29, 30, 31, + 32, 32, 33, 32, 32, 32, 34, 32, 32, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 46, 46, + 46, 46, 47, 48, 49, 50, 51, 52, 53, 54, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 44, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 95, + 95, 96, 97, 98, 56, 56, 56, 56, 56, 56, 56, 56, 56, 99,100,100, + 100,100,101,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,102,103,103,104, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,105, + 56, 56, 56, 56, 56, 56,106,106,107,108, 56,109,110,111,112,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 112,112,112,112,112,113,112,112,112,114,115,116, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,117,118,119, + 120, 56, 56, 56, 56, 56, 56, 56, 56, 56,121, 56, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,122, 32,123,124,125,126, + 127,128,129,130,131,132,133,133,134, 56, 56, 56, 56,135,136,137, + 138, 56,139,140, 56,141,142,143, 56, 56,144,145,146, 56,147,148, + 149, 32, 32, 32,150,151,152, 32,153,154, 56, 56, 56, 56, 44, 44, + 44, 44, 44, 44,155, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44,156,157, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,158, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, 44,159, 44, 44,160, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 44, 44,161, 56, 56, 56, 56, 56, 44, 44, + 44,162, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44,163, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,164,165, + 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 0, 19, 0, + 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, + 26, 26, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, + 9, 9, 0, 9, 9, 9, 2, 2, 9, 9, 9, 9, 0, 9, 2, 2, + 2, 2, 9, 0, 9, 0, 9, 9, 9, 2, 9, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 6, 2, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 2, 4, 4, 4, 2, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 2, + 2, 2, 2, 2, 2, 2, 14, 14, 14, 2, 2, 2, 2, 14, 14, 14, + 14, 14, 14, 2, 2, 2, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, + 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 0, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1, 3, + 3, 3, 3, 3, 3, 3, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 2, 37, 37, 37, 37, 2, 2, 37, 37, 37, 38, 38, + 38, 38, 38, 38, 38, 38, 38, 38, 2, 2, 2, 2, 2, 2, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 2, 2, 64, 64, 64, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 2, 2, 90, 90, + 90, 90, 90, 90, 90, 2, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 2, 2, 95, 2, 37, 37, 37, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 3, 3, 3, + 0, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 1, + 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 5, 5, + 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 5, 5, 2, + 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, + 5, 5, 5, 5, 5, 5, 5, 2, 5, 2, 2, 2, 5, 5, 5, 5, + 2, 2, 5, 5, 5, 5, 5, 2, 2, 5, 5, 5, 5, 2, 2, 2, + 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 5, 5, 2, 5, 5, 5, + 5, 5, 2, 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 2, 2, 11, + 11, 11, 2, 11, 11, 11, 11, 11, 11, 2, 2, 2, 2, 11, 11, 2, + 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, + 11, 11, 11, 11, 11, 11, 11, 2, 11, 11, 2, 11, 11, 2, 11, 11, + 2, 2, 11, 2, 11, 11, 11, 2, 2, 11, 11, 11, 2, 2, 2, 11, + 2, 2, 2, 2, 2, 2, 2, 11, 11, 11, 11, 2, 11, 2, 2, 2, + 2, 2, 2, 2, 11, 11, 11, 11, 11, 11, 11, 11, 11, 2, 2, 10, + 10, 10, 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, + 2, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2, + 10, 10, 10, 10, 10, 10, 10, 2, 10, 10, 2, 10, 10, 10, 10, 10, + 2, 2, 10, 10, 10, 10, 10, 10, 2, 10, 10, 10, 2, 2, 10, 2, + 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 2, 2, 10, 10, 10, 10, + 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, 10, 10, 10, 2, 21, + 21, 21, 2, 21, 21, 21, 21, 21, 21, 21, 21, 2, 2, 21, 21, 2, + 2, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 2, + 21, 21, 21, 21, 21, 21, 21, 2, 21, 21, 2, 21, 21, 21, 21, 21, + 2, 2, 21, 21, 21, 21, 21, 2, 2, 21, 21, 21, 2, 2, 2, 2, + 2, 2, 2, 21, 21, 21, 2, 2, 2, 2, 21, 21, 2, 21, 21, 21, + 21, 21, 2, 2, 21, 21, 2, 2, 22, 22, 2, 22, 22, 22, 22, 22, + 22, 2, 2, 2, 22, 22, 22, 2, 22, 22, 22, 22, 2, 2, 2, 22, + 22, 2, 22, 2, 22, 22, 2, 2, 2, 22, 22, 2, 2, 2, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, 22, 22, 2, + 2, 2, 2, 2, 2, 22, 2, 2, 2, 2, 2, 2, 22, 22, 22, 22, + 22, 2, 2, 2, 2, 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 2, 23, 23, 23, 2, 23, 23, 23, 23, 23, 23, 23, 23, + 2, 2, 23, 23, 23, 23, 23, 2, 23, 23, 23, 23, 2, 2, 2, 2, + 2, 2, 2, 23, 23, 2, 23, 23, 23, 2, 2, 23, 2, 2, 23, 23, + 23, 23, 2, 2, 23, 23, 2, 2, 2, 2, 2, 2, 2, 23, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 2, + 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 16, + 2, 2, 16, 16, 16, 16, 16, 2, 16, 16, 16, 16, 2, 2, 2, 2, + 2, 2, 2, 16, 16, 2, 16, 16, 16, 16, 2, 2, 16, 16, 2, 16, + 16, 16, 2, 2, 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 2, 20, 20, 20, 2, 20, 20, 20, 20, 20, 20, 2, 2, + 2, 2, 20, 20, 20, 20, 20, 20, 20, 20, 2, 2, 20, 20, 2, 36, + 36, 36, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36, 36, + 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, 2, + 36, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 2, 36, 2, 2, 2, + 2, 2, 2, 2, 36, 36, 2, 2, 36, 36, 36, 2, 2, 2, 2, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 2, 2, 2, 2, 0, 24, 24, 24, 24, 2, 2, 2, 2, 2, 18, + 18, 2, 18, 2, 18, 18, 18, 18, 18, 2, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, 18, + 18, 18, 18, 18, 2, 2, 18, 18, 18, 18, 18, 2, 18, 2, 18, 18, + 18, 18, 18, 18, 18, 2, 18, 18, 2, 2, 18, 18, 18, 18, 25, 25, + 25, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, 25, 25, 25, 25, 25, + 25, 25, 25, 2, 2, 2, 25, 25, 25, 25, 25, 2, 25, 25, 25, 25, + 25, 25, 25, 0, 0, 0, 0, 25, 25, 2, 2, 2, 2, 2, 33, 33, + 33, 33, 33, 33, 33, 33, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 2, 8, 2, 2, 2, 2, 2, 8, 2, 2, 8, 8, + 8, 0, 8, 8, 8, 8, 12, 12, 12, 12, 12, 12, 12, 12, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 2, 30, 30, 30, 30, 2, 2, 30, 30, + 30, 30, 30, 30, 30, 2, 30, 30, 30, 2, 2, 30, 30, 30, 30, 30, + 30, 30, 30, 2, 2, 2, 30, 30, 2, 2, 2, 2, 2, 2, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 2, 2, 28, 28, + 28, 28, 28, 28, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 2, 2, 2, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 0, 0, 35, 35, 35, 2, 2, 2, 2, 2, 2, 2, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 0, 0, 2, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 2, 2, 2, 2, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, + 46, 46, 46, 2, 46, 46, 46, 2, 46, 46, 2, 2, 2, 2, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 2, 2, 31, 31, + 2, 2, 2, 2, 2, 2, 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 2, 2, 2, 2, 2, 2, 32, 2, + 2, 2, 2, 2, 2, 2, 32, 32, 32, 2, 2, 2, 2, 2, 28, 28, + 28, 28, 28, 28, 2, 2, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 2, 48, 48, 48, 48, 2, 2, 2, 2, 48, 2, + 2, 2, 48, 48, 48, 48, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 52, 2, 2, 52, 52, 52, 52, 52, 2, 2, 2, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 2, 2, 2, 2, 58, 58, + 2, 2, 2, 2, 2, 2, 58, 58, 58, 2, 2, 2, 58, 58, 54, 54, + 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 2, 2, 54, 54, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 2, 91, 91, + 91, 91, 91, 2, 2, 91, 91, 91, 2, 2, 2, 2, 2, 2, 91, 91, + 91, 91, 91, 91, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 2, 62, 62, 76, 76, + 76, 76, 76, 76, 76, 76, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 2, 2, 2, 2, 2, 2, 2, 2, 93, 93, 93, 93, 70, 70, + 70, 70, 70, 70, 70, 70, 2, 2, 2, 70, 70, 70, 70, 70, 70, 70, + 2, 2, 2, 70, 70, 70, 73, 73, 73, 73, 73, 73, 73, 73, 6, 6, + 6, 2, 2, 2, 2, 2, 8, 8, 8, 2, 2, 8, 8, 8, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, + 0, 2, 2, 2, 2, 2, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, + 9, 6, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, 9, 9, + 19, 19, 19, 19, 9, 9, 9, 9, 9, 19, 19, 19, 19, 19, 6, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 9, 9, + 9, 9, 9, 9, 2, 2, 2, 9, 2, 9, 2, 9, 2, 9, 9, 9, + 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 2, 2, 9, 9, 9, 9, + 9, 9, 2, 9, 9, 9, 2, 2, 9, 9, 9, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 2, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 0, 19, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 2, 19, 19, + 19, 19, 19, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 19, 0, + 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27, 27, 0, 0, + 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 56, 56, + 56, 56, 56, 56, 56, 56, 55, 55, 55, 55, 2, 2, 2, 2, 2, 55, + 55, 55, 55, 55, 55, 55, 61, 61, 61, 61, 61, 61, 61, 61, 2, 2, + 2, 2, 2, 2, 2, 61, 61, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 2, 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 2, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 13, 13, + 13, 13, 13, 13, 2, 2, 0, 0, 0, 0, 0, 13, 0, 13, 0, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 13, 13, + 13, 13, 0, 0, 0, 0, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 2, 2, 1, + 1, 0, 0, 15, 15, 15, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, 17, 17, 17, 2, 2, + 2, 2, 2, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 2, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 12, 12, 12, 12, 12, 12, 12, 0, 17, 17, + 17, 17, 17, 17, 17, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 2, 2, 2, 39, 39, 39, 39, 39, 39, 39, 2, 86, 86, + 86, 86, 86, 86, 86, 86, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 2, 2, 2, 2, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, + 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 2, 2, 19, 19, 2, 19, 2, 19, 19, 19, 2, 2, + 19, 19, 19, 19, 19, 19, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 2, 2, 2, 65, 65, 65, 65, 65, 65, 65, 65, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 2, 2, 2, 2, + 2, 2, 2, 2, 75, 75, 75, 75, 2, 2, 2, 2, 2, 2, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0, 69, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 74, 12, 12, 12, 12, 12, 2, 2, 2, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 2, 0, 84, 84, + 2, 2, 2, 2, 84, 84, 33, 33, 33, 33, 33, 33, 33, 2, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 2, 68, 68, + 68, 68, 68, 68, 2, 2, 68, 68, 2, 2, 68, 68, 68, 68, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 2, 2, 2, 2, 2, 2, 2, + 2, 92, 92, 92, 92, 92, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 2, 2, 30, 30, 30, 30, 30, 30, 2, 19, 19, + 19, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 9, 19, 19, 19, 19, + 0, 0, 2, 2, 2, 2, 87, 87, 87, 87, 87, 87, 2, 2, 87, 87, + 2, 2, 2, 2, 2, 2, 12, 12, 12, 12, 2, 2, 2, 2, 2, 2, + 2, 12, 12, 12, 12, 12, 13, 13, 2, 2, 2, 2, 2, 2, 19, 19, + 19, 19, 19, 19, 19, 2, 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, + 2, 2, 2, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 2, 14, 14, + 14, 14, 14, 2, 14, 2, 14, 14, 2, 14, 14, 2, 14, 14, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 0, 0, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, + 2, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 6, 6, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, + 17, 17, 17, 17, 0, 0, 2, 2, 12, 12, 12, 12, 12, 12, 2, 2, + 12, 12, 12, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 2, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 2, 49, 49, 49, 2, 49, 49, 2, 49, 49, 49, + 49, 49, 49, 49, 2, 2, 49, 49, 49, 2, 2, 2, 2, 2, 0, 0, + 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 1, 2, 2, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 2, 2, 2, 67, 67, 67, 67, 67, 67, 67, 67, 67, 2, + 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 42, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 42, 42, 42, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, + 41, 2, 2, 2, 2, 2,118,118,118,118,118,118,118,118,118,118, + 118, 2, 2, 2, 2, 2, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 53, 2, 53, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, + 59, 59, 2, 2, 2, 2, 59, 59, 59, 59, 59, 59, 2, 2, 40, 40, + 40, 40, 40, 40, 40, 40, 51, 51, 51, 51, 51, 51, 51, 51, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 2, 2, 50, 50, + 2, 2, 2, 2, 2, 2,135,135,135,135,135,135,135,135,135,135, + 135,135, 2, 2, 2, 2,106,106,106,106,106,106,106,106,104,104, + 104,104,104,104,104,104,104,104,104,104, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2,104,161,161,161,161,161,161,161,161,161,161, + 161, 2,161,161,161,161,161,161,161, 2,161,161, 2,161,161,161, + 2,161,161,161,161,161,161,161, 2,161,161, 2, 2, 2,170,170, + 170,170,170,170,170,170,170,170,170,170, 2, 2, 2, 2,110,110, + 110,110,110,110,110,110,110,110,110,110,110,110,110, 2,110,110, + 110,110,110,110, 2, 2, 19, 19, 19, 19, 19, 19, 2, 19, 19, 2, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 2, 2, 2, 2, 47, 47, + 47, 47, 47, 47, 2, 2, 47, 2, 47, 47, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 2, 47, 47, 2, + 2, 2, 47, 2, 2, 47, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 2, 81,120,120,120,120,120,120,120,120,116,116, + 116,116,116,116,116,116,116,116,116,116,116,116,116, 2, 2, 2, + 2, 2, 2, 2, 2,116,128,128,128,128,128,128,128,128,128,128, + 128, 2,128,128, 2, 2, 2, 2, 2,128,128,128,128,128, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 2, 2, 2, 66, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 2, 2, 2, 2, 2, 72, 98, 98, + 98, 98, 98, 98, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 2, 2, + 2, 2, 97, 97, 97, 97, 2, 2, 97, 97, 97, 97, 97, 97, 57, 57, + 57, 57, 2, 57, 57, 2, 2, 2, 2, 2, 57, 57, 57, 57, 57, 57, + 57, 57, 2, 57, 57, 57, 2, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 57, 57, + 57, 2, 2, 2, 2, 57, 57, 2, 2, 2, 2, 2, 2, 2, 88, 88, + 88, 88, 88, 88, 88, 88,117,117,117,117,117,117,117,117,112,112, + 112,112,112,112,112,112,112,112,112,112,112,112,112, 2, 2, 2, + 2,112,112,112,112,112, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 78, 78, 78, 2, 2, 2, 78, 78, 78, 78, 78, 78, 78, 83, 83, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 2, 2, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 2, 2, 2, 2, 2,122,122, + 122,122,122,122,122,122,122,122, 2, 2, 2, 2, 2, 2, 2,122, + 122,122,122, 2, 2, 2, 2,122,122,122,122,122,122,122, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 2, 2, 2, 2, 2, 2, 2,130,130, + 130,130,130,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, + 130,130,130,130,130,130,144,144,144,144,144,144,144,144,144,144, + 2, 2, 2, 2, 2, 2,165,165,165,165,165,165,165,165,165,165, + 165,165,165,165, 2, 2, 2,165,165,165,165,165,165,165, 2, 2, + 2, 2, 2, 2,165,165,156,156,156,156,156,156,156,156,156,156, + 2,156,156,156, 2, 2,156,156, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,147,147, + 147,147,147,147,147,147,148,148,148,148,148,148,148,148,148,148, + 2, 2, 2, 2, 2, 2,158,158,158,158,158,158,158,158,158,158, + 2, 2, 2, 2, 2, 2,153,153,153,153,153,153,153,153,153,153, + 153,153, 2, 2, 2, 2,149,149,149,149,149,149,149,149,149,149, + 149,149,149,149,149, 2, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 2, 2, 2, 2, 94, 94, 94, 94, 94, 94, 2, 2, + 2, 2, 2, 2, 2, 94, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2,101,101, + 101,101,101,101,101,101,101, 2, 2, 2, 2, 2, 2, 2,101,101, + 2, 2, 2, 2, 2, 2, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 2, 96, 96,111,111,111,111,111,111,111,111,111,111, + 111,111,111,111,111, 2,100,100,100,100,100,100,100,100, 2, 36, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 2, 2, 2,108,108, + 108,108,108,108,108,108,108,108, 2,108,108,108,108,108,108,108, + 2, 2, 2, 2, 2, 2,129,129,129,129,129,129,129, 2,129, 2, + 129,129,129,129, 2,129,129,129,129,129,129,129,129,129,129,129, + 129,129,129,129, 2,129,129,129, 2, 2, 2, 2, 2, 2,109,109, + 109,109,109,109,109,109,109,109,109, 2, 2, 2, 2, 2,109,109, + 2, 2, 2, 2, 2, 2,107,107,107,107, 2,107,107,107,107,107, + 107,107,107, 2, 2,107,107, 2, 2,107,107,107,107,107,107,107, + 107,107,107,107,107,107,107, 2,107,107,107,107,107,107,107, 2, + 107,107, 2,107,107,107,107,107, 2, 1,107,107,107,107,107, 2, + 2,107,107,107, 2, 2,107, 2, 2, 2, 2, 2, 2,107, 2, 2, + 2, 2, 2,107,107,107,107,107,107,107, 2, 2,107,107,107,107, + 107,107,107, 2, 2, 2,171,171,171,171,171,171,171,171,171,171, + 2,171, 2, 2,171, 2,171,171,171,171,171,171, 2,171,171, 2, + 171, 2, 2,171, 2,171,171,171,171, 2,171,171,171,171,171, 2, + 2, 2, 2, 2, 2, 2, 2,171,171, 2, 2, 2, 2, 2,137,137, + 137,137,137,137,137,137,137,137,137,137, 2,137,137,137,137,137, + 2, 2, 2, 2, 2, 2,124,124,124,124,124,124,124,124,124,124, + 2, 2, 2, 2, 2, 2,123,123,123,123,123,123,123,123,123,123, + 123,123,123,123, 2, 2,114,114,114,114,114,114,114,114,114,114, + 114,114,114, 2, 2, 2,114,114, 2, 2, 2, 2, 2, 2, 32, 32, + 32, 32, 32, 2, 2, 2,102,102,102,102,102,102,102,102,102,102, + 2, 2, 2, 2, 2, 2, 33, 33, 33, 33, 2, 2, 2, 2,126,126, + 126,126,126,126,126,126,126,126,126, 2, 2,126,126,126,126,126, + 126,126, 2, 2, 2, 2,126,126,126,126,126,126,126, 2,142,142, + 142,142,142,142,142,142,142,142,142,142, 2, 2, 2, 2,125,125, + 125,125,125,125,125,125,125,125,125, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2,125,154,154,154,154,154,154,154, 2, 2,154, + 2, 2,154,154,154,154,154,154,154,154, 2,154,154, 2,154,154, + 154,154,154,154,154,154,154,154,154,154,154,154, 2,154,154, 2, + 2,154,154,154,154,154,154,154, 2, 2, 2, 2, 2, 2,150,150, + 150,150,150,150,150,150, 2, 2,150,150,150,150,150,150,150,150, + 150,150,150, 2, 2, 2,141,141,141,141,141,141,141,141,140,140, + 140,140,140,140,140,140,140,140,140, 2, 2, 2, 2, 2,121,121, + 121,121,121,121,121,121,121, 2, 2, 2, 2, 2, 2, 2, 7, 7, + 2, 2, 2, 2, 2, 2,169,169,169,169,169,169,169,169,169,169, + 2, 2, 2, 2, 2, 2,133,133,133,133,133,133,133,133,133, 2, + 133,133,133,133,133,133,133,133,133,133,133,133,133, 2,133,133, + 133,133,133,133, 2, 2,133,133,133,133,133, 2, 2, 2,134,134, + 134,134,134,134,134,134, 2, 2,134,134,134,134,134,134, 2,134, + 134,134,134,134,134,134,134,134,134,134,134,134,134, 2,138,138, + 138,138,138,138,138, 2,138,138, 2,138,138,138,138,138,138,138, + 138,138,138,138,138,138, 2, 2,138, 2,138,138, 2,138,138,138, + 2, 2, 2, 2, 2, 2,143,143,143,143,143,143, 2,143,143, 2, + 143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143, + 143,143,143,143,143, 2,143,143, 2,143,143,143,143,143,143, 2, + 2, 2, 2, 2, 2, 2,143,143, 2, 2, 2, 2, 2, 2,145,145, + 145,145,145,145,145,145,145, 2, 2, 2, 2, 2, 2, 2,163,163, + 163,163,163,163,163,163,163, 2,163,163,163,163,163,163,163,163, + 163, 2, 2, 2,163,163,163,163,163, 2, 2, 2, 2, 2, 86, 2, + 2, 2, 2, 2, 2, 2, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 22, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 2, 2, 2, 2, 2, 2, 63, 63, 63, 63, 63, 63, 63, 2, 63, 63, + 63, 63, 63, 2, 2, 2, 63, 63, 63, 63, 2, 2, 2, 2,157,157, + 157,157,157,157,157,157,157,157,157, 2, 2, 2, 2, 2, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 2, 2, 80, 80, + 80, 2, 2, 2, 2, 2,127,127,127,127,127,127,127,127,127,127, + 127,127,127,127,127, 2,166,166,166,166,166,166,166,166,166,166, + 2, 2, 2, 2, 2, 2, 79, 2, 2, 2, 2, 2, 2, 2,115,115, + 115,115,115,115,115,115,115,115,115,115,115,115,115, 2,115,115, + 2, 2, 2, 2,115,115,159,159,159,159,159,159,159,159,159,159, + 159,159,159,159,159, 2,159,159, 2, 2, 2, 2, 2, 2,103,103, + 103,103,103,103,103,103,103,103,103,103,103,103, 2, 2,119,119, + 119,119,119,119,119,119,119,119,119,119,119,119, 2, 2,119,119, + 2,119,119,119,119,119, 2, 2, 2, 2, 2,119,119,119,167,167, + 167,167,167,167,167,167,167,167, 2, 2, 2, 2, 2, 2,146,146, + 146,146,146,146,146,146,146,146,146, 2, 2, 2, 2, 2, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 2, 2, 2, 2, 99, 2, 2, + 2, 2, 2, 2, 2, 99,136,139, 13, 13,155, 2, 2, 2,136,136, + 136,136,136,136,136,136,155,155,155,155,155,155,155,155,155,155, + 155,155,155,155, 2, 2, 2, 2, 2, 2, 2, 2, 2,155,136, 2, + 2, 2, 2, 2, 2, 2, 17, 17, 17, 17, 2, 17, 17, 17, 17, 17, + 17, 17, 2, 17, 17, 2, 17, 15, 15, 15, 15, 15, 15, 15, 17, 17, + 17, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 2, 2, 2, 15, 15, + 15, 2, 2, 17, 2, 2, 2, 2, 2, 2, 17, 17, 17, 17,139,139, + 139,139,139,139,139,139,139,139,139,139, 2, 2, 2, 2,105,105, + 105,105,105,105,105,105,105,105,105, 2, 2, 2, 2, 2,105,105, + 105,105,105, 2, 2, 2,105, 2, 2, 2, 2, 2, 2, 2,105,105, + 2, 2,105,105,105,105, 1, 1, 1, 1, 1, 1, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, + 0, 2, 2, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, + 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0,131,131,131,131,131,131,131,131,131,131, + 131,131, 2, 2, 2, 2, 2, 2, 2,131,131,131,131,131, 2,131, + 131,131,131,131,131,131, 2, 2, 2, 2, 2, 19, 19, 19, 56, 56, + 56, 56, 56, 56, 56, 2, 56, 2, 2, 56, 56, 56, 56, 56, 56, 56, + 2, 56, 56, 2, 56, 56, 56, 56, 56, 2, 2, 2, 2, 2, 6, 6, + 6, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,151,151, + 151,151,151,151,151,151,151,151,151,151,151, 2, 2, 2,151,151, + 151,151,151,151, 2, 2,151,151, 2, 2, 2, 2,151,151,160,160, + 160,160,160,160,160,160,160,160,160,160,160,160,160, 2,152,152, + 152,152,152,152,152,152,152,152, 2, 2, 2, 2, 2,152,164,164, + 164,164,164,164,164,164,164,164, 2, 2, 2, 2, 2, 2,168,168, + 168,168,168,168,168,168,168,168,168, 2, 2, 2, 2,168, 30, 30, + 30, 30, 2, 30, 30, 2,113,113,113,113,113,113,113,113,113,113, + 113,113,113, 2, 2,113,113,113,113,113,113,113,113, 2,132,132, + 132,132,132,132,132,132,132,132,132,132, 2, 2, 2, 2,132,132, + 2, 2, 2, 2,132,132, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3, + 3, 2, 3, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3, + 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 2, 3, 2, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, + 3, 3, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 0, 0, 15, 0, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 13, 2, + 2, 2, 2, 2, 2, 2, 13, 13, 13, 2, 2, 2, 2, 2, 2, 0, + 2, 2, 2, 2, 2, 2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 9, 9, 9, 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 16, 17, 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20, + 21, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 23, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, - 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, + 29, 30, 0, 0, 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, + 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, + 46, 47, 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, + 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, + 55, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, + 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, - 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99,100,101,102,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0, + 107, 0, 0, 0,108, 0,109, 0,110, 0,111,112,113, 0,114, 0, + 0, 0,115, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,118,119,120,121, 0,122,123,124, + 125,126, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,128,129,130,131,132,133,134,135,136,137,138,139, + 140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155, + 156,157, 0, 0, 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102, - 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,107, 0, 0, 0, - 108, 0,109, 0,110, 0,111,112,113, 0,114, 0, 0, 0,115, 0, - 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,118,119,120,121, 0,122,123,124,125,126, 0,127, + 162, 0,163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, 0, + 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, 0, + 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, - 144,145,146,147,148,149,150,151,152,153,154,155,156,157, 0, 0, - 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,162,163, 0, 0, 0, 0, 0, - 0, 0,164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,169,170, 0, 0, 0, 0,171,172, 0, 0, 0, - 173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188, - 189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204, - 205,206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0,178, + 179, 0, 0, 0,180,181,182,183,184,185,186,187,188,189,190,191, + 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 4, }; static const uint16_t -_hb_ucd_u16[10060] = +_hb_ucd_u16[9668] = { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, @@ -3776,9 +4012,10 @@ _hb_ucd_u16[10060] = 136, 48, 48, 137, 138, 139, 140, 140, 141, 48, 142, 143, 144, 145, 140, 140, 146, 147, 148, 149, 150, 48, 151, 152, 153, 154, 32, 155, 156, 157, 140, 140, 48, 48, 158, 159, 160, 161, 162, 163, 164, 165, 9, 9, 166, 11, 11, 167, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 168, 169, 48, 48, - 168, 48, 48, 170, 171, 172, 48, 48, 48, 171, 48, 48, 48, 173, 174, 175, - 48, 176, 9, 9, 9, 9, 9, 177, 178, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 168, 169, 48, 48, 168, 48, 48, 170, 171, 172, 48, 48, + 48, 171, 48, 48, 48, 173, 174, 175, 48, 176, 9, 9, 9, 9, 9, 177, + 178, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 179, 48, 180, 181, 48, 48, 48, 48, 182, 183, 48, 184, 48, 185, 48, 186, 187, 188, 48, 48, 48, 189, 190, 191, 192, 193, 194, 192, 48, 48, 195, 48, 48, 196, 197, 48, 198, 48, 48, 48, 48, 199, @@ -3791,28 +4028,34 @@ _hb_ucd_u16[10060] = 241, 242, 241, 241, 242, 243, 241, 244, 245, 245, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 272, 273, 274, 275, 209, 276, 277, 209, 278, - 279, 279, 279, 279, 279, 279, 279, 279, 280, 209, 281, 209, 209, 209, 209, 282, - 209, 283, 279, 284, 209, 285, 286, 209, 209, 209, 287, 140, 288, 140, 271, 271, - 271, 289, 209, 209, 209, 209, 290, 271, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 291, 292, 209, 209, 293, 209, 209, 209, 209, 209, 209, 294, 209, - 209, 209, 209, 209, 209, 209, 295, 296, 271, 297, 209, 209, 298, 279, 299, 279, - 300, 301, 279, 279, 279, 302, 279, 303, 209, 209, 209, 279, 304, 209, 209, 305, - 209, 306, 209, 209, 209, 209, 209, 209, 9, 9, 9, 11, 11, 11, 307, 308, - 13, 13, 13, 13, 13, 13, 309, 310, 11, 11, 311, 48, 48, 48, 312, 313, - 48, 314, 315, 315, 315, 315, 32, 32, 316, 317, 318, 319, 320, 321, 140, 140, - 209, 322, 209, 209, 209, 209, 209, 323, 209, 209, 209, 209, 209, 324, 140, 209, - 325, 326, 327, 328, 136, 48, 48, 48, 48, 329, 178, 48, 48, 48, 48, 330, - 331, 48, 48, 136, 48, 48, 48, 48, 200, 332, 48, 48, 209, 209, 333, 48, - 209, 334, 335, 209, 336, 337, 209, 209, 335, 209, 209, 337, 209, 209, 209, 209, - 48, 48, 48, 48, 209, 209, 209, 209, 48, 338, 48, 48, 48, 48, 48, 48, - 151, 209, 209, 209, 287, 48, 48, 229, 339, 48, 340, 140, 13, 13, 341, 342, - 13, 343, 48, 48, 48, 48, 344, 345, 31, 346, 347, 348, 13, 13, 13, 349, - 350, 351, 352, 353, 354, 355, 140, 356, 357, 48, 358, 359, 48, 48, 48, 360, - 361, 48, 48, 362, 363, 192, 32, 364, 64, 48, 365, 48, 366, 367, 48, 151, - 76, 48, 48, 368, 369, 370, 371, 372, 48, 48, 373, 374, 375, 376, 48, 377, - 48, 48, 48, 378, 379, 380, 381, 382, 383, 384, 315, 11, 11, 385, 386, 11, - 11, 11, 11, 11, 48, 48, 387, 192, 48, 48, 388, 48, 389, 48, 48, 206, - 390, 390, 390, 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, 391, 391, 391, + 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, + 280, 209, 281, 209, 209, 209, 209, 282, 209, 283, 279, 284, 209, 285, 286, 209, + 209, 209, 176, 140, 287, 140, 271, 271, 271, 288, 209, 209, 209, 209, 289, 271, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 290, 291, 209, 209, 292, + 209, 209, 209, 209, 209, 209, 293, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 294, 295, 271, 296, 209, 209, 297, 279, 298, 279, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, + 279, 279, 279, 279, 279, 279, 279, 279, 299, 300, 279, 279, 279, 301, 279, 302, + 209, 209, 209, 279, 303, 209, 209, 304, 209, 305, 209, 209, 209, 209, 209, 209, + 9, 9, 9, 11, 11, 11, 306, 307, 13, 13, 13, 13, 13, 13, 308, 309, + 11, 11, 310, 48, 48, 48, 311, 312, 48, 313, 314, 314, 314, 314, 32, 32, + 315, 316, 317, 318, 319, 320, 140, 140, 209, 321, 209, 209, 209, 209, 209, 322, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, 140, 209, + 324, 325, 326, 327, 136, 48, 48, 48, 48, 328, 178, 48, 48, 48, 48, 329, + 330, 48, 48, 136, 48, 48, 48, 48, 200, 331, 48, 48, 209, 209, 332, 48, + 209, 333, 334, 209, 335, 336, 209, 209, 334, 209, 209, 336, 209, 209, 209, 209, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 209, 209, 209, 209, + 48, 337, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 151, 209, 209, 209, 338, 48, 48, 229, + 339, 48, 340, 140, 13, 13, 341, 342, 13, 343, 48, 48, 48, 48, 344, 345, + 31, 346, 347, 348, 13, 13, 13, 349, 350, 351, 352, 353, 354, 355, 140, 356, + 357, 48, 358, 359, 48, 48, 48, 360, 361, 48, 48, 362, 363, 192, 32, 364, + 64, 48, 365, 48, 366, 367, 48, 151, 76, 48, 48, 368, 369, 370, 371, 372, + 48, 48, 373, 374, 375, 376, 48, 377, 48, 48, 48, 378, 379, 380, 381, 382, + 383, 384, 314, 11, 11, 385, 386, 11, 11, 11, 11, 11, 48, 48, 387, 192, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 388, 48, 389, 48, 48, 206, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 48, 48, 48, 48, 48, 48, 204, 48, 48, 48, 48, 48, 48, 207, 140, 140, 392, 393, 394, 395, 396, 48, 48, 48, 48, 48, 48, 397, 398, 399, 48, 48, 48, 48, 48, 400, 209, 48, 48, 48, 48, 401, 48, 48, 402, 140, 140, 403, @@ -3823,571 +4066,540 @@ _hb_ucd_u16[10060] = 140, 140, 140, 140, 140, 140, 140, 140, 48, 151, 48, 48, 48, 100, 429, 430, 48, 48, 431, 48, 432, 48, 48, 433, 48, 434, 48, 48, 435, 436, 140, 140, 9, 9, 437, 11, 11, 48, 48, 48, 48, 204, 192, 9, 9, 438, 11, 439, - 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 140, 140, 140, 140, - 48, 48, 48, 314, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, + 48, 48, 440, 48, 48, 48, 441, 442, 442, 443, 444, 445, 48, 48, 48, 388, + 48, 48, 48, 313, 48, 199, 440, 140, 446, 27, 27, 447, 140, 140, 140, 140, 448, 48, 48, 449, 48, 450, 48, 451, 48, 200, 452, 140, 140, 140, 48, 453, 48, 454, 48, 455, 140, 140, 140, 140, 48, 48, 48, 456, 271, 457, 271, 271, 458, 459, 48, 460, 461, 462, 48, 463, 48, 464, 140, 140, 465, 48, 466, 467, 48, 48, 48, 468, 48, 469, 48, 470, 48, 471, 472, 140, 140, 140, 140, 140, 48, 48, 48, 48, 196, 140, 140, 140, 9, 9, 9, 473, 11, 11, 11, 474, - 48, 48, 475, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 271, 476, - 48, 48, 477, 478, 140, 140, 140, 479, 48, 464, 480, 48, 62, 481, 140, 48, - 482, 140, 140, 48, 483, 140, 48, 314, 484, 48, 48, 485, 486, 457, 487, 488, - 222, 48, 48, 489, 490, 48, 196, 192, 491, 48, 492, 493, 494, 48, 48, 495, - 222, 48, 48, 496, 497, 498, 499, 500, 48, 97, 501, 502, 503, 140, 140, 140, - 504, 505, 506, 48, 48, 507, 508, 192, 509, 83, 84, 510, 511, 512, 513, 514, - 48, 48, 48, 515, 516, 517, 478, 140, 48, 48, 48, 518, 519, 192, 140, 140, - 48, 48, 520, 521, 522, 523, 140, 140, 48, 48, 48, 524, 525, 192, 526, 140, - 48, 48, 527, 528, 192, 140, 140, 140, 48, 173, 529, 530, 314, 140, 140, 140, - 48, 48, 501, 531, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 532, - 533, 534, 48, 535, 536, 192, 140, 140, 140, 140, 537, 48, 48, 538, 539, 140, - 540, 48, 48, 541, 542, 543, 48, 48, 544, 545, 546, 48, 48, 48, 48, 196, - 547, 140, 140, 140, 140, 140, 140, 140, 84, 48, 520, 548, 549, 148, 175, 550, - 48, 551, 552, 553, 140, 140, 140, 140, 554, 48, 48, 555, 556, 192, 557, 48, - 558, 559, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 560, - 561, 115, 48, 562, 563, 192, 140, 140, 140, 140, 140, 100, 271, 564, 565, 566, - 48, 207, 140, 140, 140, 140, 140, 140, 272, 272, 272, 272, 272, 272, 567, 568, - 48, 48, 48, 48, 388, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 569, - 48, 48, 48, 570, 571, 572, 140, 140, 48, 48, 48, 48, 314, 140, 140, 140, - 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 573, - 48, 48, 48, 574, 575, 576, 577, 578, 48, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 9, 9, 11, 11, 271, 579, 140, 140, 140, 140, 140, 140, - 48, 48, 48, 48, 580, 581, 582, 582, 583, 584, 140, 140, 140, 140, 585, 586, - 48, 48, 48, 48, 48, 48, 48, 440, 48, 48, 48, 48, 48, 199, 140, 140, - 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 587, - 48, 48, 588, 589, 140, 590, 591, 48, 48, 48, 48, 48, 48, 48, 48, 206, - 48, 48, 48, 48, 48, 48, 71, 151, 196, 592, 593, 140, 140, 140, 140, 140, - 32, 32, 594, 32, 595, 209, 209, 209, 209, 209, 209, 209, 323, 140, 140, 140, - 209, 209, 209, 209, 209, 209, 209, 324, 209, 209, 596, 209, 209, 209, 597, 598, - 599, 209, 600, 209, 209, 209, 288, 140, 209, 209, 209, 209, 601, 140, 140, 140, - 140, 140, 140, 140, 271, 602, 271, 602, 209, 209, 209, 209, 209, 287, 271, 461, - 9, 603, 11, 604, 605, 606, 241, 9, 607, 608, 609, 610, 611, 9, 603, 11, - 612, 613, 11, 614, 615, 616, 617, 9, 618, 11, 9, 603, 11, 604, 605, 11, - 241, 9, 607, 617, 9, 618, 11, 9, 603, 11, 619, 9, 620, 621, 622, 623, - 11, 624, 9, 625, 626, 627, 628, 11, 629, 9, 630, 11, 631, 632, 632, 632, - 32, 32, 32, 633, 32, 32, 634, 635, 636, 637, 45, 140, 140, 140, 140, 140, - 638, 639, 640, 140, 140, 140, 140, 140, 641, 642, 643, 27, 27, 27, 644, 140, - 645, 140, 140, 140, 140, 140, 140, 140, 48, 48, 151, 646, 647, 140, 140, 140, - 140, 48, 648, 140, 48, 48, 649, 650, 140, 140, 140, 140, 140, 48, 651, 192, - 140, 140, 140, 140, 140, 140, 652, 200, 48, 48, 48, 48, 653, 595, 140, 140, - 9, 9, 607, 11, 654, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 499, - 271, 271, 655, 656, 140, 140, 140, 140, 499, 271, 657, 658, 140, 140, 140, 140, - 659, 48, 660, 661, 662, 663, 664, 665, 666, 206, 667, 206, 140, 140, 140, 668, - 209, 209, 669, 209, 209, 209, 209, 209, 209, 323, 334, 670, 670, 670, 209, 324, - 671, 209, 209, 209, 209, 209, 209, 209, 209, 209, 672, 140, 140, 140, 673, 209, - 674, 209, 209, 669, 675, 676, 324, 140, 209, 209, 209, 209, 209, 209, 209, 677, - 209, 209, 209, 209, 209, 678, 426, 426, 209, 209, 209, 209, 209, 209, 209, 679, - 209, 209, 209, 209, 209, 176, 669, 427, 669, 209, 209, 209, 680, 176, 209, 209, - 680, 209, 672, 676, 140, 140, 140, 140, 209, 209, 209, 209, 209, 323, 672, 426, - 675, 209, 209, 681, 682, 669, 675, 675, 209, 683, 209, 209, 288, 140, 140, 192, - 48, 48, 48, 48, 48, 48, 140, 140, 48, 48, 48, 207, 48, 48, 48, 48, - 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 478, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 100, 48, 48, 48, 48, 48, 48, 204, 140, 140, - 48, 204, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 71, 48, 48, 48, - 48, 48, 48, 140, 140, 140, 140, 140, 684, 140, 570, 570, 570, 570, 570, 570, + 48, 48, 475, 192, 476, 9, 477, 11, 478, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 271, 479, 48, 48, 480, 481, 482, 140, 140, 483, + 48, 464, 484, 48, 62, 485, 140, 48, 486, 140, 140, 48, 487, 140, 48, 313, + 488, 48, 48, 489, 490, 457, 491, 492, 222, 48, 48, 493, 494, 48, 196, 192, + 495, 48, 496, 497, 498, 48, 48, 499, 222, 48, 48, 500, 501, 502, 503, 504, + 48, 97, 505, 506, 507, 140, 140, 140, 508, 509, 510, 48, 48, 511, 512, 192, + 513, 83, 84, 514, 515, 516, 517, 518, 519, 48, 48, 520, 521, 522, 523, 140, + 48, 48, 48, 524, 525, 526, 481, 140, 48, 48, 48, 527, 528, 192, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 529, 530, 531, 532, 140, 140, + 48, 48, 48, 533, 534, 192, 535, 140, 48, 48, 536, 537, 192, 538, 539, 140, + 48, 540, 541, 542, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 505, 543, 140, 140, 140, 140, 140, 140, 9, 9, 11, 11, 148, 544, + 545, 546, 48, 547, 548, 192, 140, 140, 140, 140, 549, 48, 48, 550, 551, 140, + 552, 48, 48, 553, 554, 555, 48, 48, 556, 557, 558, 48, 48, 48, 48, 196, + 559, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 560, 192, + 84, 48, 529, 561, 562, 148, 175, 563, 48, 564, 565, 566, 140, 140, 140, 140, + 567, 48, 48, 568, 569, 192, 570, 48, 571, 572, 192, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 573, + 574, 115, 48, 575, 576, 577, 140, 140, 140, 140, 140, 100, 271, 578, 579, 580, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 207, 140, 140, 140, 140, 140, 140, + 272, 272, 272, 272, 272, 272, 581, 582, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 388, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 48, 48, 48, 48, 48, 583, + 48, 48, 48, 584, 585, 586, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 71, + 48, 48, 48, 48, 313, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 587, 588, 192, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 196, 48, 200, 370, 48, 48, 48, 48, 200, 192, 48, 204, 589, + 48, 48, 48, 590, 591, 592, 593, 594, 48, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 595, 48, 596, 192, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 9, 9, 11, 11, 271, 597, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 48, 598, 599, 600, 600, 601, 602, 140, 140, 140, 140, 603, 604, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 440, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 199, 140, 605, + 196, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 606, + 48, 48, 607, 608, 140, 609, 610, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 206, + 48, 48, 48, 48, 48, 48, 71, 151, 196, 611, 612, 140, 140, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 192, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, 140, + 32, 32, 613, 32, 614, 209, 209, 209, 209, 209, 209, 209, 322, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 323, + 209, 209, 615, 209, 209, 209, 616, 617, 618, 209, 619, 209, 209, 209, 287, 140, + 209, 209, 209, 209, 620, 140, 140, 140, 140, 140, 140, 140, 271, 621, 271, 621, + 209, 209, 209, 209, 209, 338, 271, 461, 140, 140, 140, 140, 140, 140, 140, 140, + 9, 622, 11, 623, 624, 625, 241, 9, 626, 627, 628, 629, 630, 9, 622, 11, + 631, 632, 11, 633, 634, 635, 636, 9, 637, 11, 9, 622, 11, 623, 624, 11, + 241, 9, 626, 636, 9, 637, 11, 9, 622, 11, 638, 9, 639, 640, 641, 642, + 11, 643, 9, 644, 645, 646, 647, 11, 648, 9, 649, 11, 650, 538, 538, 538, + 32, 32, 32, 651, 32, 32, 652, 653, 654, 655, 45, 140, 140, 140, 140, 140, + 656, 657, 658, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 659, 660, 661, 27, 27, 27, 662, 140, 663, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 151, 664, 665, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 666, 140, 48, 48, 667, 668, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 669, 192, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 48, 587, 670, + 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 671, 200, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 672, 614, 140, 140, + 9, 9, 626, 11, 673, 370, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 503, 271, 271, 674, 675, 140, 140, 140, 140, + 503, 271, 676, 677, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 678, 48, 679, 680, 681, 682, 683, 684, 685, 206, 686, 206, 140, 140, 140, 687, + 209, 209, 688, 209, 209, 209, 209, 209, 209, 322, 333, 689, 689, 689, 209, 323, + 690, 209, 209, 209, 209, 209, 209, 209, 209, 209, 691, 140, 140, 140, 692, 209, + 693, 209, 209, 688, 694, 695, 323, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 696, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 697, 426, 426, + 209, 209, 209, 209, 209, 209, 209, 698, 209, 209, 209, 209, 209, 176, 688, 427, + 688, 209, 209, 209, 699, 176, 209, 209, 699, 209, 691, 688, 695, 140, 140, 140, + 209, 209, 209, 209, 209, 322, 691, 426, 700, 209, 209, 209, 701, 702, 176, 694, + 209, 209, 209, 209, 209, 209, 209, 209, 209, 703, 209, 209, 209, 209, 209, 192, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, + 48, 48, 48, 207, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 204, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 481, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 100, 48, + 48, 48, 48, 48, 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 204, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, + 48, 48, 48, 48, 71, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 140, 140, 140, + 704, 140, 584, 584, 584, 584, 584, 584, 140, 140, 140, 140, 140, 140, 140, 140, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 140, - 391, 391, 391, 391, 391, 391, 391, 685, 391, 391, 391, 391, 391, 391, 391, 686, - 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 0, 0, 7, 0, - 8, 8, 8, 8, 8, 8, 8, 9, 10, 11, 12, 11, 11, 11, 13, 11, - 14, 14, 14, 14, 14, 14, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 16, 17, 18, 17, 17, 19, 20, 21, 21, 22, 21, 23, 24, - 25, 26, 27, 27, 28, 29, 27, 30, 27, 27, 27, 27, 27, 31, 27, 27, - 32, 33, 33, 33, 34, 27, 27, 27, 35, 35, 35, 36, 37, 37, 37, 38, - 39, 39, 40, 41, 42, 43, 44, 27, 45, 46, 27, 27, 27, 27, 47, 27, - 48, 48, 48, 48, 48, 49, 50, 48, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 109, 110, 111, 112, 109, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 122, 123, 122, 124, 125, 125, 126, 127, 128, 129, 130, 131, 125, 125, - 132, 132, 132, 132, 133, 132, 134, 135, 132, 133, 132, 136, 136, 137, 125, 125, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, 140, 139, 139, 141, - 142, 142, 142, 142, 142, 142, 142, 142, 143, 143, 143, 143, 144, 145, 143, 143, - 144, 143, 143, 146, 147, 148, 143, 143, 143, 147, 143, 143, 143, 149, 143, 150, - 143, 151, 152, 152, 152, 152, 152, 153, 154, 154, 154, 154, 154, 154, 154, 154, - 155, 156, 157, 157, 157, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 168, 168, 168, 168, 169, 170, 170, 171, 172, 173, 173, 173, 173, 173, 174, - 173, 173, 175, 154, 154, 154, 154, 176, 177, 178, 179, 179, 180, 181, 182, 183, - 184, 184, 185, 184, 186, 187, 168, 168, 188, 189, 190, 190, 190, 191, 190, 192, - 193, 193, 194, 8, 195, 125, 125, 125, 196, 196, 196, 196, 197, 196, 196, 198, - 199, 199, 199, 199, 200, 200, 200, 201, 202, 202, 202, 203, 204, 205, 205, 205, - 206, 139, 139, 207, 208, 209, 210, 211, 4, 4, 212, 4, 4, 213, 214, 215, - 4, 4, 4, 216, 8, 8, 8, 8, 11, 217, 11, 11, 217, 218, 11, 219, - 11, 11, 11, 220, 220, 221, 11, 222, 223, 0, 0, 0, 0, 0, 224, 225, - 226, 227, 0, 0, 228, 8, 8, 229, 0, 0, 230, 231, 232, 0, 4, 4, - 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 234, 125, 235, 125, 0, 0, 236, 236, 236, 236, 236, 236, 236, 236, - 0, 0, 0, 0, 0, 0, 0, 237, 0, 238, 0, 0, 0, 0, 0, 0, - 239, 239, 239, 239, 239, 239, 4, 4, 240, 240, 240, 240, 240, 240, 240, 241, - 139, 139, 140, 242, 242, 242, 243, 244, 143, 245, 246, 246, 246, 246, 14, 14, - 0, 0, 0, 0, 0, 247, 125, 125, 248, 249, 248, 248, 248, 248, 248, 250, - 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 251, 125, 0, - 252, 0, 253, 254, 255, 256, 256, 256, 256, 257, 258, 259, 259, 259, 259, 260, - 261, 262, 262, 263, 142, 142, 142, 142, 264, 0, 262, 262, 0, 0, 265, 259, - 142, 264, 0, 0, 0, 0, 142, 266, 0, 0, 0, 0, 0, 259, 259, 267, - 259, 259, 259, 259, 259, 268, 0, 0, 248, 248, 248, 248, 0, 0, 0, 0, - 269, 269, 269, 269, 269, 269, 269, 269, 270, 269, 269, 269, 271, 272, 272, 272, - 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, 125, 14, 14, 14, 14, - 14, 14, 275, 275, 275, 275, 275, 276, 0, 0, 277, 4, 4, 4, 4, 4, - 278, 4, 4, 4, 279, 280, 125, 281, 282, 282, 283, 284, 285, 285, 285, 286, - 287, 287, 287, 287, 288, 289, 48, 48, 290, 290, 291, 292, 292, 293, 142, 294, - 295, 295, 295, 295, 296, 297, 138, 298, 299, 299, 299, 300, 301, 302, 138, 138, - 303, 303, 303, 303, 304, 305, 306, 307, 308, 309, 246, 4, 4, 310, 311, 152, - 152, 152, 152, 152, 306, 306, 312, 313, 142, 142, 314, 142, 315, 142, 142, 316, - 125, 125, 125, 125, 125, 125, 125, 125, 248, 248, 248, 248, 248, 248, 317, 248, - 248, 248, 248, 248, 248, 318, 125, 125, 319, 320, 21, 321, 322, 27, 27, 27, - 27, 27, 27, 27, 323, 324, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 325, 27, 27, 27, 27, 27, 326, 27, 27, 327, 125, 125, 27, - 8, 284, 328, 0, 0, 329, 330, 331, 27, 27, 27, 27, 27, 27, 27, 332, - 333, 0, 1, 2, 1, 2, 334, 258, 259, 335, 142, 264, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 344, 125, 125, 341, 341, 341, 341, 341, 341, 341, 345, - 346, 0, 0, 347, 11, 11, 11, 11, 348, 349, 350, 125, 125, 0, 0, 351, - 352, 353, 354, 354, 354, 355, 356, 357, 358, 358, 359, 360, 361, 362, 362, 363, - 364, 365, 366, 366, 367, 368, 125, 125, 369, 369, 369, 369, 369, 370, 370, 370, - 371, 372, 373, 374, 374, 375, 374, 376, 377, 377, 378, 379, 379, 379, 380, 381, - 381, 382, 383, 384, 125, 125, 125, 125, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 385, 386, 385, 387, 388, 125, 389, 4, 4, 390, 125, 125, 125, 125, - 391, 392, 392, 393, 394, 395, 396, 396, 397, 398, 399, 125, 125, 125, 400, 401, - 402, 403, 404, 405, 125, 125, 125, 125, 406, 406, 407, 408, 407, 409, 407, 407, - 410, 411, 412, 413, 414, 414, 415, 415, 416, 416, 125, 125, 417, 417, 418, 419, - 420, 420, 420, 421, 422, 423, 424, 425, 426, 427, 428, 125, 125, 125, 125, 125, - 429, 429, 429, 429, 430, 125, 125, 125, 431, 431, 431, 432, 431, 431, 431, 433, - 434, 434, 435, 436, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 27, 45, - 437, 437, 438, 439, 125, 125, 125, 440, 441, 441, 442, 443, 443, 444, 125, 445, - 446, 125, 125, 447, 448, 125, 449, 450, 451, 451, 451, 451, 452, 453, 451, 454, - 455, 455, 455, 455, 456, 457, 458, 459, 460, 460, 460, 461, 462, 463, 463, 464, - 465, 465, 465, 465, 465, 465, 466, 467, 468, 469, 468, 468, 470, 125, 125, 125, - 471, 472, 473, 474, 474, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 485, 485, 485, 485, 486, 487, 125, 488, 488, 488, 488, 489, 490, 125, 125, - 491, 491, 491, 492, 491, 493, 125, 125, 494, 494, 494, 494, 495, 496, 497, 125, - 498, 498, 498, 499, 499, 125, 125, 125, 500, 501, 502, 500, 503, 125, 125, 125, - 504, 504, 504, 505, 125, 125, 125, 125, 125, 125, 506, 506, 506, 506, 506, 507, - 508, 509, 510, 511, 512, 513, 125, 125, 125, 125, 514, 515, 515, 514, 516, 125, - 517, 517, 517, 517, 518, 519, 519, 519, 519, 519, 520, 154, 521, 521, 521, 522, - 523, 125, 125, 125, 125, 125, 125, 125, 524, 525, 525, 526, 527, 525, 528, 529, - 529, 530, 531, 532, 125, 125, 125, 125, 533, 534, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 543, 544, - 545, 546, 545, 547, 545, 548, 125, 125, 125, 125, 125, 549, 550, 550, 550, 551, - 552, 552, 552, 552, 552, 552, 552, 552, 552, 553, 125, 125, 125, 125, 125, 125, - 552, 552, 552, 552, 552, 552, 554, 555, 552, 552, 552, 552, 556, 125, 125, 125, - 125, 557, 557, 557, 557, 557, 557, 558, 559, 559, 559, 559, 559, 559, 559, 559, - 559, 559, 559, 559, 559, 560, 125, 125, 561, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 562, 125, 125, 125, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 563, 564, 565, 566, 567, 567, 567, 567, 568, 569, 570, 571, 572, - 573, 573, 573, 573, 574, 575, 576, 577, 573, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 578, 578, 578, 578, 578, 579, 125, 125, 125, 125, 125, 125, - 580, 580, 580, 580, 581, 580, 580, 580, 582, 580, 125, 125, 125, 125, 583, 584, - 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 586, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 588, 125, 125, - 589, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 590, - 591, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 592, 593, 125, 594, 595, 596, 596, 596, 596, 596, 596, 596, 596, 596, - 596, 596, 596, 596, 596, 596, 596, 597, 598, 598, 598, 598, 598, 598, 599, 600, - 601, 602, 603, 125, 125, 125, 125, 125, 8, 8, 604, 8, 605, 0, 0, 0, - 0, 0, 0, 0, 603, 125, 125, 125, 0, 0, 0, 0, 0, 0, 0, 606, - 0, 0, 607, 0, 0, 0, 608, 609, 610, 0, 611, 0, 0, 0, 235, 125, - 11, 11, 11, 11, 612, 125, 125, 125, 125, 125, 125, 125, 0, 603, 0, 603, - 0, 0, 0, 0, 0, 234, 0, 613, 0, 0, 0, 0, 0, 224, 0, 0, - 0, 614, 615, 616, 617, 0, 0, 0, 618, 619, 0, 620, 621, 622, 0, 0, - 0, 0, 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, - 625, 625, 625, 625, 625, 625, 625, 625, 626, 627, 628, 125, 125, 125, 125, 125, - 4, 629, 630, 125, 125, 125, 125, 125, 631, 632, 633, 14, 14, 14, 634, 125, - 635, 125, 125, 125, 125, 125, 125, 125, 636, 636, 637, 638, 639, 125, 125, 125, - 125, 640, 641, 125, 642, 642, 642, 643, 125, 125, 125, 125, 125, 644, 644, 645, - 125, 125, 125, 125, 125, 125, 646, 647, 648, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 649, 650, 125, 125, 651, 651, 651, 651, 652, 653, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 333, 0, 0, 0, 654, 125, 125, 125, 125, - 333, 0, 0, 247, 125, 125, 125, 125, 655, 27, 656, 657, 658, 659, 660, 661, - 662, 663, 664, 663, 125, 125, 125, 665, 0, 0, 357, 0, 0, 0, 0, 0, - 0, 603, 226, 333, 333, 333, 0, 606, 0, 0, 247, 125, 125, 125, 666, 0, - 667, 0, 0, 357, 613, 668, 606, 125, 0, 0, 0, 0, 0, 669, 349, 349, - 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 284, 357, 228, - 357, 0, 0, 0, 671, 284, 0, 0, 671, 0, 247, 668, 125, 125, 125, 125, - 0, 0, 0, 0, 0, 603, 247, 349, 613, 0, 0, 672, 673, 357, 613, 613, - 0, 329, 0, 0, 235, 125, 125, 284, 248, 248, 248, 248, 248, 248, 125, 125, - 248, 248, 248, 318, 248, 248, 248, 248, 248, 317, 248, 248, 248, 248, 248, 248, - 248, 248, 584, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 674, 248, - 248, 248, 248, 248, 248, 317, 125, 125, 248, 317, 125, 125, 125, 125, 125, 125, - 248, 248, 248, 248, 675, 248, 248, 248, 248, 248, 248, 125, 125, 125, 125, 125, - 676, 125, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 1, 2, 2, 2, - 2, 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 8, 8, 8, 8, 16, 8, 8, 8, 17, 18, 18, 18, - 19, 19, 19, 19, 19, 20, 19, 19, 21, 22, 22, 22, 22, 22, 22, 22, - 22, 23, 21, 22, 22, 22, 23, 21, 24, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 12, 12, 25, 25, 26, 27, 25, 28, 12, 12, 29, 30, 29, 31, - 29, 29, 32, 32, 29, 29, 29, 29, 31, 29, 33, 7, 7, 34, 29, 29, - 35, 29, 29, 29, 29, 29, 29, 30, 36, 36, 36, 37, 36, 36, 36, 36, - 36, 36, 38, 39, 40, 40, 40, 40, 41, 12, 12, 12, 42, 42, 42, 42, - 42, 42, 43, 44, 45, 45, 45, 45, 45, 45, 45, 46, 45, 45, 45, 47, - 48, 48, 48, 48, 48, 48, 48, 49, 36, 36, 38, 12, 29, 29, 29, 50, - 51, 12, 29, 29, 52, 29, 29, 29, 53, 53, 53, 53, 54, 55, 53, 53, - 53, 56, 53, 53, 57, 58, 57, 59, 59, 57, 57, 57, 57, 57, 60, 57, - 61, 62, 63, 57, 57, 59, 59, 64, 12, 65, 12, 66, 57, 62, 57, 57, - 57, 57, 57, 64, 67, 67, 68, 69, 70, 71, 71, 71, 71, 71, 72, 71, - 72, 73, 74, 72, 68, 69, 70, 74, 75, 12, 67, 76, 12, 77, 71, 71, - 71, 68, 12, 12, 78, 78, 79, 80, 80, 79, 79, 79, 79, 79, 81, 79, - 81, 78, 82, 79, 79, 80, 80, 82, 83, 12, 12, 12, 79, 84, 79, 79, - 82, 12, 78, 79, 85, 85, 86, 87, 87, 86, 86, 86, 86, 86, 88, 86, - 88, 85, 89, 86, 86, 87, 87, 89, 12, 85, 12, 90, 86, 91, 86, 86, - 86, 86, 12, 12, 92, 93, 94, 92, 95, 96, 97, 95, 98, 99, 94, 92, - 100, 100, 96, 92, 94, 92, 95, 96, 99, 98, 12, 12, 12, 92, 100, 100, - 100, 100, 94, 12, 101, 101, 101, 102, 102, 101, 101, 101, 101, 101, 102, 101, - 101, 101, 103, 101, 101, 102, 102, 103, 12, 104, 105, 106, 101, 107, 101, 101, - 12, 108, 101, 101, 109, 109, 109, 110, 110, 109, 109, 109, 109, 109, 110, 109, - 109, 111, 112, 109, 109, 110, 110, 112, 12, 113, 12, 113, 109, 114, 109, 109, - 111, 12, 12, 12, 115, 115, 115, 116, 116, 115, 115, 115, 115, 115, 115, 115, - 115, 116, 116, 115, 12, 115, 115, 115, 115, 117, 115, 115, 118, 118, 119, 119, - 119, 120, 121, 119, 119, 119, 119, 119, 122, 119, 119, 123, 119, 120, 124, 125, - 119, 126, 119, 119, 12, 121, 119, 119, 121, 127, 12, 12, 128, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 130, 131, 129, 129, 129, 12, 12, 12, 12, 12, - 132, 133, 134, 135, 135, 135, 135, 135, 135, 136, 135, 135, 135, 135, 135, 137, - 135, 138, 135, 134, 135, 135, 137, 135, 139, 139, 139, 139, 139, 139, 140, 139, - 139, 139, 139, 141, 140, 139, 139, 139, 139, 139, 139, 142, 139, 143, 144, 12, - 145, 145, 145, 145, 146, 146, 146, 146, 146, 147, 12, 148, 146, 146, 149, 146, - 150, 150, 150, 150, 151, 151, 151, 151, 151, 151, 152, 153, 151, 154, 152, 153, - 152, 153, 151, 154, 152, 153, 151, 151, 151, 154, 151, 151, 151, 151, 154, 155, - 151, 151, 151, 156, 151, 151, 153, 12, 157, 157, 157, 157, 157, 158, 157, 158, - 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, 160, 161, 162, 162, 162, 162, - 162, 162, 163, 164, 162, 162, 165, 12, 166, 166, 166, 166, 166, 167, 12, 168, - 169, 169, 169, 169, 169, 170, 12, 12, 171, 171, 171, 171, 171, 12, 12, 12, - 172, 172, 172, 173, 173, 12, 12, 12, 174, 174, 174, 174, 174, 174, 174, 175, - 174, 174, 175, 12, 176, 177, 178, 178, 178, 178, 179, 12, 178, 178, 178, 178, - 178, 178, 180, 12, 178, 178, 181, 12, 159, 182, 12, 12, 183, 183, 183, 183, - 183, 183, 183, 184, 183, 183, 183, 12, 185, 183, 183, 183, 186, 186, 186, 186, - 186, 186, 186, 187, 186, 188, 12, 12, 189, 189, 189, 189, 189, 189, 189, 12, - 189, 189, 190, 12, 189, 189, 191, 192, 193, 193, 193, 193, 193, 193, 193, 194, - 195, 195, 195, 195, 195, 195, 195, 196, 195, 195, 195, 197, 195, 195, 198, 12, - 195, 195, 195, 198, 7, 7, 7, 199, 200, 200, 200, 200, 200, 200, 200, 201, - 200, 200, 200, 202, 203, 203, 203, 203, 204, 204, 204, 204, 204, 12, 12, 204, - 205, 205, 205, 205, 205, 205, 206, 205, 205, 205, 207, 208, 209, 209, 209, 209, - 19, 19, 210, 12, 146, 146, 211, 212, 203, 203, 12, 12, 213, 7, 7, 7, - 214, 7, 215, 216, 0, 215, 217, 12, 2, 218, 219, 2, 2, 2, 2, 220, - 221, 218, 222, 2, 2, 2, 223, 2, 2, 2, 2, 224, 8, 225, 8, 225, - 8, 8, 226, 226, 8, 8, 8, 225, 8, 15, 8, 8, 8, 10, 8, 227, - 10, 15, 8, 14, 0, 0, 0, 228, 0, 229, 0, 0, 230, 0, 0, 231, - 0, 0, 0, 232, 2, 2, 2, 233, 234, 12, 12, 12, 235, 12, 12, 12, - 0, 236, 237, 0, 4, 0, 0, 0, 0, 0, 0, 4, 2, 2, 5, 12, - 0, 232, 12, 12, 0, 0, 232, 12, 238, 238, 238, 238, 0, 239, 0, 0, - 0, 240, 0, 0, 241, 241, 241, 241, 18, 18, 18, 18, 18, 12, 242, 18, - 243, 243, 243, 243, 243, 243, 12, 244, 245, 12, 12, 244, 151, 154, 12, 12, - 151, 154, 151, 154, 0, 0, 0, 246, 247, 247, 247, 247, 247, 247, 248, 247, - 247, 12, 12, 12, 247, 249, 12, 12, 0, 250, 0, 0, 251, 247, 252, 253, - 0, 0, 247, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 256, 257, 258, - 259, 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, 259, 12, 262, 263, 263, - 263, 263, 263, 263, 264, 150, 150, 150, 150, 150, 150, 265, 0, 12, 12, 131, - 150, 150, 150, 266, 260, 260, 260, 261, 260, 260, 0, 0, 267, 267, 267, 267, - 267, 267, 267, 268, 267, 269, 12, 12, 270, 270, 270, 270, 271, 271, 271, 271, - 271, 271, 271, 12, 272, 272, 272, 272, 272, 272, 12, 12, 237, 2, 2, 2, - 2, 2, 231, 2, 2, 2, 273, 12, 274, 275, 276, 12, 277, 2, 2, 2, - 278, 278, 278, 278, 278, 278, 278, 279, 0, 0, 246, 12, 280, 280, 280, 280, - 280, 280, 12, 12, 281, 281, 281, 281, 281, 282, 12, 283, 281, 281, 282, 12, - 284, 284, 284, 284, 284, 284, 284, 285, 286, 286, 286, 286, 286, 12, 12, 287, - 150, 150, 150, 288, 289, 289, 289, 289, 289, 289, 289, 290, 289, 289, 291, 292, - 145, 145, 145, 293, 294, 294, 294, 294, 294, 295, 12, 12, 294, 294, 294, 296, - 294, 294, 296, 294, 297, 297, 297, 297, 298, 12, 12, 12, 12, 12, 299, 297, - 300, 300, 300, 300, 300, 301, 12, 12, 155, 154, 155, 154, 155, 154, 12, 12, - 2, 2, 3, 2, 2, 302, 303, 12, 300, 300, 300, 304, 300, 300, 304, 12, - 150, 12, 12, 12, 150, 265, 305, 150, 150, 150, 150, 12, 247, 247, 247, 249, - 247, 247, 249, 12, 2, 273, 12, 12, 306, 22, 12, 24, 25, 26, 25, 307, - 308, 309, 25, 25, 50, 12, 12, 12, 310, 29, 29, 29, 29, 29, 29, 311, - 312, 29, 29, 29, 29, 29, 12, 310, 7, 7, 7, 313, 232, 0, 0, 0, - 0, 232, 0, 12, 29, 314, 29, 29, 29, 29, 29, 315, 316, 0, 0, 0, - 0, 317, 260, 260, 260, 260, 260, 318, 319, 150, 319, 150, 319, 150, 319, 288, - 0, 232, 0, 232, 12, 12, 316, 246, 320, 320, 320, 321, 320, 320, 320, 320, - 320, 322, 320, 320, 320, 320, 322, 323, 320, 320, 320, 324, 320, 320, 322, 12, - 232, 131, 0, 0, 0, 131, 0, 0, 8, 8, 8, 14, 0, 0, 0, 234, - 325, 12, 12, 12, 0, 0, 0, 326, 327, 327, 327, 327, 327, 327, 327, 328, - 329, 329, 329, 329, 330, 12, 12, 12, 215, 0, 0, 0, 0, 0, 0, 12, - 331, 331, 331, 331, 331, 12, 12, 332, 333, 333, 333, 333, 333, 333, 334, 12, - 335, 335, 335, 335, 335, 335, 336, 12, 337, 337, 337, 337, 337, 337, 337, 338, - 339, 339, 339, 339, 339, 12, 339, 339, 339, 340, 12, 12, 341, 341, 341, 341, - 342, 342, 342, 342, 343, 343, 343, 343, 343, 343, 343, 344, 343, 343, 344, 12, - 345, 345, 345, 345, 345, 12, 345, 345, 345, 345, 345, 12, 346, 346, 346, 346, - 346, 346, 12, 12, 347, 347, 347, 347, 347, 12, 12, 348, 349, 349, 350, 349, - 350, 351, 349, 349, 351, 349, 349, 349, 351, 349, 351, 352, 353, 353, 353, 353, - 353, 354, 12, 12, 353, 355, 12, 12, 353, 353, 12, 12, 2, 274, 2, 2, - 356, 2, 273, 12, 357, 358, 359, 357, 357, 357, 357, 357, 357, 360, 361, 362, - 363, 363, 363, 363, 363, 364, 363, 363, 365, 365, 365, 365, 366, 366, 366, 366, - 366, 366, 366, 367, 12, 368, 366, 366, 369, 369, 369, 369, 370, 371, 372, 369, - 373, 373, 373, 373, 373, 373, 373, 374, 375, 375, 375, 375, 375, 375, 376, 377, - 378, 378, 378, 378, 379, 379, 379, 379, 379, 379, 12, 379, 380, 379, 379, 379, - 381, 382, 12, 381, 381, 383, 383, 381, 381, 381, 381, 381, 381, 384, 385, 386, - 381, 381, 387, 12, 388, 388, 388, 388, 389, 389, 389, 389, 390, 390, 390, 390, - 390, 391, 392, 390, 390, 391, 12, 12, 393, 393, 393, 393, 393, 394, 395, 393, - 396, 396, 396, 396, 396, 397, 396, 396, 398, 398, 398, 398, 399, 12, 398, 398, - 400, 400, 400, 400, 401, 12, 402, 403, 12, 12, 402, 400, 404, 404, 404, 404, - 404, 404, 405, 12, 406, 406, 406, 406, 407, 12, 12, 12, 407, 12, 408, 406, - 409, 409, 409, 409, 409, 409, 12, 12, 409, 409, 410, 12, 411, 411, 411, 411, - 411, 411, 412, 413, 413, 12, 12, 12, 12, 12, 12, 414, 415, 415, 415, 415, - 415, 415, 12, 12, 416, 416, 416, 416, 416, 416, 417, 12, 418, 418, 418, 418, - 418, 418, 419, 12, 420, 420, 420, 420, 420, 420, 420, 12, 421, 421, 421, 421, - 421, 422, 12, 12, 423, 423, 423, 423, 423, 423, 423, 424, 425, 423, 423, 423, - 423, 424, 12, 426, 427, 427, 427, 427, 428, 12, 12, 429, 430, 430, 430, 430, - 430, 430, 431, 12, 430, 430, 432, 12, 433, 433, 433, 433, 433, 434, 433, 433, - 433, 433, 12, 12, 435, 435, 435, 435, 435, 436, 12, 12, 437, 437, 437, 437, - 118, 119, 119, 119, 119, 127, 12, 12, 438, 438, 438, 438, 439, 438, 438, 438, - 440, 12, 12, 12, 441, 442, 443, 444, 441, 441, 441, 444, 441, 441, 445, 12, - 446, 446, 446, 446, 446, 446, 447, 12, 446, 446, 448, 12, 449, 450, 449, 451, - 451, 449, 449, 449, 449, 449, 452, 449, 452, 450, 453, 449, 449, 451, 451, 454, - 455, 456, 12, 450, 449, 457, 449, 455, 449, 455, 12, 12, 458, 458, 458, 458, - 458, 458, 458, 459, 460, 12, 12, 12, 461, 461, 461, 461, 461, 461, 12, 12, - 461, 461, 462, 12, 463, 463, 463, 463, 463, 464, 463, 463, 463, 463, 463, 464, - 465, 465, 465, 465, 465, 466, 12, 12, 465, 465, 467, 12, 178, 178, 178, 180, - 468, 468, 468, 468, 468, 468, 469, 12, 470, 470, 470, 470, 470, 470, 471, 472, - 470, 470, 470, 12, 470, 471, 12, 12, 473, 473, 473, 473, 473, 473, 473, 12, - 474, 474, 474, 474, 475, 12, 12, 476, 477, 478, 479, 477, 477, 480, 477, 477, - 477, 477, 477, 477, 477, 481, 482, 477, 477, 478, 12, 12, 477, 477, 483, 12, - 484, 484, 485, 484, 484, 484, 484, 484, 484, 486, 12, 12, 487, 487, 487, 487, - 487, 487, 12, 12, 488, 488, 488, 488, 489, 12, 12, 12, 490, 490, 490, 490, - 490, 490, 491, 12, 53, 53, 492, 12, 493, 493, 494, 493, 493, 493, 493, 493, - 493, 495, 493, 493, 493, 496, 12, 12, 493, 493, 493, 497, 498, 498, 498, 498, - 499, 498, 498, 498, 498, 498, 500, 498, 498, 501, 12, 12, 502, 503, 504, 502, - 502, 502, 502, 502, 502, 503, 505, 504, 502, 502, 12, 12, 502, 502, 506, 12, - 507, 508, 509, 507, 507, 507, 507, 507, 507, 507, 507, 510, 508, 507, 511, 12, - 507, 507, 512, 12, 513, 513, 513, 513, 513, 513, 514, 12, 515, 515, 515, 515, - 516, 515, 515, 515, 515, 515, 517, 518, 515, 515, 519, 12, 520, 12, 12, 12, - 100, 100, 100, 100, 96, 12, 12, 98, 521, 521, 521, 521, 521, 521, 522, 12, - 521, 521, 521, 523, 521, 524, 12, 12, 521, 12, 12, 12, 525, 525, 525, 525, - 526, 12, 12, 12, 527, 527, 527, 527, 527, 528, 12, 12, 529, 529, 529, 529, - 529, 530, 12, 12, 272, 272, 531, 12, 532, 532, 532, 532, 532, 532, 532, 533, - 532, 532, 534, 535, 536, 536, 536, 536, 536, 536, 536, 537, 536, 536, 538, 12, - 539, 539, 539, 539, 539, 539, 539, 540, 539, 540, 12, 12, 541, 541, 541, 541, - 541, 542, 12, 12, 541, 541, 543, 541, 543, 541, 541, 541, 541, 541, 12, 544, - 545, 545, 545, 545, 545, 545, 546, 12, 547, 547, 547, 547, 547, 547, 548, 549, - 547, 547, 12, 549, 550, 551, 12, 12, 249, 12, 12, 12, 552, 552, 552, 552, - 552, 552, 12, 12, 553, 553, 553, 553, 553, 554, 12, 12, 552, 552, 555, 12, - 260, 556, 260, 557, 558, 255, 255, 255, 559, 12, 12, 12, 560, 12, 12, 12, - 256, 561, 12, 12, 12, 260, 12, 12, 562, 562, 562, 562, 562, 562, 562, 12, - 563, 563, 563, 563, 563, 563, 564, 12, 563, 563, 563, 565, 563, 563, 565, 12, - 563, 563, 566, 563, 0, 12, 12, 12, 7, 7, 7, 567, 7, 199, 12, 12, - 0, 246, 12, 12, 0, 232, 316, 0, 0, 568, 228, 0, 0, 0, 568, 7, - 213, 569, 7, 0, 0, 0, 570, 228, 8, 225, 12, 12, 0, 0, 234, 12, - 0, 0, 0, 229, 571, 572, 316, 229, 0, 0, 240, 316, 0, 316, 0, 0, - 0, 240, 232, 316, 0, 229, 0, 229, 0, 0, 240, 232, 0, 573, 239, 0, - 229, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 239, 574, 574, 574, 574, - 574, 574, 574, 12, 12, 12, 575, 574, 576, 574, 574, 574, 2, 2, 2, 273, - 12, 275, 273, 12, 241, 577, 241, 241, 241, 241, 578, 241, 579, 580, 577, 12, - 19, 19, 19, 581, 12, 12, 12, 582, 583, 583, 583, 583, 583, 583, 583, 584, - 583, 583, 583, 585, 583, 583, 585, 586, 587, 587, 587, 587, 587, 587, 587, 588, - 589, 589, 589, 589, 589, 589, 590, 591, 592, 592, 592, 592, 592, 592, 593, 12, - 151, 154, 151, 594, 151, 151, 151, 154, 595, 595, 595, 595, 595, 596, 595, 595, - 595, 597, 12, 12, 598, 598, 598, 598, 598, 598, 598, 12, 598, 598, 599, 600, - 0, 234, 12, 12, 29, 414, 29, 29, 601, 602, 414, 29, 50, 29, 603, 12, - 604, 310, 603, 414, 601, 602, 603, 603, 601, 602, 50, 29, 50, 29, 414, 605, - 29, 29, 606, 29, 29, 29, 29, 12, 414, 414, 606, 29, 51, 12, 12, 12, - 12, 239, 0, 0, 607, 12, 12, 12, 246, 12, 12, 12, 0, 0, 12, 0, - 0, 232, 131, 0, 0, 0, 12, 12, 0, 0, 0, 240, 0, 246, 12, 239, - 608, 12, 12, 12, 247, 247, 609, 12, 610, 12, 12, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, - 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041, - 1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126,1127, - 1131,1133, 0,1147,1154,1155,1156,1161,1187,1188,1189,1193, 0,1219,1226,1227, - 1228,1229,1233, 0, 0,1267,1268,1269,1273,1298, 0,1303, 943,1128, 944,1129, - 954,1139, 958,1143, 959,1144, 960,1145, 961,1146, 964,1149, 0, 0, 973,1158, - 974,1159, 975,1160, 983,1168, 978,1163, 988,1173, 990,1175, 991,1176, 993,1178, - 994,1179, 0, 0,1004,1190,1005,1191,1006,1192,1014,1199,1007, 0, 0, 0, - 1016,1201,1020,1206, 0,1022,1208,1025,1211,1023,1209, 0, 0, 0, 0,1032, - 1218,1037,1223,1035,1221, 0, 0, 0,1044,1230,1045,1231,1049,1235, 0, 0, - 1058,1244,1064,1250,1060,1246,1066,1252,1067,1253,1072,1258,1069,1255,1077,1264, - 1074,1261, 0, 0,1083,1270,1084,1271,1085,1272,1088,1275,1089,1276,1096,1283, - 1103,1290,1111,1299,1115,1118,1307,1120,1309,1121,1310, 0,1053,1239, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1093,1280, 0, 0, 0, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 705, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, 706, + 0, 0, 1, 1, 0, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 5, 0, 6, 7, 7, 7, 8, 9, 10, 11, 12, + 13, 13, 13, 13, 14, 13, 13, 13, 13, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 23, 23, 26, 23, 27, 28, 29, 23, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 23, 23, 39, 40, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 82, 86, 86, 87, 88, 89, 90, 91, 82, + 92, 92, 92, 92, 92, 93, 94, 95, 96, 96, 96, 96, 96, 96, 96, 96, + 97, 97, 98, 97, 99, 100, 101, 97, 102, 97, 103, 104, 105, 106, 106, 107, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, 111, + 112, 113, 114, 115, 116, 116, 117, 118, 119, 120, 120, 121, 120, 122, 108, 123, + 124, 125, 126, 127, 128, 129, 130, 116, 131, 132, 133, 134, 135, 136, 137, 82, + 138, 138, 139, 138, 140, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 4, 151, 152, 153, 4, 154, 7, 7, 155, 11, 156, 157, 11, 158, 159, 160, + 161, 0, 0, 162, 163, 0, 164, 165, 0, 166, 167, 4, 168, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 170, 0, 0, 0, 0, 0, + 171, 171, 171, 171, 171, 171, 171, 171, 0, 0, 0, 172, 173, 0, 0, 0, + 174, 174, 174, 4, 175, 175, 175, 176, 93, 177, 178, 179, 180, 181, 181, 13, + 0, 0, 182, 82, 183, 184, 184, 185, 184, 184, 184, 184, 184, 184, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 96, 96, 198, 199, 0, 200, + 201, 0, 0, 202, 0, 0, 203, 204, 194, 194, 205, 0, 0, 0, 0, 0, + 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 0, 0, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 207, 206, 208, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 211, 13, 13, 13, 212, 212, 213, + 0, 214, 4, 4, 215, 4, 216, 217, 218, 219, 220, 221, 222, 222, 223, 40, + 224, 225, 226, 227, 228, 228, 229, 230, 231, 232, 233, 92, 234, 234, 235, 236, + 237, 238, 239, 240, 106, 106, 241, 242, 96, 96, 96, 96, 96, 243, 244, 245, + 82, 82, 82, 82, 82, 82, 82, 82, 184, 184, 184, 246, 184, 184, 247, 82, + 248, 249, 250, 23, 23, 23, 251, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 252, 23, 23, 253, 23, 254, 255, 256, 257, 258, 259, 23, 23, 23, 260, + 261, 1, 1, 262, 263, 201, 264, 265, 266, 267, 268, 82, 269, 269, 269, 270, + 271, 272, 11, 11, 273, 274, 187, 275, 82, 82, 82, 82, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 82, 287, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 303, 304, 305, 306, 307, 82, 82, 308, 309, 310, 311, 312, 313, 82, 314, + 315, 316, 82, 82, 317, 318, 319, 320, 321, 322, 323, 324, 325, 82, 326, 327, + 328, 329, 330, 331, 332, 333, 82, 82, 334, 334, 335, 82, 336, 337, 336, 338, + 339, 340, 341, 342, 343, 82, 82, 82, 82, 82, 82, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 357, 358, 359, 360, 360, 361, 362, + 363, 364, 365, 366, 367, 367, 367, 368, 369, 370, 371, 82, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 384, 385, 386, 387, 387, 388, 82, + 82, 82, 82, 82, 389, 390, 391, 82, 392, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 82, 82, 82, 82, 82, 402, 403, 82, 82, 82, 404, 404, 405, + 406, 407, 408, 82, 82, 409, 410, 411, 412, 412, 413, 414, 414, 415, 416, 417, + 418, 82, 82, 82, 82, 82, 419, 420, 421, 422, 423, 424, 425, 426, 82, 82, + 427, 428, 429, 430, 431, 432, 82, 82, 82, 82, 82, 82, 82, 82, 82, 433, + 434, 435, 436, 82, 82, 437, 438, 439, 440, 440, 440, 440, 440, 440, 440, 440, + 440, 440, 440, 440, 441, 82, 82, 82, 440, 440, 440, 442, 440, 440, 440, 440, + 440, 440, 443, 82, 82, 82, 82, 82, 82, 82, 82, 82, 444, 445, 445, 446, + 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, 448, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 449, 450, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 451, 82, 82, 82, 82, 82, 452, 453, 82, 82, 82, 82, 82, 82, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 454, 455, 456, 457, 458, 459, 460, + 461, 461, 462, 463, 464, 82, 82, 82, 82, 82, 465, 466, 82, 82, 82, 82, + 82, 82, 467, 467, 468, 82, 82, 82, 469, 469, 470, 469, 471, 82, 82, 472, + 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, 474, + 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 475, 476, 477, + 478, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 479, + 480, 191, 191, 191, 191, 191, 191, 191, 191, 481, 482, 483, 484, 484, 484, 484, + 484, 484, 484, 484, 484, 484, 484, 485, 486, 486, 486, 487, 488, 489, 82, 82, + 0, 0, 0, 0, 0, 0, 0, 490, 0, 0, 0, 0, 0, 491, 82, 82, + 7, 492, 493, 0, 0, 0, 489, 82, 0, 0, 0, 0, 0, 0, 0, 494, + 0, 495, 0, 496, 497, 498, 0, 170, 11, 11, 499, 82, 82, 82, 491, 491, + 0, 0, 500, 501, 82, 82, 82, 82, 0, 0, 502, 0, 503, 504, 505, 0, + 506, 507, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 0, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 512, 513, 82, 82, 514, 515, 82, 82, 82, 82, 82, 82, + 516, 517, 13, 518, 519, 82, 82, 82, 520, 521, 522, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 523, 524, 525, 526, 82, 82, 82, 82, 82, 82, 527, 528, + 82, 82, 82, 82, 82, 82, 529, 530, 82, 82, 82, 82, 82, 82, 82, 531, + 532, 532, 532, 532, 532, 532, 533, 82, 534, 534, 535, 82, 82, 82, 82, 82, + 82, 82, 82, 536, 0, 537, 82, 82, 261, 182, 82, 82, 82, 82, 82, 82, + 538, 539, 540, 541, 542, 543, 82, 544, 0, 545, 0, 0, 491, 546, 547, 494, + 0, 0, 0, 0, 0, 548, 82, 549, 550, 551, 552, 553, 82, 82, 82, 82, + 0, 0, 0, 0, 0, 0, 554, 555, 0, 0, 0, 556, 0, 0, 490, 557, + 545, 0, 558, 0, 559, 560, 561, 82, 0, 0, 491, 562, 563, 0, 564, 565, + 0, 0, 0, 0, 258, 0, 0, 490, 184, 184, 184, 184, 184, 184, 184, 82, + 184, 247, 184, 184, 184, 184, 184, 184, 566, 184, 184, 184, 184, 184, 184, 184, + 184, 184, 184, 184, 184, 567, 184, 184, 184, 184, 184, 184, 184, 184, 184, 568, + 184, 184, 566, 82, 82, 82, 82, 82, 566, 82, 82, 82, 82, 82, 82, 82, + 184, 184, 569, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 570, 82, 82, + 571, 0, 0, 0, 82, 82, 82, 82, 7, 7, 7, 7, 7, 7, 7, 572, + 0, 0, 0, 0, 1, 2, 2, 3, 0, 4, 0, 4, 2, 2, 5, 2, + 2, 2, 2, 2, 2, 2, 2, 6, 7, 8, 0, 0, 9, 9, 9, 9, + 9, 9, 10, 11, 12, 13, 14, 14, 15, 14, 14, 14, 14, 14, 14, 14, + 16, 17, 14, 14, 18, 18, 18, 18, 19, 18, 18, 18, 18, 18, 20, 21, + 21, 21, 22, 20, 21, 21, 21, 21, 21, 23, 24, 25, 25, 25, 25, 25, + 25, 26, 25, 25, 25, 27, 28, 26, 29, 30, 31, 32, 31, 31, 31, 31, + 33, 34, 35, 31, 31, 31, 36, 31, 31, 31, 31, 29, 37, 38, 37, 37, + 37, 37, 37, 37, 37, 39, 31, 31, 40, 40, 40, 40, 40, 40, 41, 26, + 42, 42, 42, 42, 42, 42, 42, 43, 44, 44, 44, 44, 44, 45, 44, 46, + 47, 47, 47, 48, 37, 49, 31, 31, 31, 50, 51, 31, 52, 31, 31, 31, + 53, 53, 53, 53, 53, 53, 54, 53, 55, 53, 53, 53, 56, 57, 58, 59, + 59, 60, 61, 62, 57, 63, 64, 65, 66, 59, 59, 67, 68, 69, 70, 71, + 71, 72, 73, 74, 69, 75, 76, 77, 78, 71, 79, 26, 80, 81, 82, 83, + 83, 84, 85, 86, 81, 87, 88, 26, 89, 83, 90, 91, 92, 93, 94, 95, + 95, 96, 97, 98, 93, 99, 100, 101, 102, 95, 95, 26, 103, 104, 105, 106, + 107, 104, 108, 109, 104, 105, 110, 26, 111, 108, 108, 112, 113, 114, 115, 113, + 113, 115, 113, 116, 114, 117, 118, 119, 120, 113, 121, 113, 122, 123, 124, 122, + 122, 124, 125, 126, 123, 127, 128, 128, 129, 122, 130, 26, 131, 132, 133, 131, + 131, 131, 131, 131, 132, 133, 134, 131, 135, 131, 131, 131, 136, 137, 138, 139, + 137, 137, 140, 141, 138, 142, 143, 137, 144, 137, 145, 26, 146, 147, 147, 147, + 147, 147, 147, 148, 147, 147, 147, 149, 26, 26, 26, 26, 150, 151, 152, 152, + 153, 152, 152, 154, 155, 156, 152, 157, 158, 158, 158, 158, 158, 159, 158, 158, + 158, 160, 159, 158, 158, 158, 158, 159, 158, 158, 158, 161, 158, 161, 162, 163, + 164, 164, 164, 164, 165, 165, 165, 165, 166, 167, 165, 165, 165, 165, 165, 168, + 169, 169, 169, 169, 170, 170, 170, 170, 170, 171, 172, 171, 170, 171, 170, 170, + 170, 170, 171, 172, 171, 170, 172, 170, 170, 170, 171, 170, 170, 170, 170, 173, + 170, 170, 170, 174, 170, 170, 170, 175, 176, 176, 176, 176, 176, 176, 177, 177, + 178, 178, 178, 178, 179, 179, 179, 180, 181, 181, 181, 181, 181, 182, 181, 183, + 184, 184, 185, 186, 187, 187, 188, 26, 189, 189, 190, 26, 191, 192, 193, 26, + 194, 194, 194, 194, 194, 194, 194, 195, 194, 196, 194, 196, 197, 198, 198, 199, + 198, 198, 198, 198, 198, 198, 198, 200, 198, 201, 178, 178, 178, 178, 202, 26, + 203, 203, 203, 204, 203, 205, 203, 205, 206, 203, 207, 207, 207, 208, 209, 26, + 210, 210, 210, 210, 210, 211, 210, 210, 210, 212, 210, 213, 214, 214, 214, 215, + 216, 216, 216, 216, 216, 216, 216, 217, 216, 216, 216, 218, 216, 219, 216, 219, + 216, 220, 9, 9, 9, 221, 26, 26, 222, 222, 222, 222, 222, 223, 222, 222, + 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, 226, 227, 228, 228, 228, 228, + 228, 228, 228, 229, 228, 230, 231, 231, 231, 231, 231, 231, 18, 232, 165, 165, + 165, 165, 165, 233, 224, 26, 234, 9, 235, 236, 237, 238, 239, 240, 2, 2, + 2, 2, 2, 241, 242, 243, 2, 244, 2, 2, 2, 245, 14, 14, 246, 246, + 246, 246, 14, 247, 14, 14, 14, 246, 14, 14, 248, 14, 248, 14, 249, 250, + 14, 14, 251, 252, 0, 253, 0, 0, 254, 0, 255, 256, 0, 257, 2, 258, + 259, 26, 9, 9, 9, 9, 260, 26, 261, 262, 4, 0, 0, 263, 0, 0, + 2, 264, 0, 0, 0, 265, 26, 26, 0, 266, 26, 26, 267, 267, 267, 267, + 0, 0, 268, 0, 0, 0, 269, 0, 270, 270, 270, 270, 17, 17, 17, 17, + 17, 17, 271, 272, 166, 167, 273, 273, 273, 273, 273, 273, 273, 274, 275, 274, + 170, 170, 172, 26, 172, 172, 172, 172, 0, 0, 0, 276, 277, 277, 277, 278, + 277, 277, 277, 277, 277, 277, 279, 26, 277, 277, 280, 26, 26, 26, 0, 0, + 281, 0, 0, 0, 282, 283, 0, 284, 285, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 287, 288, 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 291, + 292, 293, 293, 293, 293, 293, 294, 169, 169, 295, 0, 0, 293, 293, 293, 293, + 276, 296, 290, 290, 169, 169, 169, 295, 169, 169, 169, 297, 0, 0, 290, 290, + 290, 290, 290, 298, 290, 290, 290, 0, 299, 299, 299, 299, 299, 300, 299, 299, + 301, 26, 302, 302, 302, 302, 302, 302, 303, 303, 303, 303, 303, 304, 26, 26, + 305, 305, 305, 305, 305, 305, 305, 26, 306, 2, 2, 2, 2, 307, 2, 2, + 2, 308, 309, 258, 26, 26, 310, 2, 311, 311, 311, 311, 311, 312, 0, 265, + 313, 313, 313, 313, 313, 313, 313, 26, 314, 314, 314, 314, 315, 316, 314, 317, + 318, 318, 318, 318, 318, 319, 320, 320, 320, 320, 321, 322, 169, 169, 169, 323, + 324, 324, 324, 324, 324, 325, 324, 326, 164, 164, 164, 327, 328, 328, 328, 328, + 328, 328, 329, 26, 328, 330, 328, 331, 332, 332, 332, 332, 333, 26, 26, 334, + 335, 335, 336, 26, 337, 337, 337, 26, 172, 172, 2, 2, 2, 2, 2, 338, + 339, 340, 176, 176, 335, 335, 335, 335, 335, 341, 335, 342, 343, 26, 169, 169, + 295, 344, 169, 169, 169, 169, 169, 343, 277, 280, 277, 277, 277, 277, 277, 345, + 346, 26, 347, 348, 25, 25, 349, 350, 351, 25, 31, 31, 352, 26, 353, 31, + 31, 31, 31, 354, 31, 31, 355, 31, 31, 356, 26, 26, 26, 26, 31, 31, + 9, 9, 0, 265, 9, 357, 0, 0, 0, 0, 358, 0, 257, 359, 360, 31, + 31, 31, 31, 361, 362, 0, 0, 0, 363, 290, 289, 290, 290, 290, 290, 364, + 365, 365, 365, 366, 257, 257, 26, 367, 368, 369, 368, 368, 370, 368, 368, 371, + 368, 372, 368, 372, 368, 368, 368, 368, 368, 368, 368, 373, 374, 0, 0, 0, + 0, 0, 375, 0, 14, 252, 0, 376, 377, 26, 26, 26, 0, 0, 0, 378, + 379, 379, 379, 380, 381, 381, 381, 381, 381, 381, 382, 26, 383, 0, 0, 359, + 384, 384, 384, 384, 385, 386, 387, 387, 387, 388, 389, 389, 389, 389, 389, 390, + 391, 391, 391, 392, 393, 393, 393, 393, 394, 393, 395, 26, 396, 396, 396, 396, + 396, 396, 397, 397, 397, 397, 397, 397, 398, 398, 398, 399, 398, 400, 401, 401, + 401, 401, 402, 401, 401, 401, 401, 402, 403, 403, 403, 403, 403, 26, 404, 404, + 404, 404, 404, 404, 405, 406, 407, 408, 407, 408, 409, 407, 410, 407, 410, 411, + 412, 412, 412, 412, 412, 412, 413, 26, 414, 414, 414, 414, 414, 414, 415, 26, + 414, 414, 416, 26, 414, 26, 26, 26, 417, 2, 2, 2, 2, 2, 418, 419, + 420, 421, 422, 422, 422, 422, 423, 424, 425, 425, 426, 425, 427, 427, 427, 427, + 428, 428, 428, 429, 430, 428, 26, 26, 431, 431, 432, 433, 434, 434, 434, 435, + 436, 436, 436, 437, 438, 438, 438, 438, 439, 439, 439, 440, 439, 439, 441, 439, + 439, 439, 439, 439, 442, 443, 444, 445, 446, 446, 447, 448, 446, 449, 446, 449, + 450, 450, 450, 450, 451, 451, 451, 451, 452, 452, 452, 452, 453, 454, 453, 26, + 455, 455, 455, 455, 455, 455, 456, 457, 458, 458, 459, 458, 460, 460, 461, 460, + 462, 462, 463, 464, 26, 465, 26, 26, 466, 466, 466, 466, 466, 467, 26, 26, + 468, 468, 468, 468, 468, 468, 469, 26, 468, 468, 469, 470, 471, 471, 471, 471, + 471, 26, 471, 472, 473, 473, 473, 473, 474, 475, 473, 473, 474, 476, 26, 26, + 31, 31, 31, 50, 477, 477, 477, 477, 477, 478, 479, 26, 480, 26, 26, 26, + 26, 26, 26, 481, 482, 482, 482, 482, 482, 26, 483, 483, 483, 483, 483, 484, + 26, 26, 485, 485, 485, 486, 26, 26, 26, 26, 487, 487, 487, 488, 26, 26, + 489, 489, 490, 26, 491, 491, 491, 491, 491, 492, 493, 491, 491, 491, 492, 494, + 495, 495, 495, 495, 496, 497, 498, 498, 498, 499, 498, 500, 501, 501, 501, 501, + 501, 501, 502, 501, 501, 26, 503, 503, 503, 503, 504, 26, 505, 505, 505, 505, + 506, 137, 507, 26, 508, 508, 509, 508, 508, 508, 508, 508, 510, 26, 26, 26, + 511, 512, 513, 514, 513, 515, 516, 516, 516, 516, 516, 516, 516, 517, 516, 518, + 519, 520, 521, 522, 522, 523, 524, 525, 520, 526, 527, 528, 529, 530, 530, 26, + 531, 532, 531, 531, 531, 531, 533, 531, 534, 535, 533, 536, 537, 26, 26, 26, + 538, 538, 538, 538, 538, 538, 538, 539, 540, 26, 26, 26, 541, 541, 541, 541, + 541, 26, 541, 542, 543, 543, 543, 543, 543, 543, 544, 543, 543, 543, 543, 544, + 545, 545, 545, 545, 546, 26, 545, 547, 198, 548, 26, 26, 549, 549, 549, 549, + 549, 549, 549, 550, 549, 550, 164, 164, 551, 26, 26, 26, 552, 552, 552, 553, + 552, 554, 552, 552, 555, 26, 26, 26, 556, 556, 556, 556, 556, 556, 556, 557, + 558, 558, 558, 558, 558, 558, 559, 560, 561, 562, 563, 564, 564, 564, 565, 566, + 561, 26, 564, 567, 568, 569, 568, 568, 568, 568, 568, 569, 570, 26, 26, 26, + 571, 571, 571, 571, 571, 26, 572, 572, 572, 572, 572, 572, 573, 26, 178, 178, + 574, 574, 574, 574, 574, 574, 574, 575, 53, 576, 26, 26, 577, 577, 577, 577, + 578, 26, 577, 578, 579, 580, 579, 579, 579, 579, 581, 579, 582, 26, 579, 579, + 579, 583, 584, 584, 584, 584, 585, 584, 584, 586, 587, 26, 588, 589, 590, 590, + 590, 590, 588, 591, 590, 26, 590, 592, 593, 594, 595, 595, 595, 596, 597, 598, + 595, 599, 26, 26, 600, 600, 600, 601, 602, 602, 603, 602, 602, 602, 602, 604, + 602, 602, 602, 605, 26, 26, 606, 26, 108, 108, 108, 108, 108, 108, 607, 608, + 609, 609, 609, 609, 609, 609, 609, 610, 609, 611, 612, 26, 613, 26, 26, 26, + 26, 26, 614, 614, 614, 614, 614, 614, 614, 614, 615, 26, 616, 616, 616, 616, + 616, 616, 617, 26, 616, 616, 616, 618, 619, 619, 619, 619, 620, 26, 26, 26, + 621, 621, 621, 621, 621, 621, 621, 622, 305, 305, 305, 623, 624, 624, 624, 625, + 624, 626, 627, 627, 627, 627, 627, 627, 627, 627, 627, 628, 627, 629, 630, 630, + 630, 631, 631, 26, 632, 632, 632, 632, 633, 26, 632, 634, 634, 632, 632, 635, + 632, 632, 26, 26, 636, 636, 636, 636, 636, 636, 636, 637, 638, 638, 638, 638, + 638, 638, 638, 639, 640, 640, 640, 640, 640, 641, 640, 640, 640, 642, 640, 640, + 643, 26, 345, 26, 644, 644, 644, 644, 644, 644, 644, 26, 645, 645, 645, 645, + 645, 645, 646, 26, 26, 26, 26, 647, 644, 648, 26, 26, 26, 26, 649, 650, + 651, 286, 286, 286, 652, 26, 653, 26, 26, 26, 654, 26, 655, 26, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 657, 658, 658, 658, 658, 658, 659, 658, 660, + 658, 661, 658, 662, 359, 26, 26, 26, 0, 0, 0, 265, 0, 0, 359, 26, + 9, 663, 9, 9, 221, 26, 0, 0, 0, 0, 276, 26, 257, 362, 0, 0, + 664, 665, 0, 666, 667, 668, 0, 0, 0, 669, 0, 0, 246, 26, 26, 26, + 0, 0, 257, 26, 0, 0, 0, 259, 0, 0, 254, 0, 0, 0, 0, 254, + 670, 671, 0, 672, 673, 0, 0, 0, 269, 674, 254, 254, 0, 0, 0, 675, + 676, 677, 678, 0, 276, 0, 0, 0, 0, 268, 0, 0, 679, 679, 679, 679, + 679, 680, 26, 681, 682, 679, 26, 26, 2, 2, 2, 346, 683, 419, 26, 26, + 684, 270, 270, 685, 686, 687, 18, 18, 18, 688, 26, 26, 26, 689, 26, 26, + 690, 690, 690, 690, 690, 691, 690, 692, 690, 693, 26, 26, 26, 26, 694, 694, + 694, 695, 26, 26, 696, 696, 696, 696, 696, 696, 696, 697, 26, 26, 698, 698, + 698, 698, 698, 699, 26, 26, 700, 700, 700, 700, 700, 701, 172, 702, 170, 172, + 703, 703, 703, 703, 704, 703, 705, 26, 706, 706, 706, 706, 706, 707, 706, 708, + 26, 26, 362, 0, 0, 0, 376, 26, 709, 31, 31, 31, 710, 711, 712, 713, + 714, 715, 710, 716, 710, 712, 712, 717, 31, 718, 31, 719, 720, 718, 31, 719, + 26, 26, 721, 26, 0, 359, 0, 0, 0, 257, 362, 0, 362, 0, 362, 0, + 0, 276, 26, 26, 722, 0, 0, 0, 723, 26, 0, 0, 0, 0, 0, 359, + 0, 259, 265, 26, 276, 26, 26, 26, 0, 0, 0, 724, 0, 376, 0, 376, + 0, 0, 257, 725, 0, 359, 259, 26, 0, 26, 0, 265, 0, 26, 0, 0, + 0, 276, 0, 359, 265, 26, 26, 26, 0, 276, 0, 376, 0, 726, 0, 0, + 257, 722, 0, 727, 0, 265, 0, 259, 277, 277, 277, 280, 345, 26, 277, 277, + 728, 26, 277, 277, 277, 729, 277, 277, 277, 277, 26, 26, 730, 26, 26, 26, + 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976, + 1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082, + 1086,1110, 0, 0,1124,1125,1126,1127,1131,1133, 0,1147,1154,1155,1156,1161, + 1187,1188,1189,1193, 0,1219,1226,1227,1228,1229,1233, 0, 0,1267,1268,1269, + 1273,1298, 0,1303, 943,1128, 944,1129, 954,1139, 958,1143, 959,1144, 960,1145, + 961,1146, 964,1149, 0, 0, 973,1158, 974,1159, 975,1160, 983,1168, 978,1163, + 988,1173, 990,1175, 991,1176, 993,1178, 994,1179, 0, 0,1004,1190,1005,1191, + 1006,1192,1014,1199,1007, 0, 0, 0,1016,1201,1020,1206, 0,1022,1208,1025, + 1211,1023,1209, 0, 0, 0, 0,1032,1218,1037,1223,1035,1221, 0, 0, 0, + 1044,1230,1045,1231,1049,1235, 0, 0,1058,1244,1064,1250,1060,1246,1066,1252, + 1067,1253,1072,1258,1069,1255,1077,1264,1074,1261, 0, 0,1083,1270,1084,1271, + 1085,1272,1088,1275,1089,1276,1096,1283,1103,1290,1111,1299,1115,1118,1307,1120, + 1309,1121,1310, 0,1053,1239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1093,1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 949,1134,1010,1195,1050,1236,1090,1277,1341,1368,1340,1367,1342,1369,1339, + 1366, 0,1320,1347,1418,1419,1323,1350, 0, 0, 992,1177,1018,1204,1055,1241, + 1416,1417,1415,1424,1202, 0, 0, 0, 987,1172, 0, 0,1031,1217,1321,1348, + 1322,1349,1338,1365, 950,1135, 951,1136, 979,1164, 980,1165,1011,1196,1012,1197, + 1051,1237,1052,1238,1061,1247,1062,1248,1091,1278,1092,1279,1071,1257,1076,1263, + 0, 0, 997,1182, 0, 0, 0, 0, 0, 0, 945,1130, 982,1167,1337,1364, + 1335,1362,1046,1232,1422,1423,1113,1301, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8, 9, 0, 10,1425, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0,1314,1427, 5,1434,1438,1443, 0, + 1450, 0,1455,1461,1514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1446,1458, + 1468,1476,1480,1486,1517, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1489,1503, + 1494,1500,1508, 0, 0, 0, 0,1520,1521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,1526,1528, 0,1525, 0, 0, 0,1522, 0, 0, 0, 0, + 1536,1532,1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1556, 0, 0, + 0, 0, 0, 0,1548,1550, 0,1547, 0, 0, 0,1567, 0, 0, 0, 0, + 1558,1554,1561, 0, 0, 0, 0, 0, 0, 0,1568,1569, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1529,1551, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,1523,1545,1524,1546, 0, 0,1527,1549, 0, 0,1570,1571, + 1530,1552,1531,1553, 0, 0,1533,1555,1535,1557,1537,1559, 0, 0,1572,1573, + 1544,1566,1538,1560,1540,1562,1541,1563,1542,1564, 0, 0,1543,1565, 0, 0, + 0, 0, 0, 0, 0, 0,1606,1607,1609,1608,1610, 0, 0, 0, 0, 0, + 0, 0, 0, 0,1613, 0,1611, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1612, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1620, 0, 0, + 0, 0, 0, 0, 0,1623, 0, 0,1624, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1614,1615,1616,1617, + 1618,1619,1621,1622, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1628, + 1629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1625,1626, 0,1627, 0, 0, 0,1634, 0, 0,1635, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1630,1631,1632, + 0, 0,1633, 0, 0, 0, 0, 0, 0, 0, 0, 0,1639, 0, 0,1638, + 1640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1636,1637, 0, 0, 0, 0, 0, 0,1641, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1642,1644, + 1643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1645, 0, 0, 0, + 0, 0, 0, 0,1646, 0, 0, 0, 0, 0, 0,1648,1649, 0,1647,1650, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1651,1653, + 1652, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1654, 0, + 1655,1657,1656, 0, 0, 0, 0,1659, 0, 0, 0, 0, 0, 0, 0, 0, + 0,1660, 0, 0, 0, 0,1661, 0, 0, 0, 0,1662, 0, 0, 0, 0, + 1663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1658, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1664, 0,1665,1673, 0,1674, 0, 0, 0, + 0, 0, 0, 0, 0,1666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,1668, 0, 0, 0, 0, 0, 0, 0, 0, + 0,1669, 0, 0, 0, 0,1670, 0, 0, 0, 0,1671, 0, 0, 0, 0, + 1672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1667, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1675, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1676, 0,1677, 0,1678, 0, + 1679, 0,1680, 0, 0, 0,1681, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1682, + 0,1683, 0, 0,1684,1685, 0,1686, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 953,1138, 955,1140, 956,1141, 957,1142,1324,1351, 963,1148, + 965,1150, 968,1153, 966,1151, 967,1152,1378,1380,1379,1381, 984,1169, 985,1170, + 1420,1421, 986,1171, 989,1174, 995,1180, 998,1183, 996,1181, 999,1184,1000,1185, + 1015,1200,1329,1356,1017,1203,1019,1205,1021,1207,1024,1210,1687,1688,1027,1213, + 1026,1212,1028,1214,1029,1215,1030,1216,1034,1220,1036,1222,1039,1225,1038,1224, + 1334,1361,1336,1363,1382,1384,1383,1385,1056,1242,1057,1243,1059,1245,1063,1249, + 1689,1690,1065,1251,1068,1254,1070,1256,1386,1387,1388,1389,1691,1692,1073,1259, + 1075,1262,1079,1266,1078,1265,1095,1282,1098,1285,1097,1284,1390,1391,1392,1393, + 1099,1286,1100,1287,1101,1288,1102,1289,1105,1292,1104,1291,1106,1294,1107,1295, + 1108,1296,1114,1302,1119,1308,1122,1311,1123,1312,1186,1260,1293,1305, 0,1394, + 0, 0, 0, 0, 952,1137, 947,1132,1317,1344,1316,1343,1319,1346,1318,1345, + 1693,1695,1371,1375,1370,1374,1373,1377,1372,1376,1694,1696, 981,1166, 977,1162, + 972,1157,1326,1353,1325,1352,1328,1355,1327,1354,1697,1698,1009,1194,1013,1198, + 1054,1240,1048,1234,1331,1358,1330,1357,1333,1360,1332,1359,1699,1700,1396,1401, + 1395,1400,1398,1403,1397,1402,1399,1404,1094,1281,1087,1274,1406,1411,1405,1410, + 1408,1413,1407,1412,1409,1414,1109,1297,1117,1306,1116,1304,1112,1300, 0, 0, + 0, 0, 0, 0,1471,1472,1701,1705,1702,1706,1703,1707,1430,1431,1715,1719, + 1716,1720,1717,1721,1477,1478,1729,1731,1730,1732, 0, 0,1435,1436,1733,1735, + 1734,1736, 0, 0,1481,1482,1737,1741,1738,1742,1739,1743,1439,1440,1751,1755, + 1752,1756,1753,1757,1490,1491,1765,1768,1766,1769,1767,1770,1447,1448,1771,1774, + 1772,1775,1773,1776,1495,1496,1777,1779,1778,1780, 0, 0,1451,1452,1781,1783, + 1782,1784, 0, 0,1504,1505,1785,1788,1786,1789,1787,1790, 0,1459, 0,1791, + 0,1792, 0,1793,1509,1510,1794,1798,1795,1799,1796,1800,1462,1463,1808,1812, + 1809,1813,1810,1814,1467, 21,1475, 22,1479, 23,1485, 24,1493, 27,1499, 28, + 1507, 29, 0, 0,1704,1708,1709,1710,1711,1712,1713,1714,1718,1722,1723,1724, + 1725,1726,1727,1728,1740,1744,1745,1746,1747,1748,1749,1750,1754,1758,1759,1760, + 1761,1762,1763,1764,1797,1801,1802,1803,1804,1805,1806,1807,1811,1815,1816,1817, + 1818,1819,1820,1821,1470,1469,1822,1474,1465, 0,1473,1825,1429,1428,1426, 12, + 1432, 0, 26, 0, 0,1315,1823,1484,1466, 0,1483,1829,1433, 13,1437, 14, + 1441,1826,1827,1828,1488,1487,1513, 19, 0, 0,1492,1515,1445,1444,1442, 15, + 0,1831,1832,1833,1502,1501,1516, 25,1497,1498,1506,1518,1457,1456,1454, 17, + 1453,1313, 11, 3, 0, 0,1824,1512,1519, 0,1511,1830,1449, 16,1460, 18, + 1464, 4, 0, 0, 30, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1834,1835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 949,1134,1010,1195,1050,1236,1090, - 1277,1341,1368,1340,1367,1342,1369,1339,1366, 0,1320,1347,1418,1419,1323,1350, - 0, 0, 992,1177,1018,1204,1055,1241,1416,1417,1415,1424,1202, 0, 0, 0, - 987,1172, 0, 0,1031,1217,1321,1348,1322,1349,1338,1365, 950,1135, 951,1136, - 979,1164, 980,1165,1011,1196,1012,1197,1051,1237,1052,1238,1061,1247,1062,1248, - 1091,1278,1092,1279,1071,1257,1076,1263, 0, 0, 997,1182, 0, 0, 0, 0, - 0, 0, 945,1130, 982,1167,1337,1364,1335,1362,1046,1232,1422,1423,1113,1301, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 10, - 1425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0,1314,1427, 5,1434,1438,1443, 0,1450, 0,1455,1461,1514, 0, 0, 0, + 0, 0,1836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,1837,1839,1838, 0, 0, 0, 0,1840, 0, 0, 0, 0,1841, 0, 0, + 1842, 0, 0, 0, 0, 0, 0, 0,1843, 0,1844, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,1845, 0, 0,1846, 0, 0,1847, 0,1848, 0, 0, + 0, 0, 0, 0, 937, 0,1850, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,1849, 936, 938,1851,1852, 0, 0,1853,1854, 0, 0,1855,1856, 0, 0, + 0, 0, 0, 0,1857,1858, 0, 0,1861,1862, 0, 0,1863,1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1446,1458,1468,1476,1480,1486,1517, 0, 0, 0, + 1867,1868,1869,1870,1859,1860,1865,1866, 0, 0, 0, 0, 0, 0,1871,1872, + 1873,1874, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1489,1503,1494,1500,1508, 0, 0, 0, 0,1520, - 1521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1526,1528, 0,1525, - 0, 0, 0,1522, 0, 0, 0, 0,1536,1532,1539, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1556, 0, 0, 0, 0, 0, 0,1548,1550, 0,1547, - 0, 0, 0,1567, 0, 0, 0, 0,1558,1554,1561, 0, 0, 0, 0, 0, - 0, 0,1568,1569, 0, 0, 0, 0, 0, 0, 0, 0, 0,1529,1551, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1523,1545,1524,1546, - 0, 0,1527,1549, 0, 0,1570,1571,1530,1552,1531,1553, 0, 0,1533,1555, - 1535,1557,1537,1559, 0, 0,1572,1573,1544,1566,1538,1560,1540,1562,1541,1563, - 1542,1564, 0, 0,1543,1565, 0, 0, 0, 0, 0, 0, 0, 0,1606,1607, - 1609,1608,1610, 0, 0, 0, 0, 0, 0, 0, 0, 0,1613, 0,1611, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1612, + 1875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1877, 0,1878, 0,1879, 0,1880, 0,1881, 0,1882, 0,1883, 0,1884, 0, + 1885, 0,1886, 0,1887, 0,1888, 0, 0,1889, 0,1890, 0,1891, 0, 0, + 0, 0, 0, 0,1892,1893, 0,1894,1895, 0,1896,1897, 0,1898,1899, 0, + 1900,1901, 0, 0, 0, 0, 0, 0,1876, 0, 0, 0, 0, 0, 0, 0, + 0, 0,1902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1904, 0,1905, 0,1906, 0,1907, 0,1908, 0,1909, 0,1910, 0,1911, 0, + 1912, 0,1913, 0,1914, 0,1915, 0, 0,1916, 0,1917, 0,1918, 0, 0, + 0, 0, 0, 0,1919,1920, 0,1921,1922, 0,1923,1924, 0,1925,1926, 0, + 1927,1928, 0, 0, 0, 0, 0, 0,1903, 0, 0,1929,1930,1931,1932, 0, + 0, 0,1933, 0, 710, 385, 724, 715, 455, 103, 186, 825, 825, 242, 751, 205, + 241, 336, 524, 601, 663, 676, 688, 738, 411, 434, 474, 500, 649, 746, 799, 108, + 180, 416, 482, 662, 810, 275, 462, 658, 692, 344, 618, 679, 293, 388, 440, 492, + 740, 116, 146, 168, 368, 414, 481, 527, 606, 660, 665, 722, 781, 803, 809, 538, + 553, 588, 642, 758, 811, 701, 233, 299, 573, 612, 487, 540, 714, 779, 232, 267, + 412, 445, 457, 585, 594, 766, 167, 613, 149, 148, 560, 589, 648, 768, 708, 345, + 411, 704, 105, 259, 313, 496, 518, 174, 542, 120, 307, 101, 430, 372, 584, 183, + 228, 529, 650, 697, 424, 732, 428, 349, 632, 355, 517, 110, 135, 147, 403, 580, + 624, 700, 750, 170, 193, 245, 297, 374, 463, 543, 763, 801, 812, 815, 162, 384, + 420, 730, 287, 330, 337, 366, 459, 476, 509, 558, 591, 610, 726, 652, 734, 759, + 154, 163, 198, 473, 683, 697, 292, 311, 353, 423, 572, 494, 113, 217, 259, 280, + 314, 499, 506, 603, 608, 752, 778, 782, 788, 117, 557, 748, 774, 320, 109, 126, + 260, 265, 373, 411, 479, 523, 655, 737, 823, 380, 765, 161, 395, 398, 438, 451, + 502, 516, 537, 583, 791, 136, 340, 769, 122, 273, 446, 727, 305, 322, 400, 496, + 771, 155, 190, 269, 377, 391, 406, 432, 501, 519, 599, 684, 687, 749, 776, 175, + 452, 191, 480, 510, 659, 772, 805, 813, 397, 444, 619, 566, 568, 575, 491, 471, + 707, 111, 636, 156, 153, 288, 346, 578, 256, 435, 383, 729, 680, 767, 694, 295, + 128, 210, 0, 0, 227, 0, 379, 0, 0, 150, 493, 525, 544, 551, 552, 556, + 783, 576, 604, 0, 661, 0, 703, 0, 0, 735, 743, 0, 0, 0, 793, 794, + 795, 808, 741, 773, 118, 127, 130, 166, 169, 177, 207, 213, 215, 226, 229, 268, + 270, 317, 327, 329, 335, 369, 375, 381, 404, 441, 448, 458, 477, 484, 503, 539, + 545, 547, 546, 548, 549, 550, 554, 555, 561, 564, 569, 591, 593, 595, 598, 607, + 620, 625, 625, 651, 690, 695, 705, 706, 716, 717, 733, 735, 777, 786, 790, 315, + 869, 623, 0, 0, 102, 145, 134, 115, 129, 138, 165, 171, 207, 202, 206, 212, + 227, 231, 240, 243, 250, 254, 294, 296, 303, 308, 319, 325, 321, 329, 326, 335, + 341, 357, 360, 362, 370, 379, 388, 389, 393, 421, 424, 438, 456, 454, 458, 465, + 477, 535, 485, 490, 493, 507, 512, 514, 521, 522, 525, 526, 528, 533, 532, 541, + 565, 569, 574, 586, 591, 597, 607, 637, 647, 674, 691, 693, 695, 698, 703, 699, + 705, 704, 702, 706, 709, 717, 728, 736, 747, 754, 770, 777, 783, 784, 786, 787, + 790, 802, 825, 848, 847, 857, 55, 65, 66, 883, 892, 916, 822, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1620, 0, 0, 0, 0, 0, 0, 0,1623, 0, 0, - 1624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1614,1615,1616,1617,1618,1619,1621,1622, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1628,1629, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1625,1626, 0,1627, 0, 0, 0,1634, - 0, 0,1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1630,1631,1632, 0, 0,1633, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1639, 0, 0,1638,1640, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1636,1637, 0, 0, 0, 0, 0, 0, - 1641, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1642,1644,1643, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1645, 0, 0, 0, 0, 0, 0, 0,1646, 0, 0, 0, - 0, 0, 0,1648,1649, 0,1647,1650, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1651,1653,1652, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1654, 0,1655,1657,1656, 0, 0, 0, 0,1659, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1660, 0, 0, 0, 0,1661, 0, - 0, 0, 0,1662, 0, 0, 0, 0,1663, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1658, 0, 0, 0, 0, 0, 0, 0, 0, 0,1664, - 0,1665,1673, 0,1674, 0, 0, 0, 0, 0, 0, 0, 0,1666, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1668, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1669, 0, 0, 0, 0,1670, 0, - 0, 0, 0,1671, 0, 0, 0, 0,1672, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,1667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1675, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1676, 0,1677, 0,1678, 0,1679, 0,1680, 0, 0, 0,1681, 0, + 0,1586, 0,1605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1602,1603, + 1934,1935,1574,1575,1576,1577,1579,1580,1581,1583,1584, 0,1585,1587,1588,1589, + 1591, 0,1592, 0,1593,1594, 0,1595,1596, 0,1598,1599,1600,1601,1604,1582, + 1578,1590,1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1936, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,1937, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1938, 0, + 1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1682, 0,1683, 0, 0,1684,1685, 0,1686, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 953,1138, 955,1140, - 956,1141, 957,1142,1324,1351, 963,1148, 965,1150, 968,1153, 966,1151, 967,1152, - 1378,1380,1379,1381, 984,1169, 985,1170,1420,1421, 986,1171, 989,1174, 995,1180, - 998,1183, 996,1181, 999,1184,1000,1185,1015,1200,1329,1356,1017,1203,1019,1205, - 1021,1207,1024,1210,1687,1688,1027,1213,1026,1212,1028,1214,1029,1215,1030,1216, - 1034,1220,1036,1222,1039,1225,1038,1224,1334,1361,1336,1363,1382,1384,1383,1385, - 1056,1242,1057,1243,1059,1245,1063,1249,1689,1690,1065,1251,1068,1254,1070,1256, - 1386,1387,1388,1389,1691,1692,1073,1259,1075,1262,1079,1266,1078,1265,1095,1282, - 1098,1285,1097,1284,1390,1391,1392,1393,1099,1286,1100,1287,1101,1288,1102,1289, - 1105,1292,1104,1291,1106,1294,1107,1295,1108,1296,1114,1302,1119,1308,1122,1311, - 1123,1312,1186,1260,1293,1305, 0,1394, 0, 0, 0, 0, 952,1137, 947,1132, - 1317,1344,1316,1343,1319,1346,1318,1345,1693,1695,1371,1375,1370,1374,1373,1377, - 1372,1376,1694,1696, 981,1166, 977,1162, 972,1157,1326,1353,1325,1352,1328,1355, - 1327,1354,1697,1698,1009,1194,1013,1198,1054,1240,1048,1234,1331,1358,1330,1357, - 1333,1360,1332,1359,1699,1700,1396,1401,1395,1400,1398,1403,1397,1402,1399,1404, - 1094,1281,1087,1274,1406,1411,1405,1410,1408,1413,1407,1412,1409,1414,1109,1297, - 1117,1306,1116,1304,1112,1300, 0, 0, 0, 0, 0, 0,1471,1472,1701,1705, - 1702,1706,1703,1707,1430,1431,1715,1719,1716,1720,1717,1721,1477,1478,1729,1731, - 1730,1732, 0, 0,1435,1436,1733,1735,1734,1736, 0, 0,1481,1482,1737,1741, - 1738,1742,1739,1743,1439,1440,1751,1755,1752,1756,1753,1757,1490,1491,1765,1768, - 1766,1769,1767,1770,1447,1448,1771,1774,1772,1775,1773,1776,1495,1496,1777,1779, - 1778,1780, 0, 0,1451,1452,1781,1783,1782,1784, 0, 0,1504,1505,1785,1788, - 1786,1789,1787,1790, 0,1459, 0,1791, 0,1792, 0,1793,1509,1510,1794,1798, - 1795,1799,1796,1800,1462,1463,1808,1812,1809,1813,1810,1814,1467, 21,1475, 22, - 1479, 23,1485, 24,1493, 27,1499, 28,1507, 29, 0, 0,1704,1708,1709,1710, - 1711,1712,1713,1714,1718,1722,1723,1724,1725,1726,1727,1728,1740,1744,1745,1746, - 1747,1748,1749,1750,1754,1758,1759,1760,1761,1762,1763,1764,1797,1801,1802,1803, - 1804,1805,1806,1807,1811,1815,1816,1817,1818,1819,1820,1821,1470,1469,1822,1474, - 1465, 0,1473,1825,1429,1428,1426, 12,1432, 0, 26, 0, 0,1315,1823,1484, - 1466, 0,1483,1829,1433, 13,1437, 14,1441,1826,1827,1828,1488,1487,1513, 19, - 0, 0,1492,1515,1445,1444,1442, 15, 0,1831,1832,1833,1502,1501,1516, 25, - 1497,1498,1506,1518,1457,1456,1454, 17,1453,1313, 11, 3, 0, 0,1824,1512, - 1519, 0,1511,1830,1449, 16,1460, 18,1464, 4, 0, 0, 30, 31, 0, 0, + 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1943, + 1944, 0, 0, 0, 0, 0, 0,1945, 0,1946, 0, 0, 0, 0, 0, 0, + 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,1950, 0,1949,1951, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1953, + 1952, 0,1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1955,1956, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1957, 0, 0, 0, + 0, 0, 0, 0, 0,1958,1961,1959,1965,1960,1962,1964,1963, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1967,1966,1968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 0, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1834,1835, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1836, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1837,1839,1838, 0, 0, 0, 0, - 1840, 0, 0, 0, 0,1841, 0, 0,1842, 0, 0, 0, 0, 0, 0, 0, - 1843, 0,1844, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1845, 0, 0, - 1846, 0, 0,1847, 0,1848, 0, 0, 0, 0, 0, 0, 937, 0,1850, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1849, 936, 938,1851,1852, 0, 0, - 1853,1854, 0, 0,1855,1856, 0, 0, 0, 0, 0, 0,1857,1858, 0, 0, - 1861,1862, 0, 0,1863,1864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1867,1868,1869,1870,1859,1860,1865,1866, - 0, 0, 0, 0, 0, 0,1871,1872,1873,1874, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1875, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1877, 0,1878, 0,1879, 0,1880, 0, - 1881, 0,1882, 0,1883, 0,1884, 0,1885, 0,1886, 0,1887, 0,1888, 0, - 0,1889, 0,1890, 0,1891, 0, 0, 0, 0, 0, 0,1892,1893, 0,1894, - 1895, 0,1896,1897, 0,1898,1899, 0,1900,1901, 0, 0, 0, 0, 0, 0, - 1876, 0, 0, 0, 0, 0, 0, 0, 0, 0,1902, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,1904, 0,1905, 0,1906, 0,1907, 0, - 1908, 0,1909, 0,1910, 0,1911, 0,1912, 0,1913, 0,1914, 0,1915, 0, - 0,1916, 0,1917, 0,1918, 0, 0, 0, 0, 0, 0,1919,1920, 0,1921, - 1922, 0,1923,1924, 0,1925,1926, 0,1927,1928, 0, 0, 0, 0, 0, 0, - 1903, 0, 0,1929,1930,1931,1932, 0, 0, 0,1933, 0, 710, 385, 724, 715, - 455, 103, 186, 825, 825, 242, 751, 205, 241, 336, 524, 601, 663, 676, 688, 738, - 411, 434, 474, 500, 649, 746, 799, 108, 180, 416, 482, 662, 810, 275, 462, 658, - 692, 344, 618, 679, 293, 388, 440, 492, 740, 116, 146, 168, 368, 414, 481, 527, - 606, 660, 665, 722, 781, 803, 809, 538, 553, 588, 642, 758, 811, 701, 233, 299, - 573, 612, 487, 540, 714, 779, 232, 267, 412, 445, 457, 585, 594, 766, 167, 613, - 149, 148, 560, 589, 648, 768, 708, 345, 411, 704, 105, 259, 313, 496, 518, 174, - 542, 120, 307, 101, 430, 372, 584, 183, 228, 529, 650, 697, 424, 732, 428, 349, - 632, 355, 517, 110, 135, 147, 403, 580, 624, 700, 750, 170, 193, 245, 297, 374, - 463, 543, 763, 801, 812, 815, 162, 384, 420, 730, 287, 330, 337, 366, 459, 476, - 509, 558, 591, 610, 726, 652, 734, 759, 154, 163, 198, 473, 683, 697, 292, 311, - 353, 423, 572, 494, 113, 217, 259, 280, 314, 499, 506, 603, 608, 752, 778, 782, - 788, 117, 557, 748, 774, 320, 109, 126, 260, 265, 373, 411, 479, 523, 655, 737, - 823, 380, 765, 161, 395, 398, 438, 451, 502, 516, 537, 583, 791, 136, 340, 769, - 122, 273, 446, 727, 305, 322, 400, 496, 771, 155, 190, 269, 377, 391, 406, 432, - 501, 519, 599, 684, 687, 749, 776, 175, 452, 191, 480, 510, 659, 772, 805, 813, - 397, 444, 619, 566, 568, 575, 491, 471, 707, 111, 636, 156, 153, 288, 346, 578, - 256, 435, 383, 729, 680, 767, 694, 295, 128, 210, 0, 0, 227, 0, 379, 0, - 0, 150, 493, 525, 544, 551, 552, 556, 783, 576, 604, 0, 661, 0, 703, 0, - 0, 735, 743, 0, 0, 0, 793, 794, 795, 808, 741, 773, 118, 127, 130, 166, - 169, 177, 207, 213, 215, 226, 229, 268, 270, 317, 327, 329, 335, 369, 375, 381, - 404, 441, 448, 458, 477, 484, 503, 539, 545, 547, 546, 548, 549, 550, 554, 555, - 561, 564, 569, 591, 593, 595, 598, 607, 620, 625, 625, 651, 690, 695, 705, 706, - 716, 717, 733, 735, 777, 786, 790, 315, 869, 623, 0, 0, 102, 145, 134, 115, - 129, 138, 165, 171, 207, 202, 206, 212, 227, 231, 240, 243, 250, 254, 294, 296, - 303, 308, 319, 325, 321, 329, 326, 335, 341, 357, 360, 362, 370, 379, 388, 389, - 393, 421, 424, 438, 456, 454, 458, 465, 477, 535, 485, 490, 493, 507, 512, 514, - 521, 522, 525, 526, 528, 533, 532, 541, 565, 569, 574, 586, 591, 597, 607, 637, - 647, 674, 691, 693, 695, 698, 703, 699, 705, 704, 702, 706, 709, 717, 728, 736, - 747, 754, 770, 777, 783, 784, 786, 787, 790, 802, 825, 848, 847, 857, 55, 65, - 66, 883, 892, 916, 822, 824, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,1586, 0,1605, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579,1580, - 1581,1583,1584, 0,1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0,1595, - 1596, 0,1598,1599,1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1936, 0,1937, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1938, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1939,1940, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1944,1943, 0,1945, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1946,1947, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1949,1950,1951,1952,1953,1954, - 1955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,1956,1957,1958,1960,1959,1961, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826, - 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35, - 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160, - 38, 165, 166, 169, 171, 172, 173, 174, 176, 177, 178, 179, 181, 182, 182, 182, - 833, 468, 184, 185, 834, 187, 188, 189, 196, 192, 194, 195, 197, 199, 200, 201, - 203, 204, 204, 206, 208, 209, 211, 218, 213, 219, 214, 216, 153, 234, 221, 222, - 223, 220, 225, 224, 230, 835, 235, 236, 237, 238, 239, 244, 836, 837, 247, 248, - 249, 246, 251, 39, 40, 253, 255, 255, 838, 257, 258, 259, 261, 839, 262, 263, - 301, 264, 41, 266, 270, 272, 271, 841, 274, 842, 277, 276, 278, 281, 282, 42, - 283, 284, 285, 286, 43, 843, 44, 289, 290, 291, 293, 934, 298, 845, 845, 621, - 300, 300, 45, 852, 894, 302, 304, 46, 306, 309, 310, 312, 316, 48, 47, 317, - 846, 318, 323, 324, 325, 324, 328, 329, 333, 331, 332, 334, 335, 336, 338, 339, - 342, 343, 347, 351, 849, 350, 348, 352, 354, 359, 850, 361, 358, 356, 49, 363, - 365, 367, 364, 50, 369, 371, 851, 376, 386, 378, 53, 381, 52, 51, 140, 141, - 387, 382, 614, 78, 388, 389, 390, 394, 392, 856, 54, 399, 396, 402, 404, 858, - 405, 401, 407, 55, 408, 409, 410, 413, 859, 415, 56, 417, 860, 418, 57, 419, - 422, 424, 425, 861, 840, 862, 426, 863, 429, 431, 427, 433, 437, 441, 438, 439, - 442, 443, 864, 436, 449, 450, 58, 454, 453, 865, 447, 460, 866, 867, 461, 466, - 465, 464, 59, 467, 470, 469, 472, 828, 475, 868, 478, 870, 483, 485, 486, 871, - 488, 489, 872, 873, 495, 497, 60, 498, 61, 61, 504, 505, 507, 508, 511, 62, - 513, 874, 515, 875, 518, 844, 520, 876, 877, 878, 63, 64, 528, 880, 879, 881, - 882, 530, 531, 531, 533, 66, 534, 67, 68, 884, 536, 538, 541, 69, 885, 549, - 886, 887, 556, 559, 70, 561, 562, 563, 888, 889, 889, 567, 71, 890, 570, 571, - 72, 891, 577, 73, 581, 579, 582, 893, 587, 74, 590, 592, 596, 75, 895, 896, - 76, 897, 600, 898, 602, 605, 607, 899, 900, 609, 901, 611, 853, 77, 615, 616, - 79, 617, 252, 902, 903, 854, 855, 621, 622, 731, 80, 627, 626, 628, 164, 629, - 630, 631, 633, 904, 632, 634, 639, 640, 635, 641, 646, 651, 638, 643, 644, 645, - 905, 907, 906, 81, 653, 654, 656, 911, 657, 908, 82, 83, 909, 910, 84, 664, - 665, 666, 667, 669, 668, 671, 670, 674, 672, 673, 675, 85, 677, 678, 86, 681, - 682, 912, 685, 686, 87, 689, 36, 913, 914, 88, 89, 696, 702, 709, 711, 915, - 712, 713, 718, 719, 917, 831, 721, 720, 723, 832, 725, 728, 918, 919, 739, 742, - 744, 920, 745, 753, 756, 757, 755, 760, 761, 921, 762, 90, 764, 922, 91, 775, - 279, 780, 923, 925, 92, 93, 785, 926, 94, 927, 787, 787, 789, 928, 792, 95, - 796, 797, 798, 800, 96, 929, 802, 804, 806, 97, 98, 807, 930, 99, 931, 932, - 933, 814, 100, 816, 817, 818, 819, 820, 821, 935, 0, 0, + 0, 0,1969,1970,1971,1972,1973,1974,1975, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1976, + 1977,1978,1980,1979,1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121, 123, 124, 127, 125, + 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142, 143, 112, 144, 145, + 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169, 171, 172, 173, 174, + 176, 177, 178, 179, 181, 182, 182, 182, 833, 468, 184, 185, 834, 187, 188, 189, + 196, 192, 194, 195, 197, 199, 200, 201, 203, 204, 204, 206, 208, 209, 211, 218, + 213, 219, 214, 216, 153, 234, 221, 222, 223, 220, 225, 224, 230, 835, 235, 236, + 237, 238, 239, 244, 836, 837, 247, 248, 249, 246, 251, 39, 40, 253, 255, 255, + 838, 257, 258, 259, 261, 839, 262, 263, 301, 264, 41, 266, 270, 272, 271, 841, + 274, 842, 277, 276, 278, 281, 282, 42, 283, 284, 285, 286, 43, 843, 44, 289, + 290, 291, 293, 934, 298, 845, 845, 621, 300, 300, 45, 852, 894, 302, 304, 46, + 306, 309, 310, 312, 316, 48, 47, 317, 846, 318, 323, 324, 325, 324, 328, 329, + 333, 331, 332, 334, 335, 336, 338, 339, 342, 343, 347, 351, 849, 350, 348, 352, + 354, 359, 850, 361, 358, 356, 49, 363, 365, 367, 364, 50, 369, 371, 851, 376, + 386, 378, 53, 381, 52, 51, 140, 141, 387, 382, 614, 78, 388, 389, 390, 394, + 392, 856, 54, 399, 396, 402, 404, 858, 405, 401, 407, 55, 408, 409, 410, 413, + 859, 415, 56, 417, 860, 418, 57, 419, 422, 424, 425, 861, 840, 862, 426, 863, + 429, 431, 427, 433, 437, 441, 438, 439, 442, 443, 864, 436, 449, 450, 58, 454, + 453, 865, 447, 460, 866, 867, 461, 466, 465, 464, 59, 467, 470, 469, 472, 828, + 475, 868, 478, 870, 483, 485, 486, 871, 488, 489, 872, 873, 495, 497, 60, 498, + 61, 61, 504, 505, 507, 508, 511, 62, 513, 874, 515, 875, 518, 844, 520, 876, + 877, 878, 63, 64, 528, 880, 879, 881, 882, 530, 531, 531, 533, 66, 534, 67, + 68, 884, 536, 538, 541, 69, 885, 549, 886, 887, 556, 559, 70, 561, 562, 563, + 888, 889, 889, 567, 71, 890, 570, 571, 72, 891, 577, 73, 581, 579, 582, 893, + 587, 74, 590, 592, 596, 75, 895, 896, 76, 897, 600, 898, 602, 605, 607, 899, + 900, 609, 901, 611, 853, 77, 615, 616, 79, 617, 252, 902, 903, 854, 855, 621, + 622, 731, 80, 627, 626, 628, 164, 629, 630, 631, 633, 904, 632, 634, 639, 640, + 635, 641, 646, 651, 638, 643, 644, 645, 905, 907, 906, 81, 653, 654, 656, 911, + 657, 908, 82, 83, 909, 910, 84, 664, 665, 666, 667, 669, 668, 671, 670, 674, + 672, 673, 675, 85, 677, 678, 86, 681, 682, 912, 685, 686, 87, 689, 36, 913, + 914, 88, 89, 696, 702, 709, 711, 915, 712, 713, 718, 719, 917, 831, 721, 720, + 723, 832, 725, 728, 918, 919, 739, 742, 744, 920, 745, 753, 756, 757, 755, 760, + 761, 921, 762, 90, 764, 922, 91, 775, 279, 780, 923, 925, 92, 93, 785, 926, + 94, 927, 787, 787, 789, 928, 792, 95, 796, 797, 798, 800, 96, 929, 802, 804, + 806, 97, 98, 807, 930, 99, 931, 932, 933, 814, 100, 816, 817, 818, 819, 820, + 821, 935, 0, 0, }; static const int16_t _hb_ucd_i16[92] = @@ -4403,12 +4615,12 @@ _hb_ucd_i16[92] = static inline uint_fast8_t _hb_ucd_gc (unsigned u) { - return u<1114110u?_hb_ucd_u8[6808+(((_hb_ucd_u8[1312+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; + return u<1114110u?_hb_ucd_u8[6472+(((_hb_ucd_u8[816+(((_hb_ucd_u16[((_hb_ucd_u8[272+(((_hb_ucd_u8[u>>1>>3>>4>>4])<<4)+((u>>1>>3>>4)&15u))])<<4)+((u>>1>>3)&15u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; } static inline uint_fast8_t _hb_ucd_ccc (unsigned u) { - return u<125259u?_hb_ucd_u8[8800+(((_hb_ucd_u8[8244+(((_hb_ucd_u8[7784+(((_hb_ucd_u8[7432+(((_hb_ucd_u8[7186+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; + return u<125259u?_hb_ucd_u8[8504+(((_hb_ucd_u8[7936+(((_hb_ucd_u8[7460+(((_hb_ucd_u8[7100+(((_hb_ucd_u8[6854+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; } static inline unsigned _hb_ucd_b4 (const uint8_t* a, unsigned i) @@ -4418,55 +4630,55 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i) static inline int_fast16_t _hb_ucd_bmg (unsigned u) { - return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9692+(((_hb_ucd_u8[9460+(((_hb_ucd_u8[9364+(((_hb_ucd_b4(9300+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0; + return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[9396+(((_hb_ucd_u8[9164+(((_hb_ucd_u8[9068+(((_hb_ucd_b4(9004+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0; } static inline uint_fast8_t _hb_ucd_sc (unsigned u) { - return u<918000u?_hb_ucd_u8[11126+(((_hb_ucd_u16[4040+(((_hb_ucd_u16[2048+(((_hb_ucd_u8[10390+(((_hb_ucd_u8[9940+(u>>2>>2>>3>>4)])<<4)+((u>>2>>2>>3)&15u))])<<3)+((u>>2>>2)&7u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2; + return u<918000u?_hb_ucd_u8[10398+(((_hb_ucd_u16[3952+(((_hb_ucd_u16[2624+(((_hb_ucd_u8[9870+(((_hb_ucd_u8[9644+(u>>3>>2>>3>>4)])<<4)+((u>>3>>2>>3)&15u))])<<3)+((u>>3>>2)&7u))])<<2)+((u>>3)&3u))])<<3)+((u)&7u))]:2; } static inline uint_fast16_t _hb_ucd_dm (unsigned u) { - return u<195102u?_hb_ucd_u16[6748+(((_hb_ucd_u8[13952+(((_hb_ucd_u8[13570+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; + return u<195102u?_hb_ucd_u16[6244+(((_hb_ucd_u8[16628+(((_hb_ucd_u8[16246+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; } #else static const uint8_t -_hb_ucd_u8[13386] = +_hb_ucd_u8[13730] = { 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 10, 7, 7, 7, 7, 7, 11, 12, 12, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 21, 21, 21, 21, 23, 7, 7, - 7, 24, 21, 21, 21, 25, 26, 27, 21, 28, 29, 30, 31, 32, 33, 34, + 14, 15, 16, 17, 18, 19, 20, 7, 21, 22, 22, 22, 23, 24, 7, 7, + 7, 25, 22, 22, 22, 26, 27, 28, 22, 29, 30, 31, 32, 33, 34, 35, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 35, 21, 36, - 7, 7, 7, 7, 37, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 38, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 21, 22, 36, + 7, 7, 7, 7, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 38, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, @@ -4486,30 +4698,30 @@ _hb_ucd_u8[13386] = 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, 100,100, 34, 34, 34, 34,101,102, 34, 34,103,104,105,106,107,108, 34, 34,109,110,111,112,113,114,115,116,117,118, 34, 34, 34,119, - 120,121,122,123,124,125,126,127, 34,128,129,111,130,131,132,133, - 134,135,136,137,138,139,140,111,141,142,111,143,144,145,146,111, - 147,148,149,150,151,152,153,111,154,155,156,157,111,158,159,160, - 34, 34, 34, 34, 34, 34, 34, 34,161, 34, 34,111,111,111,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,162, - 34, 34, 34, 34, 34, 34, 34, 34,163,111,111,111,111,111,111,111, + 120,121,122,123,124,125,126,127, 34,128,129,130,131,132,133,134, + 135,136,137,138,139,140,141,142,143,144,111,145,146,147,148,111, + 149,150,151,152,153,154,155,156,157,158,159,160,111,161,162,163, + 34, 34, 34, 34, 34, 34, 34, 34,164, 34, 34,111,111,111,111,111, + 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,165, + 34, 34, 34, 34, 34, 34, 34, 34,166, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111, - 111,111,111,111,111,111,111,111, 34, 34, 34, 34, 34,111,111,111, - 34, 34, 34, 34,164,165,166, 34,111,111,111,111,167,168,169,170, + 111,111,167,111,111,111,111,111,111,111,111,111,111,111,111,111, + 34, 34, 34, 34,168,169,170, 34,111,111,171,111,172,173,174,175, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111,111, 111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,119, 34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111, - 111,111,111,111,111,111,111,111, 34,171,111,111,111,111,111,111, - 111,111,111,111,111,111,111,111,111,111,111,111,111,111,172, 67, - 67, 67,173,174,175,130, 65,111,176,177,178,179,180,181,182,183, - 67, 67, 67, 67,184,185,111,111,111,111,111,111,111,111,186,111, - 187,188,189,111,111,190,111,111,111,191,111,111,111,111,111, 34, - 34,192,193,111,111,111,111,111,130,194,195,111, 34,196,111,111, - 67, 67,197, 67, 67,111, 67,198, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67,199,111,111,111,111,111,111,111,111, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111, + 111,111,111,111,111,111,111,111, 34,176,111,111,111,111,111,111, + 111,111,111,111,111,111,111,111, 67,177, 67, 67, 67, 67,178, 67, + 67, 67,179,180,181,131, 65,111,182,183,184,185,186,187,188,189, + 67, 67, 67, 67,190,191,111,111,111,111,111,111,111,111,192,111, + 193,194,195,111,111,196,111,111,111,197,111,198,111,111,111, 34, + 34,199,200,111,111,111,111,111,131,201,202,111, 34,203,111,111, + 67, 67,204, 67, 67,111, 67,205, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 67, 67,177,111,111,111,111,111,111,111,111, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111,111,111,111, 34, 34, 34, 34, 34, 34, 34, 34,111,111,111,111,111,111,111,111, - 200,111,188,188,111,111,111,111,111,111,111,111,111,111,111,111, + 206,111,194,194,111,111,111,111,111,111,111,111,111,111,111,111, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 4, 5, 6, 2, 7, 7, 7, 7, 7, 2, 8, 9, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 16, 16, 16, 16, 16, 16, @@ -4544,8 +4756,8 @@ _hb_ucd_u8[13386] = 36, 36, 36, 36, 36, 64, 43, 43, 43, 43, 40, 21, 2, 40, 69, 20, 36, 36, 36, 43, 43, 69, 43, 43, 43, 43, 69, 43, 69, 43, 43, 43, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 36, 36, 64, 43, 43, 2, - 36, 36, 36, 36, 74, 36, 36, 36, 59, 59, 59, 59, 43, 43, 43, 43, - 36, 36, 36, 36, 75, 43, 43, 43, 43, 76, 43, 43, 43, 43, 43, 43, + 36, 36, 36, 36, 74, 36, 36, 36, 59, 59, 59, 75, 43, 43, 43, 43, + 36, 36, 36, 36, 76, 43, 43, 43, 43, 75, 43, 43, 43, 43, 43, 43, 43, 77, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 77, 65, 78, 79, 43, 43, 43, 77, 78, 79, 78, 64, 43, 43, 43, 36, 36, 36, 36, 36, 43, 2, 7, 7, 7, 7, 7, 80, 36, 36, 36, 36, 36, 36, 36, @@ -4590,130 +4802,135 @@ _hb_ucd_u8[13386] = 36, 43, 77, 78, 78, 78, 78, 81, 36, 43, 97, 2, 2, 2, 2, 2, 36, 43, 43, 43, 43, 43, 43, 43, 36, 36, 43, 79, 43, 43, 43, 78, 78, 78, 78, 77, 79, 43, 43, 43, 43, 43, 2, 80, 2, 60, 64, 43, - 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 98, 2, 56, 43, 76, - 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 64, 65, 36, 36, 36, 36, + 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 98, 2, 56, 43, 75, + 36, 76, 36, 36, 36, 36, 36, 36, 36, 36, 64, 65, 36, 36, 36, 36, 36, 36, 36, 36, 64, 36, 36, 36, 43, 77, 78, 79, 77, 78, 78, 78, 78, 77, 78, 78, 79, 43, 43, 43, 61, 61, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 27, 27, 61, 36, 36, 36, 64, 77, 79, 43, 2, 36, 36, 82, 77, 43, 43, 43, 43, 77, 77, 79, 43, 43, 43, 77, 78, 78, 79, 43, 43, 43, 43, 43, 43, 2, 2, 2, 80, 2, 2, 2, 2, 43, 43, 43, 43, 43, 43, 43, 99, 43, 43, 81, 36, 36, 36, 36, 36, - 36, 36, 77, 43, 43, 77, 77, 78, 78, 77, 81, 36, 36, 36, 36, 36, + 36, 36, 77, 43, 43, 77, 77, 78, 78, 77, 81, 36, 36, 36, 36, 2, 89, 61, 61, 61, 61, 47, 43, 43, 43, 43, 61, 61, 61, 61, 21, 2, 43, 81, 36, 36, 36, 36, 36, 36, 82, 43, 43, 78, 43, 79, 43, 36, 36, 36, 36, 77, 43, 78, 79, 79, 43, 78, 78, 78, 78, 78, 2, 2, 36, 36, 78, 78, 78, 78, 43, 43, 43, 43, 78, 43, 43, 57, 2, 2, 7, 7, 7, 7, 7, 7, 86, 36, 36, 36, 36, 36, 40, 40, 40, 2, - 43, 57, 43, 43, 43, 43, 43, 43, 77, 43, 43, 43, 65, 36, 64, 36, - 36, 36, 65, 82, 43, 36, 36, 36, 16, 16, 16, 16, 16, 16, 40, 40, - 40, 40, 40, 40, 40, 44, 16, 16, 16, 16, 16, 16, 44, 16, 16, 16, - 16, 16, 16, 16, 16,100, 40, 40, 32, 32, 32, 16, 16, 16, 16, 32, - 16, 16, 16, 16, 11, 11, 11, 11, 16, 16, 16, 16, 34, 11, 11, 11, - 16, 16, 16, 16,101,101,101,101, 16, 16, 16, 16, 11, 11,102,103, - 41, 16, 16, 16, 11, 11,102, 41, 16, 16, 16, 16, 11, 11,104, 41, - 105,105,105,105,105,106, 59, 59, 51, 51, 51, 2,107,108,107,108, - 2, 2, 2, 2,109, 59, 59,110, 2, 2, 2, 2,111,112, 2,113, - 114, 2,115,116, 2, 2, 2, 2, 2, 9,114, 2, 2, 2, 2,117, - 59, 59, 59, 59, 59, 59, 59, 59,118, 40, 27, 27, 27, 8,115,119, - 27, 27, 27, 27, 27, 8,115, 94, 20, 20, 20, 20, 20, 20, 20, 20, - 43, 43, 43, 43, 43, 43,120, 48, 99, 48, 99, 43, 43, 43, 43, 43, - 61,121, 61,122, 61, 34, 11, 16, 11, 32,122, 61, 46, 11, 11, 61, - 61, 61,121,121,121, 11, 11,123, 11, 11, 35, 36, 39, 61, 16, 11, - 8, 8, 46, 16, 16, 26, 61,124, 95, 95, 95, 95, 95, 95, 95, 95, - 95,125,126, 95,127, 61, 61, 61, 8, 8,128, 61, 61, 8, 61, 61, - 128, 26, 61,128, 61, 61, 61,128, 61, 61, 61, 61, 61, 61, 61, 8, - 61,128,128, 61, 61, 61, 61, 61, 61, 61, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 61, 61, 61, 61, 4, 4, 61, 61, - 8, 61, 61, 61,129,130, 61, 61, 61, 61, 61, 61, 61, 61,128, 61, - 61, 61, 61, 61, 61, 26, 8, 8, 8, 8, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 8, 8, 8, 61, 61, 61, 61, 61, 61, 61, - 27, 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, - 61, 61, 61, 26, 61, 61, 61, 61, 26, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 8, 8, 8, 8, 61, 61, 61, 61, 61, 61, 61, 26, - 61, 61, 61, 61, 4, 4, 4, 4, 4, 4, 4, 27, 27, 27, 27, 27, - 27, 27, 61, 61, 61, 61, 61, 61, 8, 8,115,131, 8, 8, 8, 8, - 8, 8, 8, 4, 4, 4, 4, 4, 8,115,132,132,132,132,132,132, - 132,132,132,132,131, 8, 8, 8, 8, 8, 8, 8, 4, 4, 8, 8, - 8, 8, 8, 8, 8, 8, 4, 8, 8, 8,128, 26, 8, 8,128, 61, - 32, 11, 32, 34, 34, 34, 34, 11, 32, 32, 34, 16, 16, 16, 40, 11, - 32, 32,124, 61, 61,122, 34,133, 43, 32, 16, 16, 50, 2, 90, 2, - 36, 36, 36, 36, 36, 36, 36, 75, 2, 2, 2, 2, 2, 2, 2, 56, - 2,107,107, 2,111,112,107, 2, 2, 2, 2, 6, 2, 98,107, 2, - 107, 4, 4, 4, 4, 2, 2, 80, 2, 2, 2, 2, 2, 51, 2, 2, - 98,134, 2, 2, 2, 2, 2, 2, 61, 2,135,132,132,132,136, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 1, 2,137,138, 4, 4, 4, 4, - 4, 61, 4, 4, 4, 4,139, 94,140, 95, 95, 95, 95, 43, 43, 78, - 141, 40, 40, 61, 95,142, 58, 61, 72, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 64,143,144, 63, 36, 36, 36, 36, 36, 58, 40, 63, - 61, 27, 27, 61, 61, 61, 61, 61, 27, 27, 27, 27, 27, 61, 61, 61, - 61, 61, 61, 61, 27, 27, 27, 27,145, 27, 27, 27, 27, 27, 27, 27, - 36, 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,146, 2, - 32, 32, 32, 32, 32, 32, 32, 64, 48,147, 43, 43, 43, 43, 43, 80, - 32, 32, 32, 32, 32, 32, 40, 43, 36, 36, 36, 95, 95, 95, 95, 95, - 43, 2, 2, 2, 2, 2, 2, 2, 41, 41, 41,144, 40, 40, 40, 40, - 41, 32, 32, 32, 32, 32, 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, - 44, 16, 16, 16, 34, 34, 34, 32, 32, 32, 32, 32, 42,148, 34, 35, - 32, 32, 16, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 32, - 11, 11, 32, 32, 32, 32, 32, 32, 32, 32, 11, 11, 34, 16, 16, 16, - 32, 16, 16, 32, 32, 16, 16, 16, 16, 40,149, 35, 40, 35, 36, 36, - 36, 65, 36, 65, 36, 64, 36, 36, 36, 82, 79, 77, 61, 61, 43, 43, - 27, 27, 27, 61,150, 61, 61, 61, 36, 36, 2, 2, 2, 2, 2, 2, - 78, 36, 36, 36, 36, 36, 36, 36, 36, 36, 78, 78, 78, 78, 78, 78, - 78, 78, 43, 43, 43, 43, 43, 2, 43, 36, 36, 36, 2, 66, 66, 64, - 36, 36, 36, 43, 43, 43, 43, 2, 36, 36, 36, 64, 43, 43, 43, 43, - 43, 78, 78, 78, 78, 78, 78, 97, 36, 64, 78, 43, 43, 78, 43, 78, - 97, 2, 2, 2, 2, 2, 2, 80, 7, 7, 7, 7, 7, 7, 7, 2, - 36, 36, 64, 63, 36, 36, 36, 36, 36, 36, 36, 36, 64, 43, 43, 77, - 79, 77, 79, 43, 43, 43, 43, 43, 36, 64, 36, 36, 36, 36, 77, 78, - 7, 7, 7, 7, 7, 7, 2, 2, 63, 36, 36, 71, 61, 82, 77, 36, - 65, 43, 65, 64, 65, 36, 36, 43, 36, 36, 36, 36, 36, 36, 75, 2, - 36, 36, 36, 36, 36, 82, 43, 78, 2, 75,151, 43, 43, 43, 43, 43, - 16, 16, 16, 16, 16,103, 40, 40, 16, 16, 16, 16,100, 41, 41, 41, - 36, 82, 79, 78, 77, 97, 79, 43,152,152,152,152,152,152,152,152, - 153,153,153,153,153,153,153,153, 16, 16, 16, 16, 16, 16, 35, 65, - 36, 36, 36, 36,154, 36, 36, 36, 36, 41, 41, 41, 41, 41, 41, 41, - 41, 74, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,132, - 36, 36, 36, 36, 36, 36, 36, 71, 36, 36, 36, 36, 36, 36,150, 61, - 2, 2, 2,135,116, 2, 2, 2, 6,155,156,132,132,132,132,132, - 132,132,116,135,116, 2,113,157, 2, 2, 2, 2,139,132,132,116, - 2,158, 8, 8, 60, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36,159, - 2, 2, 3, 2, 4, 5, 6, 2, 16, 16, 16, 16, 16, 17, 18,115, - 116, 4, 2, 36, 36, 36, 36, 36, 63, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 40, 20,160, 53, 20, 26, 8,128, 61, - 61, 61, 61, 61,161, 59, 61, 61, 2, 2, 2, 90, 27, 27, 27, 27, - 27, 27, 27, 84, 61, 61, 61, 61, 95, 95,127, 27, 84, 61, 61, 61, - 61, 61, 61, 61, 61, 27, 61, 61, 61, 61, 61, 61, 61, 61, 47, 43, - 162,162,162,162,162,162,162,162,163, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 87, 36,138, 36, 36, 36, 36, 95, 95, 95, - 36, 36, 36, 36, 36, 36, 36, 58,164, 95, 95, 95, 95, 95, 95, 95, - 11, 11, 11, 32, 16, 16, 16, 16, 36, 36, 36, 58, 27, 27, 27, 27, - 36, 36, 36, 71,145, 27, 27, 27, 36, 36, 36,165, 27, 27, 27, 27, - 36, 36, 36, 36, 36,165, 27, 27, 36, 36, 36, 27, 27, 27, 27, 30, - 36, 36, 36, 36, 36, 36, 27, 36, 64, 43, 43, 43, 43, 43, 43, 43, - 36, 36, 36, 36, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36,165, 30, - 36, 36, 36, 36, 36, 36,165, 27, 36, 36, 36, 36, 72, 36, 36, 36, - 36, 36, 64, 43, 43,163, 27, 27, 36, 36, 36, 36, 58, 2, 2, 2, - 36, 36, 36, 36, 27, 27, 27, 27, 16, 16, 16, 16, 16, 27, 27, 27, - 36, 36, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 64,166, 51, - 27, 27, 27, 87, 36, 36, 36, 36,163, 27, 30, 2, 2, 2, 2, 2, - 36, 43, 43, 2, 2, 2, 2, 2, 36, 36,165, 27, 27, 27, 27, 27, - 79, 81, 36, 36, 36, 36, 36, 36, 43, 43, 43, 57, 2, 2, 2, 2, - 2, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 7, 7, 7, 7, 7, - 65, 64, 65, 36, 36, 36, 36, 64, 78, 79, 43, 77, 79, 57, 73, 2, - 2, 43, 43, 43, 43, 43, 67, 59, 36, 36, 36, 64, 43, 43, 79, 43, - 43, 43, 43, 7, 7, 7, 7, 7, 2, 2, 82, 81, 36, 36, 36, 36, - 36, 64, 2, 36, 36, 36, 36, 36, 36, 82, 78, 43, 43, 43, 43, 77, - 81, 36, 58, 2, 56, 43, 57, 79, 7, 7, 7, 7, 7, 58, 58, 2, - 90, 27, 27, 27, 27, 27, 27, 27, 36, 36, 36, 36, 36, 36, 78, 79, - 43, 78, 77, 43, 2, 2, 2, 65, 36, 36, 36, 36, 36, 36, 36, 64, - 77, 78, 78, 78, 78, 78, 78, 78, 36, 36, 36, 82, 78, 78, 81, 36, - 36, 78, 78, 43, 43, 43, 43, 43, 36, 36, 82, 78, 43, 43, 43, 43, - 78, 43, 77, 65, 36, 58, 2, 2, 7, 7, 7, 7, 7, 2, 2, 65, - 78, 79, 43, 43, 77, 77, 78, 79, 77, 43, 36, 66, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 82, 78, 43, 43, 43, 78, 78, 43, 79, - 57, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 43, 43, - 78, 79, 43, 43, 43, 77, 79, 79, 57, 2, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 64, 79, 78, 43, 43, 43, 79, 58, 2, 2, 2, + 16, 16, 16, 16, 34, 16, 16, 16, 43, 57, 43, 43, 43, 43, 43, 43, + 77, 43, 43, 43, 65, 36, 64, 36, 36, 36, 65, 82, 43, 36, 36, 36, + 16, 16, 16, 16, 16, 16, 40, 40, 40, 40, 40, 40, 40, 44, 16, 16, + 16, 16, 16, 16, 44, 16, 16, 16, 16, 16, 16, 16, 16,100, 40, 40, + 32, 32, 32, 16, 16, 16, 16, 32, 16, 16, 16, 16, 11, 11, 11, 11, + 16, 16, 16, 16, 34, 11, 11, 11, 16, 16, 16, 16,101,101,101,101, + 16, 16, 16, 16, 11, 11,102,103, 41, 16, 16, 16, 11, 11,102, 41, + 16, 16, 16, 16, 11, 11,104, 41,105,105,105,105,105,106, 59, 59, + 51, 51, 51, 2,107,108,107,108, 2, 2, 2, 2,109, 59, 59,110, + 2, 2, 2, 2,111,112, 2,113,114, 2,115,116, 2, 2, 2, 2, + 2, 9,114, 2, 2, 2, 2,117, 59, 59, 59, 59, 59, 59, 59, 59, + 118, 40, 27, 27, 27, 8,115,119, 27, 27, 27, 27, 27, 8,115, 94, + 20, 20, 20, 20, 20, 20, 20, 20, 43, 43, 43, 43, 43, 43,120, 48, + 99, 48, 99, 43, 43, 43, 43, 43, 61,121, 61,122, 61, 34, 11, 16, + 11, 32,122, 61, 46, 11, 11, 61, 61, 61,121,121,121, 11, 11,123, + 11, 11, 35, 36, 39, 61, 16, 11, 8, 8, 46, 16, 16, 26, 61,124, + 95, 95, 95, 95, 95, 95, 95, 95, 95,125,126, 95,127, 61, 61, 61, + 8, 8,128, 61, 61, 8, 61, 61,128, 26, 61,128, 61, 61, 61,128, + 61, 61, 61, 61, 61, 61, 61, 8, 61,128,128, 61, 61, 61, 61, 61, + 61, 61, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 61, 61, 61, 61, 4, 4, 61, 61, 8, 61, 61, 61,129,130, 61, 61, + 61, 61, 61, 61, 61, 61,128, 61, 61, 61, 61, 61, 61, 26, 8, 8, + 8, 8, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 8, 8, + 8, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, 27, 27, 61, 61, + 61, 61, 61, 61, 61, 27, 27, 27, 61, 61, 61, 26, 61, 61, 61, 61, + 26, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 8, 8, 8, 8, + 61, 61, 61, 61, 61, 61, 61, 26, 61, 61, 61, 61, 4, 4, 4, 4, + 4, 4, 4, 27, 27, 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, + 8, 8,115,131, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, + 8,115,132,132,132,132,132,132,132,132,132,132,131, 8, 8, 8, + 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, + 8, 8,128, 26, 8, 8,128, 61, 32, 11, 32, 34, 34, 34, 34, 11, + 32, 32, 34, 16, 16, 16, 40, 11, 32, 32,124, 61, 61,122, 34,133, + 43, 32, 16, 16, 50, 2, 90, 2, 36, 36, 36, 36, 36, 36, 36, 76, + 2, 2, 2, 2, 2, 2, 2, 56, 2,107,107, 2,111,112,107, 2, + 2, 2, 2, 6, 2, 98,107, 2,107, 4, 4, 4, 4, 2, 2, 80, + 2, 2, 2, 2, 2, 51, 2, 2, 98,134, 2, 2, 2, 2, 2, 2, + 61, 2,135,132,132,132,136, 51, 51, 51, 51, 51, 51, 51, 51, 51, + 1, 2,137,138, 4, 4, 4, 4, 4, 61, 4, 4, 4, 4,139, 94, + 140, 95, 95, 95, 95, 43, 43, 78,141, 40, 40, 61, 95,142, 58, 61, + 72, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64,143,144, 63, + 36, 36, 36, 36, 36, 58, 40, 63, 61, 27, 27, 61, 61, 61, 61, 61, + 27, 27, 27, 27, 27, 61, 61, 61, 61, 61, 61, 61, 27, 27, 27, 27, + 145, 27, 27, 27, 27, 27, 27, 27, 36, 36, 76, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36,146, 2, 32, 32, 32, 32, 32, 32, 32, 64, + 48,147, 43, 43, 43, 43, 43, 80, 32, 32, 32, 32, 32, 32, 40, 43, + 36, 36, 36, 95, 95, 95, 95, 95, 43, 2, 2, 2, 2, 2, 2, 2, + 41, 41, 41,144, 40, 40, 40, 40, 41, 32, 32, 32, 32, 32, 32, 32, + 16, 32, 32, 32, 32, 32, 32, 32, 44, 16, 16, 16, 34, 34, 34, 32, + 32, 32, 32, 32, 42,148, 34, 35, 32, 32, 16, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 11, 11, 32, 11, 11, 32, 32, 32, 32, 32, 32, + 32, 32, 11, 11, 34, 34, 32, 16, 32, 16, 16, 32, 32, 32, 11, 11, + 11, 40,149, 35, 40, 35, 36, 36, 36, 65, 36, 65, 36, 64, 36, 36, + 36, 82, 79, 77, 61, 61, 43, 43, 27, 27, 27, 61,150, 61, 61, 61, + 36, 36, 2, 2, 2, 2, 2, 2, 78, 36, 36, 36, 36, 36, 36, 36, + 36, 36, 78, 78, 78, 78, 78, 78, 78, 78, 43, 43, 43, 43, 43, 2, + 43, 36, 36, 36, 2, 66, 66, 64, 36, 36, 36, 43, 43, 43, 43, 2, + 36, 36, 36, 64, 43, 43, 43, 43, 43, 78, 78, 78, 78, 78, 78, 97, + 36, 64, 78, 43, 43, 78, 43, 78, 97, 2, 2, 2, 2, 2, 2, 80, + 7, 7, 7, 7, 7, 7, 7, 2, 36, 36, 64, 63, 36, 36, 36, 36, + 36, 36, 36, 36, 64, 43, 43, 77, 79, 77, 79, 43, 43, 43, 43, 43, + 36, 64, 36, 36, 36, 36, 77, 78, 7, 7, 7, 7, 7, 7, 2, 2, + 63, 36, 36, 71, 61, 82, 77, 36, 65, 43, 65, 64, 65, 36, 36, 43, + 36, 36, 36, 36, 36, 36, 76, 2, 36, 36, 36, 36, 36, 82, 43, 78, + 2, 76,151, 43, 43, 43, 43, 43, 16, 16, 16, 16, 16,103, 40, 40, + 16, 16, 16, 16,100, 41, 41, 41, 36, 82, 79, 78, 77, 97, 79, 43, + 152,152,152,152,152,152,152,152,153,153,153,153,153,153,153,153, + 16, 16, 16, 16, 16, 16, 35, 65, 36, 36, 36, 36,154, 36, 36, 36, + 36, 41, 41, 41, 41, 41, 41, 41, 41, 74, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 36, 36,132, 36, 36, 36, 36, 36, 36, 36, 71, + 36, 36, 36, 36, 36, 36,150, 61, 2, 2, 2,135,116, 2, 2, 2, + 6,155,156,132,132,132,132,132,132,132,116,135,116, 2,113,157, + 2, 2, 2, 2,139,132,132,116, 2,158, 8, 8, 60, 2, 2, 2, + 36, 36, 36, 36, 36, 36, 36,159, 2, 2, 3, 2, 4, 5, 6, 2, + 16, 16, 16, 16, 16, 17, 18,115,116, 4, 2, 36, 36, 36, 36, 36, + 63, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 40, + 20,160, 53, 20, 26, 8,128, 61, 61, 61, 61, 61,161, 59, 61, 61, + 2, 2, 2, 90, 27, 27, 27, 27, 27, 27, 27, 84, 61, 61, 61, 61, + 95, 95,127, 27, 84, 61, 61, 61, 61, 61, 61, 61, 61, 27, 61, 61, + 61, 61, 61, 61, 61, 61, 47, 43,162,162,162,162,162,162,162,162, + 163, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 87, 36, + 138, 36, 36, 36, 36, 95, 95, 95, 36, 36, 36, 36, 36, 36, 36, 58, + 164, 95, 95, 95, 95, 95, 95, 95, 11, 11, 11, 32, 16, 16, 16, 16, + 36, 36, 36, 58, 27, 27, 27, 27, 36, 36, 36, 71,145, 27, 27, 27, + 36, 36, 36,165, 27, 27, 27, 27, 36, 36, 36, 36, 36,165, 27, 27, + 36, 36, 36, 27, 27, 27, 27, 30, 36, 36, 36, 36, 36, 36, 27, 36, + 64, 43, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 43, 43, 43, 43, + 36, 36, 36, 36, 36, 36,165, 30, 36, 36, 36, 36, 36, 36,165, 27, + 36, 36, 36, 36, 72, 36, 36, 36, 36, 36, 64, 43, 43,163, 27, 27, + 36, 36, 36, 36, 58, 2, 2, 2, 36, 36, 36, 36, 27, 27, 27, 27, + 16, 16, 16, 16, 16, 27, 27, 27, 36, 36, 43, 43, 43, 43, 43, 43, + 7, 7, 7, 7, 7, 36, 36, 63, 11, 11, 11, 11,166, 43, 43,141, + 16, 16, 16, 16, 16, 16, 16, 8, 36, 36, 36, 36, 36, 64,167, 51, + 36, 36, 36, 36, 36, 36, 43, 43, 27, 27, 27, 87, 36, 36, 36, 36, + 163, 27, 30, 2, 2, 2, 2, 2, 36, 43, 43, 2, 2, 2, 2, 2, + 36, 36,165, 27, 27, 27, 27, 27, 79, 81, 36, 36, 36, 36, 36, 36, + 43, 43, 43, 57, 2, 2, 2, 2, 2, 27, 27, 27, 27, 27, 27, 27, + 27, 27, 27, 7, 7, 7, 7, 7, 65, 64, 65, 36, 36, 36, 36, 64, + 78, 79, 43, 77, 79, 57, 73, 2, 2, 43, 43, 43, 43, 43, 67, 59, + 36, 36, 36, 64, 43, 43, 79, 43, 43, 43, 43, 7, 7, 7, 7, 7, + 2, 2, 82, 81, 36, 36, 36, 36, 36, 64, 2, 36, 36, 36, 36, 36, + 36, 82, 78, 43, 43, 43, 43, 77, 81, 36, 58, 2, 56, 43, 57, 79, + 7, 7, 7, 7, 7, 58, 58, 2, 90, 27, 27, 27, 27, 27, 27, 27, + 36, 36, 36, 36, 36, 36, 78, 79, 43, 78, 77, 43, 2, 2, 2, 65, + 36, 36, 36, 36, 36, 36, 36, 64, 77, 78, 78, 78, 78, 78, 78, 78, + 36, 36, 36, 82, 78, 78, 81, 36, 36, 78, 78, 43, 43, 43, 43, 43, + 36, 36, 36, 36, 78, 79, 43, 43, 43, 78, 78, 78, 78, 78, 78, 77, + 65, 65, 2, 2, 2, 2, 2, 2, 56, 43, 43, 43, 43, 43, 43, 43, + 36, 36, 82, 78, 43, 43, 43, 43, 78, 43, 77, 65, 36, 58, 2, 2, + 7, 7, 7, 7, 7, 2, 2, 65, 78, 79, 43, 43, 77, 77, 78, 79, + 77, 43, 36, 66, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 82, + 78, 43, 43, 43, 78, 78, 43, 79, 57, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 36, 36, 43, 43, 78, 79, 43, 43, 43, 77, 79, 79, + 57, 2, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 64, 79, 78, + 43, 43, 43, 79, 58, 2, 2, 2, 36, 36, 36, 36, 36, 36, 64, 79, 78, 43, 43, 79, 43, 43, 43, 43, 7, 7, 7, 7, 7, 27, 2, 89, 43, 43, 43, 43, 79, 57, 2, 2, 27, 27, 27, 27, 27, 27, 27, 87, 78, 78, 78, 78, 78, 79, 77, 65, 81, 79, 2, 2, 2, 2, 2, 2, @@ -4721,39 +4938,41 @@ _hb_ucd_u8[13386] = 78, 78, 78, 78, 78, 78, 78, 78, 64, 43, 43, 43, 43, 65, 36, 36, 36, 64, 43, 43, 77, 64, 43, 57, 2, 2, 2, 56, 43, 43, 43, 43, 64, 43, 43, 77, 79, 43, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, - 43, 43, 43, 77, 43, 2, 66, 2, 43, 43, 43, 43, 43, 43, 43, 79, - 58, 2, 2, 2, 2, 2, 2, 2, 2, 36, 36, 36, 36, 36, 36, 36, + 43, 43, 43, 77, 43, 2, 66, 2, 58, 2, 2, 2, 2, 2, 2, 2, + 43, 43, 43, 43, 43, 43, 43, 79, 2, 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, 77, 43, 43, 43, 77, 43, 79, 43, 43, 43, 43, 43, 43, 43, 43, 64, 43, 43, 43, 43, 36, 36, 36, 36, 36, 78, 78, 78, 43, 77, 79, 79, 36, 36, 36, 36, 36, 64, 77, 97, 2, 2, 2, 2, 43, 82, 36, 36, 36, 36, 36, 36, 36, 36, 78, 43, 43, 43, 43, 78, - 77, 57, 2, 2, 2, 2, 2, 2, 27, 27, 84, 61, 61, 61, 53, 20, - 150, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 21, - 65, 36, 36, 64, 43, 43, 43, 43, 43, 43, 57, 2, 2, 2, 2, 2, - 43, 43, 43, 57, 2, 2, 61, 61, 40, 40, 89, 61, 61, 61, 61, 61, - 7, 7, 7, 7, 7,167, 27, 27, 27, 87, 36, 36, 36, 36, 36, 36, - 27, 27, 27, 30, 2, 2, 2, 2, 82, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 79, 43, 68, 40, 40, 40, 40, 40, 40, - 40, 80, 43, 43, 43, 43, 43, 43, 36, 36, 36, 36, 36, 36, 47, 57, - 61, 61,168, 79, 43, 61,168, 78, 78,169, 59, 59, 59, 76, 43, 43, - 43, 70, 47, 43, 43, 43, 61, 61, 61, 61, 61, 61, 61, 43, 43, 61, - 61, 43, 70, 61, 61, 61, 61, 61, 11, 11, 11, 11, 11, 16, 16, 16, - 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 16, - 11, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 11, 11, - 11, 11, 11, 16, 16, 16, 16, 16, 31, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, - 11, 11, 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, - 16, 16, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, - 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, - 16, 33, 16, 16, 16, 32, 16, 7, 43, 43, 43, 70, 61, 47, 43, 43, - 43, 43, 43, 43, 43, 43, 70, 61, 61, 61, 47, 61, 61, 61, 61, 61, - 61, 61, 70, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 43, 43, - 16, 16, 16, 16, 16, 39, 16, 16, 43, 43, 43, 68, 40, 40, 40, 40, - 7, 7, 7, 7, 7, 7, 7, 71, 36, 36, 36, 36, 36, 36, 36, 43, - 36, 36, 36, 36, 36, 36, 43, 43, 7, 7, 7, 7, 7, 7, 7,170, - 36, 36, 36, 36, 36, 75, 43, 43, 16, 16, 43, 43, 43, 68, 40, 40, - 27, 27, 27, 27, 27, 27,145, 27,171, 27, 27, 27, 27, 27, 27, 27, + 77, 57, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 43, 43, 43, + 27, 27, 84, 61, 61, 61, 53, 20,150, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 21, 65, 36, 36, 64, 43, 43, 43, 43, + 36, 36, 36, 36, 36, 36, 36, 43, 43, 43, 43, 43, 43, 78, 79, 43, + 43, 43, 57, 2, 2, 2, 2, 2, 43, 43, 43, 57, 2, 2, 61, 61, + 40, 40, 89, 61, 61, 61, 61, 61, 7, 7, 7, 7, 7,168, 27, 27, + 27, 87, 36, 36, 36, 36, 36, 36, 40, 63, 36, 36, 36, 36, 36, 36, + 36, 36, 36, 36, 36, 76,146, 2, 27, 27, 27, 30, 2, 2, 2, 2, + 82, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, + 43, 68, 40, 40, 40, 40, 40, 40, 40, 80, 43, 43, 43, 43, 43, 43, + 36, 36, 36, 36, 36, 36, 47, 57, 61, 61,169, 79, 43, 61,169, 78, + 78,170, 59, 59, 59, 75, 43, 43, 43, 70, 47, 43, 43, 43, 61, 61, + 61, 61, 61, 61, 61, 43, 43, 61, 61, 43, 70, 61, 61, 61, 61, 61, + 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 16, 11, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 11, 11, 11, 11, 11, 16, 16, 16, 16, 16, + 31, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, + 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, + 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 31, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 33, 16, 16, 16, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, + 11, 11, 11, 11, 31, 16, 16, 16, 16, 33, 16, 16, 16, 32, 16, 7, + 43, 43, 43, 70, 61, 47, 43, 43, 43, 43, 43, 43, 43, 43, 70, 61, + 61, 61, 47, 61, 61, 61, 61, 61, 61, 61, 70, 21, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 56, 43, 43, 16, 16, 16, 16, 16, 39, 16, 16, + 43, 43, 43, 68, 40, 40, 40, 40, 7, 7, 7, 7, 7, 7, 7, 71, + 7, 7, 7, 7, 7, 7, 7,171, 36, 36, 36, 36, 36, 76, 43, 43, + 172, 7, 7, 7, 7, 7, 7, 85, 16, 16, 43, 43, 43, 68, 40, 40, + 27, 27, 27, 27, 27, 27,145, 27,173, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,145, 27, 27, 27, 27, 27, 27, 84, 61, 61, 61, 61, 61, 61, 25, 41, 41, 0, 0, 29, 21, 21, 21, 23, 21, 22, 18, 21, 25, 21, 17, 13, 13, 25, 25, 25, 21, 21, 9, 9, 9, @@ -4764,8 +4983,8 @@ _hb_ucd_u8[13386] = 6, 5, 9, 21, 25, 9, 26, 12, 11, 11, 9, 6, 5, 21, 17, 17, 17, 26, 26, 23, 23, 12, 17, 12, 21, 12, 12, 21, 7, 21, 1, 1, 21, 23, 26, 26, 1, 21, 6, 7, 7, 12, 12, 7, 21, 7, 12, 1, - 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 21, 1, 24, 7, 7, 6, - 1, 12, 12, 10, 10, 10, 10, 12, 21, 6, 10, 7, 7, 10, 23, 7, + 12, 6, 6, 12, 12, 26, 7, 26, 26, 7, 21, 1, 24, 7, 1, 12, + 7, 6, 12, 10, 10, 10, 10, 12, 21, 6, 10, 7, 7, 10, 23, 7, 15, 26, 13, 21, 13, 7, 15, 7, 12, 23, 21, 26, 21, 15, 17, 7, 29, 7, 7, 22, 18, 18, 14, 14, 14, 7, 10, 21, 17, 21, 11, 12, 5, 6, 8, 8, 8, 24, 5, 24, 9, 24, 29, 29, 29, 1, 20, 19, @@ -4776,247 +4995,250 @@ _hb_ucd_u8[13386] = 26, 14, 17, 6, 14, 6, 12, 24, 24, 6, 26, 15, 6, 21, 11, 21, 24, 9, 6, 9, 23, 26, 6, 10, 4, 4, 3, 3, 7, 25, 17, 16, 16, 22, 16, 16, 25, 17, 7, 1, 25, 24, 26, 1, 2, 2, 12, 15, - 21, 14, 7, 15, 12, 17, 13, 15, 26, 10, 10, 1, 13, 23, 23, 15, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 11, 12, 13, 0, - 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, 0, 0, 0, 0, + 21, 14, 7, 15, 9, 12, 12, 17, 13, 15, 26, 10, 10, 1, 13, 23, + 7, 13, 23, 15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, + 11, 12, 13, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 21, - 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 0, 20, 0, 21, 22, 23, 0, 0, 0, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0, 0, 0, 0, 0, 0, - 40, 41, 42, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 5, 6, 7, - 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 16, 18, 16, 19, - 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, 0, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, 0, 35, 0, 0, - 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, - 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, - 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 55, - 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, 0, 0, 68, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, - 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, - 0, 0, 74, 0, 0, 0, 0, 0, 75, 76, 0, 77, 78, 0, 0, 79, - 80, 0, 81, 62, 0, 82, 83, 0, 0, 84, 85, 86, 0, 0, 0, 87, - 0, 88, 0, 0, 51, 89, 51, 0, 90, 0, 91, 0, 0, 0, 80, 0, - 0, 0, 92, 93, 0, 94, 95, 96, 97, 0, 0, 0, 0, 0, 51, 0, - 0, 0, 0, 98, 99, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, - 0,101,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,103, 0, 0, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,106, 0, 0,107, - 0, 0, 0, 0, 0, 0,108, 0,109, 0,102, 0, 0, 0, 0, 0, - 110,111, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 0, 0, 0, - 0,113, 0,114, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, - 7, 0, 8, 0, 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, - 0, 0, 14, 15, 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, - 0, 0, 0, 0, 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, - 0, 0, 28, 29, 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, - 0, 35, 33, 0, 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, - 0, 0, 0, 0, 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, - 0, 0, 0, 43, 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, - 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, - 0, 52, 0, 53, 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, - 0, 0, 0, 0, 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, - 0, 61, 52, 0, 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, - 0, 67, 0, 68, 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, - 77, 78, 0, 0, 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, - 0, 0, 0, 0, 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, - 85, 0, 52, 0, 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, - 0, 88, 57, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, - 33, 0, 0, 91, 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, - 93, 0, 0, 0, 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, - 98, 0, 0, 0, 99, 0, 0, 0, 0,100,101, 93, 0, 0,102, 0, - 0, 0, 84, 0, 0,103, 0, 0, 0,104,105, 0, 0,106,107, 0, - 0, 0, 0, 0, 0,108, 0, 0,109, 0, 0, 0, 0,110, 33, 0, - 111,112,113, 35, 0, 0,114, 0, 0, 0,115, 0, 0, 0, 0, 0, - 0,116, 0, 0,117, 0, 0, 0, 0,118, 88, 0, 0, 0, 0, 0, - 57, 0, 0, 0, 0, 52,119, 0, 0, 0, 0,120, 0, 0,121, 0, - 0, 0, 0,119, 0, 0,122, 0, 0, 0, 0, 0, 0,123, 0, 0, - 0,124, 0, 0, 0,125, 0,126, 0, 0, 0, 0,127,128,129, 0, - 130, 0,131, 0, 0, 0,132,133,134, 0, 77, 0, 0, 0, 0, 0, - 35, 0, 0, 0,135, 0, 0, 0,136, 0, 0,137, 0, 0,138, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, - 7, 4, 4, 8, 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, - 1, 1, 19, 1, 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, - 27, 28, 29, 30, 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, - 1, 36, 37, 0, 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, - 0, 0, 43, 36, 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, - 0, 47, 0, 38, 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 0, - 52, 1, 0, 0, 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, - 35, 1, 0, 0, 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, - 0, 59, 0, 60, 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, - 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, - 68, 0, 0, 69, 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, - 0, 0, 0, 78, 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, - 0, 0, 0, 62, 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, - 83, 0, 0, 19, 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, - 15, 86, 36, 10, 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, - 0, 0, 0, 0, 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, - 0, 0, 87, 9, 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, - 21, 92, 93, 1, 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99, - 100, 4, 58, 0, 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, - 0, 61, 0, 0,101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, - 0, 38, 0, 63, 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, - 0, 0, 78, 0, 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, - 0,107, 1, 14, 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, - 0,108, 0, 0,109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, + 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 0, 0, 41, 42, 43, 0, 44, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, + 4, 5, 6, 7, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, + 16, 18, 16, 19, 16, 19, 16, 19, 0, 19, 16, 20, 16, 19, 21, 19, + 0, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 34, 0, + 0, 35, 0, 0, 36, 0, 37, 0, 0, 0, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, + 0, 0, 0, 0, 0, 50, 0, 51, 0, 52, 53, 0, 54, 0, 0, 0, + 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 58, 0, 0, 59, 60, 61, + 62, 63, 0, 0, 64, 65, 0, 0, 0, 66, 0, 0, 0, 0, 67, 0, + 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 69, 0, 0, 0, 70, 0, 71, 0, 0, 72, 0, 0, 73, 0, 0, + 0, 0, 0, 0, 0, 0, 74, 75, 0, 0, 0, 0, 76, 77, 0, 78, + 79, 0, 0, 80, 81, 0, 82, 62, 0, 83, 84, 0, 0, 85, 86, 87, + 0, 88, 0, 89, 0, 90, 0, 0, 51, 91, 51, 0, 92, 0, 93, 0, + 0, 0, 81, 0, 0, 0, 94, 95, 0, 96, 97, 98, 99, 0, 0, 0, + 0, 0, 51, 0, 0, 0, 0,100,101, 0, 0, 0, 0, 0, 0,102, + 0, 0, 0, 0, 0, 0,103, 0, 0, 0, 0, 0, 0,104,105, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0,106, 0, 0,107, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,108,109, 0, 0,110, 0, 0, 0, 0, + 0, 0,111, 0,112, 0,105, 0, 0, 0, 0, 0,113,114, 0, 0, + 0, 0, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0,117, 0,118, + 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 8, 0, + 0, 0, 0, 9, 10, 11, 12, 0, 0, 0, 0, 13, 0, 0, 14, 15, + 0, 16, 0, 17, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 0, 0, + 22, 23, 0, 24, 25, 0, 0, 26, 0, 0, 0, 27, 0, 0, 28, 29, + 30, 31, 0, 0, 0, 32, 33, 34, 0, 0, 33, 0, 0, 35, 33, 0, + 0, 0, 33, 36, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, + 0, 39, 40, 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 43, + 0, 44, 0, 0, 0, 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, + 0, 48, 49, 0, 0, 0, 0, 50, 0, 0, 0, 51, 0, 52, 0, 53, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 0, + 57, 58, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 61, 52, 0, + 62, 63, 0, 0, 64, 0, 0, 0, 65, 66, 0, 0, 0, 67, 0, 68, + 69, 70, 71, 72, 1, 73, 0, 74, 75, 76, 0, 0, 77, 78, 0, 0, + 0, 79, 0, 0, 1, 1, 0, 0, 80, 0, 0, 81, 0, 0, 0, 0, + 77, 82, 0, 83, 0, 0, 0, 0, 0, 78, 84, 0, 85, 0, 52, 0, + 1, 78, 0, 0, 86, 0, 0, 87, 0, 0, 0, 0, 0, 88, 57, 0, + 0, 0, 0, 0, 0, 89, 90, 0, 0, 84, 0, 0, 33, 0, 0, 91, + 0, 0, 0, 0, 92, 0, 0, 0, 0, 49, 0, 0, 93, 0, 0, 0, + 0, 94, 95, 0, 0, 96, 0, 0, 97, 0, 0, 0, 98, 0, 0, 0, + 99, 0, 0, 0,100, 0, 0, 0, 0,101,102, 93, 0, 0,103, 0, + 0, 0, 84, 0, 0,104, 0, 0, 0,105,106, 0, 0,107,108, 0, + 0, 0, 0, 0, 0,109, 0, 0,110, 0, 0, 0, 0,111, 33, 0, + 112,113,114, 57, 0, 0,115, 35, 0, 0,116, 0, 0, 0,117, 0, + 0, 0, 0, 0, 0,118, 0, 0,119, 0, 0, 0, 0,120, 88, 0, + 0, 0, 0, 0, 57, 0, 0, 0, 0, 52,121, 0, 0, 0, 0,122, + 0, 0,123, 0, 0, 0, 0,121, 0, 0,124, 0, 0, 0, 0, 0, + 79, 0, 0, 0, 0,125, 0, 0, 0,126, 0, 0, 0,127, 0,128, + 0, 0, 0, 0,129,130,131, 0,132, 0,133, 0, 0, 0,134,135, + 136, 0, 77, 0, 0, 0, 0, 0, 35, 0, 0, 0,137, 0, 0, 0, + 138, 0, 0, 0,139, 0, 0,140, 0, 0,141, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 4, 4, 8, + 9, 10, 1, 11, 12, 13, 14, 15, 16, 17, 18, 1, 1, 1, 19, 1, + 0, 0, 20, 21, 22, 1, 23, 4, 21, 24, 25, 26, 27, 28, 29, 30, + 0, 0, 1, 1, 31, 0, 0, 0, 32, 33, 34, 35, 1, 36, 37, 0, + 0, 0, 0, 38, 1, 39, 14, 39, 40, 41, 42, 0, 0, 0, 43, 36, + 44, 45, 21, 45, 46, 0, 0, 0, 19, 1, 21, 0, 0, 47, 0, 38, + 48, 1, 1, 49, 49, 50, 0, 0, 51, 0, 0, 19, 52, 1, 0, 0, + 38, 14, 4, 1, 1, 1, 53, 21, 43, 52, 54, 21, 35, 1, 0, 0, + 0, 55, 0, 0, 0, 56, 57, 58, 0, 0, 0, 0, 0, 59, 0, 60, + 0, 0, 0, 0, 61, 62, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, + 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 69, + 70, 0, 71, 72, 73, 74, 75, 76, 0, 0, 0, 77, 0, 0, 0, 78, + 79, 0, 0, 0, 0, 47, 0, 0, 0, 49, 0, 80, 0, 0, 0, 62, + 0, 0, 63, 0, 0, 81, 0, 0, 82, 0, 0, 0, 83, 0, 0, 19, + 84, 0, 62, 0, 0, 0, 0, 49, 1, 85, 1, 52, 15, 86, 36, 10, + 21, 87, 0, 55, 0, 0, 0, 0, 19, 10, 1, 0, 0, 0, 0, 0, + 88, 0, 0, 89, 0, 0, 88, 0, 0, 0, 0, 78, 0, 0, 87, 9, + 12, 4, 90, 8, 91, 47, 0, 58, 50, 0, 21, 1, 21, 92, 93, 1, + 1, 1, 1, 94, 95, 96, 97, 1, 98, 58, 81, 99,100, 4, 58, 0, + 0, 0, 0, 0, 0, 19, 50, 0, 0, 0, 0, 0, 0, 61, 0, 0, + 101,102, 0, 0,103, 0, 0, 1, 1, 50, 0, 0, 0, 38, 0, 63, + 0, 0, 0, 0, 0, 62, 0, 0,104, 68, 61, 0, 0, 0, 78, 0, + 0, 0,105,106, 58, 38, 81, 0, 0, 0, 0, 0, 0,107, 1, 14, + 4, 12, 84, 0, 0, 0, 0, 38, 87, 0, 0, 0, 0,108, 0, 0, + 109, 61, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, 49, 50, 0, 0, 19, 58, 0, 0, 0, 51, 0,111, 14, 52,112, 41, 0, 0, 62, 0, 0, 61, 0, 0,113, 0, 87, 0, 0, 0, 61, 62, 0, 0, 62, 0, 89, 0, 0,113, 0, 0, 0, 0,114, 0, 0, 0, 78, 55, 0, 38, - 1, 58, 1, 58, 0, 0, 63, 89, 0, 0,115, 0, 0, 0, 55, 0, - 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, 0, 79, 0, 61, - 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, 0, 0, 8, 91, - 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, 0,117, 0,118, - 119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, 38, 50, 38, 58, - 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, 87, 0, 0, 0, - 0, 1, 0, 0, 0,123, 4,122, 0, 0, 0, 1,124, 0, 0, 0, - 0, 0,230,230,230,230,230,232,220,220,220,220,232,216,220,220, - 220,220,220,202,202,220,220,220,220,202,202,220,220,220, 1, 1, - 1, 1, 1,220,220,220,220,230,230,230,230,240,230,220,220,220, - 230,230,230,220,220, 0,230,230,230,220,220,220,220,230,232,220, - 220,230,233,234,234,233,234,234,233,230, 0, 0, 0,230, 0,220, - 230,230,230,230,220,230,230,230,222,220,230,230,220,220,230,222, - 228,230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, - 0, 23, 0, 24, 25, 0,230,220, 0, 18, 30, 31, 32, 0, 0, 0, - 0, 27, 28, 29, 30, 31, 32, 33, 34,230,230,220,220,230,220,230, - 230,220, 35, 0, 0, 0, 0, 0,230,230,230, 0, 0,230,230, 0, - 220,230,230,220, 0, 0, 0, 36, 0, 0,230,220,230,230,220,220, - 230,220,220,230,220,230,220,230,230, 0, 0,220, 0, 0,230,230, - 0,230, 0,230,230,230,230,230, 0, 0, 0,220,220,220,230,220, - 220,220,230,230, 0,220, 27, 28, 29,230, 7, 0, 0, 0, 0, 9, - 0, 0, 0,230,220,230,230, 0, 0, 0, 0, 0,230, 0, 0, 84, - 91, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 9, 0,103,103, - 9, 0,107,107,107,107,118,118, 9, 0,122,122,122,122,220,220, - 0, 0, 0,220, 0,220, 0,216, 0, 0, 0,129,130, 0,132, 0, - 0, 0, 0, 0,130,130,130,130, 0, 0,130, 0,230,230, 9, 0, - 230,230, 0, 0,220, 0, 0, 0, 0, 7, 0, 9, 9, 0, 9, 9, - 0, 0, 0,230, 0, 0, 0,228, 0, 0, 0,222,230,220,220, 0, - 0, 0,230, 0, 0,220,230,220, 0,220,230,230,230, 0, 0, 0, - 9, 9, 0, 0, 7, 0,230, 0, 1, 1, 1, 0, 0, 0,230,234, - 214,220,202,230,230,230,230,230,232,228,228,220,218,230,233,220, - 230,220,230,230, 1, 1, 1, 1, 1,230, 0, 1, 1,230,220,230, - 1, 1, 0, 0,218,228,232,222,224,224, 0, 8, 8, 0, 0, 0, - 0,220,230, 0,230,230,220, 0, 0,230, 0, 0, 26, 0, 0,220, - 0,230,230, 1,220, 0, 0,230,220, 0, 0, 0,220,220, 0, 0, - 230,220, 0, 9, 7, 0, 0, 7, 9, 0, 0, 0, 9, 7, 6, 6, - 0, 0, 0, 0, 1, 0, 0,216,216, 1, 1, 1, 0, 0, 0,226, - 216,216,216,216,216, 0,220,220,220, 0,232,232,220,230,230,230, - 7, 0, 16, 17, 17, 33, 17, 49, 17, 17, 84, 97,135,145, 26, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 1, 58, 1, 58, 0, 0, 0, 0, 0, 88, 63, 89, 0, 0,115, 0, + 0, 0, 55, 0, 0, 0, 0,115, 0, 0, 0, 0, 61, 0, 0, 0, + 0, 79, 0, 61, 0, 0, 0, 0, 56, 0, 89, 80, 0, 0, 79, 0, + 0, 0, 8, 91, 0, 0, 1, 87, 0, 0,116, 0, 0, 0, 0, 0, + 0,117, 0,118,119,120,121, 0,104, 4,122, 49, 23, 0, 0, 0, + 38, 50, 38, 58, 0, 0, 1, 87, 1, 1, 1, 1, 39, 1, 48,105, + 87, 0, 0, 0, 0, 1, 0, 0, 0,123, 0, 0, 0,112, 4,122, + 0, 0, 0, 1,124, 0, 0, 0, 0, 0,230,230,230,230,230,232, + 220,220,220,220,232,216,220,220,220,220,220,202,202,220,220,220, + 220,202,202,220,220,220, 1, 1, 1, 1, 1,220,220,220,220,230, + 230,230,230,240,230,220,220,220,230,230,230,220,220, 0,230,230, + 230,220,220,220,220,230,232,220,220,230,233,234,234,233,234,234, + 233,230, 0, 0, 0,230, 0,220,230,230,230,230,220,230,230,230, + 222,220,230,230,220,220,230,222,228,230, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 24, 25, 0,230,220, + 0, 18, 30, 31, 32, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34,230,230,220,220,230,220,230,230,220, 35, 0, 0, 0, 0, 0, + 230,230,230, 0, 0,230,230, 0,220,230,230,220, 0, 0, 0, 36, + 0, 0,230,220,230,230,220,220,230,220,220,230,220,230,220,230, + 230, 0, 0,220, 0, 0,230,230, 0,230, 0,230,230,230,230,230, + 0, 0, 0,220,220,220,230,220,220,220,230,230, 0,220, 27, 28, + 29,230, 7, 0, 0, 0, 0, 9, 0, 0, 0,230,220,230,230, 0, + 0, 0, 0, 0,230, 0, 0, 84, 91, 0, 0, 0, 0, 9, 9, 0, + 0, 0, 0, 0, 9, 0,103,103, 9, 0,107,107,107,107,118,118, + 9, 0,122,122,122,122,220,220, 0, 0, 0,220, 0,220, 0,216, + 0, 0, 0,129,130, 0,132, 0, 0, 0, 0, 0,130,130,130,130, + 0, 0,130, 0,230,230, 9, 0,230,230, 0, 0,220, 0, 0, 0, + 0, 7, 0, 9, 9, 0, 9, 9, 0, 0, 0,230, 0, 0, 0,228, + 0, 0, 0,222,230,220,220, 0, 0, 0,230, 0, 0,220,230,220, + 0,220,230,230,230, 0, 0, 0, 9, 9, 0, 0, 7, 0,230, 0, + 1, 1, 1, 0, 0, 0,230,234,214,220,202,230,230,230,230,230, + 232,228,228,220,218,230,233,220,230,220,230,230, 1, 1, 1, 1, + 1,230, 0, 1, 1,230,220,230, 1, 1, 0, 0,218,228,232,222, + 224,224, 0, 8, 8, 0, 0, 0, 0,220,230, 0,230,230,220, 0, + 0,230, 0, 0, 26, 0, 0,220, 0,230,230, 1,220, 0, 0,230, + 220, 0, 0, 0,220,220, 0, 0,230,220, 0, 9, 7, 0, 0, 7, + 9, 0, 0, 0, 9, 7, 6, 6, 0, 0, 0, 0, 1, 0, 0,216, + 216, 1, 1, 1, 0, 0, 0,226,216,216,216,216,216, 0,220,220, + 220, 0,232,232,220,230,230,230, 7, 0, 16, 17, 17, 33, 17, 49, + 17, 17, 84, 97,135,145, 26, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17,177, 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 5, 3, 3, 3, - 3, 3, 6, 7, 8, 3, 3, 3, 3, 3, 9, 10, 11, 12, 13, 3, - 3, 3, 3, 3, 3, 3, 3, 14, 3, 15, 3, 3, 3, 3, 3, 3, - 16, 17, 18, 19, 20, 21, 3, 3, 3, 22, 23, 24, 3, 3, 3, 3, - 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 26, 3, 3, 27, 28, - 0, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, - 0, 3, 0, 0, 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, - 0, 9, 0, 9, 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, 0, - 0, 14, 15, 16, 6, 0, 17, 18, 19, 19, 19, 20, 21, 22, 23, 24, - 19, 25, 0, 26, 27, 19, 19, 28, 29, 30, 0, 31, 0, 0, 0, 8, - 0, 0, 0, 0, 0, 0, 0, 19, 28, 0, 32, 33, 9, 34, 35, 19, - 0, 0, 36, 37, 38, 39, 40, 19, 0, 41, 42, 43, 44, 31, 0, 1, - 45, 42, 0, 0, 0, 0, 0, 32, 14, 14, 0, 0, 0, 0, 14, 0, - 0, 46, 47, 47, 47, 47, 48, 49, 47, 47, 47, 47, 50, 51, 52, 53, - 43, 21, 0, 0, 0, 0, 0, 0, 0, 54, 6, 55, 0, 14, 19, 1, - 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 19, 58, 31, 0, 0, - 0, 0, 0, 0, 0, 59, 14, 0, 0, 0, 0, 1, 0, 2, 0, 0, - 0, 3, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 2, 3, 0, 4, 5, 0, 0, 6, 0, 0, 0, 7, - 0, 0, 0, 1, 1, 0, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, - 8, 9, 10, 11, 12, 0, 0, 0, 13, 0, 0, 0, 0, 14, 15, 16, - 17, 0, 0, 0, 1, 0, 0, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 8, 21, 9, - 0, 0, 22, 0, 0, 0, 0, 1, 0, 23, 24, 25, 0, 0, 26, 0, - 0, 0, 8, 21, 27, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 28, - 29, 30, 0, 31, 32, 20, 1, 1, 0, 0, 0, 8, 21, 9, 1, 4, - 5, 0, 0, 0, 33, 9, 0, 1, 1, 1, 0, 8, 21, 21, 21, 21, - 34, 1, 35, 21, 21, 21, 9, 36, 0, 0, 37, 38, 1, 0, 39, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 21, 9, 1, 0, 0, 0, - 40, 0, 8, 21, 21, 21, 21, 21, 21, 21, 21, 9, 0, 1, 1, 1, - 1, 8, 21, 21, 21, 9, 0, 0, 0, 41, 0, 42, 43, 0, 0, 0, - 1, 44, 0, 0, 0, 45, 8, 9, 1, 0, 0, 0, 8, 21, 21, 21, - 9, 0, 1, 0, 1, 1, 8, 21, 21, 9, 0, 4, 5, 8, 9, 1, - 0, 0, 0, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 3, 3, 3, 3, 3, 3, 3, 15, 3, 16, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 17, 17,177, 0, 1, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, + 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 6, 7, 8, 3, 3, 3, + 3, 3, 9, 10, 11, 12, 13, 3, 3, 3, 3, 3, 3, 3, 3, 14, + 3, 15, 3, 3, 3, 3, 3, 3, 16, 17, 18, 19, 20, 21, 3, 3, + 3, 22, 23, 24, 3, 3, 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, + 3, 3, 3, 26, 3, 3, 27, 28, 0, 1, 0, 0, 0, 0, 0, 1, + 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, + 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 9, 0, 0, 0, 0, 0, 0, 9, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 10, 11, 12, 13, 0, 0, 14, 15, 16, 6, 0, 17, 18, + 19, 19, 19, 20, 21, 22, 23, 24, 19, 25, 0, 26, 27, 19, 19, 28, + 29, 30, 0, 31, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 19, + 28, 0, 32, 33, 9, 34, 35, 19, 0, 0, 36, 37, 38, 39, 40, 19, + 0, 41, 42, 43, 44, 31, 0, 1, 45, 42, 0, 0, 0, 0, 0, 32, + 14, 14, 0, 0, 0, 0, 14, 0, 0, 46, 47, 47, 47, 47, 48, 49, + 47, 47, 47, 47, 50, 51, 52, 53, 43, 21, 0, 0, 0, 0, 0, 0, + 0, 54, 6, 55, 0, 14, 19, 1, 0, 0, 0, 0, 56, 57, 0, 0, + 0, 0, 0, 19, 58, 31, 0, 0, 0, 0, 0, 0, 0, 59, 14, 0, + 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 60, 61, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 3, 0, 4, + 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 1, 1, 0, 0, 8, + 9, 0, 8, 9, 0, 0, 0, 0, 8, 9, 10, 11, 12, 0, 0, 0, + 13, 0, 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 1, 0, 0, 18, + 19, 0, 0, 0, 20, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 0, 8, 21, 9, 0, 0, 22, 0, 0, 0, 0, 1, + 0, 23, 24, 25, 0, 0, 26, 0, 0, 0, 8, 21, 27, 0, 1, 0, + 0, 1, 1, 1, 1, 0, 1, 28, 29, 30, 0, 31, 32, 20, 1, 1, + 0, 0, 0, 8, 21, 9, 1, 4, 5, 0, 0, 0, 33, 9, 0, 1, + 1, 1, 0, 8, 21, 21, 21, 21, 34, 1, 35, 21, 21, 21, 9, 36, + 0, 0, 37, 38, 1, 0, 39, 0, 0, 0, 1, 0, 1, 0, 0, 0, + 0, 8, 21, 9, 1, 0, 0, 0, 40, 0, 8, 21, 21, 21, 21, 21, + 21, 21, 21, 9, 0, 1, 1, 1, 1, 8, 21, 21, 21, 9, 0, 0, + 0, 41, 0, 42, 43, 0, 0, 0, 1, 44, 0, 0, 0, 45, 8, 9, + 1, 0, 0, 0, 8, 21, 21, 21, 9, 0, 1, 0, 1, 1, 8, 21, + 21, 9, 0, 4, 5, 8, 9, 1, 0, 0, 0, 1, 2, 3, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 3, 3, 3, 3, 3, 3, + 3, 15, 3, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 18, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 17, 17, 18, 17, 19, 20, 21, 22, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 25, 25, 26, 27, 28, 29, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 52, 53, 31, 31, 31, 31, 54, 55, 55, 56, 31, - 31, 31, 31, 31, 31, 31, 57, 58, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 59, 60, 31, 61, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 64, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 65, 66, 67, 31, 31, - 31, 31, 68, 31, 31, 31, 31, 31, 31, 31, 31, 69, 70, 71, 17, 17, - 72, 73, 31, 74, 75, 76, 77, 78, 79, 31, 80, 81, 17, 82, 17, 17, - 17, 17, 31, 31, 23, 23, 23, 23, 23, 23, 23, 83, 31, 31, 31, 31, - 23, 83, 31, 31, 23, 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 0, 0, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, + 18, 17, 19, 20, 21, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 24, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 25, 26, 27, + 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 52, 53, 31, + 31, 31, 31, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 57, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 58, 31, 31, 31, + 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + 63, 64, 65, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 66, 67, 68, 31, 31, 31, 31, 69, 31, 31, 31, 31, 31, + 31, 31, 17, 70, 71, 72, 17, 17, 73, 74, 31, 75, 76, 77, 78, 79, + 80, 31, 81, 82, 17, 83, 17, 17, 17, 17, 31, 31, 23, 23, 23, 23, + 23, 23, 23, 84, 31, 31, 31, 31, 23, 84, 31, 31, 23, 23, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 84, 0, 0, 1, 0, 1, 2, 3, 0, 1, 2, 3, - 4, 5, 6, 7, 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, - 7, 8, 9, 10, 11, 11, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 19, 27, 28, 29, 30, 30, 31, 31, 32, 32, - 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 40, 41, 41, - 42, 42, 42, 43, 44, 44, 45, 46, 47, 47, 47, 47, 48, 48, 48, 48, - 48, 48, 49, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 53, - 54, 55, 56, 56, 57, 58, 59, 51, 60, 61, 62, 63, 64, 65, 66, 7, - 67, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 7, 4, 4, 4, 4, - 77, 77, 77, 77, 78, 79, 80, 81, 82, 83, 84, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 85, 85, 85, 0, 0, 0, 0, 86, 87, 88, 88, - 89, 90, 48, 91, 0, 0, 92, 92, 92, 92, 92, 93, 94, 95, 96, 97, - 98, 47, 99,100,101,102, 0,103,104,105, 0, 0, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0,106,106,106,106, - 106,106,106,106,106,106,106,107,108,108,108,108,108, 11,109,110, - 111, 4,112, 4,113,114,115,116,117,118,119,120,121,122,123,124, - 125,126, 50,127, 47, 47, 47, 47, 47, 47, 47, 47,128,128,128,128, - 128,128,128,128,128,128,128,128, 92, 92, 92, 92, 92, 92, 92, 92, - 129,130, 19, 19, 19, 19, 19, 19,131, 19, 19, 19,132,133, 19,134, - 135,136,137,101,138,138,138,138, 0, 77,139,140,128,128,141,142, - 143,144,145,146,147,148,149,150,151,152,153,153,154,154,154,154, - 154,154, 4, 4,155,156,157,158,159,160,161,162,163,164,165,166, - 167,168,169,169,170,170,171,171,172,172,128,128, 19, 19,173,174, - 175,176,177,178,179,179,180,181,182,183,184,185,186,186,187,188, - 189,190,128,128,191,191,192,192,128,128,193,193,194,195,196,196, - 197,197,128,128,198,198,199,199,200,200,201,201,202,203,204,205, - 28, 28,128,128,206,207,208,208,209,210,211,211,128,128,212,212, - 213,213,214, 34,215,215,215,215,215,215,215,215,215,215,215,215, - 215,215,128,128,128,128,128,128,128,128,216,216,217,217,217,217, - 217,217,217,217,217,217,128,128,128,128,128,128,218,218,218,218, - 218,218,218,218,218,218,128,128,128,128,128,128,110,110,110,110, - 110,110,110,110,110,219,220,221,222,222,222,222,223,223,223,223, - 224,224,224,225,226,226,226,226,226,226,226,226,226,226,226,226, - 227,227,227,227,227,227,227,227,226,226,128,128,128,128,128,128, - 128,128,104,104,228,229,229,229,230,231,232,232,232,232,232,232, - 128,128,128,128,233,233,234, 0,128,128,128,128,128,128,128,128, - 7,235, 0, 0, 0, 0, 0, 0, 0,236,237, 0, 77, 77, 0, 0, - 0, 0,128,128,238,238,238,238,238,238,238,238,238,238,238,238, - 128,128,128,128,128,128,128,128, 4, 4,128,128,239, 11, 11, 11, - 240,240,128,128,128,128,241,242,128,128,128,128,128,128,243,243, - 128,128,128,128,128,128,128,128,128,128, 48, 48,244,244,244,244, - 245,245,128,128, 0, 0, 0, 0, 0, 0,128,128, 19, 19, 19, 19, - 128,128,128,128,246, 0,128,128, 0, 0, 0, 0, 92, 92,128,128, + 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 85, 0, 0, 1, + 0, 1, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, + 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 11, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 19, 27, + 28, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, + 37, 37, 38, 38, 39, 40, 41, 41, 42, 42, 42, 43, 44, 44, 45, 46, + 47, 47, 47, 47, 48, 48, 48, 48, 48, 48, 49, 50, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 51, 52, 53, 54, 55, 56, 56, 57, 58, 59, 51, + 60, 61, 62, 63, 64, 65, 66, 7, 67, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 7, 4, 4, 4, 4, 77, 77, 77, 77, 78, 79, 80, 81, + 82, 83, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 85, 85, 85, + 0, 0, 0, 0, 86, 87, 88, 88, 89, 90, 48, 91, 0, 0, 92, 92, + 92, 92, 92, 93, 94, 95, 96, 97, 98, 47, 99,100,101,102, 0,103, + 104,105, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 0,106,106,106,106,106,106,106,106,106,106,106,107, + 108,108,108,108,108, 11,109,110,111, 4,112, 4,113,114,115,116, + 117,118,119,120,121,122,123,124,125,126, 50,127, 47, 47, 47, 47, + 47, 47, 47, 47,128,128,128,128,128,128,128,128,128,128,128,128, + 92, 92, 92, 92, 92, 92, 92, 92,129,130, 19, 19, 19, 19, 19, 19, + 131, 19, 19, 19,132,133, 19,134,135,136,137,101,138,138,138,138, + 0, 77,139,140,128,128,141,142,143,144,145,146,147,148,149,150, + 151,152,153,154,155,155,155,155,155,155, 4, 4,156,157,158,159, + 160,161,162,163,164,165,166,167,168,169,170,170,171,171,172,172, + 173,174,174,174, 19, 19,175,176,177,178,179,180,181,181,182,183, + 184,185,186,187,188,188,189,190,191,192,193,193,194,194,195,195, + 128,128,196,196,197,198,199,200,201,201,128,128,202,202,203,203, + 204,204,205,205,206,207,208,209, 28, 28,210,210,211,212,213,213, + 214,215,216,216,128,128,217,217,218,218,219, 34,220,220,220,220, + 220,220,220,220,220,220,220,220,220,220,128,128,128,128,128,128, + 128,128,221,221,222,222,222,222,222,222,222,222,223,223,223,223, + 223,223,223,223,223,223,128,128,128,128,128,128,128,128,128,128, + 224,224,128,128,110,110,110,110,110,110,110,110,110,225,226,227, + 228,228,228,228,128,128,128,128,229,229,128,128,230,230,230,230, + 231,231,231,232,233,233,233,233,233,233,233,233,233,233,233,233, + 234,234,234,234,234,234,234,234,233,233,128,128,128,128,128,128, + 128,128,104,104,235,236,236,236,237,238,239,239,239,239,239,239, + 128,128,128,128,240,240,241, 0,128,128,128,128, 0, 0, 0, 0, + 7,242, 0, 0, 0, 0, 0, 0, 0,243,244, 0, 77, 77, 0, 0, + 0, 0,128,128,245,245,245,245,245,245,245,245,245,245,245,245, + 128,128,128,128,128,128,128,128, 4, 4,128,128,246, 11, 11, 11, + 247,247,128,128,128,128,248,249,128,128,128,128,128,128,250,250, + 128,128,251,251,128,128,128,128,128,128, 48, 48,252,252,252,252, + 253,253,128,128, 0, 0, 0, 0, 0, 0,128,128, 19, 19, 19, 19, + 128,128,128,128,254, 0,128,128, 0, 0, 0, 0, 92, 92,128,128, 128,128,128,128, 0, 0,128,128, 7, 7, 7, 7, 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 3, 3, 4, 5, 4, 5, 4, 4, 4, 4, 4, 4, 4, 6, 0, 0, 7, 0, 8, 8, 8, 8, 8, 8, 8, 9, @@ -5056,30 +5278,32 @@ _hb_ucd_u8[13386] = 137,137,138,138,138,138,139, 0,140,140,140,141,141,142,142,142, 143,143,144,144,144,144,144,144,145,145,145,145,145,146,146,146, 147,147,147,148,148,148,148,148,149,149,149,150,150,150,150,151, - 151,151,151,151,152,152,152,152,153,153,153,153,154,154,155,155, - 156,156,156,156,156,156,157,157,158,158,159,159,159,159,159,159, - 160,160,161,161,161,161,161,161,162,162,162,162,162,162,163,163, - 164,164,164,164,165,165,165,165,166,166,166,166,167,167,168,168, - 169,169,169,169,170,170,170,170,171,171,171,171,172,172,172,172, - 173,173,173,173,173,173,173,174,175,175,175,176,176,176,176,177, - 177,177,177,178,178,178,179,179,180,180,180,180,181,181,181,181, - 181,182,182,182,183,183,183,183,183,184,184,184,185,185,185,185, - 185,185,186, 43,187,187,187,187,188,188,188,189,189,189,189,189, - 190,190,190,191,190,190,190,190,192,192,192,192,193,193,193,193, - 194,194,194,194,195,195,195,195,195,195, 66, 66,196,196,196,196, - 197,197,197,197,198,198,198,198,199,199,199,199,200,200,200,200, - 201,201,201,201,202,202,202,202,202,203,203,203,203,203,203, 55, - 204,204,204,204,205,205,205,205,205,205,205,206,206,206,206,206, - 207,207,207,207,207,207,208,208,208,208,208,208,209,209,209,209, - 210,210,210,210,110,110,110,110,211,211,211,211,212,212,212,212, - 213,213,213,213,214,214,214,214,215,215,215,216,216,216,216,216, - 216,217,217,217,218,218,218,218,219,219,219,219,220,220,220,220, - 220,220,221, 94,222,222,222,222,223,223,223,223,224, 99, 99, 99, - 99, 99, 99, 99, 99, 99,102,225, 99,226,102,227,227,227,227,227, - 228,228,228,228,228,228, 0, 0, 8, 0, 0, 0, 0, 0,229,230, - 231, 0,232, 0,233,233,233,233, 91, 91, 91, 13,234,234,234,234, - 235,235,235,235,236,236,236,236,237,237,237,237,238,238,238,238, - 239,239,239,239,240, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, + 151,151,151,151,152,152,152,152,153,153,153,153,154,154,154,154, + 155,155,156,156,157,157,157,157,157,157,158,158,159,159,160,160, + 160,160,160,160,161,161,162,162,162,162,162,162,163,163,163,163, + 163,163,164,164,165,165,165,165,166,166,166,166,167,167,167,167, + 168,168,169,169,170,170,170,170,171,171,171,171,172,172,172,172, + 173,173,173,173,174,174,174,174,175,175,175,175,176, 21, 21, 21, + 177,177,177,178,178,178,178,179,179,179,179,180,180,180,181,181, + 182,182,182,182,183,183,183,183,183,184,184,184,185,185,185,185, + 185,186,186,186,187,187,187,187,187,187,188, 43,189,189,189,189, + 190,190,190,191,191,191,191,191,192,192,192,193,192,192,192,192, + 194,194,194,194,195,195,195,195,196,196,196,196,197,197,197,197, + 198,198,198,198,198,198, 66, 66,199,199,199,199,199, 49, 49, 49, + 200,200,200,200,201,201,201,201,202,202,202,202,203,203,203,203, + 204,204,204,204,205,205,205,205,205,206,206,206,206,206,206, 55, + 207,207,207,207,208,208,208,208,209,209,209,209,209,209,209,210, + 210,210,210,210,211,211,211,211,211,211,212,212,212,212,212,212, + 213,213,213,213,214,214,214,214,110,110,110,110,215,215,215,215, + 216,216,216,216,217,217,217,217,218,218,218,218,219,219,219,219, + 220,220,220,221,221,221,221,221,221,222,222,222,223,223,223,223, + 224,224,224,224,225,225,225,225,226,226,226,226,226,226,227, 94, + 228,228,228,228,229,229,229,229,230, 99, 99, 99, 99, 99, 99, 99, + 99, 99,102,231, 99,232,102,233,233,233,233,233,234,234,234,234, + 234,234, 0, 0, 8, 0, 0, 0, 0, 0,235,236,237, 0,238, 0, + 239,239,239,239, 91, 91, 91, 13,240,240,240,240,241,241,241,241, + 242,242,242,242,243,243,243,243,244,244,244,244,245,245,245,245, + 246,246,246,246,247, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 3, 0, 0, 0, 4, 0, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 5, 0, 2, 5, 6, 0, 7, 7, 7, 7, 8, 9, 8, 10, 8, 11, 8, 8, 8, 8, 8, 8, 12, 13, 13, 13, 14, 14, 14, 14, @@ -5123,98 +5347,102 @@ _hb_ucd_u8[13386] = 163,163,163,163,164,164,164,164,165,165,165,165,166,166,166,166, 167,167,167,167,168,168,168,168,169,169,169,169,170,170,170,170, 171,171,171,171,172,172,172,172,173,173,173,173,174,174,174,174, - 174,174,174,175,176,176,176,176,177,177,177,177,178,178,178,178, + 175,175,175,175,176,176,176,176,177, 20, 20, 20,178,178,178,178, 179,179,179,179,180,180,180,180,181,181,181,181,182,182,182,182, 183,183,183,183,184,184,184,184,185,185,185,185,186,186,186,186, - 187, 45, 45, 45,188,188,188,188,189,189,189,189,190,190,190,190, - 191,191,191,191,191,191,192,191,193,193,193,193,194,194,194,194, + 187,187,187,187,188,188,188,188,189, 45, 45, 45,190,190,190,190, + 191,191,191,191,192,192,192,192,193,193,193,193,193,193,194,193, 195,195,195,195,196,196,196,196,197,197,197,197,198,198,198,198, 199,199,199,199,200,200,200,200,201,201,201,201,202,202,202,202, 203,203,203,203,204,204,204,204,205,205,205,205,206,206,206,206, 207,207,207,207,208,208,208,208,209,209,209,209,210,210,210,210, 211,211,211,211,212,212,212,212,213,213,213,213,214,214,214,214, 215,215,215,215,216,216,216,216,217,217,217,217,218,218,218,218, - 219,219,219,219,220,220,220,220,221,221,221,221,222,223,223,223, - 224,224,224,224,223,223,223,223,225,106,106,106,226,106,106,106, - 106,227,109,109,228,228,228,228,229,229,229,229, 0,230, 86, 0, - 0, 0,230, 7, 82,138, 7, 0, 0, 0,231, 86,232,232,232,232, - 233,233,233,233,234,234,234,234,235,235,235,235,236,236,236,236, - 237,237,237,237,238,238,238,238,239, 0, 0, 0, 0, 0, 0, 0, - 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, - 19, 0, 0, 0, 0, 0, 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, - 0, 9, 9, 9, 9, 9, 0, 9, 9, 0, 9, 0, 9, 9, 55, 55, - 55, 55, 55, 55, 6, 6, 6, 6, 6, 1, 1, 6, 6, 4, 4, 4, - 4, 4, 4, 4, 4, 14, 14, 14, 14, 14, 14, 14, 3, 3, 3, 3, - 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, - 1, 1, 3, 3, 1, 3, 3, 3, 37, 37, 37, 37, 38, 38, 38, 38, - 64, 64, 64, 64, 90, 90, 90, 90, 95, 95, 95, 95, 3, 3, 0, 3, - 7, 7, 7, 7, 7, 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, - 5, 5, 5, 5, 11, 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21, - 22, 22, 22, 22, 23, 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20, - 36, 36, 36, 36, 24, 24, 24, 24, 24, 24, 24, 0, 18, 18, 18, 18, - 25, 25, 25, 25, 25, 0, 0, 0, 0, 25, 25, 25, 33, 33, 33, 33, - 8, 8, 8, 8, 8, 8, 8, 0, 12, 12, 12, 12, 30, 30, 30, 30, - 29, 29, 29, 29, 28, 28, 28, 28, 34, 34, 34, 34, 35, 35, 35, 35, - 35, 35, 35, 0, 0, 0, 35, 35, 45, 45, 45, 45, 44, 44, 44, 44, - 44, 0, 0, 0, 43, 43, 43, 43, 46, 46, 46, 46, 31, 31, 31, 31, - 32, 32, 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, - 52, 52, 52, 52, 58, 58, 58, 58, 54, 54, 54, 54, 91, 91, 91, 91, - 62, 62, 62, 62, 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, - 73, 73, 73, 73, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, - 0, 1, 0, 0, 1, 1, 0, 0, 19, 19, 9, 9, 9, 9, 9, 6, - 19, 9, 9, 9, 9, 9, 19, 19, 9, 9, 9, 19, 6, 19, 19, 19, - 19, 19, 19, 9, 0, 0, 0, 19, 0, 0, 9, 0, 0, 0, 19, 19, - 27, 27, 27, 27, 56, 56, 56, 56, 61, 61, 61, 61, 13, 13, 13, 13, - 0, 13, 0, 13, 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, - 0, 15, 15, 15, 15, 15, 15, 15, 15, 1, 1, 0, 0, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 0, 26, 26, 26, 26, 26, 12, 12, 12, - 12, 12, 12, 0, 39, 39, 39, 39, 86, 86, 86, 86, 77, 77, 77, 77, - 79, 79, 79, 79, 60, 60, 60, 60, 65, 65, 65, 65, 75, 75, 75, 75, - 69, 69, 69, 69, 69, 69, 0, 69, 74, 74, 74, 74, 84, 84, 84, 84, - 84, 84, 84, 0, 68, 68, 68, 68, 92, 92, 92, 92, 87, 87, 87, 87, - 19, 9, 19, 19, 19, 19, 0, 0, 2, 2, 2, 2, 19, 19, 19, 4, - 3, 3, 0, 0, 1, 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0, - 49, 49, 49, 49, 0, 1, 1, 1, 71, 71, 71, 71, 67, 67, 67, 67, - 42, 42, 42, 42, 41, 41, 41, 41,118,118,118,118, 53, 53, 53, 53, - 59, 59, 59, 59, 40, 40, 40, 40, 51, 51, 51, 51, 50, 50, 50, 50, - 135,135,135,135,106,106,106,106,104,104,104,104,161,161,161,161, + 219,219,219,219,220,220,220,220,221,221,221,221,222,222,222,222, + 223,223,223,223,224,224,224,224,225,225,225,225,226,226,226,226, + 227,227,227,227,228,229,229,229,230,230,230,230,229,229,229,229, + 231,106,106,106,232,106,106,106,106,233,109,109,234,234,234,234, + 235,235,235,235, 0,236, 86, 0, 0, 0,236, 7, 82,138, 7, 0, + 0, 0,237, 86,238,238,238,238,239,239,239,239,240,240,240,240, + 241,241,241,241,242,242,242,242,243,243,243,243,244,244,244,244, + 245,245,245,245,246, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 19, 0, 19, 0, 0, 0, + 0, 0, 26, 26, 1, 1, 1, 1, 9, 9, 9, 9, 0, 9, 9, 9, + 9, 9, 0, 9, 9, 0, 9, 0, 9, 9, 55, 55, 55, 55, 55, 55, + 6, 6, 6, 6, 6, 1, 1, 6, 6, 4, 4, 4, 4, 4, 4, 4, + 4, 14, 14, 14, 14, 14, 14, 14, 3, 3, 3, 3, 3, 0, 3, 3, + 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 1, 1, 1, 3, 3, + 1, 3, 3, 3, 37, 37, 37, 37, 38, 38, 38, 38, 64, 64, 64, 64, + 90, 90, 90, 90, 95, 95, 95, 95, 3, 3, 0, 3, 7, 7, 7, 7, + 7, 1, 1, 1, 1, 7, 7, 7, 0, 0, 7, 7, 5, 5, 5, 5, + 11, 11, 11, 11, 10, 10, 10, 10, 21, 21, 21, 21, 22, 22, 22, 22, + 23, 23, 23, 23, 16, 16, 16, 16, 20, 20, 20, 20, 36, 36, 36, 36, + 24, 24, 24, 24, 24, 24, 24, 0, 18, 18, 18, 18, 25, 25, 25, 25, + 25, 0, 0, 0, 0, 25, 25, 25, 33, 33, 33, 33, 8, 8, 8, 8, + 8, 8, 8, 0, 12, 12, 12, 12, 30, 30, 30, 30, 29, 29, 29, 29, + 28, 28, 28, 28, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 0, + 0, 0, 35, 35, 45, 45, 45, 45, 44, 44, 44, 44, 44, 0, 0, 0, + 43, 43, 43, 43, 46, 46, 46, 46, 31, 31, 31, 31, 32, 32, 0, 0, + 32, 0, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 52, 52, 52, 52, + 58, 58, 58, 58, 54, 54, 54, 54, 91, 91, 91, 91, 62, 62, 62, 62, + 76, 76, 76, 76, 93, 93, 93, 93, 70, 70, 70, 70, 73, 73, 73, 73, + 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, + 1, 1, 0, 0, 19, 19, 9, 9, 9, 9, 9, 6, 19, 9, 9, 9, + 9, 9, 19, 19, 9, 9, 9, 19, 6, 19, 19, 19, 19, 19, 19, 9, + 0, 0, 0, 19, 0, 0, 9, 0, 0, 0, 19, 19, 27, 27, 27, 27, + 56, 56, 56, 56, 61, 61, 61, 61, 13, 13, 13, 13, 0, 13, 0, 13, + 0, 13, 13, 13, 13, 13, 1, 1, 1, 1, 12, 12, 0, 15, 15, 15, + 15, 15, 15, 15, 15, 1, 1, 0, 0, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 0, 26, 26, 26, 26, 26, 12, 12, 12, 12, 12, 12, 0, + 39, 39, 39, 39, 86, 86, 86, 86, 77, 77, 77, 77, 79, 79, 79, 79, + 60, 60, 60, 60, 65, 65, 65, 65, 75, 75, 75, 75, 69, 69, 69, 69, + 69, 69, 0, 69, 74, 74, 74, 74, 84, 84, 84, 84, 84, 84, 84, 0, + 68, 68, 68, 68, 92, 92, 92, 92, 87, 87, 87, 87, 19, 9, 19, 19, + 19, 19, 0, 0, 2, 2, 2, 2, 19, 19, 19, 4, 3, 3, 0, 0, + 1, 1, 6, 6, 0, 0, 17, 17, 17, 17, 0, 0, 49, 49, 49, 49, + 0, 1, 1, 1, 71, 71, 71, 71, 67, 67, 67, 67, 42, 42, 42, 42, + 41, 41, 41, 41,118,118,118,118, 53, 53, 53, 53, 59, 59, 59, 59, + 40, 40, 40, 40, 51, 51, 51, 51, 50, 50, 50, 50,135,135,135,135, + 106,106,106,106,104,104,104,104,161,161,161,161,170,170,170,170, 110,110,110,110, 47, 47, 47, 47, 81, 81, 81, 81,120,120,120,120, 116,116,116,116,128,128,128,128, 66, 66, 66, 66, 72, 72, 72, 72, 98, 98, 98, 98, 97, 97, 97, 97, 57, 57, 57, 57, 88, 88, 88, 88, 117,117,117,117,112,112,112,112, 78, 78, 78, 78, 83, 83, 83, 83, 82, 82, 82, 82,122,122,122,122, 89, 89, 89, 89,130,130,130,130, - 144,144,144,144,156,156,156,156,156, 3, 3, 3,147,147,147,147, - 148,148,148,148,158,158,158,158,153,153,153,153,149,149,149,149, - 94, 94, 94, 94, 85, 85, 85, 85,101,101,101,101, 96, 96, 96, 96, - 111,111,111,111,100,100,100,100,100, 36, 36, 36,108,108,108,108, - 129,129,129,129,109,109,109,109,107,107,107,107,107,107,107, 1, - 137,137,137,137,124,124,124,124,123,123,123,123,114,114,114,114, - 102,102,102,102,126,126,126,126,142,142,142,142,125,125,125,125, - 154,154,154,154,150,150,150,150,141,141,141,141,140,140,140,140, - 121,121,121,121,133,133,133,133,134,134,134,134,138,138,138,138, - 143,143,143,143,145,145,145,145,163,163,163,163, 63, 63, 63, 63, - 157,157,157,157, 80, 80, 80, 80,127,127,127,127,115,115,115,115, - 159,159,159,159,103,103,103,103,119,119,119,119,146,146,146,146, - 99, 99, 99, 99,136,139, 13, 13,155,155,155,155,136,136,136,136, - 17, 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17,139,139,139,139, - 105,105,105,105, 0, 0, 0, 1, 0, 0, 1, 1,131,131,131,131, - 151,151,151,151,160,160,160,160,152,152,152,152,164,164,164,164, - 113,113,113,113,132,132,132,132, 15, 0, 0, 0, 0, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 9, 9, 9, 10, 9, 11, 12, 13, 9, 9, - 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 144,144,144,144,165,165,165,165,156,156,156,156,156,156, 3, 3, + 147,147,147,147,148,148,148,148,158,158,158,158,153,153,153,153, + 149,149,149,149, 94, 94, 94, 94, 85, 85, 85, 85,101,101,101,101, + 96, 96, 96, 96,111,111,111,111,100,100,100,100,100, 36, 36, 36, + 108,108,108,108,129,129,129,129,109,109,109,109,107,107,107,107, + 107,107,107, 1,171,171,171,171,137,137,137,137,124,124,124,124, + 123,123,123,123,114,114,114,114,102,102,102,102,126,126,126,126, + 142,142,142,142,125,125,125,125,154,154,154,154,150,150,150,150, + 141,141,141,141,140,140,140,140,121,121,121,121,169,169,169,169, + 133,133,133,133,134,134,134,134,138,138,138,138,143,143,143,143, + 145,145,145,145,163,163,163,163, 63, 63, 63, 63,157,157,157,157, + 80, 80, 80, 80,127,127,127,127,166,166,166,166,115,115,115,115, + 159,159,159,159,103,103,103,103,119,119,119,119,167,167,167,167, + 146,146,146,146, 99, 99, 99, 99,136,139, 13, 13,155,155,155,155, + 136,136,136,136, 17, 15, 15, 15, 17, 17, 15, 15, 15, 17, 17, 17, + 139,139,139,139,105,105,105,105, 0, 0, 0, 1, 0, 0, 1, 1, + 131,131,131,131,151,151,151,151,160,160,160,160,152,152,152,152, + 164,164,164,164,168,168,168,168,113,113,113,113,132,132,132,132, + 15, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, + 9, 10, 9, 11, 12, 13, 9, 9, 9, 14, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 16, 17, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 18, 19, 20, 9, 21, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 16, 17, 9, 9, 9, 9, 18, 9, 9, 9, 9, 9, 19, 20, 21, 9, + 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 23, 9, 9, 9, 9, 9, 24, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 25, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 22, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -5223,60 +5451,66 @@ _hb_ucd_u8[13386] = 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 23, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, - 0, 24, 25, 26, 27, 28, 29, 30, 0, 0, 31, 32, 0, 33, 0, 34, - 0, 35, 0, 0, 0, 0, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 0, 0, 24, 25, 26, 27, 28, 29, 30, + 0, 0, 31, 32, 0, 33, 0, 34, 0, 35, 0, 0, 0, 0, 36, 37, + 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 46, 47, + 0, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 52, 0, 0, 53, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 55, 0, + 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 45, - 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, 0, 0, 0, 48, 0, 49, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 59, - 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, + 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 0, 69, 70, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99,100,101,102,103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 0, 0, 0, - 0, 0, 0,105,106, 0,107, 0, 0, 0,108, 0,109, 0,110, 0, - 111,112,113, 0,114, 0, 0, 0,115, 0, 0, 0,116, 0, 0, 0, + 0, 0, 67, 68, 0, 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100, + 101,102,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0,105,106, 0,107, 0, + 0, 0,108, 0,109, 0,110, 0,111,112,113, 0,114, 0, 0, 0, + 115, 0, 0, 0,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118,119, - 120,121, 0,122,123,124,125,126, 0,127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,118,119,120,121, 0,122,123,124,125,126, + 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,129,130,131,132,133, - 134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149, - 150,151,152,153,154,155,156,157, 0, 0, 0,158,159,160,161, 0, + 0, 0,128,129,130,131,132,133,134,135,136,137,138,139,140,141, + 142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157, + 0, 0, 0,158,159,160,161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,162,163, 0, 0, 0, 0, 0, 0, 0,164, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,162, 0, + 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,165, 0, 0, 0, + 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 0, + 0, 0, 0, 0, 0, 0,167, 0, 0, 0,168,169, 0, 0,170, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 0, 0, + 0, 0, 0, 0, 0,173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,169, - 170, 0, 0, 0, 0,171,172, 0, 0, 0,173,174,175,176,177,178, - 179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194, - 195,196,197,198,199,200,201,202,203,204,205,206, 0, 0, 0, 0, + 0, 0, 0, 0,174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 0, 0, 0, 0, 0, 0, 0, 0,175, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0,176,177, 0, 0, 0, 0,178,179, 0, + 0, 0,180,181,182,183,184,185,186,187,188,189,190,191,192,193, + 194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209, + 210,211,212,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, + 3, 4, }; static const uint16_t -_hb_ucd_u16[4920] = +_hb_ucd_u16[5080] = { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, 13, 13, 13, 14, 15, 13, 13, 16, 17, 18, 19, 20, 21, 22, 13, 23, @@ -5303,82 +5537,85 @@ _hb_ucd_u16[4920] = 47, 47, 165, 166, 167, 47, 47, 47, 47, 47, 47, 47, 47, 168, 146, 146, 47, 169, 47, 47, 47, 170, 171, 172, 160, 160, 173, 174, 32, 32, 32, 32, 175, 47, 47, 176, 177, 122, 178, 179, 180, 47, 181, 61, 47, 47, 182, 183, - 47, 47, 184, 185, 186, 61, 47, 187, 11, 9, 9, 9, 66, 188, 189, 190, - 11, 11, 191, 27, 27, 27, 192, 193, 11, 194, 27, 27, 32, 32, 32, 32, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 195, 13, 13, 13, 13, 13, 13, - 196, 196, 196, 196, 196, 197, 196, 11, 198, 198, 198, 199, 200, 201, 201, 200, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 27, 211, 211, 211, 212, 213, 32, - 214, 215, 216, 217, 218, 145, 219, 219, 220, 221, 222, 146, 223, 224, 146, 225, - 226, 226, 226, 226, 226, 226, 226, 226, 227, 146, 228, 146, 146, 146, 146, 229, - 146, 230, 226, 231, 146, 232, 233, 146, 146, 146, 146, 146, 146, 146, 145, 145, - 145, 234, 146, 146, 146, 146, 235, 145, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 236, 237, 146, 146, 238, 146, 146, 146, 146, 146, 146, 239, 146, - 146, 146, 146, 146, 146, 146, 240, 241, 145, 242, 146, 146, 243, 226, 244, 226, - 245, 246, 226, 226, 226, 247, 226, 248, 146, 146, 146, 226, 249, 146, 146, 146, - 9, 9, 9, 11, 11, 11, 250, 251, 13, 13, 13, 13, 13, 13, 252, 253, - 11, 11, 11, 47, 47, 47, 254, 255, 47, 47, 47, 47, 47, 47, 32, 32, - 256, 257, 258, 259, 260, 261, 262, 262, 263, 264, 265, 266, 267, 47, 47, 47, - 47, 268, 148, 47, 47, 47, 47, 269, 47, 270, 47, 47, 146, 146, 146, 47, - 146, 146, 271, 146, 272, 273, 146, 146, 271, 146, 146, 273, 146, 146, 146, 146, - 47, 47, 47, 47, 146, 146, 146, 146, 47, 274, 47, 47, 47, 47, 47, 47, - 47, 146, 146, 146, 146, 47, 47, 187, 275, 47, 61, 47, 13, 13, 276, 277, - 13, 278, 47, 47, 47, 47, 279, 280, 31, 281, 282, 283, 13, 13, 13, 284, - 285, 286, 287, 288, 289, 290, 11, 291, 292, 47, 293, 294, 47, 47, 47, 295, - 296, 47, 47, 297, 298, 160, 32, 299, 61, 47, 300, 47, 301, 302, 47, 47, - 72, 47, 47, 303, 304, 305, 306, 61, 47, 47, 307, 308, 309, 310, 47, 311, - 47, 47, 47, 312, 58, 313, 314, 315, 47, 47, 47, 11, 11, 316, 317, 11, - 11, 11, 11, 11, 47, 47, 318, 160, 319, 319, 319, 319, 319, 319, 319, 319, - 320, 320, 320, 320, 320, 320, 320, 320, 11, 321, 322, 47, 47, 47, 47, 47, - 47, 47, 47, 323, 31, 324, 47, 47, 47, 47, 47, 325, 146, 47, 47, 47, - 47, 47, 47, 47, 326, 146, 146, 327, 32, 328, 32, 329, 330, 331, 332, 47, - 47, 47, 47, 47, 47, 47, 47, 333, 334, 2, 3, 4, 5, 335, 336, 337, - 47, 338, 47, 47, 47, 47, 339, 340, 341, 145, 145, 342, 219, 219, 219, 343, - 344, 146, 146, 146, 146, 146, 146, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 47, 47, 47, 47, 47, 47, 347, 145, 47, 47, 348, 47, 349, 47, 47, 60, - 47, 350, 47, 47, 47, 351, 219, 219, 9, 9, 147, 11, 11, 47, 47, 47, - 47, 47, 160, 9, 9, 147, 11, 11, 47, 47, 47, 47, 47, 47, 350, 9, - 9, 352, 11, 11, 11, 11, 11, 11, 27, 27, 27, 27, 27, 27, 27, 27, - 47, 47, 47, 47, 47, 353, 47, 354, 47, 47, 355, 145, 145, 145, 47, 356, - 47, 357, 47, 350, 66, 66, 66, 66, 47, 47, 47, 358, 145, 145, 145, 145, - 359, 47, 47, 360, 145, 66, 47, 361, 47, 362, 145, 145, 363, 47, 364, 66, - 47, 47, 47, 365, 47, 366, 47, 366, 47, 365, 144, 145, 145, 145, 145, 145, - 9, 9, 9, 9, 11, 11, 11, 367, 47, 47, 368, 160, 160, 160, 160, 160, - 145, 145, 145, 145, 145, 145, 145, 145, 47, 47, 369, 47, 47, 47, 47, 143, - 47, 362, 370, 47, 60, 371, 66, 47, 372, 66, 66, 47, 373, 145, 47, 47, - 374, 47, 47, 360, 375, 376, 377, 378, 180, 47, 47, 379, 380, 47, 47, 160, - 97, 47, 381, 382, 383, 47, 47, 384, 180, 47, 47, 385, 386, 387, 388, 145, - 47, 47, 389, 390, 359, 32, 32, 32, 47, 47, 365, 47, 47, 391, 172, 160, - 92, 47, 47, 113, 392, 393, 394, 32, 47, 47, 47, 395, 396, 397, 47, 47, - 47, 47, 47, 398, 399, 160, 160, 160, 47, 47, 400, 401, 402, 403, 32, 32, - 47, 47, 47, 404, 405, 160, 66, 66, 47, 47, 406, 407, 160, 160, 160, 160, - 47, 143, 408, 409, 47, 47, 47, 47, 47, 47, 389, 410, 66, 66, 66, 66, - 9, 9, 9, 9, 11, 11, 128, 411, 47, 47, 47, 412, 413, 160, 160, 160, - 47, 47, 47, 47, 47, 414, 415, 416, 417, 47, 47, 418, 419, 420, 47, 47, - 421, 422, 66, 47, 47, 47, 47, 47, 66, 66, 66, 66, 66, 66, 66, 66, - 47, 47, 400, 423, 424, 128, 145, 425, 47, 156, 426, 427, 32, 32, 32, 32, - 47, 47, 47, 359, 428, 160, 47, 47, 429, 430, 160, 160, 160, 160, 160, 160, - 47, 47, 47, 47, 47, 47, 47, 431, 432, 47, 47, 433, 434, 160, 160, 160, - 47, 47, 47, 47, 145, 435, 436, 437, 219, 219, 219, 219, 219, 219, 219, 66, - 47, 47, 47, 47, 47, 47, 47, 424, 47, 47, 47, 208, 438, 32, 32, 32, - 47, 47, 47, 47, 47, 47, 305, 47, 47, 47, 47, 47, 160, 47, 47, 439, - 47, 47, 47, 440, 441, 442, 443, 47, 9, 9, 9, 9, 9, 9, 11, 11, - 145, 444, 66, 66, 66, 66, 66, 66, 47, 47, 47, 47, 391, 445, 416, 416, - 446, 447, 27, 27, 27, 27, 448, 416, 47, 449, 208, 208, 208, 208, 208, 208, - 32, 32, 32, 32, 32, 146, 146, 146, 146, 146, 146, 146, 146, 146, 450, 451, - 452, 146, 453, 146, 146, 146, 146, 146, 146, 146, 146, 146, 454, 146, 146, 146, - 9, 455, 11, 456, 457, 11, 196, 9, 458, 459, 9, 460, 11, 9, 455, 11, - 456, 457, 11, 196, 9, 458, 459, 9, 460, 11, 9, 455, 11, 456, 457, 11, - 196, 9, 458, 459, 9, 460, 11, 9, 455, 11, 196, 9, 461, 462, 463, 464, - 11, 465, 9, 466, 467, 468, 469, 11, 470, 9, 471, 11, 472, 160, 160, 160, - 32, 32, 32, 473, 32, 32, 474, 475, 476, 477, 32, 32, 32, 32, 32, 32, - 478, 11, 11, 11, 11, 11, 11, 11, 32, 32, 32, 27, 27, 27, 27, 27, - 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 479, 480, 146, 146, 146, - 47, 47, 481, 32, 47, 47, 482, 483, 47, 47, 47, 47, 47, 47, 484, 160, - 47, 47, 47, 47, 355, 32, 32, 32, 9, 9, 458, 11, 485, 305, 66, 66, - 145, 145, 486, 487, 145, 145, 145, 145, 145, 145, 488, 145, 145, 145, 145, 145, - 47, 47, 47, 47, 47, 47, 47, 226, 489, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 490, 146, 146, 146, 146, 146, 146, 146, 160, - 208, 208, 208, 208, 208, 208, 208, 208, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 47, 184, 185, 186, 61, 47, 187, 188, 9, 9, 9, 66, 189, 190, 191, + 11, 11, 192, 27, 27, 27, 193, 194, 11, 195, 27, 27, 32, 32, 32, 32, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 196, 13, 13, 13, 13, 13, 13, + 197, 197, 197, 197, 197, 198, 197, 11, 199, 199, 199, 200, 201, 202, 202, 201, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 27, 212, 212, 212, 213, 214, 32, + 215, 216, 217, 218, 219, 145, 220, 220, 221, 222, 223, 146, 224, 225, 146, 226, + 227, 227, 227, 227, 227, 227, 227, 227, 228, 146, 229, 146, 146, 146, 146, 230, + 146, 231, 227, 232, 146, 233, 234, 146, 146, 146, 146, 146, 146, 146, 145, 145, + 145, 235, 146, 146, 146, 146, 236, 145, 146, 146, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 237, 238, 146, 146, 239, 146, 146, 146, 146, 146, 146, 240, 146, + 146, 146, 146, 146, 146, 146, 241, 242, 145, 243, 146, 146, 244, 227, 245, 227, + 246, 247, 227, 227, 227, 248, 227, 249, 146, 146, 146, 227, 250, 146, 146, 146, + 9, 9, 9, 11, 11, 11, 251, 252, 13, 13, 13, 13, 13, 13, 253, 254, + 11, 11, 11, 47, 47, 47, 255, 256, 47, 47, 47, 47, 47, 47, 32, 32, + 257, 258, 259, 260, 261, 262, 263, 263, 264, 265, 266, 267, 268, 47, 47, 47, + 47, 269, 148, 47, 47, 47, 47, 270, 47, 271, 47, 47, 146, 146, 146, 47, + 146, 146, 272, 146, 273, 274, 146, 146, 272, 146, 146, 274, 146, 146, 146, 146, + 47, 47, 47, 47, 146, 146, 146, 146, 47, 275, 47, 47, 47, 47, 47, 47, + 47, 146, 146, 146, 146, 47, 47, 187, 276, 47, 61, 47, 13, 13, 277, 278, + 13, 279, 47, 47, 47, 47, 280, 281, 31, 282, 283, 284, 13, 13, 13, 285, + 286, 287, 288, 289, 290, 291, 9, 292, 293, 47, 294, 295, 47, 47, 47, 296, + 297, 47, 47, 298, 299, 160, 32, 300, 61, 47, 301, 47, 302, 303, 47, 47, + 72, 47, 47, 304, 305, 306, 307, 61, 47, 47, 308, 309, 310, 311, 47, 312, + 47, 47, 47, 313, 58, 314, 315, 316, 47, 47, 47, 11, 11, 317, 318, 11, + 11, 11, 11, 11, 47, 47, 319, 160, 320, 320, 320, 320, 320, 320, 320, 320, + 321, 321, 321, 321, 321, 321, 321, 321, 11, 322, 323, 47, 47, 47, 47, 47, + 47, 47, 47, 324, 31, 325, 47, 47, 47, 47, 47, 326, 146, 47, 47, 47, + 47, 47, 47, 47, 327, 146, 146, 328, 32, 329, 32, 330, 331, 332, 333, 47, + 47, 47, 47, 47, 47, 47, 47, 334, 335, 2, 3, 4, 5, 336, 337, 338, + 47, 339, 47, 47, 47, 47, 340, 341, 342, 145, 145, 343, 220, 220, 220, 344, + 345, 146, 146, 146, 146, 146, 146, 346, 347, 347, 347, 347, 347, 347, 347, 347, + 47, 47, 47, 47, 47, 47, 348, 145, 47, 47, 349, 47, 350, 47, 47, 60, + 47, 351, 47, 47, 47, 352, 220, 220, 9, 9, 147, 11, 11, 47, 47, 47, + 47, 47, 160, 9, 9, 147, 11, 11, 47, 47, 47, 47, 47, 47, 351, 9, + 9, 353, 11, 11, 47, 47, 47, 47, 27, 27, 27, 27, 27, 27, 27, 27, + 47, 47, 47, 47, 47, 354, 47, 355, 47, 47, 356, 145, 145, 145, 47, 357, + 47, 358, 47, 351, 66, 66, 66, 66, 47, 47, 47, 359, 145, 145, 145, 145, + 360, 47, 47, 361, 145, 66, 47, 362, 47, 363, 145, 145, 364, 47, 365, 66, + 47, 47, 47, 366, 47, 367, 47, 367, 47, 366, 144, 145, 145, 145, 145, 145, + 9, 9, 9, 9, 11, 11, 11, 368, 47, 47, 369, 160, 370, 9, 371, 11, + 372, 227, 227, 227, 227, 227, 227, 227, 145, 145, 145, 145, 145, 145, 145, 145, + 47, 47, 373, 47, 47, 47, 47, 374, 47, 363, 375, 47, 60, 376, 66, 47, + 377, 66, 66, 47, 378, 145, 47, 47, 379, 47, 47, 361, 380, 381, 382, 383, + 180, 47, 47, 384, 385, 47, 47, 160, 97, 47, 386, 387, 388, 47, 47, 389, + 180, 47, 47, 390, 391, 392, 393, 145, 47, 47, 394, 395, 360, 32, 32, 32, + 47, 47, 366, 47, 47, 396, 172, 160, 92, 47, 47, 113, 397, 398, 399, 32, + 47, 47, 47, 400, 401, 402, 403, 32, 47, 47, 47, 404, 405, 406, 47, 47, + 47, 47, 47, 407, 408, 160, 160, 160, 47, 47, 409, 410, 411, 412, 32, 32, + 47, 47, 47, 413, 414, 160, 66, 66, 47, 47, 415, 416, 160, 160, 160, 160, + 47, 417, 418, 419, 47, 47, 47, 47, 47, 47, 394, 420, 66, 66, 66, 66, + 9, 9, 9, 9, 11, 11, 128, 421, 47, 47, 47, 422, 423, 160, 160, 160, + 47, 47, 47, 47, 47, 424, 425, 426, 427, 47, 47, 428, 429, 430, 47, 47, + 431, 432, 66, 47, 47, 47, 47, 47, 66, 66, 66, 66, 66, 66, 66, 66, + 47, 47, 47, 47, 47, 47, 433, 160, 47, 47, 409, 434, 433, 128, 145, 435, + 47, 156, 436, 437, 32, 32, 32, 32, 47, 47, 47, 360, 438, 160, 47, 47, + 439, 440, 160, 160, 160, 160, 160, 160, 47, 47, 47, 47, 47, 47, 47, 441, + 442, 47, 47, 443, 444, 445, 32, 32, 47, 47, 47, 47, 145, 446, 447, 448, + 220, 220, 220, 220, 220, 220, 220, 66, 47, 47, 47, 47, 47, 47, 47, 433, + 47, 47, 47, 209, 449, 32, 47, 47, 47, 450, 451, 160, 160, 160, 160, 160, + 47, 47, 47, 47, 47, 47, 306, 47, 47, 47, 47, 47, 160, 47, 47, 452, + 47, 47, 47, 453, 454, 455, 456, 47, 27, 27, 27, 27, 457, 47, 458, 160, + 9, 9, 9, 9, 9, 9, 11, 11, 145, 459, 66, 66, 66, 66, 66, 66, + 47, 47, 47, 47, 396, 460, 426, 426, 461, 462, 27, 27, 27, 27, 463, 426, + 47, 464, 209, 209, 209, 209, 209, 209, 146, 146, 146, 146, 146, 146, 146, 160, + 32, 32, 32, 32, 32, 146, 146, 146, 146, 146, 146, 146, 146, 146, 465, 466, + 467, 146, 468, 146, 146, 146, 146, 146, 146, 146, 146, 146, 469, 146, 146, 146, + 9, 470, 11, 471, 472, 11, 197, 9, 473, 474, 9, 475, 11, 9, 470, 11, + 471, 472, 11, 197, 9, 473, 474, 9, 475, 11, 9, 470, 11, 471, 472, 11, + 197, 9, 473, 474, 9, 475, 11, 9, 470, 11, 197, 9, 476, 477, 478, 479, + 11, 480, 9, 481, 482, 483, 484, 11, 485, 9, 486, 11, 487, 160, 160, 160, + 32, 32, 32, 488, 32, 32, 489, 490, 491, 492, 32, 32, 32, 32, 32, 32, + 493, 11, 11, 11, 11, 11, 11, 11, 32, 32, 32, 27, 27, 27, 27, 27, + 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 47, 494, 495, 146, 146, 146, + 47, 47, 450, 32, 47, 47, 374, 496, 47, 47, 47, 47, 47, 47, 497, 160, + 47, 47, 47, 47, 47, 47, 450, 498, 47, 47, 47, 47, 356, 32, 32, 32, + 9, 9, 473, 11, 499, 306, 66, 66, 145, 145, 500, 501, 145, 145, 145, 145, + 145, 145, 502, 145, 145, 145, 145, 145, 47, 47, 47, 47, 47, 47, 47, 227, + 503, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 504, + 209, 209, 209, 209, 209, 209, 209, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 940, 941, 942, 946, 948, 0, 962, 969, 970, 971, 976,1001,1002,1003,1008, 0,1033,1040,1041,1042,1043,1047, 0, 0,1080,1081,1082,1086,1110, 0, 0,1124,1125,1126,1127,1131,1133, 0,1147, @@ -5541,16 +5778,23 @@ _hb_ucd_u16[4920] = 0, 0,1602,1603,1934,1935,1574,1575,1576,1577,1579,1580,1581,1583,1584, 0, 1585,1587,1588,1589,1591, 0,1592, 0,1593,1594, 0,1595,1596, 0,1598,1599, 1600,1601,1604,1582,1578,1590,1597, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1936, 0,1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1939,1940, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1944,1943, 0,1945, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,1946,1947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,1949,1950,1951,1952,1953,1954,1955, 0, 0, 0, + 0,1936, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1937, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,1938, 0,1939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1941,1942, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1943,1944, 0, 0, 0, 0, 0, 0,1945, 0,1946, 0, 0, + 0, 0, 0, 0, 0, 0,1947, 0, 0,1948, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1950, 0,1949, + 1951, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1953,1952, 0,1954, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,1955,1956, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1957, 0, 0, 0, 0, 0, 0, 0, 0,1958,1961,1959,1965,1960,1962,1964, + 1963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1967,1966,1968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,1969,1970,1971,1972,1973,1974,1975, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0,1956,1957,1958,1960,1959,1961, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0,1976,1977,1978,1980,1979,1981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 104, 107, 826, 114, 118, 119, 121, 123, 124, 127, 125, 34, 830, 130, 131, 132, 137, 827, 35, 133, 139, 829, 142, 143, 112, 144, 145, 924, 151, 152, 37, 157, 158, 159, 160, 38, 165, 166, 169, @@ -5601,12 +5845,12 @@ _hb_ucd_i16[92] = static inline uint_fast8_t _hb_ucd_gc (unsigned u) { - return u<1114112u?_hb_ucd_u8[5096+(((_hb_ucd_u8[1168+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; + return u<1114112u?_hb_ucd_u8[5208+(((_hb_ucd_u8[1168+(((_hb_ucd_u16[((_hb_ucd_u8[544+(((_hb_ucd_u8[u>>1>>3>>3>>4])<<4)+((u>>1>>3>>3)&15u))])<<3)+((u>>1>>3)&7u)])<<3)+((u>>1)&7u))])<<1)+((u)&1u))]:2; } static inline uint_fast8_t _hb_ucd_ccc (unsigned u) { - return u<125259u?_hb_ucd_u8[7054+(((_hb_ucd_u8[6498+(((_hb_ucd_u8[6038+(((_hb_ucd_u8[5686+(((_hb_ucd_u8[5440+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; + return u<125259u?_hb_ucd_u8[7206+(((_hb_ucd_u8[6638+(((_hb_ucd_u8[6162+(((_hb_ucd_u8[5802+(((_hb_ucd_u8[5556+(u>>2>>2>>2>>3)])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:0; } static inline unsigned _hb_ucd_b4 (const uint8_t* a, unsigned i) @@ -5616,17 +5860,17 @@ _hb_ucd_b4 (const uint8_t* a, unsigned i) static inline int_fast16_t _hb_ucd_bmg (unsigned u) { - return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[7946+(((_hb_ucd_u8[7714+(((_hb_ucd_u8[7618+(((_hb_ucd_b4(7554+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0; + return u<65380u?_hb_ucd_i16[((_hb_ucd_u8[8098+(((_hb_ucd_u8[7866+(((_hb_ucd_u8[7770+(((_hb_ucd_b4(7706+_hb_ucd_u8,u>>1>>2>>3>>3))<<3)+((u>>1>>2>>3)&7u))])<<3)+((u>>1>>2)&7u))])<<2)+((u>>1)&3u))])<<1)+((u)&1u)]:0; } static inline uint_fast8_t _hb_ucd_sc (unsigned u) { - return u<918016u?_hb_ucd_u8[11244+(((_hb_ucd_u8[10280+(((_hb_ucd_u8[9292+(((_hb_ucd_u8[8612+(((_hb_ucd_u8[8308+(((_hb_ucd_u8[8194+(u>>2>>2>>2>>3>>4)])<<4)+((u>>2>>2>>2>>3)&15u))])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2; + return u<918016u?_hb_ucd_u8[11464+(((_hb_ucd_u8[10472+(((_hb_ucd_u8[9452+(((_hb_ucd_u8[8764+(((_hb_ucd_u8[8460+(((_hb_ucd_u8[8346+(u>>2>>2>>2>>3>>4)])<<4)+((u>>2>>2>>2>>3)&15u))])<<3)+((u>>2>>2>>2)&7u))])<<2)+((u>>2>>2)&3u))])<<2)+((u>>2)&3u))])<<2)+((u)&3u))]:2; } static inline uint_fast16_t _hb_ucd_dm (unsigned u) { - return u<195102u?_hb_ucd_u16[1608+(((_hb_ucd_u8[12586+(((_hb_ucd_u8[12204+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; + return u<195102u?_hb_ucd_u16[1656+(((_hb_ucd_u8[12834+(((_hb_ucd_u8[12452+(u>>4>>5)])<<5)+((u>>4)&31u))])<<4)+((u)&15u))]:0; } #endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh index e607e8ca829..4bc8d64c28f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode-emoji-table.hh @@ -7,13 +7,13 @@ * on file with this header: * * # emoji-data.txt - * # Date: 2023-02-01, 02:22:54 GMT - * # © 2023 Unicode®, Inc. + * # Date: 2024-05-01, 21:25:24 GMT + * # © 2024 Unicode®, Inc. * # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. - * # For terms of use, see https://www.unicode.org/terms_of_use.html + * # For terms of use and license, see https://www.unicode.org/terms_of_use.html * # * # Emoji Data for UTS #51 - * # Used with Emoji Version 15.1 and subsequent minor revisions (if any) + * # Used with Emoji Version 16.0 and subsequent minor revisions (if any) * # * # For documentation and usage, see https://www.unicode.org/reports/tr51 */ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh index 39aaee5baa7..2b1921c28f0 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-unicode.hh @@ -34,6 +34,9 @@ #include "hb.hh" +// Hack. See: https://github.com/harfbuzz/harfbuzz/pull/4529#discussion_r1769638033 +#define _HB_UNICODE_GENERAL_CATEGORY_VARIATION_SELECTOR ((hb_unicode_general_category_t) 30) + extern HB_INTERNAL const uint8_t _hb_modified_combining_class[256]; /* diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh index 0ceeb99f500..fe466fe1f8f 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb.hh @@ -84,6 +84,7 @@ #pragma GCC diagnostic error "-Wredundant-decls" #pragma GCC diagnostic error "-Wreorder" #pragma GCC diagnostic error "-Wsign-compare" +#pragma GCC diagnostic error "-Wstrict-flex-arrays" #pragma GCC diagnostic error "-Wstrict-prototypes" #pragma GCC diagnostic error "-Wstring-conversion" #pragma GCC diagnostic error "-Wswitch-enum" diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build index c6eae1d2c86..9ba5ce7163a 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/meson.build @@ -450,7 +450,13 @@ hb_headers = hb_base_headers harfbuzz_deps = [thread_dep, m_dep] + harfbuzz_extra_deps -libharfbuzz_link_language = 'c' +if get_option('with_libstdcxx') + chosen_linker = 'cpp' +else + # Use a C linker, not C++; Don't link to libstdc++ + chosen_linker = 'c' +endif +libharfbuzz_link_language = chosen_linker if conf.get('HAVE_FREETYPE', 0) == 1 hb_sources += hb_ft_sources @@ -551,8 +557,8 @@ hb_supported_features_h = configure_file(input: 'hb-features.h.in', configuration: hb_supported_features, install: false) -# Base and default-included sources and headers +# Base and default-included sources and headers gen_def = find_program('gen-def.py') gen_def_cmd = [gen_def, '@OUTPUT@', '@INPUT@'] if get_option('experimental_api') @@ -621,7 +627,7 @@ libharfbuzz_subset = library('harfbuzz-subset', hb_subset_sources, version: version, install: true, darwin_versions: darwin_versions, - link_language: 'c', + link_language: chosen_linker, ) custom_target('harfbuzz-subset.cc', @@ -661,7 +667,7 @@ if conf.get('HAVE_CAIRO', 0) == 1 version: version, install: true, darwin_versions: darwin_versions, - link_language: 'c', + link_language: chosen_linker, ) install_headers(hb_cairo_headers, subdir: meson.project_name()) @@ -780,7 +786,7 @@ if have_icu and not have_icu_builtin install: true, darwin_versions: darwin_versions, # ICU links to stdc++ anyway so the default linker is good - # link_language: 'c', + # link_language: chosen_linker, ) libharfbuzz_icu_dep = declare_dependency( @@ -947,7 +953,7 @@ if have_gobject version: version, install: true, darwin_versions: darwin_versions, - link_language: 'c', + link_language: chosen_linker, ) gir = find_program('g-ir-scanner', required: get_option('introspection')) @@ -1025,7 +1031,7 @@ if get_option('tests').enabled() if cpp.get_argument_syntax() != 'msvc' and not meson.is_cross_build() # ensure the local tools are usable dist_check_script += ['check-static-inits', 'check-symbols'] - if get_option('wasm').disabled() + if get_option('wasm').disabled() and not get_option('with_libstdcxx') dist_check_script += ['check-libstdc++'] endif endif diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt index cb07643bbb3..1bb4ed9501b 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicPositionalCategory-Additional.txt @@ -9,6 +9,7 @@ # Updated for Unicode 14.0 by Andrew Glass 2021-09-28 # Updated for Unicode 15.0 by Andrew Glass 2022-09-16 # Updated for Unicode 15.1 by Andrew Glass 2023-09-14 +# Updated for Unicode 16.0 by Andrew Glass 2024-09-11 # ================================================ # ================================================ @@ -27,7 +28,6 @@ A9BF ; Bottom # Mc JAVANESE CONSONANT SIGN CAKRA 11130 ; Bottom # Mn CHAKMA VOWEL SIGN OI 1BF2..1BF3 ; Bottom # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20 - # ================================================ # Indic_Positional_Category=Left @@ -80,9 +80,8 @@ AA35 ; Top # Mn CHAM CONSONANT SIGN 16F4F ; Bottom # Mn MIAO SIGN CONSONANT MODIFIER BAR 16F51..16F87 ; Bottom # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 16F8F..16F92 ; Bottom # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW -#HIEROGLYPHS defined here while ISC is being used as a proxy for dedicated Hieroglyph cluster -13440 ; Bottom # Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY -13447..13455 ; Bottom # Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED +1E5EE ; Bottom # Mn OL ONAL SIGN MU # Not really below, but need to override to fit into Universal model +1E5EF ; Bottom # Mn OL ONAL SIGN IKIR # ================================================ @@ -95,9 +94,11 @@ AA35 ; Top # Mn CHAM CONSONANT SIGN 07EB..07F3 ; Top # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07FD ; Top # Mn NKO DANTAYALAN # Not really top, but assigned here to allow ccc to control mark order 1885..1886 ; Top # Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA +1B6C ; Top # Mn BALINESE MUSICAL SYMBOL COMBINING ENDEP 1CF8..1CF9 ; Top # Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE 10D24..10D27 ; Top # Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI 10EAB..10EAC ; Top # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK +10D69..10D6D ; Top # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK 16B30..16B36 ; Top # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 1E130..1E136 ; Top # Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D 1E2AE ; Top # Mn TOTO SIGN RISING TONE diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt index 43326c12d18..309ed587568 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/ms-use/IndicSyllabicCategory-Additional.txt @@ -7,6 +7,7 @@ # Updated for Unicode 14.0 by Andrew Glass 2021-09-25 # Updated for Unicode 15.0 by Andrew Glass 2022-09-16 # Updated for Unicode 15.1 by Andrew Glass 2023-09-14 +# Updated for Unicode 16.0 by Andrew Glass 2024-09-11 # ================================================ # OVERRIDES TO ASSIGNED VALUES @@ -16,6 +17,7 @@ 193A ; Bindu # Mn LIMBU SIGN KEMPHRENG AA29 ; Bindu # Mn CHAM VOWEL SIGN AA 10A0D ; Bindu # Mn KHAROSHTHI SIGN DOUBLE RING BELOW +113CE ; Bindu # Mn TULU-TIGALARI SIGN VIRAMA # ================================================ @@ -30,6 +32,16 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA # ================================================ +# Indic_Syllabic_Category=Consonant_With_Stacker +11A3A ; Consonant_With_Stacker # Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + +# ================================================ + +# Indic_Syllabic_Category=Consonant_Subjoined +11A3B..11A3E ; Consonant_Subjoined # Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + +# ================================================ + # Indic_Syllabic_Category=Consonant_Final_Modifier 1C36 ; Consonant_Final_Modifier # Mn LEPCHA SIGN RAN @@ -43,6 +55,7 @@ AA29 ; Bindu # Mn CHAM VOWEL SIGN AA # Indic_Syllabic_Category=Nukta 0F71 ; Nukta # Mn TIBETAN VOWEL SIGN AA # Reassigned to get this before an above vowel, but see #22 1BF2..1BF3 ; Nukta # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN # see USE issue #20 +113CF ; Nukta # Mc TULU-TIGALARI SIGN LOOPED VIRAMA # ================================================ @@ -71,8 +84,9 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 1800 ; Consonant # Po MONGOLIAN BIRGA # Reassigned so that legacy Birga + MFVS sequences still work 1807 ; Consonant # Po MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER 180A ; Consonant # Po MONGOLIAN NIRUGU -1820..1878 ; Consonant # Lo [88] MONGOLIAN LETTER A..MONGOLIAN LETTER CHA WITH TWO DOTS +1820..1842 ; Consonant # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI 1843 ; Consonant # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN +1844..1878 ; Consonant # Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS 2D30..2D67 ; Consonant # Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO 2D6F ; Consonant # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK 10570..1057A ; Consonant # Lo [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA @@ -86,6 +100,10 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 10AC0..10AC7 ; Consonant # Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW 10AC9..10AE4 ; Consonant # Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW 10D00..10D23 ; Consonant # Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA +10D4A..10D4F ; Consonant # Lo [6] GARAY VOWEL SIGN A..GARAY SUKUN +10D50..10D65 ; Consonant # Lu [22] GARAY CAPITAL LETTER A..GARAY CAPITAL LETTER OLD NA +10D70..10D85 ; Consonant # Ll [22] GARAY SMALL LETTER A..GARAY SMALL LETTER OLD NA +10D6F ; Consonant # Lm GARAY REDUPLICATION MARK 10E80..10EA9 ; Consonant # Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET 10EB0..10EB1 ; Consonant # Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE 10F30..10F45 ; Consonant # Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN @@ -95,6 +113,7 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 16F00..16F4A ; Consonant # Lo [75] MIAO LETTER PA..MIAO LETTER RTE 16FE4 ; Consonant # Mn KHITAN SMALL SCRIPT FILLER # Avoids Mn pushing this into VOWEL class 18B00..18CD5 ; Consonant # Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 +18CFF ; Consonant # Lo KHITAN SMALL SCRIPT CHARACTER-18CFF 1BC00..1BC6A ; Consonant # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M 1BC70..1BC7C ; Consonant # Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK 1BC80..1BC88 ; Consonant # Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL @@ -107,6 +126,8 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 1E2C0..1E2EB ; Consonant # Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH 1E4D0..1E4EA ; Consonant # Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL 1E4EB ; Consonant # Lm NAG MUNDARI SIGN OJOD +1E5D0..1E5ED ; Consonant # Lo [30] OL ONAL LETTER O..OL ONAL LETTER EG +1E5F0 ; Consonant # Lo OL ONAL SIGN HODDOND 1E900..1E921 ; Consonant # Lu [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA 1E922..1E943 ; Consonant # Ll [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA 1E94B ; Consonant # Lm ADLAM NASALIZATION MARK @@ -149,6 +170,7 @@ FE00..FE0F ; Modifying_Letter # Mn [16] VARIATION SELECTOR-1..VARIATION SEL 1E140..1E149 ; Number # Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE 1E2F0..1E2F9 ; Number # Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE 1E4F0..1E4F9 ; Number # Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE +1E5F1..1E5FA ; Number # Nd [10] OL ONAL DIGIT ZERO..OL ONAL DIGIT NINE 1E950..1E959 ; Number # Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE # ================================================ @@ -173,18 +195,13 @@ FE00..FE0F ; Modifying_Letter # Mn [16] VARIATION SELECTOR-1..VARIATION SEL # ================================================ -# Indic_Syllabic_Category=Vowel_Independent -AAB1 ; Vowel_Independent # Lo TAI VIET VOWEL AA -AABA ; Vowel_Independent # Lo TAI VIET VOWEL UA -AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN - -# ================================================ - # Indic_Syllabic_Category=Vowel_Dependent 0B55 ; Vowel_Dependent # Mn ORIYA SIGN OVERLINE +10D69..10D6D ; Vowel_Dependent # Mn [5] GARAY VOWEL SIGN E..GARAY CONSONANT NASALIZATION MARK 10EAB..10EAC ; Vowel_Dependent # Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK 16F51..16F87 ; Vowel_Dependent # Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI 1E4EC..1E4EF ; Vowel_Dependent # Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH +1E5EE..1E5EF ; Vowel_Dependent # Mn [2] OL ONAL SIGN MU..OL ONAL SIGN IKIR # ================================================ @@ -207,6 +224,7 @@ AABD ; Vowel_Independent # Lo TAI VIET VOWEL AN 13000..1342F ; Hieroglyph # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D 1343C..1343F ; Hieroglyph # Cf [4] EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE..END WALLED ENCLOSURE 13441..13446 ; Hieroglyph # Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..HIEROGLYPH WIDE LOST SIGN +13460..143FA ; Hieroglyph # Lo [3995] EGYPTIAN HIEROGLYPH-13460..EGYPTIAN HIEROGLYPH-143FA # ================================================ diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc index 16a43381b0a..1e07d27d3b6 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-tuple-varstore.cc @@ -25,7 +25,7 @@ #include "hb-ot-var-cvar-table.hh" // cvar table data from Multi-ABC.ttf -const char cvar_data[] = "\x0\x1\x0\x0\x0\x2\x0\x14\x0\x51\xa0\x0\xc0\x0\x0\x54\xa0\x0\x40\x0\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\xff\x0\xfd\x1\x0\xff\x0\xfd\x1\x0\xdb\xdb\xe6\xe6\x82\x0\xfd\x84\x6\xfd\x0\x2\xe3\xe3\xec\xec\x82\x4\x1\xe3\xe3\xec\xec\x82\x0\x1\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\x1\x0\x5\xfd\x0\x1\x0\x5\xfd\x0\x61\x61\x44\x44\x82\x0\x5\x81\x9\x1\xff\x1\x7\xff\xfb\x49\x49\x35\x35\x82\x4\xff\x49\x49\x35\x35\x82\x0\xff"; +const unsigned char cvar_data[] = "\x0\x1\x0\x0\x0\x2\x0\x14\x0\x51\xa0\x0\xc0\x0\x0\x54\xa0\x0\x40\x0\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\xff\x0\xfd\x1\x0\xff\x0\xfd\x1\x0\xdb\xdb\xe6\xe6\x82\x0\xfd\x84\x6\xfd\x0\x2\xe3\xe3\xec\xec\x82\x4\x1\xe3\xe3\xec\xec\x82\x0\x1\x2a\x29\x17\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\x1\xd\x1\x0\x5\xfd\x0\x1\x0\x5\xfd\x0\x61\x61\x44\x44\x82\x0\x5\x81\x9\x1\xff\x1\x7\xff\xfb\x49\x49\x35\x35\x82\x4\xff\x49\x49\x35\x35\x82\x0\xff"; static void test_decompile_cvar () @@ -45,7 +45,7 @@ test_decompile_cvar () const OT::TupleVariationData* tuple_var_data = reinterpret_cast<const OT::TupleVariationData*> (cvar_data + 4); unsigned len = sizeof (cvar_data); - hb_bytes_t var_data_bytes{cvar_data+4, len - 4}; + hb_bytes_t var_data_bytes{(const char* ) cvar_data + 4, len - 4}; bool result = OT::TupleVariationData::get_tuple_iterator (var_data_bytes, axis_count, cvar_table, shared_indices, &iterator); assert (result); @@ -131,22 +131,22 @@ test_decompile_cvar () bool res = tuple_variations.compile_bytes (axes_index_map, axis_idx_tag_map, false); assert (res); assert (tuple_variations.tuple_vars[0].compiled_tuple_header.length == 6); - const char tuple_var_header_1[] = "\x0\x51\xa0\x0\xc0\x0"; + const unsigned char tuple_var_header_1[] = "\x0\x51\xa0\x0\xc0\x0"; for (unsigned i = 0; i < 6; i++) assert(tuple_variations.tuple_vars[0].compiled_tuple_header.arrayZ[i] == tuple_var_header_1[i]); assert (tuple_variations.tuple_vars[1].compiled_tuple_header.length == 6); - const char tuple_var_header_2[] = "\x0\x54\xa0\x0\x40\x0"; + const unsigned char tuple_var_header_2[] = "\x0\x54\xa0\x0\x40\x0"; for (unsigned i = 0; i < 6; i++) assert(tuple_variations.tuple_vars[1].compiled_tuple_header.arrayZ[i] == tuple_var_header_2[i]); assert (tuple_variations.tuple_vars[0].compiled_deltas.length == 37); assert (tuple_variations.tuple_vars[1].compiled_deltas.length == 40); - const char compiled_deltas_1[] = "\x0d\xff\x00\xfe\x01\x00\xff\x00\xfe\x01\x00\xed\xed\xf3\xf3\x82\x00\xfe\x84\x06\xfe\x00\x01\xf1\xf1\xf6\xf6\x82\x04\x01\xf1\xf1\xf6\xf6\x82\x00\x01"; + const unsigned char compiled_deltas_1[] = "\x0d\xff\x00\xfe\x01\x00\xff\x00\xfe\x01\x00\xed\xed\xf3\xf3\x82\x00\xfe\x84\x06\xfe\x00\x01\xf1\xf1\xf6\xf6\x82\x04\x01\xf1\xf1\xf6\xf6\x82\x00\x01"; for (unsigned i = 0; i < 37; i++) assert (tuple_variations.tuple_vars[0].compiled_deltas.arrayZ[i] == compiled_deltas_1[i]); - const char compiled_deltas_2[] = "\x0d\x01\x00\x04\xfe\x00\x01\x00\x04\xfe\x00\x44\x44\x30\x30\x82\x00\x04\x81\x09\x01\xff\x01\x05\xff\xfc\x33\x33\x25\x25\x82\x04\xff\x33\x33\x25\x25\x82\x00\xff"; + const unsigned char compiled_deltas_2[] = "\x0d\x01\x00\x04\xfe\x00\x01\x00\x04\xfe\x00\x44\x44\x30\x30\x82\x00\x04\x81\x09\x01\xff\x01\x05\xff\xfc\x33\x33\x25\x25\x82\x04\xff\x33\x33\x25\x25\x82\x00\xff"; for (unsigned i = 0; i < 40; i++) assert (tuple_variations.tuple_vars[1].compiled_deltas.arrayZ[i] == compiled_deltas_2[i]); } diff --git a/Build/source/libs/harfbuzz/version.ac b/Build/source/libs/harfbuzz/version.ac index a31a3e50ca1..fec6ff24cc8 100644 --- a/Build/source/libs/harfbuzz/version.ac +++ b/Build/source/libs/harfbuzz/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current harfbuzz version -m4_define([harfbuzz_version], [9.0.0]) +m4_define([harfbuzz_version], [10.0.1]) diff --git a/Build/source/libs/libpng/ChangeLog b/Build/source/libs/libpng/ChangeLog index ec0a78c51f8..4afa6005264 100644 --- a/Build/source/libs/libpng/ChangeLog +++ b/Build/source/libs/libpng/ChangeLog @@ -1,3 +1,8 @@ +2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import libpng-1.6.44. + * version.ac: Adjust. + 2024-04-07 Karl Berry <karl@freefriends.org> * configure.ac (AM_PROG_AR): include for cosmopolitan, from Luigi. diff --git a/Build/source/libs/libpng/README b/Build/source/libs/libpng/README index f4ae444eb22..515904aea4d 100644 --- a/Build/source/libs/libpng/README +++ b/Build/source/libs/libpng/README @@ -1,4 +1,4 @@ - Building libpng-1.6.43 as part of the TL tree + Building libpng-1.6.44 as part of the TL tree ============================================= This directory libs/libpng/ uses a proxy Makefile.am to build the libpng library @@ -14,4 +14,4 @@ copied to libs/libpng/configure.ac. ============================= 2009-07-23 Peter Breitenlohner <peb@mppmu.mpg.de> -2024-02-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp> +2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp> diff --git a/Build/source/libs/libpng/TLpatches/ChangeLog b/Build/source/libs/libpng/TLpatches/ChangeLog index 996e52a48fa..19136b0aa46 100644 --- a/Build/source/libs/libpng/TLpatches/ChangeLog +++ b/Build/source/libs/libpng/TLpatches/ChangeLog @@ -1,3 +1,7 @@ +2024-09-13 Akira Kakuto <kakuto@jcom.zaq.ne.jp> + + Import libpng-1.6.44. + 2024-02-24 Akira Kakuto <kakuto@jcom.zaq.ne.jp> Import libpng-1.6.43. diff --git a/Build/source/libs/libpng/TLpatches/TL-Changes b/Build/source/libs/libpng/TLpatches/TL-Changes index f22fe37d330..20db4d347a4 100644 --- a/Build/source/libs/libpng/TLpatches/TL-Changes +++ b/Build/source/libs/libpng/TLpatches/TL-Changes @@ -1,5 +1,5 @@ -Changes applied to the libpng-1.6.43/ tree as obtained from: - https://sourceforge.net/projects/libpng/files/libpng16/1.6.43/ +Changes applied to the libpng-1.6.44/ tree as obtained from: + https://sourceforge.net/projects/libpng/files/libpng16/1.6.44/ Copied: scripts/pnglibconf.h.prebuilt -> pnglibconf.h diff --git a/Build/source/libs/libpng/configure b/Build/source/libs/libpng/configure index 6cb5a5c20c9..fc988d5d8da 100755 --- a/Build/source/libs/libpng/configure +++ b/Build/source/libs/libpng/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.43. +# Generated by GNU Autoconf 2.72 for libpng (TeX Live) 1.6.44. # # Report bugs to <tex-k@tug.org>. # @@ -604,8 +604,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libpng (TeX Live)' PACKAGE_TARNAME='libpng--tex-live-' -PACKAGE_VERSION='1.6.43' -PACKAGE_STRING='libpng (TeX Live) 1.6.43' +PACKAGE_VERSION='1.6.44' +PACKAGE_STRING='libpng (TeX Live) 1.6.44' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1342,7 +1342,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures libpng (TeX Live) 1.6.43 to adapt to many kinds of systems. +'configure' configures libpng (TeX Live) 1.6.44 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1414,7 +1414,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.43:";; + short | recursive ) echo "Configuration of libpng (TeX Live) 1.6.44:";; esac cat <<\_ACEOF @@ -1534,7 +1534,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libpng (TeX Live) configure 1.6.43 +libpng (TeX Live) configure 1.6.44 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1861,7 +1861,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libpng (TeX Live) $as_me 1.6.43, which was +It was created by libpng (TeX Live) $as_me 1.6.44, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -4822,7 +4822,7 @@ fi # Define the identity of the package. PACKAGE='libpng--tex-live-' - VERSION='1.6.43' + VERSION='1.6.44' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -7996,7 +7996,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libpng (TeX Live) $as_me 1.6.43, which was +This file was extended by libpng (TeX Live) $as_me 1.6.44, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -8064,7 +8064,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -libpng (TeX Live) config.status 1.6.43 +libpng (TeX Live) config.status 1.6.44 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/libpng/libpng-src/ANNOUNCE b/Build/source/libs/libpng/libpng-src/ANNOUNCE index bc147adb78b..a2a7ac363a4 100644 --- a/Build/source/libs/libpng/libpng-src/ANNOUNCE +++ b/Build/source/libs/libpng/libpng-src/ANNOUNCE @@ -1,5 +1,5 @@ -libpng 1.6.43 - February 23, 2024 -================================= +libpng 1.6.44 - September 12, 2024 +================================== This is a public release of libpng, intended for use in production code. @@ -9,13 +9,13 @@ Files available for download Source files with LF line endings (for Unix/Linux): - * libpng-1.6.43.tar.xz (LZMA-compressed, recommended) - * libpng-1.6.43.tar.gz (deflate-compressed) + * libpng-1.6.44.tar.xz (LZMA-compressed, recommended) + * libpng-1.6.44.tar.gz (deflate-compressed) Source files with CRLF line endings (for Windows): - * lpng1643.7z (LZMA-compressed, recommended) - * lpng1643.zip (deflate-compressed) + * lpng1644.7z (LZMA-compressed, recommended) + * lpng1644.zip (deflate-compressed) Other information: @@ -25,36 +25,29 @@ Other information: * TRADEMARK.md -Changes from version 1.6.42 to version 1.6.43 +Changes from version 1.6.43 to version 1.6.44 --------------------------------------------- - * Fixed the row width check in png_check_IHDR(). - This corrected a bug that was specific to the 16-bit platforms, - and removed a spurious compiler warning from the 64-bit builds. - (Reported by Jacek Caban; fixed by John Bowler) - * Added eXIf chunk support to the push-mode reader in pngpread.c. - (Contributed by Chris Blume) - * Added contrib/pngexif for the benefit of the users who would like - to inspect the content of eXIf chunks. - * Added contrib/conftest/basic.dfa, a basic build-time configuration. + * Hardened calculations in chroma handling to prevent overflows, and + relaxed a constraint in cHRM validation to accomodate the standard + ACES AP1 set of color primaries. (Contributed by John Bowler) - * Fixed a preprocessor condition in pngread.c that broke build-time - configurations like contrib/conftest/pngcp.dfa. - (Contributed by John Bowler) - * Added CMake build support for LoongArch LSX. - (Contributed by GuXiWei) - * Fixed a CMake build error that occurred under a peculiar state of the - dependency tree. This was a regression introduced in libpng-1.6.41. - (Contributed by Dan Rosser) - * Marked the installed libpng headers as system headers in CMake. - (Contributed by Benjamin Buch) - * Updated the build support for RISCOS. - (Contributed by Cameron Cawley) - * Updated the makefiles to allow cross-platform builds to initialize - conventional make variables like AR and ARFLAGS. - * Added various improvements to the CI scripts in areas like version - consistency verification and text linting. - * Added version consistency verification to pngtest.c also. + * Removed the ASM implementation of ARM Neon optimizations and updated + the build accordingly. Only the remaining C implementation shall be + used from now on, thus ensuring the support of the PAC/BTI security + features on ARM64. + (Contributed by Ross Burton and John Bowler) + * Fixed the pickup of the PNG_HARDWARE_OPTIMIZATIONS option in the + CMake build on FreeBSD/amd64. This is an important performance fix + on this platform. + * Applied various fixes and improvements to the CMake build. + (Contributed by Eric Riff, Benjamin Buch and Erik Scholz) + * Added fuzzing targets for the simplified read API. + (Contributed by Mikhail Khachayants) + * Fixed a build error involving pngtest.c under a custom config. + This was a regression introduced in a code cleanup in libpng-1.6.43. + (Contributed by Ben Wagner) + * Fixed and improved the config files for AppVeyor CI and Travis CI. Send comments/corrections/commendations to png-mng-implement at lists.sf.net. diff --git a/Build/source/libs/libpng/libpng-src/CHANGES b/Build/source/libs/libpng/libpng-src/CHANGES index 441b57ecf1a..724ccca2d65 100644 --- a/Build/source/libs/libpng/libpng-src/CHANGES +++ b/Build/source/libs/libpng/libpng-src/CHANGES @@ -6196,6 +6196,28 @@ Version 1.6.43 [February 23, 2024] consistency verification and text linting. Added version consistency verification to pngtest.c also. +Version 1.6.44 [September 12, 2024] + Hardened calculations in chroma handling to prevent overflows, and + relaxed a constraint in cHRM validation to accomodate the standard + ACES AP1 set of color primaries. + (Contributed by John Bowler) + Removed the ASM implementation of ARM Neon optimizations and updated + the build accordingly. Only the remaining C implementation shall be + used from now on, thus ensuring the support of the PAC/BTI security + features on ARM64. + (Contributed by Ross Burton and John Bowler) + Fixed the pickup of the PNG_HARDWARE_OPTIMIZATIONS option in the + CMake build on FreeBSD/amd64. This is an important performance fix + on this platform. + Applied various fixes and improvements to the CMake build. + (Contributed by Eric Riff, Benjamin Buch and Erik Scholz) + Added fuzzing targets for the simplified read API. + (Contributed by Mikhail Khachayants) + Fixed a build error involving pngtest.c under a custom config. + This was a regression introduced in a code cleanup in libpng-1.6.43. + (Contributed by Ben Wagner) + Fixed and improved the config files for AppVeyor CI and Travis CI. + Send comments/corrections/commendations to png-mng-implement at lists.sf.net. Subscription is required; visit https://lists.sourceforge.net/lists/listinfo/png-mng-implement diff --git a/Build/source/libs/libpng/libpng-src/CMakeLists.txt b/Build/source/libs/libpng/libpng-src/CMakeLists.txt index ad3f2427dc1..16cc2617df4 100644 --- a/Build/source/libs/libpng/libpng-src/CMakeLists.txt +++ b/Build/source/libs/libpng/libpng-src/CMakeLists.txt @@ -19,7 +19,7 @@ cmake_minimum_required(VERSION 3.6) set(PNGLIB_MAJOR 1) set(PNGLIB_MINOR 6) -set(PNGLIB_REVISION 43) +set(PNGLIB_REVISION 44) set(PNGLIB_SUBREVISION 0) #set(PNGLIB_SUBREVISION "git") set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_REVISION}) @@ -90,6 +90,21 @@ endif() option(PNG_DEBUG "Enable debug output" OFF) option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" ON) +# Initialize and show the target architecture variable PNG_TARGET_ARCHITECTURE. +# +# NOTE: +# On macOS, CMake sets CMAKE_SYSTEM_PROCESSOR to either "x86_64" or "arm64", +# based upon the OS architecture, not the target architecture. As such, we need +# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to +# enable. Note that this will fail if you attempt to build a universal binary +# in a single CMake invocation. +if (APPLE AND CMAKE_OSX_ARCHITECTURES) + string(TOLOWER "${CMAKE_OSX_ARCHITECTURES}" PNG_TARGET_ARCHITECTURE) +else() + string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" PNG_TARGET_ARCHITECTURE) +endif() +message(STATUS "Building for target architecture: ${PNG_TARGET_ARCHITECTURE}") + # Allow the users to specify a custom location of zlib. # This option is deprecated, and no longer needed with CMake 3.12 and newer. # Under the CMake policy CMP0074, if zlib is being built alongside libpng as a @@ -119,22 +134,11 @@ else() # libm is not available or not needed. endif() -# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS, -# based upon the OS architecture, not the target architecture. As such, we need -# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to -# enable. Note that this will fail if you attempt to build a universal binary in -# a single CMake invocation. -if (APPLE AND CMAKE_OSX_ARCHITECTURES) - set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES}) -else() - set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR}) -endif() - if(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for ARM. -if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)") - if(TARGET_ARCH MATCHES "^(ARM64|arm64|aarch64)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") + if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm64|aarch64)") set(PNG_ARM_NEON_POSSIBLE_VALUES on off) set(PNG_ARM_NEON "on" CACHE STRING "Enable ARM NEON optimizations: on|off; on is default") @@ -153,9 +157,6 @@ if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)") arm/arm_init.c arm/filter_neon_intrinsics.c arm/palette_neon_intrinsics.c) - if(NOT MSVC) - list(APPEND libpng_arm_sources arm/filter_neon.S) - endif() if(PNG_ARM_NEON STREQUAL "on") add_definitions(-DPNG_ARM_NEON_OPT=2) elseif(PNG_ARM_NEON STREQUAL "check") @@ -167,7 +168,7 @@ if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)") endif() # Set definitions and sources for PowerPC. -if(TARGET_ARCH MATCHES "^(powerpc|ppc64)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations: on|off; on is default") @@ -189,7 +190,7 @@ if(TARGET_ARCH MATCHES "^(powerpc|ppc64)") endif() # Set definitions and sources for Intel. -if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations: on|off; on is default") @@ -211,7 +212,7 @@ if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)") endif() # Set definitions and sources for MIPS. -if(TARGET_ARCH MATCHES "^(mipsel|mips64el)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations: on|off; on is default") @@ -258,7 +259,7 @@ if(TARGET_ARCH MATCHES "^(mipsel|mips64el)") endif() # Set definitions and sources for LoongArch. -if(TARGET_ARCH MATCHES "^(loongarch)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") include(CheckCCompilerFlag) set(PNG_LOONGARCH_LSX_POSSIBLE_VALUES on off) set(PNG_LOONGARCH_LSX "on" @@ -289,27 +290,27 @@ endif() else(PNG_HARDWARE_OPTIMIZATIONS) # Set definitions and sources for ARM. -if(TARGET_ARCH MATCHES "^(ARM|arm|aarch)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(arm|aarch)") add_definitions(-DPNG_ARM_NEON_OPT=0) endif() # Set definitions and sources for PowerPC. -if(TARGET_ARCH MATCHES "^(powerpc|ppc64)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(powerpc|ppc64)") add_definitions(-DPNG_POWERPC_VSX_OPT=0) endif() # Set definitions and sources for Intel. -if(TARGET_ARCH MATCHES "^(i[3-6]86|x86|AMD64)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(i[3-6]86|x86|amd64)") add_definitions(-DPNG_INTEL_SSE_OPT=0) endif() # Set definitions and sources for MIPS. -if(TARGET_ARCH MATCHES "^(mipsel|mips64el)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(mipsel|mips64el)") add_definitions(-DPNG_MIPS_MSA_OPT=0) endif() # Set definitions and sources for LoongArch. -if(TARGET_ARCH MATCHES "^(loongarch)") +if(PNG_TARGET_ARCHITECTURE MATCHES "^(loongarch)") add_definitions(-DPNG_LOONGARCH_LSX_OPT=0) endif() @@ -362,8 +363,6 @@ else() message(STATUS "Could not find an AWK-compatible program") endif() -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - if(NOT AWK OR ANDROID OR IOS) # No awk available to generate sources; use pre-built pnglibconf.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt @@ -714,6 +713,8 @@ if(PNG_SHARED) endif() target_include_directories(png_shared PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) + target_include_directories(png_shared + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) target_include_directories(png_shared SYSTEM INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>) target_link_libraries(png_shared PUBLIC ZLIB::ZLIB ${M_LIBRARY}) @@ -728,6 +729,8 @@ if(PNG_STATIC) DEBUG_POSTFIX "${PNG_DEBUG_POSTFIX}") target_include_directories(png_static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) + target_include_directories(png_static + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) target_include_directories(png_static SYSTEM INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>) target_link_libraries(png_static PUBLIC ZLIB::ZLIB ${M_LIBRARY}) @@ -757,6 +760,8 @@ if(PNG_FRAMEWORK) set_target_properties(png_framework PROPERTIES DEFINE_SYMBOL "") target_include_directories(png_framework PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>) + target_include_directories(png_framework + PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>) target_include_directories(png_framework SYSTEM INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libpng${PNGLIB_ABI_VERSION}>) target_link_libraries(png_framework PUBLIC ZLIB::ZLIB ${M_LIBRARY}) @@ -1128,6 +1133,30 @@ if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL) FILE libpng${PNGLIB_ABI_VERSION}.cmake) endif() +# Create a CMake Config File that can be used via find_package(PNG CONFIG) +if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL) + install(TARGETS ${PNG_LIBRARY_TARGETS} + EXPORT PNGTargets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + include(CMakePackageConfigHelpers) + write_basic_package_version_file(PNGConfigVersion.cmake + VERSION ${PNGLIB_VERSION} + COMPATIBILITY SameMinorVersion) + + install(EXPORT PNGTargets + FILE PNGTargets.cmake + NAMESPACE PNG:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG) + + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG) +endif() + # TODO: Create MSVC import lib for MinGW-compiled shared lib. # pexports libpng.dll > libpng.def # lib /def:libpng.def /machine:x86 diff --git a/Build/source/libs/libpng/libpng-src/Makefile.am b/Build/source/libs/libpng/libpng-src/Makefile.am index 1f06c703a18..eed986c2b8d 100644 --- a/Build/source/libs/libpng/libpng-src/Makefile.am +++ b/Build/source/libs/libpng/libpng-src/Makefile.am @@ -108,7 +108,7 @@ libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES = png.c pngerror.c\ if PNG_ARM_NEON libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@_la_SOURCES += arm/arm_init.c\ - arm/filter_neon.S arm/filter_neon_intrinsics.c \ + arm/filter_neon_intrinsics.c \ arm/palette_neon_intrinsics.c endif diff --git a/Build/source/libs/libpng/libpng-src/README b/Build/source/libs/libpng/libpng-src/README index a6ca3ae9f94..3af606889b9 100644 --- a/Build/source/libs/libpng/libpng-src/README +++ b/Build/source/libs/libpng/libpng-src/README @@ -1,4 +1,4 @@ -README for libpng version 1.6.43 +README for libpng version 1.6.44 ================================ See the note about version numbers near the top of `png.h`. diff --git a/Build/source/libs/libpng/libpng-src/arm/filter_neon.S b/Build/source/libs/libpng/libpng-src/arm/filter_neon.S index 2308aad13e6..fc3c7a29645 100644 --- a/Build/source/libs/libpng/libpng-src/arm/filter_neon.S +++ b/Build/source/libs/libpng/libpng-src/arm/filter_neon.S @@ -1,253 +1,61 @@ -/* filter_neon.S - NEON optimised filter functions +/* filter_neon.S - placeholder file * - * Copyright (c) 2018 Cosmin Truta - * Copyright (c) 2014,2017 Glenn Randers-Pehrson - * Written by Mans Rullgard, 2011. + * Copyright (c) 2024 Cosmin Truta * * This code is released under the libpng license. * For conditions of distribution and use, see the disclaimer * and license in png.h */ +/* IMPORTANT NOTE: + * + * Historically, the hand-coded assembler implementation of Neon optimizations + * in this module had not been in sync with the intrinsics-based implementation + * in filter_neon_intrinsics.c and palette_neon_intrinsics.c, at least since + * the introduction of riffled palette optimizations. Moreover, the assembler + * code used to work on 32-bit ARM only, and it caused problems, even if empty, + * on 64-bit ARM. + * + * All references to this module from our internal build scripts and projects + * have been removed. + * + * For the external projects that might still expect this module to be present, + * we leave this stub in place, for the remaining lifetime of libpng-1.6.x. + * Everything should continue to function normally, as long as there are no + * deliberate attempts to use the old hand-made assembler code. A build error + * will be raised otherwise. + */ + /* This is required to get the symbol renames, which are #defines, and the * definitions (or not) of PNG_ARM_NEON_OPT and PNG_ARM_NEON_IMPLEMENTATION. */ #define PNG_VERSION_INFO_ONLY #include "../pngpriv.h" -#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__) -.section .note.GNU-stack,"",%progbits /* mark stack as non-executable */ -#endif - #ifdef PNG_READ_SUPPORTED - -/* Assembler NEON support - only works for 32-bit ARM (i.e. it does not work for - * ARM64). The code in arm/filter_neon_intrinsics.c supports ARM64, however it - * only works if -mfpu=neon is specified on the GCC command line. See pngpriv.h - * for the logic which sets PNG_USE_ARM_NEON_ASM: - */ #if PNG_ARM_NEON_IMPLEMENTATION == 2 /* hand-coded assembler */ - #if PNG_ARM_NEON_OPT > 0 -#ifdef __ELF__ -# define ELF +#if defined(__clang__) +#define GNUC_VERSION 0 /* not gcc, although it might pretend to be */ +#elif defined(__GNUC__) +#define GNUC_MAJOR (__GNUC__ + 0) +#define GNUC_MINOR (__GNUC_MINOR__ + 0) +#define GNUC_PATCHLEVEL (__GNUC_PATCHLEVEL__ + 0) +#define GNUC_VERSION (GNUC_MAJOR * 10000 + GNUC_MINOR * 100 + GNUC_PATCHLEVEL) #else -# define ELF @ +#define GNUC_VERSION 0 /* not gcc */ #endif - .arch armv7-a - .fpu neon - -.macro func name, export=0 - .macro endfunc -ELF .size \name, . - \name - .endfunc - .purgem endfunc - .endm - .text - - /* Explicitly specifying alignment here because some versions of - * GAS don't align code correctly. This is harmless in correctly - * written versions of GAS. - */ - .align 2 - - .if \export - .global \name - .endif -ELF .type \name, STT_FUNC - .func \name -\name: -.endm - -func png_read_filter_row_sub4_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vadd.u8 d0, d3, d4 - vadd.u8 d1, d0, d5 - vadd.u8 d2, d1, d6 - vadd.u8 d3, d2, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_sub3_neon, export=1 - ldr r3, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r2, #3 - mov r12, #12 - vld1.8 {q11}, [r0], r12 -1: - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d3, d22 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d0, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], r12 - vst1.32 {d0[0]}, [r1,:32], r2 - vadd.u8 d2, d1, d6 - vst1.32 {d1[0]}, [r1], r2 - vadd.u8 d3, d2, d7 - vst1.32 {d2[0]}, [r1], r2 - vst1.32 {d3[0]}, [r1], r2 - subs r3, r3, #12 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_up_neon, export=1 - ldr r3, [r0, #4] @ rowbytes -1: - vld1.8 {q0}, [r1,:128] - vld1.8 {q1}, [r2,:128]! - vadd.u8 q0, q0, q1 - vst1.8 {q0}, [r1,:128]! - subs r3, r3, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - vhadd.u8 d0, d3, d16 - vadd.u8 d0, d0, d4 - vhadd.u8 d1, d0, d17 - vadd.u8 d1, d1, d5 - vhadd.u8 d2, d1, d18 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_avg3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - vext.8 d5, d22, d23, #3 - vhadd.u8 d0, d3, d20 - vext.8 d17, d20, d21, #3 - vadd.u8 d0, d0, d22 - vext.8 d6, d22, d23, #6 - vhadd.u8 d1, d0, d17 - vext.8 d18, d20, d21, #6 - vadd.u8 d1, d1, d5 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d0[0]}, [r1,:32], r4 - vhadd.u8 d2, d1, d18 - vst1.32 {d1[0]}, [r1], r4 - vext.8 d19, d21, d21, #1 - vadd.u8 d2, d2, d6 - vhadd.u8 d3, d2, d19 - vst1.32 {d2[0]}, [r1], r4 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b - - pop {r4,pc} -endfunc - -.macro paeth rx, ra, rb, rc - vaddl.u8 q12, \ra, \rb @ a + b - vaddl.u8 q15, \rc, \rc @ 2*c - vabdl.u8 q13, \rb, \rc @ pa - vabdl.u8 q14, \ra, \rc @ pb - vabd.u16 q15, q12, q15 @ pc - vcle.u16 q12, q13, q14 @ pa <= pb - vcle.u16 q13, q13, q15 @ pa <= pc - vcle.u16 q14, q14, q15 @ pb <= pc - vand q12, q12, q13 @ pa <= pb && pa <= pc - vmovn.u16 d28, q14 - vmovn.u16 \rx, q12 - vbsl d28, \rb, \rc - vbsl \rx, \ra, d28 -.endm - -func png_read_filter_row_paeth4_neon, export=1 - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d20, #0 -1: - vld4.32 {d4[],d5[],d6[],d7[]}, [r1,:128] - vld4.32 {d16[],d17[],d18[],d19[]},[r2,:128]! - paeth d0, d3, d16, d20 - vadd.u8 d0, d0, d4 - paeth d1, d0, d17, d16 - vadd.u8 d1, d1, d5 - paeth d2, d1, d18, d17 - vadd.u8 d2, d2, d6 - paeth d3, d2, d19, d18 - vmov d20, d19 - vadd.u8 d3, d3, d7 - vst4.32 {d0[0],d1[0],d2[0],d3[0]},[r1,:128]! - subs r12, r12, #16 - bgt 1b - - bx lr -endfunc - -func png_read_filter_row_paeth3_neon, export=1 - push {r4,lr} - ldr r12, [r0, #4] @ rowbytes - vmov.i8 d3, #0 - vmov.i8 d4, #0 - mov r0, r1 - mov r4, #3 - mov lr, #12 - vld1.8 {q11}, [r0], lr -1: - vld1.8 {q10}, [r2], lr - paeth d0, d3, d20, d4 - vext.8 d5, d22, d23, #3 - vadd.u8 d0, d0, d22 - vext.8 d17, d20, d21, #3 - paeth d1, d0, d17, d20 - vst1.32 {d0[0]}, [r1,:32], r4 - vext.8 d6, d22, d23, #6 - vadd.u8 d1, d1, d5 - vext.8 d18, d20, d21, #6 - paeth d2, d1, d18, d17 - vext.8 d7, d23, d23, #1 - vld1.8 {q11}, [r0], lr - vst1.32 {d1[0]}, [r1], r4 - vadd.u8 d2, d2, d6 - vext.8 d19, d21, d21, #1 - paeth d3, d2, d19, d18 - vst1.32 {d2[0]}, [r1], r4 - vmov d4, d19 - vadd.u8 d3, d3, d7 - vst1.32 {d3[0]}, [r1], r4 - subs r12, r12, #12 - bgt 1b +#if (GNUC_VERSION > 0) && (GNUC_VERSION < 40300) +#error "PNG_ARM_NEON is not supported with gcc versions earlier than 4.3.0" +#elif GNUC_VERSION == 40504 +#error "PNG_ARM_NEON is not supported with gcc version 4.5.4" +#else +#error "Please use 'arm/*_neon_intrinsics.c' for PNG_ARM_NEON support" +#endif - pop {r4,pc} -endfunc #endif /* PNG_ARM_NEON_OPT > 0 */ -#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 (assembler) */ +#endif /* PNG_ARM_NEON_IMPLEMENTATION == 2 */ #endif /* READ */ diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh new file mode 100644 index 00000000000..fef0ef138fa --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.aarch64-linux-android.sh @@ -0,0 +1,16 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=aarch64 +export CI_TARGET_ARCHVER=aarch64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=android +export CI_TARGET_ABIVER=android29 + +export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh new file mode 100644 index 00000000000..c27bd121ebc --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.armv7a-linux-androideabi.sh @@ -0,0 +1,16 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=arm +export CI_TARGET_ARCHVER=armv7a +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=androideabi +export CI_TARGET_ABIVER=androideabi29 + +export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh new file mode 100644 index 00000000000..88e36908241 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.i686-linux-android.sh @@ -0,0 +1,16 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_ARCHVER=i686 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=android +export CI_TARGET_ABIVER=android29 + +export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh new file mode 100644 index 00000000000..87460c88853 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/android/ci_env.x86_64-linux-android.sh @@ -0,0 +1,16 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_ARCHVER=x86_64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=android +export CI_TARGET_ABIVER=android29 + +export CI_CC="$CI_TARGET_ARCHVER-$CI_TARGET_SYSTEM-$CI_TARGET_ABIVER-clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh new file mode 100644 index 00000000000..66b99997b9a --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.i686-pc-cygwin.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_SYSTEM=cygwin + +export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc" +export CI_AR="$CI_CC-ar" +export CI_RANLIB="$CI_CC-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=CYGWIN + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh new file mode 100644 index 00000000000..78f8c25ff8d --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/cygwin/ci_env.x86_64-pc-cygwin.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=cygwin + +export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc" +export CI_AR="$CI_CC-ar" +export CI_RANLIB="$CI_CC-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=CYGWIN + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh new file mode 100644 index 00000000000..c54d8c7605f --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.arm64-apple-darwin.sh @@ -0,0 +1,15 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=arm64 +export CI_TARGET_SYSTEM=darwin + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Darwin + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH + -DCMAKE_OSX_ARCHITECTURES=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh new file mode 100644 index 00000000000..ee87711d547 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/darwin/ci_env.x86_64-apple-darwin.sh @@ -0,0 +1,15 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=darwin + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Darwin + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH + -DCMAKE_OSX_ARCHITECTURES=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh new file mode 100644 index 00000000000..42235de7d0d --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.aarch64-unknown-freebsd.sh @@ -0,0 +1,14 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=aarch64 +export CI_TARGET_SYSTEM=freebsd + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=FreeBSD + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh new file mode 100644 index 00000000000..3d188f8da19 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.i686-unknown-freebsd.sh @@ -0,0 +1,14 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_SYSTEM=freebsd + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=FreeBSD + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh new file mode 100644 index 00000000000..0a02cde4f60 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.riscv64-unknown-freebsd.sh @@ -0,0 +1,14 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=riscv64 +export CI_TARGET_SYSTEM=freebsd + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=FreeBSD + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh new file mode 100644 index 00000000000..c77ace53bae --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/freebsd/ci_env.x86_64-unknown-freebsd.sh @@ -0,0 +1,14 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=freebsd + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=FreeBSD + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh new file mode 100644 index 00000000000..cb85bc6d8bd --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.aarch64-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=aarch64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh new file mode 100644 index 00000000000..45504dfcd58 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabi.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=arm +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnueabi + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh new file mode 100644 index 00000000000..3eb9d1892d2 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.arm-linux-gnueabihf.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=arm +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnueabihf + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh new file mode 100644 index 00000000000..a5efd9f7fec --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.i686-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh new file mode 100644 index 00000000000..532c93c04c7 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mips +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh new file mode 100644 index 00000000000..348d2b80065 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64-linux-gnuabi64.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mips64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnuabi64 + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh new file mode 100644 index 00000000000..e264913d8e2 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mips64el-linux-gnuabi64.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mips64el +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnuabi64 + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh new file mode 100644 index 00000000000..f99050f10e1 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsel-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mipsel +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh new file mode 100644 index 00000000000..0a32867f632 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mipsisa32r6 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh new file mode 100644 index 00000000000..ca060093002 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa32r6el-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mipsisa32r6el +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh new file mode 100644 index 00000000000..6c1138fe62c --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6-linux-gnuabi64.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mipsisa64r6 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnuabi64 + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh new file mode 100644 index 00000000000..f64f2fcf442 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.mipsisa64r6el-linux-gnuabi64.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=mipsisa64r6el +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnuabi64 + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh new file mode 100644 index 00000000000..e50d9b502a3 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=powerpc +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh new file mode 100644 index 00000000000..15e60adf27e --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=powerpc64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh new file mode 100644 index 00000000000..be0e2ca69cc --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.powerpc64le-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=powerpc64le +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh new file mode 100644 index 00000000000..d8518d97fec --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.riscv64-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=riscv64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh new file mode 100644 index 00000000000..3263fbff8ab --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/linux/ci_env.x86_64-linux-gnu.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=linux +export CI_TARGET_ABI=gnu + +export CI_GCC="${CI_GCC-gcc}" + +export CI_CC="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-$CI_GCC" +export CI_AR="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ar" +export CI_RANLIB="$CI_TARGET_ARCH-$CI_TARGET_SYSTEM-$CI_TARGET_ABI-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Linux + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh new file mode 100644 index 00000000000..59f3bd58fd1 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i386-pc-msdoswatcom.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i386 +export CI_TARGET_SYSTEM=msdoswatcom + +export CI_CC="wcl386" + +# Open Watcom V2 CMake build +# https://github.com/open-watcom/open-watcom-v2/discussions/716 +export CI_CMAKE_GENERATOR="Watcom WMake" +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=DOS +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh new file mode 100644 index 00000000000..63e6d067670 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i586-pc-msdosdjgpp.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i586 +export CI_TARGET_SYSTEM=msdosdjgpp + +export CI_CC="$CI_TARGET_ARCH-pc-$CI_TARGET_SYSTEM-gcc" +export CI_AR="$CI_CC-ar" +export CI_RANLIB="$CI_CC-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Generic + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh new file mode 100644 index 00000000000..3059f183566 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/msdos/ci_env.i86-pc-msdoswatcom.sh @@ -0,0 +1,19 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i86 +export CI_TARGET_SYSTEM=msdoswatcom + +export CI_CC="wcl" + +# Open Watcom V2 CMake build +# https://github.com/open-watcom/open-watcom-v2/discussions/716 +export CI_CMAKE_GENERATOR="Watcom WMake" +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=DOS + -DCMAKE_SYSTEM_PROCESSOR=I86 +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh new file mode 100644 index 00000000000..80244172a34 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.aarch64-windows-llvm.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=aarch64 +export CI_TARGET_SYSTEM=windows + +export CI_CC="clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh new file mode 100644 index 00000000000..8c83d0f2c64 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-w64-mingw32.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_SYSTEM=mingw32 + +# The output of `uname -s` on MSYS2 is understandable, and so is +# CI_TARGET_SYSTEM above, in simplified form. (See also Cygwin.) +# But aside from that, the Mingw-w64 nomenclature is rather messy. +export CI_CC="$CI_TARGET_ARCH-w64-mingw32-gcc" +export CI_AR="$CI_CC-ar" +export CI_RANLIB="$CI_CC-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh new file mode 100644 index 00000000000..3d29f6d558e --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.i686-windows-llvm.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=i686 +export CI_TARGET_SYSTEM=windows + +export CI_CC="clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh new file mode 100644 index 00000000000..67d83557bde --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-w64-mingw32.sh @@ -0,0 +1,21 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=mingw64 + +# The output of `uname -s` on MSYS2 is understandable, and so is +# CI_TARGET_SYSTEM above, in simplified form. (See also Cygwin.) +# But aside from that, the Mingw-w64 nomenclature is rather messy. +export CI_CC="$CI_TARGET_ARCH-w64-mingw32-gcc" +export CI_AR="$CI_CC-ar" +export CI_RANLIB="$CI_CC-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh new file mode 100644 index 00000000000..747f99b2148 --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/ci/targets/windows/ci_env.x86_64-windows-llvm.sh @@ -0,0 +1,18 @@ +# Copyright (c) 2023-2024 Cosmin Truta. +# +# Use, modification and distribution are subject to the MIT License. +# Please see the accompanying file LICENSE_MIT.txt +# +# SPDX-License-Identifier: MIT + +export CI_TARGET_ARCH=x86_64 +export CI_TARGET_SYSTEM=windows + +export CI_CC="clang" +export CI_AR="llvm-ar" +export CI_RANLIB="llvm-ranlib" + +export CI_CMAKE_VARS=" + -DCMAKE_SYSTEM_NAME=Windows + -DCMAKE_SYSTEM_PROCESSOR=$CI_TARGET_ARCH +" diff --git a/Build/source/libs/libpng/libpng-src/configure.ac b/Build/source/libs/libpng/libpng-src/configure.ac index 505d72ff60d..22113b265c7 100644 --- a/Build/source/libs/libpng/libpng-src/configure.ac +++ b/Build/source/libs/libpng/libpng-src/configure.ac @@ -25,7 +25,7 @@ AC_PREREQ([2.68]) dnl Version number stuff here: -AC_INIT([libpng],[1.6.43],[png-mng-implement@lists.sourceforge.net]) +AC_INIT([libpng],[1.6.44],[png-mng-implement@lists.sourceforge.net]) AC_CONFIG_MACRO_DIR([scripts/autoconf]) # libpng does not follow GNU file name conventions (hence 'foreign') @@ -46,17 +46,17 @@ dnl automake, so the following is not necessary (and is not defined anyway): dnl AM_PREREQ([1.11.2]) dnl stop configure from automagically running automake -PNGLIB_VERSION=1.6.43 +PNGLIB_VERSION=1.6.44 PNGLIB_MAJOR=1 PNGLIB_MINOR=6 -PNGLIB_RELEASE=43 +PNGLIB_RELEASE=44 dnl End of version number stuff AC_CONFIG_SRCDIR([pngget.c]) AC_CONFIG_HEADERS([config.h]) -# Check for basic programs. +# Check the basic programs. AC_LANG([C]) AC_PROG_CC AM_PROG_AS diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile index f5bc1a985d3..c9bc4145e06 100644 --- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile +++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/Dockerfile @@ -1,3 +1,5 @@ +# Copyright 2024 Cosmin Truta +# Copyright 2017 Glenn Randers-Pehrson # Copyright 2016 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,11 +17,12 @@ ################################################################################ FROM gcr.io/oss-fuzz-base/base-builder -MAINTAINER glennrp@gmail.com + RUN apt-get update && \ - apt-get install -y make autoconf automake libtool + apt-get install -y make autoconf automake libtool zlib1g-dev + +RUN git clone --depth=1 https://github.com/pnggroup/libpng.git && \ + git clone --depth=1 https://github.com/madler/zlib.git && \ + cp libpng/contrib/oss-fuzz/build.sh $SRC -RUN git clone --depth 1 https://github.com/madler/zlib.git -RUN git clone --depth 1 https://github.com/glennrp/libpng.git -RUN cp libpng/contrib/oss-fuzz/build.sh $SRC -WORKDIR libpng +WORKDIR /home/libpng diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt index 66d5242c574..b01af52accc 100644 --- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt +++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/README.txt @@ -1,3 +1,7 @@ +libpng additions to oss-fuzz +============================ + +Copyright (c) 2024 Cosmin Truta Copyright (c) 2017 Glenn Randers-Pehrson This code is released under the libpng license. diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh index 7b8f0263972..1970f9c06c5 100755 --- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh +++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/build.sh @@ -1,6 +1,8 @@ -#!/bin/bash -eu +#!/usr/bin/env bash +set -eu -# Copyright 2017-2018 Glenn Randers-Pehrson +# Copyright 2024 Cosmin Truta +# Copyright 2017 Glenn Randers-Pehrson # Copyright 2016 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,36 +17,31 @@ # See the License for the specific language governing permissions and # limitations under the License. # -# Revisions by Glenn Randers-Pehrson, 2017: -# 1. Build only the library, not the tools (changed "make -j$(nproc) all" to -# "make -j$(nproc) libpng16.la"). -# 2. Disabled WARNING and WRITE options in pnglibconf.dfa. -# 3. Build zlib alongside libpng ################################################################################ # Disable logging via library build configuration control. -cat scripts/pnglibconf.dfa | \ - sed -e "s/option STDIO/option STDIO disabled/" \ - -e "s/option WARNING /option WARNING disabled/" \ - -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \ -> scripts/pnglibconf.dfa.temp -mv scripts/pnglibconf.dfa.temp scripts/pnglibconf.dfa +sed -e "s/option STDIO/option STDIO disabled/" \ + -e "s/option WARNING /option WARNING disabled/" \ + -e "s/option WRITE enables WRITE_INT_FUNCTIONS/option WRITE disabled/" \ + scripts/pnglibconf.dfa >scripts/pnglibconf.dfa.tmp +mv -f scripts/pnglibconf.dfa.tmp scripts/pnglibconf.dfa -# build the libpng library. +# Build the libpng library ("libpng16.la"), excluding the auxiliary tools. autoreconf -f -i ./configure --with-libpng-prefix=OSS_FUZZ_ make -j$(nproc) clean make -j$(nproc) libpng16.la -# build libpng_read_fuzzer. +# Build libpng_read_fuzzer. $CXX $CXXFLAGS -std=c++11 -I. \ $SRC/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc \ -o $OUT/libpng_read_fuzzer \ -lFuzzingEngine .libs/libpng16.a -lz -# add seed corpus. +# Add seed corpus. find $SRC/libpng -name "*.png" | grep -v crashers | \ xargs zip $OUT/libpng_read_fuzzer_seed_corpus.zip cp $SRC/libpng/contrib/oss-fuzz/*.dict \ - $SRC/libpng/contrib/oss-fuzz/*.options $OUT/ + $SRC/libpng/contrib/oss-fuzz/*.options \ + $OUT/ diff --git a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc index 0190cf7865d..ad9f9adc6a3 100644 --- a/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc +++ b/Build/source/libs/libpng/libpng-src/contrib/oss-fuzz/libpng_read_fuzzer.cc @@ -204,5 +204,21 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { png_read_end(png_handler.png_ptr, png_handler.end_info_ptr); PNG_CLEANUP + +#ifdef PNG_SIMPLIFIED_READ_SUPPORTED + // Simplified READ API + png_image image; + memset(&image, 0, (sizeof image)); + image.version = PNG_IMAGE_VERSION; + + if (!png_image_begin_read_from_memory(&image, data, size)) { + return 0; + } + + image.format = PNG_FORMAT_RGBA; + std::vector<png_byte> buffer(PNG_IMAGE_SIZE(image)); + png_image_finish_read(&image, NULL, buffer.data(), 0, NULL); +#endif + return 0; } diff --git a/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh b/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh deleted file mode 100644 index 8810aa7b5db..00000000000 --- a/Build/source/libs/libpng/libpng-src/contrib/tools/chkfmt.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/sh - -# chkfmt.sh -# -# COPYRIGHT: -# Written by John Cunningham Bowler, 2010. -# Revised by Cosmin Truta, 2022. -# To the extent possible under law, the author has waived all copyright and -# related or neighboring rights to this work. The author published this work -# from the United States. -# -# Check the format of the source files in the current directory: -# -# * The lines should not exceed a predefined maximum length. -# * Tab characters should appear only where necessary (e.g. in makefiles). -# -# Optionally arguments are files or directories to check. -# -# -v: output the long lines (makes fixing them easier) -# -e: spawn an editor for each file that needs a change ($EDITOR must be -# defined). When using -e the script MUST be run from an interactive -# command line. - -script_name=`basename "$0"` - -verbose= -edit= -vers= -test "$1" = "-v" && { - shift - verbose=yes -} -test "$1" = "-e" && { - shift - if test -n "$EDITOR" - then - edit=yes - - # Copy the standard streams for the editor - exec 3>&0 4>&1 5>&2 - else - echo "$script_name -e: EDITOR must be defined" >&2 - exit 1 - fi -} - -# Function to edit a single file - if the file isn't changed ask the user -# whether or not to continue. This stuff only works if the script is run -# from the command line (otherwise, don't specify -e or you will be sorry). -doed(){ - cp "$file" "$file".orig - "$EDITOR" "$file" 0>&3 1>&4 2>&5 3>&- 4>&- 5>&- || exit 1 - if cmp -s "$file".orig "$file" - then - rm "$file".orig - echo -n "$file: file not changed, type anything to continue: " >&5 - read ans 0>&3 - test -n "$ans" || return 1 - fi - return 0 -} - -# In beta versions, the version string which appears in files can be a little -# long and cause spuriously overlong lines. To avoid this, substitute the -# version string with a placeholder string "a.b.cc" before checking for long -# lines. -# (Starting from libpng version 1.6.36, we switched to a conventional Git -# workflow, and we are no longer publishing beta versions.) -if test -r png.h -then - vers="`sed -n -e \ - 's/^#define PNG_LIBPNG_VER_STRING .\([0-9]\.[0-9]\.[0-9][0-9a-z]*\).$/\1/p' \ - png.h`" - echo "$script_name: checking version $vers" -fi -if test -z "$vers" -then - echo "$script_name: png.h not found, ignoring version number" >&2 -fi - -test -n "$1" || set -- . -find "$@" \( -type d \( -name '.git' -o -name '.libs' -o -name 'projects' \) \ - -prune \) -o \( -type f \ - ! -name '*.[oa]' ! -name '*.l[oa]' ! -name '*.png' ! -name '*.out' \ - ! -name '*.jpg' ! -name '*.patch' ! -name '*.obj' ! -name '*.exe' \ - ! -name '*.com' ! -name '*.tar.*' ! -name '*.zip' ! -name '*.ico' \ - ! -name '*.res' ! -name '*.rc' ! -name '*.mms' ! -name '*.rej' \ - ! -name '*.dsp' ! -name '*.orig' ! -name '*.dfn' ! -name '*.swp' \ - ! -name '~*' ! -name '*.3' \ - ! -name 'missing' ! -name 'mkinstalldirs' ! -name 'depcomp' \ - ! -name 'aclocal.m4' ! -name 'install-sh' ! -name 'Makefile.in' \ - ! -name 'ltmain.sh' ! -name 'config*' -print \) | { - st=0 - while read file - do - case "$file" in - *.mak|*[Mm]akefile.*|*[Mm]akefile) - # Makefiles require tabs, dependency lines can be this long. - check_tabs= - line_length=100;; - *.awk) - # Allow literal tabs. - check_tabs= - # Mainframe line printer, anyone? - line_length=132;; - */ci_*.sh) - check_tabs=yes - line_length=100;; - *contrib/*/*.[ch]) - check_tabs=yes - line_length=100;; - *) - check_tabs=yes - line_length=80;; - esac - - # Note that vers can only contain 0-9, . and a-z - if test -n "$vers" - then - sed -e "s/$vers/a.b.cc/g" "$file" >"$file".$$ - else - cp "$file" "$file".$$ - fi - splt="`fold -$line_length "$file".$$ | diff -c "$file".$$ -`" - rm "$file".$$ - - if test -n "$splt" - then - echo "$file: lines too long" - st=1 - if test -n "$EDITOR" -a -n "$edit" - then - doed "$file" || exit 1 - elif test -n "$verbose" - then - echo "$splt" - fi - fi - if test -n "$check_tabs" - then - tab="`tr -c -d '\t' <"$file"`" - if test -n "$tab" - then - echo "$file: file contains tab characters" - st=1 - if test -n "$EDITOR" -a -n "$edit" - then - doed "$file" || exit 1 - elif test -n "$verbose" - then - echo "$splt" - fi - fi - fi - done - exit $st -} diff --git a/Build/source/libs/libpng/libpng-src/libpng-manual.txt b/Build/source/libs/libpng/libpng-src/libpng-manual.txt index 79880575994..2ce366d679f 100644 --- a/Build/source/libs/libpng/libpng-src/libpng-manual.txt +++ b/Build/source/libs/libpng/libpng-src/libpng-manual.txt @@ -9,7 +9,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.43 - February 2024 + libpng version 1.6.36, December 2018, through 1.6.44 - September 2024 Updated and distributed by Cosmin Truta Copyright (c) 2018-2024 Cosmin Truta diff --git a/Build/source/libs/libpng/libpng-src/libpng.3 b/Build/source/libs/libpng/libpng-src/libpng.3 index 45e76e4837c..5a3c89cb9c9 100644 --- a/Build/source/libs/libpng/libpng-src/libpng.3 +++ b/Build/source/libs/libpng/libpng-src/libpng.3 @@ -1,6 +1,6 @@ -.TH LIBPNG 3 "February 23, 2024" +.TH LIBPNG 3 "September 12, 2024" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.43 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44 .SH SYNOPSIS \fB#include <png.h>\fP @@ -528,7 +528,7 @@ libpng-manual.txt - A description on how to use and modify libpng Based on: - libpng version 1.6.36, December 2018, through 1.6.43 - February 2024 + libpng version 1.6.36, December 2018, through 1.6.44 - September 2024 Updated and distributed by Cosmin Truta Copyright (c) 2018-2024 Cosmin Truta diff --git a/Build/source/libs/libpng/libpng-src/libpngpf.3 b/Build/source/libs/libpng/libpng-src/libpngpf.3 index 0abec74a2dd..b7557ca27ee 100644 --- a/Build/source/libs/libpng/libpng-src/libpngpf.3 +++ b/Build/source/libs/libpng/libpng-src/libpngpf.3 @@ -1,6 +1,6 @@ -.TH LIBPNGPF 3 "February 23, 2024" +.TH LIBPNGPF 3 "September 12, 2024" .SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library 1.6.43 +libpng \- Portable Network Graphics (PNG) Reference Library 1.6.44 (private functions) .SH SYNOPSIS diff --git a/Build/source/libs/libpng/libpng-src/png.5 b/Build/source/libs/libpng/libpng-src/png.5 index a8a681813ff..14a3c432bff 100644 --- a/Build/source/libs/libpng/libpng-src/png.5 +++ b/Build/source/libs/libpng/libpng-src/png.5 @@ -1,4 +1,4 @@ -.TH PNG 5 "February 23, 2024" +.TH PNG 5 "September 12, 2024" .SH NAME png \- Portable Network Graphics (PNG) format diff --git a/Build/source/libs/libpng/libpng-src/png.c b/Build/source/libs/libpng/libpng-src/png.c index 9ed31570092..9a9fb23d942 100644 --- a/Build/source/libs/libpng/libpng-src/png.c +++ b/Build/source/libs/libpng/libpng-src/png.c @@ -14,7 +14,7 @@ #include "pngpriv.h" /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43; +typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44; /* Tells libpng that we have already handled the first "num_bytes" bytes * of the PNG file signature. If the PNG data is embedded into another @@ -794,7 +794,7 @@ png_get_copyright(png_const_structrp png_ptr) return PNG_STRING_COPYRIGHT #else return PNG_STRING_NEWLINE \ - "libpng version 1.6.43" PNG_STRING_NEWLINE \ + "libpng version 1.6.44" PNG_STRING_NEWLINE \ "Copyright (c) 2018-2024 Cosmin Truta" PNG_STRING_NEWLINE \ "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \ PNG_STRING_NEWLINE \ @@ -1203,6 +1203,24 @@ png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr) #endif /* GAMMA */ #ifdef PNG_COLORSPACE_SUPPORTED +static int +png_safe_add(png_int_32 *addend0_and_result, png_int_32 addend1, + png_int_32 addend2) { + /* Safely add three integers. Returns 0 on success, 1 on overlow. + * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore + * relying on addition of two positive values producing a negative one is not + * safe. + */ + int addend0 = *addend0_and_result; + if (0x7fffffff - addend0 < addend1) + return 1; + addend0 += addend1; + if (0x7fffffff - addend1 < addend2) + return 1; + *addend0_and_result = addend0 + addend2; + return 0; +} + /* Added at libpng-1.5.5 to support read and write of true CIEXYZ values for * cHRM, as opposed to using chromaticities. These internal APIs return * non-zero on a parameter error. The X, Y and Z values are required to be @@ -1211,38 +1229,52 @@ png_colorspace_sync(png_const_structrp png_ptr, png_inforp info_ptr) static int png_xy_from_XYZ(png_xy *xy, const png_XYZ *XYZ) { - png_int_32 d, dwhite, whiteX, whiteY; + png_int_32 d, dred, dgreen, dwhite, whiteX, whiteY; - d = XYZ->red_X + XYZ->red_Y + XYZ->red_Z; + /* 'd' in each of the blocks below is just X+Y+Z for each component, + * x, y and z are X,Y,Z/(X+Y+Z). + */ + d = XYZ->red_X; + if (png_safe_add(&d, XYZ->red_Y, XYZ->red_Z)) + return 1; if (png_muldiv(&xy->redx, XYZ->red_X, PNG_FP_1, d) == 0) return 1; if (png_muldiv(&xy->redy, XYZ->red_Y, PNG_FP_1, d) == 0) return 1; - dwhite = d; + dred = d; whiteX = XYZ->red_X; whiteY = XYZ->red_Y; - d = XYZ->green_X + XYZ->green_Y + XYZ->green_Z; + d = XYZ->green_X; + if (png_safe_add(&d, XYZ->green_Y, XYZ->green_Z)) + return 1; if (png_muldiv(&xy->greenx, XYZ->green_X, PNG_FP_1, d) == 0) return 1; if (png_muldiv(&xy->greeny, XYZ->green_Y, PNG_FP_1, d) == 0) return 1; - dwhite += d; + dgreen = d; whiteX += XYZ->green_X; whiteY += XYZ->green_Y; - d = XYZ->blue_X + XYZ->blue_Y + XYZ->blue_Z; + d = XYZ->blue_X; + if (png_safe_add(&d, XYZ->blue_Y, XYZ->blue_Z)) + return 1; if (png_muldiv(&xy->bluex, XYZ->blue_X, PNG_FP_1, d) == 0) return 1; if (png_muldiv(&xy->bluey, XYZ->blue_Y, PNG_FP_1, d) == 0) return 1; - dwhite += d; whiteX += XYZ->blue_X; whiteY += XYZ->blue_Y; - /* The reference white is simply the sum of the end-point (X,Y,Z) vectors, - * thus: + /* The reference white is simply the sum of the end-point (X,Y,Z) vectors so + * the fillowing calculates (X+Y+Z) of the reference white (media white, + * encoding white) itself: */ + if (png_safe_add(&d, dred, dgreen)) + return 1; + + dwhite = d; + if (png_muldiv(&xy->whitex, whiteX, PNG_FP_1, dwhite) == 0) return 1; if (png_muldiv(&xy->whitey, whiteY, PNG_FP_1, dwhite) == 0) @@ -1257,20 +1289,6 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) png_fixed_point red_inverse, green_inverse, blue_scale; png_fixed_point left, right, denominator; - /* Check xy and, implicitly, z. Note that wide gamut color spaces typically - * have end points with 0 tristimulus values (these are impossible end - * points, but they are used to cover the possible colors). We check - * xy->whitey against 5, not 0, to avoid a possible integer overflow. - */ - if (xy->redx < 0 || xy->redx > PNG_FP_1) return 1; - if (xy->redy < 0 || xy->redy > PNG_FP_1-xy->redx) return 1; - if (xy->greenx < 0 || xy->greenx > PNG_FP_1) return 1; - if (xy->greeny < 0 || xy->greeny > PNG_FP_1-xy->greenx) return 1; - if (xy->bluex < 0 || xy->bluex > PNG_FP_1) return 1; - if (xy->bluey < 0 || xy->bluey > PNG_FP_1-xy->bluex) return 1; - if (xy->whitex < 0 || xy->whitex > PNG_FP_1) return 1; - if (xy->whitey < 5 || xy->whitey > PNG_FP_1-xy->whitex) return 1; - /* The reverse calculation is more difficult because the original tristimulus * value had 9 independent values (red,green,blue)x(X,Y,Z) however only 8 * derived values were recorded in the cHRM chunk; @@ -1451,16 +1469,16 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) * value of 2 indicates an internal error to the caller. */ if (png_muldiv(&left, xy->greenx-xy->bluex, xy->redy - xy->bluey, 7) == 0) - return 2; + return 1; if (png_muldiv(&right, xy->greeny-xy->bluey, xy->redx - xy->bluex, 7) == 0) - return 2; + return 1; denominator = left - right; /* Now find the red numerator. */ if (png_muldiv(&left, xy->greenx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) - return 2; + return 1; if (png_muldiv(&right, xy->greeny-xy->bluey, xy->whitex-xy->bluex, 7) == 0) - return 2; + return 1; /* Overflow is possible here and it indicates an extreme set of PNG cHRM * chunk values. This calculation actually returns the reciprocal of the @@ -1473,9 +1491,9 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) /* Similarly for green_inverse: */ if (png_muldiv(&left, xy->redy-xy->bluey, xy->whitex-xy->bluex, 7) == 0) - return 2; + return 1; if (png_muldiv(&right, xy->redx-xy->bluex, xy->whitey-xy->bluey, 7) == 0) - return 2; + return 1; if (png_muldiv(&green_inverse, xy->whitey, denominator, left-right) == 0 || green_inverse <= xy->whitey) return 1; @@ -1520,25 +1538,14 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy) static int png_XYZ_normalize(png_XYZ *XYZ) { - png_int_32 Y; + png_int_32 Y, Ytemp; - if (XYZ->red_Y < 0 || XYZ->green_Y < 0 || XYZ->blue_Y < 0 || - XYZ->red_X < 0 || XYZ->green_X < 0 || XYZ->blue_X < 0 || - XYZ->red_Z < 0 || XYZ->green_Z < 0 || XYZ->blue_Z < 0) + /* Normalize by scaling so the sum of the end-point Y values is PNG_FP_1. */ + Ytemp = XYZ->red_Y; + if (png_safe_add(&Ytemp, XYZ->green_Y, XYZ->blue_Y)) return 1; - /* Normalize by scaling so the sum of the end-point Y values is PNG_FP_1. - * IMPLEMENTATION NOTE: ANSI requires signed overflow not to occur, therefore - * relying on addition of two positive values producing a negative one is not - * safe. - */ - Y = XYZ->red_Y; - if (0x7fffffff - Y < XYZ->green_X) - return 1; - Y += XYZ->green_Y; - if (0x7fffffff - Y < XYZ->blue_X) - return 1; - Y += XYZ->blue_Y; + Y = Ytemp; if (Y != PNG_FP_1) { diff --git a/Build/source/libs/libpng/libpng-src/png.h b/Build/source/libs/libpng/libpng-src/png.h index 83d39031260..04a233f393e 100644 --- a/Build/source/libs/libpng/libpng-src/png.h +++ b/Build/source/libs/libpng/libpng-src/png.h @@ -1,7 +1,7 @@ /* png.h - header file for PNG reference library * - * libpng version 1.6.43 + * libpng version 1.6.44 * * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson @@ -15,7 +15,7 @@ * libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.97, January 1998, through 1.6.35, July 2018: * Glenn Randers-Pehrson - * libpng versions 1.6.36, December 2018, through 1.6.43, February 2024: + * libpng versions 1.6.36, December 2018, through 1.6.44, September 2024: * Cosmin Truta * See also "Contributing Authors", below. */ @@ -239,7 +239,7 @@ * ... * 1.5.30 15 10530 15.so.15.30[.0] * ... - * 1.6.43 16 10643 16.so.16.43[.0] + * 1.6.44 16 10644 16.so.16.44[.0] * * Henceforth the source version will match the shared-library major and * minor numbers; the shared-library major version number will be used for @@ -275,7 +275,7 @@ */ /* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.6.43" +#define PNG_LIBPNG_VER_STRING "1.6.44" #define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n" /* The versions of shared library builds should stay in sync, going forward */ @@ -286,18 +286,18 @@ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ #define PNG_LIBPNG_VER_MAJOR 1 #define PNG_LIBPNG_VER_MINOR 6 -#define PNG_LIBPNG_VER_RELEASE 43 +#define PNG_LIBPNG_VER_RELEASE 44 /* This should be zero for a public release, or non-zero for a * development version. */ -#define PNG_LIBPNG_VER_BUILD 0 +#define PNG_LIBPNG_VER_BUILD 0 /* Release Status */ -#define PNG_LIBPNG_BUILD_ALPHA 1 -#define PNG_LIBPNG_BUILD_BETA 2 -#define PNG_LIBPNG_BUILD_RC 3 -#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 #define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 /* Release-Specific Flags */ @@ -317,7 +317,7 @@ * From version 1.0.1 it is: * XXYYZZ, where XX=major, YY=minor, ZZ=release */ -#define PNG_LIBPNG_VER 10643 /* 1.6.43 */ +#define PNG_LIBPNG_VER 10644 /* 1.6.44 */ /* Library configuration: these options cannot be changed after * the library has been built. @@ -427,7 +427,7 @@ extern "C" { /* This triggers a compiler error in png.c, if png.c and png.h * do not agree upon the version number. */ -typedef char* png_libpng_version_1_6_43; +typedef char* png_libpng_version_1_6_44; /* Basic control structions. Read libpng-manual.txt or libpng.3 for more info. * @@ -824,7 +824,7 @@ typedef PNG_CALLBACK(int, *png_user_chunk_ptr, (png_structp, * your compiler. This may be very difficult - try using a different compiler * to build the library! */ -PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), PNGARG((jmp_buf, int)), typedef); +PNG_FUNCTION(void, (PNGCAPI *png_longjmp_ptr), (jmp_buf, int), typedef); #endif /* Transform masks for the high-level interface */ diff --git a/Build/source/libs/libpng/libpng-src/pngconf.h b/Build/source/libs/libpng/libpng-src/pngconf.h index 000d7b1a8a6..4a4b58ac81e 100644 --- a/Build/source/libs/libpng/libpng-src/pngconf.h +++ b/Build/source/libs/libpng/libpng-src/pngconf.h @@ -1,7 +1,7 @@ /* pngconf.h - machine-configurable file for libpng * - * libpng version 1.6.43 + * libpng version 1.6.44 * * Copyright (c) 2018-2024 Cosmin Truta * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson @@ -88,7 +88,7 @@ /* The PNGARG macro was used in versions of libpng prior to 1.6.0 to protect * against legacy (pre ISOC90) compilers that did not understand function - * prototypes. It is not required for modern C compilers. + * prototypes. [Deprecated.] */ #ifndef PNGARG # define PNGARG(arglist) arglist @@ -298,7 +298,7 @@ #ifndef PNG_EXPORTA # define PNG_EXPORTA(ordinal, type, name, args, attributes) \ - PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), PNGARG(args), \ + PNG_FUNCTION(PNG_EXPORT_TYPE(type), (PNGAPI name), args, \ PNG_LINKAGE_API attributes) #endif @@ -316,7 +316,7 @@ #endif #ifndef PNG_CALLBACK -# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) PNGARG(args) +# define PNG_CALLBACK(type, name, args) type (PNGCBAPI name) args #endif /* Support for compiler specific function attributes. These are used diff --git a/Build/source/libs/libpng/libpng-src/pngerror.c b/Build/source/libs/libpng/libpng-src/pngerror.c index 29ebda79437..1babf9f8d24 100644 --- a/Build/source/libs/libpng/libpng-src/pngerror.c +++ b/Build/source/libs/libpng/libpng-src/pngerror.c @@ -20,13 +20,14 @@ #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED) -static PNG_FUNCTION(void, png_default_error,PNGARG((png_const_structrp png_ptr, - png_const_charp error_message)),PNG_NORETURN); +static PNG_FUNCTION(void /* PRIVATE */, +png_default_error,(png_const_structrp png_ptr, png_const_charp error_message), + PNG_NORETURN); #ifdef PNG_WARNINGS_SUPPORTED static void /* PRIVATE */ -png_default_warning PNGARG((png_const_structrp png_ptr, - png_const_charp warning_message)); +png_default_warning(png_const_structrp png_ptr, + png_const_charp warning_message); #endif /* WARNINGS */ /* This function is called whenever there is a fatal error. This function diff --git a/Build/source/libs/libpng/libpng-src/pnglibconf.h b/Build/source/libs/libpng/libpng-src/pnglibconf.h index 83f09fbe773..f5ce441ecb9 100644 --- a/Build/source/libs/libpng/libpng-src/pnglibconf.h +++ b/Build/source/libs/libpng/libpng-src/pnglibconf.h @@ -1,6 +1,6 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.43 */ +/* libpng version 1.6.44 */ /* Copyright (c) 2018-2024 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ diff --git a/Build/source/libs/libpng/libpng-src/pngpriv.h b/Build/source/libs/libpng/libpng-src/pngpriv.h index 9bfdb713421..b59084e7eb9 100644 --- a/Build/source/libs/libpng/libpng-src/pngpriv.h +++ b/Build/source/libs/libpng/libpng-src/pngpriv.h @@ -140,47 +140,6 @@ * callbacks to do this. */ # define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_neon - - /* By default the 'intrinsics' code in arm/filter_neon_intrinsics.c is used - * if possible - if __ARM_NEON__ is set and the compiler version is not known - * to be broken. This is controlled by PNG_ARM_NEON_IMPLEMENTATION which can - * be: - * - * 1 The intrinsics code (the default with __ARM_NEON__) - * 2 The hand coded assembler (the default without __ARM_NEON__) - * - * It is possible to set PNG_ARM_NEON_IMPLEMENTATION in CPPFLAGS, however - * this is *NOT* supported and may cease to work even after a minor revision - * to libpng. It *is* valid to do this for testing purposes, e.g. speed - * testing or a new compiler, but the results should be communicated to the - * libpng implementation list for incorporation in the next minor release. - */ -# ifndef PNG_ARM_NEON_IMPLEMENTATION -# if defined(__ARM_NEON__) || defined(__ARM_NEON) -# if defined(__clang__) - /* At present it is unknown by the libpng developers which versions - * of clang support the intrinsics, however some or perhaps all - * versions do not work with the assembler so this may be - * irrelevant, so just use the default (do nothing here.) - */ -# elif defined(__GNUC__) - /* GCC 4.5.4 NEON support is known to be broken. 4.6.3 is known to - * work, so if this *is* GCC, or G++, look for a version >4.5 - */ -# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* no GNUC support */ -# endif /* __GNUC__ */ -# else /* !defined __ARM_NEON__ */ - /* The 'intrinsics' code simply won't compile without this -mfpu=neon: - */ -# if !defined(__aarch64__) && !defined(_M_ARM64) - /* The assembler code currently does not work on ARM64 */ -# define PNG_ARM_NEON_IMPLEMENTATION 2 -# endif /* __aarch64__ */ -# endif /* __ARM_NEON__ */ -# endif /* !PNG_ARM_NEON_IMPLEMENTATION */ - # ifndef PNG_ARM_NEON_IMPLEMENTATION /* Use the intrinsics code by default. */ # define PNG_ARM_NEON_IMPLEMENTATION 1 diff --git a/Build/source/libs/libpng/libpng-src/pngtest.c b/Build/source/libs/libpng/libpng-src/pngtest.c index 45ef66a7015..5969f503103 100644 --- a/Build/source/libs/libpng/libpng-src/pngtest.c +++ b/Build/source/libs/libpng/libpng-src/pngtest.c @@ -45,8 +45,13 @@ #include "png.h" +/* This hack was introduced for historical reasons, and we are + * still keeping it in libpng-1.6.x for compatibility reasons. + */ +#define STDERR stdout + /* Generate a compiler error if there is an old png.h in the search path. */ -typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43; +typedef png_libpng_version_1_6_44 Your_png_h_is_not_version_1_6_44; /* Ensure that all version numbers in png.h are consistent with one another. */ #if (PNG_LIBPNG_VER != PNG_LIBPNG_VER_MAJOR * 10000 + \ @@ -103,11 +108,6 @@ typedef png_libpng_version_1_6_43 Your_png_h_is_not_version_1_6_43; typedef FILE * png_FILE_p; #endif -/* This hack was introduced for historical reasons, and we are - * still keeping it in libpng-1.6.x for compatibility reasons. - */ -#define STDERR stdout - #ifndef PNG_DEBUG # define PNG_DEBUG 0 #endif @@ -518,9 +518,9 @@ static int maximum_allocation = 0; static int total_allocation = 0; static int num_allocations = 0; -png_voidp PNGCBAPI png_debug_malloc PNGARG((png_structp png_ptr, - png_alloc_size_t size)); -void PNGCBAPI png_debug_free PNGARG((png_structp png_ptr, png_voidp ptr)); +png_voidp PNGCBAPI png_debug_malloc(png_structp png_ptr, + png_alloc_size_t size); +void PNGCBAPI png_debug_free(png_structp png_ptr, png_voidp ptr); png_voidp PNGCBAPI png_debug_malloc(png_structp png_ptr, png_alloc_size_t size) diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md b/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md index 641dde265f3..c0982178650 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md +++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/AUTHORS.md @@ -20,6 +20,8 @@ Author List * Cosmin Truta * Dan Rosser * David Callu + * Eric Riff + * Erik Scholz * Gianfranco Costamagna * Gleb Mazovetskiy * Glenn Randers-Pehrson diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake b/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake new file mode 100644 index 00000000000..3b6f646de7b --- /dev/null +++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/PNGConfig.cmake @@ -0,0 +1,15 @@ +include(CMakeFindDependencyMacro)
+
+find_dependency(ZLIB REQUIRED)
+
+include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake")
+
+if(NOT TARGET PNG::PNG)
+ if(TARGET PNG::png_shared)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_shared)
+ elseif(TARGET PNG::png_static)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_static)
+ endif()
+endif()
diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md b/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md index ca418893a95..18e71071751 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md +++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/README.md @@ -20,6 +20,7 @@ File List CMakeLists.txt ==> The main CMake lists file scripts/cmake/AUTHORS.md ==> The Authors file scripts/cmake/README.md ==> This file + scripts/cmake/PNGConfig.cmake ==> Config file for FindPNG scripts/cmake/genchk.cmake.in ==> Template for genchk.cmake scripts/cmake/genout.cmake.in ==> Template for genout.cmake scripts/cmake/gensrc.cmake.in ==> Template for gensrc.cmake diff --git a/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in b/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in index ab828596899..d4a333282fc 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in +++ b/Build/source/libs/libpng/libpng-src/scripts/cmake/genout.cmake.in @@ -19,6 +19,7 @@ set(BINDIR "@CMAKE_CURRENT_BINARY_DIR@") set(AWK "@AWK@") set(CMAKE_C_COMPILER "@CMAKE_C_COMPILER@") set(CMAKE_C_FLAGS @CMAKE_C_FLAGS@) +set(CMAKE_SYSROOT @CMAKE_SYSROOT@) set(INCDIR "@CMAKE_CURRENT_BINARY_DIR@") set(PNG_PREFIX "@PNG_PREFIX@") set(PNGLIB_MAJOR "@PNGLIB_MAJOR@") @@ -38,6 +39,10 @@ if(APPLE) endif() endif() +if(CMAKE_SYSROOT) + set(PLATFORM_C_FLAGS ${PLATFORM_C_FLAGS} "--sysroot=${CMAKE_SYSROOT}") +endif() + get_filename_component(INPUTEXT "${INPUT}" EXT) get_filename_component(OUTPUTEXT "${OUTPUT}" EXT) get_filename_component(INPUTBASE "${INPUT}" NAME_WE) diff --git a/Build/source/libs/libpng/libpng-src/scripts/dfn.awk b/Build/source/libs/libpng/libpng-src/scripts/dfn.awk index 0b25c8a3728..0b970e00618 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/dfn.awk +++ b/Build/source/libs/libpng/libpng-src/scripts/dfn.awk @@ -75,12 +75,12 @@ $1 ~ /^PNG_DFN_END_SORT/{ if (lineno == "") lineno=NR if (sub(/^[^"]*PNG_DFN *"/,"",line) != 1) { - print "line", lineno ": processing failed:" - print orig - err=1 - next + print "line", lineno ": processing failed:" + print orig + err=1 + next } else { - ++out_count + ++out_count } # Now examine quotes within the value: @@ -94,7 +94,7 @@ $1 ~ /^PNG_DFN_END_SORT/{ # #define first_name John # #define last_name Smith # - # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'" + # PNG_DFN"#define name @'@" first_name "@ @" last_name "@@'" # # Might get C preprocessed to: # @@ -102,7 +102,7 @@ $1 ~ /^PNG_DFN_END_SORT/{ # # Which this script reduces to: # - # #define name "John Smith" + # #define name "John Smith" # while (1) { # While there is an @" remove it and the next "@ @@ -195,7 +195,7 @@ $1 ~ /^PNG_DFN_END_SORT/{ END{ if (out_count > 0 || err > 0) - exit err + exit err print "no definition lines found" exit 1 diff --git a/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in b/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in index 37577f4134f..3d26a0a6a22 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in +++ b/Build/source/libs/libpng/libpng-src/scripts/libpng-config-head.in @@ -11,7 +11,7 @@ # Modeled after libxml-config. -version=1.6.43 +version=1.6.44 prefix="" libdir="" libs="" diff --git a/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in b/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in index 6a581d1a481..fc3f6f67fb2 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in +++ b/Build/source/libs/libpng/libpng-src/scripts/libpng.pc.in @@ -5,6 +5,6 @@ includedir=@includedir@/libpng16 Name: libpng Description: Loads and saves PNG files -Version: 1.6.43 +Version: 1.6.44 Libs: -L${libdir} -lpng16 Cflags: -I${includedir} diff --git a/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt b/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt index 83f09fbe773..f5ce441ecb9 100644 --- a/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt +++ b/Build/source/libs/libpng/libpng-src/scripts/pnglibconf.h.prebuilt @@ -1,6 +1,6 @@ /* pnglibconf.h - library build configuration */ -/* libpng version 1.6.43 */ +/* libpng version 1.6.44 */ /* Copyright (c) 2018-2024 Cosmin Truta */ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */ diff --git a/Build/source/libs/libpng/version.ac b/Build/source/libs/libpng/version.ac index 8f85bd0edce..da9dd431e5d 100644 --- a/Build/source/libs/libpng/version.ac +++ b/Build/source/libs/libpng/version.ac @@ -8,4 +8,4 @@ dnl dnl -------------------------------------------------------- dnl dnl m4-include this file to define the current libpng version -m4_define([libpng_version], [1.6.43]) +m4_define([libpng_version], [1.6.44]) diff --git a/Build/source/texk/README b/Build/source/texk/README index 662776344a3..66076840929 100644 --- a/Build/source/texk/README +++ b/Build/source/texk/README @@ -106,7 +106,7 @@ ttf2pk2 - maintained here, by us ttfdump - maintained here, by us, since Taiwan upstream apparently gone. -upmendex 1.07 - by Takuji Tanaka +upmendex 1.09 - by Takuji Tanaka https://ctan.org/pkg/upmendex https://github.com/t-tk/upmendex-package diff --git a/Build/source/texk/configure b/Build/source/texk/configure index 8768fd2f0ab..22de60b80ac 100755 --- a/Build/source/texk/configure +++ b/Build/source/texk/configure @@ -799,6 +799,7 @@ enable_luahbtex enable_luajithbtex enable_mp enable_pmp +enable_texprof enable_upmp enable_xetex enable_xetex_synctex @@ -1599,6 +1600,7 @@ Optional Features: --disable-luajithbtex do not compile and install LuaHBJITTeX --disable-mp do not compile and install MetaPost --disable-pmp do not compile and install pMetaPost + --disable-texprof do not compile and install TeXprof --disable-upmp do not compile and install upMetaPost --disable-xetex do not compile and install XeTeX --disable-xetex-synctex build XeTeX without SyncTeX support @@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && { need_libpng=yes need_ptexenc=yes } +# Check whether --enable-texprof was given. +if test ${enable_texprof+y} +then : + enableval=$enable_texprof; +fi +case $enable_texprof in #( + yes | no) : + ;; #( + *) : + enable_texprof=yes ;; +esac # Check whether --enable-upmp was given. if test ${enable_upmp+y} then : diff --git a/Build/source/texk/dvipdfm-x/ChangeLog b/Build/source/texk/dvipdfm-x/ChangeLog index 178ae093195..a98d25e242b 100644 --- a/Build/source/texk/dvipdfm-x/ChangeLog +++ b/Build/source/texk/dvipdfm-x/ChangeLog @@ -1,3 +1,11 @@ +2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * tfm.c: More strict check to interpret OFM FONTDIR + as pTeX vertical writing. + https://github.com/texjporg/tex-jp-build/issues/170#issuecomment-2295037307 + https://github.com/texjporg/tex-jp-build/issues/99 + * configure.ac: version 20240922. + 2024-05-18 TANAKA Takuji <ttk@t-lab.opal.ne.jp> * dvi.c: Remove obsolete comments. diff --git a/Build/source/texk/dvipdfm-x/configure b/Build/source/texk/dvipdfm-x/configure index 1f40a26118c..6e37f0112ea 100755 --- a/Build/source/texk/dvipdfm-x/configure +++ b/Build/source/texk/dvipdfm-x/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for dvipdfm-x (TeX Live) 20240511. +# Generated by GNU Autoconf 2.72 for dvipdfm-x (TeX Live) 20240922. # # Report bugs to <dvipdfmx@tug.org>. # @@ -614,8 +614,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='dvipdfm-x (TeX Live)' PACKAGE_TARNAME='dvipdfm-x--tex-live-' -PACKAGE_VERSION='20240511' -PACKAGE_STRING='dvipdfm-x (TeX Live) 20240511' +PACKAGE_VERSION='20240922' +PACKAGE_STRING='dvipdfm-x (TeX Live) 20240922' PACKAGE_BUGREPORT='dvipdfmx@tug.org' PACKAGE_URL='' @@ -1385,7 +1385,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures dvipdfm-x (TeX Live) 20240511 to adapt to many kinds of systems. +'configure' configures dvipdfm-x (TeX Live) 20240922 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1457,7 +1457,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20240511:";; + short | recursive ) echo "Configuration of dvipdfm-x (TeX Live) 20240922:";; esac cat <<\_ACEOF @@ -1588,7 +1588,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dvipdfm-x (TeX Live) configure 20240511 +dvipdfm-x (TeX Live) configure 20240922 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -2369,7 +2369,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dvipdfm-x (TeX Live) $as_me 20240511, which was +It was created by dvipdfm-x (TeX Live) $as_me 20240922, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -9263,7 +9263,7 @@ fi # Define the identity of the package. PACKAGE='dvipdfm-x--tex-live-' - VERSION='20240511' + VERSION='20240922' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -16305,7 +16305,7 @@ Usage: $0 [OPTIONS] Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ -dvipdfm-x (TeX Live) config.lt 20240511 +dvipdfm-x (TeX Live) config.lt 20240922 configured by $0, generated by GNU Autoconf 2.72. Copyright (C) 2011 Free Software Foundation, Inc. @@ -18260,7 +18260,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dvipdfm-x (TeX Live) $as_me 20240511, which was +This file was extended by dvipdfm-x (TeX Live) $as_me 20240922, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18332,7 +18332,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -dvipdfm-x (TeX Live) config.status 20240511 +dvipdfm-x (TeX Live) config.status 20240922 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/Build/source/texk/dvipdfm-x/configure.ac b/Build/source/texk/dvipdfm-x/configure.ac index 64ace3a92ff..73472f349fe 100644 --- a/Build/source/texk/dvipdfm-x/configure.ac +++ b/Build/source/texk/dvipdfm-x/configure.ac @@ -8,7 +8,7 @@ dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl -AC_INIT([dvipdfm-x (TeX Live)], [20240511], [dvipdfmx@tug.org]) +AC_INIT([dvipdfm-x (TeX Live)], [20240922], [dvipdfmx@tug.org]) AC_PREREQ([2.65]) AC_CONFIG_SRCDIR([agl.c]) AC_CONFIG_AUX_DIR([../../build-aux]) diff --git a/Build/source/texk/dvipdfm-x/tests/Makefile_upjf b/Build/source/texk/dvipdfm-x/tests/Makefile_upjf index b3a6b9664dd..63067169cfc 100644 --- a/Build/source/texk/dvipdfm-x/tests/Makefile_upjf +++ b/Build/source/texk/dvipdfm-x/tests/Makefile_upjf @@ -41,12 +41,14 @@ upjv-r00.ofm: upjf1-r.tfm: uppltotf upjf1-r.pl +# test for different mapping upjf1_full.vf: upjf1_full.zvp0 jfmutil zvp02vf upjf1_full.zvp0 upjf1_omit.vf: upjf1_omit.zvp0 jfmutil zvp02vf upjf1_omit.zvp0 +# test for variation selector, compound character upjf2_full.vf: upjf2_full.zvp0 jfmutil zvp02vf upjf2_full.zvp0 diff --git a/Build/source/texk/dvipdfm-x/tfm.c b/Build/source/texk/dvipdfm-x/tfm.c index ef092348a91..0f633d67811 100644 --- a/Build/source/texk/dvipdfm-x/tfm.c +++ b/Build/source/texk/dvipdfm-x/tfm.c @@ -56,6 +56,8 @@ #define CHARACTER_INDEX(i) ((i)) #endif +#define IS_WIDE_CHAR(i) (((i)>=0x2E80 && !(0xFB00<=(i) && (i)<=0xFB06))) + /* * TFM Record structure: * Multiple TFM's may be read in at once. @@ -77,7 +79,7 @@ struct tfm_font uint32_t nitcor, nlig, nkern, nextens; uint32_t nfonparm; #ifndef WITHOUT_OMEGA - uint32_t fontdir; + uint32_t fontdir, iswide; uint32_t nco, ncw, npc; #endif /* !WITHOUT_OMEGA */ fixword *header; @@ -105,6 +107,7 @@ tfm_font_init (struct tfm_font *tfm) #ifndef WITHOUT_OMEGA tfm->level = 0; tfm->fontdir = 0; + tfm->iswide = 0; tfm->nco = tfm->ncw = tfm->npc = 0; #endif tfm->char_info = NULL; @@ -263,7 +266,7 @@ struct font_metric fixword designsize; char *codingscheme; - int level, fontdir; + int level, fontdir, iswide; int firstchar, lastchar; fixword *widths; @@ -742,6 +745,9 @@ ofm_do_char_info_one (FILE *tfm_file, struct tfm_font *tfm) tfm->height_index[i+j+1] = tfm->height_index[i]; tfm->depth_index [i+j+1] = tfm->depth_index [i]; } + if (IS_WIDE_CHAR(i) || IS_WIDE_CHAR(i+repeats)) { + tfm->iswide = 1; + } /* Skip ahead because we have already handled repeats */ i += repeats; } @@ -804,6 +810,7 @@ read_ofm (struct font_metric *fm, FILE *ofm_file, off_t ofm_file_size) fm->lastchar = tfm.ec; fm->level = tfm.level; fm->source = SOURCE_TYPE_OFM; + fm->iswide = tfm.iswide; tfm_font_clear(&tfm); @@ -1266,7 +1273,7 @@ tfm_is_jfm (int font_id) if (fms[font_id].source == SOURCE_TYPE_JFM) is_jfm = 1; #ifndef WITHOUT_OMEGA if (fms[font_id].source == SOURCE_TYPE_OFM - && fms[font_id].level == 1 && fms[font_id].lastchar >= 0x2E00) is_jfm = 2; + && fms[font_id].level == 1 && fms[font_id].iswide == 1) is_jfm = 2; #endif return is_jfm; diff --git a/Build/source/texk/dvipsk/ChangeLog b/Build/source/texk/dvipsk/ChangeLog index 882de601225..86b089043bc 100644 --- a/Build/source/texk/dvipsk/ChangeLog +++ b/Build/source/texk/dvipsk/ChangeLog @@ -1,3 +1,23 @@ +2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * uptex-upjf2.test, testdata/upjf2.{tex,dvi}, + testdata/upj{f,v}-c.{pl,tfm}, + testdata/upj{f,v}2_full.{vf,zvp0}, testdata/upjf.map, + testdata/Makefile_upjf, Makefile.am: + Add a test for upTeX new encoding. + https://github.com/texjporg/tex-jp-build/issues/46 + +2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * virtualfont.c, dvips.h: Support upTeX new encoding + for combining characters via virtual fonts. + https://github.com/texjporg/tex-jp-build/issues/46 + * {virtualfont,dopage,tfmload}.c: + More strict check to interpret OFM FONTDIR + as pTeX vertical writing. + https://github.com/texjporg/tex-jp-build/issues/170#issuecomment-2295037307 + https://github.com/texjporg/tex-jp-build/issues/99 + 2024-03-10 Karl Berry <karl@tug.org> * TL'24 release. diff --git a/Build/source/texk/dvipsk/Makefile.am b/Build/source/texk/dvipsk/Makefile.am index 5b54e405977..c85f820d9aa 100644 --- a/Build/source/texk/dvipsk/Makefile.am +++ b/Build/source/texk/dvipsk/Makefile.am @@ -117,10 +117,13 @@ TESTS = test-afm2tfm.test test-afm2tfm-test.log: afm2tfm$(EXEEXT) TESTS += beginfontk1.test eepic-nan.test pfbincl.test \ quotecmd-test.pl same-name.test test-dvips.test \ - test-missing-image.test test-overflow-buffers.test uptex-vf.test + test-missing-image.test test-overflow-buffers.test \ + uptex-vf.test uptex-upjf2.test beginfontk1.log eepic-nan.log pfbincl.log \ quotecmd-test.log same-name.log test-dvips.log \ - test-overflow-buffers.log: dvips$(EXEEXT) + test-missing-image.log test-overflow-buffers.log \ + uptex-vf.log uptex-upjf2.log \ + : dvips$(EXEEXT) AM_TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea; export TEXMFCNF; AM_TESTS_ENVIRONMENT += TEXCONFIG=$(srcdir)/testdata; export TEXCONFIG; @@ -165,7 +168,7 @@ DISTCLEANFILES += beginfontk1.ps EXTRA_DIST += testdata/eepic-nan.dvi testdata/eepic-nan.tex DISTCLEANFILES += eepic-nan.ps ## pfbincl.test -EXTRA_DIST += testdata/pfbincl.eps testdata/pfbincl.tex testdata/pfbincl.xdv testdata/pfbincl.xps +EXTRA_DIST += testdata/pfbincl.eps testdata/pfbincl.tex testdata/pfbincl.xdv testdata/pfbincl.xps DISTCLEANFILES += pfbincl.ps ## quotecmd-test.pl EXTRA_DIST += testdata/quotecmd.dvi testdata/quotecmd.tex @@ -199,7 +202,14 @@ EXTRA_DIST += testdata/Makefile_upjf testdata/upjf.tex testdata/upjf.dvi testdat testdata/upjf1_full.zvp0 testdata/upjf1_full.vf \ testdata/upjf1_omit.zvp0 testdata/upjf1_omit.vf \ testdata/upjf_full.cnf testdata/upjf_omit.cnf -DISTCLEANFILES += upjf.vf upjv.vf upjf-*.ofm upjv-*.ofm upjf-*.tfm upjf*_full.ps upjf*_omit*.ps +DISTCLEANFILES += upjf.vf upjv.vf upjf-*.ofm upjv-*.ofm upjf-*.tfm \ + upjf*_full.ps upjf*_omit*.ps +## uptex-upjf2.test +EXTRA_DIST += testdata/upjf2.tex testdata/upjf2.dvi \ + testdata/upjf-c.pl testdata/upjf-c.tfm \ + testdata/upjv-c.pl testdata/upjv-c.tfm \ + testdata/upjf2_full.zvp0 testdata/upjf2_full.vf \ + testdata/upjv2_full.zvp0 testdata/upjv2_full.vf EXTRA_DIST += \ NEWS \ diff --git a/Build/source/texk/dvipsk/Makefile.in b/Build/source/texk/dvipsk/Makefile.in index 61be1a42cda..f94d3db6d32 100644 --- a/Build/source/texk/dvipsk/Makefile.in +++ b/Build/source/texk/dvipsk/Makefile.in @@ -782,7 +782,11 @@ EXTRA_DIST = $(dist_prologues) texc.script $(TESTS) testdata/8r.enc \ testdata/upjv-r00.ofm testdata/upjf1-r.pl testdata/upjf1-r.tfm \ testdata/upjf1_full.zvp0 testdata/upjf1_full.vf \ testdata/upjf1_omit.zvp0 testdata/upjf1_omit.vf \ - testdata/upjf_full.cnf testdata/upjf_omit.cnf NEWS TODO \ + testdata/upjf_full.cnf testdata/upjf_omit.cnf \ + testdata/upjf2.tex testdata/upjf2.dvi testdata/upjf-c.pl \ + testdata/upjf-c.tfm testdata/upjv-c.pl testdata/upjv-c.tfm \ + testdata/upjf2_full.zvp0 testdata/upjf2_full.vf \ + testdata/upjv2_full.zvp0 testdata/upjv2_full.vf NEWS TODO \ testdata/intoverflow.dvi testdata/vfnameoverflow.dvi atari \ cmfonts.map config.ps contrib/afm-extra contrib/colorsep.lpro \ contrib/configs contrib/crop.lpr contrib/latex209 \ @@ -795,7 +799,7 @@ TEST_EXTENSIONS = .pl .test TESTS = test-afm2tfm.test beginfontk1.test eepic-nan.test pfbincl.test \ quotecmd-test.pl same-name.test test-dvips.test \ test-missing-image.test test-overflow-buffers.test \ - uptex-vf.test + uptex-vf.test uptex-upjf2.test AM_TESTS_ENVIRONMENT = TEXMFCNF=$(srcdir)/../kpathsea; export \ TEXMFCNF; TEXCONFIG=$(srcdir)/testdata; export TEXCONFIG; \ TEXFONTS=$(srcdir)/testdata; export TEXFONTS; \ @@ -2046,7 +2050,9 @@ squeeze/stamp-squeeze: test-afm2tfm-test.log: afm2tfm$(EXEEXT) beginfontk1.log eepic-nan.log pfbincl.log \ quotecmd-test.log same-name.log test-dvips.log \ - test-overflow-buffers.log: dvips$(EXEEXT) + test-missing-image.log test-overflow-buffers.log \ + uptex-vf.log uptex-upjf2.log \ + : dvips$(EXEEXT) dist-hook: cd "$(distdir)" && rm -rf $(NEVER_DIST) diff --git a/Build/source/texk/dvipsk/dopage.c b/Build/source/texk/dvipsk/dopage.c index a9e23ca860b..e45e7766e1b 100644 --- a/Build/source/texk/dvipsk/dopage.c +++ b/Build/source/texk/dvipsk/dopage.c @@ -138,7 +138,7 @@ dochar: int kind0; cd0 = curfnt->localfonts->desc->chardesc; kind0 = curfnt->localfonts->desc->kind; - if (mychar<curfnt->localfonts->desc->maxchars && (cd0[mychar].flags & EXISTS)) { + if (mychar<curfnt->localfonts->desc->maxchars && (cd0[mychar].flags2 & EXISTS)) { #ifdef DEBUG if (dd(D_FONTS)) fprintf_str(stderr, diff --git a/Build/source/texk/dvipsk/dvips.h b/Build/source/texk/dvipsk/dvips.h index 6b79d53b7ab..9cc385d26d3 100644 --- a/Build/source/texk/dvipsk/dvips.h +++ b/Build/source/texk/dvipsk/dvips.h @@ -10,6 +10,7 @@ #define CREATIONDATE #define MAX_CODE 0x110000 +#define MAX_VF_CODE 0x1000000 #define MAX_2BYTES_CODE 0x10000 #define VF_MEM_UNIT 0x10000 #define CD_IDX(i) ((i>=MAX_2BYTES_CODE ? MAX_2BYTES_CODE : i)) diff --git a/Build/source/texk/dvipsk/testdata/Makefile_upjf b/Build/source/texk/dvipsk/testdata/Makefile_upjf index a457b565a2d..a64b1e269d5 100644 --- a/Build/source/texk/dvipsk/testdata/Makefile_upjf +++ b/Build/source/texk/dvipsk/testdata/Makefile_upjf @@ -41,12 +41,26 @@ upjv-r00.ofm: upjf1-r.tfm: uppltotf upjf1-r.pl -upjf1_full.vf: +# test for different mapping +upjf1_full.vf: upjf1_full.zvp0 jfmutil zvp02vf upjf1_full.zvp0 -upjf1_omit.vf: +upjf1_omit.vf: upjf1_omit.zvp0 jfmutil zvp02vf upjf1_omit.zvp0 +# test for variation selector, compound character +upjf2_full.vf: upjf2_full.zvp0 + jfmutil zvp02vf upjf2_full.zvp0 + +upjv2_full.vf: upjv2_full.zvp0 + jfmutil zvp02vf upjv2_full.zvp0 + +upjf-c.tfm: + uppltotf upjf-c.pl + +upjv-c.tfm: + uppltotf upjv-c.pl + upjf.dvi: upjf.tex uplatex upjf.tex dvispc -a upjf.dvi upjf.dvitxt @@ -54,3 +68,10 @@ upjf.dvi: upjf.tex dvispc -x upjf.dvitxt upjf.dvi rm upjf.dvitxt +upjf2.dvi: upjf2.tex + uplatex upjf2.tex + dvispc -a upjf2.dvi upjf2.dvitxt + sed -i '/xxx/d' upjf2.dvitxt + dvispc -x upjf2.dvitxt upjf2.dvi + rm upjf2.dvitxt + diff --git a/Build/source/texk/dvipsk/testdata/upjf-c.pl b/Build/source/texk/dvipsk/testdata/upjf-c.pl new file mode 100644 index 00000000000..e76699f7a07 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf-c.pl @@ -0,0 +1,24 @@ +(COMMENT THIS IS A KANJI FORMAT FILE) +(FAMILY UPJIS KANJI) +(FACE F MRR) +(CODINGSCHEME TEX KANJI TEXT) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM O 0) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.0) + (STRETCH R 0.1) + (SHRINK R 0.0) + (XHEIGHT R 1.0) + (QUAD R 1.0) + (EXTRASPACE R 0.25) + (EXTRASTRETCH R 0.2) + (EXTRASHRINK R 0.125) + ) +(TYPE O 0 + (CHARWD R 1.0) + (CHARHT R 0.88) + (CHARDP R 0.12) + ) diff --git a/Build/source/texk/dvipsk/testdata/upjf-c.tfm b/Build/source/texk/dvipsk/testdata/upjf-c.tfm Binary files differnew file mode 100644 index 00000000000..9a525bb5a8a --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf-c.tfm diff --git a/Build/source/texk/dvipsk/testdata/upjf.map b/Build/source/texk/dvipsk/testdata/upjf.map index 78add04a954..0261e7a9706 100644 --- a/Build/source/texk/dvipsk/testdata/upjf.map +++ b/Build/source/texk/dvipsk/testdata/upjf.map @@ -1,6 +1,8 @@ upjf-r Ryumin-Light-UniJIS-UTF16-H upjf-g GothicBBB-Medium-UniJIS-UTF16-H +upjf-c Ryumin-Light-Identity-H upjv-r Ryumin-Light-UniJIS-UTF16-V upjv-g GothicBBB-Medium-UniJIS-UTF16-V +upjv-c Ryumin-Light-Identity-V cmr10 <cmr10.pfb diff --git a/Build/source/texk/dvipsk/testdata/upjf2.dvi b/Build/source/texk/dvipsk/testdata/upjf2.dvi Binary files differnew file mode 100644 index 00000000000..4365546fcda --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf2.dvi diff --git a/Build/source/texk/dvipsk/testdata/upjf2.tex b/Build/source/texk/dvipsk/testdata/upjf2.tex new file mode 100644 index 00000000000..3c888362869 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf2.tex @@ -0,0 +1,22 @@ +% Copyright (C) 2020-2024 Japanese TeX Development Community +% You may freely use, modify and/or distribute this file. + +\documentclass{ujarticle} +%\usepackage[T1]{fontenc} +%\usepackage{mathptmx} + +\begin{document} +\pagestyle{empty} +\prebreakpenalty`ㇷ=0 +\font\upjf=upjf at 10pt +\fbox{\hbox{\yoko +\upjf あいうえおか゚ㇷㇷ゚アイウエオ、☃~雪晴☀𠮟。卿卿 卿︂卿󠄀卿󠄁卿󠄂,ABC xyz. +}} + +\tbaselineshift0.3zh +\font\upjv=upjv at 10pt +\fbox{\hbox{\tate +\upjv あいうえおか゚ㇷㇷ゚、☃~雪晴☀𠮟。卿卿 卿︂卿󠄀卿󠄁卿󠄂,ABC xyz. +}} +\end{document} + diff --git a/Build/source/texk/dvipsk/testdata/upjf2_full.vf b/Build/source/texk/dvipsk/testdata/upjf2_full.vf Binary files differnew file mode 100644 index 00000000000..0cf7145cab7 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf2_full.vf diff --git a/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0 b/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0 new file mode 100644 index 00000000000..c570b16b47d --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjf2_full.zvp0 @@ -0,0 +1,2979 @@ +(VTITLE ) +(DESIGNSIZE R 10.0) +(CHECKSUM O 0) +(MAPFONT D 0 + (FONTNAME upjf-r) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME upjf-g) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME upjf-c) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H A7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H A7) + ) + ) +(CHARACTER H D7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H D7) + ) + ) +(CHARACTER H F7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H F7) + ) + ) +(CHARACTER H 2018 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 2) + (SETCHAR H 29E) + ) + ) +(CHARACTER H 2019 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 2) + (SETCHAR H 29F) + ) + ) +(CHARACTER H 201C + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 2) + (SETCHAR H 2A0) + ) + ) +(CHARACTER H 201D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 2) + (SETCHAR H 2A1) + ) + ) +(CHARACTER H 2600 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2600) + ) + ) +(CHARACTER H 2603 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2603) + ) + ) +(CHARACTER H 3000 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3000) + ) + ) +(CHARACTER H 3001 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3001) + ) + ) +(CHARACTER H 3002 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3002) + ) + ) +(CHARACTER H 3003 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3003) + ) + ) +(CHARACTER H 3004 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3004) + ) + ) +(CHARACTER H 3005 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3005) + ) + ) +(CHARACTER H 3006 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3006) + ) + ) +(CHARACTER H 3007 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3007) + ) + ) +(CHARACTER H 3008 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3008) + ) + ) +(CHARACTER H 3009 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3009) + ) + ) +(CHARACTER H 300A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300A) + ) + ) +(CHARACTER H 300B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300B) + ) + ) +(CHARACTER H 300C + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300C) + ) + ) +(CHARACTER H 300D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300D) + ) + ) +(CHARACTER H 300E + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300E) + ) + ) +(CHARACTER H 300F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300F) + ) + ) +(CHARACTER H 3010 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3010) + ) + ) +(CHARACTER H 3011 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3011) + ) + ) +(CHARACTER H 3012 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3012) + ) + ) +(CHARACTER H 3013 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3013) + ) + ) +(CHARACTER H 3014 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3014) + ) + ) +(CHARACTER H 3015 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3015) + ) + ) +(CHARACTER H 3016 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3016) + ) + ) +(CHARACTER H 3017 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3017) + ) + ) +(CHARACTER H 3018 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3018) + ) + ) +(CHARACTER H 3019 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3019) + ) + ) +(CHARACTER H 301A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 301A) + ) + ) +(CHARACTER H 301B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301B) + ) + ) +(CHARACTER H 301C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301C) + ) + ) +(CHARACTER H 301D + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 301D) + ) + ) +(CHARACTER H 301E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301E) + ) + ) +(CHARACTER H 301F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301F) + ) + ) +(CHARACTER H 3020 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3020) + ) + ) +(CHARACTER H 3021 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3021) + ) + ) +(CHARACTER H 3022 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3022) + ) + ) +(CHARACTER H 3023 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3023) + ) + ) +(CHARACTER H 3024 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3024) + ) + ) +(CHARACTER H 3025 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3025) + ) + ) +(CHARACTER H 3026 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3026) + ) + ) +(CHARACTER H 3027 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3027) + ) + ) +(CHARACTER H 3028 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3028) + ) + ) +(CHARACTER H 3029 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3029) + ) + ) +(CHARACTER H 302A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302A) + ) + ) +(CHARACTER H 302B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302B) + ) + ) +(CHARACTER H 302C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302C) + ) + ) +(CHARACTER H 302D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302D) + ) + ) +(CHARACTER H 302E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302E) + ) + ) +(CHARACTER H 302F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302F) + ) + ) +(CHARACTER H 3030 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3030) + ) + ) +(CHARACTER H 3031 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3031) + ) + ) +(CHARACTER H 3032 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3032) + ) + ) +(CHARACTER H 3033 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3033) + ) + ) +(CHARACTER H 3034 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3034) + ) + ) +(CHARACTER H 3035 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3035) + ) + ) +(CHARACTER H 3036 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3036) + ) + ) +(CHARACTER H 3037 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3037) + ) + ) +(CHARACTER H 3038 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3038) + ) + ) +(CHARACTER H 3039 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3039) + ) + ) +(CHARACTER H 303A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303A) + ) + ) +(CHARACTER H 303B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303B) + ) + ) +(CHARACTER H 303C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303C) + ) + ) +(CHARACTER H 303D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303D) + ) + ) +(CHARACTER H 303E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303E) + ) + ) +(CHARACTER H 303F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303F) + ) + ) +(CHARACTER H 3040 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3040) + ) + ) +(CHARACTER H 3041 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3041) + ) + ) +(CHARACTER H 3042 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3042) + ) + ) +(CHARACTER H 3043 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3043) + ) + ) +(CHARACTER H 3044 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3044) + ) + ) +(CHARACTER H 3045 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3045) + ) + ) +(CHARACTER H 3046 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3046) + ) + ) +(CHARACTER H 3047 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3047) + ) + ) +(CHARACTER H 3048 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3048) + ) + ) +(CHARACTER H 3049 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3049) + ) + ) +(CHARACTER H 304A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304A) + ) + ) +(CHARACTER H 304B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304B) + ) + ) +(CHARACTER H 304C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304C) + ) + ) +(CHARACTER H 304D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304D) + ) + ) +(CHARACTER H 304E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304E) + ) + ) +(CHARACTER H 304F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304F) + ) + ) +(CHARACTER H 3050 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3050) + ) + ) +(CHARACTER H 3051 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3051) + ) + ) +(CHARACTER H 3052 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3052) + ) + ) +(CHARACTER H 3053 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3053) + ) + ) +(CHARACTER H 3054 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3054) + ) + ) +(CHARACTER H 3055 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3055) + ) + ) +(CHARACTER H 3056 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3056) + ) + ) +(CHARACTER H 3057 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3057) + ) + ) +(CHARACTER H 3058 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3058) + ) + ) +(CHARACTER H 3059 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3059) + ) + ) +(CHARACTER H 305A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305A) + ) + ) +(CHARACTER H 305B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305B) + ) + ) +(CHARACTER H 305C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305C) + ) + ) +(CHARACTER H 305D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305D) + ) + ) +(CHARACTER H 305E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305E) + ) + ) +(CHARACTER H 305F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305F) + ) + ) +(CHARACTER H 3060 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3060) + ) + ) +(CHARACTER H 3061 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3061) + ) + ) +(CHARACTER H 3062 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3062) + ) + ) +(CHARACTER H 3063 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3063) + ) + ) +(CHARACTER H 3064 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3064) + ) + ) +(CHARACTER H 3065 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3065) + ) + ) +(CHARACTER H 3066 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3066) + ) + ) +(CHARACTER H 3067 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3067) + ) + ) +(CHARACTER H 3068 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3068) + ) + ) +(CHARACTER H 3069 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3069) + ) + ) +(CHARACTER H 306A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306A) + ) + ) +(CHARACTER H 306B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306B) + ) + ) +(CHARACTER H 306C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306C) + ) + ) +(CHARACTER H 306D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306D) + ) + ) +(CHARACTER H 306E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306E) + ) + ) +(CHARACTER H 306F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306F) + ) + ) +(CHARACTER H 3070 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3070) + ) + ) +(CHARACTER H 3071 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3071) + ) + ) +(CHARACTER H 3072 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3072) + ) + ) +(CHARACTER H 3073 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3073) + ) + ) +(CHARACTER H 3074 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3074) + ) + ) +(CHARACTER H 3075 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3075) + ) + ) +(CHARACTER H 3076 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3076) + ) + ) +(CHARACTER H 3077 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3077) + ) + ) +(CHARACTER H 3078 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3078) + ) + ) +(CHARACTER H 3079 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3079) + ) + ) +(CHARACTER H 307A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307A) + ) + ) +(CHARACTER H 307B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307B) + ) + ) +(CHARACTER H 307C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307C) + ) + ) +(CHARACTER H 307D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307D) + ) + ) +(CHARACTER H 307E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307E) + ) + ) +(CHARACTER H 307F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307F) + ) + ) +(CHARACTER H 3080 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3080) + ) + ) +(CHARACTER H 3081 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3081) + ) + ) +(CHARACTER H 3082 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3082) + ) + ) +(CHARACTER H 3083 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3083) + ) + ) +(CHARACTER H 3084 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3084) + ) + ) +(CHARACTER H 3085 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3085) + ) + ) +(CHARACTER H 3086 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3086) + ) + ) +(CHARACTER H 3087 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3087) + ) + ) +(CHARACTER H 3088 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3088) + ) + ) +(CHARACTER H 3089 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3089) + ) + ) +(CHARACTER H 308A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308A) + ) + ) +(CHARACTER H 308B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308B) + ) + ) +(CHARACTER H 308C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308C) + ) + ) +(CHARACTER H 308D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308D) + ) + ) +(CHARACTER H 308E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308E) + ) + ) +(CHARACTER H 308F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308F) + ) + ) +(CHARACTER H 3090 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3090) + ) + ) +(CHARACTER H 3091 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3091) + ) + ) +(CHARACTER H 3092 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3092) + ) + ) +(CHARACTER H 3093 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3093) + ) + ) +(CHARACTER H 3094 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3094) + ) + ) +(CHARACTER H 3095 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3095) + ) + ) +(CHARACTER H 3096 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3096) + ) + ) +(CHARACTER H 3097 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3097) + ) + ) +(CHARACTER H 3098 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3098) + ) + ) +(CHARACTER H 3099 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3099) + ) + ) +(CHARACTER H 309A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309A) + ) + ) +(CHARACTER H 309B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309B) + ) + ) +(CHARACTER H 309C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309C) + ) + ) +(CHARACTER H 309D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309D) + ) + ) +(CHARACTER H 309E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309E) + ) + ) +(CHARACTER H 309F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309F) + ) + ) +(CHARACTER H 537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 537F) + ) + ) +(CHARACTER H 6674 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6674) + ) + ) +(CHARACTER H 96EA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 96EA) + ) + ) +(CHARACTER H FF00 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF00) + ) + ) +(CHARACTER H FF01 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF01) + ) + ) +(CHARACTER H FF02 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF02) + ) + ) +(CHARACTER H FF03 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF03) + ) + ) +(CHARACTER H FF04 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF04) + ) + ) +(CHARACTER H FF05 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF05) + ) + ) +(CHARACTER H FF06 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF06) + ) + ) +(CHARACTER H FF07 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF07) + ) + ) +(CHARACTER H FF08 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF08) + ) + ) +(CHARACTER H FF09 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF09) + ) + ) +(CHARACTER H FF0A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0A) + ) + ) +(CHARACTER H FF0B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0B) + ) + ) +(CHARACTER H FF0C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0C) + ) + ) +(CHARACTER H FF0D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0D) + ) + ) +(CHARACTER H FF0E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0E) + ) + ) +(CHARACTER H FF0F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0F) + ) + ) +(CHARACTER H FF10 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF10) + ) + ) +(CHARACTER H FF11 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF11) + ) + ) +(CHARACTER H FF12 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF12) + ) + ) +(CHARACTER H FF13 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF13) + ) + ) +(CHARACTER H FF14 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF14) + ) + ) +(CHARACTER H FF15 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF15) + ) + ) +(CHARACTER H FF16 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF16) + ) + ) +(CHARACTER H FF17 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF17) + ) + ) +(CHARACTER H FF18 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF18) + ) + ) +(CHARACTER H FF19 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF19) + ) + ) +(CHARACTER H FF1A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.25) + (SELECTFONT D 1) + (SETCHAR H FF1A) + ) + ) +(CHARACTER H FF1B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.25) + (SELECTFONT D 1) + (SETCHAR H FF1B) + ) + ) +(CHARACTER H FF1C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1C) + ) + ) +(CHARACTER H FF1D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1D) + ) + ) +(CHARACTER H FF1E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1E) + ) + ) +(CHARACTER H FF1F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1F) + ) + ) +(CHARACTER H FF20 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF20) + ) + ) +(CHARACTER H FF21 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF21) + ) + ) +(CHARACTER H FF22 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF22) + ) + ) +(CHARACTER H FF23 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF23) + ) + ) +(CHARACTER H FF24 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF24) + ) + ) +(CHARACTER H FF25 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF25) + ) + ) +(CHARACTER H FF26 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF26) + ) + ) +(CHARACTER H FF27 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF27) + ) + ) +(CHARACTER H FF28 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF28) + ) + ) +(CHARACTER H FF29 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF29) + ) + ) +(CHARACTER H FF2A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2A) + ) + ) +(CHARACTER H FF2B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2B) + ) + ) +(CHARACTER H FF2C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2C) + ) + ) +(CHARACTER H FF2D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2D) + ) + ) +(CHARACTER H FF2E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2E) + ) + ) +(CHARACTER H FF2F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2F) + ) + ) +(CHARACTER H FF30 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF30) + ) + ) +(CHARACTER H FF31 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF31) + ) + ) +(CHARACTER H FF32 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF32) + ) + ) +(CHARACTER H FF33 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF33) + ) + ) +(CHARACTER H FF34 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF34) + ) + ) +(CHARACTER H FF35 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF35) + ) + ) +(CHARACTER H FF36 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF36) + ) + ) +(CHARACTER H FF37 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF37) + ) + ) +(CHARACTER H FF38 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF38) + ) + ) +(CHARACTER H FF39 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF39) + ) + ) +(CHARACTER H FF3A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3A) + ) + ) +(CHARACTER H FF3B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF3B) + ) + ) +(CHARACTER H FF3C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3C) + ) + ) +(CHARACTER H FF3D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3D) + ) + ) +(CHARACTER H FF3E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3E) + ) + ) +(CHARACTER H FF3F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3F) + ) + ) +(CHARACTER H FF40 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF40) + ) + ) +(CHARACTER H FF41 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF41) + ) + ) +(CHARACTER H FF42 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF42) + ) + ) +(CHARACTER H FF43 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF43) + ) + ) +(CHARACTER H FF44 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF44) + ) + ) +(CHARACTER H FF45 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF45) + ) + ) +(CHARACTER H FF46 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF46) + ) + ) +(CHARACTER H FF47 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF47) + ) + ) +(CHARACTER H FF48 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF48) + ) + ) +(CHARACTER H FF49 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF49) + ) + ) +(CHARACTER H FF4A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4A) + ) + ) +(CHARACTER H FF4B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4B) + ) + ) +(CHARACTER H FF4C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4C) + ) + ) +(CHARACTER H FF4D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4D) + ) + ) +(CHARACTER H FF4E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4E) + ) + ) +(CHARACTER H FF4F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4F) + ) + ) +(CHARACTER H FF50 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF50) + ) + ) +(CHARACTER H FF51 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF51) + ) + ) +(CHARACTER H FF52 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF52) + ) + ) +(CHARACTER H FF53 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF53) + ) + ) +(CHARACTER H FF54 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF54) + ) + ) +(CHARACTER H FF55 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF55) + ) + ) +(CHARACTER H FF56 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF56) + ) + ) +(CHARACTER H FF57 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF57) + ) + ) +(CHARACTER H FF58 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF58) + ) + ) +(CHARACTER H FF59 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF59) + ) + ) +(CHARACTER H FF5A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5A) + ) + ) +(CHARACTER H FF5B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF5B) + ) + ) +(CHARACTER H FF5C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5C) + ) + ) +(CHARACTER H FF5D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5D) + ) + ) +(CHARACTER H FF5E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5E) + ) + ) +(CHARACTER H FF5F + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF5F) + ) + ) +(CHARACTER H FF60 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF60) + ) + ) +(CHARACTER H FF61 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF61) + ) + ) +(CHARACTER H FF62 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF62) + ) + ) +(CHARACTER H FF63 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF63) + ) + ) +(CHARACTER H FF64 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF64) + ) + ) +(CHARACTER H FF65 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF65) + ) + ) +(CHARACTER H FF66 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF66) + ) + ) +(CHARACTER H FF67 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF67) + ) + ) +(CHARACTER H FF68 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF68) + ) + ) +(CHARACTER H FF69 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF69) + ) + ) +(CHARACTER H FF6A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6A) + ) + ) +(CHARACTER H FF6B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6B) + ) + ) +(CHARACTER H FF6C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6C) + ) + ) +(CHARACTER H FF6D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6D) + ) + ) +(CHARACTER H FF6E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6E) + ) + ) +(CHARACTER H FF6F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6F) + ) + ) +(CHARACTER H FF70 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF70) + ) + ) +(CHARACTER H FF71 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF71) + ) + ) +(CHARACTER H FF72 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF72) + ) + ) +(CHARACTER H FF73 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF73) + ) + ) +(CHARACTER H FF74 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF74) + ) + ) +(CHARACTER H FF75 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF75) + ) + ) +(CHARACTER H FF76 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF76) + ) + ) +(CHARACTER H FF77 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF77) + ) + ) +(CHARACTER H FF78 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF78) + ) + ) +(CHARACTER H FF79 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF79) + ) + ) +(CHARACTER H FF7A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7A) + ) + ) +(CHARACTER H FF7B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7B) + ) + ) +(CHARACTER H FF7C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7C) + ) + ) +(CHARACTER H FF7D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7D) + ) + ) +(CHARACTER H FF7E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7E) + ) + ) +(CHARACTER H FF7F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7F) + ) + ) +(CHARACTER H FF80 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF80) + ) + ) +(CHARACTER H FF81 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF81) + ) + ) +(CHARACTER H FF82 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF82) + ) + ) +(CHARACTER H FF83 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF83) + ) + ) +(CHARACTER H FF84 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF84) + ) + ) +(CHARACTER H FF85 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF85) + ) + ) +(CHARACTER H FF86 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF86) + ) + ) +(CHARACTER H FF87 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF87) + ) + ) +(CHARACTER H FF88 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF88) + ) + ) +(CHARACTER H FF89 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF89) + ) + ) +(CHARACTER H FF8A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8A) + ) + ) +(CHARACTER H FF8B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8B) + ) + ) +(CHARACTER H FF8C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8C) + ) + ) +(CHARACTER H FF8D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8D) + ) + ) +(CHARACTER H FF8E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8E) + ) + ) +(CHARACTER H FF8F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8F) + ) + ) +(CHARACTER H FF90 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF90) + ) + ) +(CHARACTER H FF91 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF91) + ) + ) +(CHARACTER H FF92 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF92) + ) + ) +(CHARACTER H FF93 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF93) + ) + ) +(CHARACTER H FF94 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF94) + ) + ) +(CHARACTER H FF95 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF95) + ) + ) +(CHARACTER H FF96 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF96) + ) + ) +(CHARACTER H FF97 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF97) + ) + ) +(CHARACTER H FF98 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF98) + ) + ) +(CHARACTER H FF99 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF99) + ) + ) +(CHARACTER H FF9A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9A) + ) + ) +(CHARACTER H FF9B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9B) + ) + ) +(CHARACTER H FF9C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9C) + ) + ) +(CHARACTER H FF9D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9D) + ) + ) +(CHARACTER H FF9E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9E) + ) + ) +(CHARACTER H FF9F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9F) + ) + ) +(CHARACTER H FFA0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA0) + ) + ) +(CHARACTER H FFA1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA1) + ) + ) +(CHARACTER H FFA2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA2) + ) + ) +(CHARACTER H FFA3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA3) + ) + ) +(CHARACTER H FFA4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA4) + ) + ) +(CHARACTER H FFA5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA5) + ) + ) +(CHARACTER H FFA6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA6) + ) + ) +(CHARACTER H FFA7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA7) + ) + ) +(CHARACTER H FFA8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA8) + ) + ) +(CHARACTER H FFA9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA9) + ) + ) +(CHARACTER H FFAA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAA) + ) + ) +(CHARACTER H FFAB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAB) + ) + ) +(CHARACTER H FFAC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAC) + ) + ) +(CHARACTER H FFAD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAD) + ) + ) +(CHARACTER H FFAE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAE) + ) + ) +(CHARACTER H FFAF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAF) + ) + ) +(CHARACTER H FFB0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB0) + ) + ) +(CHARACTER H FFB1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB1) + ) + ) +(CHARACTER H FFB2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB2) + ) + ) +(CHARACTER H FFB3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB3) + ) + ) +(CHARACTER H FFB4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB4) + ) + ) +(CHARACTER H FFB5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB5) + ) + ) +(CHARACTER H FFB6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB6) + ) + ) +(CHARACTER H FFB7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB7) + ) + ) +(CHARACTER H FFB8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB8) + ) + ) +(CHARACTER H FFB9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB9) + ) + ) +(CHARACTER H FFBA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBA) + ) + ) +(CHARACTER H FFBB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBB) + ) + ) +(CHARACTER H FFBC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBC) + ) + ) +(CHARACTER H FFBD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBD) + ) + ) +(CHARACTER H FFBE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBE) + ) + ) +(CHARACTER H FFBF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBF) + ) + ) +(CHARACTER H FFC0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC0) + ) + ) +(CHARACTER H FFC1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC1) + ) + ) +(CHARACTER H FFC2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC2) + ) + ) +(CHARACTER H FFC3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC3) + ) + ) +(CHARACTER H FFC4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC4) + ) + ) +(CHARACTER H FFC5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC5) + ) + ) +(CHARACTER H FFC6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC6) + ) + ) +(CHARACTER H FFC7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC7) + ) + ) +(CHARACTER H FFC8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC8) + ) + ) +(CHARACTER H FFC9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC9) + ) + ) +(CHARACTER H FFCA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCA) + ) + ) +(CHARACTER H FFCB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCB) + ) + ) +(CHARACTER H FFCC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCC) + ) + ) +(CHARACTER H FFCD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCD) + ) + ) +(CHARACTER H FFCE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCE) + ) + ) +(CHARACTER H FFCF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCF) + ) + ) +(CHARACTER H FFD0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD0) + ) + ) +(CHARACTER H FFD1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD1) + ) + ) +(CHARACTER H FFD2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD2) + ) + ) +(CHARACTER H FFD3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD3) + ) + ) +(CHARACTER H FFD4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD4) + ) + ) +(CHARACTER H FFD5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD5) + ) + ) +(CHARACTER H FFD6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD6) + ) + ) +(CHARACTER H FFD7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD7) + ) + ) +(CHARACTER H FFD8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD8) + ) + ) +(CHARACTER H FFD9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD9) + ) + ) +(CHARACTER H FFDA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDA) + ) + ) +(CHARACTER H FFDB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDB) + ) + ) +(CHARACTER H FFDC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDC) + ) + ) +(CHARACTER H FFDD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDD) + ) + ) +(CHARACTER H FFDE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDE) + ) + ) +(CHARACTER H FFDF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDF) + ) + ) +(CHARACTER H FFE0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE0) + ) + ) +(CHARACTER H FFE1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE1) + ) + ) +(CHARACTER H FFE2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE2) + ) + ) +(CHARACTER H FFE3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE3) + ) + ) +(CHARACTER H FFE4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE4) + ) + ) +(CHARACTER H FFE5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE5) + ) + ) +(CHARACTER H FFE6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE6) + ) + ) +(CHARACTER H FFE7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE7) + ) + ) +(CHARACTER H FFE8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE8) + ) + ) +(CHARACTER H FFE9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE9) + ) + ) +(CHARACTER H FFEA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEA) + ) + ) +(CHARACTER H FFEB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEB) + ) + ) +(CHARACTER H FFEC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEC) + ) + ) +(CHARACTER H FFED + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFED) + ) + ) +(CHARACTER H FFEE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEE) + ) + ) +(CHARACTER H FFEF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEF) + ) + ) +(CHARACTER H 20B9F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 20B9F) + ) + ) +(CHARACTER H 2F833 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F833) + ) + ) +(CHARACTER H 24304B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3F51) + ) + ) +(CHARACTER H 2431F7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3F76) + ) + ) +(CHARACTER H 48537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F833) + ) + ) +(CHARACTER H 80537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3597) + ) + ) +(CHARACTER H 84537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 6A2) + ) + ) +(CHARACTER H 88537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 1DED) + ) + ) diff --git a/Build/source/texk/dvipsk/testdata/upjv-c.pl b/Build/source/texk/dvipsk/testdata/upjv-c.pl new file mode 100644 index 00000000000..91ec7bbb9d2 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjv-c.pl @@ -0,0 +1,25 @@ +(COMMENT THIS IS A KANJI FORMAT FILE) +(DIRECTION TATE) +(FAMILY UPJIS KANJI) +(FACE F MRR) +(CODINGSCHEME TEX KANJI TEXT) +(DESIGNSIZE R 10.0) +(COMMENT DESIGNSIZE IS IN POINTS) +(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE) +(CHECKSUM O 0) +(FONTDIMEN + (SLANT R 0.0) + (SPACE R 0.0) + (STRETCH R 0.1) + (SHRINK R 0.0) + (XHEIGHT R 1.0) + (QUAD R 1.0) + (EXTRASPACE R 0.25) + (EXTRASTRETCH R 0.2) + (EXTRASHRINK R 0.125) + ) +(TYPE O 0 + (CHARWD R 1.0) + (CHARHT R 0.5) + (CHARDP R 0.5) + ) diff --git a/Build/source/texk/dvipsk/testdata/upjv-c.tfm b/Build/source/texk/dvipsk/testdata/upjv-c.tfm Binary files differnew file mode 100644 index 00000000000..4491109d447 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjv-c.tfm diff --git a/Build/source/texk/dvipsk/testdata/upjv2_full.vf b/Build/source/texk/dvipsk/testdata/upjv2_full.vf Binary files differnew file mode 100644 index 00000000000..29b8536902b --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjv2_full.vf diff --git a/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0 b/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0 new file mode 100644 index 00000000000..b36d2e66196 --- /dev/null +++ b/Build/source/texk/dvipsk/testdata/upjv2_full.zvp0 @@ -0,0 +1,2979 @@ +(VTITLE ) +(DESIGNSIZE R 10.0) +(CHECKSUM O 0) +(MAPFONT D 0 + (FONTNAME upjv-r) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 1 + (FONTNAME upjv-g) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(MAPFONT D 2 + (FONTNAME upjv-c) + (FONTCHECKSUM O 0) + (FONTAT R 1.0) + (FONTDSIZE R 10.0) + ) +(CHARACTER H A7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H A7) + ) + ) +(CHARACTER H D7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H D7) + ) + ) +(CHARACTER H F7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H F7) + ) + ) +(CHARACTER H 2018 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 2) + (SETCHAR H 2059) + ) + ) +(CHARACTER H 2019 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 2) + (SETCHAR H 205A) + ) + ) +(CHARACTER H 201C + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 2) + (SETCHAR H 2057) + ) + ) +(CHARACTER H 201D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 2) + (SETCHAR H 2058) + ) + ) +(CHARACTER H 2600 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2600) + ) + ) +(CHARACTER H 2603 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 2603) + ) + ) +(CHARACTER H 3000 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3000) + ) + ) +(CHARACTER H 3001 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3001) + ) + ) +(CHARACTER H 3002 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3002) + ) + ) +(CHARACTER H 3003 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3003) + ) + ) +(CHARACTER H 3004 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3004) + ) + ) +(CHARACTER H 3005 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3005) + ) + ) +(CHARACTER H 3006 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3006) + ) + ) +(CHARACTER H 3007 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3007) + ) + ) +(CHARACTER H 3008 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3008) + ) + ) +(CHARACTER H 3009 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3009) + ) + ) +(CHARACTER H 300A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300A) + ) + ) +(CHARACTER H 300B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300B) + ) + ) +(CHARACTER H 300C + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300C) + ) + ) +(CHARACTER H 300D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300D) + ) + ) +(CHARACTER H 300E + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 300E) + ) + ) +(CHARACTER H 300F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 300F) + ) + ) +(CHARACTER H 3010 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3010) + ) + ) +(CHARACTER H 3011 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3011) + ) + ) +(CHARACTER H 3012 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3012) + ) + ) +(CHARACTER H 3013 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3013) + ) + ) +(CHARACTER H 3014 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3014) + ) + ) +(CHARACTER H 3015 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3015) + ) + ) +(CHARACTER H 3016 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3016) + ) + ) +(CHARACTER H 3017 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3017) + ) + ) +(CHARACTER H 3018 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 3018) + ) + ) +(CHARACTER H 3019 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3019) + ) + ) +(CHARACTER H 301A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 301A) + ) + ) +(CHARACTER H 301B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301B) + ) + ) +(CHARACTER H 301C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301C) + ) + ) +(CHARACTER H 301D + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H 301D) + ) + ) +(CHARACTER H 301E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301E) + ) + ) +(CHARACTER H 301F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H 301F) + ) + ) +(CHARACTER H 3020 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3020) + ) + ) +(CHARACTER H 3021 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3021) + ) + ) +(CHARACTER H 3022 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3022) + ) + ) +(CHARACTER H 3023 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3023) + ) + ) +(CHARACTER H 3024 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3024) + ) + ) +(CHARACTER H 3025 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3025) + ) + ) +(CHARACTER H 3026 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3026) + ) + ) +(CHARACTER H 3027 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3027) + ) + ) +(CHARACTER H 3028 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3028) + ) + ) +(CHARACTER H 3029 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3029) + ) + ) +(CHARACTER H 302A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302A) + ) + ) +(CHARACTER H 302B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302B) + ) + ) +(CHARACTER H 302C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302C) + ) + ) +(CHARACTER H 302D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302D) + ) + ) +(CHARACTER H 302E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302E) + ) + ) +(CHARACTER H 302F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 302F) + ) + ) +(CHARACTER H 3030 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3030) + ) + ) +(CHARACTER H 3031 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3031) + ) + ) +(CHARACTER H 3032 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3032) + ) + ) +(CHARACTER H 3033 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3033) + ) + ) +(CHARACTER H 3034 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3034) + ) + ) +(CHARACTER H 3035 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3035) + ) + ) +(CHARACTER H 3036 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3036) + ) + ) +(CHARACTER H 3037 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3037) + ) + ) +(CHARACTER H 3038 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3038) + ) + ) +(CHARACTER H 3039 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3039) + ) + ) +(CHARACTER H 303A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303A) + ) + ) +(CHARACTER H 303B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303B) + ) + ) +(CHARACTER H 303C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303C) + ) + ) +(CHARACTER H 303D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303D) + ) + ) +(CHARACTER H 303E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303E) + ) + ) +(CHARACTER H 303F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 303F) + ) + ) +(CHARACTER H 3040 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3040) + ) + ) +(CHARACTER H 3041 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3041) + ) + ) +(CHARACTER H 3042 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3042) + ) + ) +(CHARACTER H 3043 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3043) + ) + ) +(CHARACTER H 3044 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3044) + ) + ) +(CHARACTER H 3045 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3045) + ) + ) +(CHARACTER H 3046 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3046) + ) + ) +(CHARACTER H 3047 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3047) + ) + ) +(CHARACTER H 3048 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3048) + ) + ) +(CHARACTER H 3049 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3049) + ) + ) +(CHARACTER H 304A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304A) + ) + ) +(CHARACTER H 304B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304B) + ) + ) +(CHARACTER H 304C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304C) + ) + ) +(CHARACTER H 304D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304D) + ) + ) +(CHARACTER H 304E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304E) + ) + ) +(CHARACTER H 304F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 304F) + ) + ) +(CHARACTER H 3050 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3050) + ) + ) +(CHARACTER H 3051 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3051) + ) + ) +(CHARACTER H 3052 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3052) + ) + ) +(CHARACTER H 3053 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3053) + ) + ) +(CHARACTER H 3054 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3054) + ) + ) +(CHARACTER H 3055 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3055) + ) + ) +(CHARACTER H 3056 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3056) + ) + ) +(CHARACTER H 3057 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3057) + ) + ) +(CHARACTER H 3058 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3058) + ) + ) +(CHARACTER H 3059 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3059) + ) + ) +(CHARACTER H 305A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305A) + ) + ) +(CHARACTER H 305B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305B) + ) + ) +(CHARACTER H 305C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305C) + ) + ) +(CHARACTER H 305D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305D) + ) + ) +(CHARACTER H 305E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305E) + ) + ) +(CHARACTER H 305F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 305F) + ) + ) +(CHARACTER H 3060 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3060) + ) + ) +(CHARACTER H 3061 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3061) + ) + ) +(CHARACTER H 3062 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3062) + ) + ) +(CHARACTER H 3063 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3063) + ) + ) +(CHARACTER H 3064 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3064) + ) + ) +(CHARACTER H 3065 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3065) + ) + ) +(CHARACTER H 3066 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3066) + ) + ) +(CHARACTER H 3067 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3067) + ) + ) +(CHARACTER H 3068 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3068) + ) + ) +(CHARACTER H 3069 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3069) + ) + ) +(CHARACTER H 306A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306A) + ) + ) +(CHARACTER H 306B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306B) + ) + ) +(CHARACTER H 306C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306C) + ) + ) +(CHARACTER H 306D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306D) + ) + ) +(CHARACTER H 306E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306E) + ) + ) +(CHARACTER H 306F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 306F) + ) + ) +(CHARACTER H 3070 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3070) + ) + ) +(CHARACTER H 3071 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3071) + ) + ) +(CHARACTER H 3072 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3072) + ) + ) +(CHARACTER H 3073 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3073) + ) + ) +(CHARACTER H 3074 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3074) + ) + ) +(CHARACTER H 3075 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3075) + ) + ) +(CHARACTER H 3076 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3076) + ) + ) +(CHARACTER H 3077 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3077) + ) + ) +(CHARACTER H 3078 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3078) + ) + ) +(CHARACTER H 3079 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3079) + ) + ) +(CHARACTER H 307A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307A) + ) + ) +(CHARACTER H 307B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307B) + ) + ) +(CHARACTER H 307C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307C) + ) + ) +(CHARACTER H 307D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307D) + ) + ) +(CHARACTER H 307E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307E) + ) + ) +(CHARACTER H 307F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 307F) + ) + ) +(CHARACTER H 3080 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3080) + ) + ) +(CHARACTER H 3081 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3081) + ) + ) +(CHARACTER H 3082 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3082) + ) + ) +(CHARACTER H 3083 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3083) + ) + ) +(CHARACTER H 3084 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3084) + ) + ) +(CHARACTER H 3085 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3085) + ) + ) +(CHARACTER H 3086 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3086) + ) + ) +(CHARACTER H 3087 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3087) + ) + ) +(CHARACTER H 3088 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3088) + ) + ) +(CHARACTER H 3089 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3089) + ) + ) +(CHARACTER H 308A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308A) + ) + ) +(CHARACTER H 308B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308B) + ) + ) +(CHARACTER H 308C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308C) + ) + ) +(CHARACTER H 308D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308D) + ) + ) +(CHARACTER H 308E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308E) + ) + ) +(CHARACTER H 308F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 308F) + ) + ) +(CHARACTER H 3090 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3090) + ) + ) +(CHARACTER H 3091 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3091) + ) + ) +(CHARACTER H 3092 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3092) + ) + ) +(CHARACTER H 3093 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3093) + ) + ) +(CHARACTER H 3094 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3094) + ) + ) +(CHARACTER H 3095 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3095) + ) + ) +(CHARACTER H 3096 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3096) + ) + ) +(CHARACTER H 3097 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3097) + ) + ) +(CHARACTER H 3098 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3098) + ) + ) +(CHARACTER H 3099 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 3099) + ) + ) +(CHARACTER H 309A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309A) + ) + ) +(CHARACTER H 309B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309B) + ) + ) +(CHARACTER H 309C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309C) + ) + ) +(CHARACTER H 309D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309D) + ) + ) +(CHARACTER H 309E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309E) + ) + ) +(CHARACTER H 309F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H 309F) + ) + ) +(CHARACTER H 537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 537F) + ) + ) +(CHARACTER H 6674 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 6674) + ) + ) +(CHARACTER H 96EA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 96EA) + ) + ) +(CHARACTER H FF00 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF00) + ) + ) +(CHARACTER H FF01 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF01) + ) + ) +(CHARACTER H FF02 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF02) + ) + ) +(CHARACTER H FF03 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF03) + ) + ) +(CHARACTER H FF04 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF04) + ) + ) +(CHARACTER H FF05 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF05) + ) + ) +(CHARACTER H FF06 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF06) + ) + ) +(CHARACTER H FF07 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF07) + ) + ) +(CHARACTER H FF08 + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF08) + ) + ) +(CHARACTER H FF09 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF09) + ) + ) +(CHARACTER H FF0A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0A) + ) + ) +(CHARACTER H FF0B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0B) + ) + ) +(CHARACTER H FF0C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0C) + ) + ) +(CHARACTER H FF0D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0D) + ) + ) +(CHARACTER H FF0E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0E) + ) + ) +(CHARACTER H FF0F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF0F) + ) + ) +(CHARACTER H FF10 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF10) + ) + ) +(CHARACTER H FF11 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF11) + ) + ) +(CHARACTER H FF12 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF12) + ) + ) +(CHARACTER H FF13 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF13) + ) + ) +(CHARACTER H FF14 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF14) + ) + ) +(CHARACTER H FF15 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF15) + ) + ) +(CHARACTER H FF16 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF16) + ) + ) +(CHARACTER H FF17 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF17) + ) + ) +(CHARACTER H FF18 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF18) + ) + ) +(CHARACTER H FF19 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF19) + ) + ) +(CHARACTER H FF1A + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.25) + (SELECTFONT D 1) + (SETCHAR H FF1A) + ) + ) +(CHARACTER H FF1B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.25) + (SELECTFONT D 1) + (SETCHAR H FF1B) + ) + ) +(CHARACTER H FF1C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1C) + ) + ) +(CHARACTER H FF1D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1D) + ) + ) +(CHARACTER H FF1E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1E) + ) + ) +(CHARACTER H FF1F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF1F) + ) + ) +(CHARACTER H FF20 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF20) + ) + ) +(CHARACTER H FF21 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF21) + ) + ) +(CHARACTER H FF22 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF22) + ) + ) +(CHARACTER H FF23 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF23) + ) + ) +(CHARACTER H FF24 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF24) + ) + ) +(CHARACTER H FF25 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF25) + ) + ) +(CHARACTER H FF26 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF26) + ) + ) +(CHARACTER H FF27 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF27) + ) + ) +(CHARACTER H FF28 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF28) + ) + ) +(CHARACTER H FF29 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF29) + ) + ) +(CHARACTER H FF2A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2A) + ) + ) +(CHARACTER H FF2B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2B) + ) + ) +(CHARACTER H FF2C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2C) + ) + ) +(CHARACTER H FF2D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2D) + ) + ) +(CHARACTER H FF2E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2E) + ) + ) +(CHARACTER H FF2F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF2F) + ) + ) +(CHARACTER H FF30 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF30) + ) + ) +(CHARACTER H FF31 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF31) + ) + ) +(CHARACTER H FF32 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF32) + ) + ) +(CHARACTER H FF33 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF33) + ) + ) +(CHARACTER H FF34 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF34) + ) + ) +(CHARACTER H FF35 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF35) + ) + ) +(CHARACTER H FF36 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF36) + ) + ) +(CHARACTER H FF37 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF37) + ) + ) +(CHARACTER H FF38 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF38) + ) + ) +(CHARACTER H FF39 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF39) + ) + ) +(CHARACTER H FF3A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3A) + ) + ) +(CHARACTER H FF3B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF3B) + ) + ) +(CHARACTER H FF3C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3C) + ) + ) +(CHARACTER H FF3D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3D) + ) + ) +(CHARACTER H FF3E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3E) + ) + ) +(CHARACTER H FF3F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF3F) + ) + ) +(CHARACTER H FF40 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF40) + ) + ) +(CHARACTER H FF41 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF41) + ) + ) +(CHARACTER H FF42 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF42) + ) + ) +(CHARACTER H FF43 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF43) + ) + ) +(CHARACTER H FF44 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF44) + ) + ) +(CHARACTER H FF45 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF45) + ) + ) +(CHARACTER H FF46 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF46) + ) + ) +(CHARACTER H FF47 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF47) + ) + ) +(CHARACTER H FF48 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF48) + ) + ) +(CHARACTER H FF49 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF49) + ) + ) +(CHARACTER H FF4A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4A) + ) + ) +(CHARACTER H FF4B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4B) + ) + ) +(CHARACTER H FF4C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4C) + ) + ) +(CHARACTER H FF4D + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4D) + ) + ) +(CHARACTER H FF4E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4E) + ) + ) +(CHARACTER H FF4F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF4F) + ) + ) +(CHARACTER H FF50 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF50) + ) + ) +(CHARACTER H FF51 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF51) + ) + ) +(CHARACTER H FF52 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF52) + ) + ) +(CHARACTER H FF53 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF53) + ) + ) +(CHARACTER H FF54 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF54) + ) + ) +(CHARACTER H FF55 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF55) + ) + ) +(CHARACTER H FF56 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF56) + ) + ) +(CHARACTER H FF57 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF57) + ) + ) +(CHARACTER H FF58 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF58) + ) + ) +(CHARACTER H FF59 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF59) + ) + ) +(CHARACTER H FF5A + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5A) + ) + ) +(CHARACTER H FF5B + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF5B) + ) + ) +(CHARACTER H FF5C + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5C) + ) + ) +(CHARACTER H FF5D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5D) + ) + ) +(CHARACTER H FF5E + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF5E) + ) + ) +(CHARACTER H FF5F + (CHARWD R 0.5) + (MAP + (MOVERIGHT R -0.5) + (SELECTFONT D 1) + (SETCHAR H FF5F) + ) + ) +(CHARACTER H FF60 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF60) + ) + ) +(CHARACTER H FF61 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF61) + ) + ) +(CHARACTER H FF62 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF62) + ) + ) +(CHARACTER H FF63 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF63) + ) + ) +(CHARACTER H FF64 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF64) + ) + ) +(CHARACTER H FF65 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF65) + ) + ) +(CHARACTER H FF66 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF66) + ) + ) +(CHARACTER H FF67 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF67) + ) + ) +(CHARACTER H FF68 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF68) + ) + ) +(CHARACTER H FF69 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF69) + ) + ) +(CHARACTER H FF6A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6A) + ) + ) +(CHARACTER H FF6B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6B) + ) + ) +(CHARACTER H FF6C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6C) + ) + ) +(CHARACTER H FF6D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6D) + ) + ) +(CHARACTER H FF6E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6E) + ) + ) +(CHARACTER H FF6F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF6F) + ) + ) +(CHARACTER H FF70 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF70) + ) + ) +(CHARACTER H FF71 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF71) + ) + ) +(CHARACTER H FF72 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF72) + ) + ) +(CHARACTER H FF73 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF73) + ) + ) +(CHARACTER H FF74 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF74) + ) + ) +(CHARACTER H FF75 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF75) + ) + ) +(CHARACTER H FF76 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF76) + ) + ) +(CHARACTER H FF77 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF77) + ) + ) +(CHARACTER H FF78 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF78) + ) + ) +(CHARACTER H FF79 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF79) + ) + ) +(CHARACTER H FF7A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7A) + ) + ) +(CHARACTER H FF7B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7B) + ) + ) +(CHARACTER H FF7C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7C) + ) + ) +(CHARACTER H FF7D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7D) + ) + ) +(CHARACTER H FF7E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7E) + ) + ) +(CHARACTER H FF7F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF7F) + ) + ) +(CHARACTER H FF80 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF80) + ) + ) +(CHARACTER H FF81 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF81) + ) + ) +(CHARACTER H FF82 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF82) + ) + ) +(CHARACTER H FF83 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF83) + ) + ) +(CHARACTER H FF84 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF84) + ) + ) +(CHARACTER H FF85 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF85) + ) + ) +(CHARACTER H FF86 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF86) + ) + ) +(CHARACTER H FF87 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF87) + ) + ) +(CHARACTER H FF88 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF88) + ) + ) +(CHARACTER H FF89 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF89) + ) + ) +(CHARACTER H FF8A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8A) + ) + ) +(CHARACTER H FF8B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8B) + ) + ) +(CHARACTER H FF8C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8C) + ) + ) +(CHARACTER H FF8D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8D) + ) + ) +(CHARACTER H FF8E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8E) + ) + ) +(CHARACTER H FF8F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF8F) + ) + ) +(CHARACTER H FF90 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF90) + ) + ) +(CHARACTER H FF91 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF91) + ) + ) +(CHARACTER H FF92 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF92) + ) + ) +(CHARACTER H FF93 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF93) + ) + ) +(CHARACTER H FF94 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF94) + ) + ) +(CHARACTER H FF95 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF95) + ) + ) +(CHARACTER H FF96 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF96) + ) + ) +(CHARACTER H FF97 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF97) + ) + ) +(CHARACTER H FF98 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF98) + ) + ) +(CHARACTER H FF99 + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF99) + ) + ) +(CHARACTER H FF9A + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9A) + ) + ) +(CHARACTER H FF9B + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9B) + ) + ) +(CHARACTER H FF9C + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9C) + ) + ) +(CHARACTER H FF9D + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9D) + ) + ) +(CHARACTER H FF9E + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9E) + ) + ) +(CHARACTER H FF9F + (CHARWD R 0.5) + (MAP + (SELECTFONT D 1) + (SETCHAR H FF9F) + ) + ) +(CHARACTER H FFA0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA0) + ) + ) +(CHARACTER H FFA1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA1) + ) + ) +(CHARACTER H FFA2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA2) + ) + ) +(CHARACTER H FFA3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA3) + ) + ) +(CHARACTER H FFA4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA4) + ) + ) +(CHARACTER H FFA5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA5) + ) + ) +(CHARACTER H FFA6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA6) + ) + ) +(CHARACTER H FFA7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA7) + ) + ) +(CHARACTER H FFA8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA8) + ) + ) +(CHARACTER H FFA9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFA9) + ) + ) +(CHARACTER H FFAA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAA) + ) + ) +(CHARACTER H FFAB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAB) + ) + ) +(CHARACTER H FFAC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAC) + ) + ) +(CHARACTER H FFAD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAD) + ) + ) +(CHARACTER H FFAE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAE) + ) + ) +(CHARACTER H FFAF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFAF) + ) + ) +(CHARACTER H FFB0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB0) + ) + ) +(CHARACTER H FFB1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB1) + ) + ) +(CHARACTER H FFB2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB2) + ) + ) +(CHARACTER H FFB3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB3) + ) + ) +(CHARACTER H FFB4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB4) + ) + ) +(CHARACTER H FFB5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB5) + ) + ) +(CHARACTER H FFB6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB6) + ) + ) +(CHARACTER H FFB7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB7) + ) + ) +(CHARACTER H FFB8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB8) + ) + ) +(CHARACTER H FFB9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFB9) + ) + ) +(CHARACTER H FFBA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBA) + ) + ) +(CHARACTER H FFBB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBB) + ) + ) +(CHARACTER H FFBC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBC) + ) + ) +(CHARACTER H FFBD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBD) + ) + ) +(CHARACTER H FFBE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBE) + ) + ) +(CHARACTER H FFBF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFBF) + ) + ) +(CHARACTER H FFC0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC0) + ) + ) +(CHARACTER H FFC1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC1) + ) + ) +(CHARACTER H FFC2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC2) + ) + ) +(CHARACTER H FFC3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC3) + ) + ) +(CHARACTER H FFC4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC4) + ) + ) +(CHARACTER H FFC5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC5) + ) + ) +(CHARACTER H FFC6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC6) + ) + ) +(CHARACTER H FFC7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC7) + ) + ) +(CHARACTER H FFC8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC8) + ) + ) +(CHARACTER H FFC9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFC9) + ) + ) +(CHARACTER H FFCA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCA) + ) + ) +(CHARACTER H FFCB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCB) + ) + ) +(CHARACTER H FFCC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCC) + ) + ) +(CHARACTER H FFCD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCD) + ) + ) +(CHARACTER H FFCE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCE) + ) + ) +(CHARACTER H FFCF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFCF) + ) + ) +(CHARACTER H FFD0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD0) + ) + ) +(CHARACTER H FFD1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD1) + ) + ) +(CHARACTER H FFD2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD2) + ) + ) +(CHARACTER H FFD3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD3) + ) + ) +(CHARACTER H FFD4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD4) + ) + ) +(CHARACTER H FFD5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD5) + ) + ) +(CHARACTER H FFD6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD6) + ) + ) +(CHARACTER H FFD7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD7) + ) + ) +(CHARACTER H FFD8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD8) + ) + ) +(CHARACTER H FFD9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFD9) + ) + ) +(CHARACTER H FFDA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDA) + ) + ) +(CHARACTER H FFDB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDB) + ) + ) +(CHARACTER H FFDC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDC) + ) + ) +(CHARACTER H FFDD + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDD) + ) + ) +(CHARACTER H FFDE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDE) + ) + ) +(CHARACTER H FFDF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFDF) + ) + ) +(CHARACTER H FFE0 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE0) + ) + ) +(CHARACTER H FFE1 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE1) + ) + ) +(CHARACTER H FFE2 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE2) + ) + ) +(CHARACTER H FFE3 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE3) + ) + ) +(CHARACTER H FFE4 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE4) + ) + ) +(CHARACTER H FFE5 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE5) + ) + ) +(CHARACTER H FFE6 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE6) + ) + ) +(CHARACTER H FFE7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE7) + ) + ) +(CHARACTER H FFE8 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE8) + ) + ) +(CHARACTER H FFE9 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFE9) + ) + ) +(CHARACTER H FFEA + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEA) + ) + ) +(CHARACTER H FFEB + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEB) + ) + ) +(CHARACTER H FFEC + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEC) + ) + ) +(CHARACTER H FFED + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFED) + ) + ) +(CHARACTER H FFEE + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEE) + ) + ) +(CHARACTER H FFEF + (CHARWD R 1.0) + (MAP + (SELECTFONT D 1) + (SETCHAR H FFEF) + ) + ) +(CHARACTER H 20B9F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 20B9F) + ) + ) +(CHARACTER H 2F833 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F833) + ) + ) +(CHARACTER H 24304B + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3F51) + ) + ) +(CHARACTER H 2431F7 + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3FD7) + ) + ) +(CHARACTER H 48537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 0) + (SETCHAR H 2F833) + ) + ) +(CHARACTER H 80537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 3597) + ) + ) +(CHARACTER H 84537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 6A2) + ) + ) +(CHARACTER H 88537F + (CHARWD R 1.0) + (MAP + (SELECTFONT D 2) + (SETCHAR H 1DED) + ) + ) diff --git a/Build/source/texk/dvipsk/tfmload.c b/Build/source/texk/dvipsk/tfmload.c index afc5d803dbf..0b00c809336 100644 --- a/Build/source/texk/dvipsk/tfmload.c +++ b/Build/source/texk/dvipsk/tfmload.c @@ -109,7 +109,7 @@ tfmload(register fontdesctype *curfnt) integer scaledsize; integer id, nt = 0; integer nw, hd; - integer bc, ec; + integer bc, ec, direc = -1; integer nco=0, ncw=0, npc=0, no_repeats = 0; uinteger *index = NULL; halfword *chartype = NULL; @@ -161,18 +161,7 @@ tfmload(register fontdesctype *curfnt) bc = tfm32(); ec = tfm32(); nw = tfm32(); for (i=0; i<8; i++) li=tfm32(); - if (!noptex && font_level==1 && ec>=0x2E00) { - curfnt->iswide = 1; - if (li==5) { /* interpret FONTDIR RT as pTeX vertical writing */ - curfnt->dir = 9; -#ifdef DEBUG - if (dd(D_FONTS)) - fprintf_str(stderr, - "We will interpret font (%s.ofm) direction as pTeX vertical writing.\n", - curfnt->name); -#endif /* DEBUG */ - } - } + direc = li; if ((font_level>1 || hd<2 || bc<0 || ec<0 || nw<0 || bc>ec+1 || ec>0x10FFFF || nw>0x110000) || (font_level==0 && (ec>65535 || nw>65536))) @@ -294,8 +283,22 @@ tfmload(register fontdesctype *curfnt) curfnt->chardesc[i].pixelwidth = -((integer)(conv*-li+0.5)); curfnt->chardesc[i].flags = (curfnt->resfont ? EXISTS : 0); curfnt->chardesc[i].flags2 = EXISTS; + if (!noptex && font_level==1 && (i>=0x2E80 && !(0xFB00<=i && i<=0xFB06))) { + curfnt->iswide = 1; + } } if (ec>=256) curfnt->codewidth = 2; /* XXX: 2byte-code can have ec<256 */ + if (!noptex && font_level==1 && curfnt->iswide == 1) { + if (direc==5) { /* interpret FONTDIR RT as pTeX vertical writing */ + curfnt->dir = 9; +#ifdef DEBUG + if (dd(D_FONTS)) + fprintf_str(stderr, + "We will interpret font (%s.ofm) direction as pTeX vertical writing.\n", + curfnt->name); +#endif /* DEBUG */ + } + } } free(chardat); free(scaled); diff --git a/Build/source/texk/dvipsk/uptex-upjf2.test b/Build/source/texk/dvipsk/uptex-upjf2.test new file mode 100755 index 00000000000..944f68d56ff --- /dev/null +++ b/Build/source/texk/dvipsk/uptex-upjf2.test @@ -0,0 +1,26 @@ +#! /bin/sh -vx +# $Id$ +# Public domain. +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_dvips=$BinDir/dvips$ExeExt + +TEXFONTS="./tmp001;$srcdir/testdata" +SOURCE_DATE_EPOCH=1588474800 +export TEXFONTS SOURCE_DATE_EPOCH + +rm -f upjf-g.ofm upjv-g.ofm upjf-r.ofm upjv-r.ofm + +rc=0 + +test -d tmp001 || mkdir -p tmp001 + +cp $srcdir/testdata/upjf2_full.vf ./tmp001/upjf.vf && \ +cp $srcdir/testdata/upjv2_full.vf ./tmp001/upjv.vf && \ +$_dvips -d 4 $srcdir/testdata/upjf2.dvi -o upjf2.ps -u $srcdir/testdata/upjf.map && \ +mv upjf2.ps upjf2_full.ps || rc=6 + + +exit $rc diff --git a/Build/source/texk/dvipsk/virtualfont.c b/Build/source/texk/dvipsk/virtualfont.c index b855ba8eb18..41e83a4920e 100644 --- a/Build/source/texk/dvipsk/virtualfont.c +++ b/Build/source/texk/dvipsk/virtualfont.c @@ -235,7 +235,7 @@ virtualfont(register fontdesctype *curfnt) font_level = tfm16(); tfm32(); tfm32(); tfm32(); /* li, hd, bc */ ec = tfm32(); - if (font_level==1 && ec>=0x2E00) /* We interpret the ofm is for pTeX */ + if (font_level==1 && ec>=0x2E80) /* We interpret the ofm is for pTeX */ curfnt->kind = VF_PTEX; } fclose(tfmfile); @@ -253,7 +253,7 @@ virtualfont(register fontdesctype *curfnt) if (length<2) badvf("negative length packet"); if (length>65535) badvf("packet too long"); cc = vfquad(); - if (cc>=no_of_chars && cc<MAX_CODE) { + if (cc>=no_of_chars && cc<MAX_VF_CODE) { j = VF_MEM_UNIT * ((integer)(cc/VF_MEM_UNIT) + 1); curfnt->chardesc = (chardesctype *)xrealloc(curfnt->chardesc, sizeof(chardesctype)*j); diff --git a/Build/source/texk/kpathsea/ChangeLog b/Build/source/texk/kpathsea/ChangeLog index 7f1108ee6c9..65a2e675dd5 100644 --- a/Build/source/texk/kpathsea/ChangeLog +++ b/Build/source/texk/kpathsea/ChangeLog @@ -1,3 +1,8 @@ +2024-09-25 Karl Berry <karl@tug.org> + + * texmf.cnf (shell_escape_commands): add latexminted for minted 3.0, + after various reviews via tlsecurity, etc. + 2024-08-19 Karl Berry <karl@freefriends.org> * tex-file.c (kpathsea_name_ok) <not_ok>: avoid spurious double space diff --git a/Build/source/texk/kpathsea/texmf.cnf b/Build/source/texk/kpathsea/texmf.cnf index 5df6bd97f9c..f725e75ecef 100644 --- a/Build/source/texk/kpathsea/texmf.cnf +++ b/Build/source/texk/kpathsea/texmf.cnf @@ -653,6 +653,7 @@ extractbb,\ gregorio,\ kpsewhich,\ l3sys-query,\ +latexminted,\ makeindex,\ memoize-extract.pl,\ memoize-extract.py,\ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.am b/Build/source/texk/texlive/linked_scripts/Makefile.am index 0bd39fbab96..e15338aae80 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.am +++ b/Build/source/texk/texlive/linked_scripts/Makefile.am @@ -113,6 +113,8 @@ texmf_other_scripts = \ bib2gls/convertgls2bib.sh \ bibcop/bibcop.pl \ bibtexperllibs/ltx2unitxt \ + bookshelf/bookshelf-listallfonts \ + bookshelf/bookshelf-mkfontsel \ bundledoc/arlatex \ bundledoc/bundledoc \ cachepic/cachepic.tlu \ @@ -191,6 +193,7 @@ texmf_other_scripts = \ memoize/memoize-extract.pl \ memoize/memoize-extract.py \ mf2pt1/mf2pt1.pl \ + minted/latexminted.py \ mkgrkindex/mkgrkindex \ mkjobtexmf/mkjobtexmf.pl \ mkpic/mkpic \ @@ -223,6 +226,7 @@ texmf_other_scripts = \ runtexshebang/runtexshebang.lua \ spix/spix.py \ splitindex/splitindex.pl \ + sqltex/sqltex \ srcredact/srcredact.pl \ sty2dtx/sty2dtx.pl \ svn-multi/svn-multi.pl \ diff --git a/Build/source/texk/texlive/linked_scripts/Makefile.in b/Build/source/texk/texlive/linked_scripts/Makefile.in index 04b5c6d629b..ba8892a60ca 100644 --- a/Build/source/texk/texlive/linked_scripts/Makefile.in +++ b/Build/source/texk/texlive/linked_scripts/Makefile.in @@ -333,6 +333,8 @@ texmf_other_scripts = \ bib2gls/convertgls2bib.sh \ bibcop/bibcop.pl \ bibtexperllibs/ltx2unitxt \ + bookshelf/bookshelf-listallfonts \ + bookshelf/bookshelf-mkfontsel \ bundledoc/arlatex \ bundledoc/bundledoc \ cachepic/cachepic.tlu \ @@ -411,6 +413,7 @@ texmf_other_scripts = \ memoize/memoize-extract.pl \ memoize/memoize-extract.py \ mf2pt1/mf2pt1.pl \ + minted/latexminted.py \ mkgrkindex/mkgrkindex \ mkjobtexmf/mkjobtexmf.pl \ mkpic/mkpic \ @@ -443,6 +446,7 @@ texmf_other_scripts = \ runtexshebang/runtexshebang.lua \ spix/spix.py \ splitindex/splitindex.pl \ + sqltex/sqltex \ srcredact/srcredact.pl \ sty2dtx/sty2dtx.pl \ svn-multi/svn-multi.pl \ diff --git a/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts new file mode 100755 index 00000000000..20ae696fd63 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-listallfonts @@ -0,0 +1,271 @@ +#!/usr/bin/env perl +# +=pod + +=head1 NAME + +bookshelf-listallfonts - list all fonts known to LuaTeX with "interesting" features + +=head1 SYNOPSIS + +bookshelf-listallfonts [-d] [-f FEATURES_FILE] [-x EXCLUDED_PATTERNS_FILE] + +bookshelf-listallfonts -h + +bookshelf-listallfonts -v + +bookshelf-listallfonts -m + +=head1 DESCRIPTION + +List all fonts known to LuaTeX adding "interesting" features to the +listing. + +The script queries luaotfload databases and outputs the list of fonts +and features as a tab-separated stream with two field: font +name+feature name, and LuaTeX loading command. This form is suitable +for L<mkfontsel.pl(1)> command from the I<bookshelf> package. + +We always include default features, C<+clig;+liga;+tlig>. + +It is recommended to issue + + luaotfload-tool --update --force + +before running the script. + +=head1 OPTIONS + +=over 4 + +=item B<-d> + +Print debug information on the standard output. + +=item B<-f> I<FEATURES_FILE> + +Use patterns in the I<FEATURES> file instead of the default ones. + +=item B<-x> I<EXCLUDED_PATTERNS_FILE> + +Exclude patterns (font paths and features or combinations) listed +in I<EXCLUDED_PATTERNS_FILE>. + +=item B<-v> + +Print version information + +=item B<-h> + +Print usage information + +=item B<-m> + +Print manual page + +=back + +=head1 AUTHOR + +Boris Veytsman, 2024 + +=head1 LICENSE + +LPPL 1.3c + +=cut + +use strict; +use Getopt::Long; +use Pod::Usage; +use open qw( :std :encoding(UTF-8) ); +my $VERSION = "1.0"; +my $featuresFile =""; +my $excludedPatternsFile = ""; +my $DEBUG=0; +my $help=0; +my $man=0; +my $vrs=0; + +GetOptions( + "debug" => \$DEBUG, + "features|f=s" => \$featuresFile, + "excluded|x=s" => \$excludedPatternsFile, + "help|?" => \$help, + "man" => \$man, + "version" => \$vrs + ) or pod2usage(2); + +pod2usage(1) if $help; +pod2usage(-exitval => 0, -verbose=>2) if $man; +die ("$0, version $VERSION, License: LPPL 1.3c\n") if $vrs; + + +my @features; +if ($featuresFile) { + open(FEATURES, $featuresFile) or die ("Cannot open file $featuresFile\n"); + while (<FEATURES>) { + chomp; + if (length($_)) { + push @features, $_; + } + } + close FEATURES; +} else { + @features = qw( + ^hist$ + ^onum$ + ^pcap$ + ^smcp$ + ^ss + ^swsh$ + ^titl$ + ^unic$ + ); +} + +my @excluded; +if ($excludedPatternsFile) { + open(PATTERNS, $excludedPatternsFile) or die ("Cannot open file $excludedPatternsFile\n"); + while (<PATTERNS>) { + chomp; + if (length($_)) { + push @excluded, $_; + } + } + close PATTERNS; +} else { + @excluded = qw( + Alegreya.*\+ss02 + Spectral.*\+ss04 + Hans_Holbein + Megazoid-Shade + HEJI2Text + NotoColorEmoji + GimletXRay-VF + MegabaseCore + PappardelleV2 + countriesofeurope + drmdoz + drmsy + drmtc + drmfigs + drmgrk + smf + SimpleIcons + Skak + FontAwesome + InputCipher + FdSymbol + greciliae + blex\.ttf + blsy\.ttf + rblmi\.ttf + emo-lingchi + MnSymbol + MdSymbol + dantelogo + emmentaler + marvosym + Asap-Symbol + metsymb + AlgolRevived + P22FraJenPeo.otf + LTCFlueronsGranjon + LTCArchiveOrn + SVRsymbols + LTCHalloweenOrnaments + BradleyInitialsDJRLayers-Frame + P22CezanSwa + P22GaugnXtr + P22CezanSkt + P22CezanLig + P22DeaPro.*\+ss07 + BradleyInitialsDJRLayers-Background + Junicode.*\+ss12 + Junicode.*\+ss13 + Junicode.*\+ss14 + QTDingBits + Math-Companion + Script-Companion + TwemojiMozilla + NAMU-Tryzub + \/Fonts\/Supplemental\/ + NotoSansMyanmar\.ttc + ); +} + +my $standardFeatures="+clig;+liga;+tlig"; + +open(FONTS, + 'luaotfload-tool --list="plainname" --fields="fullpath,format,subfont"|') + or die ("Cannot run luaotfload-tool\n"); +while (<FONTS>) { + chomp; + if (/^\s*$/) { + next; + } + my ($plainname, $fullpath, $format, $subfont) = split /\t/; + if ($DEBUG) { + print STDERR "Font: $plainname\n"; + } + my $goodFont=1; + foreach my $excl (@excluded) { + if ($fullpath =~ m/$excl/) { + $goodFont=0; + if ($DEBUG) { + print STDERR " Font $plainname is excluded by pattern $excl\n"; + } + last; + } + } + if (!$goodFont) { + next; + } + my $loadcommand = "[".$fullpath."]"; + if ($format eq 'ttc') { + $loadcommand .= "(".($subfont-1).")"; + } + $loadcommand .= ":$standardFeatures"; + print "$plainname\t$loadcommand\n"; + if ($format eq 'ttc') { + next; # WE do not extract features for TTC fonts + } + + open (FEATURES, "otfinfo -f '$fullpath' |"); + while (<FEATURES>) { + chomp; + my ($feature, $featurename) = split /\t/; + my $loadcommand1 = $loadcommand . ";+$feature"; + my $goodFeature=0; + foreach my $pattern (@features) { + if ($feature =~ m/$pattern/) { + $goodFeature=1; + last; + } + } + if (!$goodFeature) { + next; + } + + foreach my $excl (@excluded) { + if ($loadcommand1 =~ m/$excl/) { + $goodFeature=0; + if ($DEBUG) { + print STDERR + " Feature $featurename is excluded by pattern $excl\n"; + } + last; + } + + } + if ($goodFeature) { + print "$plainname; $featurename\t$loadcommand1\n"; + } + } + + close FEATURES; + +} +close FONTS; + diff --git a/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel new file mode 100755 index 00000000000..fc5c813f4d4 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/bookshelf/bookshelf-mkfontsel @@ -0,0 +1,92 @@ +#!/usr/bin/env perl +# +# +=pod + +=head1 NAME + +bookshelf-mkfontsel - a script to populate C<fontsel> directory and create C<pickfont.tex> file for I<bookshelf> package + +=head1 SYNOPSIS + +bookshelf-mkfontsel FONTFILE + +=head1 DESCRIPTION + +Create and populate fontsel directory from the file +produced by L<listallfonts.pl(1)> script, and create +C<pickfont.tex> file. Used by +I<bookshelf> package. + +=head1 OPTIONS + +=over 4 + +=item B<-v> + +Print version information + +=item B<-h> + +Print usage information + +=item B<-m> + +Print manual page + +=back + +=head1 AUTHOR + +Boris Veytsman, 2024 + +=head1 LICENSE + +LPPL 1.3c + +=cut + + +use strict; +use Getopt::Long; +use Pod::Usage; +use open qw( :std :encoding(UTF-8) ); +my $VERSION = "1.0"; + +my $help=0; +my $man=0; +my $vrs=0; + +GetOptions( + "help|?" => \$help, + "man" => \$man, + "version" => \$vrs + ) or pod2usage(2); + +pod2usage(1) if $help; +pod2usage(-exitval => 0, -verbose=>2) if $man; +die ("$0, version $VERSION, License: LPPL 1.3c\n") if $vrs; + + + + +`mkdir -p fontsel`; +my $i=1; +while(<>) { + chomp; + if (/^.*#/) { + next; + } + my ($name, $command) = split /\t/; + open(RES, ">fontsel/$i.tex"); + print RES "\\font\\SILmfont={$command}\\SILmfont\n"; + print RES "\\def\\SILmfontname{$name}%\n"; + close RES; + $i++; +} +$i--; +open(RES, ">pickfont.tex"); +print RES "\\setcounter{SIL\@maxfont}{$i}\n"; +close RES; + + diff --git a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua index bb53a2ce55a..675806dd579 100644 --- a/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua +++ b/Build/source/texk/texlive/linked_scripts/l3build/l3build.lua @@ -25,7 +25,7 @@ for those people who are interested. --]] -- Version information -release_date = "2024-05-27" +release_date = "2024-10-08" -- File operations are aided by the LuaFileSystem module local lfs = require("lfs") @@ -128,7 +128,7 @@ if forcecheckepoch then end if forcedocepoch then if match(typesetexe,"luatex") or match(typesetexe,"lualatex") then - typesetopts = typsetopts .. " -utc" + typesetopts = typesetopts .. " -utc" end end diff --git a/Build/source/texk/texlive/linked_scripts/minted/latexminted.py b/Build/source/texk/texlive/linked_scripts/minted/latexminted.py new file mode 100755 index 00000000000..3c1584ea32f --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/minted/latexminted.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Copyright (c) 2024, Geoffrey M. Poore +# All rights reserved. +# +# Licensed under the LaTeX Project Public License version 1.3c: +# https://www.latex-project.org/lppl.txt +# + + +''' +This Python executable is intended for installation within a TeX distribution, +along with Python wheels for the following Python packages: + + * latexminted: https://pypi.org/project/latexminted/ + + * latexrestricted: https://pypi.org/project/latexrestricted/ + + * latex2pydata: https://pypi.org/project/latex2pydata/ + + * Pygments: https://pypi.org/project/Pygments/ + +The combined executable plus wheels provide everything that is needed for the +Python side of the minted LaTeX package. No additional Python libraries are +required. + +The wheels require Python >= 3.8. If this executable is launched with an +earlier Python version, then it will attempt to locate a more recent Python +installation and run itself with that Python version in a subprocess. The +search for more recent Python versions looks for executables of the form +`python3.x` on PATH. + +If the latexminted Python package is installed separately, outside TeX, then +it will create a separate `latexminted` executable as part of the installation +process. That makes it possible to install latexminted and dependencies +separately and then customize Pygments with additional packages that provide +plugins. However, running that separate `latexminted` executable is not +straightforward under Windows. Under Windows, if this executable finds a +suitable `latexminted` executable elsewhere, outside a TeX installation, then +this executable will run that separate `latexminted` executable in a +subprocess and exit. There are two reasons for this approach: + + 1. Under Windows with TeX Live, the default restricted shell escape can only + run executables such as `latexminted` that are part of the TeX + installation; the executable that runs is not the first executable on + PATH. That is part of TeX Live's security measures to prevent running + executables in the current working directory, which is typically writable + by LaTeX and is the first place Windows checks when searching for + executables. This script and the latexrestricted Python package enforce + equivalent security, but do so in a less restrictive manner by expanding + executable names into executable paths with Python's `shutil.which()` and + then comparing the result with locations writable by LaTeX. + + 2. Under non-Windows operating systems, it is possible to modify PATH so that + the desired `latexminted` executable is first. Under Windows, the system + PATH is prepended to the user PATH, so a system-wide TeX installation will + prevent a user-installed `latexminted` executable from being accessible. + +Requirements for locating and running a separate `latexminted` executable +under Windows: + + * The separate executable must be the first `latexminted.exe` found on PATH, + or it must be the first `latexminted.exe` on PATH that is located under + the user home directory. + + * The separate executable must be outside a TeX installation. There is a + check for a `tex.exe` executable in the same directory as + `latexminted.exe`. There is a check for the case-insensitive strings + "texlive", "miktex", and "tinytex" in the path to the `latexminted` + executable. With TeX Live, the path to the `latexminted` executable is + also compared to the environment variable `SELFAUTOLOC`. + + * The separate executable must be outside the current working directory, + TEXMFOUTPUT, and TEXMF_OUTPUT_DIRECTORY. + + * The current directory, TEXMFOUTPUT, and TEXMF_OUTPUT_DIRECTORY cannot be + subdirectories of the directory in which the executable is located. +''' + + +__version__ = '0.1.0' + + +import os +import pathlib +import platform +import shutil +import subprocess +import sys + + + + +# This is an abbreviated variant of `AnyPath` from latexrestricted: +# https://github.com/gpoore/latexrestricted/blob/main/latexrestricted/_anypath.py +class Path(type(pathlib.Path())): + __slots__ = ( + '_cache_key', + ) + + if sys.version_info[:2] < (3, 9): + def is_relative_to(self, other): + try: + self.relative_to(other) + return True + except ValueError: + return False + + @property + def cache_key(self): + try: + return self._cache_key + except AttributeError: + self._cache_key = (type(self), self) + return self._cache_key + + _resolved_set = set() + + def resolve(self): + resolved = super().resolve() + self._resolved_set.add(resolved.cache_key) + return resolved + + def is_resolved(self) -> bool: + return self.cache_key in self._resolved_set + + + + +# Define function that determines whether subprocess executable paths are +# permitted. +prohibited_path_roots = set() +prohibited_path_roots.add(Path.cwd()) +env_TEXMFOUTPUT = os.getenv('TEXMFOUTPUT') +env_TEXMF_OUTPUT_DIRECTORY = os.getenv('TEXMF_OUTPUT_DIRECTORY') +for env_var in (env_TEXMFOUTPUT, env_TEXMF_OUTPUT_DIRECTORY): + if env_var: + env_var_path = Path(env_var) + prohibited_path_roots.add(env_var_path) + prohibited_path_roots.add(env_var_path.resolve()) + +def is_permitted_executable_path(executable_path, executable_path_resolved): + if not executable_path_resolved.is_resolved(): + raise Exception('Second argument must be resolved path') + if any(e.is_relative_to(p) or p.is_relative_to(e) + for e in set([executable_path.parent, executable_path_resolved.parent]) + for p in prohibited_path_roots): + return False + return True + +# TeX Live allows setting `TEXMFOUTPUT` in LaTeX configuration. +# Retrieving that value with kpsewhich follows the approach in latexrestricted: +# https://github.com/gpoore/latexrestricted/blob/main/latexrestricted/_latex_config.py +env_SELFAUTOLOC = os.getenv('SELFAUTOLOC') +env_TEXSYSTEM = os.getenv('TEXSYSTEM') +if not env_TEXMFOUTPUT and env_SELFAUTOLOC and (not env_TEXSYSTEM or env_TEXSYSTEM.lower() != 'miktex'): + if platform.system() == 'Windows': + # Under Windows, shell escape executables will often be launched with + # the TeX Live `runscript.exe` executable wrapper. This overwrites + # `SELFAUTOLOC` from TeX with the location of the wrapper, so + # `SELFAUTOLOC` may not be correct. + which_tlmgr = shutil.which('tlmgr') # No `.exe`; likely `.bat` + if not which_tlmgr: + sys.exit('Failed to find TeX Live "tlmgr" executable on PATH') + which_tlmgr_resolved = Path(which_tlmgr).resolve() + texlive_bin_path = which_tlmgr_resolved.parent + # Make sure executable is *.exe, not *.bat or *.cmd: + # https://docs.python.org/3/library/subprocess.html#security-considerations + which_kpsewhich = shutil.which('kpsewhich.exe', path=str(texlive_bin_path)) + if not which_kpsewhich: + sys.exit('Failed to find a TeX Live "tlmgr" executable with accompanying "kpsewhich" executable on PATH') + which_kpsewhich_path = Path(which_kpsewhich) + which_kpsewhich_resolved = which_kpsewhich_path.resolve() + if not texlive_bin_path == which_kpsewhich_resolved.parent: + sys.exit(' '.join([ + '"tlmgr" executable from PATH resolved to "{}" '.format(which_tlmgr_resolved.as_posix()), + 'while "kpsewhich" resolved to "{}";'.format(which_kpsewhich_resolved.as_posix()), + '"tlmgr" and "kpsewhich" should be in the same location', + ])) + if not which_kpsewhich_resolved.name.lower().endswith('.exe'): + sys.exit(' '.join([ + 'Executable "kpsewhich" resolved to "{}",'.format(which_kpsewhich_resolved.as_posix()), + 'but *.exe is required', + ])) + else: + which_kpsewhich = shutil.which('kpsewhich', path=env_SELFAUTOLOC) + if not which_kpsewhich: + sys.exit(' '.join([ + 'Environment variable SELFAUTOLOC has value "{}",'.format(env_SELFAUTOLOC), + 'but a "kpsewhich" executable was not found at that location', + ])) + which_kpsewhich_path = Path(which_kpsewhich) + which_kpsewhich_resolved = which_kpsewhich_path.resolve() + if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved): + # As in the latexrestricted case, this doesn't initially check for the + # TeX Live scenario where `TEXMFOUTPUT` is set in a `texmf.cnf` config + # file to a location that includes the `kpsewhich` executable. There + # isn't a good way to get the value of `TEXMFOUTPUT` without running + # `kpsewhich` in that case. + sys.exit( + 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or ' + 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable' + ) + kpsewhich_cmd = [which_kpsewhich_resolved.as_posix(), '--var-value', 'TEXMFOUTPUT'] + try: + kpsewhich_proc = subprocess.run(kpsewhich_cmd, shell=False, capture_output=True) + except PermissionError: + sys.exit('Insufficient permission to run "{}"'.format(which_kpsewhich_resolved.as_posix())) + kpsewhich_TEXMFOUTPUT = kpsewhich_proc.stdout.decode(sys.stdout.encoding) or None + if kpsewhich_TEXMFOUTPUT: + kpsewhich_TEXMFOUTPUT_path = Path(kpsewhich_TEXMFOUTPUT) + prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path) + prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path.resolve()) + if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved): + # It is now possible to check for the TeX Live scenario where + # `TEXMFOUTPUT` is set in a `texmf.cnf` config file to a location that + # includes the `kpsewhich` executable. Giving an error message after + # already running `kpsewhich` isn't ideal, but there isn't a good + # alternative. As in the latexrestricted case, the impact on overall + # security is negligible because an unsafe value of `TEXMFOUTPUT` + # means that all TeX-related executables are potentially compromised. + sys.exit( + 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or ' + 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable' + ) + + + + +# If Python version is < 3.8, try to locate a more recent version and then +# relaunch this script with that Python version in a subprocess. +if sys.version_info[:2] < (3, 8): + for minor_version in range(13, 7, -1): + if platform.system() == 'Windows': + # Batch files must be prohibited: + # https://docs.python.org/3/library/subprocess.html#security-considerations + which_python = shutil.which('python3.{}.exe'.format(minor_version)) + else: + which_python = shutil.which('python3.{}'.format(minor_version)) + if which_python: + which_python_path = Path(which_python) + which_python_resolved = which_python_path.resolve() + if platform.system() == 'Windows' and not which_python_resolved.name.lower().endswith('.exe'): + continue + if is_permitted_executable_path(which_python_path, which_python_resolved): + python_cmd = [which_python_resolved.as_posix(), __file__] + sys.argv[1:] + python_proc = subprocess.run(python_cmd, shell=False, capture_output=True) + sys.stderr.buffer.write(python_proc.stderr) + sys.stdout.buffer.write(python_proc.stdout) + sys.exit(python_proc.returncode) + sys.exit('latexminted requires Python >= 3.8, but a compatible Python executable was not found on PATH') + + + + +# Check for required wheel dependencies and add them to Python's `sys.path`. +script_resolved = Path(__file__).resolve() +required_wheel_packages = ( + 'latexminted', + 'latexrestricted', + 'latex2pydata', + 'pygments', +) +wheel_paths = [p for p in script_resolved.parent.glob('*.whl') if p.name.startswith(required_wheel_packages)] +if not wheel_paths: + sys.exit('latexminted failed to find bundled wheels *.whl') +for pkg in required_wheel_packages: + if not any(whl.name.startswith(pkg) for whl in wheel_paths): + sys.exit('latexminted failed to find all required bundled wheels *.whl') +for wheel_path in wheel_paths: + sys.path.insert(0, wheel_path.as_posix()) + + + + +# Under Windows, check PATH for a `latexminted` executable outside a TeX +# installation. If a `latexminted` executable is found in a suitable location +# with sufficient precedence, run it in a subprocess and exit. +# +# The environment variable `LATEXMINTED_SUBPROCESS` is used to prevent an +# endless recursion of subprocesses in the event that a `latexminted` +# executable *inside* a TeX installation somehow manages to pass the tests for +# an executable *outside* a TeX installation. +if platform.system() == 'Windows' and not os.getenv('LATEXMINTED_SUBPROCESS'): + os.environ['LATEXMINTED_SUBPROCESS'] = '1' + fallback_path_search = True + if env_SELFAUTOLOC: + env_SELFAUTOLOC_resolved = Path(env_SELFAUTOLOC).resolve() + else: + env_SELFAUTOLOC_resolved = None + which_latexminted = shutil.which('latexminted.exe') + if which_latexminted: + which_latexminted_path = Path(which_latexminted) + which_latexminted_resolved = which_latexminted_path.resolve() + if not which_latexminted_resolved.name.lower().endswith('.exe'): + sys.exit(' '.join([ + 'Executable "latexminted" resolved to "{}",'.format(which_latexminted_resolved.as_posix()), + 'but *.exe is required', + ])) + if which_latexminted_resolved == script_resolved: + pass + elif (which_latexminted_resolved.parent / 'tex.exe').exists(): + pass + elif any(x in which_latexminted_resolved.as_posix().lower() for x in ('texlive', 'miktex', 'tinytex')): + pass + elif env_SELFAUTOLOC_resolved and which_latexminted_resolved.is_relative_to(env_SELFAUTOLOC_resolved): + pass + elif is_permitted_executable_path(which_latexminted_path, which_latexminted_resolved): + latexminted_cmd = [which_latexminted_resolved.as_posix()] + sys.argv[1:] + latexminted_proc = subprocess.run(latexminted_cmd, shell=False, capture_output=True) + sys.stderr.buffer.write(latexminted_proc.stderr) + sys.stdout.buffer.write(latexminted_proc.stdout) + sys.exit(latexminted_proc.returncode) + else: + # If there was a `latexminted` executable on PATH outside a TeX + # installation, but it wasn't permitted due to its location, don't + # perform fallback search. + fallback_path_search = False + if fallback_path_search: + # Windows appends user PATH to system PATH, so the system PATH may + # prevent finding a user installation of `latexminted`. Search + # through PATH elements under user home directory to check for + # `latexminted.exe` outside a TeX installation. + home_path = Path.home() + env_PATH = os.environ.get('PATH', '') + for path_elem in env_PATH.split(os.pathsep): + if not path_elem or not Path(path_elem).is_relative_to(home_path): + continue + which_latexminted = shutil.which('latexminted.exe', path=path_elem) + if not which_latexminted: + continue + which_latexminted_path = Path(which_latexminted) + which_latexminted_resolved = which_latexminted_path.resolve() + if which_latexminted_resolved == script_resolved: + break + elif (which_latexminted_resolved.parent / 'tex.exe').exists(): + break + elif any(x in which_latexminted_resolved.as_posix().lower() for x in ('texlive', 'miktex', 'tinytex')): + break + elif env_SELFAUTOLOC_resolved and which_latexminted_resolved.is_relative_to(env_SELFAUTOLOC_resolved): + break + elif is_permitted_executable_path(which_latexminted_path, which_latexminted_resolved): + latexminted_cmd = [which_latexminted_resolved.as_posix()] + sys.argv[1:] + try: + latexminted_proc = subprocess.run(latexminted_cmd, shell=False, capture_output=True) + except PermissionError: + break + sys.stderr.buffer.write(latexminted_proc.stderr) + sys.stdout.buffer.write(latexminted_proc.stdout) + sys.exit(latexminted_proc.returncode) + else: + break + + + + +from latexminted.cmdline import main +main() diff --git a/Build/source/texk/texlive/linked_scripts/scripts.lst b/Build/source/texk/texlive/linked_scripts/scripts.lst index 04eacde6e68..7656e5c30c8 100644 --- a/Build/source/texk/texlive/linked_scripts/scripts.lst +++ b/Build/source/texk/texlive/linked_scripts/scripts.lst @@ -54,6 +54,8 @@ bib2gls/bib2gls.sh bib2gls/convertgls2bib.sh bibcop/bibcop.pl bibtexperllibs/ltx2unitxt +bookshelf/bookshelf-listallfonts +bookshelf/bookshelf-mkfontsel bundledoc/arlatex bundledoc/bundledoc cachepic/cachepic.tlu @@ -132,6 +134,7 @@ memoize/memoize-clean.py memoize/memoize-extract.pl memoize/memoize-extract.py mf2pt1/mf2pt1.pl +minted/latexminted.py mkgrkindex/mkgrkindex mkjobtexmf/mkjobtexmf.pl mkpic/mkpic @@ -164,6 +167,7 @@ rubik/rubikrotation.pl runtexshebang/runtexshebang.lua spix/spix.py splitindex/splitindex.pl +sqltex/sqltex srcredact/srcredact.pl sty2dtx/sty2dtx.pl svn-multi/svn-multi.pl diff --git a/Build/source/texk/texlive/linked_scripts/sqltex/sqltex b/Build/source/texk/texlive/linked_scripts/sqltex/sqltex new file mode 100755 index 00000000000..ea612c790f2 --- /dev/null +++ b/Build/source/texk/texlive/linked_scripts/sqltex/sqltex @@ -0,0 +1,1381 @@ +#!/usr/bin/env perl + +# To disable support for the --configfile option, set the value below to 0. +$main::ext_cfgfile_allowed = 1; + +################################################################################ +# +# SQLTeX - SQL preprocessor for Latex +# +# File: sqltex +# ===== +# +# Purpose: This script is a preprocessor for LaTeX. It reads a LaTeX file +# ======== containing SQL commands, and replaces them their values. +# +# This software is subject to the terms of the LaTeX Project Public License; +# see http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html. +# +# Copyright: (c) 2001-2024, Oscar van Eijk, Oveas Functionality Provider +# ========== oscar@oveas.com +# This software is subject to the terms of the LaTeX Project Public License; +# see http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +# +# History: +# ======== +# v1.3 Mar 16, 2001 (Initial release) +# v1.4 May 2, 2002 +# v1.4.1 Feb 15, 2005 +# v1.5 Nov 23, 2007 +# v2.0 Jan 12, 2016 +# v2.1 Jan 21, 2022 +# v2.1-1 Apr 19, 2022 (test version for MSSQL, no official release) +# v2.1-2 Jun 25, 2023 (test version parameter in sql_setparams(), no official release) +# v2.1-3 Nov 30, 2023 (test version \sqlif-\sqlendif & \sqlsystem, no official release) +# v2.2 Jul 31, 2024 +# v3.0 Sep 20, 202x +# Refer to the documentation for changes per release +# +# TODO: +# ===== +# Code is getting messy - too many globals: rewrite required +# +################################################################################ +# +#use strict; +use DBI; +use Getopt::Long; +Getopt::Long::Configure ("bundling"); +use Cwd; +use feature 'state'; + +$main::ReadKey_available = eval +{ + require Term::ReadKey; + Term::ReadKey->import(); + 1; +}; + +##### +# Find out if any command-line options have been given +# Parse them using 'Getopt' +# +sub parse_options { + + $main::NULLallowed = 0; + + if (!GetOptions('help|h|?' => \$main::options{'h'} + , 'configfile|c=s' => \$main::options{'c'} + , 'replacementfile|r=s' => \$main::options{'r'} + , 'no-replacementfile|R' => \$main::options{'R'} + , 'output|o=s' => \$main::options{'o'} + , 'skip-empty-lines|-S' => \$main::options{'S'} + , 'write-comments|-C' => \$main::options{'C'} + , 'filename-extend|e=s' => \$main::options{'e'} + , 'file-extension|E=s' => \$main::options{'E'} + , 'sqlserver|s=s' => \$main::options{'s'} + , 'username|U=s' => \$main::options{'U'} + , 'password|P:s' => \$main::options{'P'} + , 'null-allowed|N' => \$main::options{'N'} + , 'version|V' => \$main::options{'V'} + , 'force|f' => \$main::options{'f'} + , 'quiet|q' => \$main::options{'q'} + , 'multidoc-numbered|m' => \$main::options{'m'} + , 'multidoc-named|M' => \$main::options{'M'} + , 'prefix|p=s' => \$main::options{'p'} + , 'use-local-config|l' => \$main::options{'l'} + , 'updates|u' => \$main::options{'u'} + )) { + print "usage: sqltex [options] <file[.$main::configuration{'texex'}]> [parameter...]\n" + . " type \"sqltex --help\" for help\n"; + exit(1); + } + + if (defined $main::options{'h'}) { + &print_help; + exit(0); + } + if (defined $main::options{'V'}) { + &print_version; + exit(0); + } + + my $optcheck = 0; + $optcheck++ if (defined $main::options{'E'}); + $optcheck++ if (defined $main::options{'e'}); + $optcheck++ if (defined $main::options{'o'}); + die ("options \"-E\", \"-e\" and \"-o\" cannot be combined\n") if ($optcheck > 1); + + $optcheck = 0; + $optcheck++ if (defined $main::options{'m'}); + $optcheck++ if (defined $main::options{'M'}); + $optcheck++ if (defined $main::options{'o'}); + die ("options \"-m\", \"-M\" and \"-o\" cannot be combined\n") if ($optcheck > 1); + + $optcheck = 0; + $optcheck++ if (defined $main::options{'r'}); + $optcheck++ if (defined $main::options{'R'}); + die ("options \"-r\" and \"-R\" cannot be combined\n") if ($optcheck > 1); + + $main::NULLallowed = 1 if (defined $main::options{'N'}); + $main::configuration{'cmd_prefix'} = $main::options{'p'} if (defined $main::options{'p'}); + + $main::multidoc_cnt = 0; + $main::multidoc = (defined $main::options{'m'} || defined $main::options{'M'}); + $main::multidoc_id = ''; + + if ($main::multidoc) { + $main::multidoc_id = '_#M#'; + if (defined $main::options{'M'}) { + $main::multidoc_id = '_#P#' + } + } + + if (defined $main::options{'l'}) { + warn "Option '-l' is obsolete, use '-c <location>' instead"; + delete $main::options{'l'}; + } +} + +##### +# Print the Usage: line on errors and after the '-h' switch +# +sub short_help ($) { + my $onerror = shift; + my $helptext = "usage: sqltex [options] <file[.$main::configuration{'texex'}]> [parameter...]\n"; + $helptext .= " type \"sqltex -h\" for help\n" if ($onerror); + return ($helptext); +} + + +##### +# Print full help and after the '-h' switch +# +sub print_help { + my $helptext = &short_help (0); + + $helptext .= " Options:\n"; + if ($main::ext_cfgfile_allowed) { + $helptext .= " --configfile <file>\n"; + $helptext .= " -c <file>\n"; + $helptext .= " SQLTeX configuration file.\n"; + $helptext .= " Default is \'$main::config_location/SQLTeX.cfg\'.\n\n"; + } + $helptext .= " --file-extension <string>\n"; + $helptext .= " -E <string>\n"; + $helptext .= " replace input file extension in outputfile:\n"; + $helptext .= " \'input.tex\' will be \'input.string\'\n"; + $helptext .= " For further notes, see option \'--filename-extend\' below\n\n"; + + $helptext .= " --null-allowed\n"; + $helptext .= " -N\n"; + $helptext .= " NULL return values allowed. By default SQLTeX exits if a\n"; + $helptext .= " query returns an empty set\n\n"; + + $helptext .= " --password [password]\n"; + $helptext .= " -P [password]\n"; + $helptext .= " database password. The value is optional; if omitted, SQLTeX will prompt for\n"; + $helptext .= " a password. This overwrites the password in the input file.\n\n"; + + $helptext .= " --username <user>\n"; + $helptext .= " -U <user>\n"; + $helptext .= " database username\n\n"; + + $helptext .= " --version\n"; + $helptext .= " -V\n"; + $helptext .= " print version number and exit\n\n"; + + $helptext .= " --filename-extend <string>\n"; + $helptext .= " -e <string>\n"; + $helptext .= " add string to the output filename:\n"; + $helptext .= " \'input.tex\' will be \'inputstring.tex\'\n"; + $helptext .= " In \'string\', the values between curly braces \{\}\n"; + $helptext .= " will be substituted:\n"; + $helptext .= " Pn parameter n\n"; + $helptext .= " M current monthname (Mon)\n"; + $helptext .= " W current weekday (Wdy)\n"; + $helptext .= " D current date (yyyymmdd)\n"; + $helptext .= " DT current date and time (yyyymmddhhmmss)\n"; + $helptext .= " T current time (hhmmss)\n"; + $helptext .= " e.g., the command \'sqltex --filename-extend _{P1}_{W} my_file code\'\n"; + $helptext .= " will read \'my_file.tex\' and write \'myfile_code_Tue.tex\'\n"; + $helptext .= " The same command, but with option \--file-extension\' would create the\n"; + $helptext .= " outputfile \'myfile._code_Tue\'\n"; + $helptext .= " By default the outputfile \'myfile_stx.tex\' would have been written.\n"; + $helptext .= " The options \'--file-extension\' and \'--filename-extend\' cannot be used\n"; + $helptext .= " together or with \'--output\'.\n\n"; + + $helptext .= " --force\n"; + $helptext .= " -f\n"; + $helptext .= " force overwrite of existing files\n\n"; + + $helptext .= " --help\n"; + $helptext .= " -h\n"; + $helptext .= " print this help message and exit\n\n"; + + $helptext .= " --multidoc-numbered\n"; + $helptext .= " -m\n"; + $helptext .= " Multidocument mode; create one document for each parameter that is retrieved\n"; + $helptext .= " from the database in the input document (see documentation)\n"; + $helptext .= " This option cannot be used with \'--output\'.\n\n"; + + $helptext .= " --multidoc-named\n"; + $helptext .= " -M\n"; + $helptext .= " Same as -m, but with the parameter in the filename i.s.o. a serial number\n\n"; + + $helptext .= " --output <file>\n"; + $helptext .= " -o <file>\n"; + $helptext .= " specify an output file. Cannot be used with \'--file-extension\',\n"; + $helptext .= " \'--filename-extend\' or the \'--multidoc\' options.\n\n"; + + $helptext .= " --skip-empty-lines\n"; + $helptext .= " -S\n"; + $helptext .= " All SQLTeX commands will be removed from the input line or replaced by the\n"; + $helptext .= " corresponding value. The rest of the input line is written to the output file.\n"; + $helptext .= " This includes lines that only contain a SQLTeX command (and a newline character).\n"; + $helptext .= " This will result in an empty line in the output file.\n"; + $helptext .= " By specifying this option, these empty lines will be skipped. Lines that were empty\n"; + $helptext .= " in the input will be written.\n\n"; + + $helptext .= " --write-comments\n"; + $helptext .= " -C\n"; + $helptext .= " LaTeX comments in the input file will be skipped by default. With this option,\n"; + $helptext .= " comments will also be copied to the output file.\n\n"; + + $helptext .= " --prefix <prefix>\n"; + $helptext .= " -p <prefix>\n"; + $helptext .= " prefix used in the SQLTeX file. Default is \'sql\'\n"; + $helptext .= " (e.g. \\sqldb[user]{database}), but this can be overwritten if it conflicts\n"; + $helptext .= " with other user-defined commands.\n\n"; + + $helptext .= " --quiet\n"; + $helptext .= " -q\n"; + $helptext .= " run in quiet mode\n\n"; + + $helptext .= " --replacementfile <file>\n"; + $helptext .= " -r <file>\n"; + $helptext .= " specify a file that contains replace characters. This is a list with two tab-separated\n"; + $helptext .= " fields per line. The first field holds a string that will be replaced in the SQL output\n"; + $helptext .= " by the second string.\n"; + $helptext .= " By default the file \'$main::config_location/SQLTeX_r.dat\' is used.\n"; + $helptext .= " This default file will still be read after the given replacement file, unless support for\n"; + $helptext .= " multiple replacement files is disabled in the configuration.\n\n"; + + $helptext .= " --no-replacementfile\n"; + $helptext .= " -R\n"; + $helptext .= " do not use a replace file. \'--replacementfile\' \'--no-replacementfile\' are handled\n"; + $helptext .= " in the same order as they appear on the command line.\n"; + $helptext .= " For backwards compatibility, -rn is also still supported.\n\n"; + + $helptext .= " --sqlserver <server>\n"; + $helptext .= " -s <server>\n"; + $helptext .= " SQL server to connect to. Default is \'localhost\'\n\n"; + + $helptext .= " --updates\n"; + $helptext .= " -u\n"; + $helptext .= " If the input file contains updates, execute them.\n\n"; + + $helptext .= " file is the input file that should be read. By default,\n"; + $helptext .= " sqltex looks for a file with extension \'.$main::configuration{'texex'}\'.\n\n"; + $helptext .= " parameter(s) are substituted in the SQL statements if they contain\n"; + $helptext .= " the string \$PAR[x] somewhere in the statement, where\n"; + $helptext .= " \'x\' is the number of the parameter.\n"; + + print $helptext; +} + +##### +# Print the version number +# +sub print_version { + print "sqltex v$main::version - $main::rdate\n"; +} + +##### +# If we're not running in quiet mode (-q), this routine prints a message telling +# the user what's going on. +# +sub print_message ($) { + my $message = shift; + print "$message\n" unless (defined $main::options{'q'}); +} + + +##### +# If we have to prompt for a password, disable terminal echo, get the password +# and return it to the caller +# +sub get_password ($$) { + my ($usr, $srv) = @_; + + my $pwd = ""; + + my $q = "Password for $usr\@$srv : "; + if ($main::ReadKey_available) { + print $q; + ReadMode(4); + while(ord(my $keyStroke = ReadKey(0)) != 10) { + if(ord($keyStroke) == 127 || ord($keyStroke) == 8) { # DEL/Backspace + chop($pwd); + print "\b \b"; + } elsif(ord($keyStroke) >= 32) { # Skip control characters + $pwd = $pwd . $keyStroke; + print '*'; + } + } + ReadMode(0); + print "\n"; + } else { + if ($main::configuration{'allow_readable_pwd'}) { + print $q; + $pwd = <STDIN>; + chomp $pwd; + } else { + die "Cannot ask for password. Either install the Term::ReadKey module or set 'allow_readable_pwd' to 1 in the configuration"; + } + } + return $pwd; +} + +##### +# If we have to prompt for a user. Get it and return it to the caller +# +sub get_username ($) { + my $srv = shift; + + print "Username at $srv : "; + + my $usr = <STDIN>; + chomp $usr; + return $usr; +} + + +####### +# Find the file extension for the outputfile +# +sub file_extension ($) { + my $subst = shift; + + my %mn = ('Jan','01', 'Feb','02', 'Mar','03', 'Apr','04', + 'May','05', 'Jun','06', 'Jul','07', 'Aug','08', + 'Sep','09', 'Oct','10', 'Nov','11', 'Dec','12' ); + my $sydate = localtime (time); + my ($wday, $mname, $dnum, $time, $year) = split(/\s+/,$sydate); + $dnum = "0$dnum" if ($dnum < 10); + while ($subst =~ /\{[a-zA-Z0-9]+\}/) { + my $s1 = $`; + my $sub = $&; + my $s2 = $'; + $sub =~ s/[\{\}]//g; + if ($sub =~ /P[0-9]/) { + $sub =~ s/P//; + die ("insufficient parameters to substitute \{P$sub\}\n") if ($sub > $#ARGV); + $sub = $ARGV[$sub]; + } elsif ($sub eq 'M') { + $sub = $mname; + } elsif ($sub eq 'W') { + $sub = $wday; + } elsif ($sub eq 'D') { + $sub = "$year$mn{$mname}$dnum"; + } elsif ($sub eq 'DT') { + $sub = "$year$mn{$mname}$dnum$time"; + $sub =~ s/://g; + } elsif ($sub eq 'T') { + $sub = $time; + $sub =~ s/://g; + } else { + die ("unknown substitution code \{$sub\}\n"); + } + $subst = "$s1$sub$s2"; + } + return ($subst); +} + +##### +# Find the configuration files +# +sub get_configfiles { + if (defined $main::options{'c'}) { + if (!$main::ext_cfgfile_allowed) { + die "Use of the --configfile option is disallowed by your system administrator"; + } + $main::configurationfile = $main::options{'c'}; + } else { + $main::configurationfile = $main::config_location + . ($main::config_location eq '' ? '' : '/') + . 'SQLTeX.cfg'; + } + if (!-e $main::configurationfile) { + die ("Configfile $main::configurationfile does not exist\n"); + } + + @main::replacefiles = (); + if (!defined $main::options{'R'} && $main::options{'r'} ne "n") { + my $std_replacefile = $main::config_location + . ($main::config_location eq '' ? '' : '/') . 'SQLTeX_r.dat'; + if (!-e $std_replacefile) { + warn ("replace file $std_replacefile does not exist\n"); + $std_replacefile = ""; + } + my $adl_replacefile = ""; + if (defined $main::options{'r'}) { + if (!-e $main::options{'r'}) { + warn ("replace file $main::options{'r'} does not exist\n"); + } else { + $adl_replacefile = $main::options{'r'}; + } + } + my $rf_cnt = 0; + if ($adl_replacefile ne "") { + $main::replacefiles[$rf_cnt++] = $adl_replacefile; + } + if ($std_replacefile ne "") { + $main::replacefiles[$rf_cnt++] = $std_replacefile; + } + } + + return; +} + +##### +# Declare the filenames to use in this run. +# If a file has been entered +# +sub get_filenames { + $main::inputfile = $ARGV[0] || die "no input file specified\n"; + + $main::path = ''; + while ($main::inputfile =~ /\//) { + $main::path .= "$`/"; + $main::inputfile =~ s/$`\///; + } + if ($main::inputfile =~/\./) { + if ((!-e "$main::path$main::inputfile") && (-e "$main::path$main::inputfile.$main::configuration{'texex'}")) { + $main::inputfile .= ".$main::configuration{'texex'}"; + } + } else { + $main::inputfile .= ".$main::configuration{'texex'}" + } + die "File $main::path$main::inputfile does not exist\n" if (!-e "$main::path$main::inputfile"); + + if (!defined $main::options{'o'}) { + $main::inputfile =~ /\./; + $main::outputfile = "$`"; + my $lastext = "$'"; + while ($' =~ /\./) { + $main::outputfile .= ".$`"; + $lastext = "$'"; + } + if (defined $main::options{'E'} || defined $main::options{'e'}) { + $main::configuration{'stx'} = &file_extension ($main::options{'E'} || $main::options{'e'}); + } + if (defined $main::options{'E'}) { + $main::outputfile .= "$main::multidoc_id.$main::configuration{'stx'}"; + } else { + $main::outputfile .= "$main::configuration{'stx'}$main::multidoc_id\.$lastext"; + } + if ($main::configuration{'def_out_is_in'}) { + $main::outputfile = $main::path . $main::outputfile; + } + } else { + $main::outputfile = $main::options{'o'}; + if ($main::configuration{'def_out_is_in'} && !($main::outputfile =~ /\//)) { + $main::outputfile = $main::path . $main::outputfile; + } + } + + return; +} + +##### +# Trim functions +# +sub ltrim { my $s = shift; $s =~ s/^\s+//; return $s; } +sub rtrim { my $s = shift; $s =~ s/\s+$//; return $s; } +sub trim { my $s = shift; return ltrim(rtrim($s)); } + +####### +# Connect to the database +# +sub db_connect($$) { + my ($up, $db) = @_; + state $data_source; + state $gotInput = 0; + + $main::line =~ s/(\[.*?\])?\{$db\}//; + + state $un = ''; + state $pw = ''; + state $hn = ''; + + if (!$gotInput) { + my @opts = split(',', $up); + for(my $idx = 0; $idx <= $#opts; $idx++) { + my $opt = $opts[$idx]; + if ($opt =~ /=/) { + if ($` eq 'user') { + $un = $'; + } elsif ($` eq 'passwd') { + $pw = $'; + } elsif ($` eq 'host') { + $hn = $'; + } + } else { + if ($idx == 0) { + $un = $opt; + } elsif ($idx == 1) { + $pw = $opt; + } elsif ($idx == 2) { + $hn = $opt; + } + } + } + + $un = $main::options{'U'} if (defined $main::options{'U'}); + $un = &get_username($main::options{'s'} || 'localhost') if ($un eq '?'); + + my $promptForPwd = 0; + if (defined $main::options{'P'}) { + if ($main::options{'P'} eq '') { + $promptForPwd = 1; + } else { + $pw = $main::options{'P'} + } + } + if ($pw eq '?') { + $promptForPwd = 1; + } + $pw = &get_password ($un, $main::options{'s'} || 'localhost') if ($promptForPwd); + $gotInput = 1; + + $hn = $main::options{'s'} if (defined $main::options{'s'}); + + if ($main::configuration{'dbdriver'} eq "Pg") { + $data_source = "DBI:$main::configuration{'dbdriver'}:dbname=$db"; + $data_source .= ";host=$hn" unless ($hn eq ""); + } elsif ($main::configuration{'dbdriver'} eq "Oracle") { + $data_source = "DBI:$main::configuration{'dbdriver'}:$db"; + $data_source .= ";host=$hn;sid=$main::configuration{'oracle_sid'}" unless ($hn eq ""); + $data_source .= ";sid=$main::configuration{'oracle_sid'}"; + } elsif ($main::configuration{'dbdriver'} eq "Ingres") { + $data_source = "DBI:$main::configuration{'dbdriver'}"; + $data_source .= ":$hn" unless ($hn eq ""); + $data_source .= ":$db"; + } elsif ($main::configuration{'dbdriver'} eq "Sybase") { + $data_source = "DBI:$main::configuration{'dbdriver'}:$db"; + $data_source .= ";server=$hn" unless ($hn eq ""); + } elsif ($main::configuration{'dbdriver'} eq "ODBC") { + if (!exists ($main::configuration{'odbc_driver'})) { + $main::configuration{'odbc_driver'} = 'SQL Server'; + } + if ($hn eq "") { + $hn = 'localhost'; + } + $data_source = "DBI:ODBC:Driver={$main::configuration{'odbc_driver'}};Server=$hn"; + $data_source .= ";Database=$db"; + $data_source .= ";UID=$un" unless ($un eq ""); + $data_source .= ";PWD=$pw" unless ($pw eq ""); + } else { # MySQL, mSQL, ... + $data_source = "DBI:$main::configuration{'dbdriver'}:database=$db"; + $data_source .= ";host=$hn" unless ($hn eq ""); + } + } + if (!defined $main::options{'q'}) { + my $msg = "Connect to database $db on "; + $msg .= $hn || 'localhost'; + $msg .= " as user $un" unless ($un eq ''); + $msg .= " using a password" unless ($pw eq ''); + &print_message ($msg); + } + if ($main::configuration{'sqlsystem_allowed'}) { + %main::connect_info = ( + 'hn' => $hn + ,'un' => $un + ,'pw' => $pw + ,'db' => $db + ); + } + $main::db_handle = DBI->connect ($data_source, $un, $pw, { RaiseError => 0, PrintError => 1 }) || &signal_message (1); + return; +} + +##### +# Check if the SQL statement contains options +# Supported options are: +# setvar=<i>, where <i> is the list location to store the variable. +# setarr=<i> +# +sub check_options ($) { + my $options = shift; + return if ($options eq ''); + $options =~ s/\[//; + $options =~ s/\]//; + + my @optionlist = split /,/, $options; + while (@optionlist) { + my $opt = shift @optionlist; + if ($opt =~ /^setvar=/i) { + $main::var_no = $'; + $main::setvar = 1; + } + if ($opt =~ /^setarr=/i) { + $main::arr_no = $'; + $main::setarr = 1; + } + if ($opt =~ /^fldsep=/i) { + $main::fldsep = qq{$'}; + $main::fldsep =~ s/NEWLINE/\n/; + } + if ($opt =~ /^rowsep=/i) { + $main::rowsep = qq{$'}; + $main::rowsep =~ s/NEWLINE/\n/; + } + } +} + +##### +# Replace values from the query result as specified in the replace files. +# This is done in two steps, to prevent characters from being replaces again +# if they occus both as key and as value. +# +sub replace_values ($) { + my $sqlresult = shift; + my $rk; + + foreach $rk (@main::repl_order) { + my ($begin, $end) = split /\Q$main::configuration{'rfile_regexploc'}\E/,$main::configuration{'rfile_regexp'}; + if ($rk =~ /^\Q$begin\E(.*)\Q$end\E$/) { + $sqlresult =~ s/$1/$main::repl_key{$rk}/g; + } else { + $sqlresult =~ s/\Q$rk\E/$main::repl_key{$rk}/g; + } + } + + foreach $rk (keys %main::repl_key) { + $sqlresult =~ s/$main::repl_key{$rk}/$main::repl_val{$main::repl_key{$rk}}/g; + } + return ($sqlresult); +} + +##### +# Select multiple rows from the database. This function can have +# the [fldsep=s] and [rowsep=s] options to define the string which +# should be used to separate the fields and rows. +# By default, fields are separated with a comma and blank (', '), and rows +# are separated with a newline character ('\\') +# +sub sql_row ($$) { + my ($options, $query) = @_; + local $main::fldsep = ', '; + local $main::rowsep = "\\\\"; + local $main::setarr = 0; + my (@values, @return_values, $rc, $fc); + + &check_options ($options); + + &print_message ("Retrieving row(s) with \"$query\""); + $main::sql_statements++; + my $stat_handle = $main::db_handle->prepare ($query); + $stat_handle->execute (); + + if ($main::setarr) { + &signal_message (7) if (defined $main::arr[$main::arr_no] && !$main::multidoc); + @main::arr[$main::arr_no] = (); + while (my $ref = $stat_handle->fetchrow_hashref()) { + foreach my $k (keys %$ref) { + $ref->{$k} = replace_values ($ref->{$k}); + } + push @{$main::arr[$main::arr_no]},$ref; + } + $stat_handle->finish (); + return (); + } + + while (@values = $stat_handle->fetchrow_array ()) { + $fc = $#values + 1; + if ($#main::replacefiles >= 0) { + my $list_cnt = 0; + foreach (@values) { + $values[$list_cnt] = replace_values ($values[$list_cnt]); + $list_cnt++; + } + } + push @return_values, (join "$main::fldsep", @values); + } + $stat_handle->finish (); + + if ($#return_values < 0) { + &signal_message (4); + } + + $rc = $#return_values + 1; + if ($rc == 1) { + &print_message ("Found $rc row with $fc field(s)"); + } else { + &print_message ("Found $rc rows with $fc fields each"); + } + + return (join "$main::rowsep", @return_values); + +} + + +##### +# Select a single field from the database. This function can have +# the [setvar=n] option to define an internal variable +# +sub sql_field ($$) { + my ($options, $query) = @_; + local $main::setvar = 0; + + &check_options ($options); + + $main::sql_statements++; + + &print_message ("Retrieving field with \"$query\""); + my $stat_handle = $main::db_handle->prepare ($query); + $stat_handle->execute (); + my @result = $stat_handle->fetchrow_array (); + $stat_handle->finish (); + + if ($#result < 0) { + &signal_message (4); + } elsif ($#result > 0) { + &signal_message (5); + } else { + &print_message ("Found 1 value: \"$result[0]\""); + if ($main::setvar) { + &signal_message (7) if (defined $main::var[$main::var_no] && !$main::multidoc); + $main::var[$main::var_no] = $result[0]; + return ''; + } else { + if ($#main::replacefiles >= 0) { + return (replace_values ($result[0])); + } else { + return ($result[0]); + } + } + } +} + +##### +# Start a section that will be repeated for evey row that is on stack +# +sub sql_start ($) { + my $arr_no = shift; + &signal_message (11) if (!defined $main::arr[$arr_no]); + if (@main::current_array) { + @main::current_array = (); + } + @main::loop_data = (); + push @main::current_array,$arr_no; +} + +##### +# Use a named variable from the stack +# +sub sql_use ($$) { + my ($field, $loop) = @_; + my $return_value = $main::configuration{'no_such_used_fld'}; + if (defined $main::arr[$#main::current_array][$loop]->{$field}) { + $return_value = $main::arr[$#main::current_array][$loop]->{$field}; + } + return $return_value; + +} + + +##### +# Stop processing the current array +# +sub sql_end () { + my $result = ''; + + for (my $cnt = 0; $cnt <= $#{$main::arr[$#main::current_array]}; $cnt++) { + for (my $lines = 0; $lines < $#{$main::loop_data[$#main::current_array]}; $lines++) { + my $buffered_line = ${$main::loop_data[$#main::current_array]}[$lines]; + my $cmdPrefix = $main::configuration{'alt_cmd_prefix'}; + if ($buffered_line =~ s/\\$cmdPrefix$main::configuration{'sql_endif'}\{\}//) { + $main::if_enabled = 1; + } + if ($buffered_line =~ /\\$cmdPrefix$main::configuration{'sql_if'}/) { + my $lin1 = $`; + my $lin2 = $'; + $lin2 =~ s/^\{//; + $lin2 =~ /\}/; + my $statement = $`; + $lin2 = $'; + $main::if_enabled = &sql_if($statement, $cnt); + $buffered_line = $lin1; + if ($main::if_enabled) { + $buffered_line .= $lin2; + } + } + if (!$main::if_enabled) { + next; + } + while (($buffered_line =~ /\\$cmdPrefix[a-z]+(\[|\{)/) && !($buffered_line =~ /\\\\$cmdPrefix[a-z]+(\[|\{)/)) { + my $cmdfound = $&; + $cmdfound =~ s/\\//; + $cmdfound =~ s/\{/\\\{/; + + $buffered_line =~ /\\$cmdfound/; + my $lin1 = $`; + $buffered_line = $'; + $buffered_line =~ /\}/; + my $statement = $`; + my $lin2 = $'; + + if ($cmdfound =~ /$main::configuration{'sql_use'}/) { + $buffered_line = $lin1 . &sql_use($statement, $cnt) . $lin2; + } + } + if ($buffered_line =~ /\\$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_system'}/) { + my $cmdfound = $&; + $cmdfound =~ s/\\//; + $cmdfound =~ s/\{/\\\{/; + + $buffered_line =~ /\\$cmdfound/; + my $lin1 = $`; + $buffered_line = $'; + $buffered_line =~ /\}/; + my $statement = $`; + my $lin2 = $'; + $statement =~ s/^\{//; + + while ($buffered_line =~ /\\$main::configuration{'alt_cmd_prefix'}$main::configuration{'sql_use'}\{(\w+)\}/) { + my $usereplacement = &sql_use($1, $cnt); + $buffered_line =~ s/\\$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_use'}\{(\w+)\}/$usereplacement/; + } + if ($cmdfound =~ /$main::configuration{'sql_system'}/) { + $buffered_line = $lin1 . &sql_system($statement) . $lin2; + } + } + $result .= $buffered_line; + } + } + + pop @main::current_array; + return $result; +} + +##### +# Start a conditional block +# +sub sql_if ($$) { + my ($condition, $cnt) = @_; + if ($condition =~ /(&&|\|\|)/) { + my $c1 = &check_condition($`, $cnt); + my $c2 = &check_condition($', $cnt); + return eval("$c1 $& $c2"); + } else { + return &check_condition($condition, $cnt); + } +} + +##### +# Helper function for sql_if +# +sub check_condition ($$) { + my ($condition, $cnt) = @_; + $condition =~ /(==|!=|<|>|<=|>=)/; + + my $lval = $`; + my $rval = $'; + my $comparisson = $&; + $lval = &trim($lval); + $rval = &trim($rval); + + my $uf = &sql_use($lval, $cnt); + if ($uf ne $main::configuration{'no_such_used_fld'}) { + $lval = $uf; + } + $uf = &sql_use($rval, $cnt); + if ($uf ne $main::configuration{'no_such_used_fld'}) { + $rval = $uf; + } + + my $result = 0; + if ($comparisson eq "==") { + $result = ($lval == $rval); + } elsif ($comparisson eq '!=') { + $result = ($lval != $rval); + } elsif ($comparisson eq '<') { + $result = ($lval < $rval); + } elsif ($comparisson eq '>') { + $result = ($lval > $rval); + } elsif ($comparisson eq '<=') { + $result = ($lval <= $rval); + } elsif ($comparisson eq '>=') { + $result = ($lval >= $rval); + } + return $result; +} + +##### +# Select a list of rows from the database. Each row will be input +# for a document in multidocument mode. +# +sub sql_setparams ($$) { + my ($options, $query) = @_; + my (@values, @return_values); + + &check_options ($options); + + &print_message ("Retrieving parameter list with \"$query\""); + $main::sql_statements++; + my $stat_handle = $main::db_handle->prepare ($query); + $stat_handle->execute (); + + for (my $i = 0; @values = $stat_handle->fetchrow_array (); $i++) { + for ($j = 0; $j <= $#values; $j++) { + $return_values[$i][$j] = $values[$j]; + } + } + + $stat_handle->finish (); + + if ($#return_values < 0) { + &signal_message (8); + } + + &print_message ('Multidocument parameters found; ' . $#return_values+1 ." documents will be created: handle document $main::multidoc_cnt") unless ($main::multidoc_cnt == 0); + + return (@return_values); +} + + +##### +# Perform an update. +# +sub sql_update ($$) { + my ($options, $query) = @_; + local $main::setvar = 0; + + if (!defined $main::options{'u'}) { + &print_message ("Updates will be ignored"); + return; + } + &check_options ($options); + + &print_message ("Updating values with \"$query\""); + my $rc = $main::db_handle->do($query); + &print_message ("$rc rows updated"); +} + +#### +# Call an external script or system command +# +sub sql_system ($) { + my $cmd = shift; + + my $return_value = '\\textbf{use of the \\textbackslash sqlsystem command is disallowed in the configuration}'; + if ($main::configuration{'sqlsystem_allowed'}) { + $cmd =~ s/\<SRV\>/$main::connect_info{'hn'}/; + $cmd =~ s/\<USR\>/$main::connect_info{'un'}/; + $cmd =~ s/\<PWD\>/$main::connect_info{'pw'}/; + $cmd =~ s/\<DB\>/$main::connect_info{'db'}/; + $return_value = `$cmd`; + } + return $return_value; +} + +##### +# Simple error handling +# Files will be closed if opened, and if no sql output was written yet, +# the outputfile will be removed. +# +sub signal_message ($) { + my $step = shift; + my $can_continue = 0; + + $can_continue = 1 if ($step == 4 && $main::NULLallowed); + + if ($step >= 1 && $step <= 2 && !$can_continue) { + unlink ($main::outputfile); + } + + ##### + # Step specific exit + # + my $msg; + if ($step == 1) { + $msg = "noerror opening database at line $main::lcount[$main::fcount]"; + } elsif ($step == 2) { + $msg = "no database opened at line $main::lcount[$main::fcount]"; + } elsif ($step == 3) { + $msg = "insufficient parameters to substitute variable on line $main::lcount[$main::fcount]"; + } elsif ($step == 4) { + $msg = "no result set found on line $main::lcount[$main::fcount]"; + } elsif ($step == 5) { + $msg = "result set too big on line $main::lcount[$main::fcount]"; + } elsif ($step == 6) { + $msg = "trying to substitute with non existing on line $main::lcount[$main::fcount]"; + } elsif ($step == 7) { + $msg = "trying to overwrite an existing variable on line $main::lcount[$main::fcount]"; + } elsif ($step == 8) { + $msg = "no parameters for multidocument found on line $main::lcount[$main::fcount]"; +# } elsif ($step == 9) { +# $msg = "too many fields returned in multidocument mode on $main::lcount[$main::fcount]"; + } elsif ($step == 10) { + $msg = "unrecognized command on line $main::lcount[$main::fcount]"; + } elsif ($step == 11) { + $msg = "start using a non-existing array on line $main::lcount[$main::fcount]"; + } elsif ($step == 12) { + $msg = "\\sqluse command encountered outside loop context on line $main::lcount[$main::fcount]"; + } elsif ($step == 13) { + $msg = "\\sqlif command encountered outside loop context on line $main::lcount[$main::fcount]"; + } + if ($main::fcount > 0) { + for (my $fcnt = 0; $fcnt < $main::fcount; $fcnt++) { + $msg .= ', file included from line '.$main::lcount[$fcnt]; + } + } + warn "$msg\n"; + return if ($can_continue); + exit (1); +} + +##### +# An SQL statement was found in the input file. If multiple lines are +# used for this query, they will be read until the '}' is found, after which +# the query will be executed. +# +sub parse_command ($$$) { + my $cmdfound = shift; + my $multidoc_par = shift; + my $file_handle = shift; + my $options = ''; + my $varallowed = 1; + + $varallowed = 0 if ($cmdfound =~ /$main::configuration{'sql_open'}/); + + chop $cmdfound; + $cmdfound =~ s/\\//; + + $main::line =~ /\\$cmdfound/; + my $lin1 = $`; + $main::line = $'; + + while (!($main::line =~ /\}/)) { + chomp $main::line; + $main::line .= ' '; + $main::line .= <$file_handle>; + $main::lcount[$main::fcount]++; + } + + $main::line =~ /\}/; + my $statement = $`; + my $lin2 = $'; + + my $raw_statement = $statement; + $raw_statement =~ s/^\{//; + $statement =~ s/(\[|\{)//g; + if ($statement =~ /\]/) { + $options = $`; + $statement = $'; + } + if ($varallowed) { + if (($main::multidoc_cnt > 0) && $main::multidoc) { + for (my $i = 1; $i <= $#main::parameters; $i++) { + $statement =~ s/\$MPAR$i/$main::parameters[$main::multidoc_cnt-1][$i-1]/g; + } + } + for (my $i = 1; $i <= $#ARGV; $i++) { + $statement =~ s/\$PAR$i/$ARGV[$i]/g; + } + while ($statement =~ /\$VAR[0-9]/) { + my $varno = $&; + $varno =~ s/\$VAR//; + &signal_message (6) if (!defined ($main::var[$varno])); + $statement =~ s/\$VAR$varno/$main::var[$varno]/g; + } + if ($statement =~ /\$PAR/ && ($main::multidoc_cnt > 0) && $main::multidoc) { + print "Did you update your input file to reflect the changes in v2.2?\n"; + print "Multidoc parameters are now used to replace \$MPARn (was \$PARn).\n"; + print "Please check the documentation for more info.\n"; + die ("No parameters found to replace in multidoc mode"); + } + $statement =~ s/\{//; + } + + $cmdfound =~ s/^$main::configuration{'cmd_prefix'}//; + if ($cmdfound eq $main::configuration{'sql_open'} + ) { + &db_connect($options, $statement); + $main::db_opened = 1; + return 0; + } + + &signal_message (2) if (!$main::db_opened); + if ($cmdfound eq $main::configuration{'sql_field'}) { + $main::line = $lin1 . &sql_field($options, $statement) . $lin2; + } elsif ($cmdfound eq $main::configuration{'sql_row'}) { + $main::line = $lin1 . &sql_row($options, $statement) . $lin2; + } elsif ($cmdfound eq $main::configuration{'sql_params'}) { + if ($main::multidoc) { # Ignore otherwise + @main::parameters = &sql_setparams($options, $statement); + $main::line = $lin1 . $lin2; + return 1; # Finish this run + } else { + $main::line = $lin1 . $lin2; + } + } elsif ($cmdfound eq $main::configuration{'sql_update'}) { + &sql_update($options, $statement); + $main::line = $lin1 . $lin2; + } elsif ($cmdfound eq $main::configuration{'sql_start'}) { + &sql_start($statement); + $main::line = $lin1 . $lin2; + } elsif ($cmdfound eq $main::configuration{'sql_use'}) { + &signal_message (12) if (!@main::current_array); + $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_use'} . "{" . $statement . "}" . $lin2; # Restore the line, will be processed later + } elsif ($cmdfound eq $main::configuration{'sql_end'}) { + $main::line = $lin1 . &sql_end() . $lin2; + } elsif ($cmdfound eq $main::configuration{'sql_endif'}) { + $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_endif'} . "{}" . $lin2; # Restore the line, will be processed later + } elsif ($cmdfound eq $main::configuration{'sql_if'}) { + &signal_message (13) if (!@main::current_array); + $main::line = $lin1 . "\\" . $main::configuration{'alt_cmd_prefix'} . $main::configuration{'sql_if'} . "{" . $statement . "}" . $lin2; # Restore the line, will be processed later + } elsif ($cmdfound =~ /$main::configuration{'sql_system'}/) { + $main::line = $lin1 . &sql_system($raw_statement) . $lin2; + } else { + &signal_message (10); + } + return 0; +} + +sub read_input($$$$) { + my ($input_file, $output_handle, $multidoc_par) = @_; + + $main::fcount++; + $main::lcount[$main::fcount] = 0; + + if (!-e $input_file) { + die "input file $input_file not found"; + } + print_message("Processing file $input_file..."); + open (my $fileIn, "<$input_file"); + + while ($main::line = <$fileIn>) { + $main::lcount[$main::fcount]++; + my $line_had_cmd = 0; + + if ($main::line =~ /^\s*%/) { + next if (!$main::options{'C'}); + } else { + if ($main::line =~ /(.*?)(\\in(put|clude))(\s*?)\{(.*?)\}(.*)/) { + print $output_handle "$1" unless ($output_handle == -1); + &read_input($5, $output_handle, $multidoc_par); + return if ($main::restart); + print $output_handle "$6\n" unless ($output_handle == -1); + } + my $cmdPrefix = $main::configuration{'cmd_prefix'}; + if (@main::current_array) { + # Inside loop context the \sqlsystem{} command can contain \sqluse{} + $main::line =~ s/$cmdPrefix$main::configuration{'sql_system'}/$main::configuration{'last_cmd_prefix'}$main::configuration{'sql_system'}/; + } + while (($main::line =~ /\\$cmdPrefix[a-z]+(\[|\{)/) && !($main::line =~ /\\\\$cmdPrefix[a-z]+(\[|\{)/)) { + $line_had_cmd = 1; + if (&parse_command($&, $multidoc_par, $fileIn) && $main::multidoc && ($main::multidoc_cnt == 0)) { + close $fileIn; + $main::fcount--; + $main::restart = 1; + return; + } + } + } + next if ($line_had_cmd && $main::line eq "\n" && $main::options{'S'}); + + if (@main::current_array && $#main::current_array >= 0) { + push @{$main::loop_data[$#main::current_array]}, $main::line; + } else { + print $output_handle "$main::line" unless ($main::multidoc && ($main::multidoc_cnt == 0)); + } + } + $main::fcount--; + close $fileIn; +} + +##### +# Process the input file +# When multiple documents should be written, this routine is +# multiple times. +# The first time, it only builds a list with parameters that will be +# used for the next executions +# +sub process_file { + my $multidoc_par = ''; + + if ($main::multidoc && ($main::multidoc_cnt > 0)) { + if (!defined($main::saved_outfile_template)) { + $main::saved_outfile_template = $main::outputfile; + } + $main::saved_outfile_template = $main::outputfile if ($main::multidoc_cnt == 1); # New global name; should be a static + $main::outputfile = $main::saved_outfile_template if ($main::multidoc_cnt > 1); + $main::outputfile =~ s/\#M\#/$main::multidoc_cnt/; + $main::outputfile =~ s/\#P\#/$main::parameters[($main::multidoc_cnt-1)][0]/; + $multidoc_par = @main::parameters[$main::multidoc_cnt - 1]; + } + my $fileOut; + if ($main::multidoc && ($main::multidoc_cnt == 0)) { + $fileOut = -1; + } else { + open ($fileOut, ">$main::outputfile"); + } + + $main::sql_statements = 0; + $main::db_opened = 0; + $main::fcount = -1; + $main::restart = 0; + + &read_input($main::path . $main::inputfile, $fileOut, $multidoc_par); + + if ($main::multidoc) { + $main::multidoc = 0 if (($main::multidoc_cnt++) > $#main::parameters); + return if ($main::multidoc); + } + + close $fileOut; +} + +## Main: + +##### +# Default config values, can be overwritten with SQLTeX.cfg +# +%main::configuration = ( + 'dbdriver' => 'mysql' + ,'oracle_sid' => 'ORASID' + ,'texex' => 'tex' + ,'stx' => '_stx' + ,'def_out_is_in' => 0 + ,'rfile_comment' => ';' + ,'rfile_regexploc' => '...' + ,'rfile_regexp' => 're(...)' + ,'multi_rfile' => 1 + ,'cmd_prefix' => 'sql' + ,'sql_system' => 'system' + ,'sql_open' => 'db' + ,'sql_field' => 'field' + ,'sql_row' => 'row' + ,'sql_params' => 'setparams' + ,'sql_update' => 'update' + ,'sql_start' => 'start' + ,'sql_end' => 'end' + ,'sql_use' => 'use' + ,'sql_if' => 'if' + ,'sql_endif' => 'endif' + ,'sqlsystem_allowed' => 0 + ,'allow_readable_pwd'=> 0 + ,'repl_step' => 'OSTX' + ,'alt_cmd_prefix' => 'processedsqlcommand' + ,'last_cmd_prefix' => 'lastsqlcommand' + ,'no_such_used_fld' => '\textit{SQL\TeX\ use-field does not exist}' +); + +##### +# Some globals +# +{ + my $realpath = Cwd::realpath($0); + + my @dir_list = split /\//, $realpath; + pop @dir_list; + $main::my_location = join '/', @dir_list; + $main::if_enabled = 1; + + if ($main::my_location =~ /texmf-dist\/scripts/) { + # Config location in a TeX Live distro + $main::config_location = $main::my_location; + } else { + if ($^O eq "linux") { + # Default on linux, can be changed when running configure + $main::config_location = '/usr/local/etc'; + } else { + # Default on al other OSes + $main::config_location = $main::my_location; + } + } +} + +$main::version = '3.0'; +$main::rdate = 'Sep 20, 2024'; + +&parse_options; +&get_configfiles; + +if (defined $main::configurationfile) { + open (CF, "<$main::configurationfile"); + while ($main::line = <CF>) { + next if ($main::line =~ /^\s*#/); + next if ($main::line =~ /^\s*$/); + chomp $main::line; + my ($ck, $cv) = split /=/, $main::line, 2; + $ck =~ s/\s//g; + $cv =~ s/\s//g; + if ($cv ne '') { + $main::configuration{$ck} = $cv; + } + } + close CF; +} + +# Check config +# Used for loops, should not start with $main::configuration{'cmd_prefix'} !! +if ($main::configuration{'alt_cmd_prefix'} =~ /^$main::configuration{'cmd_prefix'}/ + || $main::configuration{'last_cmd_prefix'} =~ /^$main::configuration{'cmd_prefix'}/) { + die "Configuration items 'alt_cmd_prefix' and ĺast_cnd_prefix' cannot start with $main::configuration{'cmd_prefix'}"; +} + +&get_filenames; + +if (!$main::multidoc && -e "$main::outputfile") { + die ("outputfile $main::outputfile already exists\n") + unless (defined $main::options{'f'}); +} + +{ + my $repl_cnt = '000'; + @main::repl_order = (); + for (my $rf_cnt = 0; $rf_cnt <= $#main::replacefiles; $rf_cnt++) { + open (RF, "<$main::replacefiles[$rf_cnt]"); + while ($main::line = <RF>) { + next if ($main::line =~ /^\s*$main::configuration{'rfile_comment'}/); + chomp $main::line; + $main::line =~ s/\t+/\t/; + my ($rk, $rv) = split /\t/, $main::line; + if ($rk ne '') { + push @main::repl_order, $rk; + $main::repl_key{$rk} = "$main::configuration{'repl_step'}$repl_cnt"; + $main::repl_val{"$main::configuration{'repl_step'}$repl_cnt"} = $rv; + $repl_cnt++; + } + } + close RF; + if (!$main::configuration{'multi_rfile'}) { + last; + } + } +} + +# Start processing +do { + &process_file; + $main::restart = 0; + if ($main::sql_statements == 0) { + unlink ("$main::outputfile"); + print "no sql statements found in $main::path$main::inputfile\n"; + $main::multidoc = 0; # Problem in the input, useless to continue + } else { + print "$main::sql_statements queries executed - TeX file $main::outputfile written\n" + unless ($main::multidoc && ($main::multidoc_cnt == 1)); + } +} while ($main::multidoc); # Set to false when done + +$main::db_handle->disconnect() if ($main::db_opened); +exit (0); + +# +# And that's about it. +##### diff --git a/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua b/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua index b07a551f8c6..fd510451cab 100755 --- a/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua +++ b/Build/source/texk/texlive/linked_scripts/xindex/xindex.lua @@ -9,7 +9,7 @@ ----------------------------------------------------------------------- xindex = xindex or { } - local version = 0.60 + local version = 0.61 xindex.version = version --xindex.self = "xindex" @@ -331,18 +331,17 @@ else end - esc_char = args.escapechar esc_char2 = esc_char..esc_char writeLog(2,"Escapechar = "..esc_char.."\n",1) escape_chars = { -- by default " is the escape char - {esc_char2, '//escaped2//', esc_char }, - {esc_char..'@', '//escapedat//', '@' }, - {esc_char..'|', '//escapedvert//', '|' }, - {esc_char..'!', '//escapedexcl//', '!' }, - {'', '\\textbar', '|' }, - {'', '\\braceLeft', '{' }, - {'', '\\braceRight', '}' } + {esc_char2, '//escaped2//', esc_char }, + {esc_char..'@', '//escapedat//', '@' }, + {esc_char..'|', '//escapedvert//', '|' }, + {esc_char..'!', '//escapedexcl//', '!' }, + {'', '\\textbar', '|' }, + {'', '\\braceLeft', '{' }, + {'', '\\braceRight', '}' } } no_caseSensitive = args["no_casesensitive"] diff --git a/Build/source/texk/web2c/ChangeLog b/Build/source/texk/web2c/ChangeLog index efc216ecd59..b34327fb6fe 100644 --- a/Build/source/texk/web2c/ChangeLog +++ b/Build/source/texk/web2c/ChangeLog @@ -1,3 +1,8 @@ +2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * tests/ec-lmr10.tfm, tests/dump-basic.tex: + Add for tests of pTeX family + 2024-09-07 Karl Berry <karl@freefriends.org> * Makefile.am (texprof.am): include. diff --git a/Build/source/texk/web2c/Makefile.in b/Build/source/texk/web2c/Makefile.in index 4219af7a036..610d9a21f9e 100644 --- a/Build/source/texk/web2c/Makefile.in +++ b/Build/source/texk/web2c/Makefile.in @@ -3270,6 +3270,16 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ ptexdir/tests/chcode-euc.pl ptexdir/tests/chcode-sjis.pl \ ptexdir/tests/skipjfmp.pl ptexdir/tests/skipjfmp.tfm \ ptexdir/ptrip/ptrip.diffs ptexdir/ptrip/texmf.cnf \ + ptexdir/tests/ctrlsym.tex ptexdir/tests/ctrlsym.log \ + ptexdir/tests/endlinechar.tex ptexdir/tests/endline.log \ + ptexdir/tests/control-symbol.tex ptexdir/tests/jctrlsym.log \ + ptexdir/tests/p-endlinea.typ ptexdir/tests/p-jctrlsyma.typ \ + ptexdir/tests/let_char_token.tex ptexdir/tests/chartoken.log \ + ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ \ + ptexdir/tests/printkanji.tex ptexdir/tests/pknj-s.log \ + ptexdir/tests/pknj-e.log ptexdir/tests/p-pknj-sa.typ \ + ptexdir/tests/p-pknj-ea.typ ptexdir/tests/ucs.tex \ + ptexdir/tests/ucs-s.log ptexdir/tests/ucs-e.log \ $(uptex_web_srcs) $(uptex_ch_srcs) uptexdir/uptex.defines \ uptexdir/upbibtex.ch uptexdir/updvitype.ch \ uptexdir/uppltotf.ch uptexdir/uptftopl.ch uptexdir/COPYRIGHT \ @@ -3288,8 +3298,9 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ uptexdir/tests/gkhugeok.tfm uptexdir/tests/gkhugeng.tfm \ uptexdir/tests/gkhugeng.err uptexdir/tests/gk256g.tfm \ uptexdir/tests/gk256k.tfm uptexdir/uptrip/uptrip.diffs \ - uptexdir/uptrip/texmf.cnf $(euptex_web_srcs) $(euptex_ch_srcs) \ - euptexdir/euptex.defines euptexdir/COPYRIGHT \ + uptexdir/uptrip/texmf.cnf uptexdir/tests/up-prim.tex \ + uptexdir/tests/up-prim.log $(euptex_web_srcs) \ + $(euptex_ch_srcs) euptexdir/euptex.defines euptexdir/COPYRIGHT \ euptexdir/COPYRIGHT.jis euptexdir/ChangeLog \ euptexdir/EUPTEX.txt $(euptex_tests) \ euptexdir/eptrip/eptrip.log euptexdir/eptrip/eptrip.tex \ @@ -3297,7 +3308,27 @@ EXTRA_DIST = PROJECTS cftests cpascal.h help.h w2c/config.h \ euptexdir/pdfprimitive.test \ euptexdir/tests/pdfprimitive-test.tex \ euptexdir/tests/pdfprimitive-euptex.log \ - euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex \ + euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \ + euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \ + euptexdir/tests/control-symbol.tex \ + euptexdir/tests/jctrlsym.log euptexdir/tests/eup-endlinea.typ \ + euptexdir/tests/eup-jctrlsyma.typ \ + euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \ + euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \ + euptexdir/tests/eup-pknj-sa.typ \ + euptexdir/tests/eup-pknj-ea.typ \ + euptexdir/tests/eup-pknj-ua.typ euptexdir/tests/postpena.tex \ + euptexdir/tests/postpena.log euptexdir/tests/free_ixsp.tex \ + euptexdir/tests/free_ixsp.log euptexdir/tests/free_pena.tex \ + euptexdir/tests/free_pena.log euptexdir/tests/inhibitglue.tex \ + euptexdir/tests/eup-inhibitgluea.typ \ + euptexdir/tests/kinsoku-table.tex \ + euptexdir/tests/kinsoku-table.log \ + euptexdir/tests/kinsoku-search.tex \ + euptexdir/tests/kinsoku-search.log \ + euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log \ + euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \ + euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log \ hitexdir/ChangeLog $(hitex_web) $(hitex_tests) \ hitexdir/tests/hello.tex hitexdir/tests/rule.tex \ pdftexdir/regex/COPYING.LIB pdftexdir/regex/README \ @@ -3609,7 +3640,9 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ ptests/memtest.bib ptests/memtest?.* ptests/xstory.dvityp \ ptests/xpagenum.typ ptests/xptex[34]*.typ ptests/xcmr10.tfm \ ptests/xcmr10.pl ptests/xsample*.typ ptests/x*min10.* \ - ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs \ + ptests/xchcode*.* ptests/xskipjfmp.* ptrip.diffs p-ctrlsym.log \ + p-ctrlsym.out p-ctrlsym.tex p-endline*.* p-jctrlsym*.* \ + p-chartoken.* p-lineend.* p-pknj-*.* p-ucs*.* \ $(nodist_uptex_SOURCES) uptex.web uptex.ch uptex-web2c uptex.p \ uptex.pool uptex-tangle $(upweb_programs:=.c) \ $(upweb_programs:=.h) $(upweb_programs:=.p) \ @@ -3621,11 +3654,13 @@ DISTCLEANFILES = CXXLD.sh tangle.c tangle.h tangle.p tangle-web2c \ uptests/xcmr10.tfm uptests/xcmr10.pl uptests/xsample*.typ \ uptests/x*min10.* uptests/xchcode*.* uptests/xtestnewu*.* \ uptests/xuparse.* uptests/yuparse.* uptests/ygkhuge*.* \ - uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs \ + uptests/ygk256*.* uptests/xskipjfmp.* uptrip.diffs up-prim.* \ $(nodist_euptex_SOURCES) euptex.web euptex.ch euptex-web2c \ euptex.p euptex.pool euptex-tangle euptrip.diffs \ - pdfprimitive-euptex.* eup-ctrlsym.fmt eup-ctrlsym.log \ - eup-ctrlsym.out eup-ctrlsym.tex $(nodist_hitex_SOURCES) \ + pdfprimitive-euptex.* eup-ctrlsym.log eup-ctrlsym.out \ + eup-ctrlsym.tex eup-endline*.* eup-jctrlsym*.* eup-pknj-*.* \ + eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* \ + eup-prim.* eup-ucs*.* $(nodist_hitex_SOURCES) \ $(nodist_hishrink_SOURCES) $(nodist_histretch_SOURCES) \ hiformat-tangle hitex-tangle hello.log rule.log \ $(nodist_pdftex_SOURCES) pdftex-final.ch pdftex-web2c pdftex.p \ @@ -4447,7 +4482,10 @@ ptex_ch_srcs = \ ptex_tests = \ ptexdir/ptriptest.test \ ptexdir/pver.test \ - ptexdir/wcfname.test + ptexdir/wcfname.test \ + ptexdir/ptex-ctrlsym.test \ + ptexdir/ptex-prntknj.test \ + ptexdir/ptex-ucs.test uptex_cppflags = $(PTEXENC_INCLUDES) $(AM_CPPFLAGS) $(ZLIB_INCLUDES) uptex_ldadd = libukanji.a $(pproglib) $(PTEXENC_LIBS) $(LDADD) $(ZLIB_LIBS) @@ -4510,7 +4548,8 @@ uptex_tests = \ uptexdir/uptriptest.test uptexdir/ptriptest.test \ uptexdir/upver.test \ uptexdir/upkcat.test \ - uptexdir/wcfname.test uptexdir/wcfname0.test + uptexdir/wcfname.test uptexdir/wcfname0.test \ + uptexdir/uptex-prim.test # uppPLtoTF/upTFtoPL upweb_tests = uptexdir/upbibtex.test uptexdir/updvitype.test \ @@ -4571,10 +4610,14 @@ euptex_ch_srcs = \ euptex_tests = \ euptexdir/euptriptest.test euptexdir/eptriptest.test \ euptexdir/pdfprimitive.test \ - euptexdir/euptex-ctrlsym.test \ euptexdir/eupver.test \ euptexdir/upkcat.test \ - euptexdir/wcfname.test euptexdir/wcfname0.test + euptexdir/wcfname.test euptexdir/wcfname0.test \ + euptexdir/euptex-ctrlsym.test \ + euptexdir/euptex-prntknj.test \ + euptexdir/euptex-kinsoku.test \ + euptexdir/euptex-prim.test \ + euptexdir/euptex-ucs.test # At the moment, these are the only man pages handled in the @@ -4585,7 +4628,7 @@ euptex_tests = \ # See hitex.am for comments about handling man. -@TEXPROF_TRUE@man1_MANS = texprofdir/man/texprof.man +@TEXPROF_TRUE@man1_MANS = texprofdir/man/texprof.man texprofdir/man/texprofile.man hitex_CPPFLAGS = $(AM_CPPFLAGS) $(ZLIB_INCLUDES) -I$(srcdir)/libmd5 \ -DINIT -DSTAT -DWEB2CVERSION="\"${WEB2CVERSION}\"" # -DDEBUG drops into an interactive debugging session. @@ -5362,7 +5405,6 @@ libluaharfbuzz_a_SOURCES = \ luatexdir/luaharfbuzz/src/luaharfbuzz/variation.c libluajitharfbuzz_a_SOURCES = $(libluaharfbuzz_a_SOURCES) -# not yet there: texprofdir/man/texprofile.man texprof_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/libmd5 -DINIT -DSTAT \ -DWEB2CVERSION="\"${WEB2CVERSION}\"" # -DDEBUG drops into an interactive debugging session. @@ -22005,7 +22047,10 @@ ptex.web: tie$(EXEEXT) $(ptex_web_srcs) ptex.ch: tie$(EXEEXT) ptex.web $(ptex_ch_srcs) $(tie_c) ptex.web $(ptex_ch_srcs) ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) -ptexdir/pver.log ptexdir/wcfname.log: ptex$(EXEEXT) +ptexdir/pver.log ptexdir/wcfname.log \ + ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \ + ptexdir/ptex-ucs.log: ptex$(EXEEXT) + ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: ptrip-clean @@ -22076,7 +22121,8 @@ uptftopl.web: tie$(EXEEXT) tftopl.web tftopl.ch uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) uptexdir/upver.log uptexdir/upkcat.log \ - uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT) + uptexdir/wcfname.log uptexdir/wcfname0.log \ + uptexdir/uptex-prim.log: uptex$(EXEEXT) uptexdir/upbibtex.log: upbibtex$(EXEEXT) uptexdir/updvitype.log: updvitype$(EXEEXT) uptexdir/uppltotf.log: uppltotf$(EXEEXT) @@ -22088,6 +22134,7 @@ uptexdir/sample.log: updvitype$(EXEEXT) uptexdir/yokotate.log uptexdir/skipjfmp.log \ uptexdir/newjfm.log uptexdir/uparse.log \ uptexdir/gkhuge.log uptexdir/gk256.log: uppltotf$(EXEEXT) uptftopl$(EXEEXT) + uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: uptrip-clean @@ -22121,9 +22168,13 @@ euptex.ch: tie$(EXEEXT) euptex.web $(euptex_ch_srcs) euptexdir/euptriptest.log euptexdir/eptriptest.log: \ euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) euptexdir/pdfprimitive.log: euptex$(EXEEXT) -euptexdir/euptex-ctrlsym.log \ - euptexdir/eupver.log euptexdir/upkcat.log \ - euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT) +euptexdir/eupver.log euptexdir/upkcat.log \ + euptexdir/wcfname.log euptexdir/wcfname0.log \ + euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \ + euptexdir/euptex-kinsoku.log \ + euptexdir/euptex-prim.log \ + euptexdir/euptex-ucs.log: euptex$(EXEEXT) + euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: euptrip-clean diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog index 7bb17212989..6d640feb0d7 100644 --- a/Build/source/texk/web2c/cwebdir/ChangeLog +++ b/Build/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,17 @@ +2024-10-06 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch: Fix line/paragraph break. + +2024-09-14 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch, + * ctwill-w2c.ch, + * cweav-w2c.ch, + * cweave.w, + * cwebacromac.tex, + * cwebmac.tex, + * refsort.ch: Fix sorting order in Names-of-the-Sections. + 2024-08-12 Andreas Scherer <https://ascherer.github.io> * Makefile diff --git a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch index c5f7a3df85c..1ed94438c22 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch @@ -37,6 +37,7 @@ additional material specific to \.{CTWILL}. % FIXME Until then, \.{CWEAVE}'s sequence of sections will be preserved. The ``banner line'' defined here should be changed whenever \.{CTWILL} is +modified. The version number parallels the corresponding version of \.{CWEAVE}. @y A kind of ``user manual'' for \.{CTWILL} can be found in section~% \X287:Mogrify {\tentex CWEAVE} into {\tentex CTWILL}\X~and beyond, @@ -58,6 +59,7 @@ faithful overall rendering of {\itt CTWILL}'s code, though. \hfill ---Enjoy!\par} \bigskip The ``banner line'' defined here should be changed whenever \.{CTWILL} is +modified. The version number parallels the corresponding version of \.{CWEAVE}. @-banner@> @$banner {CTWILL}1 =\.{"This\ is\ CTWILL"}@> @@ -1589,9 +1591,9 @@ Section 212--213. Section 215. @x -@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ @y -@<Append a string or...@>={int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ @z Section 220. @@ -1815,16 +1817,24 @@ Section 245. @-phase_two@> @z -Section 247. +Section 246. @x -@ @d usage_sentinel (struct perm_meaning *)1 -@<Translate the current section@>= { +@d save_position() save_line=out_line; save_place=out_ptr @y -@ @d usage_sentinel (struct perm_meaning *)1 +@d usage_sentinel (struct perm_meaning *)1 @-usage_sentinel@> @$usage_sentinel {CTWILL}247 =(\&{struct} \&{perm\_meaning} ${}{*}{}$) \T{1}@> -@<Translate the current section@>=@+ { +@d save_position() save_line=out_line; save_place=out_ptr +@z + +Section 247. + +@x +@ @d usage_sentinel (struct perm_meaning *)1 +@<Translate the \9{c}current section@>= { +@y +@ @<Translate the \9{c}current section@>= @+ { @z Section 251. @@ -1851,9 +1861,9 @@ Section 252. Section 254. @x -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { @y -@r @ @<Start a format...@>= { +@r @ @<Start \9{a}a format...@>= { @z Section 255. diff --git a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch index 664254dee08..d421c3f78cd 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch @@ -466,7 +466,7 @@ beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @y @@ -486,7 +486,7 @@ debugging mini-index entries. @d proofing flags['P'] -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_puts("\\input "); tex_printf(use_language); @@ -952,7 +952,7 @@ section_count=0; format_visible=true; right_start_switch=false; copy_limbo(); @x [12.229] l.4212 static boolean group_found=false; /* has a starred section occurred? */ -@ @<Translate the current section@>= { +@ @<Translate the \9{c}current section@>= { section_count++; @y static boolean group_found=false; /* has a starred section occurred? */ @@ -960,7 +960,7 @@ static boolean right_start_switch; /* has `\.{@@r}' occurred recently? */ static boolean temp_switch; /* has `\.{@@\%}' occurred recently? */ @ @d usage_sentinel (struct perm_meaning *)1 -@<Translate the current section@>= { +@<Translate the \9{c}current section@>= { section_count++; temp_switch=false; temp_meaning_ptr=temp_meaning_stack; top_usage=usage_sentinel; @@ -1040,9 +1040,9 @@ flush_buffer(out_ptr,false,false); @z @x [12.236] l.4340 -@<Start a macro...@>= { +@<Start \9{a}a macro...@>= { @y -@<Start a macro...@>= { +@<Start \9{a}a macro...@>= { is_macro=true; @z @@ -1073,10 +1073,10 @@ flush_buffer(out_ptr,false,false); @z @x [12.237] l.4369 -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { doing_format=true; @y -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { doing_format=true; is_macro=false; @z diff --git a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch index 6d350fc405a..b0adceab75a 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch @@ -195,7 +195,7 @@ beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @y @@ -210,7 +210,7 @@ prepended to `\.{cwebmac.tex}', e.g., if you call \.{CWEAVE} with Without this option the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_puts("\\input "); tex_printf(use_language); diff --git a/Build/source/texk/web2c/cwebdir/cweave.w b/Build/source/texk/web2c/cwebdir/cweave.w index 627fa1fa815..015a3183b8e 100644 --- a/Build/source/texk/web2c/cwebdir/cweave.w +++ b/Build/source/texk/web2c/cwebdir/cweave.w @@ -93,7 +93,7 @@ char **av) /* argument values */ program=cweave; @<Set initial values@>@; common_init(); - @<Start \TEX/ output@>@; + @<Start \9{t}\TEX/ output@>@; if (show_banner) puts(banner); /* print a ``banner line'' */ @<Store all the reserved words@>@; phase_one(); /* read all the user's text and store the cross-references */ @@ -1076,9 +1076,9 @@ phase_one(void) { printf("*%d",(int)section_count); update_terminal(); /* print a progress report */ } - @<Store cross-references in the \TEX/ part of a section@>@; - @<Store cross-references in the definition part of a section@>@; - @<Store cross-references in the \CEE/ part of a section@>@; + @<Store cross-references in the \9{t}\TEX/ part of a section@>@; + @<Store cross-references in the \9{d}definition part of a section@>@; + @<Store cross-references in the \9{c}\CEE/ part of a section@>@; if (changed_section[section_count]) change_exists=true; } @@ -1155,7 +1155,7 @@ the identifiers in \CEE/ texts enclosed in \pb, or for control texts enclosed in \.{@@\^}$\,\ldots\,$\.{@@>} or \.{@@.}$\,\ldots\,$\.{@@>} or \.{@@:}$\,\ldots\,$\.{@@>}. -@<Store cross-references in the \T...@>= +@<Store cross-references in the \9{t}\T...@>= while (true) { switch (next_control=skip_TeX()) { case translit_code: err_print("! Use @@l in limbo only"); continue; @@ -1204,7 +1204,7 @@ static name_pointer res_wd_end; /* pointer to the first nonreserved identifier * @ When we get to the following code we have |next_control>=format_code|. -@<Store cross-references in the d...@>= +@<Store cross-references in the \9{d}d...@>= while (next_control<=definition) { /* |format_code| or |definition| */ if (next_control==definition) { xref_switch=def_flag; /* implied \.{@@!} */ @@ -1261,7 +1261,7 @@ else { @ Finally, when the \TEX/ and definition parts have been treated, we have |next_control>=begin_C|. -@<Store cross-references in the \CEE/...@>= +@<Store cross-references in the \9{c}\CEE/...@>= if (next_control<=section_name) { /* |begin_C| or |section_name| */ if (next_control==begin_C) section_xref_switch=0; else { @@ -1398,7 +1398,7 @@ beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @@ -3420,10 +3420,10 @@ switch (next_control) { app_scrap(section_scrap,maybe_math);@+ app_scrap(exp,yes_math);@+break; case string: case constant: case verbatim: - @<Append a string or constant@>@;@+break; + @<Append a \9{s}string or constant@>@;@+break; case identifier: app_cur_id(true);@+break; case TeX_string: - @<Append a \TEX/ string, without forming a scrap@>@;@+break; + @<Append a \9{t}\TEX/ string, without forming a scrap@>@;@+break; case '/': case '.': app(next_control);@+app_scrap(binop,yes_math);@+break; case '<': app_str("\\langle");@+app_scrap(prelangle,yes_math);@+break; @@ -3545,7 +3545,7 @@ Many of the special characters in a string must be prefixed by `\.\\' so that \TEX/ will print them properly. @^special string characters@> -@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ switch (next_control) { case constant: app_str("\\T{"@q}@>); break; @.\\T@> @@ -3611,7 +3611,7 @@ this bug is probably to enclose the \.{@@t...@@>} in \.{@@[...@@]} so that the \TEX/ string is treated as an expression. @^bug, known@> -@<Append a \TEX/ string, without forming a scrap@>= +@<Append a \9{t}\TEX/ string, without forming a scrap@>= app_str("\\hbox{"@q}@>); @^high-bit character handling@> while (id_first<id_loc) { @@ -4183,7 +4183,7 @@ if (show_progress) printf("%s","\nWriting the output file..."); section_count=0; format_visible=true; copy_limbo(); finish_line(); flush_buffer(out_buf,false,false); /* insert a blank line, it looks nice */ -while (!input_has_ended) @<Translate the current section@>@; +while (!input_has_ended) @<Translate the \9{c}current section@>@; } @ @<Predecl...@>=@+static void phase_two(void); @@ -4211,13 +4211,13 @@ static boolean format_visible; /* should the next format declaration be output? static boolean doing_format=false; /* are we outputting a format declaration? */ static boolean group_found=false; /* has a starred section occurred? */ -@ @<Translate the current section@>= { +@ @<Translate the \9{c}current section@>= { section_count++; @<Output the code for the beginning of a new section@>@; save_position(); - @<Translate the \TEX/ part of the current section@>@; - @<Translate the definition part of the current section@>@; - @<Translate the \CEE/ part of the current section@>@; + @<Translate the \9{t}\TEX/ part of the current section@>@; + @<Translate the \9{d}definition part of the current section@>@; + @<Translate the \9{c}\CEE/ part of the current section@>@; @<Show cross-references to this section@>@; @<Output the code for the end of a section@>@; } @@ -4257,7 +4257,7 @@ out('{'); out_section(section_count); out('}'); @ In the \TEX/ part of a section, we simply copy the source text, except that index entries are not copied and \CEE/ text within \pb\ is translated. -@<Translate the \T...@>= do +@<Translate the \9{t}\T...@>= do switch (next_control=copy_TeX()) { case '|': init_stack(); output_C(); break; case '@@': out('@@'); break; @@ -4279,12 +4279,12 @@ while (next_control<format_code); @ When we get to the following code we have |next_control>=format_code|, and the token memory is in its initial empty state. -@<Translate the d...@>= +@<Translate the \9{d}d...@>= space_checked=false; while (next_control<=definition) { /* |format_code| or |definition| */ init_stack(); - if (next_control==definition) @<Start a macro definition@>@; - else @<Start a format definition@>@; + if (next_control==definition) @<Start \9{a}a macro definition@>@; + else @<Start \9{a}a format definition@>@; outer_parse(); finish_C(format_visible); format_visible=true; doing_format=false; } @@ -4337,7 +4337,7 @@ if the identifier is not followed by `\.(' at all, the replacement text starts immediately after the identifier. In the former case, it starts after we scan the matching `\.)'. -@<Start a macro...@>= { +@<Start \9{a}a macro...@>= { if (save_line!=out_line || save_place!=out_ptr || space_checked) app(backup); if(!space_checked){emit_space_if_needed();save_position();} app_str("\\D"); /* this will produce `\#\&{define }' */ @@ -4366,7 +4366,7 @@ it starts after we scan the matching `\.)'. } } -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { doing_format=true; if(*(loc-1)=='s' || *(loc-1)=='S') format_visible=false; if(!space_checked){emit_space_if_needed();save_position();} @@ -4394,7 +4394,7 @@ point to the current section name, if it has a name. @<Private...@>= static name_pointer this_section; /* the current section name, or zero */ -@ @<Translate the \CEE/...@>= +@ @<Translate the \9{c}\CEE/...@>= this_section=name_dir; if (next_control<=section_name) { emit_space_if_needed(); init_stack(); diff --git a/Build/source/texk/web2c/cwebdir/cwebacromac.tex b/Build/source/texk/web2c/cwebdir/cwebacromac.tex index 3e8baad77c1..1743ddd95d6 100644 --- a/Build/source/texk/web2c/cwebdir/cwebacromac.tex +++ b/Build/source/texk/web2c/cwebdir/cwebacromac.tex @@ -17,6 +17,16 @@ \let\pdfoutput=\outputmode \fi % end of LuaTeX->pdfTeX redirection macros +\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth + attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A + << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69 + \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% + \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight + depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /URI /URI (#2) >> >>}\box0\relax}\fi + \else #1 ({\tt#2})\fi} +{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL +{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL \def\tocpages{1} % Most programs have one-page Table-of-Contents \def\startpdf{\def\pagemode{/PageMode /UseOutlines} \ifnum\contentspagenumber=0 \advance \pageno by -\tocpages @@ -66,8 +76,7 @@ \fi \else \addtokens\toksC{\the\toksD}\global\havenumtrue \fi - \next -} + \next} \def\makenote{\addtokens\toksB {\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse} \def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} @@ -99,6 +108,7 @@ \afterassignment\makeolproctok\let\nxt= } \def\makeolnexttok{\afterassignment\makeolproctok\let\nxt= } \def\makeolgobbletok{\afterassignment\makeolnexttok\let\nxt= } +\def\makeolgobbletokk{\afterassignment\makeolgobbletok\let\nxt= } \def\addF#1{\addtokens\toksF{#1}\tokprocessedtrue} % now comes a routine to "sanitize" section names, for pdf outlines \def\makeolproctok{\tokprocessedfalse @@ -109,8 +119,7 @@ \else\ifx^\nxt \addF^\else\ifx_\nxt \addF_% sanitize ^ and _ \else\ifx\nxt\spacechar \addF\space \else\if\noexpand\nxt\relax % we have a control sequence; is it one we know? - \ifx\nxt~\addF\space - \else\ifx\nxt\onespace\addF\space + \ifx\nxt~\addF\space \else\ifx\nxt\onespace\addF\space \else\the\sanitizer \iftokprocessed\else\makeolproctokctli \iftokprocessed\else\makeolproctokctlii @@ -124,8 +133,7 @@ \else\expandafter\makeolproctokchar\meaning\nxt \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi - \next -} + \next} \def\makeolproctokchar#1 #2 #3{\addF{#3}} \def\makeolproctokctli{% \ifx\nxt\CEE\addF{C}\let\next\makeolgobbletok % \CEE/ @@ -133,8 +141,9 @@ \else\ifx\nxt\TEX\addF{TeX}\let\next\makeolgobbletok % \TEX/ \else\ifx\nxt\TeX\addF{TeX}\else\ifx\nxt\LaTeX\addF{LaTeX}% \else\ifx\nxt\CPLUSPLUS\addF{C++}\let\next\makeolgobbletok % \CPLUSPLUS/ - \else\ifx\nxt\Cee\addF{C}% + \else\ifx\nxt\Cee\addF{C}\else\ifx\nxt\dots\addF{...\space}% \else\ifx\nxt\PB \let\next\makeolgobbletok \tokprocessedtrue % \PB{...} + \else\ifx\nxt\9 \expandafter\nxt\relax \let\next\makeolgobbletokk % \9{#1} \else\ifx\nxt\.\tokprocessedtrue\instrtrue % \.{...} % skip \| \else\ifx\nxt\\\ifinstr\addF{\bschar\bschar}\else\tokprocessedtrue\fi @@ -149,7 +158,7 @@ \else\ifx\nxt\PP\addF{++}\else\ifx\nxt\MM\addF{--}% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi - \fi\fi + \fi\fi\fi\fi } \def\makeolproctokctlii{% \ifx\nxt\MG\addF{->}\else\ifx\nxt\GG\addF{>>}% diff --git a/Build/source/texk/web2c/cwebdir/cwebmac.tex b/Build/source/texk/web2c/cwebdir/cwebmac.tex index a46dc4b782f..53454300a9a 100644 --- a/Build/source/texk/web2c/cwebdir/cwebmac.tex +++ b/Build/source/texk/web2c/cwebdir/cwebmac.tex @@ -132,16 +132,6 @@ \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi \input cwebacromac % load hypertext macros -\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth - attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A - << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69 - \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% - \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight - depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A - << /S /URI /URI (#2) >> >>}\box0\relax}\fi - \else #1 ({\tt#2})\fi} -{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL -{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL \def\lapstar{\rlap{*}} \def\stsec{\rightskip=0pt % get out of C mode (cf. \B) @@ -242,9 +232,8 @@ \def\p#1{\cdot 2^{#1}} % power of two (hex exponent) \def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue -\newif\ifon \newif\iftitle \newif\ifpagesaved +\newif\ifon \newif\iftitle \newif\ifpagesaved \newif\ifheader -\newif\ifheader \def\lheader{\headertrue\mainfont\the\pageno\eightrm\qquad\grouptitle \hfill\title\qquad\mainfont\topsecno} % top line on left-hand pages \def\rheader{\headertrue\mainfont\topsecno\eightrm\qquad\title\hfill diff --git a/Build/source/texk/web2c/cwebdir/refsort.ch b/Build/source/texk/web2c/cwebdir/refsort.ch index 67175b030f7..2ebedfca696 100644 --- a/Build/source/texk/web2c/cwebdir/refsort.ch +++ b/Build/source/texk/web2c/cwebdir/refsort.ch @@ -45,12 +45,24 @@ int main() item *x, **y; @z +@x [4] l.83 + @<Copy |buf| to item |x|@>; +@y + @<Copy \9{b}|buf| to item |x|@>; +@z + @x [5] l.89 variable not used { register int k; @y { @z +@x [6] l.99 +@<Copy |buf|...@>= +@y +@<Copy \9{b}|buf|...@>= +@z + @x [9] l.149 'register' removed in C++17 { register int toggle=0; @y diff --git a/Build/source/texk/web2c/euptexdir/ChangeLog b/Build/source/texk/web2c/euptexdir/ChangeLog index 2f494fb0d90..3a16f5e6ce8 100644 --- a/Build/source/texk/web2c/euptexdir/ChangeLog +++ b/Build/source/texk/web2c/euptexdir/ChangeLog @@ -1,3 +1,36 @@ +2024-10-12 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * euptex-prim.test, tests/eup-prim.{tex,log}, + am/euptex.am: Add a test. + * eptex_version.h, eptex.ech: + Bump version to 240930. + +2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * eptex.ech: kcatcode (latin_ucs(14)) is removed + since it will be supported in upTeX-2.00. + +2024-09-28 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * euptex-{ctrlsym,kinsoku,prntknj}.test: + Skip tests with updvitype if updvitype are not built. + +2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * eptex.ech, pdfutils.ch: + Better support for kcatcode=20 (modifier). + * euptex-{ctrlsym,kinsoku,prntknj,ucs}.test, + tests/{control-symbol,ctrlsym.tex,endlinechar,free_{ixsp,pena}, + inhibitglue,kinsoku_{search,table},postpena,printkanji,ucs}.tex, + tests/eup-{endline,inhibitglue,jctrlsym,pknj-{e,s,u}}a.typ, + tests/{endline,free_{ixsp,pena},jctrlsym,kinsoku_{search,table}, + pknj-{e,s,u},postpena,ucs-{e,s,u}}.log: + Add regression tests by using Kitagawa-san's and + Yamashita-san's sample files. + * tests/{free_{ixsp,pena},inhibitglue,kinsoku_{search,table}, + postpena}.tex: Move from ../ptexdir/tests . + * am/euptex.am: Adjust. + 2024-06-04 Akira Kakuto <kakuto@jcom.zaq.ne.jp> * unbalanced-braces-eptex.ch, suppresserrors.ch: sync with the upstream diff --git a/Build/source/texk/web2c/euptexdir/am/euptex.am b/Build/source/texk/web2c/euptexdir/am/euptex.am index f961b447fcc..e8460a0598f 100644 --- a/Build/source/texk/web2c/euptexdir/am/euptex.am +++ b/Build/source/texk/web2c/euptexdir/am/euptex.am @@ -98,16 +98,23 @@ EXTRA_DIST += \ euptex_tests = \ euptexdir/euptriptest.test euptexdir/eptriptest.test \ euptexdir/pdfprimitive.test \ - euptexdir/euptex-ctrlsym.test \ euptexdir/eupver.test \ euptexdir/upkcat.test \ - euptexdir/wcfname.test euptexdir/wcfname0.test + euptexdir/wcfname.test euptexdir/wcfname0.test \ + euptexdir/euptex-ctrlsym.test \ + euptexdir/euptex-prntknj.test \ + euptexdir/euptex-kinsoku.test \ + euptexdir/euptex-prim.test \ + euptexdir/euptex-ucs.test euptexdir/euptriptest.log euptexdir/eptriptest.log: \ euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) euptexdir/pdfprimitive.log: euptex$(EXEEXT) -euptexdir/euptex-ctrlsym.log \ - euptexdir/eupver.log euptexdir/upkcat.log \ - euptexdir/wcfname.log euptexdir/wcfname0.log: euptex$(EXEEXT) +euptexdir/eupver.log euptexdir/upkcat.log \ + euptexdir/wcfname.log euptexdir/wcfname0.log \ + euptexdir/euptex-ctrlsym.log euptexdir/euptex-prntknj.log \ + euptexdir/euptex-kinsoku.log \ + euptexdir/euptex-prim.log \ + euptexdir/euptex-ucs.log: euptex$(EXEEXT) EXTRA_DIST += $(euptex_tests) @@ -125,11 +132,6 @@ EXTRA_DIST += \ euptexdir/eptrip/eptrip.tex \ euptexdir/euptrip/euptrip.diffs \ euptexdir/euptrip/texmf.cnf -euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) - $(triptrap_diffs) $@ -.PHONY: euptrip-clean -euptrip-clean: - rm -rf euptripdir DISTCLEANFILES += euptrip.diffs ## euptexdir/pdfprimitive.test EXTRA_DIST += \ @@ -139,7 +141,38 @@ EXTRA_DIST += \ DISTCLEANFILES += pdfprimitive-euptex.* ## euptex-ctrlsym.test -EXTRA_DIST += euptexdir/tests/ctrlsym.log euptexdir/tests/ctrlsym.tex -DISTCLEANFILES += eup-ctrlsym.fmt eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex +EXTRA_DIST += euptexdir/tests/ctrlsym.tex euptexdir/tests/ctrlsym.log \ + euptexdir/tests/endlinechar.tex euptexdir/tests/endline.log \ + euptexdir/tests/control-symbol.tex euptexdir/tests/jctrlsym.log \ + euptexdir/tests/eup-endlinea.typ euptexdir/tests/eup-jctrlsyma.typ +DISTCLEANFILES += eup-ctrlsym.log eup-ctrlsym.out eup-ctrlsym.tex \ + eup-endline*.* eup-jctrlsym*.* +## euptex-prntknj.test +EXTRA_DIST += euptexdir/tests/printkanji.tex euptexdir/tests/pknj-s.log \ + euptexdir/tests/pknj-e.log euptexdir/tests/pknj-u.log \ + euptexdir/tests/eup-pknj-sa.typ euptexdir/tests/eup-pknj-ea.typ \ + euptexdir/tests/eup-pknj-ua.typ +DISTCLEANFILES += eup-pknj-*.* +## euptex-kinsoku.test +EXTRA_DIST += euptexdir/tests/postpena.tex euptexdir/tests/postpena.log \ + euptexdir/tests/free_ixsp.tex euptexdir/tests/free_ixsp.log \ + euptexdir/tests/free_pena.tex euptexdir/tests/free_pena.log \ + euptexdir/tests/inhibitglue.tex euptexdir/tests/eup-inhibitgluea.typ \ + euptexdir/tests/kinsoku-table.tex euptexdir/tests/kinsoku-table.log \ + euptexdir/tests/kinsoku-search.tex euptexdir/tests/kinsoku-search.log +DISTCLEANFILES += eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* +## euptex-prim.test +EXTRA_DIST += euptexdir/tests/eup-prim.tex euptexdir/tests/eup-prim.log +DISTCLEANFILES += eup-prim.* +## euptex-ucs.test +EXTRA_DIST += euptexdir/tests/ucs.tex euptexdir/tests/ucs-s.log \ + euptexdir/tests/ucs-e.log euptexdir/tests/ucs-u.log +DISTCLEANFILES += eup-ucs*.* + +euptrip.diffs: euptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) + $(triptrap_diffs) $@ +.PHONY: euptrip-clean +euptrip-clean: + rm -rf euptripdir # (end of euptex.am) diff --git a/Build/source/texk/web2c/euptexdir/eptex.ech b/Build/source/texk/web2c/euptexdir/eptex.ech index a33ecad2bf3..8a6ecd76418 100644 --- a/Build/source/texk/web2c/euptexdir/eptex.ech +++ b/Build/source/texk/web2c/euptexdir/eptex.ech @@ -33,8 +33,8 @@ @y @d eTeX_version_string=='-2.6' {current \eTeX\ version} @# -@d epTeX_version_string=='-230214' -@d epTeX_version_number==230214 +@d epTeX_version_string=='-240930' +@d epTeX_version_number==240930 @z @x e-upTeX: banner @@ -309,6 +309,14 @@ end @d if_tdir_code=if_case_code+4 { `\.{\\iftdir}' } @z +@x procedure conditional +@!m,@!n:integer; {to be tested against the second operand} +@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests} +@y +@!m,@!n,@!s,@!v,@!nn,@!jj:integer; {to be tested against the second operand} +@!p,@!q:pointer; {for traversing token lists in \.{\\ifx} tests} +@z + @x [30.???] |scan_font_ident|: recognize \lastnodefont else begin print_err("Missing font identifier"); @y @@ -721,7 +729,6 @@ if j=1 then if (multistrlen(ustringcast(buffer), limit+1,loc)>1)and check_kcat_code(cur_tok,cur_chr) then begin if (cur_tok=not_cjk) then cur_tok:=other_kchar; - if (cur_tok=latin_ucs) then cur_tok:=other_token; cur_tok:=cur_chr+cur_tok*max_cjk_val; loc:=loc+multistrlen(ustringcast(buffer), limit+1,loc); end @@ -736,13 +743,35 @@ if j=1 then @y if check_kanji(info(p)) then {|wchar_token|} begin - if BYTE1(toBUFF(info(p) mod max_cjk_val))<>0 then - begin buffer[m]:=BYTE1(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end; - if BYTE2(toBUFF(info(p) mod max_cjk_val))<>0 then - begin buffer[m]:=BYTE2(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end; - if BYTE3(toBUFF(info(p) mod max_cjk_val))<>0 then - begin buffer[m]:=BYTE3(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); end; - buffer[m]:=BYTE4(toBUFF(info(p) mod max_cjk_val)); buffer2[m]:=1; incr(m); + if (isinternalUPTEX) then begin + s:=toUCS(ktokentochr(info(p))); + nn:=UVSgetcodepointlength(s); + jj:=1; + while jj<=nn do begin + v:=UVSgetcodepointinsequence(s,jj); + if (v>0) then begin + v:=UCStoUTF8(v); + if BYTE1(v)<>0 then + begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end; + if BYTE2(v)<>0 then + begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end; + if BYTE3(v)<>0 then + begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end; + buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m); + end; + incr(jj); + end + end + else begin + v:=toBUFF(info(p) mod max_cjk_val); + if BYTE1(v)<>0 then + begin buffer[m]:=BYTE1(v); buffer2[m]:=1; incr(m); end; + if BYTE2(v)<>0 then + begin buffer[m]:=BYTE2(v); buffer2[m]:=1; incr(m); end; + if BYTE3(v)<>0 then + begin buffer[m]:=BYTE3(v); buffer2[m]:=1; incr(m); end; + buffer[m]:=BYTE4(v); buffer2[m]:=1; incr(m); + end; p:=link(p); end else diff --git a/Build/source/texk/web2c/euptexdir/eptex_version.h b/Build/source/texk/web2c/euptexdir/eptex_version.h index 297bd81e7f3..f17d53a02c0 100644 --- a/Build/source/texk/web2c/euptexdir/eptex_version.h +++ b/Build/source/texk/web2c/euptexdir/eptex_version.h @@ -1 +1 @@ -#define EPTEX_VERSION "230214" +#define EPTEX_VERSION "240930" diff --git a/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test b/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test index 294e0cf0bf1..7284d8c6c35 100755 --- a/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test +++ b/Build/source/texk/web2c/euptexdir/euptex-ctrlsym.test @@ -5,24 +5,59 @@ BinDir=${BinDir:-.} ExeExt=${ExeExt:-} _euptex=$BinDir/euptex$ExeExt +_updvitype=$BinDir/updvitype$ExeExt LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFONTS=".;$srcdir//tests"; export TEXFONTS TEXFORMATS=.; export TEXFORMATS -# get same filename in log -rm -f eup-ctrlsym.tex -$LN_S $srcdir/euptexdir/tests/ctrlsym.tex ./eup-ctrlsym.tex - -#exit 77 +rm -f eup-ctrlsym.* eup-endline*.* eup-jctrlsym*.* -$_euptex -ini -etex eup-ctrlsym || exit 1 +if test ! -f ./eup-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./eup-basic.tex +fi +if test ! -f ./eup-basic.fmt; then + $_euptex -ini -etex eup-basic || exit 1 +fi -$_euptex -etex -fmt=eup-ctrlsym eup-ctrlsym || exit 2 +# ctrlsym.tex +$LN_S $srcdir/euptexdir/tests/ctrlsym.tex ./eup-ctrlsym.tex +$_euptex -etex -fmt=eup-basic eup-ctrlsym || exit 2 sed 1d eup-ctrlsym.log >eup-ctrlsym.out diff $srcdir/euptexdir/tests/ctrlsym.log eup-ctrlsym.out || exit 3 + +# endlinchar.tex +$LN_S $srcdir/euptexdir/tests/endlinechar.tex ./eup-endline.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-endline.tex || : + +sed 1d eup-endline.log >eup-endline.out + +diff $srcdir/euptexdir/tests/endline.log eup-endline.out || exit 4 + +if test -f $_updvitype; then + $_updvitype ./eup-endline.dvi >euptests/xeup-endline.typ + sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-endline.typ >euptests/xeup-endlinea.typ + diff $srcdir/euptexdir/tests/eup-endlinea.typ euptests/xeup-endlinea.typ || exit 5 +fi + + +# control-symbol.tex +$LN_S $srcdir/euptexdir/tests/control-symbol.tex ./eup-jctrlsym.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-jctrlsym.tex || : + +sed 1d eup-jctrlsym.log >eup-jctrlsym.out + +diff $srcdir/euptexdir/tests/jctrlsym.log eup-jctrlsym.out || exit 6 + +if test -f $_updvitype; then + $_updvitype ./eup-jctrlsym.dvi >euptests/xeup-jctrlsym.typ + sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-jctrlsym.typ >euptests/xeup-jctrlsyma.typ + diff $srcdir/euptexdir/tests/eup-jctrlsyma.typ euptests/xeup-jctrlsyma.typ || exit 7 +fi + diff --git a/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test b/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test new file mode 100755 index 00000000000..307b1dd6d5a --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/euptex-kinsoku.test @@ -0,0 +1,69 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_euptex=$BinDir/euptex$ExeExt +_updvitype=$BinDir/updvitype$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFONTS=".;$srcdir//tests"; export TEXFONTS +TEXFORMATS=.; export TEXFORMATS + +rm -f eup-postpena*.* eup-free_*.* eup-inhibitglue*.* eup-kinsoku*.* + +if test ! -f ./eup-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./eup-basic.tex +fi +if test ! -f ./eup-basic.fmt; then + $_euptex -ini -etex eup-basic || exit 1 +fi + +# postpena.tex +$LN_S $srcdir/euptexdir/tests/postpena.tex ./eup-postpena.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-postpena.tex || : + +sed 1d eup-postpena.log >eup-postpena.out + +diff $srcdir/euptexdir/tests/postpena.log eup-postpena.out || exit 3 + + +# free_ixsp.tex, free_pena.tex +$LN_S $srcdir/euptexdir/tests/free_ixsp.tex ./eup-free_ixsp.tex +$LN_S $srcdir/euptexdir/tests/free_pena.tex ./eup-free_pena.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-free_ixsp.tex || : +$_euptex -fmt=eup-basic -interaction=batchmode eup-free_pena.tex || : + +sed 1d eup-free_ixsp.log >eup-free_ixsp.out +sed 1d eup-free_pena.log >eup-free_pena.out + +diff $srcdir/euptexdir/tests/free_ixsp.log eup-free_ixsp.out || exit 4 +diff $srcdir/euptexdir/tests/free_pena.log eup-free_pena.out || exit 5 + + +# inhibitglue.tex +$LN_S $srcdir/euptexdir/tests/inhibitglue.tex ./eup-inhibitglue.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-inhibitglue.tex || : + +if test -f $_updvitype; then + $_updvitype ./eup-inhibitglue.dvi >euptests/xeup-inhibitglue.typ + sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-inhibitglue.typ >euptests/xeup-inhibitgluea.typ + diff $srcdir/euptexdir/tests/eup-inhibitgluea.typ euptests/xeup-inhibitgluea.typ || exit 7 +fi + +# kinsoku_table.tex, kinsoku_search.tex +$LN_S $srcdir/euptexdir/tests/kinsoku_table.tex ./eup-kinsoku_table.tex +$LN_S $srcdir/euptexdir/tests/kinsoku_search.tex ./eup-kinsoku_search.tex +$_euptex -fmt=eup-basic -interaction=batchmode eup-kinsoku_table.tex || : +$_euptex -fmt=eup-basic -interaction=batchmode eup-kinsoku_search.tex || : + +sed 1d eup-kinsoku_table.log >eup-kinsoku_table.out +sed 1d eup-kinsoku_search.log >eup-kinsoku_search.out + +diff $srcdir/euptexdir/tests/kinsoku_table.log eup-kinsoku_table.out || exit 8 +diff $srcdir/euptexdir/tests/kinsoku_search.log eup-kinsoku_search.out || exit 9 + diff --git a/Build/source/texk/web2c/euptexdir/euptex-prim.test b/Build/source/texk/web2c/euptexdir/euptex-prim.test new file mode 100755 index 00000000000..5ec6e09d151 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/euptex-prim.test @@ -0,0 +1,30 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_euptex=$BinDir/euptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +# get same filename in log +rm -f eup-prim.* +$LN_S $srcdir/euptexdir/tests/eup-prim.tex ./eup-prim.tex + +if test ! -f ./eup-basic.fmt; then + cp $srcdir/tests/dump-basic.tex ./eup-basic.tex + $_euptex -ini -etex eup-basic || exit 1 +fi + +$_euptex -fmt=eup-basic -interaction=batchmode eup-prim || : + +sed 1d eup-prim.log >eup-prim.out + +diff $srcdir/euptexdir/tests/eup-prim.log eup-prim.out || exit 3 + diff --git a/Build/source/texk/web2c/euptexdir/euptex-prntknj.test b/Build/source/texk/web2c/euptexdir/euptex-prntknj.test new file mode 100755 index 00000000000..a8dfa84c271 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/euptex-prntknj.test @@ -0,0 +1,61 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_euptex=$BinDir/euptex$ExeExt +_updvitype=$BinDir/updvitype$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TFMFONTS=".;$srcdir//tests"; export TFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +rm -f eup-pknj-*.* +$LN_S $srcdir/euptexdir/tests/printkanji.tex ./printkanji.tex + +if test ! -f ./eup-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./eup-basic.tex +fi +if test ! -f ./eup-basic-sjis.fmt; then + $_euptex -ini -etex -kanji-internal=sjis -jobname=eup-basic-sjis eup-basic || exit 1 +fi +if test ! -f ./eup-basic-euc.fmt; then + $_euptex -ini -etex -kanji-internal=euc -jobname=eup-basic-euc eup-basic || exit 2 +fi +if test ! -f ./eup-basic.fmt; then + $_euptex -ini -etex -kanji-internal=uptex -jobname=eup-basic eup-basic || exit 3 +fi + +$_euptex -fmt=eup-basic-sjis -kanji-internal=sjis -jobname=eup-pknj-s -interaction=batchmode printkanji || : +$_euptex -fmt=eup-basic-euc -kanji-internal=euc -jobname=eup-pknj-e -interaction=batchmode printkanji || : +$_euptex -fmt=eup-basic -jobname=eup-pknj-u -interaction=batchmode printkanji || : + +sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-s.log >eup-pknj-s.out +sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-e.log >eup-pknj-e.out +sed "1d;s/strings out of 497[67]..$/strings out of 497XXX/;s/characters out of 6215[789]..$/characters out of 6215XXX/" eup-pknj-u.log >eup-pknj-u.out + +diff $srcdir/euptexdir/tests/pknj-s.log eup-pknj-s.out || exit 10 +diff $srcdir/euptexdir/tests/pknj-e.log eup-pknj-e.out || exit 11 +diff $srcdir/euptexdir/tests/pknj-u.log eup-pknj-u.out || exit 12 + +if test ! -f $_updvitype; then + exit 0 +fi + +$_updvitype ./eup-pknj-s.dvi >euptests/xeup-pknj-s.typ +$_updvitype ./eup-pknj-e.dvi >euptests/xeup-pknj-e.typ +$_updvitype ./eup-pknj-u.dvi >euptests/xeup-pknj-u.typ + +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-s.typ >euptests/xeup-pknj-sa.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-e.typ >euptests/xeup-pknj-ea.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" euptests/xeup-pknj-u.typ >euptests/xeup-pknj-ua.typ + +diff $srcdir/euptexdir/tests/eup-pknj-sa.typ euptests/xeup-pknj-sa.typ || exit 20 +diff $srcdir/euptexdir/tests/eup-pknj-ea.typ euptests/xeup-pknj-ea.typ || exit 21 +diff $srcdir/euptexdir/tests/eup-pknj-ua.typ euptests/xeup-pknj-ua.typ || exit 22 + diff --git a/Build/source/texk/web2c/euptexdir/euptex-ucs.test b/Build/source/texk/web2c/euptexdir/euptex-ucs.test new file mode 100755 index 00000000000..764f6e93a9d --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/euptex-ucs.test @@ -0,0 +1,43 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_euptex=$BinDir/euptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +rm -f eup-ucs*.* +$LN_S $srcdir/euptexdir/tests/ucs.tex ./eup-ucs.tex + +if test ! -f ./eup-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./eup-basic.tex +fi +if test ! -f ./eup-basic-sjis.fmt; then + $_euptex -ini -etex -kanji-internal=sjis -jobname=eup-basic-sjis eup-basic || exit 1 +fi +if test ! -f ./eup-basic-euc.fmt; then + $_euptex -ini -etex -kanji-internal=euc -jobname=eup-basic-euc eup-basic || exit 2 +fi +if test ! -f ./eup-basic.fmt; then + $_euptex -ini -etex -kanji-internal=uptex -jobname=eup-basic eup-basic || exit 3 +fi + +$_euptex -fmt=eup-basic-sjis -kanji-internal=sjis -jobname=eup-ucs-s -interaction=batchmode eup-ucs || exit 4 +$_euptex -fmt=eup-basic-euc -kanji-internal=euc -jobname=eup-ucs-e -interaction=batchmode eup-ucs || exit 5 +$_euptex -fmt=eup-basic -jobname=eup-ucs-u -interaction=batchmode eup-ucs || exit 6 + +sed 1d eup-ucs-s.log >eup-ucs-s.out +sed 1d eup-ucs-e.log >eup-ucs-e.out +sed 1d eup-ucs-u.log >eup-ucs-u.out + +diff $srcdir/euptexdir/tests/ucs-s.log eup-ucs-s.out || exit 10 +diff $srcdir/euptexdir/tests/ucs-e.log eup-ucs-e.out || exit 11 +diff $srcdir/euptexdir/tests/ucs-u.log eup-ucs-u.out || exit 12 + diff --git a/Build/source/texk/web2c/euptexdir/pdfutils.ch b/Build/source/texk/web2c/euptexdir/pdfutils.ch index f62a48be121..8d22773233b 100644 --- a/Build/source/texk/web2c/euptexdir/pdfutils.ch +++ b/Build/source/texk/web2c/euptexdir/pdfutils.ch @@ -1176,7 +1176,7 @@ Ucharcat_convert_code: and (illegal_Ucharcat_wchar_catcode(cur_val)) then begin print_err("Invalid code ("); print_int(cur_val); @.Invalid code@> - print("), should be in the ranges 1..4, 6..8, 10..13, 16..19"); + print("), should be in the ranges 1..4, 6..8, 10..13, 16..20"); help1("I'm going to use 12 instead of that illegal code value.");@/ error; cat:=12; end else cat:=cur_val; @@ -1184,7 +1184,7 @@ Ucharcat_convert_code: begin if illegal_Ucharcat_wchar_catcode(cur_val) then begin print_err("Invalid code ("); print_int(cur_val); @.Invalid code@> - print("), should be in the ranges 16..19"); + print("), should be in the ranges 16..20"); help1("I'm going to use 18 instead of that illegal code value.");@/ error; cat:=other_kchar; end else cat:=cur_val; diff --git a/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex b/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex new file mode 100644 index 00000000000..be05906602d --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/control-symbol.tex @@ -0,0 +1,108 @@ +\scrollmode +% plain TeX ソース +\font\cmr=cmr10\cmr +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi + +\def\+{A} +\def\+{A} +\def\X{\+} +\def\Y{\+} + +\message{■control symbol} +% 記号類扱いの単文字命令 → control symbol +% (この時の和文文字の挙動が tex-jp-build#37 の問題) +\ifx\kanjiskip\undefined + \catcode`\+=12 + \catcode`\+=12 +\else + \catcode`\+=12 + \kcatcode`+=18 +\fi +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} + +\message{■control word} +% 普通の文字扱いの単文字命令 → control word +\ifx\kanjiskip\undefined + \catcode`\+=11 + \catcode`\+=11 +\else + \catcode`\+=11 + \kcatcode`+=17 +\fi +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} + +\message{■control word} +% 複数文字命令 → control word +\def\ABC{A} +\def\あいう{A} +\def\X{\ABC} +\def\Y{\あいう} +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} + +% csname +\ifx\protected\undefined\else +\catcode`\:=12 +\ifx\kanjiskip\undefined\else +\kcatcode`!=18 +\fi +\message{■csname} +\protected\expandafter\def\csname :AB\endcsname{A} +\protected\expandafter\def\csname !あい\endcsname{A} +\edef\X{\csname :AB\endcsname} +\edef\Y{\csname !あい\endcsname} +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} + +\protected\expandafter\def\csname AB:\endcsname{A} +\protected\expandafter\def\csname あい!\endcsname{A} +\edef\X{\csname AB:\endcsname} +\edef\Y{\csname あい!\endcsname} +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} + +\ifx\enablecjktoken\undefined\else +\message{■not_cjk} +\kcatcode`ア=15 +\kcatcode`!=15 +\catcode"8A=12\relax +\protected\expandafter\def\csname ア\endcsname{A} +\protected\expandafter\def\csname !\endcsname{A} +\edef\X{\csname ア\endcsname} +\edef\Y{\csname !\endcsname} +\show\X\relax\message{(\meaning\X)} +\show\Y\relax\message{(\meaning\Y)} +\fi +\fi + +\message{■行末の和文コントロールシンボル} + + +\kcatcode`】=18 + +\def\】{◆} +\def\@{◆} + +1. \】◇,\@◇ + +2. \】% +◇, \@% +◇ + +3. \】 +◇, \@ +◇ + +4. \】 ◇, \@ ◇ + + +\end + diff --git a/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex b/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex index f007708a2bc..d84a541707b 100644 --- a/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex +++ b/Build/source/texk/web2c/euptexdir/tests/ctrlsym.tex @@ -19,7 +19,8 @@ \count255=`\雪 \relax \message{B: \the\count255. 雪\string\雪 \雪^^J} \message{\expandafter\meaning\csname 雪\endcsname.^^J} - \message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}% + \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}\fi% + \ifnum\jis"2121="3000 \count4095=0 \count4095=`🍌 \relax \message{^^JC: \the\count4095^^J} @@ -27,7 +28,8 @@ \count4095=`\🍌 \relax \message{D: \the\count4095. 🍌\string\🍌 \🍌^^J} \message{\expandafter\meaning\csname 🍌\endcsname.^^J} - \message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}% + \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}\fi% + \fi %-- \setbox0=\vbox{} % no dvi/xdv/pdf output \endgroup diff --git a/Build/source/texk/web2c/euptexdir/tests/endline.log b/Build/source/texk/web2c/euptexdir/tests/endline.log new file mode 100644 index 00000000000..3c0524db173 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/endline.log @@ -0,0 +1,43 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-endline.tex +(./eup-endline.tex +! Undefined control sequence. +l.29 7a\^^e3 + ^^81^^82b\^^e3^^81^^82 +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.29 7a\^^e3^^81^^82b\^^e3 + ^^81^^82 +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.38 8a\^^e3^^81^^82 + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.42 9a\^^e3^^81^^82 + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +[1] ) +Output written on eup-endline.dvi (1 page, 256 bytes). diff --git a/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex b/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex new file mode 100644 index 00000000000..5dc8de812e7 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/endlinechar.tex @@ -0,0 +1,57 @@ +\font\x=ec-lmr10 \x +\parindent0pt\noautoxspacing +\output{\shipout\box255} +\def\あ{PPP} +\def\,{QQQ} + +1a\, +% --> 1aQQQ + +2a\あ +% --> 2aPPP + +\endlinechar=-1\relax + +3a\, +% --> 3aQQQ +% previous pTeX, upTeX: Undefined cs. + +4a\あ +% --> 4aPPP +% prev. pTeX: Undefined cs. + +5a, +% prev. upTeX: byte-seq. + +6aあ +% prev. upTeX: byte-seq. + +7a\^^e3^^81^^82b\^^e3^^81^^82 +% 2回エラーが出るが,これは正しい. + +% upTeX only tests +\ifx\enablecjktoken\undefined +\else + \catcode"E3=11\relax + \catcode"81=11\relax + \catcode"82=11\relax + 8a\^^e3^^81^^82 + % (p3.10.0-u1.27) --> 8aPPP + % (p4.0.0-u1.27) --> エラー 8a + \kcatcode`あ=15\relax + 9a\あ + % == 9a\^^e3^^81^^82. + % (p3.10.0-u1.27) --> 9aPPP + % (p4.0.0-u1.27) --> エラー 9a + \def\^^e3^^81^^82{RRR} + 10a\あ b\あ + % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aRRRbRRR + \kcatcode12354=16\relax + 11a\あ b\あ + % == 11a\^^e3^^81^^82 b\^^e3^^81^^82. + % (p3.10.0-u1.27) --> 11aRRRbRRR + % (p4.0.0-u1.27) --> 11aPPPbPPP +\fi + +\bye + diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ new file mode 100644 index 00000000000..1cbfa6b7501 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-endlinea.typ @@ -0,0 +1,93 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 191. +maxv=42152922, maxh=30785863, maxstackdepth=1, totalpages=1 +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: down3 655360 v:=0+655360=655360, vv:=42 +91: push +level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +92: fntdef1 0: ec-lmr10 +116: fntnum0 current font is ec-lmr10 +117: setchar49 ("31) h:=0+327680=327680, hh:=21 +118: setchar97 ("61) h:=327680+327680=655360, hh:=42 +119: setchar81 ("51) h:=655360+509738=1165098, hh:=74 +120: setchar81 ("51) h:=1165098+509738=1674836, hh:=106 +121: setchar81 ("51) h:=1674836+509738=2184574, hh:=138 +[1aQQQ] +122: pop +level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +123: y3 786432 v:=655360+786432=1441792, vv:=91 +127: push +level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +128: setchar50 ("32) h:=0+327680=327680, hh:=21 +129: setchar97 ("61) h:=327680+327680=655360, hh:=42 +130: setchar80 ("50) h:=655360+446005=1101365, hh:=70 +131: setchar80 ("50) h:=1101365+446005=1547370, hh:=98 +132: setchar80 ("50) h:=1547370+446005=1993375, hh:=126 +[2aPPP] +133: pop +level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +134: y0 786432 v:=1441792+786432=2228224, vv:=141 +135: push +level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +136: setchar51 ("33) h:=0+327680=327680, hh:=21 +137: setchar97 ("61) h:=327680+327680=655360, hh:=42 +138: setchar81 ("51) h:=655360+509738=1165098, hh:=74 +139: setchar81 ("51) h:=1165098+509738=1674836, hh:=106 +140: setchar81 ("51) h:=1674836+509738=2184574, hh:=138 +141: setchar52 ("34) h:=2184574+327680=2512254, hh:=159 +142: setchar97 ("61) h:=2512254+327680=2839934, hh:=180 +143: setchar80 ("50) h:=2839934+446005=3285939, hh:=208 +144: setchar80 ("50) h:=3285939+446005=3731944, hh:=236 +145: setchar80 ("50) h:=3731944+446005=4177949, hh:=264 +146: setchar53 ("35) h:=4177949+327680=4505629, hh:=285 +147: setchar97 ("61) h:=4505629+327680=4833309, hh:=306 +148: setchar54 ("36) h:=4833309+327680=5160989, hh:=327 +149: setchar97 ("61) h:=5160989+327680=5488669, hh:=348 +150: setchar55 ("37) h:=5488669+327680=5816349, hh:=369 +151: setchar97 ("61) h:=5816349+327680=6144029, hh:=390 +[3aQQQ4aPPP5a6a7a] +152: set1 129("81) h:=6144029+491520=6635549, hh:=421 +154: w2 -18205 h:=6635549-18205=6617344, hh:=420 +157: set1 130("82) h:=6617344+473301=7090645, hh:=450 +159: setchar98 ("62) h:=7090645+364085=7454730, hh:=473 +[b] +160: set1 129("81) h:=7454730+491520=7946250, hh:=504 +162: w0 -18205 h:=7946250-18205=7928045, hh:=503 +163: set1 130("82) h:=7928045+473301=8401346, hh:=533 +165: setchar56 ("38) h:=8401346+327680=8729026, hh:=554 +166: setchar97 ("61) h:=8729026+327680=9056706, hh:=575 +167: setchar57 ("39) h:=9056706+327680=9384386, hh:=596 +168: setchar97 ("61) h:=9384386+327680=9712066, hh:=617 +169: setchar49 ("31) h:=9712066+327680=10039746, hh:=638 +170: setchar48 ("30) h:=10039746+327680=10367426, hh:=659 +171: setchar97 ("61) h:=10367426+327680=10695106, hh:=679 +172: setchar82 ("52) h:=10695106+482410=11177516, hh:=710 +173: setchar82 ("52) h:=11177516+482410=11659926, hh:=741 +174: setchar82 ("52) h:=11659926+482410=12142336, hh:=771 +175: setchar98 ("62) h:=12142336+364085=12506421, hh:=794 +176: setchar82 ("52) h:=12506421+482410=12988831, hh:=825 +177: setchar82 ("52) h:=12988831+482410=13471241, hh:=855 +178: setchar82 ("52) h:=13471241+482410=13953651, hh:=886 +179: setchar49 ("31) h:=13953651+327680=14281331, hh:=907 +180: setchar49 ("31) h:=14281331+327680=14609011, hh:=927 +181: setchar97 ("61) h:=14609011+327680=14936691, hh:=948 +182: setchar80 ("50) h:=14936691+446005=15382696, hh:=976 +183: setchar80 ("50) h:=15382696+446005=15828701, hh:=1004 +184: setchar80 ("50) h:=15828701+446005=16274706, hh:=1032 +185: setchar98 ("62) h:=16274706+364085=16638791, hh:=1055 +186: setchar80 ("50) h:=16638791+446005=17084796, hh:=1083 +187: setchar80 ("50) h:=17084796+446005=17530801, hh:=1111 +188: setchar80 ("50) h:=17530801+446005=17976806, hh:=1139 +[8a9a10aRRRbRRR11aPPPbPPP] +189: pop +level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +190: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ new file mode 100644 index 00000000000..85cd742743e --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-inhibitgluea.typ @@ -0,0 +1,1846 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 3019. +maxv=43725786, maxh=30785863, maxstackdepth=4, totalpages=3 +Font 2: umin10 (JFM)---loaded at size 655360 DVI units +Font 1: cmtt10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: fntdef1 2: umin10 +127: fntnum2 current font is umin10 +128: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +131: fntdef1 1: cmtt10 +153: fntnum1 current font is cmtt10 +154: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +155: setchar110 ("6E) h:=974659+344061=1318720, hh:=84 +156: setchar117 ("75) h:=1318720+344061=1662781, hh:=106 +157: setchar108 ("6C) h:=1662781+344061=2006842, hh:=128 +158: setchar108 ("6C) h:=2006842+344061=2350903, hh:=150 +[\null] +159: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +160: y3 798030 v:=655360+798030=1453390, vv:=92 +164: push +level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92) +165: fntnum2 current font is umin10 +166: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +169: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +172: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +175: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +178: pop +level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92) +179: y0 798030 v:=1453390+798030=2251420, vv:=143 +180: push +level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143) +181: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +184: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +187: right3 300288 h:=960908+300288=1261196, hh:=80 +191: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +194: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +197: pop +level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143) +198: y0 798030 v:=2251420+798030=3049450, vv:=193 +199: push +level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193) +200: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +203: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +206: right3 300288 h:=960908+300288=1261196, hh:=80 +210: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +213: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +216: pop +level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193) +217: y0 798030 v:=3049450+798030=3847480, vv:=244 +218: push +level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244) +219: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +222: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +225: right3 600576 h:=960908+600576=1561484, hh:=99 +229: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +232: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +235: pop +level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244) +236: y0 798030 v:=3847480+798030=4645510, vv:=294 +237: push +level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294) +238: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +241: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +244: right3 600576 h:=960908+600576=1561484, hh:=99 +248: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +251: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +254: pop +level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294) +255: y0 798030 v:=4645510+798030=5443540, vv:=345 +256: push +level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345) +257: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +260: fntnum1 current font is cmtt10 +261: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +262: setchar117 ("75) h:=974659+344061=1318720, hh:=84 +263: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106 +264: setchar98 ("62) h:=1662781+344061=2006842, hh:=128 +265: setchar111 ("6F) h:=2006842+344061=2350903, hh:=150 +266: setchar120 ("78) h:=2350903+344061=2694964, hh:=172 +[\unbox] +267: pop +level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345) +268: y0 798030 v:=5443540+798030=6241570, vv:=395 +269: push +level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395) +270: fntnum2 current font is umin10 +271: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +274: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +277: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +280: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +283: pop +level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395) +284: y0 798030 v:=6241570+798030=7039600, vv:=446 +285: push +level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446) +286: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +289: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +292: right3 300288 h:=960908+300288=1261196, hh:=80 +296: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +299: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +302: pop +level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446) +303: y0 798030 v:=7039600+798030=7837630, vv:=496 +304: push +level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496) +305: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +308: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +311: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +314: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +317: pop +level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496) +318: y0 798030 v:=7837630+798030=8635660, vv:=547 +319: push +level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547) +320: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +323: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +326: right3 300288 h:=960908+300288=1261196, hh:=80 +330: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +333: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +336: pop +level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547) +337: y0 798030 v:=8635660+798030=9433690, vv:=598 +338: push +level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598) +339: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +342: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +345: right3 600576 h:=960908+600576=1561484, hh:=99 +349: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +352: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +355: pop +level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598) +356: y0 798030 v:=9433690+798030=10231720, vv:=648 +357: push +level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648) +358: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +361: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +364: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +367: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +370: pop +level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648) +371: z3 798031 v:=10231720+798031=11029751, vv:=699 +375: push +level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699) +376: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +379: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +382: right3 300288 h:=960908+300288=1261196, hh:=80 +386: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120 +389: set2 65288("FF08) type=6 h:=1891794+330310=2222104, hh:=141 +392: set2 12354("3042) type=0 h:=2222104+630598=2852702, hh:=181 +[あ) 漢(あ] +395: pop +level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699) +396: y0 798030 v:=11029751+798030=11827781, vv:=749 +397: push +level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749) +398: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +401: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +404: set2 28450("6F22) type=0 h:=960908+630598=1591506, hh:=101 +407: right3 300288 h:=1591506+300288=1891794, hh:=120 +411: set2 65288("FF08) type=6 h:=1891794+330310=2222104, hh:=141 +414: set2 12354("3042) type=0 h:=2222104+630598=2852702, hh:=181 +[あ)漢 (あ] +417: pop +level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749) +418: y0 798030 v:=11827781+798030=12625811, vv:=800 +419: push +level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800) +420: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +423: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +426: w3 300288 h:=960908+300288=1261196, hh:=80 +430: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120 +433: set2 28450("6F22) type=0 h:=1891794+630598=2522392, hh:=160 +436: w0 300288 h:=2522392+300288=2822680, hh:=179 +437: set2 65288("FF08) type=6 h:=2822680+330310=3152990, hh:=200 +440: set2 12354("3042) type=0 h:=3152990+630598=3783588, hh:=240 +[あ) 漢漢 (あ] +443: pop +level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800) +444: y0 798030 v:=12625811+798030=13423841, vv:=850 +445: push +level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850) +446: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +449: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +452: w3 300288 h:=960908+300288=1261196, hh:=80 +456: set2 28450("6F22) type=0 h:=1261196+630598=1891794, hh:=120 +459: w0 300288 h:=1891794+300288=2192082, hh:=139 +460: set2 65288("FF08) type=6 h:=2192082+330310=2522392, hh:=160 +463: set2 12354("3042) type=0 h:=2522392+630598=3152990, hh:=200 +[あ) 漢 (あ] +466: pop +level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850) +467: y0 798030 v:=13423841+798030=14221871, vv:=901 +468: push +level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901) +469: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +472: fntnum1 current font is cmtt10 +473: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +474: setchar118 ("76) h:=974659+344061=1318720, hh:=84 +475: setchar114 ("72) h:=1318720+344061=1662781, hh:=106 +476: setchar117 ("75) h:=1662781+344061=2006842, hh:=128 +477: setchar108 ("6C) h:=2006842+344061=2350903, hh:=150 +478: setchar101 ("65) h:=2350903+344061=2694964, hh:=172 +[\vrule] +479: pop +level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901) +480: y0 798030 v:=14221871+798030=15019901, vv:=951 +481: push +level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951) +482: fntnum2 current font is umin10 +483: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +486: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +489: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +492: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +495: pop +level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951) +496: y0 798030 v:=15019901+798030=15817931, vv:=1002 +497: push +level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002) +498: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +501: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +504: right3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +508: down3 91000 v:=15817931+91000=15908931, vv:=1008 +512: setrule height 600600, width 26214 (39x2 pixels) + h:=1261196+26214=1287410, hh:=82 +521: down3 -91000 v:=15908931-91000=15817931, vv:=1002 +525: set2 65288("FF08) type=6 h:=1287410+330310=1617720, hh:=103 +528: set2 12354("3042) type=0 h:=1617720+630598=2248318, hh:=143 +[(あ] +531: pop +level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002) +532: y0 798030 v:=15817931+798030=16615961, vv:=1052 +533: push +level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052) +534: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +537: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +[あ)] +540: down3 91000 v:=16615961+91000=16706961, vv:=1058 +544: setrule height 600600, width 26214 (39x2 pixels) + h:=960908+26214=987122, hh:=63 +553: right3 300288 h:=987122+300288=1287410, hh:=82 +[ ] +557: down3 -91000 v:=16706961-91000=16615961, vv:=1052 +561: set2 65288("FF08) type=6 h:=1287410+330310=1617720, hh:=103 +564: set2 12354("3042) type=0 h:=1617720+630598=2248318, hh:=143 +[(あ] +567: pop +level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052) +568: y0 798030 v:=16615961+798030=17413991, vv:=1103 +569: push +level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103) +570: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +573: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +576: w3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +580: down3 91000 v:=17413991+91000=17504991, vv:=1109 +584: setrule height 600600, width 26214 (39x2 pixels) + h:=1261196+26214=1287410, hh:=82 +593: setrule height 600600, width 26214 (39x2 pixels) + h:=1287410+26214=1313624, hh:=84 +602: w0 300288 h:=1313624+300288=1613912, hh:=102 +[ ] +603: down3 -91000 v:=17504991-91000=17413991, vv:=1103 +607: set2 65288("FF08) type=6 h:=1613912+330310=1944222, hh:=123 +610: set2 12354("3042) type=0 h:=1944222+630598=2574820, hh:=163 +[(あ] +613: pop +level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103) +614: y0 798030 v:=17413991+798030=18212021, vv:=1154 +615: push +level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154) +616: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +619: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +622: w3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +626: down3 91000 v:=18212021+91000=18303021, vv:=1160 +630: setrule height 600600, width 26214 (39x2 pixels) + h:=1261196+26214=1287410, hh:=82 +639: w0 300288 h:=1287410+300288=1587698, hh:=101 +[ ] +640: down3 -91000 v:=18303021-91000=18212021, vv:=1154 +644: set2 65288("FF08) type=6 h:=1587698+330310=1918008, hh:=122 +647: set2 12354("3042) type=0 h:=1918008+630598=2548606, hh:=162 +[(あ] +650: pop +level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154) +651: y0 798030 v:=18212021+798030=19010051, vv:=1204 +652: push +level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204) +653: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +656: fntnum1 current font is cmtt10 +657: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +658: setchar100 ("64) h:=974659+344061=1318720, hh:=84 +659: setchar105 ("69) h:=1318720+344061=1662781, hh:=106 +660: setchar115 ("73) h:=1662781+344061=2006842, hh:=128 +661: setchar99 ("63) h:=2006842+344061=2350903, hh:=150 +662: setchar114 ("72) h:=2350903+344061=2694964, hh:=172 +663: setchar101 ("65) h:=2694964+344061=3039025, hh:=194 +664: setchar116 ("74) h:=3039025+344061=3383086, hh:=216 +665: setchar105 ("69) h:=3383086+344061=3727147, hh:=238 +666: setchar111 ("6F) h:=3727147+344061=4071208, hh:=260 +667: setchar110 ("6E) h:=4071208+344061=4415269, hh:=282 +668: setchar97 ("61) h:=4415269+344061=4759330, hh:=303 +669: setchar114 ("72) h:=4759330+344061=5103391, hh:=325 +670: setchar121 ("79) h:=5103391+344061=5447452, hh:=347 +[\discretionary] +671: pop +level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204) +672: y0 798030 v:=19010051+798030=19808081, vv:=1255 +673: push +level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255) +674: fntnum2 current font is umin10 +675: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +678: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +681: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +684: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +687: pop +level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255) +688: y0 798030 v:=19808081+798030=20606111, vv:=1305 +689: push +level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305) +690: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +693: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +696: right3 300288 h:=960908+300288=1261196, hh:=80 +700: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +703: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +706: pop +level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305) +707: y0 798030 v:=20606111+798030=21404141, vv:=1356 +708: push +level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356) +709: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +712: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +715: right3 300288 h:=960908+300288=1261196, hh:=80 +719: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +722: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +725: pop +level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356) +726: y0 798030 v:=21404141+798030=22202171, vv:=1406 +727: push +level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406) +728: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +731: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +734: right3 600576 h:=960908+600576=1561484, hh:=99 +738: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +741: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +744: pop +level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406) +745: y0 798030 v:=22202171+798030=23000201, vv:=1457 +746: push +level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457) +747: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +750: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +753: right3 600576 h:=960908+600576=1561484, hh:=99 +757: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +760: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +763: pop +level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457) +764: y0 798030 v:=23000201+798030=23798231, vv:=1507 +765: push +level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507) +766: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +769: fntnum1 current font is cmtt10 +770: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +771: setchar115 ("73) h:=974659+344061=1318720, hh:=84 +772: setchar112 ("70) h:=1318720+344061=1662781, hh:=106 +773: setchar101 ("65) h:=1662781+344061=2006842, hh:=128 +774: setchar99 ("63) h:=2006842+344061=2350903, hh:=150 +775: setchar105 ("69) h:=2350903+344061=2694964, hh:=172 +776: setchar97 ("61) h:=2694964+344061=3039025, hh:=194 +777: setchar108 ("6C) h:=3039025+344061=3383086, hh:=216 +[\special] +778: pop +level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507) +779: y0 798030 v:=23798231+798030=24596261, vv:=1558 +780: push +level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558) +781: fntnum2 current font is umin10 +782: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +785: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +788: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +791: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +794: pop +level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558) +795: y0 798030 v:=24596261+798030=25394291, vv:=1608 +796: push +level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608) +797: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +800: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +803: right3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +807: xxx '' +809: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +812: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[(あ] +815: pop +level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608) +816: y0 798030 v:=25394291+798030=26192321, vv:=1659 +817: push +level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659) +818: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +821: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +[あ)] +824: xxx '' +826: right3 300288 h:=960908+300288=1261196, hh:=80 +830: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +833: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[ (あ] +836: pop +level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659) +837: y0 798030 v:=26192321+798030=26990351, vv:=1710 +838: push +level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710) +839: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +842: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +845: w3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +849: xxx '' +851: xxx '' +853: w0 300288 h:=1261196+300288=1561484, hh:=99 +854: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +857: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[ (あ] +860: pop +level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710) +861: y0 798030 v:=26990351+798030=27788381, vv:=1760 +862: push +level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760) +863: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +866: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +869: w3 300288 h:=960908+300288=1261196, hh:=80 +[あ) ] +873: xxx '' +875: w0 300288 h:=1261196+300288=1561484, hh:=99 +876: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +879: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[ (あ] +882: pop +level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760) +883: y0 798030 v:=27788381+798030=28586411, vv:=1811 +884: push +level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811) +885: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +888: fntnum1 current font is cmtt10 +889: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +890: setchar119 ("77) h:=974659+344061=1318720, hh:=84 +891: setchar114 ("72) h:=1318720+344061=1662781, hh:=106 +892: setchar105 ("69) h:=1662781+344061=2006842, hh:=128 +893: setchar116 ("74) h:=2006842+344061=2350903, hh:=150 +894: setchar101 ("65) h:=2350903+344061=2694964, hh:=172 +895: setchar45 ("2D) h:=2694964+344061=3039025, hh:=194 +896: setchar49 ("31) h:=3039025+344061=3383086, hh:=216 +[\write-1] +897: pop +level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811) +898: y0 798030 v:=28586411+798030=29384441, vv:=1861 +899: push +level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861) +900: fntnum2 current font is umin10 +901: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +904: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +907: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +910: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +913: pop +level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861) +914: y0 798030 v:=29384441+798030=30182471, vv:=1912 +915: push +level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912) +916: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +919: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +922: right3 300288 h:=960908+300288=1261196, hh:=80 +926: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +929: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +932: pop +level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912) +933: y0 798030 v:=30182471+798030=30980501, vv:=1962 +934: push +level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962) +935: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +938: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +941: right3 300288 h:=960908+300288=1261196, hh:=80 +945: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +948: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +951: pop +level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962) +952: z0 798031 v:=30980501+798031=31778532, vv:=2013 +953: push +level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013) +954: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +957: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +960: right3 600576 h:=960908+600576=1561484, hh:=99 +964: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +967: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +970: pop +level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013) +971: y0 798030 v:=31778532+798030=32576562, vv:=2063 +972: push +level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063) +973: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +976: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +979: right3 600576 h:=960908+600576=1561484, hh:=99 +983: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +986: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +989: pop +level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063) +990: y0 798030 v:=32576562+798030=33374592, vv:=2114 +991: push +level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114) +992: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +995: fntnum1 current font is cmtt10 +996: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +997: setchar105 ("69) h:=974659+344061=1318720, hh:=84 +998: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106 +999: setchar115 ("73) h:=1662781+344061=2006842, hh:=128 +1000: setchar101 ("65) h:=2006842+344061=2350903, hh:=150 +1001: setchar114 ("72) h:=2350903+344061=2694964, hh:=172 +1002: setchar116 ("74) h:=2694964+344061=3039025, hh:=194 +[\insert] +1003: pop +level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114) +1004: y0 798030 v:=33374592+798030=34172622, vv:=2165 +1005: push +level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165) +1006: fntnum2 current font is umin10 +1007: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1010: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1013: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1016: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1019: pop +level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165) +1020: y0 798030 v:=34172622+798030=34970652, vv:=2215 +1021: push +level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215) +1022: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1025: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1028: right3 300288 h:=960908+300288=1261196, hh:=80 +1032: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1035: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1038: pop +level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215) +1039: y0 798030 v:=34970652+798030=35768682, vv:=2266 +1040: push +level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266) +1041: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1044: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1047: right3 300288 h:=960908+300288=1261196, hh:=80 +1051: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1054: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1057: pop +level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266) +1058: y0 798030 v:=35768682+798030=36566712, vv:=2316 +1059: push +level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316) +1060: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1063: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1066: right3 600576 h:=960908+600576=1561484, hh:=99 +1070: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1073: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1076: pop +level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316) +1077: y0 798030 v:=36566712+798030=37364742, vv:=2367 +1078: push +level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367) +1079: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1082: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1085: right3 600576 h:=960908+600576=1561484, hh:=99 +1089: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1092: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1095: pop +level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367) +1096: y0 798030 v:=37364742+798030=38162772, vv:=2417 +1097: push +level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417) +1098: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1101: fntnum1 current font is cmtt10 +1102: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1103: setchar109 ("6D) h:=974659+344061=1318720, hh:=84 +1104: setchar97 ("61) h:=1318720+344061=1662781, hh:=106 +1105: setchar114 ("72) h:=1662781+344061=2006842, hh:=128 +1106: setchar107 ("6B) h:=2006842+344061=2350903, hh:=150 +[\mark] +1107: pop +level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417) +1108: y0 798030 v:=38162772+798030=38960802, vv:=2468 +1109: push +level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468) +1110: fntnum2 current font is umin10 +1111: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1114: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1117: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1120: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1123: pop +level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468) +1124: y0 798030 v:=38960802+798030=39758832, vv:=2518 +1125: push +level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518) +1126: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1129: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1132: right3 300288 h:=960908+300288=1261196, hh:=80 +1136: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1139: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1142: pop +level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518) +1143: y0 798030 v:=39758832+798030=40556862, vv:=2569 +1144: push +level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569) +1145: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1148: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1151: right3 300288 h:=960908+300288=1261196, hh:=80 +1155: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1158: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1161: pop +level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569) +1162: y0 798030 v:=40556862+798030=41354892, vv:=2619 +1163: push +level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619) +1164: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1167: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1170: right3 600576 h:=960908+600576=1561484, hh:=99 +1174: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1177: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1180: pop +level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619) +1181: y0 798030 v:=41354892+798030=42152922, vv:=2670 +1182: push +level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670) +1183: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1186: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1189: right3 600576 h:=960908+600576=1561484, hh:=99 +1193: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1196: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1199: pop +level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670) +1200: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1201: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1205: eop + +1206: beginning of page 2 +1251: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +1252: down3 -917504 v:=0-917504=-917504, vv:=-58 +1256: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +1257: down4 42152922 v:=0+42152922=42152922, vv:=2670 +1262: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1263: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +1268: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +1269: fntnum2 current font is umin10 +1270: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1273: fntnum1 current font is cmtt10 +1274: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1275: setchar118 ("76) h:=974659+344061=1318720, hh:=84 +1276: setchar97 ("61) h:=1318720+344061=1662781, hh:=106 +1277: setchar100 ("64) h:=1662781+344061=2006842, hh:=128 +1278: setchar106 ("6A) h:=2006842+344061=2350903, hh:=150 +1279: setchar117 ("75) h:=2350903+344061=2694964, hh:=172 +1280: setchar115 ("73) h:=2694964+344061=3039025, hh:=194 +1281: setchar116 ("74) h:=3039025+344061=3383086, hh:=216 +[\vadjust] +1282: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +1283: y3 798030 v:=655360+798030=1453390, vv:=92 +1287: push +level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92) +1288: fntnum2 current font is umin10 +1289: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1292: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1295: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1298: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1301: pop +level 1:(h=0,v=1453390,w=0,x=0,y=798030,z=0,hh=0,vv=92) +1302: y0 798030 v:=1453390+798030=2251420, vv:=143 +1303: push +level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143) +1304: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1307: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1310: right3 300288 h:=960908+300288=1261196, hh:=80 +1314: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1317: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1320: pop +level 1:(h=0,v=2251420,w=0,x=0,y=798030,z=0,hh=0,vv=143) +1321: y0 798030 v:=2251420+798030=3049450, vv:=193 +1322: push +level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193) +1323: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1326: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1329: right3 300288 h:=960908+300288=1261196, hh:=80 +1333: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1336: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1339: pop +level 1:(h=0,v=3049450,w=0,x=0,y=798030,z=0,hh=0,vv=193) +1340: y0 798030 v:=3049450+798030=3847480, vv:=244 +1341: push +level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244) +1342: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1345: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1348: right3 600576 h:=960908+600576=1561484, hh:=99 +1352: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1355: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1358: pop +level 1:(h=0,v=3847480,w=0,x=0,y=798030,z=0,hh=0,vv=244) +1359: y0 798030 v:=3847480+798030=4645510, vv:=294 +1360: push +level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294) +1361: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1364: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1367: right3 600576 h:=960908+600576=1561484, hh:=99 +1371: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1374: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1377: pop +level 1:(h=0,v=4645510,w=0,x=0,y=798030,z=0,hh=0,vv=294) +1378: y0 798030 v:=4645510+798030=5443540, vv:=345 +1379: push +level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345) +1380: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1383: fntnum1 current font is cmtt10 +1384: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1385: setchar104 ("68) h:=974659+344061=1318720, hh:=84 +1386: setchar115 ("73) h:=1318720+344061=1662781, hh:=106 +1387: setchar107 ("6B) h:=1662781+344061=2006842, hh:=128 +1388: setchar105 ("69) h:=2006842+344061=2350903, hh:=150 +1389: setchar112 ("70) h:=2350903+344061=2694964, hh:=172 +1390: setchar48 ("30) h:=2694964+344061=3039025, hh:=194 +1391: setchar112 ("70) h:=3039025+344061=3383086, hh:=216 +1392: setchar116 ("74) h:=3383086+344061=3727147, hh:=238 +[\hskip0pt] +1393: pop +level 1:(h=0,v=5443540,w=0,x=0,y=798030,z=0,hh=0,vv=345) +1394: y0 798030 v:=5443540+798030=6241570, vv:=395 +1395: push +level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395) +1396: fntnum2 current font is umin10 +1397: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1400: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1403: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1406: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1409: pop +level 1:(h=0,v=6241570,w=0,x=0,y=798030,z=0,hh=0,vv=395) +1410: y0 798030 v:=6241570+798030=7039600, vv:=446 +1411: push +level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446) +1412: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1415: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1418: right3 300288 h:=960908+300288=1261196, hh:=80 +1422: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1425: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1428: pop +level 1:(h=0,v=7039600,w=0,x=0,y=798030,z=0,hh=0,vv=446) +1429: y0 798030 v:=7039600+798030=7837630, vv:=496 +1430: push +level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496) +1431: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1434: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1437: right3 300288 h:=960908+300288=1261196, hh:=80 +1441: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1444: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1447: pop +level 1:(h=0,v=7837630,w=0,x=0,y=798030,z=0,hh=0,vv=496) +1448: y0 798030 v:=7837630+798030=8635660, vv:=547 +1449: push +level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547) +1450: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1453: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1456: right3 600576 h:=960908+600576=1561484, hh:=99 +1460: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1463: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1466: pop +level 1:(h=0,v=8635660,w=0,x=0,y=798030,z=0,hh=0,vv=547) +1467: y0 798030 v:=8635660+798030=9433690, vv:=598 +1468: push +level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598) +1469: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1472: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1475: right3 600576 h:=960908+600576=1561484, hh:=99 +1479: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1482: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1485: pop +level 1:(h=0,v=9433690,w=0,x=0,y=798030,z=0,hh=0,vv=598) +1486: y0 798030 v:=9433690+798030=10231720, vv:=648 +1487: push +level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648) +1488: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1491: fntnum1 current font is cmtt10 +1492: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1493: setchar107 ("6B) h:=974659+344061=1318720, hh:=84 +1494: setchar101 ("65) h:=1318720+344061=1662781, hh:=106 +1495: setchar114 ("72) h:=1662781+344061=2006842, hh:=128 +1496: setchar110 ("6E) h:=2006842+344061=2350903, hh:=150 +1497: setchar48 ("30) h:=2350903+344061=2694964, hh:=172 +1498: setchar112 ("70) h:=2694964+344061=3039025, hh:=194 +1499: setchar116 ("74) h:=3039025+344061=3383086, hh:=216 +[\kern0pt] +1500: pop +level 1:(h=0,v=10231720,w=0,x=0,y=798030,z=0,hh=0,vv=648) +1501: z3 798031 v:=10231720+798031=11029751, vv:=699 +1505: push +level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699) +1506: fntnum2 current font is umin10 +1507: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1510: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1513: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1516: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1519: pop +level 1:(h=0,v=11029751,w=0,x=0,y=798030,z=798031,hh=0,vv=699) +1520: y0 798030 v:=11029751+798030=11827781, vv:=749 +1521: push +level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749) +1522: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1525: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1528: right3 300288 h:=960908+300288=1261196, hh:=80 +1532: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1535: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1538: pop +level 1:(h=0,v=11827781,w=0,x=0,y=798030,z=798031,hh=0,vv=749) +1539: y0 798030 v:=11827781+798030=12625811, vv:=800 +1540: push +level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800) +1541: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1544: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1547: right3 300288 h:=960908+300288=1261196, hh:=80 +1551: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1554: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1557: pop +level 1:(h=0,v=12625811,w=0,x=0,y=798030,z=798031,hh=0,vv=800) +1558: y0 798030 v:=12625811+798030=13423841, vv:=850 +1559: push +level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850) +1560: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1563: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1566: right3 600576 h:=960908+600576=1561484, hh:=99 +1570: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1573: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1576: pop +level 1:(h=0,v=13423841,w=0,x=0,y=798030,z=798031,hh=0,vv=850) +1577: y0 798030 v:=13423841+798030=14221871, vv:=901 +1578: push +level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901) +1579: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1582: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1585: right3 600576 h:=960908+600576=1561484, hh:=99 +1589: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1592: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1595: pop +level 1:(h=0,v=14221871,w=0,x=0,y=798030,z=798031,hh=0,vv=901) +1596: y0 798030 v:=14221871+798030=15019901, vv:=951 +1597: push +level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951) +1598: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1601: fntnum1 current font is cmtt10 +1602: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1603: setchar112 ("70) h:=974659+344061=1318720, hh:=84 +1604: setchar101 ("65) h:=1318720+344061=1662781, hh:=106 +1605: setchar110 ("6E) h:=1662781+344061=2006842, hh:=128 +1606: setchar97 ("61) h:=2006842+344061=2350903, hh:=150 +1607: setchar108 ("6C) h:=2350903+344061=2694964, hh:=172 +1608: setchar116 ("74) h:=2694964+344061=3039025, hh:=194 +1609: setchar121 ("79) h:=3039025+344061=3383086, hh:=216 +1610: setchar49 ("31) h:=3383086+344061=3727147, hh:=238 +1611: setchar48 ("30) h:=3727147+344061=4071208, hh:=260 +1612: setchar48 ("30) h:=4071208+344061=4415269, hh:=282 +1613: setchar48 ("30) h:=4415269+344061=4759330, hh:=303 +1614: setchar48 ("30) h:=4759330+344061=5103391, hh:=325 +[\penalty10000] +1615: pop +level 1:(h=0,v=15019901,w=0,x=0,y=798030,z=798031,hh=0,vv=951) +1616: y0 798030 v:=15019901+798030=15817931, vv:=1002 +1617: push +level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002) +1618: fntnum2 current font is umin10 +1619: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1622: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1625: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1628: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1631: pop +level 1:(h=0,v=15817931,w=0,x=0,y=798030,z=798031,hh=0,vv=1002) +1632: y0 798030 v:=15817931+798030=16615961, vv:=1052 +1633: push +level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052) +1634: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1637: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1640: right3 300288 h:=960908+300288=1261196, hh:=80 +1644: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1647: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1650: pop +level 1:(h=0,v=16615961,w=0,x=0,y=798030,z=798031,hh=0,vv=1052) +1651: y0 798030 v:=16615961+798030=17413991, vv:=1103 +1652: push +level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103) +1653: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1656: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1659: right3 300288 h:=960908+300288=1261196, hh:=80 +1663: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1666: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1669: pop +level 1:(h=0,v=17413991,w=0,x=0,y=798030,z=798031,hh=0,vv=1103) +1670: y0 798030 v:=17413991+798030=18212021, vv:=1154 +1671: push +level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154) +1672: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1675: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1678: right3 600576 h:=960908+600576=1561484, hh:=99 +1682: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1685: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1688: pop +level 1:(h=0,v=18212021,w=0,x=0,y=798030,z=798031,hh=0,vv=1154) +1689: y0 798030 v:=18212021+798030=19010051, vv:=1204 +1690: push +level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204) +1691: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1694: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1697: right3 600576 h:=960908+600576=1561484, hh:=99 +1701: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1704: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1707: pop +level 1:(h=0,v=19010051,w=0,x=0,y=798030,z=798031,hh=0,vv=1204) +1708: y0 798030 v:=19010051+798030=19808081, vv:=1255 +1709: push +level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255) +1710: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1713: fntnum1 current font is cmtt10 +1714: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1715: setchar114 ("72) h:=974659+344061=1318720, hh:=84 +1716: setchar101 ("65) h:=1318720+344061=1662781, hh:=106 +1717: setchar108 ("6C) h:=1662781+344061=2006842, hh:=128 +1718: setchar97 ("61) h:=2006842+344061=2350903, hh:=150 +1719: setchar120 ("78) h:=2350903+344061=2694964, hh:=172 +[\relax] +1720: pop +level 1:(h=0,v=19808081,w=0,x=0,y=798030,z=798031,hh=0,vv=1255) +1721: y0 798030 v:=19808081+798030=20606111, vv:=1305 +1722: push +level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305) +1723: fntnum2 current font is umin10 +1724: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1727: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1730: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1733: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1736: pop +level 1:(h=0,v=20606111,w=0,x=0,y=798030,z=798031,hh=0,vv=1305) +1737: y0 798030 v:=20606111+798030=21404141, vv:=1356 +1738: push +level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356) +1739: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1742: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1745: right3 300288 h:=960908+300288=1261196, hh:=80 +1749: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1752: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1755: pop +level 1:(h=0,v=21404141,w=0,x=0,y=798030,z=798031,hh=0,vv=1356) +1756: y0 798030 v:=21404141+798030=22202171, vv:=1406 +1757: push +level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406) +1758: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1761: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1764: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1767: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1770: pop +level 1:(h=0,v=22202171,w=0,x=0,y=798030,z=798031,hh=0,vv=1406) +1771: y0 798030 v:=22202171+798030=23000201, vv:=1457 +1772: push +level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457) +1773: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1776: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1779: right3 300288 h:=960908+300288=1261196, hh:=80 +1783: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1786: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1789: pop +level 1:(h=0,v=23000201,w=0,x=0,y=798030,z=798031,hh=0,vv=1457) +1790: y0 798030 v:=23000201+798030=23798231, vv:=1507 +1791: push +level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507) +1792: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1795: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1798: right3 600576 h:=960908+600576=1561484, hh:=99 +1802: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1805: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1808: pop +level 1:(h=0,v=23798231,w=0,x=0,y=798030,z=798031,hh=0,vv=1507) +1809: y0 798030 v:=23798231+798030=24596261, vv:=1558 +1810: push +level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558) +1811: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1814: set2 12354("3042) type=0 h:=630598+630598=1261196, hh:=80 +1817: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1820: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[ああ(あ] +1823: pop +level 1:(h=0,v=24596261,w=0,x=0,y=798030,z=798031,hh=0,vv=1558) +1824: y0 798030 v:=24596261+798030=25394291, vv:=1608 +1825: push +level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608) +1826: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1829: set2 12354("3042) type=0 h:=630598+630598=1261196, hh:=80 +1832: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1835: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[ああ(あ] +1838: pop +level 1:(h=0,v=25394291,w=0,x=0,y=798030,z=798031,hh=0,vv=1608) +1839: y0 798030 v:=25394291+798030=26192321, vv:=1659 +1840: push +level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659) +1841: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1844: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1847: right3 300288 h:=960908+300288=1261196, hh:=80 +1851: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120 +1854: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) ああ] +1857: pop +level 1:(h=0,v=26192321,w=0,x=0,y=798030,z=798031,hh=0,vv=1659) +1858: y0 798030 v:=26192321+798030=26990351, vv:=1710 +1859: push +level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710) +1860: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1863: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1866: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101 +1869: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ)ああ] +1872: pop +level 1:(h=0,v=26990351,w=0,x=0,y=798030,z=798031,hh=0,vv=1710) +1873: y0 798030 v:=26990351+798030=27788381, vv:=1760 +1874: push +level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760) +1875: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1878: fntnum1 current font is cmtt10 +1879: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1880: setchar105 ("69) h:=974659+344061=1318720, hh:=84 +1881: setchar103 ("67) h:=1318720+344061=1662781, hh:=106 +1882: setchar110 ("6E) h:=1662781+344061=2006842, hh:=128 +1883: setchar111 ("6F) h:=2006842+344061=2350903, hh:=150 +1884: setchar114 ("72) h:=2350903+344061=2694964, hh:=172 +1885: setchar101 ("65) h:=2694964+344061=3039025, hh:=194 +1886: setchar115 ("73) h:=3039025+344061=3383086, hh:=216 +1887: setchar112 ("70) h:=3383086+344061=3727147, hh:=238 +1888: setchar97 ("61) h:=3727147+344061=4071208, hh:=260 +1889: setchar99 ("63) h:=4071208+344061=4415269, hh:=282 +1890: setchar101 ("65) h:=4415269+344061=4759330, hh:=303 +1891: setchar115 ("73) h:=4759330+344061=5103391, hh:=325 +[\ignorespaces] +1892: pop +level 1:(h=0,v=27788381,w=0,x=0,y=798030,z=798031,hh=0,vv=1760) +1893: y0 798030 v:=27788381+798030=28586411, vv:=1811 +1894: push +level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811) +1895: fntnum2 current font is umin10 +1896: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1899: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1902: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1905: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1908: pop +level 1:(h=0,v=28586411,w=0,x=0,y=798030,z=798031,hh=0,vv=1811) +1909: y0 798030 v:=28586411+798030=29384441, vv:=1861 +1910: push +level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861) +1911: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1914: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1917: right3 300288 h:=960908+300288=1261196, hh:=80 +1921: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1924: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1927: pop +level 1:(h=0,v=29384441,w=0,x=0,y=798030,z=798031,hh=0,vv=1861) +1928: y0 798030 v:=29384441+798030=30182471, vv:=1912 +1929: push +level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912) +1930: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1933: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1936: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +1939: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +1942: pop +level 1:(h=0,v=30182471,w=0,x=0,y=798030,z=798031,hh=0,vv=1912) +1943: y0 798030 v:=30182471+798030=30980501, vv:=1962 +1944: push +level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962) +1945: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1948: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1951: right3 300288 h:=960908+300288=1261196, hh:=80 +1955: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +1958: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +1961: pop +level 1:(h=0,v=30980501,w=0,x=0,y=798030,z=798031,hh=0,vv=1962) +1962: z0 798031 v:=30980501+798031=31778532, vv:=2013 +1963: push +level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013) +1964: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +1967: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +1970: right3 600576 h:=960908+600576=1561484, hh:=99 +1974: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +1977: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +1980: pop +level 1:(h=0,v=31778532,w=0,x=0,y=798030,z=798031,hh=0,vv=2013) +1981: y0 798030 v:=31778532+798030=32576562, vv:=2063 +1982: push +level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063) +1983: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +1986: fntnum1 current font is cmtt10 +1987: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +1988: setchar115 ("73) h:=974659+344061=1318720, hh:=84 +1989: setchar112 ("70) h:=1318720+344061=1662781, hh:=106 +1990: setchar97 ("61) h:=1662781+344061=2006842, hh:=128 +1991: setchar99 ("63) h:=2006842+344061=2350903, hh:=150 +1992: setchar101 ("65) h:=2350903+344061=2694964, hh:=172 +1993: setchar102 ("66) h:=2694964+344061=3039025, hh:=194 +1994: setchar97 ("61) h:=3039025+344061=3383086, hh:=216 +1995: setchar99 ("63) h:=3383086+344061=3727147, hh:=238 +1996: setchar116 ("74) h:=3727147+344061=4071208, hh:=260 +1997: setchar111 ("6F) h:=4071208+344061=4415269, hh:=282 +1998: setchar114 ("72) h:=4415269+344061=4759330, hh:=303 +1999: setchar49 ("31) h:=4759330+344061=5103391, hh:=325 +2000: setchar48 ("30) h:=5103391+344061=5447452, hh:=347 +2001: setchar48 ("30) h:=5447452+344061=5791513, hh:=369 +2002: setchar48 ("30) h:=5791513+344061=6135574, hh:=391 +[\spacefactor1000] +2003: pop +level 1:(h=0,v=32576562,w=0,x=0,y=798030,z=798031,hh=0,vv=2063) +2004: y0 798030 v:=32576562+798030=33374592, vv:=2114 +2005: push +level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114) +2006: fntnum2 current font is umin10 +2007: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2010: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2013: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2016: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2019: pop +level 1:(h=0,v=33374592,w=0,x=0,y=798030,z=798031,hh=0,vv=2114) +2020: y0 798030 v:=33374592+798030=34172622, vv:=2165 +2021: push +level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165) +2022: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2025: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2028: right3 300288 h:=960908+300288=1261196, hh:=80 +2032: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2035: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2038: pop +level 1:(h=0,v=34172622,w=0,x=0,y=798030,z=798031,hh=0,vv=2165) +2039: y0 798030 v:=34172622+798030=34970652, vv:=2215 +2040: push +level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215) +2041: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2044: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2047: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2050: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2053: pop +level 1:(h=0,v=34970652,w=0,x=0,y=798030,z=798031,hh=0,vv=2215) +2054: y0 798030 v:=34970652+798030=35768682, vv:=2266 +2055: push +level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266) +2056: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2059: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2062: right3 300288 h:=960908+300288=1261196, hh:=80 +2066: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2069: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2072: pop +level 1:(h=0,v=35768682,w=0,x=0,y=798030,z=798031,hh=0,vv=2266) +2073: y0 798030 v:=35768682+798030=36566712, vv:=2316 +2074: push +level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316) +2075: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2078: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2081: right3 600576 h:=960908+600576=1561484, hh:=99 +2085: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +2088: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +2091: pop +level 1:(h=0,v=36566712,w=0,x=0,y=798030,z=798031,hh=0,vv=2316) +2092: y0 798030 v:=36566712+798030=37364742, vv:=2367 +2093: push +level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367) +2094: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +2097: fntnum1 current font is cmtt10 +2098: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +2099: setchar108 ("6C) h:=974659+344061=1318720, hh:=84 +2100: setchar101 ("65) h:=1318720+344061=1662781, hh:=106 +2101: setchar116 ("74) h:=1662781+344061=2006842, hh:=128 +[\let] +2102: pop +level 1:(h=0,v=37364742,w=0,x=0,y=798030,z=798031,hh=0,vv=2367) +2103: y0 798030 v:=37364742+798030=38162772, vv:=2417 +2104: push +level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417) +2105: fntnum2 current font is umin10 +2106: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2109: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2112: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2115: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2118: pop +level 1:(h=0,v=38162772,w=0,x=0,y=798030,z=798031,hh=0,vv=2417) +2119: y0 798030 v:=38162772+798030=38960802, vv:=2468 +2120: push +level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468) +2121: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2124: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2127: right3 300288 h:=960908+300288=1261196, hh:=80 +2131: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2134: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2137: pop +level 1:(h=0,v=38960802,w=0,x=0,y=798030,z=798031,hh=0,vv=2468) +2138: y0 798030 v:=38960802+798030=39758832, vv:=2518 +2139: push +level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518) +2140: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2143: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2146: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2149: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2152: pop +level 1:(h=0,v=39758832,w=0,x=0,y=798030,z=798031,hh=0,vv=2518) +2153: y0 798030 v:=39758832+798030=40556862, vv:=2569 +2154: push +level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569) +2155: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2158: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2161: right3 300288 h:=960908+300288=1261196, hh:=80 +2165: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2168: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2171: pop +level 1:(h=0,v=40556862,w=0,x=0,y=798030,z=798031,hh=0,vv=2569) +2172: y0 798030 v:=40556862+798030=41354892, vv:=2619 +2173: push +level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619) +2174: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2177: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2180: right3 600576 h:=960908+600576=1561484, hh:=99 +2184: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +2187: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +2190: pop +level 1:(h=0,v=41354892,w=0,x=0,y=798030,z=798031,hh=0,vv=2619) +2191: y0 798030 v:=41354892+798030=42152922, vv:=2670 +2192: push +level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670) +2193: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +2196: fntnum1 current font is cmtt10 +2197: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +2198: setchar103 ("67) h:=974659+344061=1318720, hh:=84 +2199: setchar114 ("72) h:=1318720+344061=1662781, hh:=106 +2200: setchar111 ("6F) h:=1662781+344061=2006842, hh:=128 +2201: setchar117 ("75) h:=2006842+344061=2350903, hh:=150 +2202: setchar112 ("70) h:=2350903+344061=2694964, hh:=172 +[\group] +2203: pop +level 1:(h=0,v=42152922,w=0,x=0,y=798030,z=798031,hh=0,vv=2670) +2204: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +2205: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +2209: eop + +2210: beginning of page 3 +2255: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +2256: down3 -917504 v:=0-917504=-917504, vv:=-58 +2260: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +2261: down4 42152922 v:=0+42152922=42152922, vv:=2670 +2266: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +2267: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +2272: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +2273: fntnum2 current font is umin10 +2274: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2277: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2280: right3 300288 h:=960908+300288=1261196, hh:=80 +2284: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2287: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2290: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +2291: y3 786432 v:=655360+786432=1441792, vv:=91 +2295: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +2296: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2299: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2302: right3 600576 h:=960908+600576=1561484, hh:=99 +2306: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +2309: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) (あ] +2312: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +2313: y0 786432 v:=1441792+786432=2228224, vv:=141 +2314: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +2315: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2318: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2321: right3 300288 h:=960908+300288=1261196, hh:=80 +2325: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2328: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2331: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +2332: y0 786432 v:=2228224+786432=3014656, vv:=191 +2333: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +2334: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2337: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2340: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2343: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2346: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +2347: y0 786432 v:=3014656+786432=3801088, vv:=241 +2348: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +2349: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2352: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2355: right3 300288 h:=960908+300288=1261196, hh:=80 +2359: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2362: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2365: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +2366: y0 786432 v:=3801088+786432=4587520, vv:=291 +2367: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +2368: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2371: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2374: right3 300288 h:=960908+300288=1261196, hh:=80 +2378: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2381: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ) (あ] +2384: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +2385: y0 786432 v:=4587520+786432=5373952, vv:=340 +2386: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +2387: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2390: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2393: set2 65288("FF08) type=6 h:=960908+330310=1291218, hh:=82 +2396: set2 12354("3042) type=0 h:=1291218+630598=1921816, hh:=122 +[あ)(あ] +2399: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +2400: y0 786432 v:=5373952+786432=6160384, vv:=390 +2401: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +2402: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2405: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2408: right3 150143 h:=960908+150143=1111051, hh:=70 +2412: set2 12539("30FB) type=4 h:=1111051+231778=1342829, hh:=85 +2415: right3 199410 h:=1342829+199410=1542239, hh:=98 +2419: set2 12354("3042) type=0 h:=1542239+630598=2172837, hh:=138 +[あ) ・ あ] +2422: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +2423: y0 786432 v:=6160384+786432=6946816, vv:=440 +2424: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +2425: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2428: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2431: right3 499698 h:=960908+499698=1460606, hh:=93 +2435: set2 12539("30FB) type=4 h:=1460606+231778=1692384, hh:=108 +2438: right3 199410 h:=1692384+199410=1891794, hh:=120 +2442: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ) ・ あ] +2445: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +2446: y0 786432 v:=6946816+786432=7733248, vv:=490 +2447: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +2448: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2451: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2454: right3 300288 h:=960908+300288=1261196, hh:=80 +2458: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95 +2461: right3 199410 h:=1492974+199410=1692384, hh:=107 +2465: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147 +[あ) ・ あ] +2468: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +2469: y0 786432 v:=7733248+786432=8519680, vv:=540 +2470: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +2471: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2474: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2477: set2 12539("30FB) type=4 h:=960908+231778=1192686, hh:=76 +2480: right3 199410 h:=1192686+199410=1392096, hh:=88 +2484: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=128 +[あ)・ あ] +2487: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +2488: y0 786432 v:=8519680+786432=9306112, vv:=589 +2489: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +2490: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2493: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2496: right3 300288 h:=960908+300288=1261196, hh:=80 +2500: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95 +2503: right3 199410 h:=1492974+199410=1692384, hh:=107 +2507: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147 +[あ) ・ あ] +2510: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +2511: y0 786432 v:=9306112+786432=10092544, vv:=639 +2512: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +2513: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2516: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2519: right3 300288 h:=960908+300288=1261196, hh:=80 +2523: set2 12539("30FB) type=4 h:=1261196+231778=1492974, hh:=95 +2526: right3 199410 h:=1492974+199410=1692384, hh:=107 +2530: set2 12354("3042) type=0 h:=1692384+630598=2322982, hh:=147 +[あ) ・ あ] +2533: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +2534: y0 786432 v:=10092544+786432=10878976, vv:=689 +2535: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +2536: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2539: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2542: set2 12539("30FB) type=4 h:=960908+231778=1192686, hh:=76 +2545: right3 199410 h:=1192686+199410=1392096, hh:=88 +2549: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=128 +[あ)・ あ] +2552: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +2553: y0 786432 v:=10878976+786432=11665408, vv:=739 +2554: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +2555: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2558: right3 199410 h:=630598+199410=830008, hh:=53 +2562: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2565: right3 150143 h:=1061786+150143=1211929, hh:=77 +2569: set2 65288("FF08) type=6 h:=1211929+330310=1542239, hh:=98 +2572: set2 12354("3042) type=0 h:=1542239+630598=2172837, hh:=138 +[あ ・ (あ] +2575: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +2576: y0 786432 v:=11665408+786432=12451840, vv:=789 +2577: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +2578: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2581: right3 199410 h:=630598+199410=830008, hh:=53 +2585: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2588: right3 499698 h:=1061786+499698=1561484, hh:=99 +2592: set2 65288("FF08) type=6 h:=1561484+330310=1891794, hh:=120 +2595: set2 12354("3042) type=0 h:=1891794+630598=2522392, hh:=160 +[あ ・ (あ] +2598: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +2599: y0 786432 v:=12451840+786432=13238272, vv:=839 +2600: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +2601: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2604: w3 199410 h:=630598+199410=830008, hh:=53 +2608: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2611: w0 199410 h:=1061786+199410=1261196, hh:=80 +2612: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2615: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ ・ (あ] +2618: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +2619: y0 786432 v:=13238272+786432=14024704, vv:=888 +2620: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +2621: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2624: right3 199410 h:=630598+199410=830008, hh:=53 +2628: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2631: set2 65288("FF08) type=6 h:=1061786+330310=1392096, hh:=89 +2634: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=129 +[あ ・(あ] +2637: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +2638: y0 786432 v:=14024704+786432=14811136, vv:=938 +2639: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +2640: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2643: w3 199410 h:=630598+199410=830008, hh:=53 +2647: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2650: w0 199410 h:=1061786+199410=1261196, hh:=80 +2651: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2654: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ ・ (あ] +2657: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +2658: y0 786432 v:=14811136+786432=15597568, vv:=988 +2659: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +2660: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2663: w3 199410 h:=630598+199410=830008, hh:=53 +2667: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2670: w0 199410 h:=1061786+199410=1261196, hh:=80 +2671: set2 65288("FF08) type=6 h:=1261196+330310=1591506, hh:=101 +2674: set2 12354("3042) type=0 h:=1591506+630598=2222104, hh:=141 +[あ ・ (あ] +2677: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +2678: y0 786432 v:=15597568+786432=16384000, vv:=1038 +2679: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +2680: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2683: right3 199410 h:=630598+199410=830008, hh:=53 +2687: set2 12539("30FB) type=4 h:=830008+231778=1061786, hh:=68 +2690: set2 65288("FF08) type=6 h:=1061786+330310=1392096, hh:=89 +2693: set2 12354("3042) type=0 h:=1392096+630598=2022694, hh:=129 +[あ ・(あ] +2696: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +2697: y0 786432 v:=16384000+786432=17170432, vv:=1088 +2698: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +2699: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +2702: fntnum1 current font is cmtt10 +2703: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +2704: setchar105 ("69) h:=974659+344061=1318720, hh:=84 +2705: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106 +2706: setchar104 ("68) h:=1662781+344061=2006842, hh:=128 +2707: setchar105 ("69) h:=2006842+344061=2350903, hh:=150 +2708: setchar98 ("62) h:=2350903+344061=2694964, hh:=172 +2709: setchar105 ("69) h:=2694964+344061=3039025, hh:=194 +2710: setchar116 ("74) h:=3039025+344061=3383086, hh:=216 +2711: setchar103 ("67) h:=3383086+344061=3727147, hh:=238 +2712: setchar108 ("6C) h:=3727147+344061=4071208, hh:=260 +2713: setchar117 ("75) h:=4071208+344061=4415269, hh:=282 +2714: setchar101 ("65) h:=4415269+344061=4759330, hh:=303 +2715: w3 344061 h:=4759330+344061=5103391, hh:=323 +2719: setchar97 ("61) h:=5103391+344061=5447452, hh:=345 +2720: setchar116 ("74) h:=5447452+344061=5791513, hh:=367 +2721: w0 344061 h:=5791513+344061=6135574, hh:=389 +[\inhibitglue at ] +2722: fntnum2 current font is umin10 +2723: set2 20869("5185) type=0 h:=6135574+630598=6766172, hh:=429 +2726: set2 20596("5074) type=0 h:=6766172+630598=7396770, hh:=469 +2729: set2 12522("30EA) type=10 h:=7396770+630598=8027368, hh:=509 +2732: set2 12473("30B9) type=0 h:=8027368+630598=8657966, hh:=549 +2735: set2 12488("30C8) type=10 h:=8657966+630598=9288564, hh:=589 +[内側リスト] +2738: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +2739: y0 786432 v:=17170432+786432=17956864, vv:=1137 +2740: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +2741: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2744: set2 65288("FF08) type=6 h:=630598+330310=960908, hh:=61 +[あ(] +2747: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +2748: y0 786432 v:=17956864+786432=18743296, vv:=1187 +2749: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +2750: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2753: right3 300288 h:=630598+300288=930886, hh:=59 +2757: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80 +[あ (] +2760: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +2761: y0 786432 v:=18743296+786432=19529728, vv:=1237 +2762: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +2763: set2 65289("FF09) type=1 h:=0+330310=330310, hh:=21 +2766: right3 600576 h:=330310+600576=930886, hh:=59 +2770: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80 +[) (] +2773: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +2774: y0 786432 v:=19529728+786432=20316160, vv:=1287 +2775: push +level 1:(h=0,v=20316160,w=0,x=0,y=786432,z=0,hh=0,vv=1287) +2776: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2779: w3 300288 h:=630598+300288=930886, hh:=59 +2783: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80 +2786: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120 +[あ (い] +2789: push +level 2:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287) +2790: push +level 3:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287) +2791: w0 300288 h:=1891794+300288=2192082, hh:=139 +2792: set2 12300("300C) type=6 h:=2192082+330310=2522392, hh:=160 +[ 「] +2795: pop +level 3:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287) +2796: pop +level 2:(h=1891794,v=20316160,w=300288,x=0,y=786432,z=0,hh=120,vv=1287) +2797: pop +level 1:(h=0,v=20316160,w=0,x=0,y=786432,z=0,hh=0,vv=1287) +2798: y0 786432 v:=20316160+786432=21102592, vv:=1337 +2799: push +level 1:(h=0,v=21102592,w=0,x=0,y=786432,z=0,hh=0,vv=1337) +2800: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2803: w3 300288 h:=630598+300288=930886, hh:=59 +2807: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80 +2810: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120 +[あ (い] +2813: push +level 2:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337) +2814: push +level 3:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337) +2815: w0 300288 h:=1891794+300288=2192082, hh:=139 +2816: set2 12300("300C) type=6 h:=2192082+330310=2522392, hh:=160 +[ 「] +2819: pop +level 3:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337) +2820: pop +level 2:(h=1891794,v=21102592,w=300288,x=0,y=786432,z=0,hh=120,vv=1337) +2821: pop +level 1:(h=0,v=21102592,w=0,x=0,y=786432,z=0,hh=0,vv=1337) +2822: y0 786432 v:=21102592+786432=21889024, vv:=1386 +2823: push +level 1:(h=0,v=21889024,w=0,x=0,y=786432,z=0,hh=0,vv=1386) +2824: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2827: set2 65288("FF08) type=6 h:=630598+330310=960908, hh:=61 +2830: set2 12356("3044) type=0 h:=960908+630598=1591506, hh:=101 +[あ(い] +2833: push +level 2:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386) +2834: push +level 3:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386) +2835: right3 300288 h:=1591506+300288=1891794, hh:=120 +2839: set2 12300("300C) type=6 h:=1891794+330310=2222104, hh:=141 +[ 「] +2842: pop +level 3:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386) +2843: pop +level 2:(h=1591506,v=21889024,w=0,x=0,y=786432,z=0,hh=101,vv=1386) +2844: pop +level 1:(h=0,v=21889024,w=0,x=0,y=786432,z=0,hh=0,vv=1386) +2845: y0 786432 v:=21889024+786432=22675456, vv:=1436 +2846: push +level 1:(h=0,v=22675456,w=0,x=0,y=786432,z=0,hh=0,vv=1436) +2847: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2850: right3 300288 h:=630598+300288=930886, hh:=59 +2854: set2 65288("FF08) type=6 h:=930886+330310=1261196, hh:=80 +2857: set2 12356("3044) type=0 h:=1261196+630598=1891794, hh:=120 +[あ (い] +2860: push +level 2:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436) +2861: push +level 3:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436) +2862: set2 12300("300C) type=6 h:=1891794+330310=2222104, hh:=141 +[「] +2865: pop +level 3:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436) +2866: pop +level 2:(h=1891794,v=22675456,w=0,x=0,y=786432,z=0,hh=120,vv=1436) +2867: pop +level 1:(h=0,v=22675456,w=0,x=0,y=786432,z=0,hh=0,vv=1436) +2868: y0 786432 v:=22675456+786432=23461888, vv:=1486 +2869: push +level 1:(h=0,v=23461888,w=0,x=0,y=786432,z=0,hh=0,vv=1486) +2870: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +2873: fntnum1 current font is cmtt10 +2874: setchar92 ("5C) h:=630598+344061=974659, hh:=62 +2875: setchar105 ("69) h:=974659+344061=1318720, hh:=84 +2876: setchar110 ("6E) h:=1318720+344061=1662781, hh:=106 +2877: setchar104 ("68) h:=1662781+344061=2006842, hh:=128 +2878: setchar105 ("69) h:=2006842+344061=2350903, hh:=150 +2879: setchar98 ("62) h:=2350903+344061=2694964, hh:=172 +2880: setchar105 ("69) h:=2694964+344061=3039025, hh:=194 +2881: setchar116 ("74) h:=3039025+344061=3383086, hh:=216 +2882: setchar103 ("67) h:=3383086+344061=3727147, hh:=238 +2883: setchar108 ("6C) h:=3727147+344061=4071208, hh:=260 +2884: setchar117 ("75) h:=4071208+344061=4415269, hh:=282 +2885: setchar101 ("65) h:=4415269+344061=4759330, hh:=303 +2886: right3 344061 h:=4759330+344061=5103391, hh:=323 +2890: setchar116 ("74) h:=5103391+344061=5447452, hh:=345 +2891: setchar101 ("65) h:=5447452+344061=5791513, hh:=367 +2892: setchar115 ("73) h:=5791513+344061=6135574, hh:=389 +2893: setchar116 ("74) h:=6135574+344061=6479635, hh:=411 +[\inhibitglue test] +2894: pop +level 1:(h=0,v=23461888,w=0,x=0,y=786432,z=0,hh=0,vv=1486) +2895: y0 786432 v:=23461888+786432=24248320, vv:=1536 +2896: push +level 1:(h=0,v=24248320,w=0,x=0,y=786432,z=0,hh=0,vv=1536) +2897: fntnum2 current font is umin10 +2898: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2901: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2904: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101 +[あ)あ] +2907: pop +level 1:(h=0,v=24248320,w=0,x=0,y=786432,z=0,hh=0,vv=1536) +2908: y0 786432 v:=24248320+786432=25034752, vv:=1586 +2909: push +level 1:(h=0,v=25034752,w=0,x=0,y=786432,z=0,hh=0,vv=1586) +2910: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2913: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2916: right3 300288 h:=960908+300288=1261196, hh:=80 +2920: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120 +[あ) あ] +2923: pop +level 1:(h=0,v=25034752,w=0,x=0,y=786432,z=0,hh=0,vv=1586) +2924: y0 786432 v:=25034752+786432=25821184, vv:=1636 +2925: push +level 1:(h=0,v=25821184,w=0,x=0,y=786432,z=0,hh=0,vv=1636) +2926: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2929: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2932: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101 +[あ)あ] +2935: pop +level 1:(h=0,v=25821184,w=0,x=0,y=786432,z=0,hh=0,vv=1636) +2936: y0 786432 v:=25821184+786432=26607616, vv:=1685 +2937: push +level 1:(h=0,v=26607616,w=0,x=0,y=786432,z=0,hh=0,vv=1685) +2938: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2941: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2944: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101 +[あ)あ] +2947: pop +level 1:(h=0,v=26607616,w=0,x=0,y=786432,z=0,hh=0,vv=1685) +2948: y0 786432 v:=26607616+786432=27394048, vv:=1735 +2949: push +level 1:(h=0,v=27394048,w=0,x=0,y=786432,z=0,hh=0,vv=1735) +2950: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2953: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2956: right3 300288 h:=960908+300288=1261196, hh:=80 +2960: set2 12354("3042) type=0 h:=1261196+630598=1891794, hh:=120 +[あ) あ] +2963: pop +level 1:(h=0,v=27394048,w=0,x=0,y=786432,z=0,hh=0,vv=1735) +2964: y0 786432 v:=27394048+786432=28180480, vv:=1785 +2965: push +level 1:(h=0,v=28180480,w=0,x=0,y=786432,z=0,hh=0,vv=1785) +2966: set2 12354("3042) type=0 h:=0+630598=630598, hh:=40 +2969: set2 65289("FF09) type=1 h:=630598+330310=960908, hh:=61 +2972: set2 12354("3042) type=0 h:=960908+630598=1591506, hh:=101 +[あ)あ] +2975: pop +level 1:(h=0,v=28180480,w=0,x=0,y=786432,z=0,hh=0,vv=1785) +2976: y0 786432 v:=28180480+786432=28966912, vv:=1835 +2977: push +level 1:(h=0,v=28966912,w=0,x=0,y=786432,z=0,hh=0,vv=1835) +2978: down3 91000 v:=28966912+91000=29057912, vv:=1841 +2982: setrule height 600600, width 26214 (39x2 pixels) + h:=0+26214=26214, hh:=2 +2991: down3 -91000 v:=29057912-91000=28966912, vv:=1835 +2995: set2 65307("FF1B) type=4 h:=26214+231778=257992, hh:=17 +2998: right3 199410 h:=257992+199410=457402, hh:=29 +3002: set2 12354("3042) type=0 h:=457402+630598=1088000, hh:=69 +3005: right3 300288 h:=1088000+300288=1388288, hh:=88 +3009: set2 65288("FF08) type=6 h:=1388288+330310=1718598, hh:=109 +[; あ (] +3012: pop +level 1:(h=0,v=28966912,w=0,x=0,y=786432,z=0,hh=0,vv=1835) +3013: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +3014: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +3018: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ b/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ new file mode 100644 index 00000000000..27132f1cea0 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-jctrlsyma.typ @@ -0,0 +1,121 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 287. +maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1 +Font 1: umin10 (JFM)---loaded at size 655360 DVI units +Font 0: cmr10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: cmr10 +130: fntnum0 current font is cmr10 +131: setchar49 ("31) h:=1310720+327681=1638401, hh:=104 +132: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +133: right3 291271 h:=1820446+291271=2111717, hh:=134 +[1. ] +137: fntdef1 1: umin10 +159: fntnum1 current font is umin10 +160: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174 +163: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214 +166: set2 9670("25C6) type=0 h:=3372913+630598=4003511, hh:=254 +169: set2 9671("25C7) type=0 h:=4003511+630598=4634109, hh:=294 +[◆◇◆◇] +172: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +173: y3 786432 v:=655360+786432=1441792, vv:=91 +177: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +178: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +182: fntnum0 current font is cmr10 +183: setchar50 ("32) h:=1310720+327681=1638401, hh:=104 +184: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +185: right3 291271 h:=1820446+291271=2111717, hh:=134 +[2. ] +189: fntnum1 current font is umin10 +190: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174 +193: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214 +[◆◇] +196: fntnum0 current font is cmr10 +197: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226 +198: right3 218453 h:=3554958+218453=3773411, hh:=239 +[, ] +202: fntnum1 current font is umin10 +203: set2 9670("25C6) type=0 h:=3773411+630598=4404009, hh:=279 +206: set2 9671("25C7) type=0 h:=4404009+630598=5034607, hh:=319 +[◆◇] +209: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +210: y0 786432 v:=1441792+786432=2228224, vv:=141 +211: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +212: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +216: fntnum0 current font is cmr10 +217: setchar51 ("33) h:=1310720+327681=1638401, hh:=104 +218: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +219: right3 291271 h:=1820446+291271=2111717, hh:=134 +[3. ] +223: fntnum1 current font is umin10 +224: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174 +227: set2 9671("25C7) type=0 h:=2742315+630598=3372913, hh:=214 +[◆◇] +230: fntnum0 current font is cmr10 +231: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226 +232: w3 218453 h:=3554958+218453=3773411, hh:=239 +[, ] +236: fntnum1 current font is umin10 +237: set2 9670("25C6) type=0 h:=3773411+630598=4404009, hh:=279 +240: w0 218453 h:=4404009+218453=4622462, hh:=293 +241: set2 9671("25C7) type=0 h:=4622462+630598=5253060, hh:=333 +[◆ ◇] +244: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +245: y0 786432 v:=2228224+786432=3014656, vv:=191 +246: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +247: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +251: fntnum0 current font is cmr10 +252: setchar52 ("34) h:=1310720+327681=1638401, hh:=104 +253: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +254: right3 291271 h:=1820446+291271=2111717, hh:=134 +[4. ] +258: fntnum1 current font is umin10 +259: set2 9670("25C6) type=0 h:=2111717+630598=2742315, hh:=174 +262: w3 218453 h:=2742315+218453=2960768, hh:=188 +266: set2 9671("25C7) type=0 h:=2960768+630598=3591366, hh:=228 +[◆ ◇] +269: fntnum0 current font is cmr10 +270: setchar44 ("2C) h:=3591366+182045=3773411, hh:=240 +271: w0 218453 h:=3773411+218453=3991864, hh:=253 +[, ] +272: fntnum1 current font is umin10 +273: set2 9670("25C6) type=0 h:=3991864+630598=4622462, hh:=293 +276: w0 218453 h:=4622462+218453=4840915, hh:=307 +277: set2 9671("25C7) type=0 h:=4840915+630598=5471513, hh:=347 +[◆ ◇] +280: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +281: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +282: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +286: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ new file mode 100644 index 00000000000..cf8d08f7715 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ea.typ @@ -0,0 +1,825 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 1055. +maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 50623 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114 +135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126 +136: w3 218453 h:=1984283+218453=2202736, hh:=140 +[A: ] +140: set1 197("C5) h:=2202736+491520=2694256, hh:=171 +142: set1 191("BF) h:=2694256+491520=3185776, hh:=202 +144: w0 218453 h:=3185776+218453=3404229, hh:=216 +[ ] +145: set1 197("C5) h:=3404229+491520=3895749, hh:=247 +147: set1 191("BF) h:=3895749+491520=4387269, hh:=278 +149: w0 218453 h:=4387269+218453=4605722, hh:=292 +[ ] +150: fntdef1 1: min10 +171: fntnum1 current font is min10 +172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332 +[䔿] +175: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +176: y3 786432 v:=655360+786432=1441792, vv:=91 +180: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +181: push +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +185: pop +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +186: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +190: fntnum0 current font is ec-lmr10 +191: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96 +193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114 +194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135 +195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158 +196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170 +197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193 +198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214 +199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226 +[\meaning.] +200: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +201: y0 786432 v:=1441792+786432=2228224, vv:=141 +202: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +203: right3 1310720 h:=0+1310720=1310720, hh:=83 +207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287 +216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308 +217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326 +218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342 +219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363 +220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375 +221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389 +222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421 +[ macro:->macro:->] +223: set1 197("C5) h:=6630046+491520=7121566, hh:=452 +225: set1 191("BF) h:=7121566+491520=7613086, hh:=483 +227: w3 218453 h:=7613086+218453=7831539, hh:=496 +[ ] +231: set1 197("C5) h:=7831539+491520=8323059, hh:=527 +233: set1 191("BF) h:=8323059+491520=8814579, hh:=558 +235: w0 218453 h:=8814579+218453=9033032, hh:=572 +[ ] +236: fntnum1 current font is min10 +237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612 +[䔿] +240: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +241: y0 786432 v:=2228224+786432=3014656, vv:=191 +242: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +243: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +247: fntnum0 current font is ec-lmr10 +248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +[macro:->] +256: set1 197("C5) h:=3970383+491520=4461903, hh:=283 +258: set1 191("BF) h:=4461903+491520=4953423, hh:=314 +260: w3 218453 h:=4953423+218453=5171876, hh:=328 +[ ] +264: set1 197("C5) h:=5171876+491520=5663396, hh:=359 +266: set1 191("BF) h:=5663396+491520=6154916, hh:=390 +268: w0 218453 h:=6154916+218453=6373369, hh:=404 +[ ] +269: fntnum1 current font is min10 +270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444 +[䔿] +273: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +274: y0 786432 v:=3014656+786432=3801088, vv:=241 +275: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +276: push +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +280: pop +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +281: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +285: fntnum0 current font is ec-lmr10 +286: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74 +288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95 +289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118 +290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141 +291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162 +292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197 +293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215 +294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227 +[\jobname.] +295: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +296: y0 786432 v:=3801088+786432=4587520, vv:=291 +297: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +298: push +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +299: fntnum1 current font is min10 +300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +303: pop +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +304: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +308: fntnum0 current font is ec-lmr10 +309: setchar111 ("6F) h:=630598+327680=958278, hh:=61 +310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84 +311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102 +312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114 +313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132 +314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148 +315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164 +316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182 +317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198 +318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210 +[oneletter.] +319: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +320: y0 786432 v:=4587520+786432=5373952, vv:=340 +321: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +322: right3 1310720 h:=0+1310720=1310720, hh:=83 +326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +327: set1 196("C4) h:=1638400+491520=2129920, hh:=135 +329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147 +330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168 +[.\] +331: set1 197("C5) h:=2639643+491520=3131163, hh:=199 +333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211 +334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232 +[.\] +335: set1 255("FF) h:=3640886+327680=3968566, hh:=253 +337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265 +338: right3 291271 h:=4150609+291271=4441880, hh:=281 +[. ] +342: set1 191("BF) h:=4441880+491520=4933400, hh:=312 +344: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +345: y0 786432 v:=5373952+786432=6160384, vv:=390 +346: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +347: push +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +348: fntnum1 current font is min10 +349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +352: pop +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +353: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +357: fntnum0 current font is ec-lmr10 +358: setchar99 ("63) h:=630598+291275=921873, hh:=58 +359: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192 +365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname1.] +366: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +367: y0 786432 v:=6160384+786432=6946816, vv:=440 +368: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +369: right3 1310720 h:=0+1310720=1310720, hh:=83 +373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +374: set1 197("C5) h:=1638400+491520=2129920, hh:=135 +376: set1 191("BF) h:=2129920+491520=2621440, hh:=166 +378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187 +[\] +379: set1 197("C5) h:=2949120+491520=3440640, hh:=218 +381: set1 191("BF) h:=3440640+491520=3932160, hh:=249 +383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261 +384: w3 218453 h:=4114203+218453=4332656, hh:=274 +388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295 +[, \] +389: set1 197("C5) h:=4660336+491520=5151856, hh:=326 +391: set1 191("BF) h:=5151856+491520=5643376, hh:=357 +393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369 +394: w0 218453 h:=5825419+218453=6043872, hh:=383 +395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404 +[, \] +396: fntnum1 current font is min10 +397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444 +[䔿] +400: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +401: y0 786432 v:=6946816+786432=7733248, vv:=490 +402: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +403: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +407: fntnum0 current font is ec-lmr10 +408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[\] +409: fntnum1 current font is min10 +410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144 +[␢] +413: fntnum0 current font is ec-lmr10 +414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176 +415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208 +416: right3 218453 h:=3288474+218453=3506927, hh:=222 +420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245 +421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266 +422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287 +423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305 +424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317 +[=> hoge,] +425: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +426: y0 786432 v:=7733248+786432=8519680, vv:=540 +427: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +428: right3 1310720 h:=0+1310720=1310720, hh:=83 +432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +433: set1 164("A4) h:=1638400+364085=2002485, hh:=127 +435: set1 162("A2) h:=2002485+291275=2293760, hh:=145 +437: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177 +438: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209 +439: right3 218453 h:=3313236+218453=3531689, hh:=224 +443: setchar112 ("70) h:=3531689+364085=3895774, hh:=247 +444: setchar105 ("69) h:=3895774+182043=4077817, hh:=259 +445: setchar121 ("79) h:=4077817+345898=4423715, hh:=281 +446: right2 -18205 h:=4423715-18205=4405510, hh:=280 +449: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301 +450: setchar44 ("2C) h:=4733190+182043=4915233, hh:=313 +[=> piyo,] +451: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +452: y0 786432 v:=8519680+786432=9306112, vv:=589 +453: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +454: right3 1310720 h:=0+1310720=1310720, hh:=83 +458: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +459: set1 164("A4) h:=1638400+364085=2002485, hh:=127 +461: set1 162("A2) h:=2002485+291275=2293760, hh:=145 +463: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177 +464: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209 +465: right3 218453 h:=3313236+218453=3531689, hh:=224 +469: setchar112 ("70) h:=3531689+364085=3895774, hh:=247 +470: setchar105 ("69) h:=3895774+182043=4077817, hh:=259 +471: setchar121 ("79) h:=4077817+345898=4423715, hh:=281 +472: right2 -18205 h:=4423715-18205=4405510, hh:=280 +475: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301 +476: setchar46 ("2E) h:=4733190+182043=4915233, hh:=313 +[=> piyo.] +477: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +478: y0 786432 v:=9306112+786432=10092544, vv:=639 +479: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +480: push +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +481: fntnum1 current font is min10 +482: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +485: pop +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +486: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +490: fntnum0 current font is ec-lmr10 +491: setchar48 ("30) h:=630598+327680=958278, hh:=61 +492: setchar120 ("78) h:=958278+345898=1304176, hh:=83 +493: setchar70 ("46) h:=1304176+427818=1731994, hh:=110 +494: setchar70 ("46) h:=1731994+427818=2159812, hh:=137 +495: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149 +[0xFF.] +496: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +497: y0 786432 v:=10092544+786432=10878976, vv:=689 +498: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +499: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +503: fntnum1 current font is min10 +504: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +507: fntnum0 current font is ec-lmr10 +508: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +509: w3 218453 h:=2123361+218453=2341814, hh:=148 +513: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +514: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +515: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +517: set1 197("C5) h:=3252044+491520=3743564, hh:=237 +519: set1 255("FF) h:=3743564+327680=4071244, hh:=258 +521: set1 191("BF) h:=4071244+491520=4562764, hh:=289 +523: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301 +524: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336 +525: setchar97 ("61) h:=5290918+327680=5618598, hh:=357 +526: setchar99 ("63) h:=5618598+291275=5909873, hh:=375 +527: setchar114 ("72) h:=5909873+256683=6166556, hh:=391 +528: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412 +529: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424 +530: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438 +531: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470 +[:macro:->] +532: fntnum1 current font is min10 +533: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510 +[␢] +536: fntnum0 current font is ec-lmr10 +537: setchar41 ("29) h:=8035068+254870=8289938, hh:=526 +538: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538 +539: w0 218453 h:=8471981+218453=8690434, hh:=550 +540: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571 +[), \] +541: set1 255("FF) h:=9018114+327680=9345794, hh:=592 +543: set1 197("C5) h:=9345794+491520=9837314, hh:=623 +545: set1 255("FF) h:=9837314+327680=10164994, hh:=644 +547: set1 191("BF) h:=10164994+491520=10656514, hh:=675 +549: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687 +550: w0 218453 h:=10838557+218453=11057010, hh:=700 +551: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735 +552: setchar97 ("61) h:=11603121+327680=11930801, hh:=756 +553: setchar99 ("63) h:=11930801+291275=12222076, hh:=774 +554: setchar114 ("72) h:=12222076+256683=12478759, hh:=790 +555: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811 +556: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823 +557: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837 +558: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869 +559: setchar40 ("28) h:=13716673+254870=13971543, hh:=885 +560: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906 +[, macro:->(\] +561: set1 255("FF) h:=14299223+327680=14626903, hh:=927 +563: set1 197("C5) h:=14626903+491520=15118423, hh:=958 +565: set1 255("FF) h:=15118423+327680=15446103, hh:=979 +567: set1 191("BF) h:=15446103+491520=15937623, hh:=1010 +569: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022 +570: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057 +571: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078 +572: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096 +573: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112 +574: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133 +575: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145 +576: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159 +577: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191 +[:macro:->] +578: fntnum1 current font is min10 +579: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231 +[␢] +582: fntnum0 current font is ec-lmr10 +583: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247 +584: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259 +[).] +585: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +586: y0 786432 v:=10878976+786432=11665408, vv:=739 +587: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +588: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +592: fntnum1 current font is min10 +593: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +596: fntnum0 current font is ec-lmr10 +597: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +598: w3 218453 h:=2123361+218453=2341814, hh:=148 +602: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +603: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +604: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +606: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218 +607: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253 +608: setchar97 ("61) h:=3980198+327680=4307878, hh:=274 +609: setchar99 ("63) h:=4307878+291275=4599153, hh:=292 +610: setchar114 ("72) h:=4599153+256683=4855836, hh:=308 +611: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329 +612: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341 +613: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355 +614: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387 +[:macro:->] +615: fntnum1 current font is min10 +616: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427 +[] +619: fntnum0 current font is ec-lmr10 +620: setchar41 ("29) h:=6724348+254870=6979218, hh:=443 +621: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455 +622: w0 218453 h:=7161261+218453=7379714, hh:=467 +623: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488 +[), \] +624: set1 255("FF) h:=7707394+327680=8035074, hh:=509 +626: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521 +627: w0 218453 h:=8217117+218453=8435570, hh:=534 +628: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569 +629: setchar97 ("61) h:=8981681+327680=9309361, hh:=590 +630: setchar99 ("63) h:=9309361+291275=9600636, hh:=608 +631: setchar114 ("72) h:=9600636+256683=9857319, hh:=624 +632: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645 +633: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657 +634: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671 +635: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703 +636: setchar40 ("28) h:=11095233+254870=11350103, hh:=719 +637: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740 +[, macro:->(\] +638: set1 255("FF) h:=11677783+327680=12005463, hh:=761 +640: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773 +641: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808 +642: setchar97 ("61) h:=12733617+327680=13061297, hh:=829 +643: setchar99 ("63) h:=13061297+291275=13352572, hh:=847 +644: setchar114 ("72) h:=13352572+256683=13609255, hh:=863 +645: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884 +646: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896 +647: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910 +648: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942 +[:macro:->] +649: fntnum1 current font is min10 +650: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982 +[] +653: fntnum0 current font is ec-lmr10 +654: setchar41 ("29) h:=15477767+254870=15732637, hh:=998 +655: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010 +[).] +656: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +657: y0 786432 v:=11665408+786432=12451840, vv:=789 +658: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +659: push +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +660: fntnum1 current font is min10 +661: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +664: pop +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +665: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +669: fntnum0 current font is ec-lmr10 +670: setchar99 ("63) h:=630598+291275=921873, hh:=58 +671: setchar111 ("6F) h:=921873+327680=1249553, hh:=79 +672: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102 +673: right2 -18205 h:=1613638-18205=1595433, hh:=101 +676: setchar116 ("74) h:=1595433+254870=1850303, hh:=117 +677: setchar101 ("65) h:=1850303+291275=2141578, hh:=135 +678: setchar120 ("78) h:=2141578+345898=2487476, hh:=157 +679: setchar116 ("74) h:=2487476+254870=2742346, hh:=173 +680: setchar115 ("73) h:=2742346+258506=3000852, hh:=189 +681: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201 +[contexts.] +682: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +683: y0 786432 v:=12451840+786432=13238272, vv:=839 +684: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +685: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +689: fntnum1 current font is min10 +690: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +693: fntnum0 current font is ec-lmr10 +694: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +696: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +698: w3 218453 h:=2924358+218453=3142811, hh:=199 +702: setchar97 ("61) h:=3142811+327680=3470491, hh:=220 +[ a] +703: set1 197("C5) h:=3470491+491520=3962011, hh:=251 +705: set1 191("BF) h:=3962011+491520=4453531, hh:=282 +707: w0 218453 h:=4453531+218453=4671984, hh:=296 +[ ] +708: set1 197("C5) h:=4671984+491520=5163504, hh:=327 +710: set1 191("BF) h:=5163504+491520=5655024, hh:=358 +712: w0 218453 h:=5655024+218453=5873477, hh:=372 +[ ] +713: fntnum1 current font is min10 +714: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412 +717: w0 218453 h:=6504075+218453=6722528, hh:=426 +[䔿 ] +718: fntnum0 current font is ec-lmr10 +719: set1 197("C5) h:=6722528+491520=7214048, hh:=457 +721: set1 191("BF) h:=7214048+491520=7705568, hh:=488 +723: w0 218453 h:=7705568+218453=7924021, hh:=502 +[ ] +724: set1 197("C5) h:=7924021+491520=8415541, hh:=533 +726: set1 191("BF) h:=8415541+491520=8907061, hh:=564 +728: w0 218453 h:=8907061+218453=9125514, hh:=578 +[ ] +729: fntnum1 current font is min10 +730: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618 +733: x3 436906 h:=9756112+436906=10193018, hh:=646 +[䔿 ] +737: fntnum0 current font is ec-lmr10 +738: set1 197("C5) h:=10193018+491520=10684538, hh:=677 +740: set1 191("BF) h:=10684538+491520=11176058, hh:=708 +742: w0 218453 h:=11176058+218453=11394511, hh:=722 +[ ] +743: fntnum1 current font is min10 +744: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762 +747: x0 436906 h:=12025109+436906=12462015, hh:=789 +748: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829 +[䔿 ] +751: fntnum0 current font is ec-lmr10 +752: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864 +753: setchar97 ("61) h:=13638724+327680=13966404, hh:=885 +754: setchar99 ("63) h:=13966404+291275=14257679, hh:=903 +755: setchar114 ("72) h:=14257679+256683=14514362, hh:=919 +756: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940 +757: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952 +758: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966 +759: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998 +[macro:->] +760: set1 197("C5) h:=15752276+491520=16243796, hh:=1029 +762: set1 191("BF) h:=16243796+491520=16735316, hh:=1060 +764: w0 218453 h:=16735316+218453=16953769, hh:=1074 +[ ] +765: set1 197("C5) h:=16953769+491520=17445289, hh:=1105 +767: set1 191("BF) h:=17445289+491520=17936809, hh:=1136 +769: w0 218453 h:=17936809+218453=18155262, hh:=1150 +[ ] +770: fntnum1 current font is min10 +771: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190 +[䔿] +774: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +775: y0 786432 v:=13238272+786432=14024704, vv:=888 +776: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +777: right3 1310720 h:=0+1310720=1310720, hh:=83 +781: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[ ␢] +784: fntnum0 current font is ec-lmr10 +785: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +787: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +789: w3 218453 h:=2924358+218453=3142811, hh:=199 +[ ] +793: set1 197("C5) h:=3142811+491520=3634331, hh:=230 +795: set1 191("BF) h:=3634331+491520=4125851, hh:=261 +797: fntnum1 current font is min10 +798: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301 +[䔿] +801: fntnum0 current font is ec-lmr10 +802: set1 197("C5) h:=4756449+491520=5247969, hh:=332 +804: set1 191("BF) h:=5247969+491520=5739489, hh:=363 +806: w0 218453 h:=5739489+218453=5957942, hh:=377 +807: setchar97 ("61) h:=5957942+327680=6285622, hh:=398 +[ a] +808: set1 197("C5) h:=6285622+491520=6777142, hh:=429 +810: set1 191("BF) h:=6777142+491520=7268662, hh:=460 +812: w0 218453 h:=7268662+218453=7487115, hh:=474 +[ ] +813: set1 197("C5) h:=7487115+491520=7978635, hh:=505 +815: set1 191("BF) h:=7978635+491520=8470155, hh:=536 +817: w0 218453 h:=8470155+218453=8688608, hh:=550 +[ ] +818: fntnum1 current font is min10 +819: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590 +822: w0 218453 h:=9319206+218453=9537659, hh:=604 +[䔿 ] +823: fntnum0 current font is ec-lmr10 +824: set1 197("C5) h:=9537659+491520=10029179, hh:=635 +826: set1 191("BF) h:=10029179+491520=10520699, hh:=666 +828: w0 218453 h:=10520699+218453=10739152, hh:=680 +[ ] +829: set1 197("C5) h:=10739152+491520=11230672, hh:=711 +831: set1 191("BF) h:=11230672+491520=11722192, hh:=742 +833: w0 218453 h:=11722192+218453=11940645, hh:=756 +[ ] +834: fntnum1 current font is min10 +835: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796 +838: right3 436906 h:=12571243+436906=13008149, hh:=824 +[䔿 ] +842: fntnum0 current font is ec-lmr10 +843: set1 197("C5) h:=13008149+491520=13499669, hh:=855 +845: set1 191("BF) h:=13499669+491520=13991189, hh:=886 +847: w0 218453 h:=13991189+218453=14209642, hh:=900 +[ ] +848: fntnum1 current font is min10 +849: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940 +852: w0 218453 h:=14840240+218453=15058693, hh:=954 +853: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994 +[䔿 ] +856: fntnum0 current font is ec-lmr10 +857: set1 255("FF) h:=15689291+327680=16016971, hh:=1015 +859: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +860: y0 786432 v:=14024704+786432=14811136, vv:=938 +861: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +862: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +866: fntnum1 current font is min10 +867: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +870: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +871: y0 786432 v:=14811136+786432=15597568, vv:=988 +872: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +873: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +877: fntnum0 current font is ec-lmr10 +878: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +879: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +880: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +881: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +882: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +883: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +884: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +885: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +886: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +887: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[.a...c.b..] +888: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +889: y0 786432 v:=15597568+786432=16384000, vv:=1038 +890: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +891: right3 1310720 h:=0+1310720=1310720, hh:=83 +895: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +896: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +897: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +898: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +899: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +900: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +901: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +902: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +903: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +904: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[ .a...c.b..] +905: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +906: y0 786432 v:=16384000+786432=17170432, vv:=1088 +907: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +908: push +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +909: fntnum1 current font is min10 +910: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +913: pop +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +914: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +918: fntnum0 current font is ec-lmr10 +919: setchar99 ("63) h:=630598+291275=921873, hh:=58 +920: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +921: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +922: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +923: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +924: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +925: setchar50 ("32) h:=2709530+327680=3037210, hh:=192 +926: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname2.] +927: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +928: y0 786432 v:=17170432+786432=17956864, vv:=1137 +929: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +930: right3 1310720 h:=0+1310720=1310720, hh:=83 +934: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +935: setchar72 ("48) h:=1674805+491520=2166325, hh:=137 +936: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169 +937: right2 -18205 h:=2676063-18205=2657858, hh:=168 +940: setchar87 ("57) h:=2657858+673578=3331436, hh:=211 +941: right3 218453 h:=3331436+218453=3549889, hh:=225 +945: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237 +946: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249 +947: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261 +[ SHOW ...] +948: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +949: y0 786432 v:=17956864+786432=18743296, vv:=1187 +950: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +951: right3 1310720 h:=0+1310720=1310720, hh:=83 +955: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +956: setchar84 ("54) h:=1674805+473301=2148106, hh:=136 +957: setchar82 ("52) h:=2148106+482410=2630516, hh:=167 +958: setchar73 ("49) h:=2630516+236650=2867166, hh:=182 +959: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213 +960: setchar71 ("47) h:=3358686+514261=3872947, hh:=246 +961: right3 218453 h:=3872947+218453=4091400, hh:=259 +965: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280 +[ STRING \] +966: set1 197("C5) h:=4419080+491520=4910600, hh:=311 +968: set1 191("BF) h:=4910600+491520=5402120, hh:=342 +970: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354 +971: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375 +[.\] +972: fntnum1 current font is min10 +973: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415 +[䔿] +976: fntnum0 current font is ec-lmr10 +977: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427 +978: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448 +[.\] +979: set1 197("C5) h:=7052164+491520=7543684, hh:=479 +981: set1 191("BF) h:=7543684+491520=8035204, hh:=510 +983: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522 +984: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543 +[.\] +985: fntnum1 current font is min10 +986: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583 +[䔿] +989: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +990: y0 786432 v:=18743296+786432=19529728, vv:=1237 +991: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +992: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +996: fntnum0 current font is ec-lmr10 +997: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121 +998: setchar69 ("45) h:=1911488+446005=2357493, hh:=149 +999: setchar65 ("41) h:=2357493+491520=2849013, hh:=180 +1000: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211 +1001: setchar73 ("49) h:=3340533+236650=3577183, hh:=226 +1002: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257 +1003: setchar71 ("47) h:=4068703+514261=4582964, hh:=290 +1004: right3 218453 h:=4582964+218453=4801417, hh:=304 +1008: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339 +1009: setchar97 ("61) h:=5347528+327680=5675208, hh:=360 +1010: setchar99 ("63) h:=5675208+291275=5966483, hh:=378 +1011: setchar114 ("72) h:=5966483+256683=6223166, hh:=394 +1012: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415 +1013: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427 +1014: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441 +1015: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473 +1016: setchar97 ("61) h:=7461080+327680=7788760, hh:=494 +1017: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506 +1018: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541 +1019: setchar97 ("61) h:=8516914+327680=8844594, hh:=562 +1020: setchar99 ("63) h:=8844594+291275=9135869, hh:=580 +1021: setchar114 ("72) h:=9135869+256683=9392552, hh:=596 +1022: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617 +1023: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629 +1024: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643 +1025: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675 +1026: setchar98 ("62) h:=10630466+364085=10994551, hh:=698 +1027: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710 +1028: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745 +1029: setchar97 ("61) h:=11722705+327680=12050385, hh:=765 +1030: setchar99 ("63) h:=12050385+291275=12341660, hh:=783 +1031: setchar114 ("72) h:=12341660+256683=12598343, hh:=799 +1032: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820 +1033: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832 +1034: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846 +1035: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878 +1036: setchar97 ("61) h:=13836257+327680=14163937, hh:=899 +1037: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911 +1038: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945 +1039: setchar97 ("61) h:=14892091+327680=15219771, hh:=966 +1040: setchar99 ("63) h:=15219771+291275=15511046, hh:=984 +1041: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000 +1042: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021 +1043: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033 +1044: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047 +1045: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079 +1046: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102 +1047: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114 +[MEANING macro:->a.macro:->b.macro:->a.macro:->b.] +1048: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +1049: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1050: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1054: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ new file mode 100644 index 00000000000..9373f0bac64 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-sa.typ @@ -0,0 +1,829 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 1061. +maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 37726 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114 +135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126 +136: w3 218453 h:=1984283+218453=2202736, hh:=140 +[A: ] +140: set1 197("C5) h:=2202736+491520=2694256, hh:=171 +142: set1 191("BF) h:=2694256+491520=3185776, hh:=202 +144: w0 218453 h:=3185776+218453=3404229, hh:=216 +[ ] +145: set1 197("C5) h:=3404229+491520=3895749, hh:=247 +147: set1 191("BF) h:=3895749+491520=4387269, hh:=278 +149: w0 218453 h:=4387269+218453=4605722, hh:=292 +[ ] +150: fntdef1 1: min10 +171: fntnum1 current font is min10 +172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332 +[䔿] +175: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +176: y3 786432 v:=655360+786432=1441792, vv:=91 +180: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +181: push +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +185: pop +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +186: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +190: fntnum0 current font is ec-lmr10 +191: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96 +193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114 +194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135 +195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158 +196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170 +197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193 +198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214 +199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226 +[\meaning.] +200: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +201: y0 786432 v:=1441792+786432=2228224, vv:=141 +202: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +203: right3 1310720 h:=0+1310720=1310720, hh:=83 +207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287 +216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308 +217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326 +218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342 +219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363 +220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375 +221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389 +222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421 +[ macro:->macro:->] +223: set1 197("C5) h:=6630046+491520=7121566, hh:=452 +225: set1 191("BF) h:=7121566+491520=7613086, hh:=483 +227: w3 218453 h:=7613086+218453=7831539, hh:=496 +[ ] +231: set1 197("C5) h:=7831539+491520=8323059, hh:=527 +233: set1 191("BF) h:=8323059+491520=8814579, hh:=558 +235: w0 218453 h:=8814579+218453=9033032, hh:=572 +[ ] +236: fntnum1 current font is min10 +237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612 +[䔿] +240: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +241: y0 786432 v:=2228224+786432=3014656, vv:=191 +242: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +243: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +247: fntnum0 current font is ec-lmr10 +248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +[macro:->] +256: set1 197("C5) h:=3970383+491520=4461903, hh:=283 +258: set1 191("BF) h:=4461903+491520=4953423, hh:=314 +260: w3 218453 h:=4953423+218453=5171876, hh:=328 +[ ] +264: set1 197("C5) h:=5171876+491520=5663396, hh:=359 +266: set1 191("BF) h:=5663396+491520=6154916, hh:=390 +268: w0 218453 h:=6154916+218453=6373369, hh:=404 +[ ] +269: fntnum1 current font is min10 +270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444 +[䔿] +273: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +274: y0 786432 v:=3014656+786432=3801088, vv:=241 +275: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +276: push +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +280: pop +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +281: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +285: fntnum0 current font is ec-lmr10 +286: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74 +288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95 +289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118 +290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141 +291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162 +292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197 +293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215 +294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227 +[\jobname.] +295: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +296: y0 786432 v:=3801088+786432=4587520, vv:=291 +297: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +298: push +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +299: fntnum1 current font is min10 +300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +303: pop +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +304: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +308: fntnum0 current font is ec-lmr10 +309: setchar111 ("6F) h:=630598+327680=958278, hh:=61 +310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84 +311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102 +312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114 +313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132 +314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148 +315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164 +316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182 +317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198 +318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210 +[oneletter.] +319: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +320: y0 786432 v:=4587520+786432=5373952, vv:=340 +321: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +322: right3 1310720 h:=0+1310720=1310720, hh:=83 +326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +327: set1 196("C4) h:=1638400+491520=2129920, hh:=135 +329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147 +330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168 +[.\] +331: set1 197("C5) h:=2639643+491520=3131163, hh:=199 +333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211 +334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232 +[.\] +335: set1 255("FF) h:=3640886+327680=3968566, hh:=253 +337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265 +338: right3 291271 h:=4150609+291271=4441880, hh:=281 +[. ] +342: set1 191("BF) h:=4441880+491520=4933400, hh:=312 +344: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +345: y0 786432 v:=5373952+786432=6160384, vv:=390 +346: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +347: push +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +348: fntnum1 current font is min10 +349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +352: pop +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +353: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +357: fntnum0 current font is ec-lmr10 +358: setchar99 ("63) h:=630598+291275=921873, hh:=58 +359: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192 +365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname1.] +366: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +367: y0 786432 v:=6160384+786432=6946816, vv:=440 +368: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +369: right3 1310720 h:=0+1310720=1310720, hh:=83 +373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +374: set1 197("C5) h:=1638400+491520=2129920, hh:=135 +376: set1 191("BF) h:=2129920+491520=2621440, hh:=166 +378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187 +[\] +379: set1 197("C5) h:=2949120+491520=3440640, hh:=218 +381: set1 191("BF) h:=3440640+491520=3932160, hh:=249 +383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261 +384: w3 218453 h:=4114203+218453=4332656, hh:=274 +388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295 +[, \] +389: set1 197("C5) h:=4660336+491520=5151856, hh:=326 +391: set1 191("BF) h:=5151856+491520=5643376, hh:=357 +393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369 +394: w0 218453 h:=5825419+218453=6043872, hh:=383 +395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404 +[, \] +396: fntnum1 current font is min10 +397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444 +[䔿] +400: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +401: y0 786432 v:=6946816+786432=7733248, vv:=490 +402: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +403: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +407: fntnum0 current font is ec-lmr10 +408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[\] +409: fntnum1 current font is min10 +410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144 +[␢] +413: fntnum0 current font is ec-lmr10 +414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176 +415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208 +416: right3 218453 h:=3288474+218453=3506927, hh:=222 +420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245 +421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266 +422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287 +423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305 +424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317 +[=> hoge,] +425: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +426: y0 786432 v:=7733248+786432=8519680, vv:=540 +427: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +428: right3 1310720 h:=0+1310720=1310720, hh:=83 +432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +433: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +435: set1 129("81) h:=1966080+491520=2457600, hh:=156 +437: w2 -18205 h:=2457600-18205=2439395, hh:=155 +440: set1 130("82) h:=2439395+473301=2912696, hh:=185 +442: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +443: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +444: right3 218453 h:=3932172+218453=4150625, hh:=263 +448: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +449: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +450: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +451: w0 -18205 h:=5042651-18205=5024446, hh:=319 +452: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +453: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352 +[=> piyo,] +454: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +455: y0 786432 v:=8519680+786432=9306112, vv:=589 +456: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +457: right3 1310720 h:=0+1310720=1310720, hh:=83 +461: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +462: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +464: set1 129("81) h:=1966080+491520=2457600, hh:=156 +466: w2 -18205 h:=2457600-18205=2439395, hh:=155 +469: set1 130("82) h:=2439395+473301=2912696, hh:=185 +471: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +472: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +473: right3 218453 h:=3932172+218453=4150625, hh:=263 +477: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +478: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +479: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +480: w0 -18205 h:=5042651-18205=5024446, hh:=319 +481: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +482: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352 +[=> piyo.] +483: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +484: y0 786432 v:=9306112+786432=10092544, vv:=639 +485: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +486: push +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +487: fntnum1 current font is min10 +488: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +491: pop +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +492: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +496: fntnum0 current font is ec-lmr10 +497: setchar48 ("30) h:=630598+327680=958278, hh:=61 +498: setchar120 ("78) h:=958278+345898=1304176, hh:=83 +499: setchar70 ("46) h:=1304176+427818=1731994, hh:=110 +500: setchar70 ("46) h:=1731994+427818=2159812, hh:=137 +501: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149 +[0xFF.] +502: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +503: y0 786432 v:=10092544+786432=10878976, vv:=689 +504: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +505: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +509: fntnum1 current font is min10 +510: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +513: fntnum0 current font is ec-lmr10 +514: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +515: w3 218453 h:=2123361+218453=2341814, hh:=148 +519: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +520: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +521: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +523: set1 197("C5) h:=3252044+491520=3743564, hh:=237 +525: set1 255("FF) h:=3743564+327680=4071244, hh:=258 +527: set1 191("BF) h:=4071244+491520=4562764, hh:=289 +529: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301 +530: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336 +531: setchar97 ("61) h:=5290918+327680=5618598, hh:=357 +532: setchar99 ("63) h:=5618598+291275=5909873, hh:=375 +533: setchar114 ("72) h:=5909873+256683=6166556, hh:=391 +534: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412 +535: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424 +536: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438 +537: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470 +[:macro:->] +538: fntnum1 current font is min10 +539: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510 +[␢] +542: fntnum0 current font is ec-lmr10 +543: setchar41 ("29) h:=8035068+254870=8289938, hh:=526 +544: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538 +545: w0 218453 h:=8471981+218453=8690434, hh:=550 +546: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571 +[), \] +547: set1 255("FF) h:=9018114+327680=9345794, hh:=592 +549: set1 197("C5) h:=9345794+491520=9837314, hh:=623 +551: set1 255("FF) h:=9837314+327680=10164994, hh:=644 +553: set1 191("BF) h:=10164994+491520=10656514, hh:=675 +555: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687 +556: w0 218453 h:=10838557+218453=11057010, hh:=700 +557: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735 +558: setchar97 ("61) h:=11603121+327680=11930801, hh:=756 +559: setchar99 ("63) h:=11930801+291275=12222076, hh:=774 +560: setchar114 ("72) h:=12222076+256683=12478759, hh:=790 +561: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811 +562: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823 +563: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837 +564: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869 +565: setchar40 ("28) h:=13716673+254870=13971543, hh:=885 +566: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906 +[, macro:->(\] +567: set1 255("FF) h:=14299223+327680=14626903, hh:=927 +569: set1 197("C5) h:=14626903+491520=15118423, hh:=958 +571: set1 255("FF) h:=15118423+327680=15446103, hh:=979 +573: set1 191("BF) h:=15446103+491520=15937623, hh:=1010 +575: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022 +576: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057 +577: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078 +578: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096 +579: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112 +580: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133 +581: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145 +582: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159 +583: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191 +[:macro:->] +584: fntnum1 current font is min10 +585: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231 +[␢] +588: fntnum0 current font is ec-lmr10 +589: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247 +590: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259 +[).] +591: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +592: y0 786432 v:=10878976+786432=11665408, vv:=739 +593: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +594: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +598: fntnum1 current font is min10 +599: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +602: fntnum0 current font is ec-lmr10 +603: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +604: w3 218453 h:=2123361+218453=2341814, hh:=148 +608: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +609: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +610: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +612: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218 +613: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253 +614: setchar97 ("61) h:=3980198+327680=4307878, hh:=274 +615: setchar99 ("63) h:=4307878+291275=4599153, hh:=292 +616: setchar114 ("72) h:=4599153+256683=4855836, hh:=308 +617: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329 +618: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341 +619: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355 +620: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387 +[:macro:->] +621: fntnum1 current font is min10 +622: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427 +[] +625: fntnum0 current font is ec-lmr10 +626: setchar41 ("29) h:=6724348+254870=6979218, hh:=443 +627: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455 +628: w0 218453 h:=7161261+218453=7379714, hh:=467 +629: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488 +[), \] +630: set1 255("FF) h:=7707394+327680=8035074, hh:=509 +632: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521 +633: w0 218453 h:=8217117+218453=8435570, hh:=534 +634: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569 +635: setchar97 ("61) h:=8981681+327680=9309361, hh:=590 +636: setchar99 ("63) h:=9309361+291275=9600636, hh:=608 +637: setchar114 ("72) h:=9600636+256683=9857319, hh:=624 +638: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645 +639: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657 +640: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671 +641: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703 +642: setchar40 ("28) h:=11095233+254870=11350103, hh:=719 +643: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740 +[, macro:->(\] +644: set1 255("FF) h:=11677783+327680=12005463, hh:=761 +646: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773 +647: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808 +648: setchar97 ("61) h:=12733617+327680=13061297, hh:=829 +649: setchar99 ("63) h:=13061297+291275=13352572, hh:=847 +650: setchar114 ("72) h:=13352572+256683=13609255, hh:=863 +651: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884 +652: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896 +653: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910 +654: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942 +[:macro:->] +655: fntnum1 current font is min10 +656: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982 +[] +659: fntnum0 current font is ec-lmr10 +660: setchar41 ("29) h:=15477767+254870=15732637, hh:=998 +661: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010 +[).] +662: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +663: y0 786432 v:=11665408+786432=12451840, vv:=789 +664: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +665: push +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +666: fntnum1 current font is min10 +667: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +670: pop +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +671: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +675: fntnum0 current font is ec-lmr10 +676: setchar99 ("63) h:=630598+291275=921873, hh:=58 +677: setchar111 ("6F) h:=921873+327680=1249553, hh:=79 +678: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102 +679: right2 -18205 h:=1613638-18205=1595433, hh:=101 +682: setchar116 ("74) h:=1595433+254870=1850303, hh:=117 +683: setchar101 ("65) h:=1850303+291275=2141578, hh:=135 +684: setchar120 ("78) h:=2141578+345898=2487476, hh:=157 +685: setchar116 ("74) h:=2487476+254870=2742346, hh:=173 +686: setchar115 ("73) h:=2742346+258506=3000852, hh:=189 +687: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201 +[contexts.] +688: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +689: y0 786432 v:=12451840+786432=13238272, vv:=839 +690: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +691: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +695: fntnum1 current font is min10 +696: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +699: fntnum0 current font is ec-lmr10 +700: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +702: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +704: w3 218453 h:=2924358+218453=3142811, hh:=199 +708: setchar97 ("61) h:=3142811+327680=3470491, hh:=220 +[ a] +709: set1 197("C5) h:=3470491+491520=3962011, hh:=251 +711: set1 191("BF) h:=3962011+491520=4453531, hh:=282 +713: w0 218453 h:=4453531+218453=4671984, hh:=296 +[ ] +714: set1 197("C5) h:=4671984+491520=5163504, hh:=327 +716: set1 191("BF) h:=5163504+491520=5655024, hh:=358 +718: w0 218453 h:=5655024+218453=5873477, hh:=372 +[ ] +719: fntnum1 current font is min10 +720: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412 +723: w0 218453 h:=6504075+218453=6722528, hh:=426 +[䔿 ] +724: fntnum0 current font is ec-lmr10 +725: set1 197("C5) h:=6722528+491520=7214048, hh:=457 +727: set1 191("BF) h:=7214048+491520=7705568, hh:=488 +729: w0 218453 h:=7705568+218453=7924021, hh:=502 +[ ] +730: set1 197("C5) h:=7924021+491520=8415541, hh:=533 +732: set1 191("BF) h:=8415541+491520=8907061, hh:=564 +734: w0 218453 h:=8907061+218453=9125514, hh:=578 +[ ] +735: fntnum1 current font is min10 +736: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618 +739: x3 436906 h:=9756112+436906=10193018, hh:=646 +[䔿 ] +743: fntnum0 current font is ec-lmr10 +744: set1 197("C5) h:=10193018+491520=10684538, hh:=677 +746: set1 191("BF) h:=10684538+491520=11176058, hh:=708 +748: w0 218453 h:=11176058+218453=11394511, hh:=722 +[ ] +749: fntnum1 current font is min10 +750: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762 +753: x0 436906 h:=12025109+436906=12462015, hh:=789 +754: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829 +[䔿 ] +757: fntnum0 current font is ec-lmr10 +758: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864 +759: setchar97 ("61) h:=13638724+327680=13966404, hh:=885 +760: setchar99 ("63) h:=13966404+291275=14257679, hh:=903 +761: setchar114 ("72) h:=14257679+256683=14514362, hh:=919 +762: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940 +763: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952 +764: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966 +765: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998 +[macro:->] +766: set1 197("C5) h:=15752276+491520=16243796, hh:=1029 +768: set1 191("BF) h:=16243796+491520=16735316, hh:=1060 +770: w0 218453 h:=16735316+218453=16953769, hh:=1074 +[ ] +771: set1 197("C5) h:=16953769+491520=17445289, hh:=1105 +773: set1 191("BF) h:=17445289+491520=17936809, hh:=1136 +775: w0 218453 h:=17936809+218453=18155262, hh:=1150 +[ ] +776: fntnum1 current font is min10 +777: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190 +[䔿] +780: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +781: y0 786432 v:=13238272+786432=14024704, vv:=888 +782: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +783: right3 1310720 h:=0+1310720=1310720, hh:=83 +787: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[ ␢] +790: fntnum0 current font is ec-lmr10 +791: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +793: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +795: w3 218453 h:=2924358+218453=3142811, hh:=199 +[ ] +799: set1 197("C5) h:=3142811+491520=3634331, hh:=230 +801: set1 191("BF) h:=3634331+491520=4125851, hh:=261 +803: fntnum1 current font is min10 +804: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301 +[䔿] +807: fntnum0 current font is ec-lmr10 +808: set1 197("C5) h:=4756449+491520=5247969, hh:=332 +810: set1 191("BF) h:=5247969+491520=5739489, hh:=363 +812: w0 218453 h:=5739489+218453=5957942, hh:=377 +813: setchar97 ("61) h:=5957942+327680=6285622, hh:=398 +[ a] +814: set1 197("C5) h:=6285622+491520=6777142, hh:=429 +816: set1 191("BF) h:=6777142+491520=7268662, hh:=460 +818: w0 218453 h:=7268662+218453=7487115, hh:=474 +[ ] +819: set1 197("C5) h:=7487115+491520=7978635, hh:=505 +821: set1 191("BF) h:=7978635+491520=8470155, hh:=536 +823: w0 218453 h:=8470155+218453=8688608, hh:=550 +[ ] +824: fntnum1 current font is min10 +825: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590 +828: w0 218453 h:=9319206+218453=9537659, hh:=604 +[䔿 ] +829: fntnum0 current font is ec-lmr10 +830: set1 197("C5) h:=9537659+491520=10029179, hh:=635 +832: set1 191("BF) h:=10029179+491520=10520699, hh:=666 +834: w0 218453 h:=10520699+218453=10739152, hh:=680 +[ ] +835: set1 197("C5) h:=10739152+491520=11230672, hh:=711 +837: set1 191("BF) h:=11230672+491520=11722192, hh:=742 +839: w0 218453 h:=11722192+218453=11940645, hh:=756 +[ ] +840: fntnum1 current font is min10 +841: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796 +844: right3 436906 h:=12571243+436906=13008149, hh:=824 +[䔿 ] +848: fntnum0 current font is ec-lmr10 +849: set1 197("C5) h:=13008149+491520=13499669, hh:=855 +851: set1 191("BF) h:=13499669+491520=13991189, hh:=886 +853: w0 218453 h:=13991189+218453=14209642, hh:=900 +[ ] +854: fntnum1 current font is min10 +855: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940 +858: w0 218453 h:=14840240+218453=15058693, hh:=954 +859: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994 +[䔿 ] +862: fntnum0 current font is ec-lmr10 +863: set1 255("FF) h:=15689291+327680=16016971, hh:=1015 +865: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +866: y0 786432 v:=14024704+786432=14811136, vv:=938 +867: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +868: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +872: fntnum1 current font is min10 +873: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +876: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +877: y0 786432 v:=14811136+786432=15597568, vv:=988 +878: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +879: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +883: fntnum0 current font is ec-lmr10 +884: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +885: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +886: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +887: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +888: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +889: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +890: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +891: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +892: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +893: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[.a...c.b..] +894: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +895: y0 786432 v:=15597568+786432=16384000, vv:=1038 +896: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +897: right3 1310720 h:=0+1310720=1310720, hh:=83 +901: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +902: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +903: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +904: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +905: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +906: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +907: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +908: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +909: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +910: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[ .a...c.b..] +911: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +912: y0 786432 v:=16384000+786432=17170432, vv:=1088 +913: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +914: push +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +915: fntnum1 current font is min10 +916: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +919: pop +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +920: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +924: fntnum0 current font is ec-lmr10 +925: setchar99 ("63) h:=630598+291275=921873, hh:=58 +926: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +927: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +928: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +929: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +930: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +931: setchar50 ("32) h:=2709530+327680=3037210, hh:=192 +932: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname2.] +933: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +934: y0 786432 v:=17170432+786432=17956864, vv:=1137 +935: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +936: right3 1310720 h:=0+1310720=1310720, hh:=83 +940: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +941: setchar72 ("48) h:=1674805+491520=2166325, hh:=137 +942: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169 +943: right2 -18205 h:=2676063-18205=2657858, hh:=168 +946: setchar87 ("57) h:=2657858+673578=3331436, hh:=211 +947: right3 218453 h:=3331436+218453=3549889, hh:=225 +951: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237 +952: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249 +953: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261 +[ SHOW ...] +954: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +955: y0 786432 v:=17956864+786432=18743296, vv:=1187 +956: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +957: right3 1310720 h:=0+1310720=1310720, hh:=83 +961: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +962: setchar84 ("54) h:=1674805+473301=2148106, hh:=136 +963: setchar82 ("52) h:=2148106+482410=2630516, hh:=167 +964: setchar73 ("49) h:=2630516+236650=2867166, hh:=182 +965: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213 +966: setchar71 ("47) h:=3358686+514261=3872947, hh:=246 +967: right3 218453 h:=3872947+218453=4091400, hh:=259 +971: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280 +[ STRING \] +972: set1 197("C5) h:=4419080+491520=4910600, hh:=311 +974: set1 191("BF) h:=4910600+491520=5402120, hh:=342 +976: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354 +977: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375 +[.\] +978: fntnum1 current font is min10 +979: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415 +[䔿] +982: fntnum0 current font is ec-lmr10 +983: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427 +984: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448 +[.\] +985: set1 197("C5) h:=7052164+491520=7543684, hh:=479 +987: set1 191("BF) h:=7543684+491520=8035204, hh:=510 +989: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522 +990: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543 +[.\] +991: fntnum1 current font is min10 +992: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583 +[䔿] +995: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +996: y0 786432 v:=18743296+786432=19529728, vv:=1237 +997: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +998: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +1002: fntnum0 current font is ec-lmr10 +1003: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121 +1004: setchar69 ("45) h:=1911488+446005=2357493, hh:=149 +1005: setchar65 ("41) h:=2357493+491520=2849013, hh:=180 +1006: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211 +1007: setchar73 ("49) h:=3340533+236650=3577183, hh:=226 +1008: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257 +1009: setchar71 ("47) h:=4068703+514261=4582964, hh:=290 +1010: right3 218453 h:=4582964+218453=4801417, hh:=304 +1014: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339 +1015: setchar97 ("61) h:=5347528+327680=5675208, hh:=360 +1016: setchar99 ("63) h:=5675208+291275=5966483, hh:=378 +1017: setchar114 ("72) h:=5966483+256683=6223166, hh:=394 +1018: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415 +1019: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427 +1020: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441 +1021: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473 +1022: setchar97 ("61) h:=7461080+327680=7788760, hh:=494 +1023: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506 +1024: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541 +1025: setchar97 ("61) h:=8516914+327680=8844594, hh:=562 +1026: setchar99 ("63) h:=8844594+291275=9135869, hh:=580 +1027: setchar114 ("72) h:=9135869+256683=9392552, hh:=596 +1028: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617 +1029: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629 +1030: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643 +1031: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675 +1032: setchar98 ("62) h:=10630466+364085=10994551, hh:=698 +1033: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710 +1034: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745 +1035: setchar97 ("61) h:=11722705+327680=12050385, hh:=765 +1036: setchar99 ("63) h:=12050385+291275=12341660, hh:=783 +1037: setchar114 ("72) h:=12341660+256683=12598343, hh:=799 +1038: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820 +1039: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832 +1040: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846 +1041: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878 +1042: setchar97 ("61) h:=13836257+327680=14163937, hh:=899 +1043: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911 +1044: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945 +1045: setchar97 ("61) h:=14892091+327680=15219771, hh:=966 +1046: setchar99 ("63) h:=15219771+291275=15511046, hh:=984 +1047: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000 +1048: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021 +1049: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033 +1050: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047 +1051: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079 +1052: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102 +1053: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114 +[MEANING macro:->a.macro:->b.macro:->a.macro:->b.] +1054: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +1055: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1056: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1060: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ new file mode 100644 index 00000000000..d126d4c505e --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-pknj-ua.typ @@ -0,0 +1,829 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 1062. +maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 +Font 1: umin10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 39003 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114 +135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126 +136: w3 218453 h:=1984283+218453=2202736, hh:=140 +[A: ] +140: set1 197("C5) h:=2202736+491520=2694256, hh:=171 +142: set1 191("BF) h:=2694256+491520=3185776, hh:=202 +144: w0 218453 h:=3185776+218453=3404229, hh:=216 +[ ] +145: set1 197("C5) h:=3404229+491520=3895749, hh:=247 +147: set1 191("BF) h:=3895749+491520=4387269, hh:=278 +149: w0 218453 h:=4387269+218453=4605722, hh:=292 +[ ] +150: fntdef1 1: umin10 +172: fntnum1 current font is umin10 +173: set2 39003("985B) type=0 h:=4605722+630598=5236320, hh:=332 +[顛] +176: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +177: y3 786432 v:=655360+786432=1441792, vv:=91 +181: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +182: push +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +183: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +186: pop +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +187: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +191: fntnum0 current font is ec-lmr10 +192: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +193: setchar109 ("6D) h:=958278+546111=1504389, hh:=96 +194: setchar101 ("65) h:=1504389+291275=1795664, hh:=114 +195: setchar97 ("61) h:=1795664+327680=2123344, hh:=135 +196: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158 +197: setchar105 ("69) h:=2487429+182043=2669472, hh:=170 +198: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193 +199: setchar103 ("67) h:=3033557+327680=3361237, hh:=214 +200: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226 +[\meaning.] +201: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +202: y0 786432 v:=1441792+786432=2228224, vv:=141 +203: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +204: right3 1310720 h:=0+1310720=1310720, hh:=83 +208: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +209: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +210: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +211: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +212: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +213: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +214: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +215: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +216: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287 +217: setchar97 ("61) h:=4516494+327680=4844174, hh:=308 +218: setchar99 ("63) h:=4844174+291275=5135449, hh:=326 +219: setchar114 ("72) h:=5135449+256683=5392132, hh:=342 +220: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363 +221: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375 +222: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389 +223: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421 +[ macro:->macro:->] +224: set1 197("C5) h:=6630046+491520=7121566, hh:=452 +226: set1 191("BF) h:=7121566+491520=7613086, hh:=483 +228: w3 218453 h:=7613086+218453=7831539, hh:=496 +[ ] +232: set1 197("C5) h:=7831539+491520=8323059, hh:=527 +234: set1 191("BF) h:=8323059+491520=8814579, hh:=558 +236: w0 218453 h:=8814579+218453=9033032, hh:=572 +[ ] +237: fntnum1 current font is umin10 +238: set2 39003("985B) type=0 h:=9033032+630598=9663630, hh:=612 +[顛] +241: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +242: y0 786432 v:=2228224+786432=3014656, vv:=191 +243: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +244: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +248: fntnum0 current font is ec-lmr10 +249: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +250: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +251: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +252: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +253: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +254: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +255: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +256: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +[macro:->] +257: set1 197("C5) h:=3970383+491520=4461903, hh:=283 +259: set1 191("BF) h:=4461903+491520=4953423, hh:=314 +261: w3 218453 h:=4953423+218453=5171876, hh:=328 +[ ] +265: set1 197("C5) h:=5171876+491520=5663396, hh:=359 +267: set1 191("BF) h:=5663396+491520=6154916, hh:=390 +269: w0 218453 h:=6154916+218453=6373369, hh:=404 +[ ] +270: fntnum1 current font is umin10 +271: set2 39003("985B) type=0 h:=6373369+630598=7003967, hh:=444 +[顛] +274: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +275: y0 786432 v:=3014656+786432=3801088, vv:=241 +276: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +277: push +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +278: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +281: pop +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +282: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +286: fntnum0 current font is ec-lmr10 +287: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +288: setchar106 ("6A) h:=958278+200245=1158523, hh:=74 +289: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95 +290: setchar98 ("62) h:=1486203+364085=1850288, hh:=118 +291: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141 +292: setchar97 ("61) h:=2214373+327680=2542053, hh:=162 +293: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197 +294: setchar101 ("65) h:=3088164+291275=3379439, hh:=215 +295: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227 +[\jobname.] +296: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +297: y0 786432 v:=3801088+786432=4587520, vv:=291 +298: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +299: push +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +300: fntnum1 current font is umin10 +301: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +304: pop +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +305: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +309: fntnum0 current font is ec-lmr10 +310: setchar111 ("6F) h:=630598+327680=958278, hh:=61 +311: setchar110 ("6E) h:=958278+364085=1322363, hh:=84 +312: setchar101 ("65) h:=1322363+291275=1613638, hh:=102 +313: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114 +314: setchar101 ("65) h:=1795681+291275=2086956, hh:=132 +315: setchar116 ("74) h:=2086956+254870=2341826, hh:=148 +316: setchar116 ("74) h:=2341826+254870=2596696, hh:=164 +317: setchar101 ("65) h:=2596696+291275=2887971, hh:=182 +318: setchar114 ("72) h:=2887971+256683=3144654, hh:=198 +319: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210 +[oneletter.] +320: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +321: y0 786432 v:=4587520+786432=5373952, vv:=340 +322: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +323: right3 1310720 h:=0+1310720=1310720, hh:=83 +327: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +328: set1 196("C4) h:=1638400+491520=2129920, hh:=135 +330: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147 +331: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168 +[.\] +332: set1 197("C5) h:=2639643+491520=3131163, hh:=199 +334: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211 +335: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232 +[.\] +336: set1 255("FF) h:=3640886+327680=3968566, hh:=253 +338: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265 +339: right3 291271 h:=4150609+291271=4441880, hh:=281 +[. ] +343: set1 191("BF) h:=4441880+491520=4933400, hh:=312 +345: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +346: y0 786432 v:=5373952+786432=6160384, vv:=390 +347: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +348: push +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +349: fntnum1 current font is umin10 +350: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +353: pop +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +354: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +358: fntnum0 current font is ec-lmr10 +359: setchar99 ("63) h:=630598+291275=921873, hh:=58 +360: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +361: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +362: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +363: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +364: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +365: setchar49 ("31) h:=2709530+327680=3037210, hh:=192 +366: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname1.] +367: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +368: y0 786432 v:=6160384+786432=6946816, vv:=440 +369: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +370: right3 1310720 h:=0+1310720=1310720, hh:=83 +374: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +375: set1 197("C5) h:=1638400+491520=2129920, hh:=135 +377: set1 191("BF) h:=2129920+491520=2621440, hh:=166 +379: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187 +[\] +380: set1 197("C5) h:=2949120+491520=3440640, hh:=218 +382: set1 191("BF) h:=3440640+491520=3932160, hh:=249 +384: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261 +385: w3 218453 h:=4114203+218453=4332656, hh:=274 +389: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295 +[, \] +390: set1 197("C5) h:=4660336+491520=5151856, hh:=326 +392: set1 191("BF) h:=5151856+491520=5643376, hh:=357 +394: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369 +395: w0 218453 h:=5825419+218453=6043872, hh:=383 +396: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404 +[, \] +397: fntnum1 current font is umin10 +398: set2 39003("985B) type=0 h:=6371552+630598=7002150, hh:=444 +[顛] +401: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +402: y0 786432 v:=6946816+786432=7733248, vv:=490 +403: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +404: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +408: fntnum0 current font is ec-lmr10 +409: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[\] +410: fntnum1 current font is umin10 +411: set2 12354("3042) type=0 h:=1638400+630598=2268998, hh:=144 +[あ] +414: fntnum0 current font is ec-lmr10 +415: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176 +416: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208 +417: right3 218453 h:=3288474+218453=3506927, hh:=222 +421: setchar104 ("68) h:=3506927+364085=3871012, hh:=245 +422: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266 +423: setchar103 ("67) h:=4198692+327680=4526372, hh:=287 +424: setchar101 ("65) h:=4526372+291275=4817647, hh:=305 +425: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317 +[=> hoge,] +426: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +427: y0 786432 v:=7733248+786432=8519680, vv:=540 +428: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +429: right3 1310720 h:=0+1310720=1310720, hh:=83 +433: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +434: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +436: set1 129("81) h:=1966080+491520=2457600, hh:=156 +438: w2 -18205 h:=2457600-18205=2439395, hh:=155 +441: set1 130("82) h:=2439395+473301=2912696, hh:=185 +443: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +444: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +445: right3 218453 h:=3932172+218453=4150625, hh:=263 +449: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +450: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +451: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +452: w0 -18205 h:=5042651-18205=5024446, hh:=319 +453: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +454: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352 +[=> piyo,] +455: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +456: y0 786432 v:=8519680+786432=9306112, vv:=589 +457: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +458: right3 1310720 h:=0+1310720=1310720, hh:=83 +462: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +463: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +465: set1 129("81) h:=1966080+491520=2457600, hh:=156 +467: w2 -18205 h:=2457600-18205=2439395, hh:=155 +470: set1 130("82) h:=2439395+473301=2912696, hh:=185 +472: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +473: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +474: right3 218453 h:=3932172+218453=4150625, hh:=263 +478: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +479: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +480: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +481: w0 -18205 h:=5042651-18205=5024446, hh:=319 +482: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +483: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352 +[=> piyo.] +484: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +485: y0 786432 v:=9306112+786432=10092544, vv:=639 +486: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +487: push +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +488: fntnum1 current font is umin10 +489: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +492: pop +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +493: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +497: fntnum0 current font is ec-lmr10 +498: setchar48 ("30) h:=630598+327680=958278, hh:=61 +499: setchar120 ("78) h:=958278+345898=1304176, hh:=83 +500: setchar70 ("46) h:=1304176+427818=1731994, hh:=110 +501: setchar70 ("46) h:=1731994+427818=2159812, hh:=137 +502: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149 +[0xFF.] +503: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +504: y0 786432 v:=10092544+786432=10878976, vv:=689 +505: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +506: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +510: fntnum1 current font is umin10 +511: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123 +[あ] +514: fntnum0 current font is ec-lmr10 +515: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +516: w3 218453 h:=2123361+218453=2341814, hh:=148 +520: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +521: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +522: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +524: set1 197("C5) h:=3252044+491520=3743564, hh:=237 +526: set1 255("FF) h:=3743564+327680=4071244, hh:=258 +528: set1 191("BF) h:=4071244+491520=4562764, hh:=289 +530: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301 +531: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336 +532: setchar97 ("61) h:=5290918+327680=5618598, hh:=357 +533: setchar99 ("63) h:=5618598+291275=5909873, hh:=375 +534: setchar114 ("72) h:=5909873+256683=6166556, hh:=391 +535: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412 +536: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424 +537: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438 +538: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470 +[:macro:->] +539: fntnum1 current font is umin10 +540: set2 12354("3042) type=0 h:=7404470+630598=8035068, hh:=510 +[あ] +543: fntnum0 current font is ec-lmr10 +544: setchar41 ("29) h:=8035068+254870=8289938, hh:=526 +545: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538 +546: w0 218453 h:=8471981+218453=8690434, hh:=550 +547: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571 +[), \] +548: set1 255("FF) h:=9018114+327680=9345794, hh:=592 +550: set1 197("C5) h:=9345794+491520=9837314, hh:=623 +552: set1 255("FF) h:=9837314+327680=10164994, hh:=644 +554: set1 191("BF) h:=10164994+491520=10656514, hh:=675 +556: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687 +557: w0 218453 h:=10838557+218453=11057010, hh:=700 +558: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735 +559: setchar97 ("61) h:=11603121+327680=11930801, hh:=756 +560: setchar99 ("63) h:=11930801+291275=12222076, hh:=774 +561: setchar114 ("72) h:=12222076+256683=12478759, hh:=790 +562: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811 +563: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823 +564: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837 +565: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869 +566: setchar40 ("28) h:=13716673+254870=13971543, hh:=885 +567: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906 +[, macro:->(\] +568: set1 255("FF) h:=14299223+327680=14626903, hh:=927 +570: set1 197("C5) h:=14626903+491520=15118423, hh:=958 +572: set1 255("FF) h:=15118423+327680=15446103, hh:=979 +574: set1 191("BF) h:=15446103+491520=15937623, hh:=1010 +576: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022 +577: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057 +578: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078 +579: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096 +580: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112 +581: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133 +582: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145 +583: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159 +584: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191 +[:macro:->] +585: fntnum1 current font is umin10 +586: set2 12354("3042) type=0 h:=18779329+630598=19409927, hh:=1231 +[あ] +589: fntnum0 current font is ec-lmr10 +590: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247 +591: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259 +[).] +592: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +593: y0 786432 v:=10878976+786432=11665408, vv:=739 +594: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +595: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +599: fntnum1 current font is umin10 +600: set2 12356("3044) type=0 h:=1310720+630598=1941318, hh:=123 +[い] +603: fntnum0 current font is ec-lmr10 +604: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +605: w3 218453 h:=2123361+218453=2341814, hh:=148 +609: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +610: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +611: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +613: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218 +614: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253 +615: setchar97 ("61) h:=3980198+327680=4307878, hh:=274 +616: setchar99 ("63) h:=4307878+291275=4599153, hh:=292 +617: setchar114 ("72) h:=4599153+256683=4855836, hh:=308 +618: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329 +619: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341 +620: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355 +621: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387 +[:macro:->] +622: fntnum1 current font is umin10 +623: set2 12356("3044) type=0 h:=6093750+630598=6724348, hh:=427 +[い] +626: fntnum0 current font is ec-lmr10 +627: setchar41 ("29) h:=6724348+254870=6979218, hh:=443 +628: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455 +629: w0 218453 h:=7161261+218453=7379714, hh:=467 +630: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488 +[), \] +631: set1 255("FF) h:=7707394+327680=8035074, hh:=509 +633: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521 +634: w0 218453 h:=8217117+218453=8435570, hh:=534 +635: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569 +636: setchar97 ("61) h:=8981681+327680=9309361, hh:=590 +637: setchar99 ("63) h:=9309361+291275=9600636, hh:=608 +638: setchar114 ("72) h:=9600636+256683=9857319, hh:=624 +639: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645 +640: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657 +641: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671 +642: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703 +643: setchar40 ("28) h:=11095233+254870=11350103, hh:=719 +644: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740 +[, macro:->(\] +645: set1 255("FF) h:=11677783+327680=12005463, hh:=761 +647: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773 +648: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808 +649: setchar97 ("61) h:=12733617+327680=13061297, hh:=829 +650: setchar99 ("63) h:=13061297+291275=13352572, hh:=847 +651: setchar114 ("72) h:=13352572+256683=13609255, hh:=863 +652: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884 +653: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896 +654: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910 +655: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942 +[:macro:->] +656: fntnum1 current font is umin10 +657: set2 12356("3044) type=0 h:=14847169+630598=15477767, hh:=982 +[い] +660: fntnum0 current font is ec-lmr10 +661: setchar41 ("29) h:=15477767+254870=15732637, hh:=998 +662: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010 +[).] +663: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +664: y0 786432 v:=11665408+786432=12451840, vv:=789 +665: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +666: push +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +667: fntnum1 current font is umin10 +668: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +671: pop +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +672: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +676: fntnum0 current font is ec-lmr10 +677: setchar99 ("63) h:=630598+291275=921873, hh:=58 +678: setchar111 ("6F) h:=921873+327680=1249553, hh:=79 +679: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102 +680: right2 -18205 h:=1613638-18205=1595433, hh:=101 +683: setchar116 ("74) h:=1595433+254870=1850303, hh:=117 +684: setchar101 ("65) h:=1850303+291275=2141578, hh:=135 +685: setchar120 ("78) h:=2141578+345898=2487476, hh:=157 +686: setchar116 ("74) h:=2487476+254870=2742346, hh:=173 +687: setchar115 ("73) h:=2742346+258506=3000852, hh:=189 +688: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201 +[contexts.] +689: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +690: y0 786432 v:=12451840+786432=13238272, vv:=839 +691: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +692: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +696: fntnum1 current font is umin10 +697: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123 +[あ] +700: fntnum0 current font is ec-lmr10 +701: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +703: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +705: w3 218453 h:=2924358+218453=3142811, hh:=199 +709: setchar97 ("61) h:=3142811+327680=3470491, hh:=220 +[ a] +710: set1 197("C5) h:=3470491+491520=3962011, hh:=251 +712: set1 191("BF) h:=3962011+491520=4453531, hh:=282 +714: w0 218453 h:=4453531+218453=4671984, hh:=296 +[ ] +715: set1 197("C5) h:=4671984+491520=5163504, hh:=327 +717: set1 191("BF) h:=5163504+491520=5655024, hh:=358 +719: w0 218453 h:=5655024+218453=5873477, hh:=372 +[ ] +720: fntnum1 current font is umin10 +721: set2 39003("985B) type=0 h:=5873477+630598=6504075, hh:=412 +724: w0 218453 h:=6504075+218453=6722528, hh:=426 +[顛 ] +725: fntnum0 current font is ec-lmr10 +726: set1 197("C5) h:=6722528+491520=7214048, hh:=457 +728: set1 191("BF) h:=7214048+491520=7705568, hh:=488 +730: w0 218453 h:=7705568+218453=7924021, hh:=502 +[ ] +731: set1 197("C5) h:=7924021+491520=8415541, hh:=533 +733: set1 191("BF) h:=8415541+491520=8907061, hh:=564 +735: w0 218453 h:=8907061+218453=9125514, hh:=578 +[ ] +736: fntnum1 current font is umin10 +737: set2 39003("985B) type=0 h:=9125514+630598=9756112, hh:=618 +740: x3 436906 h:=9756112+436906=10193018, hh:=646 +[顛 ] +744: fntnum0 current font is ec-lmr10 +745: set1 197("C5) h:=10193018+491520=10684538, hh:=677 +747: set1 191("BF) h:=10684538+491520=11176058, hh:=708 +749: w0 218453 h:=11176058+218453=11394511, hh:=722 +[ ] +750: fntnum1 current font is umin10 +751: set2 39003("985B) type=0 h:=11394511+630598=12025109, hh:=762 +754: x0 436906 h:=12025109+436906=12462015, hh:=789 +755: set2 12356("3044) type=0 h:=12462015+630598=13092613, hh:=829 +[顛 い] +758: fntnum0 current font is ec-lmr10 +759: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864 +760: setchar97 ("61) h:=13638724+327680=13966404, hh:=885 +761: setchar99 ("63) h:=13966404+291275=14257679, hh:=903 +762: setchar114 ("72) h:=14257679+256683=14514362, hh:=919 +763: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940 +764: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952 +765: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966 +766: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998 +[macro:->] +767: set1 197("C5) h:=15752276+491520=16243796, hh:=1029 +769: set1 191("BF) h:=16243796+491520=16735316, hh:=1060 +771: w0 218453 h:=16735316+218453=16953769, hh:=1074 +[ ] +772: set1 197("C5) h:=16953769+491520=17445289, hh:=1105 +774: set1 191("BF) h:=17445289+491520=17936809, hh:=1136 +776: w0 218453 h:=17936809+218453=18155262, hh:=1150 +[ ] +777: fntnum1 current font is umin10 +778: set2 39003("985B) type=0 h:=18155262+630598=18785860, hh:=1190 +[顛] +781: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +782: y0 786432 v:=13238272+786432=14024704, vv:=888 +783: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +784: right3 1310720 h:=0+1310720=1310720, hh:=83 +788: set2 12354("3042) type=0 h:=1310720+630598=1941318, hh:=123 +[ あ] +791: fntnum0 current font is ec-lmr10 +792: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +794: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +796: w3 218453 h:=2924358+218453=3142811, hh:=199 +[ ] +800: set1 197("C5) h:=3142811+491520=3634331, hh:=230 +802: set1 191("BF) h:=3634331+491520=4125851, hh:=261 +804: fntnum1 current font is umin10 +805: set2 39003("985B) type=0 h:=4125851+630598=4756449, hh:=301 +[顛] +808: fntnum0 current font is ec-lmr10 +809: set1 197("C5) h:=4756449+491520=5247969, hh:=332 +811: set1 191("BF) h:=5247969+491520=5739489, hh:=363 +813: w0 218453 h:=5739489+218453=5957942, hh:=377 +814: setchar97 ("61) h:=5957942+327680=6285622, hh:=398 +[ a] +815: set1 197("C5) h:=6285622+491520=6777142, hh:=429 +817: set1 191("BF) h:=6777142+491520=7268662, hh:=460 +819: w0 218453 h:=7268662+218453=7487115, hh:=474 +[ ] +820: set1 197("C5) h:=7487115+491520=7978635, hh:=505 +822: set1 191("BF) h:=7978635+491520=8470155, hh:=536 +824: w0 218453 h:=8470155+218453=8688608, hh:=550 +[ ] +825: fntnum1 current font is umin10 +826: set2 39003("985B) type=0 h:=8688608+630598=9319206, hh:=590 +829: w0 218453 h:=9319206+218453=9537659, hh:=604 +[顛 ] +830: fntnum0 current font is ec-lmr10 +831: set1 197("C5) h:=9537659+491520=10029179, hh:=635 +833: set1 191("BF) h:=10029179+491520=10520699, hh:=666 +835: w0 218453 h:=10520699+218453=10739152, hh:=680 +[ ] +836: set1 197("C5) h:=10739152+491520=11230672, hh:=711 +838: set1 191("BF) h:=11230672+491520=11722192, hh:=742 +840: w0 218453 h:=11722192+218453=11940645, hh:=756 +[ ] +841: fntnum1 current font is umin10 +842: set2 39003("985B) type=0 h:=11940645+630598=12571243, hh:=796 +845: right3 436906 h:=12571243+436906=13008149, hh:=824 +[顛 ] +849: fntnum0 current font is ec-lmr10 +850: set1 197("C5) h:=13008149+491520=13499669, hh:=855 +852: set1 191("BF) h:=13499669+491520=13991189, hh:=886 +854: w0 218453 h:=13991189+218453=14209642, hh:=900 +[ ] +855: fntnum1 current font is umin10 +856: set2 39003("985B) type=0 h:=14209642+630598=14840240, hh:=940 +859: w0 218453 h:=14840240+218453=15058693, hh:=954 +860: set2 12356("3044) type=0 h:=15058693+630598=15689291, hh:=994 +[顛 い] +863: fntnum0 current font is ec-lmr10 +864: set1 255("FF) h:=15689291+327680=16016971, hh:=1015 +866: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +867: y0 786432 v:=14024704+786432=14811136, vv:=938 +868: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +869: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +873: fntnum1 current font is umin10 +874: set2 12356("3044) type=0 h:=1310720+630598=1941318, hh:=123 +[い] +877: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +878: y0 786432 v:=14811136+786432=15597568, vv:=988 +879: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +880: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +884: fntnum0 current font is ec-lmr10 +885: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +886: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +887: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +888: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +889: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +890: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +891: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +892: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +893: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +894: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[.a...c.b..] +895: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +896: y0 786432 v:=15597568+786432=16384000, vv:=1038 +897: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +898: right3 1310720 h:=0+1310720=1310720, hh:=83 +902: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +903: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +904: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +905: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +906: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +907: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +908: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +909: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +910: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +911: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[ .a...c.b..] +912: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +913: y0 786432 v:=16384000+786432=17170432, vv:=1088 +914: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +915: push +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +916: fntnum1 current font is umin10 +917: set2 9632("25A0) type=0 h:=0+630598=630598, hh:=40 +[■] +920: pop +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +921: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +925: fntnum0 current font is ec-lmr10 +926: setchar99 ("63) h:=630598+291275=921873, hh:=58 +927: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +928: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +929: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +930: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +931: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +932: setchar50 ("32) h:=2709530+327680=3037210, hh:=192 +933: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname2.] +934: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +935: y0 786432 v:=17170432+786432=17956864, vv:=1137 +936: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +937: right3 1310720 h:=0+1310720=1310720, hh:=83 +941: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +942: setchar72 ("48) h:=1674805+491520=2166325, hh:=137 +943: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169 +944: right2 -18205 h:=2676063-18205=2657858, hh:=168 +947: setchar87 ("57) h:=2657858+673578=3331436, hh:=211 +948: right3 218453 h:=3331436+218453=3549889, hh:=225 +952: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237 +953: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249 +954: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261 +[ SHOW ...] +955: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +956: y0 786432 v:=17956864+786432=18743296, vv:=1187 +957: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +958: right3 1310720 h:=0+1310720=1310720, hh:=83 +962: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +963: setchar84 ("54) h:=1674805+473301=2148106, hh:=136 +964: setchar82 ("52) h:=2148106+482410=2630516, hh:=167 +965: setchar73 ("49) h:=2630516+236650=2867166, hh:=182 +966: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213 +967: setchar71 ("47) h:=3358686+514261=3872947, hh:=246 +968: right3 218453 h:=3872947+218453=4091400, hh:=259 +972: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280 +[ STRING \] +973: set1 197("C5) h:=4419080+491520=4910600, hh:=311 +975: set1 191("BF) h:=4910600+491520=5402120, hh:=342 +977: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354 +978: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375 +[.\] +979: fntnum1 current font is umin10 +980: set2 39003("985B) type=0 h:=5911843+630598=6542441, hh:=415 +[顛] +983: fntnum0 current font is ec-lmr10 +984: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427 +985: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448 +[.\] +986: set1 197("C5) h:=7052164+491520=7543684, hh:=479 +988: set1 191("BF) h:=7543684+491520=8035204, hh:=510 +990: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522 +991: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543 +[.\] +992: fntnum1 current font is umin10 +993: set2 39003("985B) type=0 h:=8544927+630598=9175525, hh:=583 +[顛] +996: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +997: y0 786432 v:=18743296+786432=19529728, vv:=1237 +998: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +999: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +1003: fntnum0 current font is ec-lmr10 +1004: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121 +1005: setchar69 ("45) h:=1911488+446005=2357493, hh:=149 +1006: setchar65 ("41) h:=2357493+491520=2849013, hh:=180 +1007: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211 +1008: setchar73 ("49) h:=3340533+236650=3577183, hh:=226 +1009: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257 +1010: setchar71 ("47) h:=4068703+514261=4582964, hh:=290 +1011: right3 218453 h:=4582964+218453=4801417, hh:=304 +1015: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339 +1016: setchar97 ("61) h:=5347528+327680=5675208, hh:=360 +1017: setchar99 ("63) h:=5675208+291275=5966483, hh:=378 +1018: setchar114 ("72) h:=5966483+256683=6223166, hh:=394 +1019: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415 +1020: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427 +1021: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441 +1022: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473 +1023: setchar97 ("61) h:=7461080+327680=7788760, hh:=494 +1024: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506 +1025: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541 +1026: setchar97 ("61) h:=8516914+327680=8844594, hh:=562 +1027: setchar99 ("63) h:=8844594+291275=9135869, hh:=580 +1028: setchar114 ("72) h:=9135869+256683=9392552, hh:=596 +1029: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617 +1030: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629 +1031: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643 +1032: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675 +1033: setchar98 ("62) h:=10630466+364085=10994551, hh:=698 +1034: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710 +1035: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745 +1036: setchar97 ("61) h:=11722705+327680=12050385, hh:=765 +1037: setchar99 ("63) h:=12050385+291275=12341660, hh:=783 +1038: setchar114 ("72) h:=12341660+256683=12598343, hh:=799 +1039: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820 +1040: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832 +1041: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846 +1042: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878 +1043: setchar97 ("61) h:=13836257+327680=14163937, hh:=899 +1044: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911 +1045: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945 +1046: setchar97 ("61) h:=14892091+327680=15219771, hh:=966 +1047: setchar99 ("63) h:=15219771+291275=15511046, hh:=984 +1048: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000 +1049: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021 +1050: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033 +1051: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047 +1052: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079 +1053: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102 +1054: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114 +[MEANING macro:->a.macro:->b.macro:->a.macro:->b.] +1055: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +1056: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1057: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1061: eop diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-prim.log b/Build/source/texk/web2c/euptexdir/tests/eup-prim.log new file mode 100644 index 00000000000..8e2c97d9459 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-prim.log @@ -0,0 +1,10 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-prim +(./eup-prim.tex +15: \^^c5^^93. \^^c5^^93. +18: \œ. \œ. +15: \^^c3^^a6. \^^c3^^a6. 195^^a6. +18: \æ. \æ. 230. ) +No pages of output. diff --git a/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex b/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex new file mode 100644 index 00000000000..46d936da5e7 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/eup-prim.tex @@ -0,0 +1,33 @@ +% Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +% You may freely use, modify and/or distribute this file. +% +\tracingmacros=2 +\tracingonline=1 +%---- +\newlinechar=10 + +%\catcode"0153=12 +\kcatcode"0153=15\relax +\message{^^J\the\kcatcode"153: + \string\œ. \expandafter\string\csname œ\endcsname. % + } + +\kcatcode"0153=18\relax +\message{^^J\the\kcatcode"153: + \string\œ. \expandafter\string\csname œ\endcsname. % + } + +%\catcode"E6=12 +\kcatcode"E6=15\relax +\message{^^J\the\kcatcode"E6: + \string\æ. \expandafter\string\csname æ\endcsname. % + \the\numexpr`\æ.} + +\kcatcode"E6=18\relax +\message{^^J\the\kcatcode"E6: + \string\æ. \expandafter\string\csname æ\endcsname. % + \the\numexpr`\æ.} +%---- +\setbox0=\vbox{} % no dvi output + +\end diff --git a/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log new file mode 100644 index 00000000000..05639d0ffdc --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.log @@ -0,0 +1,29 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-free_ixsp.tex +(./eup-free_ixsp.tex +\@tempcnta=\count26 +\@tempcntb=\count27 +\@tempcntc=\count28 +\CNT=\count29 +\CNTA=\count30 +0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. +22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. +41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. +60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. +79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. +98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. +114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. +129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. +144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. +159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. +174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. +189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. +204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. +219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. +234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. +249. 250. 251. 252. 253. 254. 255. +\CNTB=\count31 + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/free_ixsp.tex b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.tex index 9a3b2766415..4fb69d84406 100644 --- a/Build/source/texk/web2c/ptexdir/tests/free_ixsp.tex +++ b/Build/source/texk/web2c/euptexdir/tests/free_ixsp.tex @@ -1,7 +1,8 @@ %#!eptex -ini -etex -\let\dump\relax -\batchmode -\input plain +%\let\dump\relax +%\batchmode +%\input plain +\font\cmr=cmr10\cmr \errorstopmode \catcode`@=11 diff --git a/Build/source/texk/web2c/euptexdir/tests/free_pena.log b/Build/source/texk/web2c/euptexdir/tests/free_pena.log new file mode 100644 index 00000000000..73d7df615a4 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/free_pena.log @@ -0,0 +1,29 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-free_pena.tex +(./eup-free_pena.tex +\@tempcnta=\count26 +\@tempcntb=\count27 +\@tempcntc=\count28 +\CNT=\count29 +\CNTA=\count30 +0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. +22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. +41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. +60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. +79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. +98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. +114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. +129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. +144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. +159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. +174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. +189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. +204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. +219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. +234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. +249. 250. 251. 252. 253. 254. 255. +\CNTB=\count31 + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/free_pena.tex b/Build/source/texk/web2c/euptexdir/tests/free_pena.tex index 184720a80a2..f7d2b51bcad 100644 --- a/Build/source/texk/web2c/ptexdir/tests/free_pena.tex +++ b/Build/source/texk/web2c/euptexdir/tests/free_pena.tex @@ -1,7 +1,15 @@ %#!eptex -ini -etex -\let\dump\relax -\batchmode -\input plain +%\let\dump\relax +%\batchmode +%\input plain +\font\cmr=cmr10\cmr +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi \errorstopmode \catcode`@=11 diff --git a/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex b/Build/source/texk/web2c/euptexdir/tests/inhibitglue.tex index 2c76a9782a8..6dd55dbdadf 100644 --- a/Build/source/texk/web2c/ptexdir/tests/inhibitglue.tex +++ b/Build/source/texk/web2c/euptexdir/tests/inhibitglue.tex @@ -1,4 +1,14 @@ %#!ptex2pdf -e inhibitglue.tex +\font\cmr=cmr10\cmr +\font\tentt=cmtt10\tentt +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi + \parindent0pt \def\head#1{\par\noindent{\tentt ■\string#1}\par} \noautospacing \noautoxspacing @@ -82,13 +92,13 @@ あ)\adj\inhibitglue\adj (あ\par % 全角【TL17二分】 あ)\adj (あ\par % 全角 -\head{\math} -\def\math{$ $} -あ)\inhibitglue (あ\par % ベタ -あ)\inhibitglue\math (あ\par % 二分 -あ)\math\inhibitglue (あ\par % 二分 -あ)\math\inhibitglue\math (あ\par % 全角【TL17二分】 -あ)\math (あ\par % 全角 +%\head{\math} +%\def\math{$ $} +%あ)\inhibitglue (あ\par % ベタ +%あ)\inhibitglue\math (あ\par % 二分 +%あ)\math\inhibitglue (あ\par % 二分 +%あ)\math\inhibitglue\math (あ\par % 全角【TL17二分】 +%あ)\math (あ\par % 全角 %%% unexpandable tokens with discardable nodes (glue, kern, penalty) diff --git a/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log b/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log new file mode 100644 index 00000000000..c919554f580 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/jctrlsym.log @@ -0,0 +1,85 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-jctrlsym.tex +(./eup-jctrlsym.tex +■control symbol +> \X=macro: +->\+. +l.27 \show\X + \relax\message{(\meaning\X)} + +(macro:->\+) +> \Y=macro: +->\+. +l.28 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\+) ■control word +> \X=macro: +->\+ . +l.39 \show\X + \relax\message{(\meaning\X)} + +(macro:->\+ ) +> \Y=macro: +->\+ . +l.40 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\+ ) ■control word +> \X=macro: +->\ABC . +l.48 \show\X + \relax\message{(\meaning\X)} + +(macro:->\ABC ) +> \Y=macro: +->\あいう . +l.49 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\あいう ) ■csname +> \X=macro: +->\:AB . +l.62 \show\X + \relax\message{(\meaning\X)} + +(macro:->\:AB ) +> \Y=macro: +->\!あい . +l.63 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\!あい ) +> \X=macro: +->\AB: . +l.69 \show\X + \relax\message{(\meaning\X)} + +(macro:->\AB: ) +> \Y=macro: +->\あい! . +l.70 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\あい! ) ■not_cjk +> \X=macro: +->\^^e3^^82^^a2 . +l.81 \show\X + \relax\message{(\meaning\X)} + +(macro:->\^^e3^^82^^a2 ) +> \Y=macro: +->\^^ef^^bc^^81 . +l.82 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\^^ef^^bc^^81 ) ■行末の和文^^e3^^82^^b3^^e3^^83^^b3^^e3^^83^^88 +^^e3^^83^^ad^^e3^^83^^bc^^e3^^83^^ab^^e3^^82^^b7^^e3^^83^^b3^^e3^^83^^9c^^e3^^8 +3^^ab +Missing character: There is no ^^ef in font cmr10! +Missing character: There is no ^^bc in font cmr10! +Missing character: There is no ^^8c in font cmr10! + [1] ) +Output written on eup-jctrlsym.dvi (1 page, 372 bytes). diff --git a/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log new file mode 100644 index 00000000000..be8dbe27583 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.log @@ -0,0 +1,84 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-kinsoku_search.tex +(./eup-kinsoku_search.tex{into \tracingassigns=1} +{changing kinsoku table 1, type=no, code=0} +{into kinsoku table 1, type=pre, code=12289} +{changing kinsoku table 1, penalty=0} +{into kinsoku table 1, penalty=10000} +{changing kinsoku table 2, type=no, code=0} +{into kinsoku table 2, type=pre, code=12290} +{changing kinsoku table 2, penalty=0} +{into kinsoku table 2, penalty=10000} +{changing kinsoku table 3, type=no, code=0} +{into kinsoku table 3, type=pre, code=12353} +{changing kinsoku table 3, penalty=0} +{into kinsoku table 3, penalty=150} +{changing kinsoku table 4, type=no, code=0} +{into kinsoku table 4, type=pre, code=12355} +{changing kinsoku table 4, penalty=0} +{into kinsoku table 4, penalty=150} +> 0. +l.11 \showthe\currentgrouplevel + % > 0. + +> 150. +l.12 \showthe\prebreakpenalty`ぃ + % > 150. + +{changing kinsoku table 4, type=pre, code=12355} +{into kinsoku table 4, type=unused, code=0} +> 0. +l.15 \showthe\prebreakpenalty`ぃ + % > 0. ← OK(hash=4読出) + +{changing kinsoku table 4, type=unused, code=0} +{into kinsoku table 4, type=pre, code=12355} +{changing kinsoku table 4, penalty=150} +{into kinsoku table 4, penalty=123} +> 123. +l.18 \showthe\prebreakpenalty`ぃ + % > 123. ← OK(hash=4読出) + +{changing kinsoku table 3, type=pre, code=12353} +{into kinsoku table 3, type=unused, code=0} +> 123. +l.21 \showthe\prebreakpenalty`ぃ + % > 123. ← OK(hash=4読出) + +{changing kinsoku table 4, type=pre, code=12355} +{into kinsoku table 4, type=unused, code=0} +> 0. +l.27 \showthe\prebreakpenalty`ぃ + % > 0. ← 修正(削除済み) + +{changing kinsoku table 3, type=unused, code=0} +{into kinsoku table 3, type=pre, code=12355} +{changing kinsoku table 3, penalty=150} +{into kinsoku table 3, penalty=234} +> 234. +l.30 \showthe\prebreakpenalty`ぃ + % > 234. ← OK(hash=3読出) + +{changing kinsoku table 3, type=pre, code=12355} +{into kinsoku table 3, type=unused, code=0} +> 0. +l.33 \showthe\prebreakpenalty`ぃ + % > 0. ← 修正(削除済み) + +{changing kinsoku table 3, type=unused, code=0} +{into kinsoku table 3, type=pre, code=12353} +{changing kinsoku table 3, penalty=234} +{into kinsoku table 3, penalty=345} +> 0. +l.36 \showthe\prebreakpenalty`ぃ + % > 0. ← 修正(削除済み) + +{reassigning kinsoku table 4, type=unused, code=0} +> 0. +l.41 \showthe\prebreakpenalty`ぃ + % > 0. ← OK(削除済み) + + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/kinsoku_search.tex b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.tex index e59445e7d9c..e59445e7d9c 100644 --- a/Build/source/texk/web2c/ptexdir/tests/kinsoku_search.tex +++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_search.tex diff --git a/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log new file mode 100644 index 00000000000..46968151697 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.log @@ -0,0 +1,38 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-kinsoku_table.tex +(./eup-kinsoku_table.tex +\fuga=\count26 +\dflt=\count27 + +\hoge=\count28 +12288 12291 12294 12297 12300 12303 12306 12309 12312 12315 12318 12321 12324 +12327 12330 12333 12336 12339 12342 12345 12348 12351 12354 12357 12360 12363 +12366 12369 12372 12375 12378 12381 12384 12387 12390 12393 12396 12399 12402 +12405 12408 12411 12414 12417 12420 12423 12426 12429 12432 12435 12438 12441 +12444 12447 12450 12453 12456 12459 12462 12465 12468 12471 12474 12477 12480 +12483 12486 12489 12492 12495 12498 12501 12504 12507 12510 12513 12516 12519 +12522 12525 12528 12531 12534 12537 12540 12543 12546 12549 12552 12555 12558 +12561 12564 12567 12570 12573 12576 12579 12582 12585 12588 12591 12594 12597 +12600 12603 12606 12609 12612 12615 12618 12621 12624 12627 12630 12633 12636 +12639 12642 12645 12648 12651 12654 12657 12660 12663 12666 12669 12672 12675 +12678 12681 12684 12687 12690 12693 12696 12699 12702 12705 12708 12711 12714 +12717 12720 12723 12726 12729 12732 12735 12738 12741 12744 12747 12750 12753 +12756 12759 12762 12765 12768 12771 12774 12777 12780 12783 12786 12789 12792 +12795 12798 12801 12804 12807 12810 12813 12816 12819 12822 12825 12828 12831 +12834 12837 12840 12843 12846 12849 12852 12855 12858 12861 12864 12867 12870 +12873 12876 12879 12882 12885 12888 12891 12894 12897 12900 12903 12906 12909 +12912 12915 12918 12921 12924 12927 12930 12933 12936 12939 12942 12945 12948 +12951 12954 12957 12960 12963 12966 12969 12972 12975 12978 12981 12984 12987 +12990 12993 12996 12999 13002 13005 13008 13011 13014 13017 13020 13023 13026 +13029 13032 13035 13038 13041 13044 13047 13050 13053 <2, 0> +! KINSOKU table is full!!. +<to be read again> + \relax +l.23 \global\prebreakpenalty"4000=1\relax + % error +I'm skipping this control sequences. + +<0, 0> <2, 0> <0, 1> <0, 0> <0, 1, 0> <0, 0, 1> ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/kinsoku_table.tex b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.tex index 52b21fdbf86..a064af9fc41 100644 --- a/Build/source/texk/web2c/ptexdir/tests/kinsoku_table.tex +++ b/Build/source/texk/web2c/euptexdir/tests/kinsoku_table.tex @@ -1,6 +1,7 @@ %#!uptex -ini -\let\dump\relax -\input plain +%\let\dump\relax +%\input plain + \newcount\fuga\newcount\dflt \fuga="3300 \iffalse diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-e.log b/Build/source/texk/web2c/euptexdir/tests/pknj-e.log new file mode 100644 index 00000000000..a38e4fec2ff --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/pknj-e.log @@ -0,0 +1,224 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**printkanji +(./printkanji.tex +\openout1 = `eup-pknj-e.out'. + + +{MSG ^^c5^^bf ^^c5^^bf 顛 } +{TOT ^^c5^^bf ^^c5^^bf 顛 } +> \A=macro: +->^^c5^^bf ^^c5^^bf 顛 . +l.29 \show\A + + +■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +> \B=macro: +->macro:->^^c5^^bf ^^c5^^bf 顛 . +l.40 \show\B + + +■\jobname. {MSG *あ*eup-pknj-e*:eup-pknj-e:*macro:->:eup-pknj-e:*} +{TOT *あ*eup-pknj-e*:eup-pknj-e:*macro:->:eup-pknj-e:*} + +■oneletter. {MSG \catcode`\^^c5= 197} +{TOT \catcode`\^^c5= 197} +{MSG \catcode`^^c5 = 197} +{TOT \catcode`^^c5 = 197} +{MSG \catcode`^^c5^^bf = 197} +{TOT \catcode`^^c5^^bf = 197} +{MSG \catcode`顛 = 50623} +{TOT \catcode`顛 = 50623} +■csname1. +> \顛=macro: +->hoge. +l.72 \show\顛 + + +> \^^c5^^bf=macro: +->piyo. +l.73 \show\^^c5^^bf + + +> \^^c5^^bf=macro: +->piyo. +<recently read> \^^c5^^bf + +l.74 \expandafter\show\csname ^^c5^^bf\endcsname + + +{MSG \顛=>macro:->hoge} +{TOT \顛=>macro:->hoge} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} +{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} + +{MSG \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. } +{TOT \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. } +■0xFF. +{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +■contexts. +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1 + \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ... +l.136 \+\a + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a + \^^ff ^^ff\^^c5^^bf +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5 + \^^ff\^^c4\^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4 + \^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4\^^fe + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +\^^c5^^bf\^^ff^^c5 +! Undefined control sequence. +\b ->\^^c5^^be + .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd + ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 + . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be + .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd + ..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼 + . +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +■csname2. +> \^^c5^^bf=macro: +->a. +l.162 SHOW \show\^^c5^^bf + .\show\顛.% + +> \顛=macro: +->b. +l.162 SHOW \show\^^c5^^bf.\show\顛 + .% + +> \^^c5^^bf=macro: +->a. +<recently read> \^^c5^^bf + +l.163 \expandafter\show\csname ^^c5^^bf\endcsname + .% + +> \顛=macro: +->b. +<recently read> \顛 + +l.164 \expandafter\show\csname 顛\endcsname + + +\^^e3^^81^^82\あ [50623] +Memory usage before: 1790&5515; after: 130&5080; still untouched: 4992452 + ) +Here is how much of TeX's memory you used: + 25 strings out of 497XXX + 143 string characters out of 6215XXX + 7548 words of memory out of 5000000 + 1090 multiletter control sequences out of 15000+600000 + 3271 words of font info for 2 fonts, out of 8000000 for 9000 + 0 hyphenation exceptions out of 8191 + 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on eup-pknj-e.dvi (1 page, 1140 bytes). diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-s.log b/Build/source/texk/web2c/euptexdir/tests/pknj-s.log new file mode 100644 index 00000000000..4fea4e53a4a --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/pknj-s.log @@ -0,0 +1,224 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**printkanji +(./printkanji.tex +\openout1 = `eup-pknj-s.out'. + + +{MSG ^^c5^^bf ^^c5^^bf 顛 } +{TOT ^^c5^^bf ^^c5^^bf 顛 } +> \A=macro: +->^^c5^^bf ^^c5^^bf 顛 . +l.29 \show\A + + +■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +> \B=macro: +->macro:->^^c5^^bf ^^c5^^bf 顛 . +l.40 \show\B + + +■\jobname. {MSG *あ*eup-pknj-s*:eup-pknj-s:*macro:->:eup-pknj-s:*} +{TOT *あ*eup-pknj-s*:eup-pknj-s:*macro:->:eup-pknj-s:*} + +■oneletter. {MSG \catcode`\^^c5= 197} +{TOT \catcode`\^^c5= 197} +{MSG \catcode`^^c5 = 197} +{TOT \catcode`^^c5 = 197} +{MSG \catcode`^^c5^^bf = 197} +{TOT \catcode`^^c5^^bf = 197} +{MSG \catcode`顛 = 37726} +{TOT \catcode`顛 = 37726} +■csname1. +> \顛=macro: +->hoge. +l.72 \show\顛 + + +> \^^c5^^bf=macro: +->piyo. +l.73 \show\^^c5^^bf + + +> \^^c5^^bf=macro: +->piyo. +<recently read> \^^c5^^bf + +l.74 \expandafter\show\csname ^^c5^^bf\endcsname + + +{MSG \顛=>macro:->hoge} +{TOT \顛=>macro:->hoge} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} +{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} + +{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +■0xFF. +{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +■contexts. +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1 + \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ... +l.136 \+\a + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a + \^^ff ^^ff\^^c5^^bf +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5 + \^^ff\^^c4\^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4 + \^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4\^^fe + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +\^^c5^^bf\^^ff^^c5 +! Undefined control sequence. +\b ->\^^c5^^be + .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd + ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 + . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be + .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd + ..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼 + . +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +■csname2. +> \^^c5^^bf=macro: +->a. +l.162 SHOW \show\^^c5^^bf + .\show\顛.% + +> \顛=macro: +->b. +l.162 SHOW \show\^^c5^^bf.\show\顛 + .% + +> \^^c5^^bf=macro: +->a. +<recently read> \^^c5^^bf + +l.163 \expandafter\show\csname ^^c5^^bf\endcsname + .% + +> \顛=macro: +->b. +<recently read> \顛 + +l.164 \expandafter\show\csname 顛\endcsname + + +\^^e3^^81^^82\あ [37726] +Memory usage before: 1798&5518; after: 130&5081; still untouched: 4992449 + ) +Here is how much of TeX's memory you used: + 24 strings out of 497XXX + 141 string characters out of 6215XXX + 7551 words of memory out of 5000000 + 1089 multiletter control sequences out of 15000+600000 + 3271 words of font info for 2 fonts, out of 8000000 for 9000 + 0 hyphenation exceptions out of 8191 + 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on eup-pknj-s.dvi (1 page, 1148 bytes). diff --git a/Build/source/texk/web2c/euptexdir/tests/pknj-u.log b/Build/source/texk/web2c/euptexdir/tests/pknj-u.log new file mode 100644 index 00000000000..f456fc4c18e --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/pknj-u.log @@ -0,0 +1,224 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**printkanji +(./printkanji.tex +\openout1 = `eup-pknj-u.out'. + + +{MSG ^^c5^^bf ^^c5^^bf 顛 } +{TOT ^^c5^^bf ^^c5^^bf 顛 } +> \A=macro: +->^^c5^^bf ^^c5^^bf 顛 . +l.29 \show\A + + +■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +> \B=macro: +->macro:->^^c5^^bf ^^c5^^bf 顛 . +l.40 \show\B + + +■\jobname. {MSG *あ*eup-pknj-u*:eup-pknj-u:*macro:->:eup-pknj-u:*} +{TOT *あ*eup-pknj-u*:eup-pknj-u:*macro:->:eup-pknj-u:*} + +■oneletter. {MSG \catcode`\^^c5= 197} +{TOT \catcode`\^^c5= 197} +{MSG \catcode`^^c5 = 197} +{TOT \catcode`^^c5 = 197} +{MSG \catcode`^^c5^^bf = 197} +{TOT \catcode`^^c5^^bf = 197} +{MSG \catcode`顛 = 39003} +{TOT \catcode`顛 = 39003} +■csname1. +> \顛=macro: +->hoge. +l.72 \show\顛 + + +> \^^c5^^bf=macro: +->piyo. +l.73 \show\^^c5^^bf + + +> \^^c5^^bf=macro: +->piyo. +<recently read> \^^c5^^bf + +l.74 \expandafter\show\csname ^^c5^^bf\endcsname + + +{MSG \顛=>macro:->hoge} +{TOT \顛=>macro:->hoge} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} +{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} + +{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +■0xFF. +{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf +:macro:->あ).} +{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf +:macro:->あ).} +{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +■contexts. +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1 + \^^ff macro:->^^c5^^bf ^^c5^^bf ... +l.136 \+\a + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +l.138 ...^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a + \^^ff ^^ff\^^c5^^bf +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5 + \^^ff\^^c4\^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4 + \^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4\^^fe + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +\^^c5^^bf\^^ff^^c5 +! Undefined control sequence. +\b ->\^^c5^^be + .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd + ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ...be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 + . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be + .\ſ.\Ž..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd + ..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 ...5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼 + . +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +■csname2. +> \^^c5^^bf=macro: +->a. +l.162 SHOW \show\^^c5^^bf + .\show\顛.% + +> \顛=macro: +->b. +l.162 SHOW \show\^^c5^^bf.\show\顛 + .% + +> \^^c5^^bf=macro: +->a. +<recently read> \^^c5^^bf + +l.163 \expandafter\show\csname ^^c5^^bf\endcsname + .% + +> \顛=macro: +->b. +<recently read> \顛 + +l.164 \expandafter\show\csname 顛\endcsname + + +\^^e3^^81^^82\あ [39003] +Memory usage before: 1798&5518; after: 130&5081; still untouched: 4992449 + ) +Here is how much of TeX's memory you used: + 24 strings out of 497XXX + 146 string characters out of 6215XXX + 7551 words of memory out of 5000000 + 1089 multiletter control sequences out of 15000+600000 + 3297 words of font info for 2 fonts, out of 8000000 for 9000 + 0 hyphenation exceptions out of 8191 + 6i,4n,2p,97b,26s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on eup-pknj-u.dvi (1 page, 1148 bytes). diff --git a/Build/source/texk/web2c/euptexdir/tests/postpena.log b/Build/source/texk/web2c/euptexdir/tests/postpena.log new file mode 100644 index 00000000000..6924c21fe99 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/postpena.log @@ -0,0 +1,43 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-postpena.tex +(./eup-postpena.tex + +### yoko direction, restricted horizontal mode entered at line 15 +\displace 0.0 +\jpy # +\penalty 200(for kinsoku) +\jpy 」 +\glue(refer from jfm) 4.58203 minus 2.291 +\jpy 「 +\penalty -1000 +spacefactor 1000 +### yoko direction, vertical mode entered at line 0 +prevdepth ignored + +! OK. +<recently read> \showlists + +l.15 ...ox0=\hbox{#」「\penalty-1000\showlists + } + + +### yoko direction, restricted horizontal mode entered at line 18 +\displace 0.0 +\jpy # +\jpy 」 +\glue(refer from jfm) 4.58203 minus 2.291 +\cmr a +\penalty 200(for kinsoku) +\jpy あ +spacefactor 1000 +### yoko direction, vertical mode entered at line 0 +prevdepth ignored + +! OK. +l.18 ...box{#\unpenalty 」a\relax あ\showlists + } + + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/postpena.tex b/Build/source/texk/web2c/euptexdir/tests/postpena.tex index 74f93a1f071..3605fe0c0b3 100644 --- a/Build/source/texk/web2c/ptexdir/tests/postpena.tex +++ b/Build/source/texk/web2c/euptexdir/tests/postpena.tex @@ -1,4 +1,12 @@ %% plain pTeX +\font\cmr=cmr10\cmr +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi \postbreakpenalty`#=200 \postbreakpenalty`a=200 \showboxdepth10000 diff --git a/Build/source/texk/web2c/euptexdir/tests/printkanji.tex b/Build/source/texk/web2c/euptexdir/tests/printkanji.tex new file mode 100644 index 00000000000..d176d9a53bf --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/printkanji.tex @@ -0,0 +1,176 @@ +%\scrollmode +\tracingstats=1000 +\noautoxspacing +\newlinechar=`\^^J +\font\x=ec-lmr10 \x +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi + + +\immediate\openout1=\jobname.out +\def\MSG#1{% + \message{\string{MSG #1\string}}% + \immediate\write17{\string{TOT #1\string}}% + \immediate\write1{#1}% +} +\def\head#1{\message{■#1.}\par\noindent\hbox{■\null}#1.\par} +\message{^^J} + +%================ +\def\A{^^c5^^bf ſ 顛 } +A: \A + +\MSG{\A} +\show\A + +%================ +\par +\head{\string\meaning} + +\edef\B{\meaning\A} +\meaning\B + +\B +\MSG{\meaning\B} +\show\B + +%================ +\head{\string\jobname} +\edef\C{:\jobname:} +\MSG{*あ*\jobname *\C*\meaning\C*} +\message{^^J} + +%================ +\catcode`\^^c5=11 +\catcode`\^^bf=11 +\catcode`\^^e1=11 +\catcode`\^^e3=11 +\catcode`\^^81=11 +\catcode`\^^82=11 + +\head{oneletter} + +\string\^^c4.\string\^^c5.\string\^^ff. +\count0=`\^^c5% +\MSG{\string\catcode`\string\^^c5 = \the\count0}% +\count0=`^^c5% +\MSG{\string\catcode`^^c5 = \the\count0}% +\count0=`^^c5^^bf% +\MSG{\string\catcode`^^c5^^bf = \the\count0}% +\count0=`顛% +\MSG{\string\catcode`顛 = \the\count0}% + +%================ +\head{csname1} + +{\def\顛{hoge}\def\^^c5^^bf{piyo} +\show\顛 +\show\^^c5^^bf +\expandafter\show\csname ^^c5^^bf\endcsname +\MSG{\string\顛=>\meaning\顛} +\MSG{\string\^^c5^^bf=>\meaning\^^c5^^bf} +\MSG{\expandafter\string\csname ^^c5^^bf\endcsname + =>\expandafter\meaning\csname ^^c5^^bf\endcsname}} + +\string\^^c5^^bf +\expandafter\string\csname ^^c5^^bf\endcsname, +\expandafter\string\csname ſ\endcsname, +\expandafter\string\csname 顛\endcsname +\MSG{\string\^^c5^^bf, + \expandafter\string\csname ^^c5^^bf\endcsname, + \expandafter\string\csname ſ\endcsname, + \expandafter\string\csname 顛\endcsname.} + +%================ + +\def\あ{hoge} +\message{^^J} +\def\TEST#1#2{% + \expandafter\def\csname#2\endcsname{piyo} + \par\toks0={#2} + \expandafter\string\csname #1\endcsname => \csname #1\endcsname,\par + \expandafter\string\csname #2\endcsname => \csname #2\endcsname,\par + \expandafter\string\csname \the\toks0\endcsname => \csname \the\toks0\endcsname. + \MSG{% + \expandafter\string\csname #1\endcsname => \csname #1\endcsname, + \expandafter\string\csname #2\endcsname => \csname #2\endcsname. + \expandafter\string\csname \the\toks0\endcsname => \csname \the\toks0\endcsname. + }% +} +\ifnum\euc"A4A2="A4A2\relax + \TEST{あ}{^^a4^^a2} +\else + \TEST{あ}{^^e3^^81^^82} +\fi + +%================ +\head{0xFF} +\catcode"FF=11 +\message{^^J} + +\def\^^ff^^c5^^ff^^bf{あ} +\edef\E{(\string\^^ff^^c5^^ff^^bf:\meaning\^^ff^^c5^^ff^^bf)} +\^^ff^^c5^^ff^^bf, \E, \string\^^ff^^c5^^ff^^bf, \meaning\E. +\MSG{\^^ff^^c5^^ff^^bf, \A, \string\^^ff^^c5^^ff^^bf, \meaning\E.} + +\def\^^ff{い} +\edef\E{(\string\^^ff :\meaning\^^ff)} +\^^ff, \E, \string\^^ff, \meaning\E. +\MSG{\^^ff, \E, \string\^^ff, \meaning\E.} + +\immediate\closeout1 + +%======== +\head{contexts} + +\errorcontextlines=10000 +\def\@{\A\undefined} +\edef\a{^^c5^^bf a\A\noexpand\@ ſ 顛 } +\edef\+#1{\noexpand\^^c5^^bf\noexpand\顛\noexpand\^^ff^^c5^^ff^^bf#1 + \noexpand\^^ff\meaning\A\noexpand\^^c5^^bf\noexpand\顛} +\+\a + +\^^ff^^c5^^ff^^bf ^^c5^^bf \^^c5^^bf ſ顛\a \^^ff ^^ff\^^c5^^bf + +\^^c5\^^ff\^^c4\^^fe + +\catcode`\^^c5=11 +\catcode`\^^be=11 +\catcode`\^^bf=11 +\catcode`\^^bd=11 +\catcode`\^^ff=11 + +\def\^^c5^^bf{a} +\def\顛{b} +\def\転{c} +\message{\string\^^c5^^bf \string\^^ff^^c5} + +\def\b{\ž.\ſ.\Ž..\転.\顛.\貼.} +\b + +\ž.\ſ.\Ž..\転.\顛.\貼. + + +%======== +\head{csname2} + +SHOW \show\ſ.\show\顛.% +\expandafter\show\csname ſ\endcsname.% +\expandafter\show\csname 顛\endcsname + +STRING \string\ſ.\string\顛.% +\expandafter\string\csname ſ\endcsname.% +\expandafter\string\csname 顛\endcsname + +MEANING \meaning\ſ.\meaning\顛.% +\expandafter\meaning\csname ſ\endcsname.% +\expandafter\meaning\csname 顛\endcsname.% + +\message{\string\^^e3^^81^^82 \string\あ} + +\end diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-e.log b/Build/source/texk/web2c/euptexdir/tests/ucs-e.log new file mode 100644 index 00000000000..684d2af0fa6 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/ucs-e.log @@ -0,0 +1,29 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-ucs +(./eup-ucs.tex +<EUC> +\ucs. +\cntA=\count26 +162: 41457(¢) +163: 41458(£) +165: 41455(¥) +167: 41464(§) +168: 41391(¨) +172: 41676(¬) +176: 41451(°) +177: 41438(±) +180: 41389(´) +182: 41721(¶) +215: 41439(×) +247: 41440(÷) +\toucs. +-1, -1, -1, -1, -1 +-1, 34821, 34722 +12354, 29081, -1 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 + ) +No pages of output. diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-s.log b/Build/source/texk/web2c/euptexdir/tests/ucs-s.log new file mode 100644 index 00000000000..a8255446072 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/ucs-s.log @@ -0,0 +1,29 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-ucs +(./eup-ucs.tex +<SJIS> +\ucs. +\cntA=\count26 +162: 33169(¢) +163: 33170(£) +165: 33167(¥) +167: 33176(§) +168: 33102(¨) +172: 33226(¬) +176: 33163(°) +177: 33149(±) +180: 33100(´) +182: 33271(¶) +215: 33150(×) +247: 33152(÷) +\toucs. +-1, -1, -1, -1, -1 +12450, 29081, -1 +-1, -1, -1 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 + ) +No pages of output. diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs-u.log b/Build/source/texk/web2c/euptexdir/tests/ucs-u.log new file mode 100644 index 00000000000..c4dfe33b080 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/ucs-u.log @@ -0,0 +1,529 @@ +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**eup-ucs +(./eup-ucs.tex +<uptex> +\ucs. +\cntA=\count26 +0: 0(^^@) +1: 1(^^A) +2: 2(^^B) +3: 3(^^C) +4: 4(^^D) +5: 5(^^E) +6: 6(^^F) +7: 7(^^G) +8: 8(^^H) +9: 9(^^I) +10: 10(^^J) +11: 11(^^K) +12: 12(^^L) +13: 13(^^M) +14: 14(^^N) +15: 15(^^O) +16: 16(^^P) +17: 17(^^Q) +18: 18(^^R) +19: 19(^^S) +20: 20(^^T) +21: 21(^^U) +22: 22(^^V) +23: 23(^^W) +24: 24(^^X) +25: 25(^^Y) +26: 26(^^Z) +27: 27(^^[) +28: 28(^^\) +29: 29(^^]) +30: 30(^^^) +31: 31(^^_) +32: 32( ) +33: 33(!) +34: 34(") +35: 35(#) +36: 36($) +37: 37(%) +38: 38(&) +39: 39(') +40: 40(() +41: 41()) +42: 42(*) +43: 43(+) +44: 44(,) +45: 45(-) +46: 46(.) +47: 47(/) +48: 48(0) +49: 49(1) +50: 50(2) +51: 51(3) +52: 52(4) +53: 53(5) +54: 54(6) +55: 55(7) +56: 56(8) +57: 57(9) +58: 58(:) +59: 59(;) +60: 60(<) +61: 61(=) +62: 62(>) +63: 63(?) +64: 64(@) +65: 65(A) +66: 66(B) +67: 67(C) +68: 68(D) +69: 69(E) +70: 70(F) +71: 71(G) +72: 72(H) +73: 73(I) +74: 74(J) +75: 75(K) +76: 76(L) +77: 77(M) +78: 78(N) +79: 79(O) +80: 80(P) +81: 81(Q) +82: 82(R) +83: 83(S) +84: 84(T) +85: 85(U) +86: 86(V) +87: 87(W) +88: 88(X) +89: 89(Y) +90: 90(Z) +91: 91([) +92: 92(\) +93: 93(]) +94: 94(^) +95: 95(_) +96: 96(`) +97: 97(a) +98: 98(b) +99: 99(c) +100: 100(d) +101: 101(e) +102: 102(f) +103: 103(g) +104: 104(h) +105: 105(i) +106: 106(j) +107: 107(k) +108: 108(l) +109: 109(m) +110: 110(n) +111: 111(o) +112: 112(p) +113: 113(q) +114: 114(r) +115: 115(s) +116: 116(t) +117: 117(u) +118: 118(v) +119: 119(w) +120: 120(x) +121: 121(y) +122: 122(z) +123: 123({) +124: 124(|) +125: 125(}) +126: 126(~) +127: 127(^^?) +128: 128(^^80) +129: 129(^^81) +130: 130(^^82) +131: 131(^^83) +132: 132(^^84) +133: 133(^^85) +134: 134(^^86) +135: 135(^^87) +136: 136(^^88) +137: 137(^^89) +138: 138(^^8a) +139: 139(^^8b) +140: 140(^^8c) +141: 141(^^8d) +142: 142(^^8e) +143: 143(^^8f) +144: 144(^^90) +145: 145(^^91) +146: 146(^^92) +147: 147(^^93) +148: 148(^^94) +149: 149(^^95) +150: 150(^^96) +151: 151(^^97) +152: 152(^^98) +153: 153(^^99) +154: 154(^^9a) +155: 155(^^9b) +156: 156(^^9c) +157: 157(^^9d) +158: 158(^^9e) +159: 159(^^9f) +160: 160(^^a0) +161: 161(^^a1) +162: 162(^^a2) +163: 163(^^a3) +164: 164(^^a4) +165: 165(^^a5) +166: 166(^^a6) +167: 167(^^a7) +168: 168(^^a8) +169: 169(^^a9) +170: 170(^^aa) +171: 171(^^ab) +172: 172(^^ac) +173: 173(^^ad) +174: 174(^^ae) +175: 175(^^af) +176: 176(^^b0) +177: 177(^^b1) +178: 178(^^b2) +179: 179(^^b3) +180: 180(^^b4) +181: 181(^^b5) +182: 182(^^b6) +183: 183(^^b7) +184: 184(^^b8) +185: 185(^^b9) +186: 186(^^ba) +187: 187(^^bb) +188: 188(^^bc) +189: 189(^^bd) +190: 190(^^be) +191: 191(^^bf) +192: 192(^^c0) +193: 193(^^c1) +194: 194(^^c2) +195: 195(^^c3) +196: 196(^^c4) +197: 197(^^c5) +198: 198(^^c6) +199: 199(^^c7) +200: 200(^^c8) +201: 201(^^c9) +202: 202(^^ca) +203: 203(^^cb) +204: 204(^^cc) +205: 205(^^cd) +206: 206(^^ce) +207: 207(^^cf) +208: 208(^^d0) +209: 209(^^d1) +210: 210(^^d2) +211: 211(^^d3) +212: 212(^^d4) +213: 213(^^d5) +214: 214(^^d6) +215: 215(^^d7) +216: 216(^^d8) +217: 217(^^d9) +218: 218(^^da) +219: 219(^^db) +220: 220(^^dc) +221: 221(^^dd) +222: 222(^^de) +223: 223(^^df) +224: 224(^^e0) +225: 225(^^e1) +226: 226(^^e2) +227: 227(^^e3) +228: 228(^^e4) +229: 229(^^e5) +230: 230(^^e6) +231: 231(^^e7) +232: 232(^^e8) +233: 233(^^e9) +234: 234(^^ea) +235: 235(^^eb) +236: 236(^^ec) +237: 237(^^ed) +238: 238(^^ee) +239: 239(^^ef) +240: 240(^^f0) +241: 241(^^f1) +242: 242(^^f2) +243: 243(^^f3) +244: 244(^^f4) +245: 245(^^f5) +246: 246(^^f6) +247: 247(^^f7) +248: 248(^^f8) +249: 249(^^f9) +250: 250(^^fa) +251: 251(^^fb) +252: 252(^^fc) +253: 253(^^fd) +254: 254(^^fe) +255: 255(^^ff) +\toucs. +0: 0 +1: 1 +2: 2 +3: 3 +4: 4 +5: 5 +6: 6 +7: 7 +8: 8 +9: 9 +10: 10 +11: 11 +12: 12 +13: 13 +14: 14 +15: 15 +16: 16 +17: 17 +18: 18 +19: 19 +20: 20 +21: 21 +22: 22 +23: 23 +24: 24 +25: 25 +26: 26 +27: 27 +28: 28 +29: 29 +30: 30 +31: 31 +32: 32 +33: 33 +34: 34 +35: 35 +36: 36 +37: 37 +38: 38 +39: 39 +40: 40 +41: 41 +42: 42 +43: 43 +44: 44 +45: 45 +46: 46 +47: 47 +48: 48 +49: 49 +50: 50 +51: 51 +52: 52 +53: 53 +54: 54 +55: 55 +56: 56 +57: 57 +58: 58 +59: 59 +60: 60 +61: 61 +62: 62 +63: 63 +64: 64 +65: 65 +66: 66 +67: 67 +68: 68 +69: 69 +70: 70 +71: 71 +72: 72 +73: 73 +74: 74 +75: 75 +76: 76 +77: 77 +78: 78 +79: 79 +80: 80 +81: 81 +82: 82 +83: 83 +84: 84 +85: 85 +86: 86 +87: 87 +88: 88 +89: 89 +90: 90 +91: 91 +92: 92 +93: 93 +94: 94 +95: 95 +96: 96 +97: 97 +98: 98 +99: 99 +100: 100 +101: 101 +102: 102 +103: 103 +104: 104 +105: 105 +106: 106 +107: 107 +108: 108 +109: 109 +110: 110 +111: 111 +112: 112 +113: 113 +114: 114 +115: 115 +116: 116 +117: 117 +118: 118 +119: 119 +120: 120 +121: 121 +122: 122 +123: 123 +124: 124 +125: 125 +126: 126 +127: 127 +128: 128 +129: 129 +130: 130 +131: 131 +132: 132 +133: 133 +134: 134 +135: 135 +136: 136 +137: 137 +138: 138 +139: 139 +140: 140 +141: 141 +142: 142 +143: 143 +144: 144 +145: 145 +146: 146 +147: 147 +148: 148 +149: 149 +150: 150 +151: 151 +152: 152 +153: 153 +154: 154 +155: 155 +156: 156 +157: 157 +158: 158 +159: 159 +160: 160 +161: 161 +162: 162 +163: 163 +164: 164 +165: 165 +166: 166 +167: 167 +168: 168 +169: 169 +170: 170 +171: 171 +172: 172 +173: 173 +174: 174 +175: 175 +176: 176 +177: 177 +178: 178 +179: 179 +180: 180 +181: 181 +182: 182 +183: 183 +184: 184 +185: 185 +186: 186 +187: 187 +188: 188 +189: 189 +190: 190 +191: 191 +192: 192 +193: 193 +194: 194 +195: 195 +196: 196 +197: 197 +198: 198 +199: 199 +200: 200 +201: 201 +202: 202 +203: 203 +204: 204 +205: 205 +206: 206 +207: 207 +208: 208 +209: 209 +210: 210 +211: 211 +212: 212 +213: 213 +214: 214 +215: 215 +216: 216 +217: 217 +218: 218 +219: 219 +220: 220 +221: 221 +222: 222 +223: 223 +224: 224 +225: 225 +226: 226 +227: 227 +228: 228 +229: 229 +230: 230 +231: 231 +232: 232 +233: 233 +234: 234 +235: 235 +236: 236 +237: 237 +238: 238 +239: 239 +240: 240 +241: 241 +242: 242 +243: 243 +244: 244 +245: 245 +246: 246 +247: 247 +248: 248 +249: 249 +250: 250 +251: 251 +252: 252 +253: 253 +254: 254 +255: 255 +0, 128, 215, 167, 65536 +33601, 60068, 60069 +42146, 62630, 62631 +65507, 8213, 12316, 8214, 8230, 8722, 65509, 65504, 65505, 65506 +8254, 8212, 12316, 8214, 8230, 8722, 165, 162, 163, 172 +65507, 8213, 65374, 8741, 8943, 65293, 65509, 65504, 65505, 65506 + ) +No pages of output. diff --git a/Build/source/texk/web2c/euptexdir/tests/ucs.tex b/Build/source/texk/web2c/euptexdir/tests/ucs.tex new file mode 100644 index 00000000000..520a7485d57 --- /dev/null +++ b/Build/source/texk/web2c/euptexdir/tests/ucs.tex @@ -0,0 +1,36 @@ +%#!eptex + +\def\typeout{\immediate\write17} + +\ifnum`あ="A4A2 \typeout{<EUC>} +\else\ifnum`ア="8341 \typeout{<SJIS>} +\else\typeout{<uptex>}\fi\fi + +\typeout{\string\ucs.} +\newcount\cntA +\loop\ifnum\cntA<256 + \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA % + \ifx\Uchar\undefined\else(\Uchar\ucs\cntA)\fi}\fi + \advance\cntA1 +\repeat + + +\typeout{\string\toucs.} +\cntA=0 +\loop\ifnum\cntA<256 + \ifnum0>\toucs\cntA\else\typeout{\the\cntA: \toucs\cntA}\fi + \advance\cntA1 +\repeat +\typeout{\toucs"0, \toucs"80, \toucs"D7, \toucs"A7, \toucs"10000} +\typeout{\toucs"8341, \toucs"EAA4, \toucs"EAA5} +\typeout{\toucs"A4A2, \toucs"F4A6, \toucs"F4A7} +\typeout{\jis"2131, \jis"213D, \jis"2141, \jis"2142, \jis"2144, + \jis"215D, \jis"216F, \jis"2171, \jis"2172, \jis"224C} +\typeout{\ucs"203E, \ucs"2014, \ucs"301C, \ucs"2016, \ucs"2026, + \ucs"2212, \ucs"00A5, \ucs"00A2, \ucs"00A3, \ucs"00AC} +\typeout{\ucs"FFE3, \ucs"2015, \ucs"FF5E, \ucs"2225, \ucs"22EF, + \ucs"FF0D, \ucs"FFE5, \ucs"FFE0, \ucs"FFE1, \ucs"FFE2} + + +\bye + diff --git a/Build/source/texk/web2c/luatexdir/ChangeLog b/Build/source/texk/web2c/luatexdir/ChangeLog index 6885c01f395..5e519d98d61 100644 --- a/Build/source/texk/web2c/luatexdir/ChangeLog +++ b/Build/source/texk/web2c/luatexdir/ChangeLog @@ -1,3 +1,12 @@ +2024-10-12 Luigi Scarso <luigi.scarso@gmail.com> + * Handle token combiners in immediate assignments (H.Hagen) + * LuaTeX 1.19.0 + + +2024-09-15 Luigi Scarso <luigi.scarso@gmail.com> + * Fixed a typo in texfont.c (thanks to Josef Friedrich) + + 2024-09-01 Luigi Scarso <luigi.scarso@gmail.com> * Changed char utf8word[(4 * MAX_WORD_LEN) + 1] = { 0 }; in char utf8word[(4 * MAX_WORD_LEN) + 1] ; diff --git a/Build/source/texk/web2c/luatexdir/font/texfont.c b/Build/source/texk/web2c/luatexdir/font/texfont.c index 496cb0838d0..16e8a5131b9 100644 --- a/Build/source/texk/web2c/luatexdir/font/texfont.c +++ b/Build/source/texk/web2c/luatexdir/font/texfont.c @@ -1878,7 +1878,7 @@ void read_expand_font(void) /*tex - Here's an old (sort of obsolete) letterspace-a-font helper. It does so by by + Here's an old (sort of obsolete) letterspace-a-font helper. It does so by creating a virtual font. */ diff --git a/Build/source/texk/web2c/luatexdir/luatex.c b/Build/source/texk/web2c/luatexdir/luatex.c index 9ad8c1bf45f..11d1ad08d51 100644 --- a/Build/source/texk/web2c/luatexdir/luatex.c +++ b/Build/source/texk/web2c/luatexdir/luatex.c @@ -32,9 +32,9 @@ stick to "0" upto "9" so users can expect a number represented as string. */ -int luatex_version = 118; -int luatex_revision = '2'; -const char *luatex_version_string = "1.18.2"; +int luatex_version = 119; +int luatex_revision = '9'; +const char *luatex_version_string = "1.19.0"; const char *engine_name = my_name; #include <kpathsea/c-ctype.h> diff --git a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h index add4ee39419..2a64a438cb3 100644 --- a/Build/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/Build/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1,4 +1,4 @@ #ifndef luatex_svn_revision_h #define luatex_svn_revision_h -#define luatex_svn_revision 7624 +#define luatex_svn_revision 7627 #endif diff --git a/Build/source/texk/web2c/luatexdir/tex/textoken.c b/Build/source/texk/web2c/luatexdir/tex/textoken.c index 8fef4f5916e..6097f223200 100644 --- a/Build/source/texk/web2c/luatexdir/tex/textoken.c +++ b/Build/source/texk/web2c/luatexdir/tex/textoken.c @@ -882,7 +882,7 @@ void check_outer_validity(void) halfword q; if (suppress_outer_error_par) return; - if ( OK_to_interrupt && (scanner_status != normal)) { + if (scanner_status != normal) { deletions_allowed = false; /*tex @@ -2907,7 +2907,10 @@ void conv_toks(void) /*tex one-step do_assignment */ if (cur_cmd > max_non_prefixed_command) { set_box_allowed = false; - prefixed_command(); + if (cur_cmd == combine_toks_cmd) + combine_the_toks(); + else + prefixed_command(); set_box_allowed = true; } /*tex done */ @@ -2922,7 +2925,10 @@ void conv_toks(void) break; } else { set_box_allowed = false; - prefixed_command(); + if (cur_cmd == combine_toks_cmd) + combine_the_toks(); + else + prefixed_command(); set_box_allowed = true; } } diff --git a/Build/source/texk/web2c/mplibdir/ChangeLog b/Build/source/texk/web2c/mplibdir/ChangeLog index 728957b23e2..e06278298ac 100644 --- a/Build/source/texk/web2c/mplibdir/ChangeLog +++ b/Build/source/texk/web2c/mplibdir/ChangeLog @@ -1,3 +1,8 @@ +2024-10-08 Luigi Scarso <luigi.scarso@gmail.com> + * Fixed a typo in the svg backend that was confusing the draw attributes -- + see metapost ml Missing stroke-linejoin attribute in SVG output for filldraw command + (thanks to joshua@kraemer.link). + 2024-05-19 Luigi Scarso <luigi.scarso@gmail.com> * Sync with https://github.com/ascherer/mplibdir commit c21f82c1990d1cdb86f51a00b5c81d0088e12454. diff --git a/Build/source/texk/web2c/mplibdir/svgout.w b/Build/source/texk/web2c/mplibdir/svgout.w index b1a74049582..37e72b4bcec 100644 --- a/Build/source/texk/web2c/mplibdir/svgout.w +++ b/Build/source/texk/web2c/mplibdir/svgout.w @@ -1098,7 +1098,7 @@ void mp_svg_stroke_out (MP mp, mp_graphic_object *h, } append_char(';'); } - + } if (gr_ljoin_val((mp_stroked_object *)h)!=0) { append_string ("stroke-linejoin: "); switch (gr_ljoin_val((mp_stroked_object *)h)) { @@ -1114,7 +1114,7 @@ void mp_svg_stroke_out (MP mp, mp_graphic_object *h, mp_svg_store_double(mp, gr_miterlim_val((mp_stroked_object *)h)); append_char(';'); } - } + append_string("fill: "); if (fill_also) { diff --git a/Build/source/texk/web2c/ptexdir/ChangeLog b/Build/source/texk/web2c/ptexdir/ChangeLog index 2fe03aef772..92cce7d5f48 100644 --- a/Build/source/texk/web2c/ptexdir/ChangeLog +++ b/Build/source/texk/web2c/ptexdir/ChangeLog @@ -1,3 +1,29 @@ +2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch, ptex_version.h: Version p4.1.2. + +2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch: + Fix a bug in initialization of inhibit_xsp/kinsoku tables + (Bug introduced on commit 2022-12-12 r65248). + * ptex-ctrlsym.test, tests/{ptexlineendmode,ucs}.tex, + (chartoken,ucs-{e,s}}.log, p-lineenda.typ: + Add more regression tests. + * tests/{free_{ixsp,pena},inhibitglue,kinsoku_{search,table}, + postpena}.tex: Move to ../euptexdir/tests . + * am/ptex.am: Adjust. + +2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch: Use constants enc_jis and enc_ucs. + * ptex-{ctrlsym,prntknj,ucs}.test, + tests/{control-symbol,ctrlsym,endlinechar,printkanji,ucs}.tex, + tests/{ctrlsym,endline,jctrlsym,pknj-{e,s},ucs-{e,s}).log, + tests/p-{endline,jctrlsym,pknj-{e,s}}a.typ: + Add regression tests by using Kitagawa-san's sample files. + * am/ptex.am: Adjust. + 2024-05-18 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> * ptex-base.ch: Enable to get character codes diff --git a/Build/source/texk/web2c/ptexdir/am/ptex.am b/Build/source/texk/web2c/ptexdir/am/ptex.am index ee8117c6800..caf30c2f986 100644 --- a/Build/source/texk/web2c/ptexdir/am/ptex.am +++ b/Build/source/texk/web2c/ptexdir/am/ptex.am @@ -107,9 +107,14 @@ EXTRA_DIST += \ ptex_tests = \ ptexdir/ptriptest.test \ ptexdir/pver.test \ - ptexdir/wcfname.test + ptexdir/wcfname.test \ + ptexdir/ptex-ctrlsym.test \ + ptexdir/ptex-prntknj.test \ + ptexdir/ptex-ucs.test ptexdir/ptriptest.log: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) -ptexdir/pver.log ptexdir/wcfname.log: ptex$(EXEEXT) +ptexdir/pver.log ptexdir/wcfname.log \ + ptexdir/ptex-ctrlsym.log ptexdir/ptex-prntknj.log \ + ptexdir/ptex-ucs.log: ptex$(EXEEXT) EXTRA_DIST += $(ptex_tests) $(pweb_tests) DISTCLEANFILES += $(pweb_programs:=.c) $(pweb_programs:=.h) \ @@ -166,12 +171,31 @@ EXTRA_DIST += ptexdir/tests/skipjfmp.pl ptexdir/tests/skipjfmp.tfm DISTCLEANFILES += ptests/xskipjfmp.* ## ptexdir/ptriptest EXTRA_DIST += ptexdir/ptrip/ptrip.diffs ptexdir/ptrip/texmf.cnf +DISTCLEANFILES += ptrip.diffs + +## ptex-ctrlsym.test +EXTRA_DIST += ptexdir/tests/ctrlsym.tex ptexdir/tests/ctrlsym.log \ + ptexdir/tests/endlinechar.tex ptexdir/tests/endline.log \ + ptexdir/tests/control-symbol.tex ptexdir/tests/jctrlsym.log \ + ptexdir/tests/p-endlinea.typ ptexdir/tests/p-jctrlsyma.typ \ + ptexdir/tests/let_char_token.tex ptexdir/tests/chartoken.log \ + ptexdir/tests/ptexlineendmode.tex ptexdir/tests/p-lineenda.typ +DISTCLEANFILES += p-ctrlsym.log p-ctrlsym.out p-ctrlsym.tex \ + p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.* +## ptex-prntknj.test +EXTRA_DIST += ptexdir/tests/printkanji.tex \ + ptexdir/tests/pknj-s.log ptexdir/tests/pknj-e.log \ + ptexdir/tests/p-pknj-sa.typ ptexdir/tests/p-pknj-ea.typ +DISTCLEANFILES += p-pknj-*.* +## ptex-ucs.test +EXTRA_DIST += ptexdir/tests/ucs.tex ptexdir/tests/ucs-s.log \ + ptexdir/tests/ucs-e.log +DISTCLEANFILES += p-ucs*.* + ptrip.diffs: ptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: ptrip-clean ptrip-clean: rm -rf ptripdir -DISTCLEANFILES += ptrip.diffs - # (end of ptex.am) diff --git a/Build/source/texk/web2c/ptexdir/ptex-base.ch b/Build/source/texk/web2c/ptexdir/ptex-base.ch index 6b77387d58e..36496b2e4b2 100644 --- a/Build/source/texk/web2c/ptexdir/ptex-base.ch +++ b/Build/source/texk/web2c/ptexdir/ptex-base.ch @@ -74,6 +74,8 @@ % (2022-10-24) HY pTeX p4.1.0 Add new syntax \font [in jis/ucs]. % New primitives: \tojis, \ptextracingfonts and \ptexfontname. % (2023-09-17) HY pTeX p4.1.1 Support more than 256 different glue/kern. +% (2024-09-22) HK pTeX p4.1.2 Enable to get character codes +% from control symbols by using backquote. @x % Here is TeX material that gets inserted after \input webmac @@ -88,8 +90,8 @@ @y @d pTeX_version=4 @d pTeX_minor_version=1 -@d pTeX_revision==".1" -@d pTeX_version_string=='-p4.1.1' {current \pTeX\ version} +@d pTeX_revision==".2" +@d pTeX_version_string=='-p4.1.2' {current \pTeX\ version} @# @d pTeX_banner=='This is pTeX, Version 3.141592653',pTeX_version_string @d pTeX_banner_k==pTeX_banner @@ -1305,10 +1307,11 @@ for k:=0 to 255 do begin cat_code(k):=other_char; kcat_code(k):=other_kchar; math_code(k):=hi(k); sf_code(k):=1000; auto_xsp_code(k):=0; + inhibit_xsp_type(k):=0; kinsoku_type(k):=0; end; for k:=0 to 1023 do - begin inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0; - kinsoku_code(k):=0; kinsoku_type(k):=0; + begin inhibit_xsp_code(k):=0; + kinsoku_code(k):=0; end; @z @x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont @@ -1523,6 +1526,9 @@ primitive("ptextracingfonts",assign_int,int_base+ptex_tracing_fonts_code);@/ @d v_offset==dimen_par(v_offset_code) @d t_baseline_shift==dimen_par(t_baseline_shift_code) @d y_baseline_shift==dimen_par(y_baseline_shift_code) +@# +@d enc_jis=1 +@d enc_ucs=2 @z @x l.5542 - pTeX: @@ -1660,8 +1666,8 @@ procedure print_font_dir_and_enc(f:internal_font_number); begin if font_dir[f]=dir_tate then print("/TATE") else if font_dir[f]=dir_yoko then print("/YOKO"); - if font_enc[f]=2 then print("+Unicode") - else if font_enc[f]=1 then print("+JIS"); + if font_enc[f]=enc_ucs then print("+Unicode") + else if font_enc[f]=enc_jis then print("+JIS"); end; @z @@ -3324,9 +3330,9 @@ if jfm_flag<>dir_default then for k:=ctype_base[f] to ctype_base[f]+nt-1 do begin fget; read_twentyfourx(cx); - if jfm_enc=2 then {Unicode TFM} + if jfm_enc=enc_ucs then {Unicode TFM} font_info[k].hh.rh:=toDVI(fromUCS(cx)) - else if jfm_enc=1 then {JIS-encoded TFM} + else if jfm_enc=enc_jis then {JIS-encoded TFM} font_info[k].hh.rh:=toDVI(fromJIS(cx)) else font_info[k].hh.rh:=tokanji(cx); {|kchar_code|} @@ -3584,9 +3590,9 @@ continue: end; p:=link(p); jc:=KANJI(info(p)); - if font_enc[f]=2 then {Unicode TFM} + if font_enc[f]=enc_ucs then {Unicode TFM} jc:=toUCS(jc) - else if font_enc[f]=1 then {JIS-encoded TFM} + else if font_enc[f]=enc_jis then {JIS-encoded TFM} begin if toJIS(jc)=0 then char_warning_jis(f,jc); jc:=toJIS(jc); end else @@ -7075,8 +7081,8 @@ exit:end; @ @<Scan the font encoding specification@>= begin jfm_enc:=0; if scan_keyword_noexpand("in") then - if scan_keyword_noexpand("jis") then jfm_enc:=1 - else if scan_keyword_noexpand("ucs") then jfm_enc:=2 + if scan_keyword_noexpand("jis") then jfm_enc:=enc_jis + else if scan_keyword_noexpand("ucs") then jfm_enc:=enc_ucs else begin print_err("Unknown TFM encoding"); @.Unknown TFM encoding@> diff --git a/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test b/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test new file mode 100755 index 00000000000..ee0c5b88e8a --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/ptex-ctrlsym.test @@ -0,0 +1,77 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_ptex=$BinDir/ptex$ExeExt +_updvitype=$BinDir/updvitype$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFONTS=".;$srcdir//tests"; export TEXFONTS +TEXFORMATS=.; export TEXFORMATS + +rm -f p-ctrlsym.tex p-endline*.* p-jctrlsym*.* p-chartoken.* p-lineend.* + +if test ! -f ./p-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./p-basic.tex +fi +if test ! -f ./p-basic-euc.fmt; then + $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2 +fi + +# ctrlsym.tex +$LN_S $srcdir/ptexdir/tests/ctrlsym.tex ./p-ctrlsym.tex +$_ptex -fmt=p-basic-euc p-ctrlsym || exit 2 + +sed 1d p-ctrlsym.log >p-ctrlsym.out + +diff $srcdir/ptexdir/tests/ctrlsym.log p-ctrlsym.out || exit 3 + + +# endlinchar.tex +$LN_S $srcdir/ptexdir/tests/endlinechar.tex ./p-endline.tex +$_ptex -fmt=p-basic-euc -interaction=batchmode p-endline.tex || : + +sed 1d p-endline.log >p-endline.out + +diff $srcdir/ptexdir/tests/endline.log p-endline.out || exit 4 + +$_updvitype ./p-endline.dvi >ptests/xp-endline.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-endline.typ >ptests/xp-endlinea.typ +diff $srcdir/ptexdir/tests/p-endlinea.typ ptests/xp-endlinea.typ || exit 5 + + +# control-symbol.tex +$LN_S $srcdir/ptexdir/tests/control-symbol.tex ./p-jctrlsym.tex +$_ptex -fmt=p-basic-euc -interaction=batchmode p-jctrlsym.tex || : + +sed 1d p-jctrlsym.log >p-jctrlsym.out + +diff $srcdir/ptexdir/tests/jctrlsym.log p-jctrlsym.out || exit 6 + +$_updvitype ./p-jctrlsym.dvi >ptests/xp-jctrlsym.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-jctrlsym.typ >ptests/xp-jctrlsyma.typ +diff $srcdir/ptexdir/tests/p-jctrlsyma.typ ptests/xp-jctrlsyma.typ || exit 7 + + +# let_char_token.tex +$LN_S $srcdir/ptexdir/tests/let_char_token.tex ./p-chartoken.tex +$_ptex -fmt=p-basic-euc -interaction=batchmode p-chartoken.tex || : + +sed 1d p-chartoken.log >p-chartoken.out + +diff $srcdir/ptexdir/tests/chartoken.log p-chartoken.out || exit 8 + + +# ptexlineendmode.tex +$LN_S $srcdir/ptexdir/tests/ptexlineendmode.tex ./p-lineend.tex +$_ptex -fmt=p-basic-euc -kanji=utf8 -interaction=batchmode p-lineend.tex || : + +$_updvitype -kanji=utf8 ./p-lineend.dvi >ptests/xp-lineend.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-lineend.typ >ptests/xp-lineenda.typ +diff $srcdir/ptexdir/tests/p-lineenda.typ ptests/xp-lineenda.typ || exit 9 + diff --git a/Build/source/texk/web2c/ptexdir/ptex-prntknj.test b/Build/source/texk/web2c/ptexdir/ptex-prntknj.test new file mode 100755 index 00000000000..0f2c50f96fd --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/ptex-prntknj.test @@ -0,0 +1,48 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_ptex=$BinDir/ptex$ExeExt +_updvitype=$BinDir/updvitype$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TFMFONTS=".;$srcdir//tests"; export TFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +rm -f p-base.* p-ucs*.* +$LN_S $srcdir/ptexdir/tests/printkanji.tex ./printkanji.tex + +if test ! -f ./p-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./p-basic.tex +fi +if test ! -f ./p-basic-sjis.fmt; then + $_ptex -ini -kanji-internal=sjis -jobname=p-basic-sjis p-basic || exit 1 +fi +if test ! -f ./p-basic-euc.fmt; then + $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2 +fi + +$_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-pknj-s -interaction=batchmode printkanji || : +$_ptex -fmt=p-basic-euc -kanji-internal=euc -jobname=p-pknj-e -interaction=batchmode printkanji || : + +sed 1d p-pknj-s.log >p-pknj-s.out +sed 1d p-pknj-e.log >p-pknj-e.out + +diff $srcdir/ptexdir/tests/pknj-s.log p-pknj-s.out || exit 10 +diff $srcdir/ptexdir/tests/pknj-e.log p-pknj-e.out || exit 11 + +$_updvitype ./p-pknj-s.dvi >ptests/xp-pknj-s.typ +$_updvitype ./p-pknj-e.dvi >ptests/xp-pknj-e.typ + +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-pknj-s.typ >ptests/xp-pknj-sa.typ +sed "1d;s/TeX output 20[23].\...\...:.*'/TeX output 20XX.XX.XX'/" ptests/xp-pknj-e.typ >ptests/xp-pknj-ea.typ + +diff $srcdir/ptexdir/tests/p-pknj-sa.typ ptests/xp-pknj-sa.typ || exit 20 +diff $srcdir/ptexdir/tests/p-pknj-ea.typ ptests/xp-pknj-ea.typ || exit 21 + diff --git a/Build/source/texk/web2c/ptexdir/ptex-ucs.test b/Build/source/texk/web2c/ptexdir/ptex-ucs.test new file mode 100755 index 00000000000..bef8ba44910 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/ptex-ucs.test @@ -0,0 +1,37 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_ptex=$BinDir/ptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +rm -f p-ucs*.* +$LN_S $srcdir/ptexdir/tests/ucs.tex ./p-ucs.tex + +if test ! -f ./p-basic.tex; then + cp $srcdir/tests/dump-basic.tex ./p-basic.tex +fi +if test ! -f ./p-basic-sjis.fmt; then + $_ptex -ini -kanji-internal=sjis -jobname=p-basic-sjis p-basic || exit 1 +fi +if test ! -f ./p-basic-euc.fmt; then + $_ptex -ini -kanji-internal=euc -jobname=p-basic-euc p-basic || exit 2 +fi + +$_ptex -fmt=p-basic-sjis -kanji-internal=sjis -jobname=p-ucs-s -interaction=batchmode p-ucs || exit 4 +$_ptex -fmt=p-basic-euc -kanji-internal=euc -jobname=p-ucs-e -interaction=batchmode p-ucs || exit 5 + +sed 1d p-ucs-s.log >p-ucs-s.out +sed 1d p-ucs-e.log >p-ucs-e.out + +diff $srcdir/ptexdir/tests/ucs-s.log p-ucs-s.out || exit 10 +diff $srcdir/ptexdir/tests/ucs-e.log p-ucs-e.out || exit 11 + diff --git a/Build/source/texk/web2c/ptexdir/ptex_version.h b/Build/source/texk/web2c/ptexdir/ptex_version.h index 13e0f1467b3..247aabb113d 100644 --- a/Build/source/texk/web2c/ptexdir/ptex_version.h +++ b/Build/source/texk/web2c/ptexdir/ptex_version.h @@ -1 +1 @@ -#define PTEX_VERSION "p4.1.1" +#define PTEX_VERSION "p4.1.2" diff --git a/Build/source/texk/web2c/ptexdir/tests/chartoken.log b/Build/source/texk/web2c/ptexdir/tests/chartoken.log new file mode 100644 index 00000000000..e834c9cf8a3 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/chartoken.log @@ -0,0 +1,41 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-chartoken.tex +(./p-chartoken.tex +\x=\count26 + +! Improper alphabetic or KANJI constant. +<to be read again> + \aaa +\T #1->\x =`#1 + \message {\the \x } +l.6 \def\aaa{西}\T{\aaa} + % err +A one-character control sequence belongs after a ` mark. +So I'm essentially inserting \0 here. + +48 +! Improper alphabetic or KANJI constant. +<to be read again> + \AAA +\T #1->\x =`#1 + \message {\the \x } +l.7 \def\AAA{s}\T{\AAA} + % err +A one-character control sequence belongs after a ` mark. +So I'm essentially inserting \0 here. + +Missing character: There is no s in font nullfont! +48 +! Improper alphabetic or KANJI constant. +<to be read again> + \ccc +\T #1->\x =`#1 + \message {\the \x } +l.8 \let\ccc=西\relax\T{\ccc} + % err +A one-character control sequence belongs after a ` mark. +So I'm essentially inserting \0 here. + +48 126 97 46273 46273 [1] ) +Output written on p-chartoken.dvi (1 page, 152 bytes). diff --git a/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex b/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex index f8127546885..be05906602d 100644 --- a/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex +++ b/Build/source/texk/web2c/ptexdir/tests/control-symbol.tex @@ -1,5 +1,14 @@ \scrollmode % plain TeX ソース +\font\cmr=cmr10\cmr +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi + \def\+{A} \def\+{A} \def\X{\+} @@ -95,7 +104,5 @@ 4. \】 ◇, \@ ◇ - \end - diff --git a/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log new file mode 100644 index 00000000000..a74fd6faac3 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.log @@ -0,0 +1,11 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-ctrlsym +(./p-ctrlsym.tex +A: 49379 + +\雪 ->snow +B: 49379. 雪\雪snow +macro:->snow. + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex new file mode 100644 index 00000000000..d84a541707b --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/ctrlsym.tex @@ -0,0 +1,36 @@ +% Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +% You may freely use, modify and/or distribute this file. +% +\ifx\fmtname\undefined + \input basic + \def\fmtname{basic} + \expandafter\dump +\fi +%================== +\begingroup % Just there to minimize tracing output + \tracingmacros=2 + \tracingonline=1 +%-- + \newlinechar=10 + \count255=0 + \count255=`雪 \relax + \message{^^JA: \the\count255^^J} + \def\雪{snow} + \count255=`\雪 \relax + \message{B: \the\count255. 雪\string\雪 \雪^^J} + \message{\expandafter\meaning\csname 雪\endcsname.^^J} + \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"96EA\endcsname.^^J}\fi% + \ifnum\jis"2121="3000 + \count4095=0 + \count4095=`🍌 \relax + \message{^^JC: \the\count4095^^J} + \def\🍌{banana} + \count4095=`\🍌 \relax + \message{D: \the\count4095. 🍌\string\🍌 \🍌^^J} + \message{\expandafter\meaning\csname 🍌\endcsname.^^J} + \ifx\Uchar\undefined\else\message{\expandafter\meaning\csname \Uchar"1F34C\endcsname.^^J}\fi% + \fi +%-- + \setbox0=\vbox{} % no dvi/xdv/pdf output +\endgroup +\end diff --git a/Build/source/texk/web2c/ptexdir/tests/endline.log b/Build/source/texk/web2c/ptexdir/tests/endline.log new file mode 100644 index 00000000000..517be160e49 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/endline.log @@ -0,0 +1,24 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-endline.tex +(./p-endline.tex +! Undefined control sequence. +l.29 7a\^^e3 + ^^81^^82b\^^e3^^81^^82 +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.29 7a\^^e3^^81^^82b\^^e3 + ^^81^^82 +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +[1] ) +Output written on p-endline.dvi (1 page, 232 bytes). diff --git a/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex b/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex index ef59b1fc886..5dc8de812e7 100644 --- a/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex +++ b/Build/source/texk/web2c/ptexdir/tests/endlinechar.tex @@ -1,23 +1,23 @@ -\font\x=ecrm1000 \x +\font\x=ec-lmr10 \x \parindent0pt\noautoxspacing \output{\shipout\box255} -\def\あ{ア} -\def\,{イ} +\def\あ{PPP} +\def\,{QQQ} 1a\, -% --> 1aイ +% --> 1aQQQ 2a\あ -% --> 2aア +% --> 2aPPP \endlinechar=-1\relax 3a\, -% --> 3aイ +% --> 3aQQQ % previous pTeX, upTeX: Undefined cs. 4a\あ -% --> 4aア +% --> 4aPPP % prev. pTeX: Undefined cs. 5a, @@ -36,18 +36,22 @@ \catcode"81=11\relax \catcode"82=11\relax 8a\^^e3^^81^^82 - % --> 8aア + % (p3.10.0-u1.27) --> 8aPPP + % (p4.0.0-u1.27) --> エラー 8a \kcatcode`あ=15\relax 9a\あ - % == 9a\^^e3^^81^^82. --> 9aア - \def\^^e3^^81^^82{ウ} + % == 9a\^^e3^^81^^82. + % (p3.10.0-u1.27) --> 9aPPP + % (p4.0.0-u1.27) --> エラー 9a + \def\^^e3^^81^^82{RRR} 10a\あ b\あ - % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aウbウ + % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 10aRRRbRRR \kcatcode12354=16\relax 11a\あ b\あ - % == 10a\^^e3^^81^^82 b\^^e3^^81^^82. --> 11aウbウ + % == 11a\^^e3^^81^^82 b\^^e3^^81^^82. + % (p3.10.0-u1.27) --> 11aRRRbRRR + % (p4.0.0-u1.27) --> 11aPPPbPPP \fi \bye - diff --git a/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log b/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log new file mode 100644 index 00000000000..a1e190a80df --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/jctrlsym.log @@ -0,0 +1,42 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-jctrlsym.tex +(./p-jctrlsym.tex +■control symbol +> \X=macro: +->\+. +l.27 \show\X + \relax\message{(\meaning\X)} + +(macro:->\+) +> \Y=macro: +->\+. +l.28 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\+) ■control word +> \X=macro: +->\+ . +l.39 \show\X + \relax\message{(\meaning\X)} + +(macro:->\+ ) +> \Y=macro: +->\+ . +l.40 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\+ ) ■control word +> \X=macro: +->\ABC . +l.48 \show\X + \relax\message{(\meaning\X)} + +(macro:->\ABC ) +> \Y=macro: +->\あいう . +l.49 \show\Y + \relax\message{(\meaning\Y)} + +(macro:->\あいう ) ■行末の和文コントロールシンボル [1] ) +Output written on p-jctrlsym.dvi (1 page, 376 bytes). diff --git a/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ b/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ new file mode 100644 index 00000000000..31b9af3a8c3 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/p-endlinea.typ @@ -0,0 +1,68 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 167. +maxv=42152922, maxh=30785863, maxstackdepth=1, totalpages=1 +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: down3 655360 v:=0+655360=655360, vv:=42 +91: push +level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +92: fntdef1 0: ec-lmr10 +116: fntnum0 current font is ec-lmr10 +117: setchar49 ("31) h:=0+327680=327680, hh:=21 +118: setchar97 ("61) h:=327680+327680=655360, hh:=42 +119: setchar81 ("51) h:=655360+509738=1165098, hh:=74 +120: setchar81 ("51) h:=1165098+509738=1674836, hh:=106 +121: setchar81 ("51) h:=1674836+509738=2184574, hh:=138 +[1aQQQ] +122: pop +level 0:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +123: y3 786432 v:=655360+786432=1441792, vv:=91 +127: push +level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +128: setchar50 ("32) h:=0+327680=327680, hh:=21 +129: setchar97 ("61) h:=327680+327680=655360, hh:=42 +130: setchar80 ("50) h:=655360+446005=1101365, hh:=70 +131: setchar80 ("50) h:=1101365+446005=1547370, hh:=98 +132: setchar80 ("50) h:=1547370+446005=1993375, hh:=126 +[2aPPP] +133: pop +level 0:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +134: y0 786432 v:=1441792+786432=2228224, vv:=141 +135: push +level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +136: setchar51 ("33) h:=0+327680=327680, hh:=21 +137: setchar97 ("61) h:=327680+327680=655360, hh:=42 +138: setchar81 ("51) h:=655360+509738=1165098, hh:=74 +139: setchar81 ("51) h:=1165098+509738=1674836, hh:=106 +140: setchar81 ("51) h:=1674836+509738=2184574, hh:=138 +141: setchar52 ("34) h:=2184574+327680=2512254, hh:=159 +142: setchar97 ("61) h:=2512254+327680=2839934, hh:=180 +143: setchar80 ("50) h:=2839934+446005=3285939, hh:=208 +144: setchar80 ("50) h:=3285939+446005=3731944, hh:=236 +145: setchar80 ("50) h:=3731944+446005=4177949, hh:=264 +146: setchar53 ("35) h:=4177949+327680=4505629, hh:=285 +147: setchar97 ("61) h:=4505629+327680=4833309, hh:=306 +148: setchar54 ("36) h:=4833309+327680=5160989, hh:=327 +149: setchar97 ("61) h:=5160989+327680=5488669, hh:=348 +150: setchar55 ("37) h:=5488669+327680=5816349, hh:=369 +151: setchar97 ("61) h:=5816349+327680=6144029, hh:=390 +[3aQQQ4aPPP5a6a7a] +152: set1 129("81) h:=6144029+491520=6635549, hh:=421 +154: w2 -18205 h:=6635549-18205=6617344, hh:=420 +157: set1 130("82) h:=6617344+473301=7090645, hh:=450 +159: setchar98 ("62) h:=7090645+364085=7454730, hh:=473 +[b] +160: set1 129("81) h:=7454730+491520=7946250, hh:=504 +162: w0 -18205 h:=7946250-18205=7928045, hh:=503 +163: set1 130("82) h:=7928045+473301=8401346, hh:=533 +165: pop +level 0:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +166: eop diff --git a/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ b/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ new file mode 100644 index 00000000000..7f8a5eb1ca6 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/p-jctrlsyma.typ @@ -0,0 +1,123 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 293. +maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: cmr10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: cmr10 +130: fntnum0 current font is cmr10 +131: setchar49 ("31) h:=1310720+327681=1638401, hh:=104 +132: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +133: right3 291271 h:=1820446+291271=2111717, hh:=134 +[1. ] +137: fntdef1 1: min10 +158: fntnum1 current font is min10 +159: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174 +162: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214 +165: set2 8484("2124) type=8 h:=3372913+231778=3604691, hh:=229 +168: right3 398820 h:=3604691+398820=4003511, hh:=254 +172: set2 8737("2221) type=0 h:=4003511+630598=4634109, hh:=294 +175: set2 8574("217E) type=0 h:=4634109+630598=5264707, hh:=334 +[∡ⅾℤ ∡ⅾ] +178: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +179: y3 786432 v:=655360+786432=1441792, vv:=91 +183: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +184: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +188: fntnum0 current font is cmr10 +189: setchar50 ("32) h:=1310720+327681=1638401, hh:=104 +190: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +191: right3 291271 h:=1820446+291271=2111717, hh:=134 +[2. ] +195: fntnum1 current font is min10 +196: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174 +199: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214 +[∡ⅾ] +202: fntnum0 current font is cmr10 +203: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226 +204: right3 218453 h:=3554958+218453=3773411, hh:=239 +[, ] +208: fntnum1 current font is min10 +209: set2 8737("2221) type=0 h:=3773411+630598=4404009, hh:=279 +212: set2 8574("217E) type=0 h:=4404009+630598=5034607, hh:=319 +[∡ⅾ] +215: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +216: y0 786432 v:=1441792+786432=2228224, vv:=141 +217: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +218: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +222: fntnum0 current font is cmr10 +223: setchar51 ("33) h:=1310720+327681=1638401, hh:=104 +224: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +225: right3 291271 h:=1820446+291271=2111717, hh:=134 +[3. ] +229: fntnum1 current font is min10 +230: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174 +233: set2 8574("217E) type=0 h:=2742315+630598=3372913, hh:=214 +[∡ⅾ] +236: fntnum0 current font is cmr10 +237: setchar44 ("2C) h:=3372913+182045=3554958, hh:=226 +238: w3 218453 h:=3554958+218453=3773411, hh:=239 +[, ] +242: fntnum1 current font is min10 +243: set2 8737("2221) type=0 h:=3773411+630598=4404009, hh:=279 +246: w0 218453 h:=4404009+218453=4622462, hh:=293 +247: set2 8574("217E) type=0 h:=4622462+630598=5253060, hh:=333 +[∡ ⅾ] +250: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +251: y0 786432 v:=2228224+786432=3014656, vv:=191 +252: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +253: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +257: fntnum0 current font is cmr10 +258: setchar52 ("34) h:=1310720+327681=1638401, hh:=104 +259: setchar46 ("2E) h:=1638401+182045=1820446, hh:=116 +260: right3 291271 h:=1820446+291271=2111717, hh:=134 +[4. ] +264: fntnum1 current font is min10 +265: set2 8737("2221) type=0 h:=2111717+630598=2742315, hh:=174 +268: w3 218453 h:=2742315+218453=2960768, hh:=188 +272: set2 8574("217E) type=0 h:=2960768+630598=3591366, hh:=228 +[∡ ⅾ] +275: fntnum0 current font is cmr10 +276: setchar44 ("2C) h:=3591366+182045=3773411, hh:=240 +277: w0 218453 h:=3773411+218453=3991864, hh:=253 +[, ] +278: fntnum1 current font is min10 +279: set2 8737("2221) type=0 h:=3991864+630598=4622462, hh:=293 +282: w0 218453 h:=4622462+218453=4840915, hh:=307 +283: set2 8574("217E) type=0 h:=4840915+630598=5471513, hh:=347 +[∡ ⅾ] +286: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +287: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +288: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +292: eop diff --git a/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ b/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ new file mode 100644 index 00000000000..368a57272ae --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/p-lineenda.typ @@ -0,0 +1,295 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 635. +maxv=43725786, maxh=30785863, maxstackdepth=2, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 1 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar48 ("30) h:=1310720+327680=1638400, hh:=104 +[0] +135: fntdef1 1: min10 +156: fntnum1 current font is min10 +157: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +160: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184 +163: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224 +166: set2 9250("2422) type=0 h:=3530194+630598=4160792, hh:=264 +169: set2 8574("217E) type=0 h:=4160792+630598=4791390, hh:=304 +172: set2 9252("2424) type=0 h:=4791390+630598=5421988, hh:=344 +175: set2 8737("2221) type=0 h:=5421988+630598=6052586, hh:=384 +178: set2 8574("217E) type=0 h:=6052586+630598=6683184, hh:=424 +181: set2 8737("2221) type=0 h:=6683184+630598=7313782, hh:=464 +184: set2 8574("217E) type=0 h:=7313782+630598=7944380, hh:=504 +187: set2 13377("3441) type=0 h:=7944380+630598=8574978, hh:=544 +190: set2 15226("3B7A) type=0 h:=8574978+630598=9205576, hh:=584 +[◆◆◇あ◇い◆◇◆◇漢字] +193: fntnum0 current font is ec-lmr10 +194: setchar83 ("53) h:=9205576+364085=9569661, hh:=607 +195: setchar97 ("61) h:=9569661+327680=9897341, hh:=628 +196: right3 655360 h:=9897341+655360=10552701, hh:=668 +200: setchar112 ("70) h:=10552701+364085=10916786, hh:=691 +201: setchar52 ("34) h:=10916786+327680=11244466, hh:=712 +202: setchar46 ("2E) h:=11244466+182043=11426509, hh:=724 +203: setchar48 ("30) h:=11426509+327680=11754189, hh:=745 +204: setchar46 ("2E) h:=11754189+182043=11936232, hh:=757 +205: setchar48 ("30) h:=11936232+327680=12263912, hh:=778 +[Sa p4.0.0] +206: fntnum1 current font is min10 +207: set2 12362("304A) type=0 h:=12263912+630598=12894510, hh:=818 +210: set2 14687("395F) type=0 h:=12894510+630598=13525108, hh:=858 +[以降] +213: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +214: y3 786432 v:=655360+786432=1441792, vv:=91 +218: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +219: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +223: fntnum0 current font is ec-lmr10 +224: setchar49 ("31) h:=1310720+327680=1638400, hh:=104 +[1] +225: fntnum1 current font is min10 +226: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +229: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184 +232: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224 +235: set2 9250("2422) type=0 h:=3530194+630598=4160792, hh:=264 +238: set2 8574("217E) type=0 h:=4160792+630598=4791390, hh:=304 +241: set2 9252("2424) type=0 h:=4791390+630598=5421988, hh:=344 +244: set2 8737("2221) type=0 h:=5421988+630598=6052586, hh:=384 +247: set2 8574("217E) type=0 h:=6052586+630598=6683184, hh:=424 +250: right3 218453 h:=6683184+218453=6901637, hh:=437 +254: set2 8737("2221) type=0 h:=6901637+630598=7532235, hh:=477 +257: set2 8574("217E) type=0 h:=7532235+630598=8162833, hh:=517 +260: set2 13377("3441) type=0 h:=8162833+630598=8793431, hh:=557 +263: set2 15226("3B7A) type=0 h:=8793431+630598=9424029, hh:=597 +[◆◆◇あ◇い◆◇ ◆◇漢字] +266: fntnum0 current font is ec-lmr10 +267: setchar83 ("53) h:=9424029+364085=9788114, hh:=620 +268: setchar97 ("61) h:=9788114+327680=10115794, hh:=641 +269: right3 655360 h:=10115794+655360=10771154, hh:=682 +273: setchar112 ("70) h:=10771154+364085=11135239, hh:=705 +274: setchar51 ("33) h:=11135239+327680=11462919, hh:=726 +275: setchar46 ("2E) h:=11462919+182043=11644962, hh:=738 +276: setchar56 ("38) h:=11644962+327680=11972642, hh:=759 +277: setchar46 ("2E) h:=11972642+182043=12154685, hh:=771 +278: setchar50 ("32) h:=12154685+327680=12482365, hh:=792 +[Sa p3.8.2] +279: fntnum1 current font is min10 +280: set2 12362("304A) type=0 h:=12482365+630598=13112963, hh:=832 +283: set2 14687("395F) type=0 h:=13112963+630598=13743561, hh:=872 +[以降] +286: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +287: y0 786432 v:=1441792+786432=2228224, vv:=141 +288: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +289: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +293: fntnum0 current font is ec-lmr10 +294: setchar50 ("32) h:=1310720+327680=1638400, hh:=104 +[2] +295: fntnum1 current font is min10 +296: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +299: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184 +302: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224 +305: w3 218453 h:=3530194+218453=3748647, hh:=237 +309: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=277 +312: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=317 +315: w0 218453 h:=5009843+218453=5228296, hh:=331 +316: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371 +319: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411 +322: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451 +325: set2 8737("2221) type=0 h:=7120090+630598=7750688, hh:=491 +328: set2 8574("217E) type=0 h:=7750688+630598=8381286, hh:=531 +331: set2 13377("3441) type=0 h:=8381286+630598=9011884, hh:=571 +334: set2 15226("3B7A) type=0 h:=9011884+630598=9642482, hh:=611 +[◆◆◇ あ◇ い◆◇◆◇漢字] +337: fntnum0 current font is ec-lmr10 +338: setchar83 ("53) h:=9642482+364085=10006567, hh:=634 +339: setchar97 ("61) h:=10006567+327680=10334247, hh:=655 +[Sa] +340: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +341: y0 786432 v:=2228224+786432=3014656, vv:=191 +342: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +343: right3 1310720 h:=0+1310720=1310720, hh:=83 +347: setchar51 ("33) h:=1310720+327680=1638400, hh:=104 +[ 3] +348: fntnum1 current font is min10 +349: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +352: set2 8737("2221) type=0 h:=2268998+630598=2899596, hh:=184 +355: set2 8574("217E) type=0 h:=2899596+630598=3530194, hh:=224 +358: w3 218453 h:=3530194+218453=3748647, hh:=237 +362: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=277 +365: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=317 +368: w0 218453 h:=5009843+218453=5228296, hh:=331 +369: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371 +372: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411 +375: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451 +378: w0 218453 h:=7120090+218453=7338543, hh:=465 +379: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505 +382: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545 +385: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585 +388: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625 +[◆◆◇ あ◇ い◆◇ ◆◇漢字] +391: fntnum0 current font is ec-lmr10 +392: setchar83 ("53) h:=9860935+364085=10225020, hh:=648 +393: setchar97 ("61) h:=10225020+327680=10552700, hh:=669 +394: right3 655360 h:=10552700+655360=11208060, hh:=710 +398: setchar112 ("70) h:=11208060+364085=11572145, hh:=733 +399: setchar51 ("33) h:=11572145+327680=11899825, hh:=754 +400: setchar46 ("2E) h:=11899825+182043=12081868, hh:=766 +401: setchar56 ("38) h:=12081868+327680=12409548, hh:=787 +402: setchar46 ("2E) h:=12409548+182043=12591591, hh:=799 +403: setchar49 ("31) h:=12591591+327680=12919271, hh:=820 +[Sa p3.8.1] +404: fntnum1 current font is min10 +405: set2 12362("304A) type=0 h:=12919271+630598=13549869, hh:=860 +408: set2 16688("4130) type=0 h:=13549869+630598=14180467, hh:=900 +[以前] +411: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +412: y0 786432 v:=3014656+786432=3801088, vv:=241 +413: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +414: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +418: fntnum0 current font is ec-lmr10 +419: setchar52 ("34) h:=1310720+327680=1638400, hh:=104 +[4] +420: fntnum1 current font is min10 +421: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +424: w3 218453 h:=2268998+218453=2487451, hh:=158 +428: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198 +431: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238 +434: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=278 +437: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=318 +440: w0 218453 h:=5009843+218453=5228296, hh:=331 +441: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371 +444: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411 +447: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451 +450: set2 8737("2221) type=0 h:=7120090+630598=7750688, hh:=491 +453: set2 8574("217E) type=0 h:=7750688+630598=8381286, hh:=531 +456: set2 13377("3441) type=0 h:=8381286+630598=9011884, hh:=571 +459: set2 15226("3B7A) type=0 h:=9011884+630598=9642482, hh:=611 +[◆ ◆◇あ◇ い◆◇◆◇漢字] +462: fntnum0 current font is ec-lmr10 +463: setchar83 ("53) h:=9642482+364085=10006567, hh:=634 +464: setchar97 ("61) h:=10006567+327680=10334247, hh:=655 +[Sa] +465: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +466: y0 786432 v:=3801088+786432=4587520, vv:=291 +467: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +468: right3 1310720 h:=0+1310720=1310720, hh:=83 +472: setchar53 ("35) h:=1310720+327680=1638400, hh:=104 +[ 5] +473: fntnum1 current font is min10 +474: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +477: w3 218453 h:=2268998+218453=2487451, hh:=158 +481: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198 +484: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238 +487: set2 9250("2422) type=0 h:=3748647+630598=4379245, hh:=278 +490: set2 8574("217E) type=0 h:=4379245+630598=5009843, hh:=318 +493: w0 218453 h:=5009843+218453=5228296, hh:=331 +494: set2 9252("2424) type=0 h:=5228296+630598=5858894, hh:=371 +497: set2 8737("2221) type=0 h:=5858894+630598=6489492, hh:=411 +500: set2 8574("217E) type=0 h:=6489492+630598=7120090, hh:=451 +503: w0 218453 h:=7120090+218453=7338543, hh:=465 +504: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505 +507: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545 +510: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585 +513: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625 +[◆ ◆◇あ◇ い◆◇ ◆◇漢字] +516: fntnum0 current font is ec-lmr10 +517: setchar83 ("53) h:=9860935+364085=10225020, hh:=648 +518: setchar97 ("61) h:=10225020+327680=10552700, hh:=669 +[Sa] +519: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +520: y0 786432 v:=4587520+786432=5373952, vv:=340 +521: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +522: right3 1310720 h:=0+1310720=1310720, hh:=83 +526: setchar54 ("36) h:=1310720+327680=1638400, hh:=104 +[ 6] +527: fntnum1 current font is min10 +528: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +531: w3 218453 h:=2268998+218453=2487451, hh:=158 +535: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198 +538: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238 +541: w0 218453 h:=3748647+218453=3967100, hh:=251 +542: set2 9250("2422) type=0 h:=3967100+630598=4597698, hh:=291 +545: set2 8574("217E) type=0 h:=4597698+630598=5228296, hh:=331 +548: w0 218453 h:=5228296+218453=5446749, hh:=345 +549: set2 9252("2424) type=0 h:=5446749+630598=6077347, hh:=385 +552: set2 8737("2221) type=0 h:=6077347+630598=6707945, hh:=425 +555: set2 8574("217E) type=0 h:=6707945+630598=7338543, hh:=465 +558: set2 8737("2221) type=0 h:=7338543+630598=7969141, hh:=505 +561: set2 8574("217E) type=0 h:=7969141+630598=8599739, hh:=545 +564: set2 13377("3441) type=0 h:=8599739+630598=9230337, hh:=585 +567: set2 15226("3B7A) type=0 h:=9230337+630598=9860935, hh:=625 +[◆ ◆◇ あ◇ い◆◇◆◇漢字] +570: fntnum0 current font is ec-lmr10 +571: setchar83 ("53) h:=9860935+364085=10225020, hh:=648 +572: setchar97 ("61) h:=10225020+327680=10552700, hh:=669 +[Sa] +573: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +574: y0 786432 v:=5373952+786432=6160384, vv:=390 +575: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +576: right3 1310720 h:=0+1310720=1310720, hh:=83 +580: setchar55 ("37) h:=1310720+327680=1638400, hh:=104 +[ 7] +581: fntnum1 current font is min10 +582: set2 8737("2221) type=0 h:=1638400+630598=2268998, hh:=144 +585: w3 218453 h:=2268998+218453=2487451, hh:=158 +589: set2 8737("2221) type=0 h:=2487451+630598=3118049, hh:=198 +592: set2 8574("217E) type=0 h:=3118049+630598=3748647, hh:=238 +595: w0 218453 h:=3748647+218453=3967100, hh:=251 +596: set2 9250("2422) type=0 h:=3967100+630598=4597698, hh:=291 +599: set2 8574("217E) type=0 h:=4597698+630598=5228296, hh:=331 +602: w0 218453 h:=5228296+218453=5446749, hh:=345 +603: set2 9252("2424) type=0 h:=5446749+630598=6077347, hh:=385 +606: set2 8737("2221) type=0 h:=6077347+630598=6707945, hh:=425 +609: set2 8574("217E) type=0 h:=6707945+630598=7338543, hh:=465 +612: w0 218453 h:=7338543+218453=7556996, hh:=479 +613: set2 8737("2221) type=0 h:=7556996+630598=8187594, hh:=519 +616: set2 8574("217E) type=0 h:=8187594+630598=8818192, hh:=559 +619: set2 13377("3441) type=0 h:=8818192+630598=9448790, hh:=599 +622: set2 15226("3B7A) type=0 h:=9448790+630598=10079388, hh:=639 +[◆ ◆◇ あ◇ い◆◇ ◆◇漢字] +625: fntnum0 current font is ec-lmr10 +626: setchar83 ("53) h:=10079388+364085=10443473, hh:=662 +627: setchar97 ("61) h:=10443473+327680=10771153, hh:=683 +[Sa] +628: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +629: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +630: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +634: eop diff --git a/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ new file mode 100644 index 00000000000..cf8d08f7715 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-ea.typ @@ -0,0 +1,825 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 1055. +maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 50623 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114 +135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126 +136: w3 218453 h:=1984283+218453=2202736, hh:=140 +[A: ] +140: set1 197("C5) h:=2202736+491520=2694256, hh:=171 +142: set1 191("BF) h:=2694256+491520=3185776, hh:=202 +144: w0 218453 h:=3185776+218453=3404229, hh:=216 +[ ] +145: set1 197("C5) h:=3404229+491520=3895749, hh:=247 +147: set1 191("BF) h:=3895749+491520=4387269, hh:=278 +149: w0 218453 h:=4387269+218453=4605722, hh:=292 +[ ] +150: fntdef1 1: min10 +171: fntnum1 current font is min10 +172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332 +[䔿] +175: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +176: y3 786432 v:=655360+786432=1441792, vv:=91 +180: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +181: push +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +185: pop +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +186: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +190: fntnum0 current font is ec-lmr10 +191: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96 +193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114 +194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135 +195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158 +196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170 +197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193 +198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214 +199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226 +[\meaning.] +200: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +201: y0 786432 v:=1441792+786432=2228224, vv:=141 +202: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +203: right3 1310720 h:=0+1310720=1310720, hh:=83 +207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287 +216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308 +217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326 +218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342 +219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363 +220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375 +221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389 +222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421 +[ macro:->macro:->] +223: set1 197("C5) h:=6630046+491520=7121566, hh:=452 +225: set1 191("BF) h:=7121566+491520=7613086, hh:=483 +227: w3 218453 h:=7613086+218453=7831539, hh:=496 +[ ] +231: set1 197("C5) h:=7831539+491520=8323059, hh:=527 +233: set1 191("BF) h:=8323059+491520=8814579, hh:=558 +235: w0 218453 h:=8814579+218453=9033032, hh:=572 +[ ] +236: fntnum1 current font is min10 +237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612 +[䔿] +240: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +241: y0 786432 v:=2228224+786432=3014656, vv:=191 +242: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +243: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +247: fntnum0 current font is ec-lmr10 +248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +[macro:->] +256: set1 197("C5) h:=3970383+491520=4461903, hh:=283 +258: set1 191("BF) h:=4461903+491520=4953423, hh:=314 +260: w3 218453 h:=4953423+218453=5171876, hh:=328 +[ ] +264: set1 197("C5) h:=5171876+491520=5663396, hh:=359 +266: set1 191("BF) h:=5663396+491520=6154916, hh:=390 +268: w0 218453 h:=6154916+218453=6373369, hh:=404 +[ ] +269: fntnum1 current font is min10 +270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444 +[䔿] +273: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +274: y0 786432 v:=3014656+786432=3801088, vv:=241 +275: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +276: push +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +280: pop +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +281: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +285: fntnum0 current font is ec-lmr10 +286: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74 +288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95 +289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118 +290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141 +291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162 +292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197 +293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215 +294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227 +[\jobname.] +295: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +296: y0 786432 v:=3801088+786432=4587520, vv:=291 +297: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +298: push +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +299: fntnum1 current font is min10 +300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +303: pop +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +304: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +308: fntnum0 current font is ec-lmr10 +309: setchar111 ("6F) h:=630598+327680=958278, hh:=61 +310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84 +311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102 +312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114 +313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132 +314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148 +315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164 +316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182 +317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198 +318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210 +[oneletter.] +319: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +320: y0 786432 v:=4587520+786432=5373952, vv:=340 +321: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +322: right3 1310720 h:=0+1310720=1310720, hh:=83 +326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +327: set1 196("C4) h:=1638400+491520=2129920, hh:=135 +329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147 +330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168 +[.\] +331: set1 197("C5) h:=2639643+491520=3131163, hh:=199 +333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211 +334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232 +[.\] +335: set1 255("FF) h:=3640886+327680=3968566, hh:=253 +337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265 +338: right3 291271 h:=4150609+291271=4441880, hh:=281 +[. ] +342: set1 191("BF) h:=4441880+491520=4933400, hh:=312 +344: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +345: y0 786432 v:=5373952+786432=6160384, vv:=390 +346: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +347: push +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +348: fntnum1 current font is min10 +349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +352: pop +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +353: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +357: fntnum0 current font is ec-lmr10 +358: setchar99 ("63) h:=630598+291275=921873, hh:=58 +359: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192 +365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname1.] +366: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +367: y0 786432 v:=6160384+786432=6946816, vv:=440 +368: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +369: right3 1310720 h:=0+1310720=1310720, hh:=83 +373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +374: set1 197("C5) h:=1638400+491520=2129920, hh:=135 +376: set1 191("BF) h:=2129920+491520=2621440, hh:=166 +378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187 +[\] +379: set1 197("C5) h:=2949120+491520=3440640, hh:=218 +381: set1 191("BF) h:=3440640+491520=3932160, hh:=249 +383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261 +384: w3 218453 h:=4114203+218453=4332656, hh:=274 +388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295 +[, \] +389: set1 197("C5) h:=4660336+491520=5151856, hh:=326 +391: set1 191("BF) h:=5151856+491520=5643376, hh:=357 +393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369 +394: w0 218453 h:=5825419+218453=6043872, hh:=383 +395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404 +[, \] +396: fntnum1 current font is min10 +397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444 +[䔿] +400: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +401: y0 786432 v:=6946816+786432=7733248, vv:=490 +402: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +403: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +407: fntnum0 current font is ec-lmr10 +408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[\] +409: fntnum1 current font is min10 +410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144 +[␢] +413: fntnum0 current font is ec-lmr10 +414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176 +415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208 +416: right3 218453 h:=3288474+218453=3506927, hh:=222 +420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245 +421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266 +422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287 +423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305 +424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317 +[=> hoge,] +425: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +426: y0 786432 v:=7733248+786432=8519680, vv:=540 +427: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +428: right3 1310720 h:=0+1310720=1310720, hh:=83 +432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +433: set1 164("A4) h:=1638400+364085=2002485, hh:=127 +435: set1 162("A2) h:=2002485+291275=2293760, hh:=145 +437: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177 +438: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209 +439: right3 218453 h:=3313236+218453=3531689, hh:=224 +443: setchar112 ("70) h:=3531689+364085=3895774, hh:=247 +444: setchar105 ("69) h:=3895774+182043=4077817, hh:=259 +445: setchar121 ("79) h:=4077817+345898=4423715, hh:=281 +446: right2 -18205 h:=4423715-18205=4405510, hh:=280 +449: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301 +450: setchar44 ("2C) h:=4733190+182043=4915233, hh:=313 +[=> piyo,] +451: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +452: y0 786432 v:=8519680+786432=9306112, vv:=589 +453: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +454: right3 1310720 h:=0+1310720=1310720, hh:=83 +458: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +459: set1 164("A4) h:=1638400+364085=2002485, hh:=127 +461: set1 162("A2) h:=2002485+291275=2293760, hh:=145 +463: setchar61 ("3D) h:=2293760+509738=2803498, hh:=177 +464: setchar62 ("3E) h:=2803498+509738=3313236, hh:=209 +465: right3 218453 h:=3313236+218453=3531689, hh:=224 +469: setchar112 ("70) h:=3531689+364085=3895774, hh:=247 +470: setchar105 ("69) h:=3895774+182043=4077817, hh:=259 +471: setchar121 ("79) h:=4077817+345898=4423715, hh:=281 +472: right2 -18205 h:=4423715-18205=4405510, hh:=280 +475: setchar111 ("6F) h:=4405510+327680=4733190, hh:=301 +476: setchar46 ("2E) h:=4733190+182043=4915233, hh:=313 +[=> piyo.] +477: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +478: y0 786432 v:=9306112+786432=10092544, vv:=639 +479: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +480: push +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +481: fntnum1 current font is min10 +482: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +485: pop +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +486: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +490: fntnum0 current font is ec-lmr10 +491: setchar48 ("30) h:=630598+327680=958278, hh:=61 +492: setchar120 ("78) h:=958278+345898=1304176, hh:=83 +493: setchar70 ("46) h:=1304176+427818=1731994, hh:=110 +494: setchar70 ("46) h:=1731994+427818=2159812, hh:=137 +495: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149 +[0xFF.] +496: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +497: y0 786432 v:=10092544+786432=10878976, vv:=689 +498: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +499: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +503: fntnum1 current font is min10 +504: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +507: fntnum0 current font is ec-lmr10 +508: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +509: w3 218453 h:=2123361+218453=2341814, hh:=148 +513: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +514: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +515: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +517: set1 197("C5) h:=3252044+491520=3743564, hh:=237 +519: set1 255("FF) h:=3743564+327680=4071244, hh:=258 +521: set1 191("BF) h:=4071244+491520=4562764, hh:=289 +523: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301 +524: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336 +525: setchar97 ("61) h:=5290918+327680=5618598, hh:=357 +526: setchar99 ("63) h:=5618598+291275=5909873, hh:=375 +527: setchar114 ("72) h:=5909873+256683=6166556, hh:=391 +528: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412 +529: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424 +530: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438 +531: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470 +[:macro:->] +532: fntnum1 current font is min10 +533: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510 +[␢] +536: fntnum0 current font is ec-lmr10 +537: setchar41 ("29) h:=8035068+254870=8289938, hh:=526 +538: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538 +539: w0 218453 h:=8471981+218453=8690434, hh:=550 +540: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571 +[), \] +541: set1 255("FF) h:=9018114+327680=9345794, hh:=592 +543: set1 197("C5) h:=9345794+491520=9837314, hh:=623 +545: set1 255("FF) h:=9837314+327680=10164994, hh:=644 +547: set1 191("BF) h:=10164994+491520=10656514, hh:=675 +549: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687 +550: w0 218453 h:=10838557+218453=11057010, hh:=700 +551: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735 +552: setchar97 ("61) h:=11603121+327680=11930801, hh:=756 +553: setchar99 ("63) h:=11930801+291275=12222076, hh:=774 +554: setchar114 ("72) h:=12222076+256683=12478759, hh:=790 +555: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811 +556: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823 +557: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837 +558: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869 +559: setchar40 ("28) h:=13716673+254870=13971543, hh:=885 +560: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906 +[, macro:->(\] +561: set1 255("FF) h:=14299223+327680=14626903, hh:=927 +563: set1 197("C5) h:=14626903+491520=15118423, hh:=958 +565: set1 255("FF) h:=15118423+327680=15446103, hh:=979 +567: set1 191("BF) h:=15446103+491520=15937623, hh:=1010 +569: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022 +570: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057 +571: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078 +572: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096 +573: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112 +574: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133 +575: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145 +576: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159 +577: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191 +[:macro:->] +578: fntnum1 current font is min10 +579: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231 +[␢] +582: fntnum0 current font is ec-lmr10 +583: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247 +584: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259 +[).] +585: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +586: y0 786432 v:=10878976+786432=11665408, vv:=739 +587: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +588: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +592: fntnum1 current font is min10 +593: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +596: fntnum0 current font is ec-lmr10 +597: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +598: w3 218453 h:=2123361+218453=2341814, hh:=148 +602: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +603: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +604: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +606: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218 +607: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253 +608: setchar97 ("61) h:=3980198+327680=4307878, hh:=274 +609: setchar99 ("63) h:=4307878+291275=4599153, hh:=292 +610: setchar114 ("72) h:=4599153+256683=4855836, hh:=308 +611: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329 +612: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341 +613: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355 +614: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387 +[:macro:->] +615: fntnum1 current font is min10 +616: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427 +[] +619: fntnum0 current font is ec-lmr10 +620: setchar41 ("29) h:=6724348+254870=6979218, hh:=443 +621: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455 +622: w0 218453 h:=7161261+218453=7379714, hh:=467 +623: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488 +[), \] +624: set1 255("FF) h:=7707394+327680=8035074, hh:=509 +626: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521 +627: w0 218453 h:=8217117+218453=8435570, hh:=534 +628: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569 +629: setchar97 ("61) h:=8981681+327680=9309361, hh:=590 +630: setchar99 ("63) h:=9309361+291275=9600636, hh:=608 +631: setchar114 ("72) h:=9600636+256683=9857319, hh:=624 +632: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645 +633: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657 +634: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671 +635: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703 +636: setchar40 ("28) h:=11095233+254870=11350103, hh:=719 +637: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740 +[, macro:->(\] +638: set1 255("FF) h:=11677783+327680=12005463, hh:=761 +640: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773 +641: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808 +642: setchar97 ("61) h:=12733617+327680=13061297, hh:=829 +643: setchar99 ("63) h:=13061297+291275=13352572, hh:=847 +644: setchar114 ("72) h:=13352572+256683=13609255, hh:=863 +645: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884 +646: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896 +647: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910 +648: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942 +[:macro:->] +649: fntnum1 current font is min10 +650: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982 +[] +653: fntnum0 current font is ec-lmr10 +654: setchar41 ("29) h:=15477767+254870=15732637, hh:=998 +655: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010 +[).] +656: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +657: y0 786432 v:=11665408+786432=12451840, vv:=789 +658: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +659: push +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +660: fntnum1 current font is min10 +661: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +664: pop +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +665: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +669: fntnum0 current font is ec-lmr10 +670: setchar99 ("63) h:=630598+291275=921873, hh:=58 +671: setchar111 ("6F) h:=921873+327680=1249553, hh:=79 +672: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102 +673: right2 -18205 h:=1613638-18205=1595433, hh:=101 +676: setchar116 ("74) h:=1595433+254870=1850303, hh:=117 +677: setchar101 ("65) h:=1850303+291275=2141578, hh:=135 +678: setchar120 ("78) h:=2141578+345898=2487476, hh:=157 +679: setchar116 ("74) h:=2487476+254870=2742346, hh:=173 +680: setchar115 ("73) h:=2742346+258506=3000852, hh:=189 +681: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201 +[contexts.] +682: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +683: y0 786432 v:=12451840+786432=13238272, vv:=839 +684: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +685: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +689: fntnum1 current font is min10 +690: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +693: fntnum0 current font is ec-lmr10 +694: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +696: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +698: w3 218453 h:=2924358+218453=3142811, hh:=199 +702: setchar97 ("61) h:=3142811+327680=3470491, hh:=220 +[ a] +703: set1 197("C5) h:=3470491+491520=3962011, hh:=251 +705: set1 191("BF) h:=3962011+491520=4453531, hh:=282 +707: w0 218453 h:=4453531+218453=4671984, hh:=296 +[ ] +708: set1 197("C5) h:=4671984+491520=5163504, hh:=327 +710: set1 191("BF) h:=5163504+491520=5655024, hh:=358 +712: w0 218453 h:=5655024+218453=5873477, hh:=372 +[ ] +713: fntnum1 current font is min10 +714: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412 +717: w0 218453 h:=6504075+218453=6722528, hh:=426 +[䔿 ] +718: fntnum0 current font is ec-lmr10 +719: set1 197("C5) h:=6722528+491520=7214048, hh:=457 +721: set1 191("BF) h:=7214048+491520=7705568, hh:=488 +723: w0 218453 h:=7705568+218453=7924021, hh:=502 +[ ] +724: set1 197("C5) h:=7924021+491520=8415541, hh:=533 +726: set1 191("BF) h:=8415541+491520=8907061, hh:=564 +728: w0 218453 h:=8907061+218453=9125514, hh:=578 +[ ] +729: fntnum1 current font is min10 +730: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618 +733: x3 436906 h:=9756112+436906=10193018, hh:=646 +[䔿 ] +737: fntnum0 current font is ec-lmr10 +738: set1 197("C5) h:=10193018+491520=10684538, hh:=677 +740: set1 191("BF) h:=10684538+491520=11176058, hh:=708 +742: w0 218453 h:=11176058+218453=11394511, hh:=722 +[ ] +743: fntnum1 current font is min10 +744: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762 +747: x0 436906 h:=12025109+436906=12462015, hh:=789 +748: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829 +[䔿 ] +751: fntnum0 current font is ec-lmr10 +752: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864 +753: setchar97 ("61) h:=13638724+327680=13966404, hh:=885 +754: setchar99 ("63) h:=13966404+291275=14257679, hh:=903 +755: setchar114 ("72) h:=14257679+256683=14514362, hh:=919 +756: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940 +757: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952 +758: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966 +759: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998 +[macro:->] +760: set1 197("C5) h:=15752276+491520=16243796, hh:=1029 +762: set1 191("BF) h:=16243796+491520=16735316, hh:=1060 +764: w0 218453 h:=16735316+218453=16953769, hh:=1074 +[ ] +765: set1 197("C5) h:=16953769+491520=17445289, hh:=1105 +767: set1 191("BF) h:=17445289+491520=17936809, hh:=1136 +769: w0 218453 h:=17936809+218453=18155262, hh:=1150 +[ ] +770: fntnum1 current font is min10 +771: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190 +[䔿] +774: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +775: y0 786432 v:=13238272+786432=14024704, vv:=888 +776: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +777: right3 1310720 h:=0+1310720=1310720, hh:=83 +781: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[ ␢] +784: fntnum0 current font is ec-lmr10 +785: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +787: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +789: w3 218453 h:=2924358+218453=3142811, hh:=199 +[ ] +793: set1 197("C5) h:=3142811+491520=3634331, hh:=230 +795: set1 191("BF) h:=3634331+491520=4125851, hh:=261 +797: fntnum1 current font is min10 +798: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301 +[䔿] +801: fntnum0 current font is ec-lmr10 +802: set1 197("C5) h:=4756449+491520=5247969, hh:=332 +804: set1 191("BF) h:=5247969+491520=5739489, hh:=363 +806: w0 218453 h:=5739489+218453=5957942, hh:=377 +807: setchar97 ("61) h:=5957942+327680=6285622, hh:=398 +[ a] +808: set1 197("C5) h:=6285622+491520=6777142, hh:=429 +810: set1 191("BF) h:=6777142+491520=7268662, hh:=460 +812: w0 218453 h:=7268662+218453=7487115, hh:=474 +[ ] +813: set1 197("C5) h:=7487115+491520=7978635, hh:=505 +815: set1 191("BF) h:=7978635+491520=8470155, hh:=536 +817: w0 218453 h:=8470155+218453=8688608, hh:=550 +[ ] +818: fntnum1 current font is min10 +819: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590 +822: w0 218453 h:=9319206+218453=9537659, hh:=604 +[䔿 ] +823: fntnum0 current font is ec-lmr10 +824: set1 197("C5) h:=9537659+491520=10029179, hh:=635 +826: set1 191("BF) h:=10029179+491520=10520699, hh:=666 +828: w0 218453 h:=10520699+218453=10739152, hh:=680 +[ ] +829: set1 197("C5) h:=10739152+491520=11230672, hh:=711 +831: set1 191("BF) h:=11230672+491520=11722192, hh:=742 +833: w0 218453 h:=11722192+218453=11940645, hh:=756 +[ ] +834: fntnum1 current font is min10 +835: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796 +838: right3 436906 h:=12571243+436906=13008149, hh:=824 +[䔿 ] +842: fntnum0 current font is ec-lmr10 +843: set1 197("C5) h:=13008149+491520=13499669, hh:=855 +845: set1 191("BF) h:=13499669+491520=13991189, hh:=886 +847: w0 218453 h:=13991189+218453=14209642, hh:=900 +[ ] +848: fntnum1 current font is min10 +849: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940 +852: w0 218453 h:=14840240+218453=15058693, hh:=954 +853: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994 +[䔿 ] +856: fntnum0 current font is ec-lmr10 +857: set1 255("FF) h:=15689291+327680=16016971, hh:=1015 +859: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +860: y0 786432 v:=14024704+786432=14811136, vv:=938 +861: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +862: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +866: fntnum1 current font is min10 +867: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +870: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +871: y0 786432 v:=14811136+786432=15597568, vv:=988 +872: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +873: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +877: fntnum0 current font is ec-lmr10 +878: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +879: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +880: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +881: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +882: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +883: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +884: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +885: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +886: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +887: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[.a...c.b..] +888: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +889: y0 786432 v:=15597568+786432=16384000, vv:=1038 +890: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +891: right3 1310720 h:=0+1310720=1310720, hh:=83 +895: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +896: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +897: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +898: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +899: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +900: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +901: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +902: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +903: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +904: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[ .a...c.b..] +905: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +906: y0 786432 v:=16384000+786432=17170432, vv:=1088 +907: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +908: push +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +909: fntnum1 current font is min10 +910: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +913: pop +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +914: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +918: fntnum0 current font is ec-lmr10 +919: setchar99 ("63) h:=630598+291275=921873, hh:=58 +920: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +921: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +922: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +923: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +924: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +925: setchar50 ("32) h:=2709530+327680=3037210, hh:=192 +926: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname2.] +927: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +928: y0 786432 v:=17170432+786432=17956864, vv:=1137 +929: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +930: right3 1310720 h:=0+1310720=1310720, hh:=83 +934: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +935: setchar72 ("48) h:=1674805+491520=2166325, hh:=137 +936: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169 +937: right2 -18205 h:=2676063-18205=2657858, hh:=168 +940: setchar87 ("57) h:=2657858+673578=3331436, hh:=211 +941: right3 218453 h:=3331436+218453=3549889, hh:=225 +945: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237 +946: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249 +947: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261 +[ SHOW ...] +948: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +949: y0 786432 v:=17956864+786432=18743296, vv:=1187 +950: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +951: right3 1310720 h:=0+1310720=1310720, hh:=83 +955: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +956: setchar84 ("54) h:=1674805+473301=2148106, hh:=136 +957: setchar82 ("52) h:=2148106+482410=2630516, hh:=167 +958: setchar73 ("49) h:=2630516+236650=2867166, hh:=182 +959: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213 +960: setchar71 ("47) h:=3358686+514261=3872947, hh:=246 +961: right3 218453 h:=3872947+218453=4091400, hh:=259 +965: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280 +[ STRING \] +966: set1 197("C5) h:=4419080+491520=4910600, hh:=311 +968: set1 191("BF) h:=4910600+491520=5402120, hh:=342 +970: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354 +971: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375 +[.\] +972: fntnum1 current font is min10 +973: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415 +[䔿] +976: fntnum0 current font is ec-lmr10 +977: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427 +978: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448 +[.\] +979: set1 197("C5) h:=7052164+491520=7543684, hh:=479 +981: set1 191("BF) h:=7543684+491520=8035204, hh:=510 +983: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522 +984: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543 +[.\] +985: fntnum1 current font is min10 +986: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583 +[䔿] +989: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +990: y0 786432 v:=18743296+786432=19529728, vv:=1237 +991: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +992: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +996: fntnum0 current font is ec-lmr10 +997: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121 +998: setchar69 ("45) h:=1911488+446005=2357493, hh:=149 +999: setchar65 ("41) h:=2357493+491520=2849013, hh:=180 +1000: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211 +1001: setchar73 ("49) h:=3340533+236650=3577183, hh:=226 +1002: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257 +1003: setchar71 ("47) h:=4068703+514261=4582964, hh:=290 +1004: right3 218453 h:=4582964+218453=4801417, hh:=304 +1008: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339 +1009: setchar97 ("61) h:=5347528+327680=5675208, hh:=360 +1010: setchar99 ("63) h:=5675208+291275=5966483, hh:=378 +1011: setchar114 ("72) h:=5966483+256683=6223166, hh:=394 +1012: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415 +1013: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427 +1014: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441 +1015: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473 +1016: setchar97 ("61) h:=7461080+327680=7788760, hh:=494 +1017: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506 +1018: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541 +1019: setchar97 ("61) h:=8516914+327680=8844594, hh:=562 +1020: setchar99 ("63) h:=8844594+291275=9135869, hh:=580 +1021: setchar114 ("72) h:=9135869+256683=9392552, hh:=596 +1022: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617 +1023: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629 +1024: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643 +1025: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675 +1026: setchar98 ("62) h:=10630466+364085=10994551, hh:=698 +1027: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710 +1028: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745 +1029: setchar97 ("61) h:=11722705+327680=12050385, hh:=765 +1030: setchar99 ("63) h:=12050385+291275=12341660, hh:=783 +1031: setchar114 ("72) h:=12341660+256683=12598343, hh:=799 +1032: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820 +1033: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832 +1034: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846 +1035: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878 +1036: setchar97 ("61) h:=13836257+327680=14163937, hh:=899 +1037: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911 +1038: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945 +1039: setchar97 ("61) h:=14892091+327680=15219771, hh:=966 +1040: setchar99 ("63) h:=15219771+291275=15511046, hh:=984 +1041: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000 +1042: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021 +1043: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033 +1044: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047 +1045: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079 +1046: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102 +1047: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114 +[MEANING macro:->a.macro:->b.macro:->a.macro:->b.] +1048: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +1049: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1050: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1054: eop diff --git a/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ new file mode 100644 index 00000000000..9373f0bac64 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/p-pknj-sa.typ @@ -0,0 +1,829 @@ +Options selected: + Starting page = * + Maximum number of pages = 1000000 + Output level = 4 (the works) + Resolution = 300.00000000 pixels per inch +numerator/denominator=25400000/473628672 +magnification=1000; 0.00006334 pixels per DVI unit +' TeX output 20XX.XX.XX' +Postamble starts at byte 1061. +maxv=43725786, maxh=30785863, maxstackdepth=3, totalpages=1 +Font 1: min10 (JFM)---loaded at size 655360 DVI units +Font 0: ec-lmr10---loaded at size 655360 DVI units + +42: beginning of page 37726 +87: push +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +88: down3 -917504 v:=0-917504=-917504, vv:=-58 +92: pop +level 0:(h=0,v=0,w=0,x=0,y=0,z=0,hh=0,vv=0) +93: down4 42152922 v:=0+42152922=42152922, vv:=2670 +98: push +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +99: down4 -41497562 v:=42152922-41497562=655360, vv:=42 +104: push +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +105: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +109: fntdef1 0: ec-lmr10 +133: fntnum0 current font is ec-lmr10 +134: setchar65 ("41) h:=1310720+491520=1802240, hh:=114 +135: setchar58 ("3A) h:=1802240+182043=1984283, hh:=126 +136: w3 218453 h:=1984283+218453=2202736, hh:=140 +[A: ] +140: set1 197("C5) h:=2202736+491520=2694256, hh:=171 +142: set1 191("BF) h:=2694256+491520=3185776, hh:=202 +144: w0 218453 h:=3185776+218453=3404229, hh:=216 +[ ] +145: set1 197("C5) h:=3404229+491520=3895749, hh:=247 +147: set1 191("BF) h:=3895749+491520=4387269, hh:=278 +149: w0 218453 h:=4387269+218453=4605722, hh:=292 +[ ] +150: fntdef1 1: min10 +171: fntnum1 current font is min10 +172: set2 17727("453F) type=0 h:=4605722+630598=5236320, hh:=332 +[䔿] +175: pop +level 1:(h=0,v=655360,w=0,x=0,y=0,z=0,hh=0,vv=42) +176: y3 786432 v:=655360+786432=1441792, vv:=91 +180: push +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +181: push +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +182: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +185: pop +level 2:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +186: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +190: fntnum0 current font is ec-lmr10 +191: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +192: setchar109 ("6D) h:=958278+546111=1504389, hh:=96 +193: setchar101 ("65) h:=1504389+291275=1795664, hh:=114 +194: setchar97 ("61) h:=1795664+327680=2123344, hh:=135 +195: setchar110 ("6E) h:=2123344+364085=2487429, hh:=158 +196: setchar105 ("69) h:=2487429+182043=2669472, hh:=170 +197: setchar110 ("6E) h:=2669472+364085=3033557, hh:=193 +198: setchar103 ("67) h:=3033557+327680=3361237, hh:=214 +199: setchar46 ("2E) h:=3361237+182043=3543280, hh:=226 +[\meaning.] +200: pop +level 1:(h=0,v=1441792,w=0,x=0,y=786432,z=0,hh=0,vv=91) +201: y0 786432 v:=1441792+786432=2228224, vv:=141 +202: push +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +203: right3 1310720 h:=0+1310720=1310720, hh:=83 +207: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +208: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +209: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +210: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +211: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +212: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +213: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +214: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +215: setchar109 ("6D) h:=3970383+546111=4516494, hh:=287 +216: setchar97 ("61) h:=4516494+327680=4844174, hh:=308 +217: setchar99 ("63) h:=4844174+291275=5135449, hh:=326 +218: setchar114 ("72) h:=5135449+256683=5392132, hh:=342 +219: setchar111 ("6F) h:=5392132+327680=5719812, hh:=363 +220: setchar58 ("3A) h:=5719812+182043=5901855, hh:=375 +221: setchar45 ("2D) h:=5901855+218453=6120308, hh:=389 +222: setchar62 ("3E) h:=6120308+509738=6630046, hh:=421 +[ macro:->macro:->] +223: set1 197("C5) h:=6630046+491520=7121566, hh:=452 +225: set1 191("BF) h:=7121566+491520=7613086, hh:=483 +227: w3 218453 h:=7613086+218453=7831539, hh:=496 +[ ] +231: set1 197("C5) h:=7831539+491520=8323059, hh:=527 +233: set1 191("BF) h:=8323059+491520=8814579, hh:=558 +235: w0 218453 h:=8814579+218453=9033032, hh:=572 +[ ] +236: fntnum1 current font is min10 +237: set2 17727("453F) type=0 h:=9033032+630598=9663630, hh:=612 +[䔿] +240: pop +level 1:(h=0,v=2228224,w=0,x=0,y=786432,z=0,hh=0,vv=141) +241: y0 786432 v:=2228224+786432=3014656, vv:=191 +242: push +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +243: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +247: fntnum0 current font is ec-lmr10 +248: setchar109 ("6D) h:=1310720+546111=1856831, hh:=118 +249: setchar97 ("61) h:=1856831+327680=2184511, hh:=139 +250: setchar99 ("63) h:=2184511+291275=2475786, hh:=157 +251: setchar114 ("72) h:=2475786+256683=2732469, hh:=173 +252: setchar111 ("6F) h:=2732469+327680=3060149, hh:=194 +253: setchar58 ("3A) h:=3060149+182043=3242192, hh:=206 +254: setchar45 ("2D) h:=3242192+218453=3460645, hh:=220 +255: setchar62 ("3E) h:=3460645+509738=3970383, hh:=252 +[macro:->] +256: set1 197("C5) h:=3970383+491520=4461903, hh:=283 +258: set1 191("BF) h:=4461903+491520=4953423, hh:=314 +260: w3 218453 h:=4953423+218453=5171876, hh:=328 +[ ] +264: set1 197("C5) h:=5171876+491520=5663396, hh:=359 +266: set1 191("BF) h:=5663396+491520=6154916, hh:=390 +268: w0 218453 h:=6154916+218453=6373369, hh:=404 +[ ] +269: fntnum1 current font is min10 +270: set2 17727("453F) type=0 h:=6373369+630598=7003967, hh:=444 +[䔿] +273: pop +level 1:(h=0,v=3014656,w=0,x=0,y=786432,z=0,hh=0,vv=191) +274: y0 786432 v:=3014656+786432=3801088, vv:=241 +275: push +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +276: push +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +277: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +280: pop +level 2:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +281: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +285: fntnum0 current font is ec-lmr10 +286: setchar92 ("5C) h:=630598+327680=958278, hh:=61 +287: setchar106 ("6A) h:=958278+200245=1158523, hh:=74 +288: setchar111 ("6F) h:=1158523+327680=1486203, hh:=95 +289: setchar98 ("62) h:=1486203+364085=1850288, hh:=118 +290: setchar110 ("6E) h:=1850288+364085=2214373, hh:=141 +291: setchar97 ("61) h:=2214373+327680=2542053, hh:=162 +292: setchar109 ("6D) h:=2542053+546111=3088164, hh:=197 +293: setchar101 ("65) h:=3088164+291275=3379439, hh:=215 +294: setchar46 ("2E) h:=3379439+182043=3561482, hh:=227 +[\jobname.] +295: pop +level 1:(h=0,v=3801088,w=0,x=0,y=786432,z=0,hh=0,vv=241) +296: y0 786432 v:=3801088+786432=4587520, vv:=291 +297: push +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +298: push +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +299: fntnum1 current font is min10 +300: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +303: pop +level 2:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +304: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +308: fntnum0 current font is ec-lmr10 +309: setchar111 ("6F) h:=630598+327680=958278, hh:=61 +310: setchar110 ("6E) h:=958278+364085=1322363, hh:=84 +311: setchar101 ("65) h:=1322363+291275=1613638, hh:=102 +312: setchar108 ("6C) h:=1613638+182043=1795681, hh:=114 +313: setchar101 ("65) h:=1795681+291275=2086956, hh:=132 +314: setchar116 ("74) h:=2086956+254870=2341826, hh:=148 +315: setchar116 ("74) h:=2341826+254870=2596696, hh:=164 +316: setchar101 ("65) h:=2596696+291275=2887971, hh:=182 +317: setchar114 ("72) h:=2887971+256683=3144654, hh:=198 +318: setchar46 ("2E) h:=3144654+182043=3326697, hh:=210 +[oneletter.] +319: pop +level 1:(h=0,v=4587520,w=0,x=0,y=786432,z=0,hh=0,vv=291) +320: y0 786432 v:=4587520+786432=5373952, vv:=340 +321: push +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +322: right3 1310720 h:=0+1310720=1310720, hh:=83 +326: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +327: set1 196("C4) h:=1638400+491520=2129920, hh:=135 +329: setchar46 ("2E) h:=2129920+182043=2311963, hh:=147 +330: setchar92 ("5C) h:=2311963+327680=2639643, hh:=168 +[.\] +331: set1 197("C5) h:=2639643+491520=3131163, hh:=199 +333: setchar46 ("2E) h:=3131163+182043=3313206, hh:=211 +334: setchar92 ("5C) h:=3313206+327680=3640886, hh:=232 +[.\] +335: set1 255("FF) h:=3640886+327680=3968566, hh:=253 +337: setchar46 ("2E) h:=3968566+182043=4150609, hh:=265 +338: right3 291271 h:=4150609+291271=4441880, hh:=281 +[. ] +342: set1 191("BF) h:=4441880+491520=4933400, hh:=312 +344: pop +level 1:(h=0,v=5373952,w=0,x=0,y=786432,z=0,hh=0,vv=340) +345: y0 786432 v:=5373952+786432=6160384, vv:=390 +346: push +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +347: push +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +348: fntnum1 current font is min10 +349: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +352: pop +level 2:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +353: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +357: fntnum0 current font is ec-lmr10 +358: setchar99 ("63) h:=630598+291275=921873, hh:=58 +359: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +360: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +361: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +362: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +363: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +364: setchar49 ("31) h:=2709530+327680=3037210, hh:=192 +365: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname1.] +366: pop +level 1:(h=0,v=6160384,w=0,x=0,y=786432,z=0,hh=0,vv=390) +367: y0 786432 v:=6160384+786432=6946816, vv:=440 +368: push +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +369: right3 1310720 h:=0+1310720=1310720, hh:=83 +373: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +374: set1 197("C5) h:=1638400+491520=2129920, hh:=135 +376: set1 191("BF) h:=2129920+491520=2621440, hh:=166 +378: setchar92 ("5C) h:=2621440+327680=2949120, hh:=187 +[\] +379: set1 197("C5) h:=2949120+491520=3440640, hh:=218 +381: set1 191("BF) h:=3440640+491520=3932160, hh:=249 +383: setchar44 ("2C) h:=3932160+182043=4114203, hh:=261 +384: w3 218453 h:=4114203+218453=4332656, hh:=274 +388: setchar92 ("5C) h:=4332656+327680=4660336, hh:=295 +[, \] +389: set1 197("C5) h:=4660336+491520=5151856, hh:=326 +391: set1 191("BF) h:=5151856+491520=5643376, hh:=357 +393: setchar44 ("2C) h:=5643376+182043=5825419, hh:=369 +394: w0 218453 h:=5825419+218453=6043872, hh:=383 +395: setchar92 ("5C) h:=6043872+327680=6371552, hh:=404 +[, \] +396: fntnum1 current font is min10 +397: set2 17727("453F) type=0 h:=6371552+630598=7002150, hh:=444 +[䔿] +400: pop +level 1:(h=0,v=6946816,w=0,x=0,y=786432,z=0,hh=0,vv=440) +401: y0 786432 v:=6946816+786432=7733248, vv:=490 +402: push +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +403: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +407: fntnum0 current font is ec-lmr10 +408: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[\] +409: fntnum1 current font is min10 +410: set2 9250("2422) type=0 h:=1638400+630598=2268998, hh:=144 +[␢] +413: fntnum0 current font is ec-lmr10 +414: setchar61 ("3D) h:=2268998+509738=2778736, hh:=176 +415: setchar62 ("3E) h:=2778736+509738=3288474, hh:=208 +416: right3 218453 h:=3288474+218453=3506927, hh:=222 +420: setchar104 ("68) h:=3506927+364085=3871012, hh:=245 +421: setchar111 ("6F) h:=3871012+327680=4198692, hh:=266 +422: setchar103 ("67) h:=4198692+327680=4526372, hh:=287 +423: setchar101 ("65) h:=4526372+291275=4817647, hh:=305 +424: setchar44 ("2C) h:=4817647+182043=4999690, hh:=317 +[=> hoge,] +425: pop +level 1:(h=0,v=7733248,w=0,x=0,y=786432,z=0,hh=0,vv=490) +426: y0 786432 v:=7733248+786432=8519680, vv:=540 +427: push +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +428: right3 1310720 h:=0+1310720=1310720, hh:=83 +432: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +433: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +435: set1 129("81) h:=1966080+491520=2457600, hh:=156 +437: w2 -18205 h:=2457600-18205=2439395, hh:=155 +440: set1 130("82) h:=2439395+473301=2912696, hh:=185 +442: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +443: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +444: right3 218453 h:=3932172+218453=4150625, hh:=263 +448: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +449: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +450: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +451: w0 -18205 h:=5042651-18205=5024446, hh:=319 +452: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +453: setchar44 ("2C) h:=5352126+182043=5534169, hh:=352 +[=> piyo,] +454: pop +level 1:(h=0,v=8519680,w=0,x=0,y=786432,z=0,hh=0,vv=540) +455: y0 786432 v:=8519680+786432=9306112, vv:=589 +456: push +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +457: right3 1310720 h:=0+1310720=1310720, hh:=83 +461: setchar92 ("5C) h:=1310720+327680=1638400, hh:=104 +[ \] +462: set1 227("E3) h:=1638400+327680=1966080, hh:=125 +464: set1 129("81) h:=1966080+491520=2457600, hh:=156 +466: w2 -18205 h:=2457600-18205=2439395, hh:=155 +469: set1 130("82) h:=2439395+473301=2912696, hh:=185 +471: setchar61 ("3D) h:=2912696+509738=3422434, hh:=217 +472: setchar62 ("3E) h:=3422434+509738=3932172, hh:=249 +473: right3 218453 h:=3932172+218453=4150625, hh:=263 +477: setchar112 ("70) h:=4150625+364085=4514710, hh:=286 +478: setchar105 ("69) h:=4514710+182043=4696753, hh:=298 +479: setchar121 ("79) h:=4696753+345898=5042651, hh:=320 +480: w0 -18205 h:=5042651-18205=5024446, hh:=319 +481: setchar111 ("6F) h:=5024446+327680=5352126, hh:=340 +482: setchar46 ("2E) h:=5352126+182043=5534169, hh:=352 +[=> piyo.] +483: pop +level 1:(h=0,v=9306112,w=0,x=0,y=786432,z=0,hh=0,vv=589) +484: y0 786432 v:=9306112+786432=10092544, vv:=639 +485: push +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +486: push +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +487: fntnum1 current font is min10 +488: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +491: pop +level 2:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +492: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +496: fntnum0 current font is ec-lmr10 +497: setchar48 ("30) h:=630598+327680=958278, hh:=61 +498: setchar120 ("78) h:=958278+345898=1304176, hh:=83 +499: setchar70 ("46) h:=1304176+427818=1731994, hh:=110 +500: setchar70 ("46) h:=1731994+427818=2159812, hh:=137 +501: setchar46 ("2E) h:=2159812+182043=2341855, hh:=149 +[0xFF.] +502: pop +level 1:(h=0,v=10092544,w=0,x=0,y=786432,z=0,hh=0,vv=639) +503: y0 786432 v:=10092544+786432=10878976, vv:=689 +504: push +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +505: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +509: fntnum1 current font is min10 +510: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +513: fntnum0 current font is ec-lmr10 +514: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +515: w3 218453 h:=2123361+218453=2341814, hh:=148 +519: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +520: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +521: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +523: set1 197("C5) h:=3252044+491520=3743564, hh:=237 +525: set1 255("FF) h:=3743564+327680=4071244, hh:=258 +527: set1 191("BF) h:=4071244+491520=4562764, hh:=289 +529: setchar58 ("3A) h:=4562764+182043=4744807, hh:=301 +530: setchar109 ("6D) h:=4744807+546111=5290918, hh:=336 +531: setchar97 ("61) h:=5290918+327680=5618598, hh:=357 +532: setchar99 ("63) h:=5618598+291275=5909873, hh:=375 +533: setchar114 ("72) h:=5909873+256683=6166556, hh:=391 +534: setchar111 ("6F) h:=6166556+327680=6494236, hh:=412 +535: setchar58 ("3A) h:=6494236+182043=6676279, hh:=424 +536: setchar45 ("2D) h:=6676279+218453=6894732, hh:=438 +537: setchar62 ("3E) h:=6894732+509738=7404470, hh:=470 +[:macro:->] +538: fntnum1 current font is min10 +539: set2 9250("2422) type=0 h:=7404470+630598=8035068, hh:=510 +[␢] +542: fntnum0 current font is ec-lmr10 +543: setchar41 ("29) h:=8035068+254870=8289938, hh:=526 +544: setchar44 ("2C) h:=8289938+182043=8471981, hh:=538 +545: w0 218453 h:=8471981+218453=8690434, hh:=550 +546: setchar92 ("5C) h:=8690434+327680=9018114, hh:=571 +[), \] +547: set1 255("FF) h:=9018114+327680=9345794, hh:=592 +549: set1 197("C5) h:=9345794+491520=9837314, hh:=623 +551: set1 255("FF) h:=9837314+327680=10164994, hh:=644 +553: set1 191("BF) h:=10164994+491520=10656514, hh:=675 +555: setchar44 ("2C) h:=10656514+182043=10838557, hh:=687 +556: w0 218453 h:=10838557+218453=11057010, hh:=700 +557: setchar109 ("6D) h:=11057010+546111=11603121, hh:=735 +558: setchar97 ("61) h:=11603121+327680=11930801, hh:=756 +559: setchar99 ("63) h:=11930801+291275=12222076, hh:=774 +560: setchar114 ("72) h:=12222076+256683=12478759, hh:=790 +561: setchar111 ("6F) h:=12478759+327680=12806439, hh:=811 +562: setchar58 ("3A) h:=12806439+182043=12988482, hh:=823 +563: setchar45 ("2D) h:=12988482+218453=13206935, hh:=837 +564: setchar62 ("3E) h:=13206935+509738=13716673, hh:=869 +565: setchar40 ("28) h:=13716673+254870=13971543, hh:=885 +566: setchar92 ("5C) h:=13971543+327680=14299223, hh:=906 +[, macro:->(\] +567: set1 255("FF) h:=14299223+327680=14626903, hh:=927 +569: set1 197("C5) h:=14626903+491520=15118423, hh:=958 +571: set1 255("FF) h:=15118423+327680=15446103, hh:=979 +573: set1 191("BF) h:=15446103+491520=15937623, hh:=1010 +575: setchar58 ("3A) h:=15937623+182043=16119666, hh:=1022 +576: setchar109 ("6D) h:=16119666+546111=16665777, hh:=1057 +577: setchar97 ("61) h:=16665777+327680=16993457, hh:=1078 +578: setchar99 ("63) h:=16993457+291275=17284732, hh:=1096 +579: setchar114 ("72) h:=17284732+256683=17541415, hh:=1112 +580: setchar111 ("6F) h:=17541415+327680=17869095, hh:=1133 +581: setchar58 ("3A) h:=17869095+182043=18051138, hh:=1145 +582: setchar45 ("2D) h:=18051138+218453=18269591, hh:=1159 +583: setchar62 ("3E) h:=18269591+509738=18779329, hh:=1191 +[:macro:->] +584: fntnum1 current font is min10 +585: set2 9250("2422) type=0 h:=18779329+630598=19409927, hh:=1231 +[␢] +588: fntnum0 current font is ec-lmr10 +589: setchar41 ("29) h:=19409927+254870=19664797, hh:=1247 +590: setchar46 ("2E) h:=19664797+182043=19846840, hh:=1259 +[).] +591: pop +level 1:(h=0,v=10878976,w=0,x=0,y=786432,z=0,hh=0,vv=689) +592: y0 786432 v:=10878976+786432=11665408, vv:=739 +593: push +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +594: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +598: fntnum1 current font is min10 +599: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +602: fntnum0 current font is ec-lmr10 +603: setchar44 ("2C) h:=1941318+182043=2123361, hh:=135 +604: w3 218453 h:=2123361+218453=2341814, hh:=148 +608: setchar40 ("28) h:=2341814+254870=2596684, hh:=164 +609: setchar92 ("5C) h:=2596684+327680=2924364, hh:=185 +[, (\] +610: set1 255("FF) h:=2924364+327680=3252044, hh:=206 +612: setchar58 ("3A) h:=3252044+182043=3434087, hh:=218 +613: setchar109 ("6D) h:=3434087+546111=3980198, hh:=253 +614: setchar97 ("61) h:=3980198+327680=4307878, hh:=274 +615: setchar99 ("63) h:=4307878+291275=4599153, hh:=292 +616: setchar114 ("72) h:=4599153+256683=4855836, hh:=308 +617: setchar111 ("6F) h:=4855836+327680=5183516, hh:=329 +618: setchar58 ("3A) h:=5183516+182043=5365559, hh:=341 +619: setchar45 ("2D) h:=5365559+218453=5584012, hh:=355 +620: setchar62 ("3E) h:=5584012+509738=6093750, hh:=387 +[:macro:->] +621: fntnum1 current font is min10 +622: set2 9252("2424) type=0 h:=6093750+630598=6724348, hh:=427 +[] +625: fntnum0 current font is ec-lmr10 +626: setchar41 ("29) h:=6724348+254870=6979218, hh:=443 +627: setchar44 ("2C) h:=6979218+182043=7161261, hh:=455 +628: w0 218453 h:=7161261+218453=7379714, hh:=467 +629: setchar92 ("5C) h:=7379714+327680=7707394, hh:=488 +[), \] +630: set1 255("FF) h:=7707394+327680=8035074, hh:=509 +632: setchar44 ("2C) h:=8035074+182043=8217117, hh:=521 +633: w0 218453 h:=8217117+218453=8435570, hh:=534 +634: setchar109 ("6D) h:=8435570+546111=8981681, hh:=569 +635: setchar97 ("61) h:=8981681+327680=9309361, hh:=590 +636: setchar99 ("63) h:=9309361+291275=9600636, hh:=608 +637: setchar114 ("72) h:=9600636+256683=9857319, hh:=624 +638: setchar111 ("6F) h:=9857319+327680=10184999, hh:=645 +639: setchar58 ("3A) h:=10184999+182043=10367042, hh:=657 +640: setchar45 ("2D) h:=10367042+218453=10585495, hh:=671 +641: setchar62 ("3E) h:=10585495+509738=11095233, hh:=703 +642: setchar40 ("28) h:=11095233+254870=11350103, hh:=719 +643: setchar92 ("5C) h:=11350103+327680=11677783, hh:=740 +[, macro:->(\] +644: set1 255("FF) h:=11677783+327680=12005463, hh:=761 +646: setchar58 ("3A) h:=12005463+182043=12187506, hh:=773 +647: setchar109 ("6D) h:=12187506+546111=12733617, hh:=808 +648: setchar97 ("61) h:=12733617+327680=13061297, hh:=829 +649: setchar99 ("63) h:=13061297+291275=13352572, hh:=847 +650: setchar114 ("72) h:=13352572+256683=13609255, hh:=863 +651: setchar111 ("6F) h:=13609255+327680=13936935, hh:=884 +652: setchar58 ("3A) h:=13936935+182043=14118978, hh:=896 +653: setchar45 ("2D) h:=14118978+218453=14337431, hh:=910 +654: setchar62 ("3E) h:=14337431+509738=14847169, hh:=942 +[:macro:->] +655: fntnum1 current font is min10 +656: set2 9252("2424) type=0 h:=14847169+630598=15477767, hh:=982 +[] +659: fntnum0 current font is ec-lmr10 +660: setchar41 ("29) h:=15477767+254870=15732637, hh:=998 +661: setchar46 ("2E) h:=15732637+182043=15914680, hh:=1010 +[).] +662: pop +level 1:(h=0,v=11665408,w=0,x=0,y=786432,z=0,hh=0,vv=739) +663: y0 786432 v:=11665408+786432=12451840, vv:=789 +664: push +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +665: push +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +666: fntnum1 current font is min10 +667: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +670: pop +level 2:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +671: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +675: fntnum0 current font is ec-lmr10 +676: setchar99 ("63) h:=630598+291275=921873, hh:=58 +677: setchar111 ("6F) h:=921873+327680=1249553, hh:=79 +678: setchar110 ("6E) h:=1249553+364085=1613638, hh:=102 +679: right2 -18205 h:=1613638-18205=1595433, hh:=101 +682: setchar116 ("74) h:=1595433+254870=1850303, hh:=117 +683: setchar101 ("65) h:=1850303+291275=2141578, hh:=135 +684: setchar120 ("78) h:=2141578+345898=2487476, hh:=157 +685: setchar116 ("74) h:=2487476+254870=2742346, hh:=173 +686: setchar115 ("73) h:=2742346+258506=3000852, hh:=189 +687: setchar46 ("2E) h:=3000852+182043=3182895, hh:=201 +[contexts.] +688: pop +level 1:(h=0,v=12451840,w=0,x=0,y=786432,z=0,hh=0,vv=789) +689: y0 786432 v:=12451840+786432=13238272, vv:=839 +690: push +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +691: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +695: fntnum1 current font is min10 +696: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[␢] +699: fntnum0 current font is ec-lmr10 +700: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +702: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +704: w3 218453 h:=2924358+218453=3142811, hh:=199 +708: setchar97 ("61) h:=3142811+327680=3470491, hh:=220 +[ a] +709: set1 197("C5) h:=3470491+491520=3962011, hh:=251 +711: set1 191("BF) h:=3962011+491520=4453531, hh:=282 +713: w0 218453 h:=4453531+218453=4671984, hh:=296 +[ ] +714: set1 197("C5) h:=4671984+491520=5163504, hh:=327 +716: set1 191("BF) h:=5163504+491520=5655024, hh:=358 +718: w0 218453 h:=5655024+218453=5873477, hh:=372 +[ ] +719: fntnum1 current font is min10 +720: set2 17727("453F) type=0 h:=5873477+630598=6504075, hh:=412 +723: w0 218453 h:=6504075+218453=6722528, hh:=426 +[䔿 ] +724: fntnum0 current font is ec-lmr10 +725: set1 197("C5) h:=6722528+491520=7214048, hh:=457 +727: set1 191("BF) h:=7214048+491520=7705568, hh:=488 +729: w0 218453 h:=7705568+218453=7924021, hh:=502 +[ ] +730: set1 197("C5) h:=7924021+491520=8415541, hh:=533 +732: set1 191("BF) h:=8415541+491520=8907061, hh:=564 +734: w0 218453 h:=8907061+218453=9125514, hh:=578 +[ ] +735: fntnum1 current font is min10 +736: set2 17727("453F) type=0 h:=9125514+630598=9756112, hh:=618 +739: x3 436906 h:=9756112+436906=10193018, hh:=646 +[䔿 ] +743: fntnum0 current font is ec-lmr10 +744: set1 197("C5) h:=10193018+491520=10684538, hh:=677 +746: set1 191("BF) h:=10684538+491520=11176058, hh:=708 +748: w0 218453 h:=11176058+218453=11394511, hh:=722 +[ ] +749: fntnum1 current font is min10 +750: set2 17727("453F) type=0 h:=11394511+630598=12025109, hh:=762 +753: x0 436906 h:=12025109+436906=12462015, hh:=789 +754: set2 9252("2424) type=0 h:=12462015+630598=13092613, hh:=829 +[䔿 ] +757: fntnum0 current font is ec-lmr10 +758: setchar109 ("6D) h:=13092613+546111=13638724, hh:=864 +759: setchar97 ("61) h:=13638724+327680=13966404, hh:=885 +760: setchar99 ("63) h:=13966404+291275=14257679, hh:=903 +761: setchar114 ("72) h:=14257679+256683=14514362, hh:=919 +762: setchar111 ("6F) h:=14514362+327680=14842042, hh:=940 +763: setchar58 ("3A) h:=14842042+182043=15024085, hh:=952 +764: setchar45 ("2D) h:=15024085+218453=15242538, hh:=966 +765: setchar62 ("3E) h:=15242538+509738=15752276, hh:=998 +[macro:->] +766: set1 197("C5) h:=15752276+491520=16243796, hh:=1029 +768: set1 191("BF) h:=16243796+491520=16735316, hh:=1060 +770: w0 218453 h:=16735316+218453=16953769, hh:=1074 +[ ] +771: set1 197("C5) h:=16953769+491520=17445289, hh:=1105 +773: set1 191("BF) h:=17445289+491520=17936809, hh:=1136 +775: w0 218453 h:=17936809+218453=18155262, hh:=1150 +[ ] +776: fntnum1 current font is min10 +777: set2 17727("453F) type=0 h:=18155262+630598=18785860, hh:=1190 +[䔿] +780: pop +level 1:(h=0,v=13238272,w=0,x=0,y=786432,z=0,hh=0,vv=839) +781: y0 786432 v:=13238272+786432=14024704, vv:=888 +782: push +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +783: right3 1310720 h:=0+1310720=1310720, hh:=83 +787: set2 9250("2422) type=0 h:=1310720+630598=1941318, hh:=123 +[ ␢] +790: fntnum0 current font is ec-lmr10 +791: set1 197("C5) h:=1941318+491520=2432838, hh:=154 +793: set1 191("BF) h:=2432838+491520=2924358, hh:=185 +795: w3 218453 h:=2924358+218453=3142811, hh:=199 +[ ] +799: set1 197("C5) h:=3142811+491520=3634331, hh:=230 +801: set1 191("BF) h:=3634331+491520=4125851, hh:=261 +803: fntnum1 current font is min10 +804: set2 17727("453F) type=0 h:=4125851+630598=4756449, hh:=301 +[䔿] +807: fntnum0 current font is ec-lmr10 +808: set1 197("C5) h:=4756449+491520=5247969, hh:=332 +810: set1 191("BF) h:=5247969+491520=5739489, hh:=363 +812: w0 218453 h:=5739489+218453=5957942, hh:=377 +813: setchar97 ("61) h:=5957942+327680=6285622, hh:=398 +[ a] +814: set1 197("C5) h:=6285622+491520=6777142, hh:=429 +816: set1 191("BF) h:=6777142+491520=7268662, hh:=460 +818: w0 218453 h:=7268662+218453=7487115, hh:=474 +[ ] +819: set1 197("C5) h:=7487115+491520=7978635, hh:=505 +821: set1 191("BF) h:=7978635+491520=8470155, hh:=536 +823: w0 218453 h:=8470155+218453=8688608, hh:=550 +[ ] +824: fntnum1 current font is min10 +825: set2 17727("453F) type=0 h:=8688608+630598=9319206, hh:=590 +828: w0 218453 h:=9319206+218453=9537659, hh:=604 +[䔿 ] +829: fntnum0 current font is ec-lmr10 +830: set1 197("C5) h:=9537659+491520=10029179, hh:=635 +832: set1 191("BF) h:=10029179+491520=10520699, hh:=666 +834: w0 218453 h:=10520699+218453=10739152, hh:=680 +[ ] +835: set1 197("C5) h:=10739152+491520=11230672, hh:=711 +837: set1 191("BF) h:=11230672+491520=11722192, hh:=742 +839: w0 218453 h:=11722192+218453=11940645, hh:=756 +[ ] +840: fntnum1 current font is min10 +841: set2 17727("453F) type=0 h:=11940645+630598=12571243, hh:=796 +844: right3 436906 h:=12571243+436906=13008149, hh:=824 +[䔿 ] +848: fntnum0 current font is ec-lmr10 +849: set1 197("C5) h:=13008149+491520=13499669, hh:=855 +851: set1 191("BF) h:=13499669+491520=13991189, hh:=886 +853: w0 218453 h:=13991189+218453=14209642, hh:=900 +[ ] +854: fntnum1 current font is min10 +855: set2 17727("453F) type=0 h:=14209642+630598=14840240, hh:=940 +858: w0 218453 h:=14840240+218453=15058693, hh:=954 +859: set2 9252("2424) type=0 h:=15058693+630598=15689291, hh:=994 +[䔿 ] +862: fntnum0 current font is ec-lmr10 +863: set1 255("FF) h:=15689291+327680=16016971, hh:=1015 +865: pop +level 1:(h=0,v=14024704,w=0,x=0,y=786432,z=0,hh=0,vv=888) +866: y0 786432 v:=14024704+786432=14811136, vv:=938 +867: push +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +868: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +872: fntnum1 current font is min10 +873: set2 9252("2424) type=0 h:=1310720+630598=1941318, hh:=123 +[] +876: pop +level 1:(h=0,v=14811136,w=0,x=0,y=786432,z=0,hh=0,vv=938) +877: y0 786432 v:=14811136+786432=15597568, vv:=988 +878: push +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +879: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +883: fntnum0 current font is ec-lmr10 +884: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +885: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +886: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +887: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +888: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +889: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +890: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +891: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +892: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +893: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[.a...c.b..] +894: pop +level 1:(h=0,v=15597568,w=0,x=0,y=786432,z=0,hh=0,vv=988) +895: y0 786432 v:=15597568+786432=16384000, vv:=1038 +896: push +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +897: right3 1310720 h:=0+1310720=1310720, hh:=83 +901: setchar46 ("2E) h:=1310720+182043=1492763, hh:=95 +902: setchar97 ("61) h:=1492763+327680=1820443, hh:=116 +903: setchar46 ("2E) h:=1820443+182043=2002486, hh:=128 +904: setchar46 ("2E) h:=2002486+182043=2184529, hh:=140 +905: setchar46 ("2E) h:=2184529+182043=2366572, hh:=152 +906: setchar99 ("63) h:=2366572+291275=2657847, hh:=170 +907: setchar46 ("2E) h:=2657847+182043=2839890, hh:=182 +908: setchar98 ("62) h:=2839890+364085=3203975, hh:=205 +909: setchar46 ("2E) h:=3203975+182043=3386018, hh:=216 +910: setchar46 ("2E) h:=3386018+182043=3568061, hh:=228 +[ .a...c.b..] +911: pop +level 1:(h=0,v=16384000,w=0,x=0,y=786432,z=0,hh=0,vv=1038) +912: y0 786432 v:=16384000+786432=17170432, vv:=1088 +913: push +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +914: push +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +915: fntnum1 current font is min10 +916: set2 8739("2223) type=0 h:=0+630598=630598, hh:=40 +[∣] +919: pop +level 2:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +920: right3 630598 h:=0+630598=630598, hh:=40 +[ ] +924: fntnum0 current font is ec-lmr10 +925: setchar99 ("63) h:=630598+291275=921873, hh:=58 +926: setchar115 ("73) h:=921873+258506=1180379, hh:=74 +927: setchar110 ("6E) h:=1180379+364085=1544464, hh:=97 +928: setchar97 ("61) h:=1544464+327680=1872144, hh:=118 +929: setchar109 ("6D) h:=1872144+546111=2418255, hh:=153 +930: setchar101 ("65) h:=2418255+291275=2709530, hh:=171 +931: setchar50 ("32) h:=2709530+327680=3037210, hh:=192 +932: setchar46 ("2E) h:=3037210+182043=3219253, hh:=204 +[csname2.] +933: pop +level 1:(h=0,v=17170432,w=0,x=0,y=786432,z=0,hh=0,vv=1088) +934: y0 786432 v:=17170432+786432=17956864, vv:=1137 +935: push +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +936: right3 1310720 h:=0+1310720=1310720, hh:=83 +940: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +941: setchar72 ("48) h:=1674805+491520=2166325, hh:=137 +942: setchar79 ("4F) h:=2166325+509738=2676063, hh:=169 +943: right2 -18205 h:=2676063-18205=2657858, hh:=168 +946: setchar87 ("57) h:=2657858+673578=3331436, hh:=211 +947: right3 218453 h:=3331436+218453=3549889, hh:=225 +951: setchar46 ("2E) h:=3549889+182043=3731932, hh:=237 +952: setchar46 ("2E) h:=3731932+182043=3913975, hh:=249 +953: setchar46 ("2E) h:=3913975+182043=4096018, hh:=261 +[ SHOW ...] +954: pop +level 1:(h=0,v=17956864,w=0,x=0,y=786432,z=0,hh=0,vv=1137) +955: y0 786432 v:=17956864+786432=18743296, vv:=1187 +956: push +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +957: right3 1310720 h:=0+1310720=1310720, hh:=83 +961: setchar83 ("53) h:=1310720+364085=1674805, hh:=106 +962: setchar84 ("54) h:=1674805+473301=2148106, hh:=136 +963: setchar82 ("52) h:=2148106+482410=2630516, hh:=167 +964: setchar73 ("49) h:=2630516+236650=2867166, hh:=182 +965: setchar78 ("4E) h:=2867166+491520=3358686, hh:=213 +966: setchar71 ("47) h:=3358686+514261=3872947, hh:=246 +967: right3 218453 h:=3872947+218453=4091400, hh:=259 +971: setchar92 ("5C) h:=4091400+327680=4419080, hh:=280 +[ STRING \] +972: set1 197("C5) h:=4419080+491520=4910600, hh:=311 +974: set1 191("BF) h:=4910600+491520=5402120, hh:=342 +976: setchar46 ("2E) h:=5402120+182043=5584163, hh:=354 +977: setchar92 ("5C) h:=5584163+327680=5911843, hh:=375 +[.\] +978: fntnum1 current font is min10 +979: set2 17727("453F) type=0 h:=5911843+630598=6542441, hh:=415 +[䔿] +982: fntnum0 current font is ec-lmr10 +983: setchar46 ("2E) h:=6542441+182043=6724484, hh:=427 +984: setchar92 ("5C) h:=6724484+327680=7052164, hh:=448 +[.\] +985: set1 197("C5) h:=7052164+491520=7543684, hh:=479 +987: set1 191("BF) h:=7543684+491520=8035204, hh:=510 +989: setchar46 ("2E) h:=8035204+182043=8217247, hh:=522 +990: setchar92 ("5C) h:=8217247+327680=8544927, hh:=543 +[.\] +991: fntnum1 current font is min10 +992: set2 17727("453F) type=0 h:=8544927+630598=9175525, hh:=583 +[䔿] +995: pop +level 1:(h=0,v=18743296,w=0,x=0,y=786432,z=0,hh=0,vv=1187) +996: y0 786432 v:=18743296+786432=19529728, vv:=1237 +997: push +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +998: right3 1310720 h:=0+1310720=1310720, hh:=83 +[ ] +1002: fntnum0 current font is ec-lmr10 +1003: setchar77 ("4D) h:=1310720+600768=1911488, hh:=121 +1004: setchar69 ("45) h:=1911488+446005=2357493, hh:=149 +1005: setchar65 ("41) h:=2357493+491520=2849013, hh:=180 +1006: setchar78 ("4E) h:=2849013+491520=3340533, hh:=211 +1007: setchar73 ("49) h:=3340533+236650=3577183, hh:=226 +1008: setchar78 ("4E) h:=3577183+491520=4068703, hh:=257 +1009: setchar71 ("47) h:=4068703+514261=4582964, hh:=290 +1010: right3 218453 h:=4582964+218453=4801417, hh:=304 +1014: setchar109 ("6D) h:=4801417+546111=5347528, hh:=339 +1015: setchar97 ("61) h:=5347528+327680=5675208, hh:=360 +1016: setchar99 ("63) h:=5675208+291275=5966483, hh:=378 +1017: setchar114 ("72) h:=5966483+256683=6223166, hh:=394 +1018: setchar111 ("6F) h:=6223166+327680=6550846, hh:=415 +1019: setchar58 ("3A) h:=6550846+182043=6732889, hh:=427 +1020: setchar45 ("2D) h:=6732889+218453=6951342, hh:=441 +1021: setchar62 ("3E) h:=6951342+509738=7461080, hh:=473 +1022: setchar97 ("61) h:=7461080+327680=7788760, hh:=494 +1023: setchar46 ("2E) h:=7788760+182043=7970803, hh:=506 +1024: setchar109 ("6D) h:=7970803+546111=8516914, hh:=541 +1025: setchar97 ("61) h:=8516914+327680=8844594, hh:=562 +1026: setchar99 ("63) h:=8844594+291275=9135869, hh:=580 +1027: setchar114 ("72) h:=9135869+256683=9392552, hh:=596 +1028: setchar111 ("6F) h:=9392552+327680=9720232, hh:=617 +1029: setchar58 ("3A) h:=9720232+182043=9902275, hh:=629 +1030: setchar45 ("2D) h:=9902275+218453=10120728, hh:=643 +1031: setchar62 ("3E) h:=10120728+509738=10630466, hh:=675 +1032: setchar98 ("62) h:=10630466+364085=10994551, hh:=698 +1033: setchar46 ("2E) h:=10994551+182043=11176594, hh:=710 +1034: setchar109 ("6D) h:=11176594+546111=11722705, hh:=745 +1035: setchar97 ("61) h:=11722705+327680=12050385, hh:=765 +1036: setchar99 ("63) h:=12050385+291275=12341660, hh:=783 +1037: setchar114 ("72) h:=12341660+256683=12598343, hh:=799 +1038: setchar111 ("6F) h:=12598343+327680=12926023, hh:=820 +1039: setchar58 ("3A) h:=12926023+182043=13108066, hh:=832 +1040: setchar45 ("2D) h:=13108066+218453=13326519, hh:=846 +1041: setchar62 ("3E) h:=13326519+509738=13836257, hh:=878 +1042: setchar97 ("61) h:=13836257+327680=14163937, hh:=899 +1043: setchar46 ("2E) h:=14163937+182043=14345980, hh:=911 +1044: setchar109 ("6D) h:=14345980+546111=14892091, hh:=945 +1045: setchar97 ("61) h:=14892091+327680=15219771, hh:=966 +1046: setchar99 ("63) h:=15219771+291275=15511046, hh:=984 +1047: setchar114 ("72) h:=15511046+256683=15767729, hh:=1000 +1048: setchar111 ("6F) h:=15767729+327680=16095409, hh:=1021 +1049: setchar58 ("3A) h:=16095409+182043=16277452, hh:=1033 +1050: setchar45 ("2D) h:=16277452+218453=16495905, hh:=1047 +1051: setchar62 ("3E) h:=16495905+509738=17005643, hh:=1079 +1052: setchar98 ("62) h:=17005643+364085=17369728, hh:=1102 +1053: setchar46 ("2E) h:=17369728+182043=17551771, hh:=1114 +[MEANING macro:->a.macro:->b.macro:->a.macro:->b.] +1054: pop +level 1:(h=0,v=19529728,w=0,x=0,y=786432,z=0,hh=0,vv=1237) +1055: pop +level 0:(h=0,v=42152922,w=0,x=0,y=0,z=0,hh=0,vv=2670) +1056: down3 1572864 v:=42152922+1572864=43725786, vv:=2770 +1060: eop diff --git a/Build/source/texk/web2c/ptexdir/tests/pknj-e.log b/Build/source/texk/web2c/ptexdir/tests/pknj-e.log new file mode 100644 index 00000000000..36de6fe134f --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/pknj-e.log @@ -0,0 +1,223 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**printkanji +(./printkanji.tex +\openout1 = `p-pknj-e.out'. + + +{MSG ^^c5^^bf ^^c5^^bf 顛 } +{TOT ^^c5^^bf ^^c5^^bf 顛 } +> \A=macro: +->^^c5^^bf ^^c5^^bf 顛 . +l.29 \show\A + + +■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +> \B=macro: +->macro:->^^c5^^bf ^^c5^^bf 顛 . +l.40 \show\B + + +■\jobname. {MSG *あ*p-pknj-e*:p-pknj-e:*macro:->:p-pknj-e:*} +{TOT *あ*p-pknj-e*:p-pknj-e:*macro:->:p-pknj-e:*} + +■oneletter. {MSG \catcode`\^^c5= 197} +{TOT \catcode`\^^c5= 197} +{MSG \catcode`^^c5 = 197} +{TOT \catcode`^^c5 = 197} +{MSG \catcode`^^c5^^bf = 197} +{TOT \catcode`^^c5^^bf = 197} +{MSG \catcode`顛 = 50623} +{TOT \catcode`顛 = 50623} +■csname1. +> \顛=macro: +->hoge. +l.72 \show\顛 + + +> \^^c5^^bf=macro: +->piyo. +l.73 \show\^^c5^^bf + + +> \^^c5^^bf=macro: +->piyo. +<recently read> \^^c5^^bf + +l.74 \expandafter\show\csname ^^c5^^bf\endcsname + + +{MSG \顛=>macro:->hoge} +{TOT \顛=>macro:->hoge} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} +{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} + +{MSG \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. } +{TOT \あ=> hoge, \^^a4^^a2=> piyo. \^^a4^^a2=> piyo. } +■0xFF. +{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +■contexts. +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1 + \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ... +l.136 \+\a + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a + \^^ff ^^ff\^^c5^^bf +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5 + \^^ff\^^c4\^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4 + \^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4\^^fe + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +\^^c5^^bf\^^ff^^c5 +! Undefined control sequence. +\b ->\^^c5^^be + .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd + ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 + . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be + .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd + ..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼 + . +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +■csname2. +> \^^c5^^bf=macro: +->a. +l.162 SHOW \show\^^c5^^bf + .\show\顛.% + +> \顛=macro: +->b. +l.162 SHOW \show\^^c5^^bf.\show\顛 + .% + +> \^^c5^^bf=macro: +->a. +<recently read> \^^c5^^bf + +l.163 \expandafter\show\csname ^^c5^^bf\endcsname + .% + +> \顛=macro: +->b. +<recently read> \顛 + +l.164 \expandafter\show\csname 顛\endcsname + + +\^^e3^^81^^82\あ [50623] +Memory usage before: 1270&5512; after: 118&5077; still untouched: 4992459 + ) +Here is how much of TeX's memory you used: + 25 strings out of 497935 + 137 string characters out of 6219477 + 7541 words of memory out of 5000000 + 969 multiletter control sequences out of 15000+600000 + 3271 words of font info for 2 fonts, out of 8000000 for 9000 + 0 hyphenation exceptions out of 8191 + 6i,4n,2p,97b,22s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on p-pknj-e.dvi (1 page, 1140 bytes). diff --git a/Build/source/texk/web2c/ptexdir/tests/pknj-s.log b/Build/source/texk/web2c/ptexdir/tests/pknj-s.log new file mode 100644 index 00000000000..1ef300b59d7 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/pknj-s.log @@ -0,0 +1,223 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**printkanji +(./printkanji.tex +\openout1 = `p-pknj-s.out'. + + +{MSG ^^c5^^bf ^^c5^^bf 顛 } +{TOT ^^c5^^bf ^^c5^^bf 顛 } +> \A=macro: +->^^c5^^bf ^^c5^^bf 顛 . +l.29 \show\A + + +■\meaning. {MSG macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +{TOT macro:->macro:->^^c5^^bf ^^c5^^bf 顛 } +> \B=macro: +->macro:->^^c5^^bf ^^c5^^bf 顛 . +l.40 \show\B + + +■\jobname. {MSG *あ*p-pknj-s*:p-pknj-s:*macro:->:p-pknj-s:*} +{TOT *あ*p-pknj-s*:p-pknj-s:*macro:->:p-pknj-s:*} + +■oneletter. {MSG \catcode`\^^c5= 197} +{TOT \catcode`\^^c5= 197} +{MSG \catcode`^^c5 = 197} +{TOT \catcode`^^c5 = 197} +{MSG \catcode`^^c5^^bf = 197} +{TOT \catcode`^^c5^^bf = 197} +{MSG \catcode`顛 = 37726} +{TOT \catcode`顛 = 37726} +■csname1. +> \顛=macro: +->hoge. +l.72 \show\顛 + + +> \^^c5^^bf=macro: +->piyo. +l.73 \show\^^c5^^bf + + +> \^^c5^^bf=macro: +->piyo. +<recently read> \^^c5^^bf + +l.74 \expandafter\show\csname ^^c5^^bf\endcsname + + +{MSG \顛=>macro:->hoge} +{TOT \顛=>macro:->hoge} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf=>macro:->piyo} +{TOT \^^c5^^bf=>macro:->piyo} +{MSG \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} +{TOT \^^c5^^bf, \^^c5^^bf, \^^c5^^bf, \顛.} + +{MSG \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +{TOT \あ=> hoge, \^^e3^^81^^82=> piyo. \^^e3^^81^^82=> piyo. } +■0xFF. +{MSG あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{TOT あ, ^^c5^^bf ^^c5^^bf 顛 , \^^ff^^c5^^ff^^bf, macro:->(\^^ff^^c5^^ff^^bf:m +acro:->あ).} +{MSG い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +{TOT い, (\^^ff:macro:->い), \^^ff, macro:->(\^^ff:macro:->い).} +■contexts. +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +\+#1->\^^c5^^bf \顛 \^^ff^^c5^^ff^^bf #1 + \^^ff macro:->^^c5^^bf ^^c5^^bf 顛 ... +l.136 \+\a + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\@->\A \undefined + +\a ->^^c5^^bf a^^c5^^bf ^^c5^^bf 顛 \@ + ^^c5^^bf 顛 +l.138 ...5^^ff^^bf ^^c5^^bf \^^c5^^bf ^^c5^^bf顛\a + \^^ff ^^ff\^^c5^^bf +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5 + \^^ff\^^c4\^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4 + \^^fe +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.140 \^^c5\^^ff\^^c4\^^fe + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +\^^c5^^bf\^^ff^^c5 +! Undefined control sequence. +\b ->\^^c5^^be + .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ->\^^c5^^be .\^^c5^^bf .\^^c5^^bd + ..\転 .\顛 .\貼 . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +\b ...5^^be .\^^c5^^bf .\^^c5^^bd ..\転 .\顛 .\貼 + . +l.154 \b + +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be + .\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd + ..\転.\顛.\貼. +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +! Undefined control sequence. +l.156 \^^c5^^be.\^^c5^^bf.\^^c5^^bd..\転.\顛.\貼 + . +The control sequence at the end of the top line +of your error message was never \def'ed. If you have +misspelled it (e.g., `\hobx'), type `I' and the correct +spelling (e.g., `I\hbox'). Otherwise just continue, +and I'll forget about whatever was undefined. + +■csname2. +> \^^c5^^bf=macro: +->a. +l.162 SHOW \show\^^c5^^bf + .\show\顛.% + +> \顛=macro: +->b. +l.162 SHOW \show\^^c5^^bf.\show\顛 + .% + +> \^^c5^^bf=macro: +->a. +<recently read> \^^c5^^bf + +l.163 \expandafter\show\csname ^^c5^^bf\endcsname + .% + +> \顛=macro: +->b. +<recently read> \顛 + +l.164 \expandafter\show\csname 顛\endcsname + + +\^^e3^^81^^82\あ [37726] +Memory usage before: 1274&5515; after: 118&5078; still untouched: 4992456 + ) +Here is how much of TeX's memory you used: + 24 strings out of 497935 + 135 string characters out of 6219474 + 7544 words of memory out of 5000000 + 968 multiletter control sequences out of 15000+600000 + 3271 words of font info for 2 fonts, out of 8000000 for 9000 + 0 hyphenation exceptions out of 8191 + 6i,4n,2p,97b,22s stack positions out of 10000i,1000n,20000p,200000b,200000s + +Output written on p-pknj-s.dvi (1 page, 1148 bytes). diff --git a/Build/source/texk/web2c/ptexdir/tests/printkanji.tex b/Build/source/texk/web2c/ptexdir/tests/printkanji.tex index a8f1d4cb5a0..d176d9a53bf 100644 --- a/Build/source/texk/web2c/ptexdir/tests/printkanji.tex +++ b/Build/source/texk/web2c/ptexdir/tests/printkanji.tex @@ -2,7 +2,16 @@ \tracingstats=1000 \noautoxspacing \newlinechar=`\^^J -\font\x=ec-lmtt10 \x +\font\x=ec-lmr10 \x +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi + + \immediate\openout1=\jobname.out \def\MSG#1{% \message{\string{MSG #1\string}}% @@ -135,7 +144,6 @@ A: \A \catcode`\^^bf=11 \catcode`\^^bd=11 \catcode`\^^ff=11 -\font\x=ec-lmtt10 \x\scrollmode \def\^^c5^^bf{a} \def\顛{b} diff --git a/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex b/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex index 5dce40d2e12..cf38ff5e8d6 100644 --- a/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex +++ b/Build/source/texk/web2c/ptexdir/tests/ptexlineendmode.tex @@ -1,4 +1,12 @@ -\font\fn=ec-lmr10\fn\catcode`\^^9f=11 +\font\fn=ec-lmr10\fn +\ifx\kanjiskip\undefined\else + \ifnum\jis"2121="3000 + \jfont\jpy=umin10 at 10pt\jpy + \else + \jfont\jpy=min10 at 10pt\jpy + \fi +\fi +\catcode`\^^9f=11 \def\◆{◇}\def\漢{◇}\def\^^9f{S} \ptexlineendmode=0 % p4.0.0標準 diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs-e.log b/Build/source/texk/web2c/ptexdir/tests/ucs-e.log new file mode 100644 index 00000000000..33428e2db9e --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/ucs-e.log @@ -0,0 +1,28 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-ucs +(./p-ucs.tex +<EUC> +\ucs. +\cntA=\count26 +162: 41457 +163: 41458 +165: 41455 +167: 41464 +168: 41391 +172: 41676 +176: 41451 +177: 41438 +180: 41389 +182: 41721 +215: 41439 +247: 41440 +\toucs. +-1, -1, -1, -1, -1 +-1, 34821, 34722 +12354, 29081, -1 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 +41393, 41405, 41409, 41410, 41412, 41437, 41455, 41457, 41458, 41676 + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs-s.log b/Build/source/texk/web2c/ptexdir/tests/ucs-s.log new file mode 100644 index 00000000000..576b027e823 --- /dev/null +++ b/Build/source/texk/web2c/ptexdir/tests/ucs-s.log @@ -0,0 +1,28 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**p-ucs +(./p-ucs.tex +<SJIS> +\ucs. +\cntA=\count26 +162: 33169 +163: 33170 +165: 33167 +167: 33176 +168: 33102 +172: 33226 +176: 33163 +177: 33149 +180: 33100 +182: 33271 +215: 33150 +247: 33152 +\toucs. +-1, -1, -1, -1, -1 +12450, 29081, -1 +-1, -1, -1 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 +33104, 33116, 33120, 33121, 33123, 33148, 33167, 33169, 33170, 33226 + ) +No pages of output. diff --git a/Build/source/texk/web2c/ptexdir/tests/ucs.tex b/Build/source/texk/web2c/ptexdir/tests/ucs.tex index de8a32fc1df..520a7485d57 100644 --- a/Build/source/texk/web2c/ptexdir/tests/ucs.tex +++ b/Build/source/texk/web2c/ptexdir/tests/ucs.tex @@ -9,7 +9,8 @@ \typeout{\string\ucs.} \newcount\cntA \loop\ifnum\cntA<256 - \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA (\Uchar\ucs\cntA)}\fi + \ifnum0>\ucs\cntA\else\typeout{\the\cntA: \ucs\cntA % + \ifx\Uchar\undefined\else(\Uchar\ucs\cntA)\fi}\fi \advance\cntA1 \repeat @@ -23,6 +24,12 @@ \typeout{\toucs"0, \toucs"80, \toucs"D7, \toucs"A7, \toucs"10000} \typeout{\toucs"8341, \toucs"EAA4, \toucs"EAA5} \typeout{\toucs"A4A2, \toucs"F4A6, \toucs"F4A7} +\typeout{\jis"2131, \jis"213D, \jis"2141, \jis"2142, \jis"2144, + \jis"215D, \jis"216F, \jis"2171, \jis"2172, \jis"224C} +\typeout{\ucs"203E, \ucs"2014, \ucs"301C, \ucs"2016, \ucs"2026, + \ucs"2212, \ucs"00A5, \ucs"00A2, \ucs"00A3, \ucs"00AC} +\typeout{\ucs"FFE3, \ucs"2015, \ucs"FF5E, \ucs"2225, \ucs"22EF, + \ucs"FF0D, \ucs"FFE5, \ucs"FFE0, \ucs"FFE1, \ucs"FFE2} \bye diff --git a/Build/source/texk/web2c/tests/dump-basic.tex b/Build/source/texk/web2c/tests/dump-basic.tex new file mode 100644 index 00000000000..209f3630b56 --- /dev/null +++ b/Build/source/texk/web2c/tests/dump-basic.tex @@ -0,0 +1,6 @@ +\ifx\fmtname\undefined + \input basic + \def\fmtname{basic} + \expandafter\dump +\fi +\end diff --git a/Build/source/texk/web2c/tests/ec-lmr10.tfm b/Build/source/texk/web2c/tests/ec-lmr10.tfm Binary files differnew file mode 100644 index 00000000000..719e4f082e8 --- /dev/null +++ b/Build/source/texk/web2c/tests/ec-lmr10.tfm diff --git a/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja b/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja index 99d2f7a9d38..c75986988ee 100644 --- a/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja +++ b/Build/source/texk/web2c/uptexdir/COPYRIGHT.ja @@ -4,7 +4,7 @@ 【著作権表示】 Copyright (C) 2009 ASCII MEDIA WORKS. -Copyright (C) 2007-2023 Takuji Tanaka +Copyright (C) 2007-2024 Takuji Tanaka All rights reserved. 【契約条件】 diff --git a/Build/source/texk/web2c/uptexdir/ChangeLog b/Build/source/texk/web2c/uptexdir/ChangeLog index a68dbcce2f4..cddcdef97d1 100644 --- a/Build/source/texk/web2c/uptexdir/ChangeLog +++ b/Build/source/texk/web2c/uptexdir/ChangeLog @@ -1,3 +1,40 @@ +2024-10-12 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * uptex-prim.test, tests/up-prim.{tex,log}, + am/uptex.am: Add a test. + * uptex-m.ch: revision date. + * COPYRIGHT.ja: copyright year. + +2024-09-30 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * uptex-m.ch: kcatcode (latin_ucs(14)) is removed + since it will be supported in upTeX-2.00. + +2024-09-28 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * uptex-m.ch, upbibtex.ch, kanji.c: + Update reference of Unicode blocks to + "Blocks-16.0.0.txt Date: 2024-02-22". + Also add a new block + "CJK Unified Ideographs Extension J" + which is approved in Unicode 17.0, 2025. + * tests/unibib.{tex,bib,bbl}: Update a test. + +2024-09-22 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch, ptex_version.h: Version p4.1.2. + +2024-09-21 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch, uptex-m.ch: + Fix a bug in initialization of inhibit_xsp/kinsoku tables + (Bug introduced on commit 2022-12-12 r65248). + +2024-09-16 TANAKA Takuji <ttk@t-lab.opal.ne.jp> + + * ptex-base.ch: Use constants enc_jis and enc_ucs. + * am/uptex.am: Tweak. + 2024-05-18 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp> * ptex-base.ch: Enable to get character codes diff --git a/Build/source/texk/web2c/uptexdir/am/uptex.am b/Build/source/texk/web2c/uptexdir/am/uptex.am index 1a4ee00d4c0..eb4a6e70760 100644 --- a/Build/source/texk/web2c/uptexdir/am/uptex.am +++ b/Build/source/texk/web2c/uptexdir/am/uptex.am @@ -171,11 +171,13 @@ uptex_tests = \ uptexdir/uptriptest.test uptexdir/ptriptest.test \ uptexdir/upver.test \ uptexdir/upkcat.test \ - uptexdir/wcfname.test uptexdir/wcfname0.test + uptexdir/wcfname.test uptexdir/wcfname0.test \ + uptexdir/uptex-prim.test uptexdir/uptriptest.log uptexdir/ptriptest.log: \ uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) uptexdir/upver.log uptexdir/upkcat.log \ - uptexdir/wcfname.log uptexdir/wcfname0.log: uptex$(EXEEXT) + uptexdir/wcfname.log uptexdir/wcfname0.log \ + uptexdir/uptex-prim.log: uptex$(EXEEXT) upweb_tests = \ uptexdir/upbibtex.test \ uptexdir/updvitype.test \ @@ -263,12 +265,16 @@ DISTCLEANFILES += uptests/ygk256*.* DISTCLEANFILES += uptests/xskipjfmp.* ## uptexdir/uptriptest EXTRA_DIST += uptexdir/uptrip/uptrip.diffs uptexdir/uptrip/texmf.cnf +DISTCLEANFILES += uptrip.diffs + +## uptexdir/uptex-prim.test +EXTRA_DIST += uptexdir/tests/up-prim.tex uptexdir/tests/up-prim.log +DISTCLEANFILES += up-prim.* + uptrip.diffs: uptex$(EXEEXT) dvitype$(EXEEXT) pltotf$(EXEEXT) tftopl$(EXEEXT) $(triptrap_diffs) $@ .PHONY: uptrip-clean uptrip-clean: rm -rf uptripdir -DISTCLEANFILES += uptrip.diffs - # (end of uptex.am) diff --git a/Build/source/texk/web2c/uptexdir/kanji.c b/Build/source/texk/web2c/uptexdir/kanji.c index ddeca5a535c..b96fd48f086 100644 --- a/Build/source/texk/web2c/uptexdir/kanji.c +++ b/Build/source/texk/web2c/uptexdir/kanji.c @@ -45,7 +45,7 @@ boolean is_char_ascii(integer c) boolean is_char_kanji(integer c) { - if (is_internalUPTEX()) + if (is_internalUPTEX()) return ((c >= 0)&&(c<IVS_CHAR_LIMIT)); else return iskanji1(Hi(c)) && iskanji2(Lo(c)); @@ -91,8 +91,8 @@ integer ktoken_to_chr(integer c) } /* Ref. http://www.unicode.org/Public/UNIDATA/Blocks.txt */ -/* # Blocks-15.1.0.txt */ -/* # Date: 2023-07-28, 15:47:20 GMT */ +/* # Blocks-16.0.0.txt */ +/* # Date: 2024-02-22 */ static long ucs_range[]={ 0x0000, /* Basic Latin */ /* 0x00 */ 0x0080, /* Latin-1 Supplement */ @@ -279,14 +279,15 @@ static long ucs_range[]={ 0x10500, /* Elbasan */ 0x10530, /* Caucasian Albanian */ 0x10570, /* Vithkuqi */ + 0x105C0, /* Todhri */ 0x10600, /* Linear A */ 0x10780, /* Latin Extended-F */ 0x10800, /* Cypriot Syllabary */ 0x10840, /* Imperial Aramaic */ 0x10860, /* Palmyrene */ 0x10880, /* Nabataean */ - 0x108E0, /* Hatran */ - 0x10900, /* Phoenician */ /* 0xc0 */ + 0x108E0, /* Hatran */ /* 0xc0 */ + 0x10900, /* Phoenician */ 0x10920, /* Lydian */ 0x10980, /* Meroitic Hieroglyphs */ 0x109A0, /* Meroitic Cursive */ @@ -301,8 +302,9 @@ static long ucs_range[]={ 0x10C00, /* Old Turkic */ 0x10C80, /* Old Hungarian */ 0x10D00, /* Hanifi Rohingya */ + 0x10D40, /* Garay */ /* 0xd0 */ 0x10E60, /* Rumi Numeral Symbols */ - 0x10E80, /* Yezidi */ /* 0xd0 */ + 0x10E80, /* Yezidi */ 0x10EC0, /* Arabic Extended-C */ 0x10F00, /* Old Sogdian */ 0x10F30, /* Sogdian */ @@ -316,26 +318,29 @@ static long ucs_range[]={ 0x11150, /* Mahajani */ 0x11180, /* Sharada */ 0x111E0, /* Sinhala Archaic Numbers */ - 0x11200, /* Khojki */ + 0x11200, /* Khojki */ /* 0xe0 */ 0x11280, /* Multani */ - 0x112B0, /* Khudawadi */ /* 0xe0 */ + 0x112B0, /* Khudawadi */ 0x11300, /* Grantha */ + 0x11380, /* Tulu-Tigalaria */ 0x11400, /* Newa */ 0x11480, /* Tirhuta */ 0x11580, /* Siddham */ 0x11600, /* Modi */ 0x11660, /* Mongolian Supplement */ 0x11680, /* Takri */ + 0x116D0, /* Myanmar Extended-C */ 0x11700, /* Ahom */ 0x11800, /* Dogra */ 0x118A0, /* Warang Citi */ 0x11900, /* Dives Akuru */ - 0x119A0, /* Nandinagari */ + 0x119A0, /* Nandinagari */ /* 0xf0 */ 0x11A00, /* Zanabazar Square */ 0x11A50, /* Soyombo */ 0x11AB0, /* Unified Canadian Aboriginal Syllabics Extended-A */ - 0x11AC0, /* Pau Cin Hau */ /* 0xf0 */ + 0x11AC0, /* Pau Cin Hau */ 0x11B00, /* Devanagari Extended-A */ + 0x11BC0, /* Sunuwar */ 0x11C00, /* Bhaiksuki */ 0x11C70, /* Marchen */ 0x11D00, /* Masaram Gondi */ @@ -345,20 +350,23 @@ static long ucs_range[]={ 0x11FB0, /* Lisu Supplement */ 0x11FC0, /* Tamil Supplement */ 0x12000, /* Cuneiform */ - 0x12400, /* Cuneiform Numbers and Punctuation */ + 0x12400, /* Cuneiform Numbers and Punctuation */ /* 0x100 */ 0x12480, /* Early Dynastic Cuneiform */ 0x12F90, /* Cypro-Minoan */ 0x13000, /* Egyptian Hieroglyphs */ 0x13430, /* Egyptian Hieroglyph Format Controls */ - 0x14400, /* Anatolian Hieroglyphs */ /* 0x100 */ + 0x13460, /* Egyptian Hieroglyphs Extended-A */ + 0x14400, /* Anatolian Hieroglyphs */ + 0x16100, /* Gurung Khema */ 0x16800, /* Bamum Supplement */ 0x16A40, /* Mro */ 0x16A70, /* Tangsa */ 0x16AD0, /* Bassa Vah */ 0x16B00, /* Pahawh Hmong */ + 0x16D40, /* Kirat Rai */ 0x16E40, /* Medefaidrin */ 0x16F00, /* Miao */ - 0x16FE0, /* Ideographic Symbols and Punctuation */ + 0x16FE0, /* Ideographic Symbols and Punctuation */ /* 0x110 */ 0x17000, /* Tangut */ 0x18800, /* Tangut Components */ 0x18B00, /* Khitan Small Script */ @@ -366,14 +374,15 @@ static long ucs_range[]={ 0x1AFF0, /* Kana Extended-B */ 0x1B000, /* Kana Supplement */ 0x1B100, /* Kana Extended-A */ - 0x1B130, /* Small Kana Extension */ /* 0x110 */ + 0x1B130, /* Small Kana Extension */ 0x1B170, /* Nushu */ 0x1BC00, /* Duployan */ 0x1BCA0, /* Shorthand Format Controls */ + 0x1CC00, /* Symbols for Legacy Computing Supplement */ 0x1CF00, /* Znamenny Musical Notation */ 0x1D000, /* Byzantine Musical Symbols */ 0x1D100, /* Musical Symbols */ - 0x1D200, /* Ancient Greek Musical Notation */ + 0x1D200, /* Ancient Greek Musical Notation */ /* 0x120 */ 0x1D2C0, /* Kaktovik Numerals */ 0x1D2E0, /* Mayan Numerals */ 0x1D300, /* Tai Xuan Jing Symbols */ @@ -382,13 +391,14 @@ static long ucs_range[]={ 0x1D800, /* Sutton SignWriting */ 0x1DF00, /* Latin Extended-G */ 0x1E000, /* Glagolitic Supplement */ - 0x1E030, /* Cyrillic Extended-D */ /* 0x120 */ + 0x1E030, /* Cyrillic Extended-D */ 0x1E100, /* Nyiakeng Puachue Hmong */ 0x1E290, /* Toto */ 0x1E2C0, /* Wancho */ 0x1E4D0, /* Nag Mundari */ + 0x1E5D0, /* Ol Onal */ 0x1E7E0, /* Ethiopic Extended-B */ - 0x1E800, /* Mende Kikakui */ + 0x1E800, /* Mende Kikakui */ /* 0x130 */ 0x1E900, /* Adlam */ 0x1EC70, /* Indic Siyaq Numbers */ 0x1ED00, /* Ottoman Siyaq Numbers */ @@ -398,13 +408,13 @@ static long ucs_range[]={ 0x1F0A0, /* Playing Cards */ 0x1F100, /* Enclosed Alphanumeric Supplement */ 0x1F200, /* Enclosed Ideographic Supplement */ - 0x1F300, /* Miscellaneous Symbols and Pictographs */ /* 0x130 */ + 0x1F300, /* Miscellaneous Symbols and Pictographs */ 0x1F600, /* Emoticons */ 0x1F650, /* Ornamental Dingbats */ 0x1F680, /* Transport and Map Symbols */ 0x1F700, /* Alchemical Symbols */ 0x1F780, /* Geometric Shapes Extended */ - 0x1F800, /* Supplemental Arrows-C */ + 0x1F800, /* Supplemental Arrows-C */ /* 0x140 */ 0x1F900, /* Supplemental Symbols and Pictographs */ 0x1FA00, /* Chess Symbols */ 0x1FA70, /* Symbols and Pictographs Extended-A */ @@ -414,12 +424,13 @@ static long ucs_range[]={ 0x2B740, /* CJK Unified Ideographs Extension D */ 0x2B820, /* CJK Unified Ideographs Extension E */ 0x2CEB0, /* CJK Unified Ideographs Extension F */ - 0x2EBF0, /* CJK Unified Ideographs Extension I */ /* 0x140 */ + 0x2EBF0, /* CJK Unified Ideographs Extension I */ 0x2F800, /* CJK Compatibility Ideographs Supplement */ 0x30000, /* CJK Unified Ideographs Extension G */ 0x31350, /* CJK Unified Ideographs Extension H */ - 0x323B0, /* reserved */ - 0x40000, /* reserved */ + 0x323B0, /* CJK Unified Ideographs Extension J (Unicode 17.0) */ + 0x33480, /* reserved */ + 0x40000, /* reserved */ /* 0x150 */ 0x50000, /* reserved */ 0x60000, /* reserved */ 0x70000, /* reserved */ @@ -430,14 +441,14 @@ static long ucs_range[]={ 0xC0000, /* reserved */ 0xD0000, /* reserved */ 0xE0000, /* Tags */ - 0xE0100, /* Variation Selectors Supplement */ /* 0x150 */ + 0xE0100, /* Variation Selectors Supplement */ 0xE01F0, /* reserved */ 0xF0000, /* Supplementary Private Use Area-A */ 0x100000, /* Supplementary Private Use Area-B */ /* Value over 0x10FFFF is illegal under Unicode, - They are for some special use. *** experimental *** */ + We use for some special application. */ 0x110000, /* Reserved */ - 0x120000, /* Reserved */ + 0x120000, /* Reserved */ /* 0x160 */ 0x130000, /* Reserved */ 0x140000, /* Reserved */ 0x150000, /* Reserved */ @@ -448,20 +459,20 @@ static long ucs_range[]={ 0x1A0000, /* Reserved */ 0x1B0000, /* Reserved */ 0x1C0000, /* Reserved */ - 0x1D0000, /* Reserved */ /* 0x160 */ + 0x1D0000, /* Reserved */ 0x1E0000, /* Reserved */ 0x1F0000, /* Reserved */ 0x200000, /* Reserved */ 0x210000, /* Reserved */ - 0x220000, /* Kana with Voiced Sound Mark */ + 0x220000, /* Kana with Voiced Sound Mark */ /* 0x170 */ 0x240000, /* Kana with Semi-Voiced Sound Mark */ 0x25E6E6, /* Emoji Flag Sequence */ 0x260000, /* Emoji with Modifier Fitzpatrick */ 0x300000, /* Reserved */ 0x400000, /* Standardized Variation Sequence */ 0x800000, /* Emoji Keycap Sequence */ - 0x800080, /* Ideographic Variation Sequence */ /* 0x16C */ - CJK_CHAR_LIMIT, /* Ideographic Variation Sequence, VS49..VS256 */ + 0x800080, /* Ideographic Variation Sequence, VS17..VS48 */ + CJK_CHAR_LIMIT, /* Ideographic Variation Sequence, VS49..VS256 */ /* 0x178 */ IVS_CHAR_LIMIT }; @@ -544,11 +555,11 @@ integer kcatcodekey(integer c) if ( COMBINING_ENCLOSING_KEYCAP==c ) return 0x1FA; break; - case 0x12e: /* Block : Enclosed Alphanumeric Supplement */ + case 0x138: /* Block : Enclosed Alphanumeric Supplement */ if ( REGIONAL_INDICATOR_SYMBOL_LETTER_A <=c && c<= REGIONAL_INDICATOR_SYMBOL_LETTER_Z ) return 0x1FB; break; - case 0x130: /* Block : Miscellaneous Symbols and Pictographs */ + case 0x13a: /* Block : Miscellaneous Symbols and Pictographs */ if ( EMOJI_MODIFIER_FITZPATRIC_TYPE1_2 <=c && c<= EMOJI_MODIFIER_FITZPATRIC_TYPE6 ) return 0x1FC; break; diff --git a/Build/source/texk/web2c/uptexdir/ptex-base.ch b/Build/source/texk/web2c/uptexdir/ptex-base.ch index 6b77387d58e..36496b2e4b2 100644 --- a/Build/source/texk/web2c/uptexdir/ptex-base.ch +++ b/Build/source/texk/web2c/uptexdir/ptex-base.ch @@ -74,6 +74,8 @@ % (2022-10-24) HY pTeX p4.1.0 Add new syntax \font [in jis/ucs]. % New primitives: \tojis, \ptextracingfonts and \ptexfontname. % (2023-09-17) HY pTeX p4.1.1 Support more than 256 different glue/kern. +% (2024-09-22) HK pTeX p4.1.2 Enable to get character codes +% from control symbols by using backquote. @x % Here is TeX material that gets inserted after \input webmac @@ -88,8 +90,8 @@ @y @d pTeX_version=4 @d pTeX_minor_version=1 -@d pTeX_revision==".1" -@d pTeX_version_string=='-p4.1.1' {current \pTeX\ version} +@d pTeX_revision==".2" +@d pTeX_version_string=='-p4.1.2' {current \pTeX\ version} @# @d pTeX_banner=='This is pTeX, Version 3.141592653',pTeX_version_string @d pTeX_banner_k==pTeX_banner @@ -1305,10 +1307,11 @@ for k:=0 to 255 do begin cat_code(k):=other_char; kcat_code(k):=other_kchar; math_code(k):=hi(k); sf_code(k):=1000; auto_xsp_code(k):=0; + inhibit_xsp_type(k):=0; kinsoku_type(k):=0; end; for k:=0 to 1023 do - begin inhibit_xsp_code(k):=0; inhibit_xsp_type(k):=0; - kinsoku_code(k):=0; kinsoku_type(k):=0; + begin inhibit_xsp_code(k):=0; + kinsoku_code(k):=0; end; @z @x [17.232] l.4971 - pTeX: initialize cat_code, cur_jfont, cur_tfont @@ -1523,6 +1526,9 @@ primitive("ptextracingfonts",assign_int,int_base+ptex_tracing_fonts_code);@/ @d v_offset==dimen_par(v_offset_code) @d t_baseline_shift==dimen_par(t_baseline_shift_code) @d y_baseline_shift==dimen_par(y_baseline_shift_code) +@# +@d enc_jis=1 +@d enc_ucs=2 @z @x l.5542 - pTeX: @@ -1660,8 +1666,8 @@ procedure print_font_dir_and_enc(f:internal_font_number); begin if font_dir[f]=dir_tate then print("/TATE") else if font_dir[f]=dir_yoko then print("/YOKO"); - if font_enc[f]=2 then print("+Unicode") - else if font_enc[f]=1 then print("+JIS"); + if font_enc[f]=enc_ucs then print("+Unicode") + else if font_enc[f]=enc_jis then print("+JIS"); end; @z @@ -3324,9 +3330,9 @@ if jfm_flag<>dir_default then for k:=ctype_base[f] to ctype_base[f]+nt-1 do begin fget; read_twentyfourx(cx); - if jfm_enc=2 then {Unicode TFM} + if jfm_enc=enc_ucs then {Unicode TFM} font_info[k].hh.rh:=toDVI(fromUCS(cx)) - else if jfm_enc=1 then {JIS-encoded TFM} + else if jfm_enc=enc_jis then {JIS-encoded TFM} font_info[k].hh.rh:=toDVI(fromJIS(cx)) else font_info[k].hh.rh:=tokanji(cx); {|kchar_code|} @@ -3584,9 +3590,9 @@ continue: end; p:=link(p); jc:=KANJI(info(p)); - if font_enc[f]=2 then {Unicode TFM} + if font_enc[f]=enc_ucs then {Unicode TFM} jc:=toUCS(jc) - else if font_enc[f]=1 then {JIS-encoded TFM} + else if font_enc[f]=enc_jis then {JIS-encoded TFM} begin if toJIS(jc)=0 then char_warning_jis(f,jc); jc:=toJIS(jc); end else @@ -7075,8 +7081,8 @@ exit:end; @ @<Scan the font encoding specification@>= begin jfm_enc:=0; if scan_keyword_noexpand("in") then - if scan_keyword_noexpand("jis") then jfm_enc:=1 - else if scan_keyword_noexpand("ucs") then jfm_enc:=2 + if scan_keyword_noexpand("jis") then jfm_enc:=enc_jis + else if scan_keyword_noexpand("ucs") then jfm_enc:=enc_ucs else begin print_err("Unknown TFM encoding"); @.Unknown TFM encoding@> diff --git a/Build/source/texk/web2c/uptexdir/ptex_version.h b/Build/source/texk/web2c/uptexdir/ptex_version.h index 13e0f1467b3..247aabb113d 100644 --- a/Build/source/texk/web2c/uptexdir/ptex_version.h +++ b/Build/source/texk/web2c/uptexdir/ptex_version.h @@ -1 +1 @@ -#define PTEX_VERSION "p4.1.1" +#define PTEX_VERSION "p4.1.2" diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.bbl b/Build/source/texk/web2c/uptexdir/tests/unibib.bbl index e61fc1c3474..b65e9ec58b9 100644 --- a/Build/source/texk/web2c/uptexdir/tests/unibib.bbl +++ b/Build/source/texk/web2c/uptexdir/tests/unibib.bbl @@ -1,4 +1,4 @@ -\begin{thebibliography}{1} +\begin{thebibliography}{10} \bibitem{björk2020} Tomas Björk. @@ -22,6 +22,11 @@ Dustin Boswell and Trevor Foucher. \newblock 구운몽. \newblock 高麗書林, 1975. +\bibitem{imahashi} +𫝆𫞎姬, 𡈽𪧦, 𠮷田真. +\newblock CJK統合漢字拡張🄑--🄓のテスト --- その🄰. +\newblock 冬𠘨𫝷, 2024. + \bibitem{nikos} Νίκος Καζαντζάκης. \newblock {\em Συμπόσιον}. diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.bib b/Build/source/texk/web2c/uptexdir/tests/unibib.bib index 11e6baa22a8..d4c45d08e12 100644 --- a/Build/source/texk/web2c/uptexdir/tests/unibib.bib +++ b/Build/source/texk/web2c/uptexdir/tests/unibib.bib @@ -79,3 +79,25 @@ publisher = "Snowman commedian Press", year = 2020, } + +%% CJK統合漢字拡張B-Dのテスト +@book{imahashi, + author = "𫝆𫞎 姬 and 𡈽 𪧦 and 𠮷田 真", + yomi = "Hime Imahashi", + title = "CJK統合漢字拡張🄑--🄓のテスト --- その🄰", + publisher = "冬𠘨𫝷", + year = 2024, +} +% 𫝆 U+2B746 CJK Unified Ideographs Extension D AJ:13780 +% 𫞎 U+2B78E CJK Unified Ideographs Extension D AJ:13724 +% 姬 U+2F862 CJK Compatibility Ideographs Supplement AJ:13998 +% 𡈽 U+2123D CJK Unified Ideographs Extension B AJ:13953 J3-2F42 +% 𪧦 U+2A9E6 CJK Unified Ideographs Extension C AJ:14145 +% 𠮷 U+20BB7 CJK Unified Ideographs Extension B AJ:13706 +% 真 U+2F947 CJK Compatibility Ideographs Supplement AJ:13854 +% 冬 U+2F81A CJK Compatibility Ideographs Supplement AJ:13954 +% 𠘨 U+20628 CJK Unified Ideographs Extension B AJ:14105 J4-2332 +% 𫝷 U+2B777 CJK Unified Ideographs Extension D AJ:13782 +% 🄑 U+1F111 Parenthesized Latin Capital Letter B +% 🄓 U+1F113 Parenthesized Latin Capital Letter B +% 🄰 U+1F130 Squared Latin Capital Letter A diff --git a/Build/source/texk/web2c/uptexdir/tests/unibib.tex b/Build/source/texk/web2c/uptexdir/tests/unibib.tex index 918d11f37b2..73e6a744d7a 100644 --- a/Build/source/texk/web2c/uptexdir/tests/unibib.tex +++ b/Build/source/texk/web2c/uptexdir/tests/unibib.tex @@ -82,6 +82,15 @@ publisher = "Snowman commedian Press", year = 2020, } + +%% CJK統合漢字拡張B-Dのテスト +@book{imahashi, + author = "𫝆𫞎 姬 and 𡈽 𪧦 and 𠮷田 真", + yomi = "Hime Imahashi", + title = "CJK統合漢字拡張🄑--🄓のテスト --- その🄰", + publisher = "冬𠘨𫝷", + year = 2024, +} \end{filecontents} \documentclass{ltjsarticle} diff --git a/Build/source/texk/web2c/uptexdir/tests/up-prim.log b/Build/source/texk/web2c/uptexdir/tests/up-prim.log new file mode 100644 index 00000000000..f8d6b63565b --- /dev/null +++ b/Build/source/texk/web2c/uptexdir/tests/up-prim.log @@ -0,0 +1,9 @@ + restricted \write18 enabled. + %&-line parsing enabled. +**up-prim +(./up-prim.tex +15: \^^c5^^93. \^^c5^^93. +18: \œ. \œ. +15: \^^c3^^a6. \^^c3^^a6. +18: \æ. \æ. ) +No pages of output. diff --git a/Build/source/texk/web2c/uptexdir/tests/up-prim.tex b/Build/source/texk/web2c/uptexdir/tests/up-prim.tex new file mode 100644 index 00000000000..e2f0445ea77 --- /dev/null +++ b/Build/source/texk/web2c/uptexdir/tests/up-prim.tex @@ -0,0 +1,33 @@ +% Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +% You may freely use, modify and/or distribute this file. +% +\tracingmacros=2 +\tracingonline=1 +%---- +\newlinechar=10 + +%\catcode"0153=12 +\kcatcode"0153=15\relax +\message{^^J\the\kcatcode"153: + \string\œ. \expandafter\string\csname œ\endcsname. % + } + +\kcatcode"0153=18\relax +\message{^^J\the\kcatcode"153: + \string\œ. \expandafter\string\csname œ\endcsname. % + } + +%\catcode"E6=12 +\kcatcode"E6=15\relax +\message{^^J\the\kcatcode"E6: + \string\æ. \expandafter\string\csname æ\endcsname. % + } + +\kcatcode"E6=18\relax +\message{^^J\the\kcatcode"E6: + \string\æ. \expandafter\string\csname æ\endcsname. % + } +%---- +\setbox0=\vbox{} % no dvi output + +\end diff --git a/Build/source/texk/web2c/uptexdir/upbibtex.ch b/Build/source/texk/web2c/uptexdir/upbibtex.ch index 36c44471552..4c21ee3efcd 100644 --- a/Build/source/texk/web2c/uptexdir/upbibtex.ch +++ b/Build/source/texk/web2c/uptexdir/upbibtex.ch @@ -968,7 +968,7 @@ function is_char_kanji_upbibtex(@!c:integer):boolean; label exit; var k:integer; begin - { based on upTeX-1.30 kcatcode status: 16,17,19->true / 15,18->false } + { based on upTeX-1.35 kcatcode status: 16,17,19->true / 15,18->false } is_char_kanji_upbibtex := true; if (is_internalUPTEX) then begin { should be in sync with |kcat_code| of uptex-m.ch } k := kcatcodekey(c); @@ -985,8 +985,8 @@ begin else if k=@"93 then return { Hangul Syllables } else if k=@"94 then return { Hangul Jamo Extended-B } else if k=@"99 then return { CJK Compatibility Ideographs } - else if (k>=@"10D)and(k<=@"110) then return { Kana Extended-B .. Small Kana Extension } - else if (k>=@"13B)and(k<=@"143) then return { CJK Unified Ideographs Extension B .. H } + else if (k>=@"115)and(k<=@"118) then return { Kana Extended-B .. Small Kana Extension } + else if (k>=@"145)and(k<=@"14F) then return { CJK Unified Ideographs Extension B .. J } else if k=@"1FE then return { Fullwidth digit and latin alphabet } else if k=@"1FF then return; { Halfwidth katakana } end diff --git a/Build/source/texk/web2c/uptexdir/uptex-m.ch b/Build/source/texk/web2c/uptexdir/uptex-m.ch index f4b7c7272d9..5c91e61ca1f 100644 --- a/Build/source/texk/web2c/uptexdir/uptex-m.ch +++ b/Build/source/texk/web2c/uptexdir/uptex-m.ch @@ -48,7 +48,7 @@ % (2022-07-23) TTK upTeX u1.29 % (2022-12-09) HK Hironori Kitagawa fixed a bug in \char, \kchar. % (2023-09-16) TTK upTeX u1.30 -% (2024-05-01) TTK upTeX u1.35 +% (2024-09-30) TTK upTeX u1.35 @x \def\pTeX{p\kern-.15em\TeX} @@ -176,7 +176,6 @@ else if (kcode_pos=1)or((kcode_pos>=@'11)and(kcode_pos<=@'12)) @d other_kchar=18 {kanji codes} @d max_char_code=18 {largest catcode for individual characters} @y -@d latin_ucs=14 {is not cjk characters in ucs code} @d not_cjk=15 {is not cjk characters} @d kanji=16 {kanji} @d kana=17 {hiragana, katakana, alphabet} @@ -239,6 +238,7 @@ for k:=0 to 255 do begin cat_code(k):=other_char; kcat_code(k):=other_kchar; math_code(k):=hi(k); sf_code(k):=1000; auto_xsp_code(k):=0; + inhibit_xsp_type(k):=0; kinsoku_type(k):=0; end; @y eqtb[auto_xspacing_code]:=eqtb[cat_code_base]; @@ -247,6 +247,7 @@ for k:=0 to 255 do begin cat_code(k):=other_char; math_code(k):=hi(k); sf_code(k):=1000; auto_xsp_code(k):=0; + inhibit_xsp_type(k):=0; kinsoku_type(k):=0; end; for k:=0 to 511 do begin kcat_code(k):=other_kchar; @@ -281,12 +282,12 @@ if (isinternalUPTEX) then begin @t\hskip10pt@>kcat_code(@"99):=kanji; { CJK Compatibility Ideographs } @t\hskip10pt@>kcat_code(@"9C):=modifier; { Variation Selectors } { \hskip10pt|kcat_code(@"A2):=other_kchar;| Halfwidth and Fullwidth Forms } - @+@t\1@>for k:=@"10D to @"110 do kcat_code(k):=kana; { Kana Extended-B .. Small Kana Extension } - @+@t\1@>for k:=@"13B to @"143 do kcat_code(k):=kanji; { CJK Unified Ideographs Extension B .. H } - @t\hskip10pt@>kcat_code(@"150):=modifier; { Variation Selectors Supplement } - @+@t\1@>for k:=@"165 to @"166 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark } - @t\hskip10pt@>kcat_code(@"16A):=kanji; { Standardized Variation Sequence } - @+@t\1@>for k:=@"16C to @"16D do kcat_code(k):=kanji; { Ideographic Variation Sequence } + @+@t\1@>for k:=@"115 to @"118 do kcat_code(k):=kana; { Kana Extended-B .. Small Kana Extension } + @+@t\1@>for k:=@"145 to @"14F do kcat_code(k):=kanji; { CJK Unified Ideographs Extension B .. J } + @t\hskip10pt@>kcat_code(@"15B):=modifier; { Variation Selectors Supplement } + @+@t\1@>for k:=@"170 to @"171 do kcat_code(k):=kana; { Kana with (Semi-)Voiced Sound Mark } + @t\hskip10pt@>kcat_code(@"175):=kanji; { Standardized Variation Sequence } + @+@t\1@>for k:=@"177 to @"178 do kcat_code(k):=kanji; { Ideographic Variation Sequence } @+@t\1@>for k:=@"1F9 to @"1FC do kcat_code(k):=modifier; { Combining Katakana-Hiragana (Semi-)Voiced Sound Mark .. Emoji Modifier Fitzpatrick } @t\hskip10pt@>kcat_code(@"1FD):=not_cjk; { Latin-1 Letters } @@ -426,7 +427,6 @@ if ((kcp mod @'10)>0)and(nrestmultichr(kcp)>0) then p:=p-(kcp mod @'10); cur_chr:=fromBUFF(ustringcast(buffer), limit+1, loc); cur_cmd:=kcat_code(kcatcodekey(cur_chr)); if (multistrlen(ustringcast(buffer), limit+1, loc)>1) and check_kcat_code(cur_cmd,cur_chr) then begin - if (cur_cmd=latin_ucs) then cur_cmd:=cat_code(cur_chr); if (cur_cmd=not_cjk) then cur_cmd:=other_kchar; for l:=loc to loc-1+multistrlen(ustringcast(buffer), limit+1, loc) do buffer2[l]:=1; @@ -477,7 +477,6 @@ else begin k:=loc; cur_chr:=fromBUFF(ustringcast(buffer), limit+1, k); cat:=kcat_code(kcatcodekey(cur_chr)); if (multistrlen(ustringcast(buffer), limit+1, k)>1) and check_kcat_code(cat,cur_chr) then begin - if (cat=latin_ucs) then cat:=cat_code(cur_chr); if (cat=not_cjk) then cat:=other_kchar; for l:=k to k-1+multistrlen(ustringcast(buffer), limit+1, k) do buffer2[l]:=1; @@ -520,7 +519,6 @@ begin repeat cur_chr:=fromBUFF(ustringcast(buffer), limit+1, k); cat:=kcat_code(kcatcodekey(cur_chr)); if (multistrlen(ustringcast(buffer), limit+1, k)>1) and check_kcat_code(cat,cur_chr) then begin - if (cat=latin_ucs) then cat:=cat_code(cur_chr); if (cat=not_cjk) then cat:=other_kchar; for l:=k to k-1+multistrlen(ustringcast(buffer), limit+1, k) do buffer2[l]:=1; @@ -575,8 +573,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_cjk_val)+cur_chr - else if (cur_cmd=latin_ucs) then - cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_char_val)+cur_chr @z @@ -610,8 +606,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_cjk_val)+cur_chr - else if (cur_cmd=latin_ucs) then - cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_char_val)+cur_chr @z @@ -625,8 +619,6 @@ if cat=other_kchar then k:=k-multilenbuffchar(cur_chr)+1; {now |k| points to fir cur_tok:=(kanji_ivs*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_cjk_val)+cur_chr - else if (cur_cmd=latin_ucs) then - cur_tok:=(cat_code(cur_chr)*max_cjk_val)+cur_chr else cur_tok:=(cur_cmd*max_char_val)+cur_chr @z @@ -696,7 +688,6 @@ while k<pool_ptr do begin t:=so(str_pool[k]); if t>=@"180 then { there is no |wchar_token| whose code is 0--127. } begin t:=fromBUFFshort(str_pool, pool_ptr, k); cc:=kcat_code(kcatcodekey(t)); - if (cc=latin_ucs) then cc:=other_char; if (cc=not_cjk) then cc:=other_kchar; if (cc=kanji)and(t>=max_cjk_val) then cc:=kanji_ivs; t:=t+cc*max_cjk_val; @@ -1186,7 +1177,7 @@ kchar_given: begin print_esc("kchar"); print_hex(chr_code); if cur_chr=kcat_code_base then m:=kanji else m:=0 @y @ @<Let |m| be the minimal...@>= -if cur_chr=kcat_code_base then m:=latin_ucs else m:=0 +if cur_chr=kcat_code_base then m:=not_cjk else m:=0 @z @x @@ -1330,8 +1321,6 @@ begin if is_char_node(link(p)) then info(main_p):=KANJI(cur_chr)+cur_cmd*max_cjk_val else if cur_cmd=not_cjk then info(main_p):=KANJI(cur_chr)+other_kchar*max_cjk_val - else if cur_cmd=latin_ucs then - info(main_p):=KANJI(cur_chr)+cat_code(cur_chr)*max_cjk_val else { Does this case occur? } info(main_p):=KANJI(cur_chr)+kcat_code(kcatcodekey(KANJI(cur_chr)))*max_cjk_val; @z @@ -1426,7 +1415,7 @@ end; function check_kcat_code(@!ct:integer;@!cx:integer):integer; begin -if (((ct>=kanji)or((ct=latin_ucs)and(cx<max_ucs_val)))and(enable_cjk_token=0))or(enable_cjk_token=2)then +if ((ct>=kanji)and(enable_cjk_token=0))or(enable_cjk_token=2)then check_kcat_code:=1 else check_kcat_code:=0; end; diff --git a/Build/source/texk/web2c/uptexdir/uptex-prim.test b/Build/source/texk/web2c/uptexdir/uptex-prim.test new file mode 100755 index 00000000000..ee07787e80c --- /dev/null +++ b/Build/source/texk/web2c/uptexdir/uptex-prim.test @@ -0,0 +1,30 @@ +#! /bin/sh -vx +# Copyright 2024 Japanese TeX Development Community <issue@texjp.org> +# You may freely use, modify and/or distribute this file. + +BinDir=${BinDir:-.} +ExeExt=${ExeExt:-} +_uptex=$BinDir/uptex$ExeExt + +LC_ALL=C; export LC_ALL; LANGUAGE=C; export LANGUAGE + +TEXMFCNF=$srcdir/../kpathsea;export TEXMFCNF +OFMFONTS=".;$srcdir/tests"; export OFMFONTS +TEXINPUTS=".;$srcdir/tests"; export TEXINPUTS +TEXFORMATS=.; export TEXFORMATS + +# get same filename in log +rm -f up-prim.* +$LN_S $srcdir/uptexdir/tests/up-prim.tex ./up-prim.tex + +if test ! -f ./up-basic.fmt; then + cp $srcdir/tests/dump-basic.tex ./up-basic.tex + $_uptex -ini up-basic || exit 1 +fi + +$_uptex -fmt=up-basic -interaction=batchmode up-prim || : + +sed 1d up-prim.log >up-prim.out + +diff $srcdir/uptexdir/tests/up-prim.log up-prim.out || exit 3 + diff --git a/Build/source/utils/configure b/Build/source/utils/configure index ca1d8254baf..09ff0112026 100755 --- a/Build/source/utils/configure +++ b/Build/source/utils/configure @@ -799,6 +799,7 @@ enable_luahbtex enable_luajithbtex enable_mp enable_pmp +enable_texprof enable_upmp enable_xetex enable_xetex_synctex @@ -1599,6 +1600,7 @@ Optional Features: --disable-luajithbtex do not compile and install LuaHBJITTeX --disable-mp do not compile and install MetaPost --disable-pmp do not compile and install pMetaPost + --disable-texprof do not compile and install TeXprof --disable-upmp do not compile and install upMetaPost --disable-xetex do not compile and install XeTeX --disable-xetex-synctex build XeTeX without SyncTeX support @@ -5028,6 +5030,17 @@ test "x$enable_web2c:$enable_pmp" = xyes:yes && { need_libpng=yes need_ptexenc=yes } +# Check whether --enable-texprof was given. +if test ${enable_texprof+y} +then : + enableval=$enable_texprof; +fi +case $enable_texprof in #( + yes | no) : + ;; #( + *) : + enable_texprof=yes ;; +esac # Check whether --enable-upmp was given. if test ${enable_upmp+y} then : |