summaryrefslogtreecommitdiff
path: root/ext/mbstring
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mbstring')
-rw-r--r--ext/mbstring/.gitignore1
-rw-r--r--ext/mbstring/README15
-rw-r--r--ext/mbstring/README.libmbfl14
-rw-r--r--ext/mbstring/README_PHP3-i18n-ja773
-rw-r--r--ext/mbstring/config.m4265
-rw-r--r--ext/mbstring/config.w32100
-rw-r--r--ext/mbstring/libmbfl/INSTALL10
-rw-r--r--ext/mbstring/libmbfl/Makefile.am7
-rw-r--r--ext/mbstring/libmbfl/README13
-rwxr-xr-xext/mbstring/libmbfl/buildconf6
-rw-r--r--ext/mbstring/libmbfl/configure.ac49
-rw-r--r--ext/mbstring/libmbfl/filters/Makefile.am269
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_7bit.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_armscii8.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_ascii.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_base64.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_big5.c25
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_byte2.c8
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_byte4.c8
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp1251.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp1252.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp1254.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c20
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp51932.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp850.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp866.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp932.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_cp936.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_gb18030.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_htmlent.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_hz.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_jis.c8
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_koi8r.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_koi8u.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_qprint.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c24
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_ucs2.c12
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_ucs4.c12
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_uhc.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf16.c12
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf32.c12
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf7.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf8.c4
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c16
-rw-r--r--ext/mbstring/libmbfl/filters/mbfilter_uuencode.c4
-rwxr-xr-xext/mbstring/libmbfl/filters/mk_sb_tbl.awk2
-rw-r--r--ext/mbstring/libmbfl/mbfl/Makefile.am48
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.c728
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter.h75
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c45
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter_pass.c4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfilter_wchar.c4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_allocators.c12
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_allocators.h11
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_convert.c245
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_convert.h23
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_defs.h4
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_encoding.c12
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_encoding.h14
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c153
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h24
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_string.c7
-rw-r--r--ext/mbstring/libmbfl/mbfl/mbfl_string.h7
-rw-r--r--ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk2
-rw-r--r--ext/mbstring/libmbfl/nls/Makefile.am25
-rw-r--r--ext/mbstring/libmbfl/tests/Makefile.am10
-rw-r--r--ext/mbstring/libmbfl/tests/conv_encoding.tests/Makefile.am31
-rw-r--r--ext/mbstring/libmbfl/tests/conv_kana.tests/Makefile.am1
-rw-r--r--ext/mbstring/libmbfl/tests/strcut.tests/Makefile.am1
-rw-r--r--ext/mbstring/libmbfl/tests/strwidth.tests/Makefile.am1
-rw-r--r--ext/mbstring/mb_gpc.c26
-rw-r--r--ext/mbstring/mb_gpc.h2
-rw-r--r--ext/mbstring/mbstring.c1681
-rw-r--r--ext/mbstring/mbstring.h51
-rw-r--r--ext/mbstring/oniguruma.patch81
-rw-r--r--ext/mbstring/oniguruma/COPYING48
-rw-r--r--ext/mbstring/oniguruma/HISTORY115
-rw-r--r--ext/mbstring/oniguruma/INSTALL320
-rw-r--r--ext/mbstring/oniguruma/README40
-rw-r--r--ext/mbstring/oniguruma/README.ja195
-rw-r--r--ext/mbstring/oniguruma/README.md102
-rw-r--r--ext/mbstring/oniguruma/README_japanese183
-rw-r--r--ext/mbstring/oniguruma/doc/API147
-rw-r--r--ext/mbstring/oniguruma/doc/API.ja708
-rw-r--r--ext/mbstring/oniguruma/doc/CALLOUTS.API385
-rw-r--r--ext/mbstring/oniguruma/doc/CALLOUTS.API.ja382
-rw-r--r--ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN95
-rw-r--r--ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN.ja93
-rw-r--r--ext/mbstring/oniguruma/doc/FAQ6
-rw-r--r--ext/mbstring/oniguruma/doc/FAQ.ja14
-rw-r--r--ext/mbstring/oniguruma/doc/RE150
-rw-r--r--ext/mbstring/oniguruma/doc/RE.ja614
-rw-r--r--ext/mbstring/oniguruma/doc/UNICODE_PROPERTIES1465
-rwxr-xr-xext/mbstring/oniguruma/index.html12
-rw-r--r--ext/mbstring/oniguruma/index_ja.html12
-rw-r--r--ext/mbstring/oniguruma/src/ascii.c71
-rw-r--r--ext/mbstring/oniguruma/src/big5.c6
-rw-r--r--ext/mbstring/oniguruma/src/config.h.win32167
-rw-r--r--ext/mbstring/oniguruma/src/config.h.win64167
-rw-r--r--ext/mbstring/oniguruma/src/cp1251.c6
-rw-r--r--ext/mbstring/oniguruma/src/euc_jp.c14
-rw-r--r--ext/mbstring/oniguruma/src/euc_jp_prop.c22
-rw-r--r--ext/mbstring/oniguruma/src/euc_kr.c6
-rw-r--r--ext/mbstring/oniguruma/src/euc_tw.c6
-rw-r--r--ext/mbstring/oniguruma/src/gb18030.c202
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_1.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_10.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_11.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_13.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_14.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_15.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_16.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_2.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_3.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_4.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_5.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_6.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_7.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_8.c6
-rw-r--r--ext/mbstring/oniguruma/src/iso8859_9.c6
-rw-r--r--ext/mbstring/oniguruma/src/koi8.c6
-rw-r--r--ext/mbstring/oniguruma/src/koi8_r.c6
-rw-r--r--ext/mbstring/oniguruma/src/onig_init.c4
-rw-r--r--ext/mbstring/oniguruma/src/oniggnu.h10
-rw-r--r--ext/mbstring/oniguruma/src/onigposix.h7
-rw-r--r--ext/mbstring/oniguruma/src/oniguruma.h363
-rw-r--r--ext/mbstring/oniguruma/src/regcomp.c5646
-rw-r--r--ext/mbstring/oniguruma/src/regenc.c114
-rw-r--r--ext/mbstring/oniguruma/src/regenc.h125
-rw-r--r--ext/mbstring/oniguruma/src/regerror.c122
-rw-r--r--ext/mbstring/oniguruma/src/regexec.c3524
-rw-r--r--ext/mbstring/oniguruma/src/regext.c10
-rw-r--r--ext/mbstring/oniguruma/src/reggnu.c10
-rw-r--r--ext/mbstring/oniguruma/src/regint.h663
-rw-r--r--ext/mbstring/oniguruma/src/regparse.c4085
-rw-r--r--ext/mbstring/oniguruma/src/regparse.h485
-rw-r--r--ext/mbstring/oniguruma/src/regposerr.c9
-rw-r--r--ext/mbstring/oniguruma/src/regposix.c18
-rw-r--r--ext/mbstring/oniguruma/src/regsyntax.c25
-rw-r--r--ext/mbstring/oniguruma/src/regversion.c5
-rw-r--r--ext/mbstring/oniguruma/src/sjis.c16
-rw-r--r--ext/mbstring/oniguruma/src/sjis_prop.c22
-rw-r--r--ext/mbstring/oniguruma/src/st.c484
-rw-r--r--ext/mbstring/oniguruma/src/unicode.c575
-rw-r--r--ext/mbstring/oniguruma/src/unicode_egcb_data.c1369
-rw-r--r--ext/mbstring/oniguruma/src/unicode_fold1_key.c2932
-rw-r--r--ext/mbstring/oniguruma/src/unicode_fold2_key.c42
-rw-r--r--ext/mbstring/oniguruma/src/unicode_fold3_key.c42
-rw-r--r--ext/mbstring/oniguruma/src/unicode_fold_data.c2116
-rw-r--r--ext/mbstring/oniguruma/src/unicode_property_data.c26627
-rw-r--r--ext/mbstring/oniguruma/src/unicode_property_data_posix.c839
-rw-r--r--ext/mbstring/oniguruma/src/unicode_unfold_key.c3225
-rw-r--r--ext/mbstring/oniguruma/src/utf16_be.c62
-rw-r--r--ext/mbstring/oniguruma/src/utf16_le.c60
-rw-r--r--ext/mbstring/oniguruma/src/utf32_be.c10
-rw-r--r--ext/mbstring/oniguruma/src/utf32_le.c10
-rw-r--r--ext/mbstring/oniguruma/src/utf8.c57
-rw-r--r--ext/mbstring/php_mbregex.c299
-rw-r--r--ext/mbstring/php_mbregex.h30
-rw-r--r--ext/mbstring/php_unicode.c498
-rw-r--r--ext/mbstring/php_unicode.h281
-rw-r--r--ext/mbstring/tests/bug20087.phpt2
-rw-r--r--ext/mbstring/tests/bug40685.phpt2
-rw-r--r--ext/mbstring/tests/bug43301.phpt5
-rw-r--r--ext/mbstring/tests/bug52931.phpt2
-rw-r--r--ext/mbstring/tests/bug52981.phpt2
-rw-r--r--ext/mbstring/tests/bug62934.phpt2
-rw-r--r--ext/mbstring/tests/bug65544.phpt10
-rw-r--r--ext/mbstring/tests/bug66797.phpt2
-rw-r--r--ext/mbstring/tests/bug66964.phpt13
-rw-r--r--ext/mbstring/tests/bug69151.phpt5
-rw-r--r--ext/mbstring/tests/bug69267.phpt6
-rw-r--r--ext/mbstring/tests/bug71298.phpt10
-rw-r--r--ext/mbstring/tests/bug72164.phpt9
-rw-r--r--ext/mbstring/tests/bug72399.phpt11
-rw-r--r--ext/mbstring/tests/bug72402.phpt5
-rw-r--r--ext/mbstring/tests/bug72691.phpt1
-rw-r--r--ext/mbstring/tests/bug72693.phpt1
-rw-r--r--ext/mbstring/tests/bug72694.phpt1
-rw-r--r--ext/mbstring/tests/bug72710.phpt1
-rw-r--r--ext/mbstring/tests/bug72994.phpt6
-rw-r--r--ext/mbstring/tests/bug73532.phpt7
-rw-r--r--ext/mbstring/tests/bug73646.phpt5
-rw-r--r--ext/mbstring/tests/bug76319.phpt9
-rw-r--r--ext/mbstring/tests/bug76958.phpt14
-rw-r--r--ext/mbstring/tests/bug77025.phpt12
-rw-r--r--ext/mbstring/tests/bug77165.phpt11
-rw-r--r--ext/mbstring/tests/bug77367.phpt21
-rw-r--r--ext/mbstring/tests/bug77428.phpt14
-rw-r--r--ext/mbstring/tests/bug77514.phpt11
-rw-r--r--ext/mbstring/tests/casefolding.phpt40
-rw-r--r--ext/mbstring/tests/casemapping.phpt111
-rw-r--r--ext/mbstring/tests/empty_pattern.phpt5
-rw-r--r--ext/mbstring/tests/mb_chr_ord.phpt2
-rw-r--r--ext/mbstring/tests/mb_convert_case_invalid_mode.phpt13
-rw-r--r--ext/mbstring/tests/mb_convert_encoding_array.phpt2
-rw-r--r--ext/mbstring/tests/mb_convert_encoding_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_encode_mimeheader_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt2
-rw-r--r--ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt2
-rw-r--r--ext/mbstring/tests/mb_encode_mimeheader_variation5.phpt14
-rw-r--r--ext/mbstring/tests/mb_encode_mimeheader_variation6.phpt2
-rw-r--r--ext/mbstring/tests/mb_encode_numericentity.phpt2
-rw-r--r--ext/mbstring/tests/mb_encoding_aliases.phpt4
-rw-r--r--ext/mbstring/tests/mb_ereg2.phpt13
-rw-r--r--ext/mbstring/tests/mb_ereg3.phpt8
-rw-r--r--ext/mbstring/tests/mb_ereg4.phpt44
-rw-r--r--ext/mbstring/tests/mb_ereg_dupnames.phpt37
-rw-r--r--ext/mbstring/tests/mb_ereg_match_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_ereg_named_subpatterns.phpt50
-rw-r--r--ext/mbstring/tests/mb_ereg_replace_callback.phpt10
-rw-r--r--ext/mbstring/tests/mb_ereg_replace_named_subpatterns.phpt36
-rw-r--r--ext/mbstring/tests/mb_ereg_search_named_subpatterns.phpt31
-rw-r--r--ext/mbstring/tests/mb_ereg_search_pos.phpt1
-rw-r--r--ext/mbstring/tests/mb_ereg_search_setpos.phpt1
-rw-r--r--ext/mbstring/tests/mb_ereg_variation1.phpt2
-rw-r--r--ext/mbstring/tests/mb_ereg_variation4.phpt2
-rw-r--r--ext/mbstring/tests/mb_ereg_variation5.phpt2
-rw-r--r--ext/mbstring/tests/mb_eregi_invalid_arguments.phpt20
-rw-r--r--ext/mbstring/tests/mb_internal_encoding_basic2.phpt2
-rw-r--r--ext/mbstring/tests/mb_language.phpt39
-rw-r--r--ext/mbstring/tests/mb_parse_str.phpt2
-rw-r--r--ext/mbstring/tests/mb_parse_str02.phpt2
-rw-r--r--ext/mbstring/tests/mb_preferred_mime_name.phpt20
-rw-r--r--ext/mbstring/tests/mb_split.phpt2
-rw-r--r--ext/mbstring/tests/mb_split_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strcut_negative_length.phpt18
-rw-r--r--ext/mbstring/tests/mb_stripos_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_stripos_basic2.phpt2
-rw-r--r--ext/mbstring/tests/mb_stripos_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_stristr_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strlen_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_strlen_variation3.phpt2
-rw-r--r--ext/mbstring/tests/mb_strpos_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strrchr_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strrichr_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strripos_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_strripos_basic2.phpt2
-rw-r--r--ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt14
-rw-r--r--ext/mbstring/tests/mb_strrpos_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt11
-rw-r--r--ext/mbstring/tests/mb_strrpos_variation5.phpt2
-rw-r--r--ext/mbstring/tests/mb_strstr_variation3.phpt14
-rw-r--r--ext/mbstring/tests/mb_strtolower_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_strtolower_variation2.phpt16
-rw-r--r--ext/mbstring/tests/mb_strtolower_variation3.phpt2
-rw-r--r--ext/mbstring/tests/mb_strtolower_variation4.phpt2
-rw-r--r--ext/mbstring/tests/mb_strtoupper_variation2.phpt16
-rw-r--r--ext/mbstring/tests/mb_strtoupper_variation3.phpt2
-rw-r--r--ext/mbstring/tests/mb_strtoupper_variation4.phpt2
-rw-r--r--ext/mbstring/tests/mb_substr_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_substr_count_basic.phpt2
-rw-r--r--ext/mbstring/tests/mb_substr_count_variation4.phpt2
-rw-r--r--ext/mbstring/tests/mb_substr_variation3.phpt2
-rw-r--r--ext/mbstring/tests/php_gr_jp_10830.phpt2
-rw-r--r--ext/mbstring/tests/php_gr_jp_dev_884-1.phpt2
-rw-r--r--ext/mbstring/tests/php_gr_jp_dev_884-2.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-01.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-02.phpt4
-rw-r--r--ext/mbstring/tests/zend_multibyte-03.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-04.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-05.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-06.phpt4
-rw-r--r--ext/mbstring/tests/zend_multibyte-07.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-08.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-09.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-10.phpt4
-rw-r--r--ext/mbstring/tests/zend_multibyte-11.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-12.phpt2
-rw-r--r--ext/mbstring/tests/zend_multibyte-13.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-14.phpt1
-rw-r--r--ext/mbstring/tests/zend_multibyte-15.phpt4
-rw-r--r--ext/mbstring/tests/zend_multibyte-16.phpt4
-rw-r--r--ext/mbstring/ucgendat/README2
-rw-r--r--ext/mbstring/ucgendat/ucgendat.c1999
-rw-r--r--ext/mbstring/ucgendat/ucgendat.php641
-rw-r--r--ext/mbstring/ucgendat/uctest.php131
-rw-r--r--ext/mbstring/unicode_data.h7802
307 files changed, 45055 insertions, 32387 deletions
diff --git a/ext/mbstring/.gitignore b/ext/mbstring/.gitignore
deleted file mode 100644
index 21450cdec8..0000000000
--- a/ext/mbstring/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-oniguruma/oniguruma.h
diff --git a/ext/mbstring/README b/ext/mbstring/README
deleted file mode 100644
index c2db83436b..0000000000
--- a/ext/mbstring/README
+++ /dev/null
@@ -1,15 +0,0 @@
-!!Caution: DO NOT ADD/CHANGE MBSTRING CODE!!
-
-New mbstring is under development, anyone who would like
-add new feature/change behavior should access to development
-source.
-
-http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/php-i18n/
-
-All changes made after 2002/5/19 are subject to be
-removed.
-
-You are warned in php-dev and php-cvs lists many times
-already. If you are curious, search archive for details.
-
-Thank you.
diff --git a/ext/mbstring/README.libmbfl b/ext/mbstring/README.libmbfl
deleted file mode 100644
index 8f9ac620af..0000000000
--- a/ext/mbstring/README.libmbfl
+++ /dev/null
@@ -1,14 +0,0 @@
-libmbfl is a streamable multibyte character code filter and
-converter library.
-libmbfl is distributed under LGPL 2.1 and bundled with PHP.
-
-The original version of libmbfl is developed and distributed
-at http://sourceforge.jp/project/php-i18n/ .
-
-If you need to modify the bundled libmbfl, the change also have to be applied for
-the libmbfl on sourceforge.jp.
-
-If you have question about libmbfl, please ask to
- hirokawa@php.net, moriyoshi@php.net.
-
-See libmbfl/DISCLAIMER for licensing information of libmbfl.
diff --git a/ext/mbstring/README_PHP3-i18n-ja b/ext/mbstring/README_PHP3-i18n-ja
deleted file mode 100644
index 151d5ca52c..0000000000
--- a/ext/mbstring/README_PHP3-i18n-ja
+++ /dev/null
@@ -1,773 +0,0 @@
-==========================================
- README for I18N Package
-==========================================
-
-o Name and location of package
-
-Name: php-3.0.18-i18n-ja-2
-Location: http://www.happysize.co.jp/techie/php-ja-jp/
- ftp://ftp.happysize.co.jp/php-ja-jp/
- http://php.vdomains.org/
- ftp://ftp.vdomains.org/pub/php-ja-jp/
- http://php.jpnnet.com/
-
-Currently, this I18N version of PHP only adds Japanese support to base
-PHP. It allows you to use Japanese in scripts, as well as conversion
-between various Japanese encodings. It will work perfectly fine with
-ASCII with i18n option enabled. (note: executable is bit larger due
-to UNICODE table). The basic design aproach is to allow for other
-languages to be added in the future. Developers are encourage to join
-us!
-
-For more information on Japanese encodings, please refer to the
-section "Additional Notes."
-
-
-o What is this package?
-
-This package allows you to handle multiple Japanese encodings (SJIS, EUC,
-UTF-8, JIS) in PHP. If you find any bugs in this package, please report
-them to the appropriate mailing list. For now, the PHP-jp mailing list
-is the best place for this.
-
-PHP-jp ML mailto:PHP-jp@sidecar.ics.es.osaka-u.ac.jp
- http://sidecar.ics.es.osaka-u.ac.jp/php-jp/
- (discussions are in Japanese)
-
-
-o Who should use this
-
-Due to lack of documentation, it's not intended for beginners. If
-something goes wrong, be prepared to fix it on your own.
-
-
-o Warranty and Copyright
-
-There is no warranty with this package. Use it at your own risk.
-
-Please refer to the source code for the copyrights. In general, each
-program's copyright is owned by the programmer. Unless you obey the
-copyright holders restrictions, you are not allowed to use it in any
-form.
-
-
-o Redistribution
-
-As described in the source code, this package and the components are
-allowed to be redistributed with certain restrictions.
-
-Due to this package being still in beta, please try to redistribute
-it as an entire package. Please try not to distribute it as a form
-of patch. Because we would prefer to have this package distributed
-as one single package (not patch of patch of patch), avoid releasing
-any patch to this package.
-
-
-o Who made this
-
-A team of volunteers, PHP3 Internationalization, has been contributing
-their free time producing it. Although we are not related to the core
-PHP programmers, we are hoping to have our modifications merged into the
-core distribution in the near future. Thus, we did not call this a
-"Japanese Patch" (or distribution). Our final goal is to have true
-i18nized PHP!
-
-For anyone interested in this project, please drop us a line.
-
-Contact Address:
- phpj-dev@kage.net
- (Discussions are in Japanese, but feel free to write us in English)
-
-Webpage (English and Japanese):
- http://php.jpnnet.com/
-
-Project Outline (Japanese):
- http://www.happysize.co.jp/techie/php-ja-jp/spec.htm
-
-Developers:
- Hironori Sato <satoh@jpnnet.com>
- Shigeru Kanemoto <sgk@happysize.co.jp>
- Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
- U. Kenkichi <kenkichi@axes.co.jp>
- Tateyama <tateyan@amy.hi-ho.ne.jp>
- Other gracious contributors
-
-
-o Future plans
-
-- fulfilling what's written in outline
-- support for other languages other than Japanese
-- make the character conversion as a library (?)
-- more testing
-
-
-o Special Thanks to
-
-PHP Japanese webpage maintainer, Hirokawa-san
- http://www.cityfujisawa.ne.jp/%7Elouis/apps/phpfi/
-PHP-JP ML's Yamamoto-san
- http://sidecar.ics.es.osaka-u.ac.jp/php-jp/
-Previous jp-patch developers
-
-
-
-==========================================
- Advantages of using I18N package
-==========================================
-
-- allows you to use various character encodings for script files and
- http output
-- distinguish character encoding in POST/GET/COOKIE
-- proper mail output using JIS as body and MIME/Base64/JIS subject
-- if http output's Content-Type is text/html, it will set proper charset
-- stable character encoding conversion
-- multibyte regex
-
-
-
-==========================================
- Installation
-==========================================
-
-o Summary
-
-Add --enable-i18n option when running configure. For your own setup,
-add any other appropriate options as well.
-
-Don't forget to copy php3.ini-dist to desired location.
-(ex. /usr/local/lib/php3.ini)
-
-If you have already installed PHP3, copy all the entries in php3.ini-dist
-which start with "i18n.xxxx" to php3.ini.
-
-
-o configure option
- --enable-i18n
- include i18n features
-
- --enable-mbregex
- include multibyte regex library
- (without i18n enabled, mbregex functions will not function)
-
-
-o creating cgi version
-
- % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
- % cd php-3.0.18-i18n-ja-2
- % ./configure --enable-i18n --enable-mbregex
- % make
-
-
-o creating Apache version (regular module)
-
- % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
- % tar xvzf apache_1.3.x.tar.gz
- % cd apache_1.3.x
- % ./configure
- % cd ../php-3.0.18-i18n-ja-2
- % ./configure --with-apache=../apache_1.3.x --enable-i18n --enable-mbregex
- % make
- % make install
- % cd ../apache_1.3.x
- % ./configure --activate-module=src/modules/php3/libphp3.a
- % make
- % make install
-
-
-o creating Apache DSO version
-
- create DSO capable Apache first
- % tar xvzf apache_1.3.x.tar.gz
- % cd apache-1.3.x
- % ./configure --enable-shared=max
- % make
- % make install
-
- now create php3
- % cd php-3.0.18-i18n-ja-2
- % ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-i18n \
- --enable-mbregex
- % make
- % make install
-
-
-==========================================
- Additional Notes
-==========================================
-
-o Multibyte regex library
-
-From beta4, we have included the multibyte (mb) regex library which comes with
-Ruby. With this addition, you can now use regex in EUC, SJIS and UTF-8
-encoding. To avoid any conflicts with HSREGEX included with Apache,
-each function name has been changed. Therefore, mb regex functions are
-named differently from the original ereg functions in PHP. The character
-encoding used in mb regex is configured in i18n.internal_encoding.
-
-
-o Binary Output
-
-If http output encoding is set to other than 'pass', conversion of encoding
-from internal encoding to http output is done automatically. Thus,
-if you prefer to spit out anything in raw binary format, your data
-may be corrupted. In such event, set http_output to 'pass'.
-
-ex.
- <?
- i18n_http_output("pass");
- ...
- echo $the_binary_data_string;
- ?>
-
-
-o Content-Type
-
-Depending on the setting of http_output, PHP will output the proper charset.
-ex. Content-Type: text/html; charset="..."
-
-Be aware of following:
-
-- If you set Content-Type header using header() function, that will
- override the automatic addition of charset.
-- Be cautious when you set i18n_http_output, since if any output is
- made prior to this, proper header may have been sent out to the
- client already.
-
-
-o In the event of trouble
-
-If you find any bugs or trouble, please contact us at the above address.
-It may help us to track the problem if you send us the script as well.
-
-If you encounter any memory related error such as segmentation violation,
-add --enable-debug when you run configure. This will give you more
-detail information on where error has occurred. The error is stored
-in the server log or regular http output in CGI mode.
-
-
-o About Japanese encodings
-
-Due to historical reason, there are multiple character encodings used
-for Japanese. The most common encodings are: SJIS, EUC, JIS, and UTF-8.
-Here are (very) brief description of them:
-
-EUC
- commonly used in UNIX environment
- 8bit-8bit combo
- always >=0x80
-
-SJIS
- commonly used in Mac or PCs
- similar to EUC
- mostly 8bit-8bit (some 8bit-7bit)
- mostly >=0x80
- there are some halfwidth (size of ASCII) multibytes
-
-JIS
- commonly used in 7bit environment (nntp and smtp)
- starts with escaping char, \033 and a few more characters
-
-UTF-8
- 16bit+ encoding
- defines many languages existing in this world
- see http://www.unicode.org/ for more detail
-
-Because of having all these character encodings, PHP needs to translate
-between these encodings on the fly. Also, the addition of the mb regex
-library allows you to handle mb strings without fear of getting mb char
-chopped in half.
-
-Since Japanese is not the only language with multiple encodings, we
-encourage other developers to modify our code to suit your needs. We
-definitely need people to work with Korean, Chinese (both traditional
-and simplified), and Russian. Let us know if you are interested in
-this project!
-
-
-
-==========================================
- php3.ini setting
-==========================================
-
-The following init options will allow you to change the default settings.
-Define these settings in the global section of php3.ini.
-
-All keywords are case-insensitive.
-
-o Encoding naming
-
- For each encoding, there are three names: standarized, alias, MIME
-
- - UTF-8
- standard: UTF-8
- alias: N/A
- mime: UTF-8
-
- - ASCII
- standard: ASCII
- alias: N/A
- mime: US-ASCII
-
- - Japanese EUC
- standard: EUC-JP
- alias: EUC, EUC_JP, eucJP, x-euc-jp
- mime: EUC-JP
-
- - Shift JIS
- standard: SJIS
- alias: x-sjis, MS_Kanji
- mime: Shift_JIS
-
- - JIS
- standard: JIS
- alias: N/A
- mime: ISO-2022-JP
-
- - Quoted-Printable
- standard: Quoted-Printable
- alias: qprint
- mime: N/A
-
- - BASE64
- standard: BASE64
- alias: N/A
- mime: N/A
-
- - no conversion
- standard: pass
- alias: none
- mime: N/A
-
- - auto encoding detection
- standard: auto
- alias: unknown
- mime: N/A
-
- * N/A - Not Applicapable
-
-o i18n.http_output - default http output encoding
-
- i18n.http_output = EUC-JP|SJIS|JIS|UTF-8|pass
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- pass: no conversion
-
- The default is pass (internal encoding is used)
- It can be re-configured on the fly using i18n_http_output().
-
-
-o i18n.internal_encoding - internal encoding
-
- i18n.internal_encoding = EUC-JP|SJIS|UTF-8
- EUC-JP : EUC
- SJIS: SJIS
- UTF-8: UTF-8
-
- The default is EUC-JP.
-
- PHP parser is designed based on using ISO-8859-1. For other
- encodings, following conditions have to be satisfied in order
- to use them:
- - per byte encoding
- - single byte character in range of 00h-7fh which is compatible
- with ASCII
- - multibyte without 00h-7fh
- In case of Japanese, EUC-JP and UTF-8 are the only encoding that
- meets this criteria.
-
- If i18n.internal_encoding and i18n.http_output differs, conversion
- takes place at the time of output. If you convert any data within
- PHP scripts to URL encoding, BASE64 or Quoted-Printable, encoding
- stays as defined in i18n.internal_encoding. Thus, if you would
- prefer to encode in compliance with i18n.http_output, you need
- to manually convert encoding.
-
- ex. $str = urlencode( i18n_convert($str, i18n_http_output()) );
-
- Encoding such as ISO-2022-** and HZ encoding which uses escape
- sequences can not be used as internal encoding. If used, they
- result in following errors:
- - parser pukes funky error
- - magic_quotes_*** breaks encoding (SJIS may have similar problem)
- - string manipulation and regex will malfunction
-
-
-o i18n.script_encoding - script encoding
-
- i18n.script_encoding = auto|EUC-JP|SJIS|JIS|UTF-8
- auto: automatic
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
- The default is auto.
- The script's encoding is converted to i18n.internal_encoding before
- entering the script parser.
-
- Be aware that auto detection may fail under some conditions.
- For best auto detection, add multibyte character at beginning of
- script.
-
-
-o i18n.http_input - handling of http input (GET/POST/COOKIE)
-
- i18n.http_input = pass|auto
- auto: auto conversion
- pass: no conversion
-
- The default is auto.
- If set to pass, no conversion will take place.
- If set to auto, it will automatically detect the encoding. If
- detection is successful, it will convert to the proper internal
- encoding. If not, it will assume the input as defined in
- i18n.http_input_default.
-
-o i18n.http_input_default - default http input encoding
-
- i18n.http_input_default = pass|EUC-JP|SJIS|JIS|UTF-8
- pass: no conversion
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
- The default is pass.
- This option is only effective as long as i18n.http_input is set to
- auto. If the auto detection fails, this encoding is used as an
- assumption to convert the http input to the internal encoding.
- If set to pass, no conversion will take place.
-
-o sample settings
-
- 1) For most flexibility, we recommend using following example.
- i18n.http_output = SJIS
- i18n.internal_encoding = EUC-JP
- i18n.script_encoding = auto
- i18n.http_input = auto
- i18n.http_input_default = SJIS
-
- 2) To avoid unexpected encoding problems, try these:
-
- i18n.http_output = pass
- i18n.internal_encoding = EUC-JP
- i18n.script_encoding = pass
- i18n.http_input = pass
- i18n.http_input_default = pass
-
-
-
-==========================================
- PHP functions
-==========================================
-
-The following describes the additional PHP functions.
-
-All keywords are case-insensitive.
-
-o i18n_http_output(encoding)
-o encoding = i18n_http_output()
-
- This will set the http output encoding. Any output following this
- function will be controlled by this function. If no argument is given,
- the current http output encode setting is returned.
-
- encodings
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- pass: no conversion
-
- NONE is not allowed
-
-
-o encoding = i18n_internal_encoding()
-
- Returns the current internal encoding as a string.
-
- internal encoding
- EUC-JP : EUC
- SJIS: SJIS
- UTF-8: UTF-8
-
-
-o encoding = i18n_http_input()
-
- Returns http input encoding.
-
- encodings
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- pass: no conversion (only if i18n.http_input is set to pass)
-
-
-o string = i18n_convert(string, encoding)
- string = i18n_convert(string, encoding, pre-conversion-encoding)
-
- Returns converted string in desired encoding. If
- pre-conversion-encoding is not defined, the given
- string is assumed to be in internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- pass: no conversion
-
- pre-conversion-encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- pass: no conversion
- auto: auto detection
-
-
-o encoding = i18n_discover_encoding(string)
-
- Encoding of the given string is returned (as a string).
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- ASCII: ASCII (only 09h, 0Ah, 0Dh, 20h-7Eh)
- pass: unable to determine (text is too short to determine)
- unknown: unknown or possible error
-
-
-o int = mbstrlen(string)
-o int = mbstrlen(string, encoding)
-
- Returns character length of a given string. If no encoding is defined,
- the encoding of string is assumed to be the internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
- auto: automatic
-
-
-o int = mbstrpos(string1, string2)
-o int = mbstrpos(string1, string2, start)
-o int = mbstrpos(string1, string2, start, encoding)
-
- Same as strpos. If no encoding is defined, the encoding of string
- is assumed to be the internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
-
-o int = mbstrrpos(string1, string2)
-o int = mbstrrpos(string1, string2, encoding)
-
- Same as strrpos. If no encoding is defined, the encoding of string
- is assumed to be the internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
-
-o string = mbsubstr(string, position)
-o string = mbsubstr(string, position, length)
-o string = mbsubstr(string, position, length, encoding)
-
- Same as substr. If no encoding is defined, the encoding of string
- is assumed to be the internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
-
-o string = mbstrcut(string, position)
-o string = mbstrcut(string, position, length)
-o string = mbstrcut(string, position, length, encoding)
-
- Same as subcut. If position is the 2nd byte of a mb character, it will cut
- from the first byte of that character. It will cut the string without
- chopping a single byte from a mb character. In another words, if you
- set length to 5, you will only get two mb characters. If no encoding
- is defined, the encoding of string is assumed to be the internal encoding.
-
- encoding
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
-
-o string = i18n_mime_header_encode(string)
- MIME encode the string in the format of =?ISO-2022-JP?B?[string]?=.
-
-
-o string = i18n_mime_header_decode(string)
- MIME decodes the string.
-
-
-o string = i18n_ja_jp_hantozen(string)
-o string = i18n_ja_jp_hantozen(string, option)
-o string = i18n_ja_jp_hantozen(string, option, encoding)
-
- Conversion between full width character and halfwidth character.
-
- option
- The following options are allowed. The default is "KV".
- Acronym: FW = fullwidth, HW = halfwidth
-
- "r" : FW alphabet -> HW alphabet
-
- "R" : HW alphabet -> FW alphabet
-
- "n" : FW number -> HW number
-
- "N" : HW number -> FW number
-
- "a" : FW alpha numeric (21h-7Eh) -> HW alpha numeric
-
- "A" : HW alpha numeric (21h-7Eh) -> FW alpha numeric
-
- "k" : FW katakana -> HW katakana
-
- "K" : HW katakana -> FW katakana
-
- "h" : FW hiragana -> HW hiragana
-
- "H" : HW hiragana -> FW katakana
-
- "c" : FW katakana -> FW hiragana
-
- "C" : FW hiragana -> FW katakana
-
- "V" : merge dakuon character. only works with "K" and "H" option
-
- encoding
- If no encoding is defined, the encoding of string is assumed to be
- the internal encoding.
- EUC-JP : EUC
- SJIS: SJIS
- JIS : JIS
- UTF-8: UTF-8
-
-
-int = mbereg(regex_pattern, string, string)
-int = mberegi(regex_pattern, string, string)
- mb version of ereg() and eregi()
-
-
-string = mbereg_replace(regex_pattern, string, string)
-string = mberegi_replace(regex_pattern, string, string)
- mb version of ereg_replace() and eregi_replace()
-
-
-string_array = mbsplit(regex, string, limit)
- mb version of split()
-
-
-
-==========================================
- FAQ
-==========================================
-
-Here, we have gathered some commonly asked questions on PHP-jp mailing
-list.
-
-o To use Japanese in GET method
-
-If you need to assign Japanese text in GET method with argument, such as;
-xxxx.php?data=<Japanese text>, use urlencode function in PHP. If not,
-text may not be passed onto action php properly.
-
-ex: <a href="hoge.php?data=<? echo urlencode($data) ?>">Link</a>
-
-
-o When passing data via GET/POST/COOKIE, \ character sneaks in
-
-When using SJIS as internal encoding, or passed-on data includes '"\,
-PHP automatically inserts escaping character, \. Set magic_quotes_gpc
-in php3.ini from On to Off. An alternative work around to this problem
-is to use StripSlashes().
-
-If $quote_str is in SJIS and you would like to extract Japanese text,
-use ereg_replace as follows:
-
-ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),
- "\\1",$quote_str);
-
-This will effectively extract Japanese text out of $quote_str.
-
-
-o Sometimes, encoding detection fails
-
-If i18n_http_input() returns 'pass', it's likely that PHP failed to
-detect whether it's SJIS or EUC. In such case, use <input type=hidden
-value="some Japanese text"> to properly detect the incoming text's
-encoding.
-
-
-
-==========================================
- Japanese Manual
-==========================================
-Translated manual done by "PHP Japanese Manual Project" :
-
-http://www.php.net/manual/ja/manual.php
-
-Starting 3.0.18-i18n-ja, we have removed doc-jp from tarball package.
-
-
-==========================================
- Change Logs
-==========================================
-
-o 2000-10-28, Rui Hirokawa <hirokawa@php.net>
-
-This patch is derived from php-3.0.15-i18n-ja as well as php-3.0.16 by
-Kuwamura applied to original php-3.0.18. It also includes following fixes:
-
-1) allows you to set charset in mail().
-2) fixed mbregex definitions to avoid conflicts with system regex
-3) php3.ini-dist now uses PASS for http_output instead of SJIS
-
-o 2000-11-24, Hironori Sato <satoh@yyplanet.com>
-
-Applied above patched and added detection for gdImageStringTTF in configure.
-Following setups are known to work:
-
-gd-1.3-6, gd-devel-1.3-6, freetype-1.3.1-5, freetype-devel-1.3.1-5
- ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf",
- i18n_convert("ÆüËܸì", "UTF-8"));
- ImageGif($im);
-
-gd-1.7.3-1k1, gd-devel-1.7.3-1k1, freetype-1.3.1-5, freetype-devel-1.3.1-5
- ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf","ÆüËܸì");
- ImagePng($im);
- * i18n_internal_encoding = EUC Ëô¤Ï SJIS
-
-For any gd libraries before 1.6.2, you need to use i18n_convert. For
-gd-1.5.2/3, upgrade to anything above 1.7 to use ImageTTFText without
-using i18n_convert. As long as you have internal_encoding set to EUC or
-SJIS, ImageTTFText should work without mojibake. Again, make sure you
-have i18n_http_output("pass") before calling ImageGif, ImagePng, ImageJpeg!
-
-o 2000-12-09, Rui Hirokawa <hirokawa@php.net>
-
-Fixed mail() which was causing segmentation fault when header was null.
diff --git a/ext/mbstring/config.m4 b/ext/mbstring/config.m4
index 4c1d8e8a88..b2d901aca1 100644
--- a/ext/mbstring/config.m4
+++ b/ext/mbstring/config.m4
@@ -1,6 +1,4 @@
-dnl
-dnl $Id$
-dnl
+dnl config.m4 for extension mbstring
AC_DEFUN([PHP_MBSTRING_ADD_SOURCES], [
PHP_MBSTRING_SOURCES="$PHP_MBSTRING_SOURCES $1"
@@ -80,23 +78,23 @@ AC_DEFUN([PHP_MBSTRING_SETUP_MBREGEX], [
fi
AC_CACHE_CHECK(for variable length prototypes and stdarg.h, php_cv_mbstring_stdarg, [
- AC_TRY_RUN([
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdarg.h>
int foo(int x, ...) {
- va_list va;
- va_start(va, x);
- va_arg(va, int);
- va_arg(va, char *);
- va_arg(va, double);
- return 0;
+ va_list va;
+ va_start(va, x);
+ va_arg(va, int);
+ va_arg(va, char *);
+ va_arg(va, double);
+ return 0;
}
int main() { return foo(10, "", 3.14); }
- ], [php_cv_mbstring_stdarg=yes], [php_cv_mbstring_stdarg=no], [
+ ]])], [php_cv_mbstring_stdarg=yes], [php_cv_mbstring_stdarg=no], [
php_cv_mbstring_stdarg=no
])
])
- AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h sys/time.h sys/times.h stdarg.h])
+ AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h sys/time.h sys/times.h stdarg.h limits.h])
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(long, 4)
@@ -115,7 +113,7 @@ int main() { return foo(10, "", 3.14); }
PHP_MBSTRING_ADD_INCLUDE([oniguruma])
PHP_MBSTRING_ADD_CONFIG_HEADER([oniguruma/src/config.h])
PHP_MBSTRING_ADD_SOURCES([
- oniguruma/src/ascii.c
+ oniguruma/src/ascii.c
oniguruma/src/big5.c
oniguruma/src/cp1251.c
oniguruma/src/euc_jp.c
@@ -190,11 +188,11 @@ int main() { return foo(10, "", 3.14); }
save_old_LDFLAGS=$LDFLAGS
PHP_EVAL_LIBLINE([$MBSTRING_SHARED_LIBADD], LDFLAGS)
AC_MSG_CHECKING([if oniguruma has an invalid entry for KOI8 encoding])
- AC_TRY_LINK([
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <oniguruma.h>
- ], [
+ ]], [[
return (int)(ONIG_ENCODING_KOI8 + 1);
- ], [
+ ]])], [
AC_MSG_RESULT([no])
], [
AC_MSG_RESULT([yes])
@@ -214,135 +212,108 @@ return (int)(ONIG_ENCODING_KOI8 + 1);
])
AC_DEFUN([PHP_MBSTRING_SETUP_LIBMBFL], [
- dnl libmbfl is required and can not be disabled
- if test "$PHP_LIBMBFL" = "yes" || test "$PHP_LIBMBFL" = "no"; then
- dnl
- dnl Bundled libmbfl
- dnl
- PHP_MBSTRING_ADD_BUILD_DIR([libmbfl])
- PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/mbfl])
- PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/filters])
- PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/nls])
- PHP_MBSTRING_ADD_INCLUDE([libmbfl])
- PHP_MBSTRING_ADD_INCLUDE([libmbfl/mbfl])
- PHP_MBSTRING_ADD_CONFIG_HEADER([libmbfl/config.h])
-
- PHP_MBSTRING_ADD_SOURCES([
- libmbfl/filters/html_entities.c
- libmbfl/filters/mbfilter_7bit.c
- libmbfl/filters/mbfilter_ascii.c
- libmbfl/filters/mbfilter_base64.c
- libmbfl/filters/mbfilter_big5.c
- libmbfl/filters/mbfilter_byte2.c
- libmbfl/filters/mbfilter_byte4.c
- libmbfl/filters/mbfilter_cp1251.c
- libmbfl/filters/mbfilter_cp1252.c
- libmbfl/filters/mbfilter_cp1254.c
- libmbfl/filters/mbfilter_cp5022x.c
- libmbfl/filters/mbfilter_cp51932.c
- libmbfl/filters/mbfilter_cp850.c
- libmbfl/filters/mbfilter_cp866.c
- libmbfl/filters/mbfilter_cp932.c
- libmbfl/filters/mbfilter_cp936.c
- libmbfl/filters/mbfilter_gb18030.c
- libmbfl/filters/mbfilter_euc_cn.c
- libmbfl/filters/mbfilter_euc_jp.c
- libmbfl/filters/mbfilter_euc_jp_2004.c
- libmbfl/filters/mbfilter_euc_jp_win.c
- libmbfl/filters/mbfilter_euc_kr.c
- libmbfl/filters/mbfilter_euc_tw.c
- libmbfl/filters/mbfilter_htmlent.c
- libmbfl/filters/mbfilter_hz.c
- libmbfl/filters/mbfilter_iso2022_jp_ms.c
- libmbfl/filters/mbfilter_iso2022jp_2004.c
- libmbfl/filters/mbfilter_iso2022jp_mobile.c
- libmbfl/filters/mbfilter_iso2022_kr.c
- libmbfl/filters/mbfilter_iso8859_1.c
- libmbfl/filters/mbfilter_iso8859_10.c
- libmbfl/filters/mbfilter_iso8859_13.c
- libmbfl/filters/mbfilter_iso8859_14.c
- libmbfl/filters/mbfilter_iso8859_15.c
- libmbfl/filters/mbfilter_iso8859_16.c
- libmbfl/filters/mbfilter_iso8859_2.c
- libmbfl/filters/mbfilter_iso8859_3.c
- libmbfl/filters/mbfilter_iso8859_4.c
- libmbfl/filters/mbfilter_iso8859_5.c
- libmbfl/filters/mbfilter_iso8859_6.c
- libmbfl/filters/mbfilter_iso8859_7.c
- libmbfl/filters/mbfilter_iso8859_8.c
- libmbfl/filters/mbfilter_iso8859_9.c
- libmbfl/filters/mbfilter_jis.c
- libmbfl/filters/mbfilter_koi8r.c
- libmbfl/filters/mbfilter_armscii8.c
- libmbfl/filters/mbfilter_qprint.c
- libmbfl/filters/mbfilter_sjis.c
- libmbfl/filters/mbfilter_sjis_open.c
- libmbfl/filters/mbfilter_sjis_mobile.c
- libmbfl/filters/mbfilter_sjis_mac.c
- libmbfl/filters/mbfilter_sjis_2004.c
- libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c
- libmbfl/filters/mbfilter_ucs2.c
- libmbfl/filters/mbfilter_ucs4.c
- libmbfl/filters/mbfilter_uhc.c
- libmbfl/filters/mbfilter_utf16.c
- libmbfl/filters/mbfilter_utf32.c
- libmbfl/filters/mbfilter_utf7.c
- libmbfl/filters/mbfilter_utf7imap.c
- libmbfl/filters/mbfilter_utf8.c
- libmbfl/filters/mbfilter_utf8_mobile.c
- libmbfl/filters/mbfilter_uuencode.c
- libmbfl/filters/mbfilter_koi8u.c
- libmbfl/mbfl/mbfilter.c
- libmbfl/mbfl/mbfilter_8bit.c
- libmbfl/mbfl/mbfilter_pass.c
- libmbfl/mbfl/mbfilter_wchar.c
- libmbfl/mbfl/mbfl_convert.c
- libmbfl/mbfl/mbfl_encoding.c
- libmbfl/mbfl/mbfl_filter_output.c
- libmbfl/mbfl/mbfl_ident.c
- libmbfl/mbfl/mbfl_language.c
- libmbfl/mbfl/mbfl_memory_device.c
- libmbfl/mbfl/mbfl_string.c
- libmbfl/mbfl/mbfl_allocators.c
- libmbfl/nls/nls_de.c
- libmbfl/nls/nls_en.c
- libmbfl/nls/nls_ja.c
- libmbfl/nls/nls_kr.c
- libmbfl/nls/nls_neutral.c
- libmbfl/nls/nls_ru.c
- libmbfl/nls/nls_uni.c
- libmbfl/nls/nls_zh.c
- libmbfl/nls/nls_hy.c
- libmbfl/nls/nls_tr.c
- libmbfl/nls/nls_ua.c
- ])
- PHP_MBSTRING_ADD_CFLAG([-DHAVE_CONFIG_H])
- PHP_MBSTRING_ADD_INSTALL_HEADERS([libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_allocators.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_ident.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h])
- else
- dnl
- dnl External libmfl
- dnl
- for inc in include include/mbfl-1.0 include/mbfl; do
- if test -f "$PHP_LIBMBFL/$inc/mbfilter.h"; then
- PHP_LIBMBFL_INCLUDE="$inc"
- break
- fi
- done
-
- if test -z "$PHP_LIBMBFL_INCLUDE"; then
- AC_MSG_ERROR([mbfilter.h not found. Please reinstall libmbfl library.])
- else
- PHP_ADD_INCLUDE([$PHP_LIBMBFL_INCLUDE])
- fi
-
- PHP_CHECK_LIBRARY(mbfl, mbfl_buffer_converter_new, [
- PHP_ADD_LIBRARY_WITH_PATH(mbfl, $PHP_LIBMBFL/$PHP_LIBDIR, MBSTRING_SHARED_LIBADD)
- ],[
- AC_MSG_ERROR([Problem with libmbfl. Please check config.log for more information.])
- ], [
- -L$PHP_LIBMBFL/$PHP_LIBDIR
- ])
- fi
+ dnl
+ dnl Bundled libmbfl is required and can not be disabled
+ dnl
+ PHP_MBSTRING_ADD_BUILD_DIR([libmbfl])
+ PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/mbfl])
+ PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/filters])
+ PHP_MBSTRING_ADD_BUILD_DIR([libmbfl/nls])
+ PHP_MBSTRING_ADD_INCLUDE([libmbfl])
+ PHP_MBSTRING_ADD_INCLUDE([libmbfl/mbfl])
+ PHP_MBSTRING_ADD_CONFIG_HEADER([libmbfl/config.h])
+
+ PHP_MBSTRING_ADD_SOURCES([
+ libmbfl/filters/html_entities.c
+ libmbfl/filters/mbfilter_7bit.c
+ libmbfl/filters/mbfilter_ascii.c
+ libmbfl/filters/mbfilter_base64.c
+ libmbfl/filters/mbfilter_big5.c
+ libmbfl/filters/mbfilter_byte2.c
+ libmbfl/filters/mbfilter_byte4.c
+ libmbfl/filters/mbfilter_cp1251.c
+ libmbfl/filters/mbfilter_cp1252.c
+ libmbfl/filters/mbfilter_cp1254.c
+ libmbfl/filters/mbfilter_cp5022x.c
+ libmbfl/filters/mbfilter_cp51932.c
+ libmbfl/filters/mbfilter_cp850.c
+ libmbfl/filters/mbfilter_cp866.c
+ libmbfl/filters/mbfilter_cp932.c
+ libmbfl/filters/mbfilter_cp936.c
+ libmbfl/filters/mbfilter_gb18030.c
+ libmbfl/filters/mbfilter_euc_cn.c
+ libmbfl/filters/mbfilter_euc_jp.c
+ libmbfl/filters/mbfilter_euc_jp_2004.c
+ libmbfl/filters/mbfilter_euc_jp_win.c
+ libmbfl/filters/mbfilter_euc_kr.c
+ libmbfl/filters/mbfilter_euc_tw.c
+ libmbfl/filters/mbfilter_htmlent.c
+ libmbfl/filters/mbfilter_hz.c
+ libmbfl/filters/mbfilter_iso2022_jp_ms.c
+ libmbfl/filters/mbfilter_iso2022jp_2004.c
+ libmbfl/filters/mbfilter_iso2022jp_mobile.c
+ libmbfl/filters/mbfilter_iso2022_kr.c
+ libmbfl/filters/mbfilter_iso8859_1.c
+ libmbfl/filters/mbfilter_iso8859_10.c
+ libmbfl/filters/mbfilter_iso8859_13.c
+ libmbfl/filters/mbfilter_iso8859_14.c
+ libmbfl/filters/mbfilter_iso8859_15.c
+ libmbfl/filters/mbfilter_iso8859_16.c
+ libmbfl/filters/mbfilter_iso8859_2.c
+ libmbfl/filters/mbfilter_iso8859_3.c
+ libmbfl/filters/mbfilter_iso8859_4.c
+ libmbfl/filters/mbfilter_iso8859_5.c
+ libmbfl/filters/mbfilter_iso8859_6.c
+ libmbfl/filters/mbfilter_iso8859_7.c
+ libmbfl/filters/mbfilter_iso8859_8.c
+ libmbfl/filters/mbfilter_iso8859_9.c
+ libmbfl/filters/mbfilter_jis.c
+ libmbfl/filters/mbfilter_koi8r.c
+ libmbfl/filters/mbfilter_armscii8.c
+ libmbfl/filters/mbfilter_qprint.c
+ libmbfl/filters/mbfilter_sjis.c
+ libmbfl/filters/mbfilter_sjis_open.c
+ libmbfl/filters/mbfilter_sjis_mobile.c
+ libmbfl/filters/mbfilter_sjis_mac.c
+ libmbfl/filters/mbfilter_sjis_2004.c
+ libmbfl/filters/mbfilter_tl_jisx0201_jisx0208.c
+ libmbfl/filters/mbfilter_ucs2.c
+ libmbfl/filters/mbfilter_ucs4.c
+ libmbfl/filters/mbfilter_uhc.c
+ libmbfl/filters/mbfilter_utf16.c
+ libmbfl/filters/mbfilter_utf32.c
+ libmbfl/filters/mbfilter_utf7.c
+ libmbfl/filters/mbfilter_utf7imap.c
+ libmbfl/filters/mbfilter_utf8.c
+ libmbfl/filters/mbfilter_utf8_mobile.c
+ libmbfl/filters/mbfilter_uuencode.c
+ libmbfl/filters/mbfilter_koi8u.c
+ libmbfl/mbfl/mbfilter.c
+ libmbfl/mbfl/mbfilter_8bit.c
+ libmbfl/mbfl/mbfilter_pass.c
+ libmbfl/mbfl/mbfilter_wchar.c
+ libmbfl/mbfl/mbfl_convert.c
+ libmbfl/mbfl/mbfl_encoding.c
+ libmbfl/mbfl/mbfl_filter_output.c
+ libmbfl/mbfl/mbfl_ident.c
+ libmbfl/mbfl/mbfl_language.c
+ libmbfl/mbfl/mbfl_memory_device.c
+ libmbfl/mbfl/mbfl_string.c
+ libmbfl/mbfl/mbfl_allocators.c
+ libmbfl/nls/nls_de.c
+ libmbfl/nls/nls_en.c
+ libmbfl/nls/nls_ja.c
+ libmbfl/nls/nls_kr.c
+ libmbfl/nls/nls_neutral.c
+ libmbfl/nls/nls_ru.c
+ libmbfl/nls/nls_uni.c
+ libmbfl/nls/nls_zh.c
+ libmbfl/nls/nls_hy.c
+ libmbfl/nls/nls_tr.c
+ libmbfl/nls/nls_ua.c
+ ])
+ PHP_MBSTRING_ADD_CFLAG([-DHAVE_CONFIG_H])
+ PHP_MBSTRING_ADD_INSTALL_HEADERS([libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_allocators.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_ident.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h])
])
dnl
@@ -359,10 +330,6 @@ PHP_ARG_ENABLE([mbregex_backtrack], [whether to check multibyte regex backtrack]
[ --disable-mbregex-backtrack
MBSTRING: Disable multibyte regex backtrack check], yes, no)
-PHP_ARG_WITH(libmbfl, [for external libmbfl],
-[ --with-libmbfl[=DIR] MBSTRING: Use external libmbfl. DIR is the libmbfl base
- install directory [BUNDLED]], no, no)
-
PHP_ARG_WITH(onig, [for external oniguruma],
[ --with-onig[=DIR] MBSTRING: Use external oniguruma. DIR is the oniguruma install prefix.
If DIR is not set, the bundled oniguruma will be used], no, no)
diff --git a/ext/mbstring/config.w32 b/ext/mbstring/config.w32
index bb321e6038..e13b743381 100644
--- a/ext/mbstring/config.w32
+++ b/ext/mbstring/config.w32
@@ -1,7 +1,5 @@
-// $Id$
// vim:ft=javascript
-ARG_WITH("libmbfl", "use external libmbfl", "no");
ARG_ENABLE("mbstring", "multibyte string functions", "no");
ARG_ENABLE("mbregex", "multibyte regex support", "no");
ARG_ENABLE("mbregex-backtrack", "check multibyte regex backtrack", "yes");
@@ -13,62 +11,48 @@ if (PHP_MBSTRING != "no") {
FSO.CopyFile("ext\\mbstring\\oniguruma\\src\\oniguruma.h",
"ext\\mbstring\\oniguruma\\oniguruma.h", true);
- if (PHP_LIBMBFL != "no" &&
- CHECK_HEADER_ADD_INCLUDE("mbfl/mbfilter.h", "CFLAGS_LIBMBFL", PHP_LIBMBFL + "\\include") &&
- CHECK_LIB("mbfl.lib", "libmbfl", PHP_LIBMBFL + "\\lib")) {
-
- ADD_FLAG("LIBS_MBSTRING", get_define("LIBS_LIBMBFL"));
- ADD_FLAG("LDFLAGS_MBSTRING", get_define("LDFLAGS_LIBMBFL"));
- ADD_FLAG("CFLAGS_MBSTRING", get_define("CFLAGS_LIBMBFL") +
- " /I ext/mbstring/oniguruma /D NOT_RUBY=1 \
- /D HAVE_STDARG_PROTOTYPES=1 /D HAVE_STDLIB_H \
- /D HAVE_STRICMP /D EXPORT /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
-
- PHP_INSTALL_HEADERS("ext/mbstring", "mbstring.h oniguruma/oniguruma.h php_mbregex.h php_onig_compat.h");
- } else {
- STDOUT.WriteLine("Using bundled libmbfl...");
-
- ADD_FLAG("CFLAGS_MBSTRING", "-Iext/mbstring/libmbfl -Iext/mbstring/libmbfl/mbfl \
- -Iext/mbstring/oniguruma /D NOT_RUBY=1 /D LIBMBFL_EXPORTS=1 \
- /D HAVE_STDARG_PROTOTYPES=1 /D HAVE_CONFIG_H /D HAVE_STDLIB_H \
- /D HAVE_STRICMP /D MBFL_DLL_EXPORT=1 /D EXPORT /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1")
-
- FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.w32",
- "ext\\mbstring\\libmbfl\\config.h", true);
-
- ADD_SOURCES("ext/mbstring/libmbfl/filters", "html_entities.c \
- mbfilter_7bit.c mbfilter_ascii.c mbfilter_base64.c mbfilter_big5.c \
- mbfilter_byte2.c mbfilter_byte4.c mbfilter_cp1251.c mbfilter_cp1252.c \
- mbfilter_cp866.c mbfilter_cp932.c mbfilter_cp936.c mbfilter_cp51932.c \
- mbfilter_euc_cn.c mbfilter_euc_jp.c mbfilter_euc_jp_win.c mbfilter_euc_kr.c \
- mbfilter_euc_tw.c mbfilter_htmlent.c mbfilter_hz.c mbfilter_iso2022_kr.c \
- mbfilter_iso8859_1.c mbfilter_iso8859_10.c mbfilter_iso8859_13.c \
- mbfilter_iso8859_14.c mbfilter_iso8859_15.c mbfilter_iso8859_16.c \
- mbfilter_iso8859_2.c mbfilter_iso8859_3.c mbfilter_iso8859_4.c \
- mbfilter_iso8859_5.c mbfilter_iso8859_6.c mbfilter_iso8859_7.c \
- mbfilter_iso8859_8.c mbfilter_iso8859_9.c mbfilter_jis.c \
- mbfilter_iso2022_jp_ms.c mbfilter_gb18030.c mbfilter_sjis_2004.c \
- mbfilter_koi8r.c mbfilter_qprint.c mbfilter_sjis.c mbfilter_ucs2.c \
- mbfilter_ucs4.c mbfilter_uhc.c mbfilter_utf16.c mbfilter_utf32.c \
- mbfilter_utf7.c mbfilter_utf7imap.c mbfilter_utf8.c mbfilter_utf8_mobile.c \
- mbfilter_koi8u.c mbfilter_cp1254.c mbfilter_euc_jp_2004.c \
- mbfilter_uuencode.c mbfilter_armscii8.c mbfilter_cp850.c \
- mbfilter_cp5022x.c mbfilter_sjis_open.c mbfilter_sjis_mobile.c \
- mbfilter_sjis_mac.c \
- mbfilter_iso2022jp_2004.c mbfilter_iso2022jp_mobile.c \
- mbfilter_tl_jisx0201_jisx0208.c", "mbstring");
-
- ADD_SOURCES("ext/mbstring/libmbfl/mbfl", "mbfilter.c mbfilter_8bit.c \
- mbfilter_pass.c mbfilter_wchar.c mbfl_convert.c mbfl_encoding.c \
- mbfl_filter_output.c mbfl_ident.c mbfl_language.c mbfl_memory_device.c \
- mbfl_string.c mbfl_allocators.c", "mbstring");
-
- ADD_SOURCES("ext/mbstring/libmbfl/nls", "nls_de.c nls_en.c nls_ja.c \
- nls_kr.c nls_neutral.c nls_ru.c nls_uni.c nls_zh.c nls_hy.c \
- nls_ua.c nls_tr.c", "mbstring");
-
- PHP_INSTALL_HEADERS("ext/mbstring", "mbstring.h oniguruma/oniguruma.h php_mbregex.h php_onig_compat.h libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_allocators.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_ident.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h");
- }
+ STDOUT.WriteLine("Using bundled libmbfl...");
+
+ ADD_FLAG("CFLAGS_MBSTRING", "-Iext/mbstring/libmbfl -Iext/mbstring/libmbfl/mbfl \
+ -Iext/mbstring/oniguruma /D NOT_RUBY=1 /D LIBMBFL_EXPORTS=1 \
+ /D HAVE_STDARG_PROTOTYPES=1 /D HAVE_CONFIG_H /D HAVE_STDLIB_H \
+ /D HAVE_STRICMP /D MBFL_DLL_EXPORT=1 /D ONIGURUMA_EXPORT /DZEND_ENABLE_STATIC_TSRMLS_CACHE=1")
+
+ FSO.CopyFile("ext\\mbstring\\libmbfl\\config.h.w32",
+ "ext\\mbstring\\libmbfl\\config.h", true);
+
+ ADD_SOURCES("ext/mbstring/libmbfl/filters", "html_entities.c \
+ mbfilter_7bit.c mbfilter_ascii.c mbfilter_base64.c mbfilter_big5.c \
+ mbfilter_byte2.c mbfilter_byte4.c mbfilter_cp1251.c mbfilter_cp1252.c \
+ mbfilter_cp866.c mbfilter_cp932.c mbfilter_cp936.c mbfilter_cp51932.c \
+ mbfilter_euc_cn.c mbfilter_euc_jp.c mbfilter_euc_jp_win.c mbfilter_euc_kr.c \
+ mbfilter_euc_tw.c mbfilter_htmlent.c mbfilter_hz.c mbfilter_iso2022_kr.c \
+ mbfilter_iso8859_1.c mbfilter_iso8859_10.c mbfilter_iso8859_13.c \
+ mbfilter_iso8859_14.c mbfilter_iso8859_15.c mbfilter_iso8859_16.c \
+ mbfilter_iso8859_2.c mbfilter_iso8859_3.c mbfilter_iso8859_4.c \
+ mbfilter_iso8859_5.c mbfilter_iso8859_6.c mbfilter_iso8859_7.c \
+ mbfilter_iso8859_8.c mbfilter_iso8859_9.c mbfilter_jis.c \
+ mbfilter_iso2022_jp_ms.c mbfilter_gb18030.c mbfilter_sjis_2004.c \
+ mbfilter_koi8r.c mbfilter_qprint.c mbfilter_sjis.c mbfilter_ucs2.c \
+ mbfilter_ucs4.c mbfilter_uhc.c mbfilter_utf16.c mbfilter_utf32.c \
+ mbfilter_utf7.c mbfilter_utf7imap.c mbfilter_utf8.c mbfilter_utf8_mobile.c \
+ mbfilter_koi8u.c mbfilter_cp1254.c mbfilter_euc_jp_2004.c \
+ mbfilter_uuencode.c mbfilter_armscii8.c mbfilter_cp850.c \
+ mbfilter_cp5022x.c mbfilter_sjis_open.c mbfilter_sjis_mobile.c \
+ mbfilter_sjis_mac.c \
+ mbfilter_iso2022jp_2004.c mbfilter_iso2022jp_mobile.c \
+ mbfilter_tl_jisx0201_jisx0208.c", "mbstring");
+
+ ADD_SOURCES("ext/mbstring/libmbfl/mbfl", "mbfilter.c mbfilter_8bit.c \
+ mbfilter_pass.c mbfilter_wchar.c mbfl_convert.c mbfl_encoding.c \
+ mbfl_filter_output.c mbfl_ident.c mbfl_language.c mbfl_memory_device.c \
+ mbfl_string.c mbfl_allocators.c", "mbstring");
+
+ ADD_SOURCES("ext/mbstring/libmbfl/nls", "nls_de.c nls_en.c nls_ja.c \
+ nls_kr.c nls_neutral.c nls_ru.c nls_uni.c nls_zh.c nls_hy.c \
+ nls_ua.c nls_tr.c", "mbstring");
+
+ PHP_INSTALL_HEADERS("ext/mbstring", "mbstring.h oniguruma/oniguruma.h php_mbregex.h php_onig_compat.h libmbfl/config.h libmbfl/mbfl/eaw_table.h libmbfl/mbfl/mbfilter.h libmbfl/mbfl/mbfilter_8bit.h libmbfl/mbfl/mbfilter_pass.h libmbfl/mbfl/mbfilter_wchar.h libmbfl/mbfl/mbfl_allocators.h libmbfl/mbfl/mbfl_consts.h libmbfl/mbfl/mbfl_convert.h libmbfl/mbfl/mbfl_defs.h libmbfl/mbfl/mbfl_encoding.h libmbfl/mbfl/mbfl_filter_output.h libmbfl/mbfl/mbfl_ident.h libmbfl/mbfl/mbfl_language.h libmbfl/mbfl/mbfl_memory_device.h libmbfl/mbfl/mbfl_string.h");
AC_DEFINE('HAVE_MBSTRING', 1, 'Have mbstring support');
AC_DEFINE('HAVE_MBSTR_CN', 1, 'CN');
diff --git a/ext/mbstring/libmbfl/INSTALL b/ext/mbstring/libmbfl/INSTALL
deleted file mode 100644
index 3b691b8844..0000000000
--- a/ext/mbstring/libmbfl/INSTALL
+++ /dev/null
@@ -1,10 +0,0 @@
-For UNIX compatible system,
-
-./buildconf
-./configure
-make
-make install
-
-For Windows,
-
-Visual C++ 6.0 and Borland C++ 5.0 is suppoted.
diff --git a/ext/mbstring/libmbfl/Makefile.am b/ext/mbstring/libmbfl/Makefile.am
deleted file mode 100644
index 7886104865..0000000000
--- a/ext/mbstring/libmbfl/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-AUTOMAKE_OPTIONS=dejagnu
-DEJATOOL=conv_encoding conv_kana strwidth strcut
-RUNTESTDEFAULTFLAGS=--tool $$tool --srcdir "$$srcdir"/tests
-LANG=C
-EXTRA_DIST=AUTHORS DISCLAIMER LICENSE buildconf
-SUBDIRS = nls filters mbfl tests
-CLEANFILES=*.log *.sum
diff --git a/ext/mbstring/libmbfl/README b/ext/mbstring/libmbfl/README
index 5a3255560e..5d60d56874 100644
--- a/ext/mbstring/libmbfl/README
+++ b/ext/mbstring/libmbfl/README
@@ -1,8 +1,11 @@
-This is Libmbfl, a streamable multibyte character code filter and
-converter library.
+This is libmbfl, a streamable multibyte character code filter and converter
+library.
-See LICENSE and DISCLAIMER for licensing information.
+The original version of libmbfl is developed and distributed at
+https://github.com/moriyoshi/libmbfl under the LGPL 2.1 license.
-See the file INSTALL for building and installation instructions.
+The libmbfl library is bundled with PHP as a fork of the original repository and
+is not in sync with the upstream at https://github.com/moriyoshi/libmbfl. As such,
+the libmbfl directory is directly modified in the php-src repository.
-# $Id$
+See LICENSE and DISCLAIMER for licensing information.
diff --git a/ext/mbstring/libmbfl/buildconf b/ext/mbstring/libmbfl/buildconf
deleted file mode 100755
index 981812ad64..0000000000
--- a/ext/mbstring/libmbfl/buildconf
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-libtoolize -c -f --automake
-aclocal
-autoheader
-automake -a -c --foreign
-autoconf
diff --git a/ext/mbstring/libmbfl/configure.ac b/ext/mbstring/libmbfl/configure.ac
deleted file mode 100644
index f7fd58f857..0000000000
--- a/ext/mbstring/libmbfl/configure.ac
+++ /dev/null
@@ -1,49 +0,0 @@
-# Process this file with autoconf to produce a configure script.
-AC_INIT(mbfl/mbfilter.c)
-AM_INIT_AUTOMAKE(libmbfl, 1.1.0)
-AC_CONFIG_SRCDIR(mbfl/mbfilter.c)
-AM_CONFIG_HEADER(config.h)
-
-# SHLIB isn't a version number but the API reference
-# Read http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
-SHLIB_VERSION="1:1:0"
-AC_SUBST(SHLIB_VERSION)
-
-# Checks for programs.
-AC_PROG_CC
-AC_PROG_CXX
-AC_PROG_LIBTOOL
-AC_PROG_RANLIB
-
-# Checks for libraries.
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS([stdlib.h stddef.h assert.h])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-
-# Checks for library functions.
-AC_FUNC_MALLOC
-AC_FUNC_REALLOC
-AC_CHECK_FUNCS([strcasecmp strchr])
-
-AC_CHECK_PROGS([FETCH_VIA_FTP], [wget curl ncftpget])
-
-if test "$FETCH_VIA_FTP" = "curl"; then
- FETCH_VIA_FTP="curl -O"
-fi
-
-AC_CONFIG_FILES([
- Makefile
- mbfl/Makefile
- filters/Makefile
- nls/Makefile
- tests/Makefile
- tests/conv_encoding.tests/Makefile
- tests/conv_kana.tests/Makefile
- tests/strwidth.tests/Makefile
- tests/strcut.tests/Makefile])
-AC_OUTPUT
diff --git a/ext/mbstring/libmbfl/filters/Makefile.am b/ext/mbstring/libmbfl/filters/Makefile.am
deleted file mode 100644
index e6327865d1..0000000000
--- a/ext/mbstring/libmbfl/filters/Makefile.am
+++ /dev/null
@@ -1,269 +0,0 @@
-EXTRA_DIST=Makefile.bcc32 mk_sb_tbl.awk
-noinst_LTLIBRARIES=libmbfl_filters.la
-INCLUDES=-I../mbfl
-PERL=perl
-libmbfl_filters_la_LDFLAGS=-version-info $(SHLIB_VERSION)
-libmbfl_filters_la_SOURCES=mbfilter_cp936.c \
- mbfilter_hz.c \
- mbfilter_euc_tw.c \
- mbfilter_big5.c \
- mbfilter_euc_jp.c \
- mbfilter_jis.c \
- mbfilter_iso8859_1.c \
- mbfilter_iso8859_2.c \
- mbfilter_cp1254.c \
- mbfilter_cp1252.c \
- mbfilter_cp1251.c \
- mbfilter_ascii.c \
- mbfilter_iso8859_3.c \
- mbfilter_iso8859_4.c \
- mbfilter_iso8859_5.c \
- mbfilter_iso8859_6.c \
- mbfilter_iso8859_7.c \
- mbfilter_iso8859_8.c \
- mbfilter_iso8859_9.c \
- mbfilter_iso8859_10.c \
- mbfilter_iso8859_13.c \
- mbfilter_iso8859_14.c \
- mbfilter_iso8859_15.c \
- mbfilter_iso8859_16.c \
- mbfilter_htmlent.c \
- mbfilter_byte2.c \
- mbfilter_byte4.c \
- mbfilter_uuencode.c \
- mbfilter_base64.c \
- mbfilter_sjis.c \
- mbfilter_sjis_2004.c \
- mbfilter_sjis_open.c \
- mbfilter_sjis_mobile.c \
- mbfilter_sjis_mac.c \
- mbfilter_7bit.c \
- mbfilter_qprint.c \
- mbfilter_ucs4.c \
- mbfilter_ucs2.c \
- mbfilter_utf32.c \
- mbfilter_utf16.c \
- mbfilter_utf8.c \
- mbfilter_utf8_mobile.c \
- mbfilter_utf7.c \
- mbfilter_utf7imap.c \
- mbfilter_euc_jp_win.c \
- mbfilter_euc_jp_2004.c \
- mbfilter_cp932.c \
- mbfilter_cp51932.c \
- mbfilter_euc_cn.c \
- mbfilter_euc_kr.c \
- mbfilter_uhc.c \
- mbfilter_iso2022_jp_ms.c \
- mbfilter_iso2022jp_2004.c \
- mbfilter_iso2022jp_mobile.c \
- mbfilter_gb18030.c \
- mbfilter_iso2022_kr.c \
- mbfilter_cp866.c \
- mbfilter_koi8r.c \
- mbfilter_koi8u.c \
- mbfilter_armscii8.c \
- mbfilter_cp850.c \
- mbfilter_cp5022x.c \
- mbfilter_tl_jisx0201_jisx0208.c \
- html_entities.c \
- cp932_table.h \
- html_entities.h \
- mbfilter_7bit.h \
- mbfilter_ascii.h \
- mbfilter_base64.h \
- mbfilter_big5.h \
- mbfilter_byte2.h \
- mbfilter_byte4.h \
- mbfilter_cp1251.h \
- mbfilter_cp1252.h \
- mbfilter_cp1254.h \
- mbfilter_cp866.h \
- mbfilter_cp932.h \
- mbfilter_cp936.h \
- mbfilter_gb18030.h \
- mbfilter_euc_cn.h \
- mbfilter_euc_jp.h \
- mbfilter_euc_jp_2004.h \
- mbfilter_euc_jp_win.h \
- mbfilter_euc_kr.h \
- mbfilter_euc_tw.h \
- mbfilter_htmlent.h \
- mbfilter_hz.h \
- mbfilter_iso2022_jp_ms.h \
- mbfilter_iso2022jp_2004.h \
- mbfilter_iso2022jp_mobile.h \
- mbfilter_iso2022_kr.h \
- mbfilter_iso8859_1.h \
- mbfilter_iso8859_10.h \
- mbfilter_iso8859_13.h \
- mbfilter_iso8859_14.h \
- mbfilter_iso8859_15.h \
- mbfilter_iso8859_16.h \
- mbfilter_iso8859_2.h \
- mbfilter_iso8859_3.h \
- mbfilter_iso8859_4.h \
- mbfilter_iso8859_5.h \
- mbfilter_iso8859_6.h \
- mbfilter_iso8859_7.h \
- mbfilter_iso8859_8.h \
- mbfilter_iso8859_9.h \
- mbfilter_jis.h \
- mbfilter_koi8r.h \
- mbfilter_koi8u.h \
- mbfilter_armscii8.h \
- mbfilter_qprint.h \
- mbfilter_sjis.h \
- mbfilter_sjis_open.h \
- mbfilter_sjis_mobile.h \
- mbfilter_sjis_mac.h \
- mbfilter_ucs2.h \
- mbfilter_ucs4.h \
- mbfilter_uhc.h \
- mbfilter_utf16.h \
- mbfilter_utf32.h \
- mbfilter_utf7.h \
- mbfilter_utf7imap.h \
- mbfilter_utf8.h \
- mbfilter_utf8_mobile.h \
- mbfilter_uuencode.h \
- mbfilter_cp5022x.h \
- mbfilter_cp51932.h \
- mbfilter_cp850.h \
- mbfilter_tl_jisx0201_jisx0208.h \
- unicode_prop.h \
- unicode_table_big5.h \
- unicode_table_cns11643.h \
- unicode_table_cp1251.h \
- unicode_table_cp1252.h \
- unicode_table_cp1254.h \
- unicode_table_cp866.h \
- unicode_table_cp932_ext.h \
- unicode_table_cp936.h \
- unicode_table_iso8859_10.h \
- unicode_table_iso8859_13.h \
- unicode_table_iso8859_14.h \
- unicode_table_iso8859_15.h \
- unicode_table_iso8859_16.h \
- unicode_table_iso8859_2.h \
- unicode_table_iso8859_3.h \
- unicode_table_iso8859_4.h \
- unicode_table_iso8859_5.h \
- unicode_table_iso8859_6.h \
- unicode_table_iso8859_7.h \
- unicode_table_iso8859_8.h \
- unicode_table_iso8859_9.h \
- unicode_table_jis.h \
- unicode_table_koi8r.h \
- unicode_table_koi8u.h \
- unicode_table_armscii8.h \
- unicode_table_cp850.h \
- unicode_table_uhc.h \
- unicode_table_gb18030.h \
- translit_kana_jisx0201_jisx0208.h \
- emoji2uni.h
-
-mbfilter_iso8859_2.c: unicode_table_iso8859_2.h
-
-mbfilter_iso8859_3.c: unicode_table_iso8859_3.h
-
-mbfilter_iso8859_4.c: unicode_table_iso8859_4.h
-
-mbfilter_iso8859_5.c: unicode_table_iso8859_5.h
-
-mbfilter_iso8859_6.c: unicode_table_iso8859_6.h
-
-mbfilter_iso8859_7.c: unicode_table_iso8859_7.h
-
-mbfilter_iso8859_8.c: unicode_table_iso8859_8.h
-
-mbfilter_iso8859_9.c: unicode_table_iso8859_9.h
-
-mbfilter_iso8859_10.c: unicode_table_iso8859_10.h
-
-mbfilter_iso8859_11.c: unicode_table_iso8859_11.h
-
-mbfilter_iso8859_13.c: unicode_table_iso8859_13.h
-
-mbfilter_iso8859_14.c: unicode_table_iso8859_13.h
-
-mbfilter_iso8859_15.c: unicode_table_iso8859_15.h
-
-mbfilter_iso8859_16.c: unicode_table_iso8859_16.h
-
-8859-1.TXT 8859-2.TXT 8859-3.TXT 8859-4.TXT 8859-5.TXT 8859-6.TXT \
-8859-7.TXT 8859-8.TXT 8859-9.TXT 8859-10.TXT 8859-11.TXT 8859-13.TXT \
-8859-14.TXT 8859-15.TXT 8859-16.TXT:
- $(FETCH_VIA_FTP) ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/$@
-
-unicode_table_iso8859_1.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_1_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_1_H -f mk_sb_tbl.awk 8859-1.TXT > $@
-
-unicode_table_iso8859_2.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_2_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_2_H -f mk_sb_tbl.awk 8859-2.TXT > $@
-
-unicode_table_iso8859_3.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_3_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_3_H -f mk_sb_tbl.awk 8859-3.TXT > $@
-
-unicode_table_iso8859_4.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_4_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_4_H -f mk_sb_tbl.awk 8859-4.TXT > $@
-
-unicode_table_iso8859_5.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_5_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_5_H -f mk_sb_tbl.awk 8859-5.TXT > $@
-
-unicode_table_iso8859_6.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_6_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_6_H -f mk_sb_tbl.awk 8859-6.TXT > $@
-
-unicode_table_iso8859_7.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_7_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_7_H -f mk_sb_tbl.awk 8859-7.TXT > $@
-
-unicode_table_iso8859_8.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_8_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_8_H -f mk_sb_tbl.awk 8859-8.TXT > $@
-
-unicode_table_iso8859_9.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_9_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_9_H -f mk_sb_tbl.awk 8859-9.TXT > $@
-
-unicode_table_iso8859_10.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_10_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_10_H -f mk_sb_tbl.awk 8859-10.TXT > $@
-
-unicode_table_iso8859_11.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_11_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_11_H -f mk_sb_tbl.awk 8859-11.TXT > $@
-
-unicode_table_iso8859_13.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_13_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_13_H -f mk_sb_tbl.awk 8859-13.TXT > $@
-
-unicode_table_iso8859_14.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_14_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_14_H -f mk_sb_tbl.awk 8859-14.TXT > $@
-
-unicode_table_iso8859_15.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_15_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLE_ISO8859_15_H -f mk_sb_tbl.awk 8859-15.TXT > $@
-
-unicode_table_iso8859_16.h: mk_sb_tbl.awk
- $(AWK) -v TABLE_NAME=iso8859_16_ucs_table \
- -v IFNDEF_NAME=UNICODE_TABLEISO8859_16_H -f mk_sb_tbl.awk 8859-16.TXT > $@
-
-EmojiSources.txt :
- $(FETCH_VIA_FTP) ftp://ftp.unicode.org/Public/UNIDATA/$@
-
-emoji2uni.h : mk_emoji_tbl.pl
- $(PERL) mk_emoji_tbl.pl EmojiSources.txt
-
-unidata: 8859-1.TXT 8859-2.TXT 8859-3.TXT 8859-4.TXT 8859-5.TXT 8859-6.TXT \
-8859-7.TXT 8859-8.TXT 8859-9.TXT 8859-10.TXT 8859-11.TXT 8859-13.TXT \
-8859-14.TXT 8859-15.TXT 8859-16.TXT EmojiSources.txt
-
-.PHONY: unidata
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_7bit.c b/ext/mbstring/libmbfl/filters/mbfilter_7bit.c
index 43f82fc41c..0a4169a2d8 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_7bit.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_7bit.c
@@ -41,7 +41,9 @@ const mbfl_encoding mbfl_encoding_7bit = {
"7bit",
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_7bit = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_armscii8.c b/ext/mbstring/libmbfl/filters/mbfilter_armscii8.c
index ad2cf0c7f0..bfe3763f18 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_armscii8.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_armscii8.c
@@ -44,7 +44,9 @@ const mbfl_encoding mbfl_encoding_armscii8 = {
"ArmSCII-8",
(const char *(*)[])&mbfl_encoding_armscii8_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_armscii8_wchar,
+ &vtbl_wchar_armscii8
};
const struct mbfl_identify_vtbl vtbl_identify_armscii8 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ascii.c b/ext/mbstring/libmbfl/filters/mbfilter_ascii.c
index e9eb496771..b3c1161d32 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_ascii.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_ascii.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_ascii = {
"US-ASCII", /* preferred MIME name */
(const char *(*)[])&mbfl_encoding_ascii_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_ascii_wchar,
+ &vtbl_wchar_ascii
};
const struct mbfl_identify_vtbl vtbl_identify_ascii = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_base64.c b/ext/mbstring/libmbfl/filters/mbfilter_base64.c
index 9e0dafd154..f79a3eb8e9 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_base64.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_base64.c
@@ -41,7 +41,9 @@ const mbfl_encoding mbfl_encoding_base64 = {
"BASE64",
NULL,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_b64 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_big5.c b/ext/mbstring/libmbfl/filters/mbfilter_big5.c
index f5ab8809ce..c2cb9a1005 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_big5.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_big5.c
@@ -65,7 +65,9 @@ const mbfl_encoding mbfl_encoding_big5 = {
"BIG5",
(const char *(*)[])&mbfl_encoding_big5_aliases,
mblen_table_big5,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_big5_wchar,
+ &vtbl_wchar_big5
};
const mbfl_encoding mbfl_encoding_cp950 = {
@@ -74,7 +76,9 @@ const mbfl_encoding mbfl_encoding_cp950 = {
"BIG5",
NULL,
mblen_table_big5,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp950_wchar,
+ &vtbl_wchar_cp950
};
const struct mbfl_identify_vtbl vtbl_identify_big5 = {
@@ -138,6 +142,17 @@ static unsigned short cp950_pua_tbl[][4] = {
{0xf70f,0xf848,0xc740,0xc8fe},
};
+static inline int is_in_cp950_pua(int c1, int c) {
+ if ((c1 >= 0xfa && c1 <= 0xfe) || (c1 >= 0x8e && c1 <= 0xa0) ||
+ (c1 >= 0x81 && c1 <= 0x8d) || (c1 >= 0xc7 && c1 <= 0xc8)) {
+ return (c > 0x39 && c < 0x7f) || (c > 0xa0 && c < 0xff);
+ }
+ if (c1 == 0xc6) {
+ return c > 0xa0 && c < 0xff;
+ }
+ return 0;
+}
+
/*
* Big5 => wchar
*/
@@ -186,11 +201,7 @@ mbfl_filt_conv_big5_wchar(int c, mbfl_convert_filter *filter)
if (filter->from->no_encoding == mbfl_no_encoding_cp950) {
/* PUA for CP950 */
- if (w <= 0 &&
- (((c1 >= 0xfa && c1 <= 0xfe) || (c1 >= 0x8e && c1 <= 0xa0) ||
- (c1 >= 0x81 && c1 <= 0x8d) ||(c1 >= 0xc7 && c1 <= 0xc8))
- && ((c > 0x39 && c < 0x7f) || (c > 0xa0 && c < 0xff))) ||
- ((c1 == 0xc6) && (c > 0xa0 && c < 0xff))) {
+ if (w <= 0 && is_in_cp950_pua(c1, c)) {
c2 = c1 << 8 | c;
for (k = 0; k < sizeof(cp950_pua_tbl)/(sizeof(unsigned short)*4); k++) {
if (c2 >= cp950_pua_tbl[k][2] && c2 <= cp950_pua_tbl[k][3]) {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_byte2.c b/ext/mbstring/libmbfl/filters/mbfilter_byte2.c
index 6fdcbda7c8..572b9fab84 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_byte2.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_byte2.c
@@ -41,7 +41,9 @@ const mbfl_encoding mbfl_encoding_byte2be = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte2be_wchar,
+ &vtbl_wchar_byte2be
};
const mbfl_encoding mbfl_encoding_byte2le = {
@@ -50,7 +52,9 @@ const mbfl_encoding mbfl_encoding_byte2le = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte2le_wchar,
+ &vtbl_wchar_byte2le
};
const struct mbfl_convert_vtbl vtbl_byte2be_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_byte4.c b/ext/mbstring/libmbfl/filters/mbfilter_byte4.c
index 239568a128..ed09bb3fde 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_byte4.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_byte4.c
@@ -41,7 +41,9 @@ const mbfl_encoding mbfl_encoding_byte4be = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte4be_wchar,
+ &vtbl_wchar_byte4be
};
const mbfl_encoding mbfl_encoding_byte4le = {
@@ -50,7 +52,9 @@ const mbfl_encoding mbfl_encoding_byte4le = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_byte4le_wchar,
+ &vtbl_wchar_byte4le
};
const struct mbfl_convert_vtbl vtbl_byte4be_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp1251.c b/ext/mbstring/libmbfl/filters/mbfilter_cp1251.c
index bc3befea81..13a2b222ed 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp1251.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp1251.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_cp1251 = {
"Windows-1251",
(const char *(*)[])&mbfl_encoding_cp1251_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1251_wchar,
+ &vtbl_wchar_cp1251
};
const struct mbfl_identify_vtbl vtbl_identify_cp1251 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp1252.c b/ext/mbstring/libmbfl/filters/mbfilter_cp1252.c
index ab2f8f11b1..7c628da2f3 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp1252.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp1252.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_cp1252 = {
"Windows-1252",
(const char *(*)[])&mbfl_encoding_cp1252_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1252_wchar,
+ &vtbl_wchar_cp1252
};
const struct mbfl_identify_vtbl vtbl_identify_cp1252 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp1254.c b/ext/mbstring/libmbfl/filters/mbfilter_cp1254.c
index 6f4711ab79..ae63aed6e1 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp1254.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp1254.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_cp1254 = {
"Windows-1254",
(const char *(*)[])&mbfl_encoding_cp1254_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp1254_wchar,
+ &vtbl_wchar_cp1254
};
const struct mbfl_identify_vtbl vtbl_identify_cp1254 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c b/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
index 655c5583ed..c6012ff682 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
@@ -54,7 +54,9 @@ const mbfl_encoding mbfl_encoding_jis_ms = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_jis_ms_wchar,
+ &vtbl_wchar_jis_ms
};
const mbfl_encoding mbfl_encoding_cp50220 = {
@@ -63,7 +65,9 @@ const mbfl_encoding mbfl_encoding_cp50220 = {
"ISO-2022-JP",
(const char *(*)[])NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50220_wchar,
+ &vtbl_wchar_cp50220
};
const mbfl_encoding mbfl_encoding_cp50220raw = {
@@ -72,7 +76,9 @@ const mbfl_encoding mbfl_encoding_cp50220raw = {
"ISO-2022-JP",
(const char *(*)[])NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50220raw_wchar,
+ &vtbl_wchar_cp50220raw
};
const mbfl_encoding mbfl_encoding_cp50221 = {
@@ -81,7 +87,9 @@ const mbfl_encoding mbfl_encoding_cp50221 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50221_wchar,
+ &vtbl_wchar_cp50221
};
const mbfl_encoding mbfl_encoding_cp50222 = {
@@ -90,7 +98,9 @@ const mbfl_encoding mbfl_encoding_cp50222 = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp50222_wchar,
+ &vtbl_wchar_cp50222
};
const struct mbfl_identify_vtbl vtbl_identify_jis_ms = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c b/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c
index 58fd9f4d1f..8b931ba6d0 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c
@@ -75,7 +75,9 @@ const mbfl_encoding mbfl_encoding_cp51932 = {
"CP51932",
(const char *(*)[])&mbfl_encoding_cp51932_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_cp51932_wchar,
+ &vtbl_wchar_cp51932
};
const struct mbfl_convert_vtbl vtbl_cp51932_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp850.c b/ext/mbstring/libmbfl/filters/mbfilter_cp850.c
index c5767ec8fc..9f47664fbe 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp850.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp850.c
@@ -41,7 +41,9 @@ const mbfl_encoding mbfl_encoding_cp850 = {
"CP850",
(const char *(*)[])&mbfl_encoding_cp850_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp850_wchar,
+ &vtbl_wchar_cp850
};
const struct mbfl_identify_vtbl vtbl_identify_cp850 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp866.c b/ext/mbstring/libmbfl/filters/mbfilter_cp866.c
index f87a603a7d..c4668dcd57 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp866.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp866.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_cp866 = {
"CP866",
(const char *(*)[])&mbfl_encoding_cp866_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_cp866_wchar,
+ &vtbl_wchar_cp866
};
const struct mbfl_identify_vtbl vtbl_identify_cp866 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c
index de7de7213c..d4936d9dcd 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c
@@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_cp932 = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_cp932_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp932_wchar,
+ &vtbl_wchar_cp932
};
const struct mbfl_identify_vtbl vtbl_identify_cp932 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c
index 23e3a1d847..047eb62a14 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c
@@ -65,7 +65,9 @@ const mbfl_encoding mbfl_encoding_cp936 = {
"CP936",
(const char *(*)[])&mbfl_encoding_cp936_aliases,
mblen_table_cp936,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_cp936_wchar,
+ &vtbl_wchar_cp936
};
const struct mbfl_identify_vtbl vtbl_identify_cp936 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c
index 093f026bdf..08be6f3298 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c
@@ -65,7 +65,9 @@ const mbfl_encoding mbfl_encoding_euc_cn = {
"CN-GB",
(const char *(*)[])&mbfl_encoding_euc_cn_aliases,
mblen_table_euccn,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_euccn_wchar,
+ &vtbl_wchar_euccn
};
const struct mbfl_identify_vtbl vtbl_identify_euccn = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c
index b364123902..1d98873976 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c
@@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_euc_jp = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_euc_jp_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjp_wchar,
+ &vtbl_wchar_eucjp
};
const struct mbfl_identify_vtbl vtbl_identify_eucjp = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c
index 1d7ee1ebf9..f8ae8fc6f7 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c
@@ -48,7 +48,9 @@ const mbfl_encoding mbfl_encoding_eucjp2004 = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_eucjp2004_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjp2004_wchar,
+ &vtbl_wchar_eucjp2004
};
const struct mbfl_identify_vtbl vtbl_identify_eucjp2004 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c
index 26be59cab0..20e0651554 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c
@@ -76,7 +76,9 @@ const mbfl_encoding mbfl_encoding_eucjp_win = {
"EUC-JP",
(const char *(*)[])&mbfl_encoding_eucjp_win_aliases,
mblen_table_eucjp,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_eucjpwin_wchar,
+ &vtbl_wchar_eucjpwin
};
const struct mbfl_convert_vtbl vtbl_eucjpwin_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c
index 2a537ade6e..ee8dc926f0 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c
@@ -64,7 +64,9 @@ const mbfl_encoding mbfl_encoding_euc_kr = {
"EUC-KR",
(const char *(*)[])&mbfl_encoding_euc_kr_aliases,
mblen_table_euckr,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_euckr_wchar,
+ &vtbl_wchar_euckr
};
const struct mbfl_identify_vtbl vtbl_identify_euckr = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c
index 9b28556dee..141a2fee7c 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c
@@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
"EUC-TW",
(const char *(*)[])&mbfl_encoding_euc_tw_aliases,
mblen_table_euctw,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_euctw_wchar,
+ &vtbl_wchar_euctw
};
const struct mbfl_identify_vtbl vtbl_identify_euctw = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c
index 8c732d7462..6369542e2e 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c
@@ -47,7 +47,9 @@ const mbfl_encoding mbfl_encoding_gb18030 = {
"GB18030",
(const char *(*)[])&mbfl_encoding_gb18030_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_gb18030_wchar,
+ &vtbl_wchar_gb18030
};
const struct mbfl_identify_vtbl vtbl_identify_gb18030 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
index 03b26cc0b7..12ff178b61 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
@@ -70,7 +70,9 @@ const mbfl_encoding mbfl_encoding_html_ent = {
"HTML-ENTITIES",
(const char *(*)[])&mbfl_encoding_html_ent_aliases,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_html_wchar,
+ &vtbl_wchar_html
};
const struct mbfl_convert_vtbl vtbl_wchar_html = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_hz.c b/ext/mbstring/libmbfl/filters/mbfilter_hz.c
index a3422cd8e5..8a39b75e17 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_hz.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_hz.c
@@ -44,7 +44,9 @@ const mbfl_encoding mbfl_encoding_hz = {
"HZ-GB-2312",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_hz_wchar,
+ &vtbl_wchar_hz
};
const struct mbfl_identify_vtbl vtbl_identify_hz = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
index 1f26d1771b..4e8b974923 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
@@ -48,7 +48,9 @@ const mbfl_encoding mbfl_encoding_2022jpms = {
"ISO-2022-JP",
(const char *(*)[])&mbfl_encoding_2022jpms_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jpms_wchar,
+ &vtbl_wchar_2022jpms
};
const struct mbfl_identify_vtbl vtbl_identify_2022jpms = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c
index 682d8401f3..cc0e3653f2 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_2022kr = {
"ISO-2022-KR",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022kr_wchar,
+ &vtbl_wchar_2022kr
};
const struct mbfl_identify_vtbl vtbl_identify_2022kr = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c
index cf084399f8..9077d5708b 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_2004.c
@@ -47,7 +47,9 @@ const mbfl_encoding mbfl_encoding_2022jp_2004 = {
"ISO-2022-JP-2004",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_2004_wchar,
+ &vtbl_wchar_2022jp_2004
};
const struct mbfl_identify_vtbl vtbl_identify_2022jp_2004 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c
index e0d5543882..3847f78aa1 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c
@@ -50,7 +50,9 @@ const mbfl_encoding mbfl_encoding_2022jp_kddi = {
"ISO-2022-JP",
&mbfl_encoding_2022jp_kddi_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_kddi_wchar,
+ &vtbl_wchar_2022jp_kddi
};
const struct mbfl_identify_vtbl vtbl_identify_2022jp_kddi = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c
index 4688e67905..9279fe8713 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_8859_1 = {
"ISO-8859-1",
(const char *(*)[])&mbfl_encoding_8859_1_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_1_wchar,
+ &vtbl_wchar_8859_1
};
const struct mbfl_identify_vtbl vtbl_identify_8859_1 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c
index dd34b53297..f6c6297151 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_10 = {
"ISO-8859-10",
(const char *(*)[])&mbfl_encoding_8859_10_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_10_wchar,
+ &vtbl_wchar_8859_10
};
const struct mbfl_identify_vtbl vtbl_identify_8859_10 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c
index 480f890b2d..fc039892e0 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_13 = {
"ISO-8859-13",
(const char *(*)[])&mbfl_encoding_8859_13_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_13_wchar,
+ &vtbl_wchar_8859_13
};
const struct mbfl_identify_vtbl vtbl_identify_8859_13 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c
index ef7b7e645d..db16cd6a7b 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_14 = {
"ISO-8859-14",
(const char *(*)[])&mbfl_encoding_8859_14_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_14_wchar,
+ &vtbl_wchar_8859_14
};
const struct mbfl_identify_vtbl vtbl_identify_8859_14 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c
index 25323bd7f0..74e5a2dde7 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_15 = {
"ISO-8859-15",
(const char *(*)[])&mbfl_encoding_8859_15_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_15_wchar,
+ &vtbl_wchar_8859_15
};
const struct mbfl_identify_vtbl vtbl_identify_8859_15 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c
index 1bd5f8a25d..68da24f533 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_16 = {
"ISO-8859-16",
(const char *(*)[])&mbfl_encoding_8859_16_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_16_wchar,
+ &vtbl_wchar_8859_16
};
const struct mbfl_identify_vtbl vtbl_identify_8859_16 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c
index 8e236b667d..dcc05a00d1 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_2 = {
"ISO-8859-2",
(const char *(*)[])&mbfl_encoding_8859_2_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_2_wchar,
+ &vtbl_wchar_8859_2
};
const struct mbfl_identify_vtbl vtbl_identify_8859_2 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c
index c04cfd87b4..61fbde6f4c 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_3 = {
"ISO-8859-3",
(const char *(*)[])&mbfl_encoding_8859_3_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_3_wchar,
+ &vtbl_wchar_8859_3
};
const struct mbfl_identify_vtbl vtbl_identify_8859_3 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c
index 1c4979362c..f5a8aa7307 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_4 = {
"ISO-8859-4",
(const char *(*)[])&mbfl_encoding_8859_4_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_4_wchar,
+ &vtbl_wchar_8859_4
};
const struct mbfl_identify_vtbl vtbl_identify_8859_4 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c
index db10cc693f..629caa1081 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_5 = {
"ISO-8859-5",
(const char *(*)[])&mbfl_encoding_8859_5_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_5_wchar,
+ &vtbl_wchar_8859_5
};
const struct mbfl_identify_vtbl vtbl_identify_8859_5 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c
index 318eaeb3c0..d3f5f559f2 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_6 = {
"ISO-8859-6",
(const char *(*)[])&mbfl_encoding_8859_6_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_6_wchar,
+ &vtbl_wchar_8859_6
};
const struct mbfl_identify_vtbl vtbl_identify_8859_6 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c
index 406370a3d3..a11d1f57ff 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_7 = {
"ISO-8859-7",
(const char *(*)[])&mbfl_encoding_8859_7_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_7_wchar,
+ &vtbl_wchar_8859_7
};
const struct mbfl_identify_vtbl vtbl_identify_8859_7 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c
index 505f7dec8f..fb4020a4ad 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_8 = {
"ISO-8859-8",
(const char *(*)[])&mbfl_encoding_8859_8_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_8_wchar,
+ &vtbl_wchar_8859_8
};
const struct mbfl_identify_vtbl vtbl_identify_8859_8 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c
index 1550937bbe..1e368ba5b6 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_8859_9 = {
"ISO-8859-9",
(const char *(*)[])&mbfl_encoding_8859_9_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8859_9_wchar,
+ &vtbl_wchar_8859_9
};
const struct mbfl_identify_vtbl vtbl_identify_8859_9 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_jis.c b/ext/mbstring/libmbfl/filters/mbfilter_jis.c
index 892e4bda3d..8985456d72 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_jis.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_jis.c
@@ -46,7 +46,9 @@ const mbfl_encoding mbfl_encoding_jis = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_jis_wchar,
+ &vtbl_wchar_jis
};
const mbfl_encoding mbfl_encoding_2022jp = {
@@ -55,7 +57,9 @@ const mbfl_encoding mbfl_encoding_2022jp = {
"ISO-2022-JP",
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_2022jp_wchar,
+ &vtbl_wchar_2022jp
};
const struct mbfl_identify_vtbl vtbl_identify_jis = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_koi8r.c b/ext/mbstring/libmbfl/filters/mbfilter_koi8r.c
index e35a0258ac..101b3f1c85 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_koi8r.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_koi8r.c
@@ -45,7 +45,9 @@ const mbfl_encoding mbfl_encoding_koi8r = {
"KOI8-R",
(const char *(*)[])&mbfl_encoding_koi8r_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_koi8r_wchar,
+ &vtbl_wchar_koi8r
};
const struct mbfl_identify_vtbl vtbl_identify_koi8r = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_koi8u.c b/ext/mbstring/libmbfl/filters/mbfilter_koi8u.c
index 4dfc68654a..25174326f7 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_koi8u.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_koi8u.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_koi8u = {
"KOI8-U",
(const char *(*)[])&mbfl_encoding_koi8u_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_koi8u_wchar,
+ &vtbl_wchar_koi8u
};
const struct mbfl_identify_vtbl vtbl_identify_koi8u = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_qprint.c b/ext/mbstring/libmbfl/filters/mbfilter_qprint.c
index 1878f4d08f..0d10ea49f8 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_qprint.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_qprint.c
@@ -43,7 +43,9 @@ const mbfl_encoding mbfl_encoding_qprint = {
"Quoted-Printable",
(const char *(*)[])&mbfl_encoding_qprint_aliases,
NULL,
- MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_ENC_STRM | MBFL_ENCTYPE_GL_UNSAFE,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_8bit_qprint = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c
index ab4b3db983..5dab2bcbb6 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c
@@ -69,7 +69,9 @@ const mbfl_encoding mbfl_encoding_sjis = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_wchar,
+ &vtbl_wchar_sjis
};
const struct mbfl_identify_vtbl vtbl_identify_sjis = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c
index 4f146cebea..dd37bbabba 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c
@@ -53,7 +53,9 @@ const mbfl_encoding mbfl_encoding_sjis2004 = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis2004_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis2004_wchar,
+ &vtbl_wchar_sjis2004
};
const struct mbfl_identify_vtbl vtbl_identify_sjis2004 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c
index 383d623d5d..a1cfa72521 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c
@@ -52,7 +52,9 @@ const mbfl_encoding mbfl_encoding_sjis_mac = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_mac_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_mac_wchar,
+ &vtbl_wchar_sjis_mac
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_mac = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c
index e8056ab99a..3dd2e213c6 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c
@@ -53,7 +53,9 @@ const mbfl_encoding mbfl_encoding_sjis_docomo = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_docomo_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_docomo_wchar,
+ &vtbl_wchar_sjis_docomo
};
const mbfl_encoding mbfl_encoding_sjis_kddi = {
@@ -62,7 +64,9 @@ const mbfl_encoding mbfl_encoding_sjis_kddi = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_kddi_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_kddi_wchar,
+ &vtbl_wchar_sjis_kddi
};
const mbfl_encoding mbfl_encoding_sjis_sb = {
@@ -71,7 +75,9 @@ const mbfl_encoding mbfl_encoding_sjis_sb = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_sb_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_sb_wchar,
+ &vtbl_wchar_sjis_sb
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_docomo = {
@@ -290,7 +296,7 @@ mbfilter_sjis_emoji_docomo2unicode(int s, int *snd)
w = mb_tbl_code2uni_docomo1[s - mb_tbl_code2uni_docomo1_min];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
*snd = 0;
@@ -325,7 +331,7 @@ mbfilter_sjis_emoji_kddi2unicode(int s, int *snd)
w = mb_tbl_code2uni_kddi1[si];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
}
@@ -343,7 +349,7 @@ mbfilter_sjis_emoji_kddi2unicode(int s, int *snd)
w = mb_tbl_code2uni_kddi2[si];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
}
@@ -370,7 +376,7 @@ mbfilter_sjis_emoji_sb2unicode(int s, int *snd)
w = mb_tbl_code2uni_sb1[si];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
}
@@ -379,7 +385,7 @@ mbfilter_sjis_emoji_sb2unicode(int s, int *snd)
w = mb_tbl_code2uni_sb2[si];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
} else if (s >= mb_tbl_code2uni_sb3_min && s <= mb_tbl_code2uni_sb3_max) {
@@ -391,7 +397,7 @@ mbfilter_sjis_emoji_sb2unicode(int s, int *snd)
w = mb_tbl_code2uni_sb3[si];
if (w > 0xf000) {
w += 0x10000;
- } else if (w > 0xe000) { /* unsuported by Unicode 6.0 */
+ } else if (w > 0xe000) { /* unsupported by Unicode 6.0 */
w += 0xf0000;
}
}
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c
index c262dde9bf..fcf2953108 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c
@@ -66,7 +66,9 @@ const mbfl_encoding mbfl_encoding_sjis_open = {
"Shift_JIS",
(const char *(*)[])&mbfl_encoding_sjis_open_aliases,
mblen_table_sjis,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_sjis_open_wchar,
+ &vtbl_wchar_sjis_open
};
const struct mbfl_identify_vtbl vtbl_identify_sjis_open = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c b/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c
index d11cf5a8ae..76886695dd 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_ucs2 = {
"UCS-2",
(const char *(*)[])&mbfl_encoding_ucs2_aliases,
NULL,
- MBFL_ENCTYPE_WCS2BE
+ MBFL_ENCTYPE_WCS2BE,
+ &vtbl_ucs2_wchar,
+ &vtbl_wchar_ucs2
};
const mbfl_encoding mbfl_encoding_ucs2be = {
@@ -51,7 +53,9 @@ const mbfl_encoding mbfl_encoding_ucs2be = {
"UCS-2BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS2BE
+ MBFL_ENCTYPE_WCS2BE,
+ &vtbl_ucs2be_wchar,
+ &vtbl_wchar_ucs2be
};
const mbfl_encoding mbfl_encoding_ucs2le = {
@@ -60,7 +64,9 @@ const mbfl_encoding mbfl_encoding_ucs2le = {
"UCS-2LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS2LE
+ MBFL_ENCTYPE_WCS2LE,
+ &vtbl_ucs2le_wchar,
+ &vtbl_wchar_ucs2le
};
const struct mbfl_convert_vtbl vtbl_ucs2_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c
index c662a0d8aa..0b85a6f339 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_ucs4 = {
"UCS-4",
(const char *(*)[])&mbfl_encoding_ucs4_aliases,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_ucs4_wchar,
+ &vtbl_wchar_ucs4
};
const mbfl_encoding mbfl_encoding_ucs4be = {
@@ -51,7 +53,9 @@ const mbfl_encoding mbfl_encoding_ucs4be = {
"UCS-4BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_ucs4be_wchar,
+ &vtbl_wchar_ucs4be
};
const mbfl_encoding mbfl_encoding_ucs4le = {
@@ -60,7 +64,9 @@ const mbfl_encoding mbfl_encoding_ucs4le = {
"UCS-4LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4LE
+ MBFL_ENCTYPE_WCS4LE,
+ &vtbl_ucs4le_wchar,
+ &vtbl_wchar_ucs4le
};
const struct mbfl_convert_vtbl vtbl_ucs4_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_uhc.c b/ext/mbstring/libmbfl/filters/mbfilter_uhc.c
index b8a0e22778..1c1db5f42a 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_uhc.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_uhc.c
@@ -65,7 +65,9 @@ const mbfl_encoding mbfl_encoding_uhc = {
"UHC",
(const char *(*)[])&mbfl_encoding_uhc_aliases,
mblen_table_uhc,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_uhc_wchar,
+ &vtbl_wchar_uhc
};
const struct mbfl_identify_vtbl vtbl_identify_uhc = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf16.c b/ext/mbstring/libmbfl/filters/mbfilter_utf16.c
index cb46fa51ef..8772d8d5be 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf16.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf16.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_utf16 = {
"UTF-16",
(const char *(*)[])&mbfl_encoding_utf16_aliases,
NULL,
- MBFL_ENCTYPE_MWC2BE
+ MBFL_ENCTYPE_MWC2BE,
+ &vtbl_utf16_wchar,
+ &vtbl_wchar_utf16
};
const mbfl_encoding mbfl_encoding_utf16be = {
@@ -51,7 +53,9 @@ const mbfl_encoding mbfl_encoding_utf16be = {
"UTF-16BE",
NULL,
NULL,
- MBFL_ENCTYPE_MWC2BE
+ MBFL_ENCTYPE_MWC2BE,
+ &vtbl_utf16be_wchar,
+ &vtbl_wchar_utf16be
};
const mbfl_encoding mbfl_encoding_utf16le = {
@@ -60,7 +64,9 @@ const mbfl_encoding mbfl_encoding_utf16le = {
"UTF-16LE",
NULL,
NULL,
- MBFL_ENCTYPE_MWC2LE
+ MBFL_ENCTYPE_MWC2LE,
+ &vtbl_utf16le_wchar,
+ &vtbl_wchar_utf16le
};
const struct mbfl_convert_vtbl vtbl_utf16_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c
index 852bca2002..5b02362b5d 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c
@@ -42,7 +42,9 @@ const mbfl_encoding mbfl_encoding_utf32 = {
"UTF-32",
(const char *(*)[])&mbfl_encoding_utf32_aliases,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_utf32_wchar,
+ &vtbl_wchar_utf32
};
const mbfl_encoding mbfl_encoding_utf32be = {
@@ -51,7 +53,9 @@ const mbfl_encoding mbfl_encoding_utf32be = {
"UTF-32BE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ &vtbl_utf32be_wchar,
+ &vtbl_wchar_utf32be
};
const mbfl_encoding mbfl_encoding_utf32le = {
@@ -60,7 +64,9 @@ const mbfl_encoding mbfl_encoding_utf32le = {
"UTF-32LE",
NULL,
NULL,
- MBFL_ENCTYPE_WCS4LE
+ MBFL_ENCTYPE_WCS4LE,
+ &vtbl_utf32le_wchar,
+ &vtbl_wchar_utf32le
};
const struct mbfl_convert_vtbl vtbl_utf32_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c
index 7606642007..5c13e45b8e 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c
@@ -57,7 +57,9 @@ const mbfl_encoding mbfl_encoding_utf7 = {
"UTF-7",
(const char *(*)[])&mbfl_encoding_utf7_aliases,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE | MBFL_ENCTYPE_GL_UNSAFE,
+ &vtbl_utf7_wchar,
+ &vtbl_wchar_utf7
};
const struct mbfl_identify_vtbl vtbl_identify_utf7 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c
index ce56433316..c4d2b5c42d 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c
@@ -40,7 +40,9 @@ const mbfl_encoding mbfl_encoding_utf7imap = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE
+ MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_SHFTCODE,
+ &vtbl_utf7imap_wchar,
+ &vtbl_wchar_utf7imap
};
const struct mbfl_convert_vtbl vtbl_utf7imap_wchar = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c
index e81e0860d2..1e2ad5b959 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c
@@ -63,7 +63,9 @@ const mbfl_encoding mbfl_encoding_utf8 = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_wchar,
+ &vtbl_wchar_utf8
};
const struct mbfl_identify_vtbl vtbl_identify_utf8 = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c
index 410ba64b6f..060cd90860 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c
@@ -52,7 +52,9 @@ const mbfl_encoding mbfl_encoding_utf8_docomo = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_docomo_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_docomo_wchar,
+ &vtbl_wchar_utf8_docomo
};
const mbfl_encoding mbfl_encoding_utf8_kddi_a = {
@@ -61,7 +63,9 @@ const mbfl_encoding mbfl_encoding_utf8_kddi_a = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_kddi_a_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_kddi_a_wchar,
+ &vtbl_wchar_utf8_kddi_a
};
const mbfl_encoding mbfl_encoding_utf8_kddi_b = {
@@ -70,7 +74,9 @@ const mbfl_encoding mbfl_encoding_utf8_kddi_b = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_kddi_b_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_kddi_b_wchar,
+ &vtbl_wchar_utf8_kddi_b
};
const mbfl_encoding mbfl_encoding_utf8_sb = {
@@ -79,7 +85,9 @@ const mbfl_encoding mbfl_encoding_utf8_sb = {
"UTF-8",
(const char *(*)[])&mbfl_encoding_utf8_sb_aliases,
mblen_table_utf8,
- MBFL_ENCTYPE_MBCS
+ MBFL_ENCTYPE_MBCS,
+ &vtbl_utf8_sb_wchar,
+ &vtbl_wchar_utf8_sb
};
const struct mbfl_identify_vtbl vtbl_identify_utf8_docomo = {
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_uuencode.c b/ext/mbstring/libmbfl/filters/mbfilter_uuencode.c
index 15831011a3..590ecda997 100644
--- a/ext/mbstring/libmbfl/filters/mbfilter_uuencode.c
+++ b/ext/mbstring/libmbfl/filters/mbfilter_uuencode.c
@@ -40,7 +40,9 @@ const mbfl_encoding mbfl_encoding_uuencode = {
"x-uuencode",
NULL,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_uuencode_8bit = {
diff --git a/ext/mbstring/libmbfl/filters/mk_sb_tbl.awk b/ext/mbstring/libmbfl/filters/mk_sb_tbl.awk
index 8703cd199a..31c5449d96 100755
--- a/ext/mbstring/libmbfl/filters/mk_sb_tbl.awk
+++ b/ext/mbstring/libmbfl/filters/mk_sb_tbl.awk
@@ -1,7 +1,5 @@
#!/usr/bin/awk -f
#
-# $Id$
-#
# Description: a script that generates a single byte code set to Unicode
# mapping table.
#
diff --git a/ext/mbstring/libmbfl/mbfl/Makefile.am b/ext/mbstring/libmbfl/mbfl/Makefile.am
deleted file mode 100644
index 6774d88792..0000000000
--- a/ext/mbstring/libmbfl/mbfl/Makefile.am
+++ /dev/null
@@ -1,48 +0,0 @@
-EXTRA_DIST=mk_eaw_tbl.awk
-lib_LTLIBRARIES=libmbfl.la
-libmbfl_la_SOURCES=mbfilter.c \
- mbfl_string.c \
- mbfl_language.c \
- mbfl_encoding.c \
- mbfl_convert.c \
- mbfl_ident.c \
- mbfl_memory_device.c \
- mbfl_allocators.c \
- mbfl_filter_output.c \
- mbfilter_pass.c \
- mbfilter_wchar.c \
- mbfilter_8bit.c \
- eaw_table.h
-libmbfl_filters_la=../filters/libmbfl_filters.la
-libmbfl_nls_la=../nls/libmbfl_nls.la
-libmbfl_la_LIBADD=$(libmbfl_filters_la) $(libmbfl_nls_la)
-libmbfl_la_LDFLAGS=-version-info $(SHLIB_VERSION)
-libmbfl_includedir=$(includedir)/mbfl
-libmbfl_include_HEADERS=mbfilter.h \
- mbfl_consts.h \
- mbfl_encoding.h \
- mbfl_language.h \
- mbfl_string.h \
- mbfl_convert.h \
- mbfl_ident.h \
- mbfl_memory_device.h \
- mbfl_allocators.h \
- mbfl_defs.h \
- mbfl_filter_output.h \
- mbfilter_pass.h \
- mbfilter_wchar.h \
- mbfilter_8bit.h
-
-mbfilter.c: eaw_table.h
-
-eaw_table.h: mk_eaw_tbl.awk
- $(AWK) -v TABLE_NAME=mbfl_eaw_table -f mk_eaw_tbl.awk EastAsianWidth.txt > $@
-
-EastAsianWidth.txt:
- $(FETCH_VIA_FTP) ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
-
-$(libmbfl_filters_la):
- $(MAKE) -C `dirname $(libmbfl_filters_la)`
-
-$(libmbfl_nls_la):
- $(MAKE) -C `dirname $(libmbfl_nls_la)`
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.c b/ext/mbstring/libmbfl/mbfl/mbfilter.c
index 35ca9d3b9c..313ea598fc 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.c
@@ -1,6 +1,5 @@
/*
* charset=UTF-8
- * vim600: encoding=utf-8
*/
/*
@@ -101,8 +100,14 @@
#include "mbfilter.h"
#include "mbfl_filter_output.h"
+#include "mbfilter_8bit.h"
#include "mbfilter_pass.h"
+#include "mbfilter_wchar.h"
+#include "filters/mbfilter_ascii.h"
+#include "filters/mbfilter_base64.h"
+#include "filters/mbfilter_qprint.h"
#include "filters/mbfilter_tl_jisx0201_jisx0208.h"
+#include "filters/mbfilter_utf8.h"
#include "eaw_table.h"
@@ -124,26 +129,14 @@ static char mbfl_hexchar_table[] = {
*/
mbfl_buffer_converter *
mbfl_buffer_converter_new(
- enum mbfl_no_encoding from,
- enum mbfl_no_encoding to,
- int buf_initsz)
-{
- const mbfl_encoding *_from = mbfl_no2encoding(from);
- const mbfl_encoding *_to = mbfl_no2encoding(to);
-
- return mbfl_buffer_converter_new2(_from ? _from: &mbfl_encoding_pass, _to ? _to: &mbfl_encoding_pass, buf_initsz);
-}
-
-mbfl_buffer_converter *
-mbfl_buffer_converter_new2(
const mbfl_encoding *from,
const mbfl_encoding *to,
- int buf_initsz)
+ size_t buf_initsz)
{
mbfl_buffer_converter *convd;
/* allocate */
- convd = (mbfl_buffer_converter*)mbfl_malloc(sizeof (mbfl_buffer_converter));
+ convd = (mbfl_buffer_converter*)mbfl_malloc(sizeof(mbfl_buffer_converter));
if (convd == NULL) {
return NULL;
}
@@ -155,13 +148,13 @@ mbfl_buffer_converter_new2(
/* create convert filter */
convd->filter1 = NULL;
convd->filter2 = NULL;
- if (mbfl_convert_filter_get_vtbl(convd->from->no_encoding, convd->to->no_encoding) != NULL) {
- convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, convd->to->no_encoding, mbfl_memory_device_output, NULL, &convd->device);
+ if (mbfl_convert_filter_get_vtbl(convd->from, convd->to) != NULL) {
+ convd->filter1 = mbfl_convert_filter_new(convd->from, convd->to, mbfl_memory_device_output, NULL, &convd->device);
} else {
- convd->filter2 = mbfl_convert_filter_new(mbfl_no_encoding_wchar, convd->to->no_encoding, mbfl_memory_device_output, NULL, &convd->device);
+ convd->filter2 = mbfl_convert_filter_new(&mbfl_encoding_wchar, convd->to, mbfl_memory_device_output, NULL, &convd->device);
if (convd->filter2 != NULL) {
- convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding,
- mbfl_no_encoding_wchar,
+ convd->filter1 = mbfl_convert_filter_new(convd->from,
+ &mbfl_encoding_wchar,
(int (*)(int, void*))convd->filter2->filter_function,
(int (*)(void*))convd->filter2->filter_flush,
convd->filter2);
@@ -171,6 +164,7 @@ mbfl_buffer_converter_new2(
}
}
if (convd->filter1 == NULL) {
+ mbfl_free(convd);
return NULL;
}
@@ -234,7 +228,7 @@ mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substc
}
int
-mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n)
+mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, size_t n)
{
mbfl_convert_filter *filter;
int (*filter_function)(int c, mbfl_convert_filter *filter);
@@ -262,9 +256,9 @@ mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string)
}
int
-mbfl_buffer_converter_feed2(mbfl_buffer_converter *convd, mbfl_string *string, int *loc)
+mbfl_buffer_converter_feed2(mbfl_buffer_converter *convd, mbfl_string *string, size_t *loc)
{
- int n;
+ size_t n;
unsigned char *p;
mbfl_convert_filter *filter;
int (*filter_function)(int c, mbfl_convert_filter *filter);
@@ -318,7 +312,7 @@ mbfl_string *
mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result)
{
if (convd != NULL && result != NULL && convd->device.buffer != NULL) {
- result->no_encoding = convd->to->no_encoding;
+ result->encoding = convd->to;
result->val = convd->device.buffer;
result->len = convd->device.pos;
} else {
@@ -334,7 +328,7 @@ mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
if (convd == NULL || result == NULL) {
return NULL;
}
- result->no_encoding = convd->to->no_encoding;
+ result->encoding = convd->to;
return mbfl_memory_device_result(&convd->device, result);
}
@@ -352,13 +346,13 @@ mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *str
if (convd->filter2 != NULL) {
mbfl_convert_filter_flush(convd->filter2);
}
- result->no_encoding = convd->to->no_encoding;
+ result->encoding = convd->to;
return mbfl_memory_device_result(&convd->device, result);
}
-int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd)
+size_t mbfl_buffer_illegalchars(mbfl_buffer_converter *convd)
{
- int num_illegalchars = 0;
+ size_t num_illegalchars = 0;
if (convd == NULL) {
return 0;
@@ -372,56 +366,14 @@ int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd)
num_illegalchars += convd->filter2->num_illegalchar;
}
- return (num_illegalchars);
+ return num_illegalchars;
}
/*
* encoding detector
*/
mbfl_encoding_detector *
-mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int elistsz, int strict)
-{
- mbfl_encoding_detector *identd;
-
- int i, num;
- mbfl_identify_filter *filter;
-
- if (elist == NULL || elistsz <= 0) {
- return NULL;
- }
-
- /* allocate */
- identd = (mbfl_encoding_detector*)mbfl_malloc(sizeof(mbfl_encoding_detector));
- if (identd == NULL) {
- return NULL;
- }
- identd->filter_list = (mbfl_identify_filter **)mbfl_calloc(elistsz, sizeof(mbfl_identify_filter *));
- if (identd->filter_list == NULL) {
- mbfl_free(identd);
- return NULL;
- }
-
- /* create filters */
- i = 0;
- num = 0;
- while (i < elistsz) {
- filter = mbfl_identify_filter_new(elist[i]);
- if (filter != NULL) {
- identd->filter_list[num] = filter;
- num++;
- }
- i++;
- }
- identd->filter_list_size = num;
-
- /* set strict flag */
- identd->strict = strict;
-
- return identd;
-}
-
-mbfl_encoding_detector *
-mbfl_encoding_detector_new2(const mbfl_encoding **elist, int elistsz, int strict)
+mbfl_encoding_detector_new(const mbfl_encoding **elist, int elistsz, int strict)
{
mbfl_encoding_detector *identd;
@@ -484,20 +436,17 @@ mbfl_encoding_detector_delete(mbfl_encoding_detector *identd)
int
mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string)
{
- int i, n, num, bad, res;
- unsigned char *p;
- mbfl_identify_filter *filter;
-
- res = 0;
+ int res = 0;
/* feed data */
if (identd != NULL && string != NULL && string->val != NULL) {
- num = identd->filter_list_size;
- n = string->len;
- p = string->val;
- bad = 0;
+ int num = identd->filter_list_size;
+ size_t n = string->len;
+ unsigned char *p = string->val;
+ int bad = 0;
while (n > 0) {
+ int i;
for (i = 0; i < num; i++) {
- filter = identd->filter_list[i];
+ mbfl_identify_filter *filter = identd->filter_list[i];
if (!filter->flag) {
(*filter->filter_function)(*p, filter);
if (filter->flag) {
@@ -517,7 +466,7 @@ mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string)
return res;
}
-const mbfl_encoding *mbfl_encoding_detector_judge2(mbfl_encoding_detector *identd)
+const mbfl_encoding *mbfl_encoding_detector_judge(mbfl_encoding_detector *identd)
{
mbfl_identify_filter *filter;
const mbfl_encoding *encoding = NULL;
@@ -552,13 +501,6 @@ const mbfl_encoding *mbfl_encoding_detector_judge2(mbfl_encoding_detector *ident
return encoding;
}
-enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *identd)
-{
- const mbfl_encoding *encoding = mbfl_encoding_detector_judge2(identd);
- return !encoding ? mbfl_no_encoding_invalid: encoding->no_encoding;
-}
-
-
/*
* encoding converter
*/
@@ -566,29 +508,27 @@ mbfl_string *
mbfl_convert_encoding(
mbfl_string *string,
mbfl_string *result,
- enum mbfl_no_encoding toenc)
+ const mbfl_encoding *toenc)
{
- int n;
+ size_t n;
unsigned char *p;
- const mbfl_encoding *encoding;
mbfl_memory_device device;
mbfl_convert_filter *filter1;
mbfl_convert_filter *filter2;
/* initialize */
- encoding = mbfl_no2encoding(toenc);
- if (encoding == NULL || string == NULL || result == NULL) {
+ if (toenc == NULL || string == NULL || result == NULL) {
return NULL;
}
filter1 = NULL;
filter2 = NULL;
- if (mbfl_convert_filter_get_vtbl(string->no_encoding, toenc) != NULL) {
- filter1 = mbfl_convert_filter_new(string->no_encoding, toenc, mbfl_memory_device_output, 0, &device);
+ if (mbfl_convert_filter_get_vtbl(string->encoding, toenc) != NULL) {
+ filter1 = mbfl_convert_filter_new(string->encoding, toenc, mbfl_memory_device_output, 0, &device);
} else {
- filter2 = mbfl_convert_filter_new(mbfl_no_encoding_wchar, toenc, mbfl_memory_device_output, 0, &device);
+ filter2 = mbfl_convert_filter_new(&mbfl_encoding_wchar, toenc, mbfl_memory_device_output, 0, &device);
if (filter2 != NULL) {
- filter1 = mbfl_convert_filter_new(string->no_encoding, mbfl_no_encoding_wchar, (int (*)(int, void*))filter2->filter_function, NULL, filter2);
+ filter1 = mbfl_convert_filter_new(string->encoding, &mbfl_encoding_wchar, (int (*)(int, void*))filter2->filter_function, NULL, filter2);
if (filter1 == NULL) {
mbfl_convert_filter_delete(filter2);
}
@@ -632,92 +572,10 @@ mbfl_convert_encoding(
* identify encoding
*/
const mbfl_encoding *
-mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int elistsz, int strict)
+mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict)
{
- int i, n, num, bad;
- unsigned char *p;
- mbfl_identify_filter *flist, *filter;
- const mbfl_encoding *encoding;
-
- /* flist is an array of mbfl_identify_filter instances */
- flist = (mbfl_identify_filter *)mbfl_calloc(elistsz, sizeof(mbfl_identify_filter));
- if (flist == NULL) {
- return NULL;
- }
-
- num = 0;
- if (elist != NULL) {
- for (i = 0; i < elistsz; i++) {
- if (!mbfl_identify_filter_init(&flist[num], elist[i])) {
- num++;
- }
- }
- }
-
- /* feed data */
- n = string->len;
- p = string->val;
-
- if (p != NULL) {
- bad = 0;
- while (n > 0) {
- for (i = 0; i < num; i++) {
- filter = &flist[i];
- if (!filter->flag) {
- (*filter->filter_function)(*p, filter);
- if (filter->flag) {
- bad++;
- }
- }
- }
- if ((num - 1) <= bad && !strict) {
- break;
- }
- p++;
- n--;
- }
- }
-
- /* judge */
- encoding = NULL;
-
- for (i = 0; i < num; i++) {
- filter = &flist[i];
- if (!filter->flag) {
- if (strict && filter->status) {
- continue;
- }
- encoding = filter->encoding;
- break;
- }
- }
-
- /* fall-back judge */
- if (!encoding) {
- for (i = 0; i < num; i++) {
- filter = &flist[i];
- if (!filter->flag && (!strict || !filter->status)) {
- encoding = filter->encoding;
- break;
- }
- }
- }
-
- /* cleanup */
- /* dtors should be called in reverse order */
- i = num; while (--i >= 0) {
- mbfl_identify_filter_cleanup(&flist[i]);
- }
-
- mbfl_free((void *)flist);
-
- return encoding;
-}
-
-const mbfl_encoding *
-mbfl_identify_encoding2(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict)
-{
- int i, n, num, bad;
+ int i, num, bad;
+ size_t n;
unsigned char *p;
mbfl_identify_filter *flist, *filter;
const mbfl_encoding *encoding;
@@ -788,7 +646,8 @@ mbfl_identify_encoding2(mbfl_string *string, const mbfl_encoding **elist, int el
/* cleanup */
/* dtors should be called in reverse order */
- i = num; while (--i >= 0) {
+ i = num;
+ while (--i >= 0) {
mbfl_identify_filter_cleanup(&flist[i]);
}
@@ -803,22 +662,16 @@ mbfl_identify_encoding2(mbfl_string *string, const mbfl_encoding **elist, int el
static int
filter_count_output(int c, void *data)
{
- (*(int *)data)++;
+ (*(size_t *)data)++;
return c;
}
-int
+size_t
mbfl_strlen(mbfl_string *string)
{
- int len, n, m, k;
+ size_t len, n, k;
unsigned char *p;
- const unsigned char *mbtab;
- const mbfl_encoding *encoding;
-
- encoding = mbfl_no2encoding(string->no_encoding);
- if (encoding == NULL || string == NULL) {
- return -1;
- }
+ const mbfl_encoding *encoding = string->encoding;
len = 0;
if (encoding->flag & MBFL_ENCTYPE_SBCS) {
@@ -828,27 +681,27 @@ mbfl_strlen(mbfl_string *string)
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
len = string->len/4;
} else if (encoding->mblen_table != NULL) {
- mbtab = encoding->mblen_table;
+ const unsigned char *mbtab = encoding->mblen_table;
n = 0;
p = string->val;
k = string->len;
/* count */
if (p != NULL) {
while (n < k) {
- m = mbtab[*p];
+ unsigned m = mbtab[*p];
n += m;
p += m;
len++;
- };
+ }
}
} else {
/* wchar filter */
mbfl_convert_filter *filter = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
filter_count_output, 0, &len);
if (filter == NULL) {
- return -1;
+ return (size_t) -1;
}
/* count */
n = string->len;
@@ -872,18 +725,19 @@ mbfl_strlen(mbfl_string *string)
struct collector_strpos_data {
mbfl_convert_filter *next_filter;
mbfl_wchar_device needle;
- int needle_len;
- int start;
- int output;
- int found_pos;
- int needle_pos;
- int matched_pos;
+ size_t needle_len;
+ size_t start;
+ size_t output;
+ size_t found_pos;
+ size_t needle_pos;
+ size_t matched_pos;
};
static int
collector_strpos(int c, void* data)
{
- int *p, *h, *m, n;
+ int *p, *h, *m;
+ ssize_t n;
struct collector_strpos_data *pc = (struct collector_strpos_data*)data;
if (pc->output >= pc->start) {
@@ -931,22 +785,12 @@ retry:
/*
* oddlen
*/
-int
+size_t
mbfl_oddlen(mbfl_string *string)
{
- int len, n, m, k;
+ size_t len, n, k;
unsigned char *p;
- const unsigned char *mbtab;
- const mbfl_encoding *encoding;
-
-
- if (string == NULL) {
- return -1;
- }
- encoding = mbfl_no2encoding(string->no_encoding);
- if (encoding == NULL) {
- return -1;
- }
+ const mbfl_encoding *encoding = string->encoding;
len = 0;
if (encoding->flag & MBFL_ENCTYPE_SBCS) {
@@ -956,14 +800,14 @@ mbfl_oddlen(mbfl_string *string)
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
return len % 4;
} else if (encoding->mblen_table != NULL) {
- mbtab = encoding->mblen_table;
+ const unsigned char *mbtab = encoding->mblen_table;
n = 0;
p = string->val;
k = string->len;
/* count */
if (p != NULL) {
while (n < k) {
- m = mbtab[*p];
+ unsigned m = mbtab[*p];
n += m;
p += m;
};
@@ -976,47 +820,46 @@ mbfl_oddlen(mbfl_string *string)
/* NOT REACHED */
}
-int
+size_t
mbfl_strpos(
mbfl_string *haystack,
mbfl_string *needle,
- int offset,
+ ssize_t offset,
int reverse)
{
- int result;
+ size_t result;
mbfl_string _haystack_u8, _needle_u8;
const mbfl_string *haystack_u8, *needle_u8 = NULL;
const unsigned char *u8_tbl;
if (haystack == NULL || haystack->val == NULL || needle == NULL || needle->val == NULL) {
- return -8;
+ return (size_t) -8;
}
{
- const mbfl_encoding *u8_enc;
- u8_enc = mbfl_no2encoding(mbfl_no_encoding_utf8);
- if (u8_enc == NULL || u8_enc->mblen_table == NULL) {
- return -8;
+ const mbfl_encoding *u8_enc = &mbfl_encoding_utf8;
+ if (u8_enc->mblen_table == NULL) {
+ return (size_t) -8;
}
u8_tbl = u8_enc->mblen_table;
}
- if (haystack->no_encoding != mbfl_no_encoding_utf8) {
+ if (haystack->encoding->no_encoding != mbfl_no_encoding_utf8) {
mbfl_string_init(&_haystack_u8);
- haystack_u8 = mbfl_convert_encoding(haystack, &_haystack_u8, mbfl_no_encoding_utf8);
+ haystack_u8 = mbfl_convert_encoding(haystack, &_haystack_u8, &mbfl_encoding_utf8);
if (haystack_u8 == NULL) {
- result = -4;
+ result = (size_t) -4;
goto out;
}
} else {
haystack_u8 = haystack;
}
- if (needle->no_encoding != mbfl_no_encoding_utf8) {
+ if (needle->encoding->no_encoding != mbfl_no_encoding_utf8) {
mbfl_string_init(&_needle_u8);
- needle_u8 = mbfl_convert_encoding(needle, &_needle_u8, mbfl_no_encoding_utf8);
+ needle_u8 = mbfl_convert_encoding(needle, &_needle_u8, &mbfl_encoding_utf8);
if (needle_u8 == NULL) {
- result = -4;
+ result = (size_t) -4;
goto out;
}
} else {
@@ -1024,19 +867,19 @@ mbfl_strpos(
}
if (needle_u8->len < 1) {
- result = -8;
+ result = (size_t) -8;
goto out;
}
- result = -1;
+ result = (size_t) -1;
if (haystack_u8->len < needle_u8->len) {
goto out;
}
if (!reverse) {
- unsigned int jtbl[1 << (sizeof(unsigned char) * 8)];
- unsigned int needle_u8_len = needle_u8->len;
- unsigned int i;
+ size_t jtbl[1 << (sizeof(unsigned char) * 8)];
+ size_t needle_u8_len = needle_u8->len;
+ size_t i;
const unsigned char *p, *q, *e;
const unsigned char *haystack_u8_val = haystack_u8->val,
*needle_u8_val = needle_u8->val;
@@ -1048,9 +891,9 @@ mbfl_strpos(
}
e = haystack_u8_val + haystack_u8->len;
p = haystack_u8_val;
- while (--offset >= 0) {
+ while (offset-- > 0) {
if (p >= e) {
- result = -16;
+ result = (size_t) -16;
goto out;
}
p += u8_tbl[*p];
@@ -1085,9 +928,9 @@ mbfl_strpos(
}
}
} else {
- unsigned int jtbl[1 << (sizeof(unsigned char) * 8)];
- unsigned int needle_u8_len = needle_u8->len, needle_len = 0;
- unsigned int i;
+ size_t jtbl[1 << (sizeof(unsigned char) * 8)];
+ size_t needle_u8_len = needle_u8->len, needle_len = 0;
+ size_t i;
const unsigned char *p, *e, *q, *qe;
const unsigned char *haystack_u8_val = haystack_u8->val,
*needle_u8_val = needle_u8->val;
@@ -1120,7 +963,7 @@ mbfl_strpos(
while (offset < 0) {
unsigned char c;
if (p <= e) {
- result = -16;
+ result = (size_t) -16;
goto out;
}
c = *(--p);
@@ -1133,9 +976,9 @@ mbfl_strpos(
}
} else {
const unsigned char *ee = haystack_u8_val + haystack_u8->len;
- while (--offset >= 0) {
+ while (offset-- > 0) {
if (e >= ee) {
- result = -16;
+ result = (size_t) -16;
goto out;
}
e += u8_tbl[*e];
@@ -1187,63 +1030,54 @@ out:
* substr_count
*/
-int
+size_t
mbfl_substr_count(
mbfl_string *haystack,
mbfl_string *needle
)
{
- int n, result = 0;
+ size_t n, result = 0;
unsigned char *p;
mbfl_convert_filter *filter;
struct collector_strpos_data pc;
if (haystack == NULL || needle == NULL) {
- return -8;
+ return (size_t) -8;
}
/* needle is converted into wchar */
mbfl_wchar_device_init(&pc.needle);
filter = mbfl_convert_filter_new(
- needle->no_encoding,
- mbfl_no_encoding_wchar,
+ needle->encoding,
+ &mbfl_encoding_wchar,
mbfl_wchar_device_output, 0, &pc.needle);
if (filter == NULL) {
- return -4;
- }
- p = needle->val;
- n = needle->len;
- if (p != NULL) {
- while (n > 0) {
- if ((*filter->filter_function)(*p++, filter) < 0) {
- break;
- }
- n--;
- }
+ return (size_t) -4;
}
+ mbfl_convert_filter_feed_string(filter, needle->val, needle->len);
mbfl_convert_filter_flush(filter);
mbfl_convert_filter_delete(filter);
pc.needle_len = pc.needle.pos;
if (pc.needle.buffer == NULL) {
- return -4;
+ return (size_t) -4;
}
if (pc.needle_len <= 0) {
mbfl_wchar_device_clear(&pc.needle);
- return -2;
+ return (size_t) -2;
}
/* initialize filter and collector data */
filter = mbfl_convert_filter_new(
- haystack->no_encoding,
- mbfl_no_encoding_wchar,
+ haystack->encoding,
+ &mbfl_encoding_wchar,
collector_strpos, 0, &pc);
if (filter == NULL) {
mbfl_wchar_device_clear(&pc.needle);
- return -4;
+ return (size_t) -4;
}
pc.start = 0;
pc.output = 0;
pc.needle_pos = 0;
pc.found_pos = 0;
- pc.matched_pos = -1;
+ pc.matched_pos = (size_t) -1;
/* feed data */
p = haystack->val;
@@ -1251,12 +1085,12 @@ mbfl_substr_count(
if (p != NULL) {
while (n > 0) {
if ((*filter->filter_function)(*p++, filter) < 0) {
- pc.matched_pos = -4;
+ pc.matched_pos = (size_t) -4;
break;
}
- if (pc.matched_pos >= 0) {
+ if (pc.matched_pos != (size_t) -1) {
++result;
- pc.matched_pos = -1;
+ pc.matched_pos = (size_t) -1;
pc.needle_pos = 0;
}
n--;
@@ -1274,9 +1108,9 @@ mbfl_substr_count(
*/
struct collector_substr_data {
mbfl_convert_filter *next_filter;
- int start;
- int stop;
- int output;
+ size_t start;
+ size_t stop;
+ size_t output;
};
static int
@@ -1301,80 +1135,79 @@ mbfl_string *
mbfl_substr(
mbfl_string *string,
mbfl_string *result,
- int from,
- int length)
+ size_t from,
+ size_t length)
{
- const mbfl_encoding *encoding;
- int n, m, k, len, start, end;
+ const mbfl_encoding *encoding = string->encoding;
+ size_t n, k, len, start, end;
+ unsigned m;
unsigned char *p, *w;
- const unsigned char *mbtab;
- encoding = mbfl_no2encoding(string->no_encoding);
- if (encoding == NULL || string == NULL || result == NULL) {
- return NULL;
- }
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
if ((encoding->flag & (MBFL_ENCTYPE_SBCS | MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE | MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) ||
encoding->mblen_table != NULL) {
len = string->len;
- start = from;
- end = from + length;
- if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
- start *= 2;
- end = start + length*2;
+ if (encoding->flag & MBFL_ENCTYPE_SBCS) {
+ start = from;
+ } else if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
+ start = from*2;
} else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
- start *= 4;
- end = start + length*4;
- } else if (encoding->mblen_table != NULL) {
- mbtab = encoding->mblen_table;
+ start = from*4;
+ } else {
+ const unsigned char *mbtab = encoding->mblen_table;
start = 0;
- end = 0;
n = 0;
k = 0;
p = string->val;
- if (p != NULL) {
- /* search start position */
- while (k <= from) {
- start = n;
- if (n >= len) {
- break;
- }
- m = mbtab[*p];
- n += m;
- p += m;
- k++;
+ /* search start position */
+ while (k <= from) {
+ start = n;
+ if (n >= len) {
+ break;
}
- /* detect end position */
- k = 0;
- end = start;
- while (k < length) {
- end = n;
- if (n >= len) {
- break;
- }
- m = mbtab[*p];
- n += m;
- p += m;
- k++;
+ m = mbtab[*p];
+ n += m;
+ p += m;
+ k++;
+ }
+ }
+
+ if (length == MBFL_SUBSTR_UNTIL_END) {
+ end = len;
+ } else if (encoding->flag & MBFL_ENCTYPE_SBCS) {
+ end = start + length;
+ } else if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
+ end = start + length*2;
+ } else if (encoding->flag & (MBFL_ENCTYPE_WCS4BE | MBFL_ENCTYPE_WCS4LE)) {
+ end = start + length*4;
+ } else {
+ const unsigned char *mbtab = encoding->mblen_table;
+ end = start;
+ n = start;
+ k = 0;
+ p = string->val + start;
+ /* detect end position */
+ while (k <= length) {
+ end = n;
+ if (n >= len) {
+ break;
}
+ m = mbtab[*p];
+ n += m;
+ p += m;
+ k++;
}
}
if (start > len) {
start = len;
}
- if (start < 0) {
- start = 0;
- }
if (end > len) {
end = len;
}
- if (end < 0) {
- end = 0;
- }
if (start > end) {
start = end;
}
@@ -1382,21 +1215,11 @@ mbfl_substr(
/* allocate memory and copy */
n = end - start;
result->len = 0;
- result->val = w = (unsigned char*)mbfl_malloc((n + 8)*sizeof(unsigned char));
+ result->val = w = (unsigned char*)mbfl_malloc(n + 1);
if (w != NULL) {
- p = string->val;
- if (p != NULL) {
- p += start;
- result->len = n;
- while (n > 0) {
- *w++ = *p++;
- n--;
- }
- }
- *w++ = '\0';
- *w++ = '\0';
- *w++ = '\0';
- *w = '\0';
+ result->len = n;
+ memcpy(w, string->val + start, n);
+ w[n] = '\0';
} else {
result = NULL;
}
@@ -1406,19 +1229,23 @@ mbfl_substr(
mbfl_convert_filter *decoder;
mbfl_convert_filter *encoder;
+ if (length == MBFL_SUBSTR_UNTIL_END) {
+ length = mbfl_strlen(string) - from;
+ }
+
mbfl_memory_device_init(&device, length + 1, 0);
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
/* output code filter */
decoder = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &device);
/* wchar filter */
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
collector_substr, 0, &pc);
if (decoder == NULL || encoder == NULL) {
mbfl_convert_filter_delete(encoder);
@@ -1459,33 +1286,19 @@ mbfl_string *
mbfl_strcut(
mbfl_string *string,
mbfl_string *result,
- int from,
- int length)
+ size_t from,
+ size_t length)
{
- const mbfl_encoding *encoding;
+ const mbfl_encoding *encoding = string->encoding;
mbfl_memory_device device;
- /* validate the parameters */
- if (string == NULL || string->val == NULL || result == NULL) {
- return NULL;
- }
-
- if (from < 0 || length < 0) {
- return NULL;
- }
-
if (from >= string->len) {
from = string->len;
}
- encoding = mbfl_no2encoding(string->no_encoding);
- if (encoding == NULL) {
- return NULL;
- }
-
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
if ((encoding->flag & (MBFL_ENCTYPE_SBCS
| MBFL_ENCTYPE_WCS2BE
@@ -1496,7 +1309,7 @@ mbfl_strcut(
const unsigned char *start = NULL;
const unsigned char *end = NULL;
unsigned char *w;
- unsigned int sz;
+ size_t sz;
if (encoding->flag & (MBFL_ENCTYPE_WCS2BE | MBFL_ENCTYPE_WCS2LE)) {
from &= -2;
@@ -1539,7 +1352,7 @@ mbfl_strcut(
start = p;
/* search end position */
- if (length >= (int)string->len - (start - string->val)) {
+ if (length >= string->len - (start - string->val)) {
end = string->val + string->len;
} else {
for (q = p + length; p < q; p += (m = mbtab[*p]));
@@ -1577,21 +1390,21 @@ mbfl_strcut(
mbfl_convert_filter encoder;
mbfl_convert_filter decoder;
const unsigned char *p;
- int pos;
+ size_t pos;
} bk, _bk;
/* output code filter */
if (!(decoder = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &device))) {
return NULL;
}
/* wchar filter */
if (!(encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
mbfl_filter_output_null,
NULL, NULL))) {
mbfl_convert_filter_delete(decoder);
@@ -1750,7 +1563,7 @@ mbfl_strcut(
/*
* strwidth
*/
-static int is_fullwidth(int c)
+static size_t is_fullwidth(int c)
{
int i;
@@ -1770,14 +1583,14 @@ static int is_fullwidth(int c)
static int
filter_count_width(int c, void* data)
{
- (*(int *)data) += (is_fullwidth(c) ? 2: 1);
+ (*(size_t *)data) += (is_fullwidth(c) ? 2: 1);
return c;
}
-int
+size_t
mbfl_strwidth(mbfl_string *string)
{
- int len, n;
+ size_t len, n;
unsigned char *p;
mbfl_convert_filter *filter;
@@ -1785,8 +1598,8 @@ mbfl_strwidth(mbfl_string *string)
if (string->len > 0 && string->val != NULL) {
/* wchar filter */
filter = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
filter_count_width, 0, &len);
if (filter == NULL) {
mbfl_convert_filter_delete(filter);
@@ -1816,12 +1629,12 @@ struct collector_strimwidth_data {
mbfl_convert_filter *decoder;
mbfl_convert_filter *decoder_backup;
mbfl_memory_device device;
- int from;
- int width;
- int outwidth;
- int outchar;
+ size_t from;
+ size_t width;
+ size_t outwidth;
+ size_t outchar;
+ size_t endpos;
int status;
- int endpos;
};
static int
@@ -1861,12 +1674,12 @@ mbfl_strimwidth(
mbfl_string *string,
mbfl_string *marker,
mbfl_string *result,
- int from,
- int width)
+ size_t from,
+ size_t width)
{
struct collector_strimwidth_data pc;
mbfl_convert_filter *encoder;
- int n, mkwidth;
+ size_t n, mkwidth;
unsigned char *p;
if (string == NULL || result == NULL) {
@@ -1874,22 +1687,22 @@ mbfl_strimwidth(
}
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
mbfl_memory_device_init(&pc.device, MIN(string->len, width), 0);
/* output code filter */
pc.decoder = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &pc.device);
pc.decoder_backup = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &pc.device);
/* wchar filter */
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
collector_strimwidth, 0, &pc);
if (pc.decoder == NULL || pc.decoder_backup == NULL || encoder == NULL) {
mbfl_convert_filter_delete(encoder);
@@ -1932,7 +1745,7 @@ mbfl_strimwidth(
pc.status = 10;
pc.device.pos = pc.endpos;
mbfl_convert_filter_copy(pc.decoder_backup, pc.decoder);
- mbfl_convert_filter_reset(encoder, marker->no_encoding, mbfl_no_encoding_wchar);
+ mbfl_convert_filter_reset(encoder, marker->encoding, &mbfl_encoding_wchar);
p = marker->val;
n = marker->len;
while (n > 0) {
@@ -1963,9 +1776,8 @@ mbfl_ja_jp_hantozen(
mbfl_string *result,
int mode)
{
- int n;
+ size_t n;
unsigned char *p;
- const mbfl_encoding *encoding;
mbfl_memory_device device;
mbfl_convert_filter *decoder = NULL;
mbfl_convert_filter *encoder = NULL;
@@ -1973,25 +1785,15 @@ mbfl_ja_jp_hantozen(
mbfl_convert_filter *next_filter = NULL;
mbfl_filt_tl_jisx0201_jisx0208_param *param = NULL;
- /* validate parameters */
- if (string == NULL || result == NULL) {
- return NULL;
- }
-
- encoding = mbfl_no2encoding(string->no_encoding);
- if (encoding == NULL) {
- return NULL;
- }
-
mbfl_memory_device_init(&device, string->len, 0);
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
decoder = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &device);
if (decoder == NULL) {
goto out;
@@ -2020,8 +1822,8 @@ mbfl_ja_jp_hantozen(
next_filter = tl_filter;
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
(int(*)(int, void*))next_filter->filter_function,
(int(*)(void*))next_filter->filter_flush,
next_filter);
@@ -2077,9 +1879,9 @@ struct mime_header_encoder_data {
mbfl_memory_device tmpdev;
int status1;
int status2;
- int prevpos;
- int linehead;
- int firstindent;
+ size_t prevpos;
+ size_t linehead;
+ size_t firstindent;
int encnamelen;
int lwsplen;
char encname[128];
@@ -2089,7 +1891,7 @@ struct mime_header_encoder_data {
static int
mime_header_encoder_block_collector(int c, void *data)
{
- int n;
+ size_t n;
struct mime_header_encoder_data *pe = (struct mime_header_encoder_data *)data;
switch (pe->status2) {
@@ -2150,7 +1952,7 @@ mime_header_encoder_collector(int c, void *data)
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 /* 0xF0 */
};
- int n;
+ size_t n;
struct mime_header_encoder_data *pe = (struct mime_header_encoder_data *)data;
switch (pe->status1) {
@@ -2226,18 +2028,16 @@ mime_header_encoder_result(struct mime_header_encoder_data *pe, mbfl_string *res
struct mime_header_encoder_data*
mime_header_encoder_new(
- enum mbfl_no_encoding incode,
- enum mbfl_no_encoding outcode,
- enum mbfl_no_encoding transenc)
+ const mbfl_encoding *incode,
+ const mbfl_encoding *outcode,
+ const mbfl_encoding *transenc)
{
- int n;
+ size_t n;
const char *s;
- const mbfl_encoding *outencoding;
struct mime_header_encoder_data *pe;
/* get output encoding and check MIME charset name */
- outencoding = mbfl_no2encoding(outcode);
- if (outencoding == NULL || outencoding->mime_name == NULL || outencoding->mime_name[0] == '\0') {
+ if (outcode->mime_name == NULL || outcode->mime_name[0] == '\0') {
return NULL;
}
@@ -2258,16 +2058,16 @@ mime_header_encoder_new(
n = 0;
pe->encname[n++] = 0x3d;
pe->encname[n++] = 0x3f;
- s = outencoding->mime_name;
+ s = outcode->mime_name;
while (*s) {
pe->encname[n++] = *s++;
}
pe->encname[n++] = 0x3f;
- if (transenc == mbfl_no_encoding_qprint) {
+ if (transenc->no_encoding == mbfl_no_encoding_qprint) {
pe->encname[n++] = 0x51;
} else {
pe->encname[n++] = 0x42;
- transenc = mbfl_no_encoding_base64;
+ transenc = &mbfl_encoding_base64;
}
pe->encname[n++] = 0x3f;
pe->encname[n] = '\0';
@@ -2285,14 +2085,14 @@ mime_header_encoder_new(
pe->encod_filter_backup = mbfl_convert_filter_new(outcode, transenc, mbfl_memory_device_output, 0, &(pe->outdev));
/* Output code filter */
- pe->conv2_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
- pe->conv2_filter_backup = mbfl_convert_filter_new(mbfl_no_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
+ pe->conv2_filter = mbfl_convert_filter_new(&mbfl_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
+ pe->conv2_filter_backup = mbfl_convert_filter_new(&mbfl_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
/* encoded block filter */
- pe->block_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, mbfl_no_encoding_wchar, mime_header_encoder_block_collector, 0, pe);
+ pe->block_filter = mbfl_convert_filter_new(&mbfl_encoding_wchar, &mbfl_encoding_wchar, mime_header_encoder_block_collector, 0, pe);
/* Input code filter */
- pe->conv1_filter = mbfl_convert_filter_new(incode, mbfl_no_encoding_wchar, mime_header_encoder_collector, 0, pe);
+ pe->conv1_filter = mbfl_convert_filter_new(incode, &mbfl_encoding_wchar, mime_header_encoder_collector, 0, pe);
if (pe->encod_filter == NULL ||
pe->encod_filter_backup == NULL ||
@@ -2303,7 +2103,7 @@ mime_header_encoder_new(
return NULL;
}
- if (transenc == mbfl_no_encoding_qprint) {
+ if (transenc->no_encoding == mbfl_no_encoding_qprint) {
pe->encod_filter->status |= MBFL_QPRINT_STS_MIME_HEADER;
pe->encod_filter_backup->status |= MBFL_QPRINT_STS_MIME_HEADER;
} else {
@@ -2340,20 +2140,20 @@ mbfl_string *
mbfl_mime_header_encode(
mbfl_string *string,
mbfl_string *result,
- enum mbfl_no_encoding outcode,
- enum mbfl_no_encoding encoding,
+ const mbfl_encoding *outcode,
+ const mbfl_encoding *encoding,
const char *linefeed,
int indent)
{
- int n;
+ size_t n;
unsigned char *p;
struct mime_header_encoder_data *pe;
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = mbfl_no_encoding_ascii;
+ result->encoding = &mbfl_encoding_ascii;
- pe = mime_header_encoder_new(string->no_encoding, outcode, encoding);
+ pe = mime_header_encoder_new(string->encoding, outcode, encoding);
if (pe == NULL) {
return NULL;
}
@@ -2394,11 +2194,11 @@ struct mime_header_decoder_data {
mbfl_convert_filter *conv2_filter;
mbfl_memory_device outdev;
mbfl_memory_device tmpdev;
- int cspos;
+ size_t cspos;
int status;
- enum mbfl_no_encoding encoding;
- enum mbfl_no_encoding incode;
- enum mbfl_no_encoding outcode;
+ const mbfl_encoding *encoding;
+ const mbfl_encoding *incode;
+ const mbfl_encoding *outcode;
};
static int
@@ -2432,7 +2232,7 @@ mime_header_decoder_collector(int c, void* data)
mbfl_memory_device_output('\0', &pd->tmpdev);
encoding = mbfl_name2encoding((const char *)&pd->tmpdev.buffer[pd->cspos]);
if (encoding != NULL) {
- pd->incode = encoding->no_encoding;
+ pd->incode = encoding;
pd->status = 3;
}
mbfl_memory_device_unput(&pd->tmpdev);
@@ -2454,10 +2254,10 @@ mime_header_decoder_collector(int c, void* data)
case 3: /* identify encoding */
mbfl_memory_device_output(c, &pd->tmpdev);
if (c == 0x42 || c == 0x62) { /* 'B' or 'b' */
- pd->encoding = mbfl_no_encoding_base64;
+ pd->encoding = &mbfl_encoding_base64;
pd->status = 4;
} else if (c == 0x51 || c == 0x71) { /* 'Q' or 'q' */
- pd->encoding = mbfl_no_encoding_qprint;
+ pd->encoding = &mbfl_encoding_qprint;
pd->status = 4;
} else {
if (c == 0x0d || c == 0x0a) { /* CR or LF */
@@ -2474,9 +2274,9 @@ mime_header_decoder_collector(int c, void* data)
mbfl_memory_device_output(c, &pd->tmpdev);
if (c == 0x3f) { /* ? */
/* charset convert filter */
- mbfl_convert_filter_reset(pd->conv1_filter, pd->incode, mbfl_no_encoding_wchar);
+ mbfl_convert_filter_reset(pd->conv1_filter, pd->incode, &mbfl_encoding_wchar);
/* decode filter */
- mbfl_convert_filter_reset(pd->deco_filter, pd->encoding, mbfl_no_encoding_8bit);
+ mbfl_convert_filter_reset(pd->deco_filter, pd->encoding, &mbfl_encoding_8bit);
pd->status = 5;
} else {
if (c == 0x0d || c == 0x0a) { /* CR or LF */
@@ -2501,7 +2301,7 @@ mime_header_decoder_collector(int c, void* data)
/* flush and reset filter */
(*pd->deco_filter->filter_flush)(pd->deco_filter);
(*pd->conv1_filter->filter_flush)(pd->conv1_filter);
- mbfl_convert_filter_reset(pd->conv1_filter, mbfl_no_encoding_ascii, mbfl_no_encoding_wchar);
+ mbfl_convert_filter_reset(pd->conv1_filter, &mbfl_encoding_ascii, &mbfl_encoding_wchar);
pd->status = 7;
} else {
(*pd->deco_filter->filter_function)(0x3f, pd->deco_filter);
@@ -2587,7 +2387,7 @@ mime_header_decoder_result(struct mime_header_decoder_data *pd, mbfl_string *res
}
struct mime_header_decoder_data*
-mime_header_decoder_new(enum mbfl_no_encoding outcode)
+mime_header_decoder_new(const mbfl_encoding *outcode)
{
struct mime_header_decoder_data *pd;
@@ -2600,14 +2400,14 @@ mime_header_decoder_new(enum mbfl_no_encoding outcode)
mbfl_memory_device_init(&pd->tmpdev, 0, 0);
pd->cspos = 0;
pd->status = 0;
- pd->encoding = mbfl_no_encoding_pass;
- pd->incode = mbfl_no_encoding_ascii;
+ pd->encoding = &mbfl_encoding_8bit;
+ pd->incode = &mbfl_encoding_ascii;
pd->outcode = outcode;
/* charset convert filter */
- pd->conv2_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, pd->outcode, mbfl_memory_device_output, 0, &pd->outdev);
- pd->conv1_filter = mbfl_convert_filter_new(pd->incode, mbfl_no_encoding_wchar, mbfl_filter_output_pipe, 0, pd->conv2_filter);
+ pd->conv2_filter = mbfl_convert_filter_new(&mbfl_encoding_wchar, pd->outcode, mbfl_memory_device_output, 0, &pd->outdev);
+ pd->conv1_filter = mbfl_convert_filter_new(pd->incode, &mbfl_encoding_wchar, mbfl_filter_output_pipe, 0, pd->conv2_filter);
/* decode filter */
- pd->deco_filter = mbfl_convert_filter_new(pd->encoding, mbfl_no_encoding_8bit, mbfl_filter_output_pipe, 0, pd->conv1_filter);
+ pd->deco_filter = mbfl_convert_filter_new(pd->encoding, &mbfl_encoding_8bit, mbfl_filter_output_pipe, 0, pd->conv1_filter);
if (pd->conv1_filter == NULL || pd->conv2_filter == NULL || pd->deco_filter == NULL) {
mime_header_decoder_delete(pd);
@@ -2640,15 +2440,15 @@ mbfl_string *
mbfl_mime_header_decode(
mbfl_string *string,
mbfl_string *result,
- enum mbfl_no_encoding outcode)
+ const mbfl_encoding *outcode)
{
- int n;
+ size_t n;
unsigned char *p;
struct mime_header_decoder_data *pd;
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = outcode;
+ result->encoding = outcode;
pd = mime_header_decoder_new(outcode);
if (pd == NULL) {
@@ -3039,7 +2839,7 @@ mbfl_html_numeric_entity(
struct collector_htmlnumericentity_data pc;
mbfl_memory_device device;
mbfl_convert_filter *encoder;
- int n;
+ size_t n;
unsigned char *p;
if (string == NULL || result == NULL) {
@@ -3047,29 +2847,29 @@ mbfl_html_numeric_entity(
}
mbfl_string_init(result);
result->no_language = string->no_language;
- result->no_encoding = string->no_encoding;
+ result->encoding = string->encoding;
mbfl_memory_device_init(&device, string->len, 0);
/* output code filter */
pc.decoder = mbfl_convert_filter_new(
- mbfl_no_encoding_wchar,
- string->no_encoding,
+ &mbfl_encoding_wchar,
+ string->encoding,
mbfl_memory_device_output, 0, &device);
/* wchar filter */
if (type == 0) { /* decimal output */
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
collector_encode_htmlnumericentity, 0, &pc);
} else if (type == 2) { /* hex output */
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
collector_encode_hex_htmlnumericentity, 0, &pc);
} else { /* type == 1: decimal/hex input */
encoder = mbfl_convert_filter_new(
- string->no_encoding,
- mbfl_no_encoding_wchar,
+ string->encoding,
+ &mbfl_encoding_wchar,
collector_decode_htmlnumericentity,
(int (*)(void*))mbfl_filt_decode_htmlnumericentity_flush, &pc);
}
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter.h b/ext/mbstring/libmbfl/mbfl/mbfilter.h
index 215e07d1d6..a6aed129fa 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter.h
@@ -98,6 +98,17 @@
#include "mbfl_convert.h"
#include "mbfl_ident.h"
+/* Prefer local fix, otherwise need to include too much. */
+#ifndef ssize_t
+#if defined(_WIN64)
+#define ssize_t __int64
+#elif defined(_WIN32)
+#define ssize_t __int32
+#elif defined(__GNUC__) && __GNUC__ >= 4
+#define ssize_t long
+#endif
+#endif
+
/*
* version information
*/
@@ -133,20 +144,19 @@ struct _mbfl_buffer_converter {
const mbfl_encoding *to;
};
-MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(enum mbfl_no_encoding from, enum mbfl_no_encoding to, int buf_initsz);
-MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new2(const mbfl_encoding *from, const mbfl_encoding *to, int buf_initsz);
+MBFLAPI extern mbfl_buffer_converter * mbfl_buffer_converter_new(const mbfl_encoding *from, const mbfl_encoding *to, size_t buf_initsz);
MBFLAPI extern void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
MBFLAPI extern void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd);
MBFLAPI extern int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
MBFLAPI extern int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
-MBFLAPI extern int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n);
+MBFLAPI extern int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, size_t n);
MBFLAPI extern int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
-MBFLAPI extern int mbfl_buffer_converter_feed2(mbfl_buffer_converter *convd, mbfl_string *string, int *loc);
+MBFLAPI extern int mbfl_buffer_converter_feed2(mbfl_buffer_converter *convd, mbfl_string *string, size_t *loc);
MBFLAPI extern int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
MBFLAPI extern mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
-MBFLAPI extern int mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
+MBFLAPI extern size_t mbfl_buffer_illegalchars(mbfl_buffer_converter *convd);
/*
* encoding detector
@@ -159,77 +169,82 @@ struct _mbfl_encoding_detector {
int strict;
};
-MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int elistsz, int strict);
-MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new2(const mbfl_encoding **elist, int elistsz, int strict);
+MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new(const mbfl_encoding **elist, int elistsz, int strict);
MBFLAPI extern void mbfl_encoding_detector_delete(mbfl_encoding_detector *identd);
MBFLAPI extern int mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string);
-MBFLAPI extern enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *identd);
-MBFLAPI extern const mbfl_encoding *mbfl_encoding_detector_judge2(mbfl_encoding_detector *identd);
+MBFLAPI extern const mbfl_encoding *mbfl_encoding_detector_judge(mbfl_encoding_detector *identd);
/*
* encoding converter
*/
MBFLAPI extern mbfl_string *
-mbfl_convert_encoding(mbfl_string *string, mbfl_string *result, enum mbfl_no_encoding toenc);
+mbfl_convert_encoding(mbfl_string *string, mbfl_string *result, const mbfl_encoding *toenc);
/*
* identify encoding
*/
MBFLAPI extern const mbfl_encoding *
-mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int elistsz, int strict);
+mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict);
+
+/* Lengths -1 through -16 are reserved for error return values */
+static inline int mbfl_is_error(size_t len) {
+ return len >= (size_t) -16;
+}
-MBFLAPI extern const mbfl_encoding *
-mbfl_identify_encoding2(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict);
/*
* strlen
*/
-MBFLAPI extern int
+MBFLAPI extern size_t
mbfl_strlen(mbfl_string *string);
/*
* oddlen
*/
-MBFLAPI extern int
+MBFLAPI extern size_t
mbfl_oddlen(mbfl_string *string);
/*
* strpos
*/
-MBFLAPI extern int
-mbfl_strpos(mbfl_string *haystack, mbfl_string *needle, int offset, int reverse);
-
+MBFLAPI extern size_t
+mbfl_strpos(mbfl_string *haystack, mbfl_string *needle, ssize_t offset, int reverse);
/*
* substr_count
*/
-MBFLAPI extern int
+MBFLAPI extern size_t
mbfl_substr_count(mbfl_string *haystack, mbfl_string *needle);
/*
+ * If specified as length, the substr until the end of the string is taken.
+ */
+#define MBFL_SUBSTR_UNTIL_END ((size_t) -1)
+
+/*
* substr
*/
MBFLAPI extern mbfl_string *
-mbfl_substr(mbfl_string *string, mbfl_string *result, int from, int length);
+mbfl_substr(mbfl_string *string, mbfl_string *result, size_t from, size_t length);
/*
* strcut
*/
MBFLAPI extern mbfl_string *
-mbfl_strcut(mbfl_string *string, mbfl_string *result, int from, int length);
+mbfl_strcut(mbfl_string *string, mbfl_string *result, size_t from, size_t length);
/*
* strwidth
*/
-MBFLAPI extern int
+MBFLAPI extern size_t
mbfl_strwidth(mbfl_string *string);
/*
* strimwidth
*/
MBFLAPI extern mbfl_string *
-mbfl_strimwidth(mbfl_string *string, mbfl_string *marker, mbfl_string *result, int from, int width);
+mbfl_strimwidth(mbfl_string *string, mbfl_string *marker, mbfl_string *result, size_t from, size_t width);
/*
* MIME header encode
@@ -238,9 +253,9 @@ struct mime_header_encoder_data; /* forward declaration */
MBFLAPI extern struct mime_header_encoder_data *
mime_header_encoder_new(
- enum mbfl_no_encoding incode,
- enum mbfl_no_encoding outcode,
- enum mbfl_no_encoding encoding);
+ const mbfl_encoding *incode,
+ const mbfl_encoding *outcode,
+ const mbfl_encoding *encoding);
MBFLAPI extern void
mime_header_encoder_delete(struct mime_header_encoder_data *pe);
@@ -254,8 +269,8 @@ mime_header_encoder_result(struct mime_header_encoder_data *pe, mbfl_string *res
MBFLAPI extern mbfl_string *
mbfl_mime_header_encode(
mbfl_string *string, mbfl_string *result,
- enum mbfl_no_encoding outcode,
- enum mbfl_no_encoding encoding,
+ const mbfl_encoding *outcode,
+ const mbfl_encoding *encoding,
const char *linefeed,
int indent);
@@ -265,7 +280,7 @@ mbfl_mime_header_encode(
struct mime_header_decoder_data; /* forward declaration */
MBFLAPI extern struct mime_header_decoder_data *
-mime_header_decoder_new(enum mbfl_no_encoding outcode);
+mime_header_decoder_new(const mbfl_encoding *outcode);
MBFLAPI extern void
mime_header_decoder_delete(struct mime_header_decoder_data *pd);
@@ -280,7 +295,7 @@ MBFLAPI extern mbfl_string *
mbfl_mime_header_decode(
mbfl_string *string,
mbfl_string *result,
- enum mbfl_no_encoding outcode);
+ const mbfl_encoding *outcode);
/*
* convert HTML numeric entity
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c b/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c
index ed79746f6a..6b5b009535 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c
@@ -38,6 +38,11 @@
#include "mbfilter.h"
+const struct mbfl_convert_vtbl vtbl_8bit_wchar;
+const struct mbfl_convert_vtbl vtbl_wchar_8bit;
+static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter);
+static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter);
+
static const char *mbfl_encoding_8bit_aliases[] = {"binary", NULL};
const mbfl_encoding mbfl_encoding_8bit = {
@@ -46,5 +51,43 @@ const mbfl_encoding mbfl_encoding_8bit = {
"8bit",
(const char *(*)[])&mbfl_encoding_8bit_aliases,
NULL,
- MBFL_ENCTYPE_SBCS
+ MBFL_ENCTYPE_SBCS,
+ &vtbl_8bit_wchar,
+ &vtbl_wchar_8bit
+};
+
+const struct mbfl_convert_vtbl vtbl_8bit_wchar = {
+ mbfl_no_encoding_8bit,
+ mbfl_no_encoding_wchar,
+ mbfl_filt_conv_common_ctor,
+ mbfl_filt_conv_common_dtor,
+ mbfl_filt_conv_8bit_wchar,
+ mbfl_filt_conv_common_flush
};
+
+const struct mbfl_convert_vtbl vtbl_wchar_8bit = {
+ mbfl_no_encoding_wchar,
+ mbfl_no_encoding_8bit,
+ mbfl_filt_conv_common_ctor,
+ mbfl_filt_conv_common_dtor,
+ mbfl_filt_conv_wchar_8bit,
+ mbfl_filt_conv_common_flush
+};
+
+#define CK(statement) do { if ((statement) < 0) return (-1); } while (0)
+
+static int mbfl_filt_conv_8bit_wchar(int c, mbfl_convert_filter *filter)
+{
+ return (*filter->output_function)(c, filter->data);
+}
+
+static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter)
+{
+ if (c >= 0 && c < 0x100) {
+ CK((*filter->output_function)(c, filter->data));
+ } else {
+ CK(mbfl_filt_conv_illegal_output(c, filter));
+ }
+
+ return c;
+}
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter_pass.c b/ext/mbstring/libmbfl/mbfl/mbfilter_pass.c
index 2efaae50a2..cd58221753 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter_pass.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter_pass.c
@@ -46,7 +46,9 @@ const mbfl_encoding mbfl_encoding_pass = {
NULL,
(const char *(*)[])&mbfl_encoding_pass_aliases,
NULL,
- 0
+ 0,
+ NULL,
+ NULL
};
const struct mbfl_convert_vtbl vtbl_pass = {
diff --git a/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.c b/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.c
index ace81b4c72..97142a16cb 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.c
@@ -44,5 +44,7 @@ const mbfl_encoding mbfl_encoding_wchar = {
NULL,
NULL,
NULL,
- MBFL_ENCTYPE_WCS4BE
+ MBFL_ENCTYPE_WCS4BE,
+ NULL,
+ NULL
};
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_allocators.c b/ext/mbstring/libmbfl/mbfl/mbfl_allocators.c
index 96353023ca..a2db06932d 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_allocators.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_allocators.c
@@ -54,9 +54,9 @@
#include "mbfl_allocators.h"
-static void *__mbfl__malloc(unsigned int);
-static void *__mbfl__realloc(void *, unsigned int);
-static void *__mbfl__calloc(unsigned int, unsigned int);
+static void *__mbfl__malloc(size_t);
+static void *__mbfl__realloc(void *, size_t);
+static void *__mbfl__calloc(size_t, size_t);
static void __mbfl__free(void *);
static mbfl_allocators default_allocators = {
@@ -71,17 +71,17 @@ static mbfl_allocators default_allocators = {
mbfl_allocators *__mbfl_allocators = &default_allocators;
-static void *__mbfl__malloc(unsigned int sz)
+static void *__mbfl__malloc(size_t sz)
{
return malloc(sz);
}
-static void *__mbfl__realloc(void *ptr, unsigned int sz)
+static void *__mbfl__realloc(void *ptr, size_t sz)
{
return realloc(ptr, sz);
}
-static void *__mbfl__calloc(unsigned int nelems, unsigned int szelem)
+static void *__mbfl__calloc(size_t nelems, size_t szelem)
{
return calloc(nelems, szelem);
}
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_allocators.h b/ext/mbstring/libmbfl/mbfl/mbfl_allocators.h
index b2981c6f1f..08fc275d04 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_allocators.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_allocators.h
@@ -31,15 +31,16 @@
#ifndef MBFL_ALLOCATORS_H
#define MBFL_ALLOCATORS_H
+#include <stddef.h>
#include "mbfl_defs.h"
typedef struct _mbfl_allocators {
- void *(*malloc)(unsigned int);
- void *(*realloc)(void *, unsigned int);
- void *(*calloc)(unsigned int, unsigned int);
+ void *(*malloc)(size_t);
+ void *(*realloc)(void *, size_t);
+ void *(*calloc)(size_t, size_t);
void (*free)(void *);
- void *(*pmalloc)(unsigned int);
- void *(*prealloc)(void *, unsigned int);
+ void *(*pmalloc)(size_t);
+ void *(*prealloc)(void *, size_t);
void (*pfree)(void *);
} mbfl_allocators;
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
index 54e4b3c2a4..841e18844a 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
@@ -110,170 +110,14 @@ static char mbfl_hexchar_table[] = {
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
};
-const struct mbfl_convert_vtbl *mbfl_convert_filter_list[] = {
- &vtbl_utf8_wchar,
- &vtbl_wchar_utf8,
- &vtbl_eucjp_wchar,
- &vtbl_wchar_eucjp,
- &vtbl_sjis_wchar,
- &vtbl_wchar_sjis,
- &vtbl_sjis_open_wchar,
- &vtbl_wchar_sjis_open,
- &vtbl_sjis2004_wchar,
- &vtbl_wchar_sjis2004,
- &vtbl_cp51932_wchar,
- &vtbl_wchar_cp51932,
- &vtbl_jis_wchar,
- &vtbl_wchar_jis,
- &vtbl_jis_ms_wchar,
- &vtbl_wchar_jis_ms,
- &vtbl_2022jp_wchar,
- &vtbl_wchar_2022jp,
- &vtbl_2022jpms_wchar,
- &vtbl_wchar_2022jpms,
- &vtbl_2022jp_2004_wchar,
- &vtbl_wchar_2022jp_2004,
- &vtbl_2022jp_kddi_wchar,
- &vtbl_wchar_2022jp_kddi,
- &vtbl_eucjpwin_wchar,
- &vtbl_wchar_eucjpwin,
- &vtbl_eucjp2004_wchar,
- &vtbl_wchar_eucjp2004,
- &vtbl_cp932_wchar,
- &vtbl_wchar_cp932,
- &vtbl_sjis_docomo_wchar,
- &vtbl_wchar_sjis_docomo,
- &vtbl_sjis_kddi_wchar,
- &vtbl_wchar_sjis_kddi,
- &vtbl_sjis_sb_wchar,
- &vtbl_wchar_sjis_sb,
- &vtbl_sjis_mac_wchar,
- &vtbl_wchar_sjis_mac,
- &vtbl_utf8_docomo_wchar,
- &vtbl_wchar_utf8_docomo,
- &vtbl_utf8_kddi_a_wchar,
- &vtbl_wchar_utf8_kddi_a,
- &vtbl_utf8_kddi_b_wchar,
- &vtbl_wchar_utf8_kddi_b,
- &vtbl_utf8_sb_wchar,
- &vtbl_wchar_utf8_sb,
- &vtbl_euccn_wchar,
- &vtbl_wchar_euccn,
- &vtbl_cp936_wchar,
- &vtbl_wchar_cp936,
- &vtbl_gb18030_wchar,
- &vtbl_wchar_gb18030,
- &vtbl_hz_wchar,
- &vtbl_wchar_hz,
- &vtbl_euctw_wchar,
- &vtbl_wchar_euctw,
- &vtbl_big5_wchar,
- &vtbl_wchar_big5,
- &vtbl_cp950_wchar,
- &vtbl_wchar_cp950,
- &vtbl_euckr_wchar,
- &vtbl_wchar_euckr,
- &vtbl_uhc_wchar,
- &vtbl_wchar_uhc,
- &vtbl_2022kr_wchar,
- &vtbl_wchar_2022kr,
- &vtbl_cp1251_wchar,
- &vtbl_wchar_cp1251,
- &vtbl_cp866_wchar,
- &vtbl_wchar_cp866,
- &vtbl_koi8r_wchar,
- &vtbl_wchar_koi8r,
- &vtbl_koi8u_wchar,
- &vtbl_wchar_koi8u,
- &vtbl_cp1252_wchar,
- &vtbl_wchar_cp1252,
- &vtbl_cp1254_wchar,
- &vtbl_wchar_cp1254,
- &vtbl_cp50220_wchar,
- &vtbl_wchar_cp50220,
- &vtbl_cp50220raw_wchar,
- &vtbl_wchar_cp50220raw,
- &vtbl_cp50221_wchar,
- &vtbl_wchar_cp50221,
- &vtbl_cp50222_wchar,
- &vtbl_wchar_cp50222,
- &vtbl_ascii_wchar,
- &vtbl_wchar_ascii,
- &vtbl_8859_1_wchar,
- &vtbl_wchar_8859_1,
- &vtbl_8859_2_wchar,
- &vtbl_wchar_8859_2,
- &vtbl_8859_3_wchar,
- &vtbl_wchar_8859_3,
- &vtbl_8859_4_wchar,
- &vtbl_wchar_8859_4,
- &vtbl_8859_5_wchar,
- &vtbl_wchar_8859_5,
- &vtbl_8859_6_wchar,
- &vtbl_wchar_8859_6,
- &vtbl_8859_7_wchar,
- &vtbl_wchar_8859_7,
- &vtbl_8859_8_wchar,
- &vtbl_wchar_8859_8,
- &vtbl_8859_9_wchar,
- &vtbl_wchar_8859_9,
- &vtbl_8859_10_wchar,
- &vtbl_wchar_8859_10,
- &vtbl_8859_13_wchar,
- &vtbl_wchar_8859_13,
- &vtbl_8859_14_wchar,
- &vtbl_wchar_8859_14,
- &vtbl_8859_15_wchar,
- &vtbl_wchar_8859_15,
+static const struct mbfl_convert_vtbl *mbfl_special_filter_list[] = {
&vtbl_8bit_b64,
&vtbl_b64_8bit,
&vtbl_uuencode_8bit,
- &vtbl_wchar_html,
- &vtbl_html_wchar,
&vtbl_8bit_qprint,
&vtbl_qprint_8bit,
&vtbl_8bit_7bit,
&vtbl_7bit_8bit,
- &vtbl_utf7_wchar,
- &vtbl_wchar_utf7,
- &vtbl_utf7imap_wchar,
- &vtbl_wchar_utf7imap,
- &vtbl_utf16_wchar,
- &vtbl_wchar_utf16,
- &vtbl_utf16be_wchar,
- &vtbl_wchar_utf16be,
- &vtbl_utf16le_wchar,
- &vtbl_wchar_utf16le,
- &vtbl_utf32_wchar,
- &vtbl_wchar_utf32,
- &vtbl_utf32be_wchar,
- &vtbl_wchar_utf32be,
- &vtbl_utf32le_wchar,
- &vtbl_wchar_utf32le,
- &vtbl_ucs4_wchar,
- &vtbl_wchar_ucs4,
- &vtbl_ucs4be_wchar,
- &vtbl_wchar_ucs4be,
- &vtbl_ucs4le_wchar,
- &vtbl_wchar_ucs4le,
- &vtbl_ucs2_wchar,
- &vtbl_wchar_ucs2,
- &vtbl_ucs2be_wchar,
- &vtbl_wchar_ucs2be,
- &vtbl_ucs2le_wchar,
- &vtbl_wchar_ucs2le,
- &vtbl_byte4be_wchar,
- &vtbl_wchar_byte4be,
- &vtbl_byte4le_wchar,
- &vtbl_wchar_byte4le,
- &vtbl_byte2be_wchar,
- &vtbl_wchar_byte2be,
- &vtbl_byte2le_wchar,
- &vtbl_wchar_byte2le,
- &vtbl_armscii8_wchar,
- &vtbl_wchar_armscii8,
- &vtbl_cp850_wchar,
- &vtbl_wchar_cp850,
&vtbl_pass,
NULL
};
@@ -281,21 +125,16 @@ const struct mbfl_convert_vtbl *mbfl_convert_filter_list[] = {
static int
mbfl_convert_filter_common_init(
mbfl_convert_filter *filter,
- enum mbfl_no_encoding from,
- enum mbfl_no_encoding to,
+ const mbfl_encoding *from,
+ const mbfl_encoding *to,
const struct mbfl_convert_vtbl *vtbl,
int (*output_function)(int, void* ),
int (*flush_function)(void*),
void* data)
{
/* encoding structure */
- if ((filter->from = mbfl_no2encoding(from)) == NULL) {
- return 1;
- }
-
- if ((filter->to = mbfl_no2encoding(to)) == NULL) {
- return 1;
- }
+ filter->from = from;
+ filter->to = to;
if (output_function != NULL) {
filter->output_function = output_function;
@@ -322,8 +161,8 @@ mbfl_convert_filter_common_init(
mbfl_convert_filter *
mbfl_convert_filter_new(
- enum mbfl_no_encoding from,
- enum mbfl_no_encoding to,
+ const mbfl_encoding *from,
+ const mbfl_encoding *to,
int (*output_function)(int, void* ),
int (*flush_function)(void*),
void* data)
@@ -332,9 +171,8 @@ mbfl_convert_filter_new(
const struct mbfl_convert_vtbl *vtbl;
vtbl = mbfl_convert_filter_get_vtbl(from, to);
-
if (vtbl == NULL) {
- vtbl = &vtbl_pass;
+ return NULL;
}
/* allocate */
@@ -360,18 +198,22 @@ mbfl_convert_filter_new2(
void* data)
{
mbfl_convert_filter * filter;
+ const mbfl_encoding *from_encoding, *to_encoding;
if (vtbl == NULL) {
vtbl = &vtbl_pass;
}
+ from_encoding = mbfl_no2encoding(vtbl->from);
+ to_encoding = mbfl_no2encoding(vtbl->to);
+
/* allocate */
filter = (mbfl_convert_filter *)mbfl_malloc(sizeof(mbfl_convert_filter));
if (filter == NULL) {
return NULL;
}
- if (mbfl_convert_filter_common_init(filter, vtbl->from, vtbl->to, vtbl,
+ if (mbfl_convert_filter_common_init(filter, from_encoding, to_encoding, vtbl,
output_function, flush_function, data)) {
mbfl_free(filter);
return NULL;
@@ -396,6 +238,17 @@ mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter)
}
int
+mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, const unsigned char *p, size_t len) {
+ while (len > 0) {
+ if ((*filter->filter_function)(*p++, filter) < 0) {
+ return -1;
+ }
+ len--;
+ }
+ return 0;
+}
+
+int
mbfl_convert_filter_flush(mbfl_convert_filter *filter)
{
(*filter->filter_flush)(filter);
@@ -403,7 +256,7 @@ mbfl_convert_filter_flush(mbfl_convert_filter *filter)
}
void mbfl_convert_filter_reset(mbfl_convert_filter *filter,
- enum mbfl_no_encoding from, enum mbfl_no_encoding to)
+ const mbfl_encoding *from, const mbfl_encoding *to)
{
const struct mbfl_convert_vtbl *vtbl;
@@ -435,7 +288,7 @@ mbfl_convert_filter_copy(
int mbfl_convert_filter_devcat(mbfl_convert_filter *filter, mbfl_memory_device *src)
{
- int n;
+ size_t n;
unsigned char *p;
p = src->buffer;
@@ -447,7 +300,7 @@ int mbfl_convert_filter_devcat(mbfl_convert_filter *filter, mbfl_memory_device *
n--;
}
- return n;
+ return 0;
}
int mbfl_convert_filter_strcat(mbfl_convert_filter *filter, const unsigned char *p)
@@ -587,29 +440,37 @@ mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter)
return ret;
}
-const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding from, enum mbfl_no_encoding to)
+const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(
+ const mbfl_encoding *from, const mbfl_encoding *to)
{
- const struct mbfl_convert_vtbl *vtbl;
- int i;
-
- if (to == mbfl_no_encoding_base64 ||
- to == mbfl_no_encoding_qprint ||
- to == mbfl_no_encoding_7bit) {
- from = mbfl_no_encoding_8bit;
- } else if (from == mbfl_no_encoding_base64 ||
- from == mbfl_no_encoding_qprint ||
- from == mbfl_no_encoding_uuencode) {
- to = mbfl_no_encoding_8bit;
+ if (to->no_encoding == mbfl_no_encoding_base64 ||
+ to->no_encoding == mbfl_no_encoding_qprint ||
+ to->no_encoding == mbfl_no_encoding_7bit) {
+ from = &mbfl_encoding_8bit;
+ } else if (from->no_encoding == mbfl_no_encoding_base64 ||
+ from->no_encoding == mbfl_no_encoding_qprint ||
+ from->no_encoding == mbfl_no_encoding_uuencode) {
+ to = &mbfl_encoding_8bit;
}
- i = 0;
- while ((vtbl = mbfl_convert_filter_list[i++]) != NULL){
- if (vtbl->from == from && vtbl->to == to) {
- return vtbl;
- }
+ if (to == from && (to == &mbfl_encoding_wchar || to == &mbfl_encoding_8bit)) {
+ return &vtbl_pass;
}
- return NULL;
+ if (to->no_encoding == mbfl_no_encoding_wchar) {
+ return from->input_filter;
+ } else if (from->no_encoding == mbfl_no_encoding_wchar) {
+ return to->output_filter;
+ } else {
+ int i = 0;
+ const struct mbfl_convert_vtbl *vtbl;
+ while ((vtbl = mbfl_special_filter_list[i++]) != NULL){
+ if (vtbl->from == from->no_encoding && vtbl->to == to->no_encoding) {
+ return vtbl;
+ }
+ }
+ return NULL;
+ }
}
/*
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.h b/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
index ad0911723a..31e54c61d1 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
@@ -52,25 +52,13 @@ struct _mbfl_convert_filter {
const mbfl_encoding *to;
int illegal_mode;
int illegal_substchar;
- int num_illegalchar;
+ size_t num_illegalchar;
void *opaque;
};
-struct mbfl_convert_vtbl {
- enum mbfl_no_encoding from;
- enum mbfl_no_encoding to;
- void (*filter_ctor)(mbfl_convert_filter *filter);
- void (*filter_dtor)(mbfl_convert_filter *filter);
- int (*filter_function)(int c, mbfl_convert_filter *filter);
- int (*filter_flush)(mbfl_convert_filter *filter);
- void (*filter_copy)(mbfl_convert_filter *src, mbfl_convert_filter *dest);
-};
-
-MBFLAPI extern const struct mbfl_convert_vtbl *mbfl_convert_filter_list[];
-
MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new(
- enum mbfl_no_encoding from,
- enum mbfl_no_encoding to,
+ const mbfl_encoding *from,
+ const mbfl_encoding *to,
int (*output_function)(int, void *),
int (*flush_function)(void *),
void *data );
@@ -81,11 +69,12 @@ MBFLAPI extern mbfl_convert_filter *mbfl_convert_filter_new2(
void *data );
MBFLAPI extern void mbfl_convert_filter_delete(mbfl_convert_filter *filter);
MBFLAPI extern int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter);
+MBFLAPI extern int mbfl_convert_filter_feed_string(mbfl_convert_filter *filter, const unsigned char *p, size_t len);
MBFLAPI extern int mbfl_convert_filter_flush(mbfl_convert_filter *filter);
-MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, enum mbfl_no_encoding from, enum mbfl_no_encoding to);
+MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, const mbfl_encoding *from, const mbfl_encoding *to);
MBFLAPI extern void mbfl_convert_filter_copy(mbfl_convert_filter *src, mbfl_convert_filter *dist);
MBFLAPI extern int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter);
-MBFLAPI extern const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding from, enum mbfl_no_encoding to);
+MBFLAPI extern const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(const mbfl_encoding *from, const mbfl_encoding *to);
MBFLAPI extern void mbfl_filt_conv_common_ctor(mbfl_convert_filter *filter);
MBFLAPI extern int mbfl_filt_conv_common_flush(mbfl_convert_filter *filter);
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_defs.h b/ext/mbstring/libmbfl/mbfl/mbfl_defs.h
index 753724d7be..8b18e5e0c4 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_defs.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_defs.h
@@ -39,6 +39,10 @@
#endif
#endif
+#ifndef SIZE_MAX
+#define SIZE_MAX ((size_t)~0)
+#endif
+
#ifdef WIN32
#ifdef MBFL_DLL_EXPORT
#define MBFLAPI __declspec(dllexport)
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c
index e03c2acaff..094962090d 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c
@@ -119,20 +119,8 @@
#endif
-static const char *mbfl_encoding_auto_aliases[] = {"unknown", NULL};
-
-static const mbfl_encoding mbfl_encoding_auto = {
- mbfl_no_encoding_auto,
- "auto",
- NULL,
- (const char *(*)[])&mbfl_encoding_auto_aliases,
- NULL,
- 0
-};
-
static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
&mbfl_encoding_pass,
- &mbfl_encoding_auto,
&mbfl_encoding_wchar,
&mbfl_encoding_byte2be,
&mbfl_encoding_byte2le,
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
index d080f7b6a4..c3a9c0affc 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
@@ -36,7 +36,6 @@
enum mbfl_no_encoding {
mbfl_no_encoding_invalid = -1,
mbfl_no_encoding_pass,
- mbfl_no_encoding_auto,
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte2be,
mbfl_no_encoding_byte2le,
@@ -128,6 +127,17 @@ enum mbfl_no_encoding {
typedef enum mbfl_no_encoding mbfl_encoding_id;
+struct _mbfl_convert_filter;
+struct mbfl_convert_vtbl {
+ enum mbfl_no_encoding from;
+ enum mbfl_no_encoding to;
+ void (*filter_ctor)(struct _mbfl_convert_filter *filter);
+ void (*filter_dtor)(struct _mbfl_convert_filter *filter);
+ int (*filter_function)(int c, struct _mbfl_convert_filter *filter);
+ int (*filter_flush)(struct _mbfl_convert_filter *filter);
+ void (*filter_copy)(struct _mbfl_convert_filter *src, struct _mbfl_convert_filter *dest);
+};
+
/*
* encoding
*/
@@ -138,6 +148,8 @@ typedef struct _mbfl_encoding {
const char *(*aliases)[];
const unsigned char *mblen_table;
unsigned int flag;
+ const struct mbfl_convert_vtbl *input_filter;
+ const struct mbfl_convert_vtbl *output_filter;
} mbfl_encoding;
MBFLAPI extern const mbfl_encoding * mbfl_name2encoding(const char *name);
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c b/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c
index eae05953b2..bfa477fa06 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c
@@ -36,6 +36,7 @@
#include <stddef.h>
#endif
+#include <string.h>
#include "mbfl_allocators.h"
#include "mbfl_string.h"
#include "mbfl_memory_device.h"
@@ -44,18 +45,18 @@
* memory device output functions
*/
void
-mbfl_memory_device_init(mbfl_memory_device *device, int initsz, int allocsz)
+mbfl_memory_device_init(mbfl_memory_device *device, size_t initsz, size_t allocsz)
{
if (device) {
device->length = 0;
- device->buffer = (unsigned char *)0;
+ device->buffer = NULL;
if (initsz > 0) {
- device->buffer = (unsigned char *)mbfl_malloc(initsz*sizeof(unsigned char));
+ device->buffer = (unsigned char *)mbfl_malloc(initsz);
if (device->buffer != NULL) {
device->length = initsz;
}
}
- device->pos= 0;
+ device->pos = 0;
if (allocsz > MBFL_MEMORY_DEVICE_ALLOC_SIZE) {
device->allocsz = allocsz;
} else {
@@ -65,13 +66,13 @@ mbfl_memory_device_init(mbfl_memory_device *device, int initsz, int allocsz)
}
void
-mbfl_memory_device_realloc(mbfl_memory_device *device, int initsz, int allocsz)
+mbfl_memory_device_realloc(mbfl_memory_device *device, size_t initsz, size_t allocsz)
{
unsigned char *tmp;
if (device) {
if (initsz > device->length) {
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, initsz*sizeof(unsigned char));
+ tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, initsz);
if (tmp != NULL) {
device->buffer = tmp;
device->length = initsz;
@@ -92,7 +93,7 @@ mbfl_memory_device_clear(mbfl_memory_device *device)
if (device->buffer) {
mbfl_free(device->buffer);
}
- device->buffer = (unsigned char *)0;
+ device->buffer = NULL;
device->length = 0;
device->pos = 0;
}
@@ -119,9 +120,9 @@ mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result)
{
if (device && result) {
result->len = device->pos;
- mbfl_memory_device_output4('\0', device);
+ mbfl_memory_device_output('\0', device);
result->val = device->buffer;
- device->buffer = (unsigned char *)0;
+ device->buffer = NULL;
device->length = 0;
device->pos= 0;
if (result->val == NULL) {
@@ -142,15 +143,16 @@ mbfl_memory_device_output(int c, void *data)
if (device->pos >= device->length) {
/* reallocate buffer */
- int newlen;
+ size_t newlen;
unsigned char *tmp;
- newlen = device->length + device->allocsz;
- if (newlen <= 0) {
+ if (device->length > SIZE_MAX - device->allocsz) {
/* overflow */
return -1;
}
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen*sizeof(unsigned char));
+
+ newlen = device->length + device->allocsz;
+ tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen);
if (tmp == NULL) {
return -1;
}
@@ -167,17 +169,18 @@ mbfl_memory_device_output2(int c, void *data)
{
mbfl_memory_device *device = (mbfl_memory_device *)data;
- if ((device->pos + 2) >= device->length) {
+ if (2 > device->length - device->pos) {
/* reallocate buffer */
- int newlen;
+ size_t newlen;
unsigned char *tmp;
- newlen = device->length + device->allocsz;
- if (newlen <= 0) {
+ if (device->length > SIZE_MAX - device->allocsz) {
/* overflow */
return -1;
}
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen*sizeof(unsigned char));
+
+ newlen = device->length + device->allocsz;
+ tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen);
if (tmp == NULL) {
return -1;
}
@@ -196,17 +199,18 @@ mbfl_memory_device_output4(int c, void* data)
{
mbfl_memory_device *device = (mbfl_memory_device *)data;
- if ((device->pos + 4) >= device->length) {
+ if (4 > device->length - device->pos) {
/* reallocate buffer */
- int newlen;
+ size_t newlen;
unsigned char *tmp;
- newlen = device->length + device->allocsz;
- if (newlen <= 0) {
+ if (device->length > SIZE_MAX - device->allocsz) {
/* overflow */
return -1;
}
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen*sizeof(unsigned char));
+
+ newlen = device->length + device->allocsz;
+ tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen);
if (tmp == NULL) {
return -1;
}
@@ -225,114 +229,53 @@ mbfl_memory_device_output4(int c, void* data)
int
mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc)
{
- int len;
- unsigned char *w;
- const unsigned char *p;
-
- len = 0;
- p = (const unsigned char*)psrc;
- while (*p) {
- p++;
- len++;
- }
-
- if ((device->pos + len) >= device->length) {
- /* reallocate buffer */
- int newlen = device->length + (len + MBFL_MEMORY_DEVICE_ALLOC_SIZE)*sizeof(unsigned char);
- unsigned char *tmp;
- if (newlen <= 0) {
- /* overflow */
- return -1;
- }
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen*sizeof(unsigned char));
- if (tmp == NULL) {
- return -1;
- }
- device->length = newlen;
- device->buffer = tmp;
- }
-
- p = (const unsigned char*)psrc;
- w = &device->buffer[device->pos];
- device->pos += len;
- while (len > 0) {
- *w++ = *p++;
- len--;
- }
-
- return len;
+ return mbfl_memory_device_strncat(device, psrc, strlen(psrc));
}
int
-mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, int len)
+mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, size_t len)
{
unsigned char *w;
- if ((device->pos + len) >= device->length) {
+ if (len > device->length - device->pos) {
/* reallocate buffer */
- int newlen = device->length + len + MBFL_MEMORY_DEVICE_ALLOC_SIZE;
+ size_t newlen;
unsigned char *tmp;
- if (newlen <= 0) {
+
+ if (len > SIZE_MAX - MBFL_MEMORY_DEVICE_ALLOC_SIZE
+ || device->length > SIZE_MAX - (len + MBFL_MEMORY_DEVICE_ALLOC_SIZE)) {
/* overflow */
return -1;
}
- tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen*sizeof(unsigned char));
+
+ newlen = device->length + len + MBFL_MEMORY_DEVICE_ALLOC_SIZE;
+ tmp = (unsigned char *)mbfl_realloc((void *)device->buffer, newlen);
if (tmp == NULL) {
return -1;
}
+
device->length = newlen;
device->buffer = tmp;
}
w = &device->buffer[device->pos];
+ memcpy(w, psrc, len);
device->pos += len;
- while (len > 0) {
- *w++ = *psrc++;
- len--;
- }
- return len;
+ return 0;
}
int
mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src)
{
- int n;
- unsigned char *p, *w;
-
- if ((dest->pos + src->pos) >= dest->length) {
- /* reallocate buffer */
- int newlen = dest->length + src->pos + MBFL_MEMORY_DEVICE_ALLOC_SIZE;
- unsigned char *tmp;
- if (newlen <= 0) {
- /* overflow */
- return -1;
- }
- tmp = (unsigned char *)mbfl_realloc((void *)dest->buffer, newlen*sizeof(unsigned char));
- if (tmp == NULL) {
- return -1;
- }
- dest->length = newlen;
- dest->buffer = tmp;
- }
-
- p = src->buffer;
- w = &dest->buffer[dest->pos];
- n = src->pos;
- dest->pos += n;
- while (n > 0) {
- *w++ = *p++;
- n--;
- }
-
- return n;
+ return mbfl_memory_device_strncat(dest, (const char *) src->buffer, src->pos);
}
void
mbfl_wchar_device_init(mbfl_wchar_device *device)
{
if (device) {
- device->buffer = (unsigned int *)0;
+ device->buffer = NULL;
device->length = 0;
device->pos= 0;
device->allocsz = MBFL_MEMORY_DEVICE_ALLOC_SIZE;
@@ -346,7 +289,7 @@ mbfl_wchar_device_clear(mbfl_wchar_device *device)
if (device->buffer) {
mbfl_free(device->buffer);
}
- device->buffer = (unsigned int*)0;
+ device->buffer = NULL;
device->length = 0;
device->pos = 0;
}
@@ -359,14 +302,20 @@ mbfl_wchar_device_output(int c, void *data)
if (device->pos >= device->length) {
/* reallocate buffer */
- int newlen;
+ size_t newlen;
unsigned int *tmp;
+ if (device->length > SIZE_MAX - device->allocsz) {
+ /* overflow */
+ return -1;
+ }
+
newlen = device->length + device->allocsz;
- if (newlen <= 0) {
+ if (newlen > SIZE_MAX / sizeof(int)) {
/* overflow */
return -1;
}
+
tmp = (unsigned int *)mbfl_realloc((void *)device->buffer, newlen*sizeof(int));
if (tmp == NULL) {
return -1;
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h b/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h
index 1f753d197f..d85a10fb28 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h
@@ -38,29 +38,33 @@
typedef struct _mbfl_memory_device {
unsigned char *buffer;
- int length;
- int pos;
- int allocsz;
+ size_t length;
+ size_t pos;
+ size_t allocsz;
} mbfl_memory_device;
typedef struct _mbfl_wchar_device {
unsigned int *buffer;
- int length;
- int pos;
- int allocsz;
+ size_t length;
+ size_t pos;
+ size_t allocsz;
} mbfl_wchar_device;
-MBFLAPI extern void mbfl_memory_device_init(mbfl_memory_device *device, int initsz, int allocsz);
-MBFLAPI extern void mbfl_memory_device_realloc(mbfl_memory_device *device, int initsz, int allocsz);
+MBFLAPI extern void mbfl_memory_device_init(
+ mbfl_memory_device *device, size_t initsz, size_t allocsz);
+MBFLAPI extern void mbfl_memory_device_realloc(
+ mbfl_memory_device *device, size_t initsz, size_t allocsz);
MBFLAPI extern void mbfl_memory_device_clear(mbfl_memory_device *device);
MBFLAPI extern void mbfl_memory_device_reset(mbfl_memory_device *device);
-MBFLAPI extern mbfl_string * mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result);
+MBFLAPI extern mbfl_string * mbfl_memory_device_result(
+ mbfl_memory_device *device, mbfl_string *result);
MBFLAPI extern void mbfl_memory_device_unput(mbfl_memory_device *device);
MBFLAPI extern int mbfl_memory_device_output(int c, void *data);
MBFLAPI extern int mbfl_memory_device_output2(int c, void *data);
MBFLAPI extern int mbfl_memory_device_output4(int c, void *data);
MBFLAPI extern int mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc);
-MBFLAPI extern int mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, int len);
+MBFLAPI extern int mbfl_memory_device_strncat(
+ mbfl_memory_device *device, const char *psrc, size_t len);
MBFLAPI extern int mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src);
MBFLAPI extern void mbfl_wchar_device_init(mbfl_wchar_device *device);
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_string.c b/ext/mbstring/libmbfl/mbfl/mbfl_string.c
index c9c670373d..6b3dcacf32 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_string.c
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_string.c
@@ -38,6 +38,7 @@
#include "mbfl_allocators.h"
#include "mbfl_string.h"
+#include "mbfilter_pass.h"
/*
* string object
@@ -47,18 +48,18 @@ mbfl_string_init(mbfl_string *string)
{
if (string) {
string->no_language = mbfl_no_language_uni;
- string->no_encoding = mbfl_no_encoding_pass;
+ string->encoding = &mbfl_encoding_pass;
string->val = (unsigned char*)NULL;
string->len = 0;
}
}
void
-mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding)
+mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, const mbfl_encoding *encoding)
{
if (string) {
string->no_language = no_language;
- string->no_encoding = no_encoding;
+ string->encoding = encoding;
string->val = (unsigned char*)NULL;
string->len = 0;
}
diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_string.h b/ext/mbstring/libmbfl/mbfl/mbfl_string.h
index 560944737e..43f4a5fa75 100644
--- a/ext/mbstring/libmbfl/mbfl/mbfl_string.h
+++ b/ext/mbstring/libmbfl/mbfl/mbfl_string.h
@@ -31,6 +31,7 @@
#ifndef MBFL_STRING_H
#define MBFL_STRING_H
+#include <stddef.h>
#include "mbfl_defs.h"
#include "mbfl_encoding.h"
#include "mbfl_language.h"
@@ -40,13 +41,13 @@
*/
typedef struct _mbfl_string {
enum mbfl_no_language no_language;
- enum mbfl_no_encoding no_encoding;
+ const mbfl_encoding *encoding;
unsigned char *val;
- unsigned int len;
+ size_t len;
} mbfl_string;
MBFLAPI extern void mbfl_string_init(mbfl_string *string);
-MBFLAPI extern void mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, mbfl_encoding_id no_encoding);
+MBFLAPI extern void mbfl_string_init_set(mbfl_string *string, mbfl_language_id no_language, const mbfl_encoding *encoding);
MBFLAPI extern void mbfl_string_clear(mbfl_string *string);
#ifndef NULL
diff --git a/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk b/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk
index d93384f9d2..e5223a432a 100644
--- a/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk
+++ b/ext/mbstring/libmbfl/mbfl/mk_eaw_tbl.awk
@@ -1,7 +1,5 @@
#!/usr/bin/awk -f
#
-# $Id$
-#
# Description: a script to generate east asian width table.
#
diff --git a/ext/mbstring/libmbfl/nls/Makefile.am b/ext/mbstring/libmbfl/nls/Makefile.am
deleted file mode 100644
index a9f987b337..0000000000
--- a/ext/mbstring/libmbfl/nls/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-noinst_LTLIBRARIES=libmbfl_nls.la
-INCLUDES=-I../mbfl
-libmbfl_nls_la_LDFLAGS=-version-info $(SHLIB_VERSION)
-libmbfl_nls_la_SOURCES=nls_ja.c \
- nls_de.c \
- nls_en.c \
- nls_hy.c \
- nls_tr.c \
- nls_kr.c \
- nls_ru.c \
- nls_ua.c \
- nls_zh.c \
- nls_uni.c \
- nls_neutral.c \
- nls_ja.h \
- nls_de.h \
- nls_en.h \
- nls_hy.h \
- nls_tr.h \
- nls_kr.h \
- nls_ru.h \
- nls_ua.h \
- nls_zh.h \
- nls_uni.h \
- nls_neutral.h
diff --git a/ext/mbstring/libmbfl/tests/Makefile.am b/ext/mbstring/libmbfl/tests/Makefile.am
deleted file mode 100644
index 8e857bc22e..0000000000
--- a/ext/mbstring/libmbfl/tests/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-SUBDIRS=conv_encoding.tests conv_kana.tests strwidth.tests strcut.tests
-noinst_PROGRAMS=conv_encoding conv_kana strwidth strcut
-conv_encoding_SOURCES=conv_encoding.c
-conv_encoding_LDADD=../mbfl/libmbfl.la
-conv_kana_SOURCES=conv_kana.c
-conv_kana_LDADD=../mbfl/libmbfl.la
-strwidth_SOURCES=strwidth.c
-strwidth_LDADD=../mbfl/libmbfl.la
-strcut_SOURCES=strcut.c
-strcut_LDADD=../mbfl/libmbfl.la
diff --git a/ext/mbstring/libmbfl/tests/conv_encoding.tests/Makefile.am b/ext/mbstring/libmbfl/tests/conv_encoding.tests/Makefile.am
deleted file mode 100644
index 6a626bd5af..0000000000
--- a/ext/mbstring/libmbfl/tests/conv_encoding.tests/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-EXTRA_DIST=\
- cp51932_cp50220raw.exp\
- ujis_sjis.exp\
- utf8_sjis.exp\
- yensign.exp
-noinst_PROGRAMS=gen_exp
-gen_exp_SOURCES=gen_exp.c
-CLEANFILES=\
- uni_to_cp932.exp\
- uni_to_cp50220.exp\
- uni_to_cp50222.exp\
- cp932_to_uni.exp
-
-CP932.TXT:
- $(FETCH_VIA_FTP) ftp://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
-
-cp932_to_uni.exp: gen_exp CP932.TXT
- ./gen_exp from_cp932 > "$@"
-
-uni_to_cp932.exp: gen_exp CP932.TXT
- ./gen_exp to_cp932 > "$@"
-
-uni_to_cp50220.exp: gen_exp CP932.TXT
- ./gen_exp to_cp50220 > "$@"
-
-uni_to_cp50222.exp: gen_exp CP932.TXT
- ./gen_exp to_cp50222 > "$@"
-
-check-local: uni_to_cp932.exp uni_to_cp50220.exp uni_to_cp50222.exp
-
-.PHONY: check-local
diff --git a/ext/mbstring/libmbfl/tests/conv_kana.tests/Makefile.am b/ext/mbstring/libmbfl/tests/conv_kana.tests/Makefile.am
deleted file mode 100644
index 37713c3952..0000000000
--- a/ext/mbstring/libmbfl/tests/conv_kana.tests/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST=*.exp
diff --git a/ext/mbstring/libmbfl/tests/strcut.tests/Makefile.am b/ext/mbstring/libmbfl/tests/strcut.tests/Makefile.am
deleted file mode 100644
index 37713c3952..0000000000
--- a/ext/mbstring/libmbfl/tests/strcut.tests/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST=*.exp
diff --git a/ext/mbstring/libmbfl/tests/strwidth.tests/Makefile.am b/ext/mbstring/libmbfl/tests/strwidth.tests/Makefile.am
deleted file mode 100644
index 37713c3952..0000000000
--- a/ext/mbstring/libmbfl/tests/strwidth.tests/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_DIST=*.exp
diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c
index c79961027c..08b6e2b0a5 100644
--- a/ext/mbstring/mb_gpc.c
+++ b/ext/mbstring/mb_gpc.c
@@ -17,8 +17,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
/* {{{ includes */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -196,16 +194,16 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
const char *s1, *s2;
char *strtok_buf = NULL, **val_list = NULL;
zval *array_ptr = (zval *) arg;
- int n, num, *len_list = NULL;
+ size_t n, num, *len_list = NULL;
size_t val_len, new_val_len;
mbfl_string string, resvar, resval;
const mbfl_encoding *from_encoding = NULL;
mbfl_encoding_detector *identd = NULL;
mbfl_buffer_converter *convd = NULL;
- mbfl_string_init_set(&string, info->to_language, info->to_encoding->no_encoding);
- mbfl_string_init_set(&resvar, info->to_language, info->to_encoding->no_encoding);
- mbfl_string_init_set(&resval, info->to_language, info->to_encoding->no_encoding);
+ mbfl_string_init_set(&string, info->to_language, info->to_encoding);
+ mbfl_string_init_set(&resvar, info->to_language, info->to_encoding);
+ mbfl_string_init_set(&resval, info->to_language, info->to_encoding);
if (!res || *res == '\0') {
goto out;
@@ -225,7 +223,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
num *= 2; /* need space for variable name and value */
val_list = (char **)ecalloc(num, sizeof(char *));
- len_list = (int *)ecalloc(num, sizeof(int));
+ len_list = (size_t *)ecalloc(num, sizeof(size_t));
/* split and decode the query */
n = 0;
@@ -253,7 +251,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
var = php_strtok_r(NULL, info->separator, &strtok_buf);
}
- if (n > (PG(max_input_vars) * 2)) {
+ if (ZEND_SIZE_T_GT_ZEND_LONG(n, (PG(max_input_vars) * 2))) {
php_error_docref(NULL, E_WARNING, "Input variables exceeded " ZEND_LONG_FMT ". To increase the limit change max_input_vars in php.ini.", PG(max_input_vars));
goto out;
}
@@ -261,14 +259,14 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
num = n; /* make sure to process initialized vars only */
/* initialize converter */
- if (info->num_from_encodings <= 0) {
+ if (info->num_from_encodings == 0) {
from_encoding = &mbfl_encoding_pass;
} else if (info->num_from_encodings == 1) {
from_encoding = info->from_encodings[0];
} else {
/* auto detect */
from_encoding = NULL;
- identd = mbfl_encoding_detector_new2(info->from_encodings, info->num_from_encodings, MBSTRG(strict_detection));
+ identd = mbfl_encoding_detector_new(info->from_encodings, info->num_from_encodings, MBSTRG(strict_detection));
if (identd != NULL) {
n = 0;
while (n < num) {
@@ -279,7 +277,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
}
n++;
}
- from_encoding = mbfl_encoding_detector_judge2(identd);
+ from_encoding = mbfl_encoding_detector_judge(identd);
mbfl_encoding_detector_delete(identd);
}
if (!from_encoding) {
@@ -292,7 +290,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
convd = NULL;
if (from_encoding != &mbfl_encoding_pass) {
- convd = mbfl_buffer_converter_new2(from_encoding, info->to_encoding, 0);
+ convd = mbfl_buffer_converter_new(from_encoding, info->to_encoding, 0);
if (convd != NULL) {
mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode));
mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar));
@@ -305,7 +303,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i
}
/* convert encoding */
- string.no_encoding = from_encoding->no_encoding;
+ string.encoding = from_encoding;
n = 0;
while (n < num) {
@@ -379,7 +377,7 @@ SAPI_POST_HANDLER_FUNC(php_mb_post_handler)
post_data_str = php_stream_copy_to_mem(SG(request_info).request_body, PHP_STREAM_COPY_ALL, 0);
detected = _php_mb_encoding_handler_ex(&info, arg, post_data_str ? ZSTR_VAL(post_data_str) : NULL);
if (post_data_str) {
- zend_string_release(post_data_str);
+ zend_string_release_ex(post_data_str, 0);
}
MBSTRG(http_input_identify) = detected;
diff --git a/ext/mbstring/mb_gpc.h b/ext/mbstring/mb_gpc.h
index 3f3900a980..5ce1e1e05b 100644
--- a/ext/mbstring/mb_gpc.h
+++ b/ext/mbstring/mb_gpc.h
@@ -17,8 +17,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
/* {{{ includes */
#ifdef HAVE_CONFIG_H
#include "config.h"
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 9973313985..0e255e98d2 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -14,36 +14,11 @@
+----------------------------------------------------------------------+
| Author: Tsukada Takuya <tsukada@fminn.nagano.nagano.jp> |
| Rui Hirokawa <hirokawa@php.net> |
+ | Hironori Sato <satoh@jpnnet.com> |
+ | Shigeru Kanemoto <sgk@happysize.co.jp> |
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
-/*
- * PHP 4 Multibyte String module "mbstring"
- *
- * History:
- * 2000.5.19 Release php-4.0RC2_jstring-1.0
- * 2001.4.1 Release php4_jstring-1.0.91
- * 2001.4.30 Release php4_jstring-1.1 (contribute to The PHP Group)
- * 2001.5.1 Renamed from jstring to mbstring (hirokawa@php.net)
- */
-
-/*
- * PHP3 Internationalization support program.
- *
- * Copyright (c) 1999,2000 by the PHP3 internationalization team.
- * All rights reserved.
- *
- * See README_PHP3-i18n-ja for more detail.
- *
- * Authors:
- * Hironori Sato <satoh@jpnnet.com>
- * Shigeru Kanemoto <sgk@happysize.co.jp>
- * Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
- * Rui Hirokawa <rui_hirokawa@ybb.ne.jp>
- */
-
/* {{{ includes */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -61,7 +36,14 @@
#include "ext/standard/info.h"
#include "libmbfl/mbfl/mbfl_allocators.h"
+#include "libmbfl/mbfl/mbfilter_8bit.h"
#include "libmbfl/mbfl/mbfilter_pass.h"
+#include "libmbfl/mbfl/mbfilter_wchar.h"
+#include "libmbfl/filters/mbfilter_ascii.h"
+#include "libmbfl/filters/mbfilter_base64.h"
+#include "libmbfl/filters/mbfilter_qprint.h"
+#include "libmbfl/filters/mbfilter_ucs4.h"
+#include "libmbfl/filters/mbfilter_utf8.h"
#include "php_variables.h"
#include "php_globals.h"
@@ -534,7 +516,7 @@ ZEND_END_ARG_INFO()
/* }}} */
/* {{{ zend_function_entry mbstring_functions[] */
-const zend_function_entry mbstring_functions[] = {
+static const zend_function_entry mbstring_functions[] = {
PHP_FE(mb_convert_case, arginfo_mb_convert_case)
PHP_FE(mb_strtoupper, arginfo_mb_strtoupper)
PHP_FE(mb_strtolower, arginfo_mb_strtolower)
@@ -604,7 +586,7 @@ zend_module_entry mbstring_module_entry = {
/* }}} */
/* {{{ static sapi_post_entry php_post_entries[] */
-static sapi_post_entry php_post_entries[] = {
+static const sapi_post_entry php_post_entries[] = {
{ DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_std_post_handler },
{ MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
{ NULL, 0, NULL, NULL }
@@ -647,17 +629,17 @@ static char *get_output_encoding(void) {
/* {{{ allocators */
-static void *_php_mb_allocators_malloc(unsigned int sz)
+static void *_php_mb_allocators_malloc(size_t sz)
{
return emalloc(sz);
}
-static void *_php_mb_allocators_realloc(void *ptr, unsigned int sz)
+static void *_php_mb_allocators_realloc(void *ptr, size_t sz)
{
return erealloc(ptr, sz);
}
-static void *_php_mb_allocators_calloc(unsigned int nelems, unsigned int szelem)
+static void *_php_mb_allocators_calloc(size_t nelems, size_t szelem)
{
return ecalloc(nelems, szelem);
}
@@ -667,12 +649,12 @@ static void _php_mb_allocators_free(void *ptr)
efree(ptr);
}
-static void *_php_mb_allocators_pmalloc(unsigned int sz)
+static void *_php_mb_allocators_pmalloc(size_t sz)
{
return pemalloc(sz, 1);
}
-static void *_php_mb_allocators_prealloc(void *ptr, unsigned int sz)
+static void *_php_mb_allocators_prealloc(void *ptr, size_t sz)
{
return perealloc(ptr, sz, 1);
}
@@ -682,7 +664,7 @@ static void _php_mb_allocators_pfree(void *ptr)
pefree(ptr, 1);
}
-static mbfl_allocators _php_mb_allocators = {
+static const mbfl_allocators _php_mb_allocators = {
_php_mb_allocators_malloc,
_php_mb_allocators_realloc,
_php_mb_allocators_calloc,
@@ -694,13 +676,38 @@ static mbfl_allocators _php_mb_allocators = {
/* }}} */
/* {{{ static sapi_post_entry mbstr_post_entries[] */
-static sapi_post_entry mbstr_post_entries[] = {
+static const sapi_post_entry mbstr_post_entries[] = {
{ DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_mb_post_handler },
{ MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
{ NULL, 0, NULL, NULL }
};
/* }}} */
+static const mbfl_encoding *php_mb_get_encoding(const char *encoding_name) {
+ if (encoding_name) {
+ const mbfl_encoding *encoding;
+ if (MBSTRG(last_used_encoding_name)
+ && !strcasecmp(encoding_name, MBSTRG(last_used_encoding_name))) {
+ return MBSTRG(last_used_encoding);
+ }
+
+ encoding = mbfl_name2encoding(encoding_name);
+ if (!encoding) {
+ php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encoding_name);
+ return NULL;
+ }
+
+ if (MBSTRG(last_used_encoding_name)) {
+ efree(MBSTRG(last_used_encoding_name));
+ }
+ MBSTRG(last_used_encoding_name) = estrdup(encoding_name);
+ MBSTRG(last_used_encoding) = encoding;
+ return encoding;
+ } else {
+ return MBSTRG(current_internal_encoding);
+ }
+}
+
/* {{{ static int php_mb_parse_encoding_list()
* Return FAILURE if input contains any illegal encoding, otherwise SUCCESS.
* Even if any illegal encoding is detected the result may contain a list
@@ -715,7 +722,7 @@ php_mb_parse_encoding_list(const char *value, size_t value_length, const mbfl_en
const mbfl_encoding **entry, **list;
list = NULL;
- if (value == NULL || value_length <= 0) {
+ if (value == NULL || value_length == 0) {
if (return_list) {
*return_list = NULL;
}
@@ -817,8 +824,9 @@ php_mb_parse_encoding_array(zval *array, const mbfl_encoding ***return_list, siz
{
zval *hash_entry;
HashTable *target_hash;
- int i, n, size, bauto, ret = SUCCESS;
+ int i, n, bauto, ret = SUCCESS;
const mbfl_encoding **list, **entry;
+ size_t size;
list = NULL;
if (Z_TYPE_P(array) == IS_ARRAY) {
@@ -912,28 +920,29 @@ static const zend_encoding *php_mb_zend_encoding_detector(const unsigned char *a
string.no_language = MBSTRG(language);
string.val = (unsigned char *)arg_string;
string.len = arg_length;
- return (const zend_encoding *) mbfl_identify_encoding2(&string, (const mbfl_encoding **)list, list_size, 0);
+ return (const zend_encoding *) mbfl_identify_encoding(&string, (const mbfl_encoding **)list, list_size, 0);
}
static size_t php_mb_zend_encoding_converter(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length, const zend_encoding *encoding_to, const zend_encoding *encoding_from)
{
mbfl_string string, result;
mbfl_buffer_converter *convd;
- int status, loc;
+ int status;
+ size_t loc;
/* new encoding */
/* initialize string */
mbfl_string_init(&string);
mbfl_string_init(&result);
- string.no_encoding = ((const mbfl_encoding*)encoding_from)->no_encoding;
+ string.encoding = (const mbfl_encoding*)encoding_from;
string.no_language = MBSTRG(language);
string.val = (unsigned char*)from;
string.len = from_length;
/* initialize converter */
- convd = mbfl_buffer_converter_new2((const mbfl_encoding *)encoding_from, (const mbfl_encoding *)encoding_to, string.len);
+ convd = mbfl_buffer_converter_new((const mbfl_encoding *)encoding_from, (const mbfl_encoding *)encoding_to, string.len);
if (convd == NULL) {
- return -1;
+ return (size_t) -1;
}
mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode));
@@ -1034,13 +1043,15 @@ static void _php_mb_free_regex(void *opaque)
/* {{{ _php_mb_compile_regex */
static void *_php_mb_compile_regex(const char *pattern)
{
- pcre *retval;
- const char *err_str;
- int err_offset;
+ pcre2_code *retval;
+ PCRE2_SIZE err_offset;
+ int errnum;
- if (!(retval = pcre_compile(pattern,
- PCRE_CASELESS, &err_str, &err_offset, NULL))) {
- php_error_docref(NULL, E_WARNING, "%s (offset=%d): %s", pattern, err_offset, err_str);
+ if (!(retval = pcre2_compile((PCRE2_SPTR)pattern, PCRE2_ZERO_TERMINATED,
+ PCRE2_CASELESS, &errnum, &err_offset, php_pcre_cctx()))) {
+ PCRE2_UCHAR err_str[128];
+ pcre2_get_error_message(errnum, err_str, sizeof(err_str));
+ php_error_docref(NULL, E_WARNING, "%s (offset=%zu): %s", pattern, err_offset, err_str);
}
return retval;
}
@@ -1049,15 +1060,25 @@ static void *_php_mb_compile_regex(const char *pattern)
/* {{{ _php_mb_match_regex */
static int _php_mb_match_regex(void *opaque, const char *str, size_t str_len)
{
- return pcre_exec((pcre *)opaque, NULL, str, (int)str_len, 0,
- 0, NULL, 0) >= 0;
+ int res;
+
+ pcre2_match_data *match_data = php_pcre_create_match_data(0, opaque);
+ if (NULL == match_data) {
+ pcre2_code_free(opaque);
+ php_error_docref(NULL, E_WARNING, "Cannot allocate match data");
+ return FAILURE;
+ }
+ res = pcre2_match(opaque, (PCRE2_SPTR)str, str_len, 0, 0, match_data, php_pcre_mctx()) >= 0;
+ php_pcre_free_match_data(match_data);
+
+ return res;
}
/* }}} */
/* {{{ _php_mb_free_regex */
static void _php_mb_free_regex(void *opaque)
{
- pcre_free(opaque);
+ pcre2_code_free(opaque);
}
/* }}} */
#endif
@@ -1081,11 +1102,11 @@ static int php_mb_nls_get_default_detect_order_list(enum mbfl_no_language lang,
}
/* }}} */
-static char *php_mb_rfc1867_substring_conf(const zend_encoding *encoding, char *start, int len, char quote)
+static char *php_mb_rfc1867_substring_conf(const zend_encoding *encoding, char *start, size_t len, char quote)
{
char *result = emalloc(len + 2);
char *resp = result;
- int i;
+ size_t i;
for (i = 0; i < len && start[i] != quote; ++i) {
if (start[i] == '\\' && (start[i + 1] == '\\' || (quote && start[i + 1] == quote))) {
@@ -1314,7 +1335,7 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output)
/* }}} */
/* {{{ static _php_mb_ini_mbstring_internal_encoding_set */
-int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint32_t new_value_length)
+int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, size_t new_value_length)
{
const mbfl_encoding *encoding;
@@ -1440,7 +1461,7 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes)
if (ZSTR_LEN(tmp) > 0) {
if (!(re = _php_mb_compile_regex(ZSTR_VAL(tmp)))) {
- zend_string_release(tmp);
+ zend_string_release_ex(tmp, 0);
return FAILURE;
}
}
@@ -1451,7 +1472,7 @@ static PHP_INI_MH(OnUpdate_mbstring_http_output_conv_mimetypes)
MBSTRG(http_output_conv_mimetypes) = re;
- zend_string_release(tmp);
+ zend_string_release_ex(tmp, 0);
return SUCCESS;
}
/* }}} */
@@ -1479,7 +1500,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN("mbstring.strict_detection", "0",
PHP_INI_ALL,
- OnUpdateLong,
+ OnUpdateBool,
strict_detection, zend_mbstring_globals, mbstring_globals)
PHP_INI_END()
/* }}} */
@@ -1522,6 +1543,8 @@ ZEND_TSRMLS_CACHE_UPDATE();
#if HAVE_MBREGEX
mbstring_globals->mb_regex_globals = php_mb_regex_globals_alloc();
#endif
+ mbstring_globals->last_used_encoding_name = NULL;
+ mbstring_globals->last_used_encoding = NULL;
}
/* }}} */
@@ -1549,7 +1572,7 @@ PHP_MINIT_FUNCTION(mbstring)
#if defined(COMPILE_DL_MBSTRING) && defined(ZTS)
ZEND_TSRMLS_CACHE_UPDATE();
#endif
- __mbfl_allocators = &_php_mb_allocators;
+ __mbfl_allocators = (mbfl_allocators*)&_php_mb_allocators;
REGISTER_INI_ENTRIES();
@@ -1568,6 +1591,11 @@ ZEND_TSRMLS_CACHE_UPDATE();
REGISTER_LONG_CONSTANT("MB_CASE_UPPER", PHP_UNICODE_CASE_UPPER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MB_CASE_LOWER", PHP_UNICODE_CASE_LOWER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("MB_CASE_TITLE", PHP_UNICODE_CASE_TITLE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MB_CASE_FOLD", PHP_UNICODE_CASE_FOLD, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MB_CASE_UPPER_SIMPLE", PHP_UNICODE_CASE_UPPER_SIMPLE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MB_CASE_LOWER_SIMPLE", PHP_UNICODE_CASE_LOWER_SIMPLE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MB_CASE_TITLE_SIMPLE", PHP_UNICODE_CASE_TITLE_SIMPLE, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("MB_CASE_FOLD_SIMPLE", PHP_UNICODE_CASE_FOLD_SIMPLE, CONST_CS | CONST_PERSISTENT);
#if HAVE_MBREGEX
PHP_MINIT(mb_regex) (INIT_FUNC_ARGS_PASSTHRU);
@@ -1585,6 +1613,39 @@ ZEND_TSRMLS_CACHE_UPDATE();
php_mb_rfc1867_getword_conf,
php_mb_rfc1867_basename);
+ /* override original function (deprecated). */
+ if (MBSTRG(func_overload)){
+ zend_function *func, *orig;
+ const struct mb_overload_def *p;
+ zend_string *str;
+
+ p = &(mb_ovld[0]);
+ while (p->type > 0) {
+ if ((MBSTRG(func_overload) & p->type) == p->type &&
+ !zend_hash_str_exists(CG(function_table), p->save_func, strlen(p->save_func))
+ ) {
+ func = zend_hash_str_find_ptr(CG(function_table), p->ovld_func, strlen(p->ovld_func));
+
+ if ((orig = zend_hash_str_find_ptr(CG(function_table), p->orig_func, strlen(p->orig_func))) == NULL) {
+ php_error_docref("ref.mbstring", E_WARNING, "mbstring couldn't find function %s.", p->orig_func);
+ return FAILURE;
+ } else {
+ ZEND_ASSERT(orig->type == ZEND_INTERNAL_FUNCTION);
+ str = zend_string_init_interned(p->save_func, strlen(p->save_func), 1);
+ zend_hash_add_mem(CG(function_table), str, orig, sizeof(zend_internal_function));
+ zend_string_release_ex(str, 1);
+ function_add_ref(orig);
+
+ str = zend_string_init_interned(p->orig_func, strlen(p->orig_func), 1);
+ zend_hash_update_mem(CG(function_table), str, func, sizeof(zend_internal_function));
+ zend_string_release_ex(str, 1);
+ function_add_ref(func);
+ }
+ }
+ p++;
+ }
+ }
+
return SUCCESS;
}
/* }}} */
@@ -1592,6 +1653,24 @@ ZEND_TSRMLS_CACHE_UPDATE();
/* {{{ PHP_MSHUTDOWN_FUNCTION(mbstring) */
PHP_MSHUTDOWN_FUNCTION(mbstring)
{
+ /* clear overloaded function. */
+ if (MBSTRG(func_overload)){
+ const struct mb_overload_def *p;
+ zend_function *orig;
+
+ p = &(mb_ovld[0]);
+ while (p->type > 0) {
+ if ((MBSTRG(func_overload) & p->type) == p->type &&
+ (orig = zend_hash_str_find_ptr(CG(function_table), p->save_func, strlen(p->save_func)))) {
+
+ zend_hash_str_update_mem(CG(function_table), p->orig_func, strlen(p->orig_func), orig, sizeof(zend_internal_function));
+ function_add_ref(orig);
+ zend_hash_str_del(CG(function_table), p->save_func, strlen(p->save_func));
+ }
+ p++;
+ }
+ }
+
UNREGISTER_INI_ENTRIES();
zend_multibyte_restore_functions();
@@ -1607,9 +1686,6 @@ PHP_MSHUTDOWN_FUNCTION(mbstring)
/* {{{ PHP_RINIT_FUNCTION(mbstring) */
PHP_RINIT_FUNCTION(mbstring)
{
- zend_function *func, *orig;
- const struct mb_overload_def *p;
-
MBSTRG(current_internal_encoding) = MBSTRG(internal_encoding);
MBSTRG(current_http_output_encoding) = MBSTRG(http_output_encoding);
MBSTRG(current_filter_illegal_mode) = MBSTRG(filter_illegal_mode);
@@ -1619,36 +1695,11 @@ PHP_RINIT_FUNCTION(mbstring)
php_mb_populate_current_detect_order_list();
- /* override original function. */
+ /* override original function. */
if (MBSTRG(func_overload)){
zend_error(E_DEPRECATED, "The mbstring.func_overload directive is deprecated");
- p = &(mb_ovld[0]);
CG(compiler_options) |= ZEND_COMPILE_NO_BUILTIN_STRLEN;
- while (p->type > 0) {
- if ((MBSTRG(func_overload) & p->type) == p->type &&
- !zend_hash_str_exists(EG(function_table), p->save_func, strlen(p->save_func))
- ) {
- func = zend_hash_str_find_ptr(EG(function_table), p->ovld_func, strlen(p->ovld_func));
-
- if ((orig = zend_hash_str_find_ptr(EG(function_table), p->orig_func, strlen(p->orig_func))) == NULL) {
- php_error_docref("ref.mbstring", E_WARNING, "mbstring couldn't find function %s.", p->orig_func);
- return FAILURE;
- } else {
- ZEND_ASSERT(orig->type == ZEND_INTERNAL_FUNCTION);
- zend_hash_str_add_mem(EG(function_table), p->save_func, strlen(p->save_func), orig, sizeof(zend_internal_function));
- function_add_ref(orig);
-
- if (zend_hash_str_update_mem(EG(function_table), p->orig_func, strlen(p->orig_func), func, sizeof(zend_internal_function)) == NULL) {
- php_error_docref("ref.mbstring", E_WARNING, "mbstring couldn't replace function %s.", p->orig_func);
- return FAILURE;
- }
-
- function_add_ref(func);
- }
- }
- p++;
- }
}
#if HAVE_MBREGEX
PHP_RINIT(mb_regex) (INIT_FUNC_ARGS_PASSTHRU);
@@ -1662,9 +1713,6 @@ PHP_RINIT_FUNCTION(mbstring)
/* {{{ PHP_RSHUTDOWN_FUNCTION(mbstring) */
PHP_RSHUTDOWN_FUNCTION(mbstring)
{
- const struct mb_overload_def *p;
- zend_function *orig;
-
if (MBSTRG(current_detect_order_list) != NULL) {
efree(MBSTRG(current_detect_order_list));
MBSTRG(current_detect_order_list) = NULL;
@@ -1683,20 +1731,9 @@ PHP_RSHUTDOWN_FUNCTION(mbstring)
MBSTRG(http_input_identify_cookie) = NULL;
MBSTRG(http_input_identify_string) = NULL;
- /* clear overloaded function. */
- if (MBSTRG(func_overload)){
- p = &(mb_ovld[0]);
- while (p->type > 0) {
- if ((MBSTRG(func_overload) & p->type) == p->type &&
- (orig = zend_hash_str_find_ptr(EG(function_table), p->save_func, strlen(p->save_func)))) {
-
- zend_hash_str_update_mem(EG(function_table), p->orig_func, strlen(p->orig_func), orig, sizeof(zend_internal_function));
- function_add_ref(orig);
- zend_hash_str_del(EG(function_table), p->save_func, strlen(p->save_func));
- }
- p++;
- }
- CG(compiler_options) &= ~ZEND_COMPILE_NO_BUILTIN_STRLEN;
+ if (MBSTRG(last_used_encoding_name)) {
+ efree(MBSTRG(last_used_encoding_name));
+ MBSTRG(last_used_encoding_name) = NULL;
}
#if HAVE_MBREGEX
@@ -1759,7 +1796,7 @@ PHP_FUNCTION(mb_language)
} else {
RETVAL_TRUE;
}
- zend_string_release(ini_name);
+ zend_string_release_ex(ini_name, 0);
}
}
/* }}} */
@@ -1975,7 +2012,7 @@ PHP_FUNCTION(mb_detect_order)
}
/* }}} */
-static inline int php_mb_check_code_point(long cp)
+static inline int php_mb_check_code_point(zend_long cp)
{
if (cp <= 0 || cp >= 0x110000) {
/* Out of Unicode range */
@@ -2100,7 +2137,7 @@ PHP_FUNCTION(mb_parse_str)
if (track_vars_array != NULL) {
/* Clear out the array */
- zval_dtor(track_vars_array);
+ zval_ptr_dtor(track_vars_array);
array_init(track_vars_array);
}
@@ -2151,7 +2188,8 @@ PHP_FUNCTION(mb_output_handler)
const char *charset;
char *p;
const mbfl_encoding *encoding;
- int last_feed, len;
+ int last_feed;
+ size_t len;
unsigned char send_text_mimetype = 0;
char *s, *mimetype = NULL;
@@ -2199,7 +2237,7 @@ PHP_FUNCTION(mb_output_handler)
}
}
/* activate the converter */
- MBSTRG(outconv) = mbfl_buffer_converter_new2(MBSTRG(current_internal_encoding), encoding, 0);
+ MBSTRG(outconv) = mbfl_buffer_converter_new(MBSTRG(current_internal_encoding), encoding, 0);
if (send_text_mimetype){
efree(mimetype);
}
@@ -2221,7 +2259,7 @@ PHP_FUNCTION(mb_output_handler)
mbfl_string_init(&string);
/* these are not needed. convd has encoding info.
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.encoding = MBSTRG(current_internal_encoding);
*/
string.val = (unsigned char *)arg_string;
string.len = arg_string_len;
@@ -2248,37 +2286,29 @@ PHP_FUNCTION(mb_output_handler)
Get character numbers of a string */
PHP_FUNCTION(mb_strlen)
{
- int n;
+ size_t n;
mbfl_string string;
- char *enc_name = NULL;
- size_t enc_name_len, string_len;
+ char *str, *enc_name = NULL;
+ size_t str_len, enc_name_len;
mbfl_string_init(&string);
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s", (char **)&string.val, &string_len, &enc_name, &enc_name_len) == FAILURE) {
- return;
- }
-
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
+ ZEND_PARSE_PARAMETERS_START(1, 2)
+ Z_PARAM_STRING(str, str_len)
+ Z_PARAM_OPTIONAL
+ Z_PARAM_STRING(enc_name, enc_name_len)
+ ZEND_PARSE_PARAMETERS_END();
+ string.val = (unsigned char *) str;
+ string.len = str_len;
string.no_language = MBSTRG(language);
- if (enc_name == NULL) {
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- } else {
- string.no_encoding = mbfl_name2no_encoding(enc_name);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
+ string.encoding = php_mb_get_encoding(enc_name);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
n = mbfl_strlen(&string);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -2290,57 +2320,43 @@ PHP_FUNCTION(mb_strlen)
Find position of first occurrence of a string within another */
PHP_FUNCTION(mb_strpos)
{
- int n, reverse = 0;
- zend_long offset = 0, slen;
+ int reverse = 0;
+ zend_long offset = 0;
mbfl_string haystack, needle;
char *enc_name = NULL;
- size_t enc_name_len, haystack_len, needle_len;
+ size_t enc_name_len, n;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &offset, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
+ if (!haystack.encoding) {
+ RETURN_FALSE;
}
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
- if (enc_name != NULL) {
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(enc_name);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
+ if (offset != 0) {
+ size_t slen = mbfl_strlen(&haystack);
+ if (offset < 0) {
+ offset += slen;
+ }
+ if (offset < 0 || offset > slen) {
+ php_error_docref(NULL, E_WARNING, "Offset not contained in string");
RETURN_FALSE;
}
}
- slen = mbfl_strlen(&haystack);
- if (offset < 0) {
- offset += slen;
- }
- if (offset < 0 || offset > slen) {
- php_error_docref(NULL, E_WARNING, "Offset not contained in string");
- RETURN_FALSE;
- }
if (needle.len == 0) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
n = mbfl_strpos(&haystack, &needle, offset, reverse);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
switch (-n) {
@@ -2368,37 +2384,21 @@ PHP_FUNCTION(mb_strpos)
Find position of last occurrence of a string within another */
PHP_FUNCTION(mb_strrpos)
{
- int n;
mbfl_string haystack, needle;
char *enc_name = NULL;
- size_t enc_name_len, haystack_len, needle_len;
+ size_t enc_name_len;
zval *zoffset = NULL;
- long offset = 0, str_flg;
+ zend_long offset = 0, str_flg, n;
char *enc_name2 = NULL;
- int enc_name_len2;
+ size_t enc_name_len2;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|zs", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &zoffset, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|zs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &zoffset, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
if (zoffset) {
if (Z_TYPE_P(zoffset) == IS_STRING) {
enc_name2 = Z_STRVAL_P(zoffset);
@@ -2440,23 +2440,14 @@ PHP_FUNCTION(mb_strrpos)
}
}
- if (enc_name != NULL) {
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(enc_name);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
- }
-
- if (haystack.len <= 0) {
- RETURN_FALSE;
- }
- if (needle.len <= 0) {
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
+ if (!haystack.encoding) {
RETURN_FALSE;
}
- {
- int haystack_char_len = mbfl_strlen(&haystack);
+ if (offset != 0) {
+ size_t haystack_char_len = mbfl_strlen(&haystack);
if ((offset > 0 && offset > haystack_char_len) ||
(offset < 0 && -offset > haystack_char_len)) {
php_error_docref(NULL, E_WARNING, "Offset is greater than the length of haystack string");
@@ -2465,7 +2456,7 @@ PHP_FUNCTION(mb_strrpos)
}
n = mbfl_strpos(&haystack, &needle, offset, 1);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -2477,34 +2468,24 @@ PHP_FUNCTION(mb_strrpos)
Finds position of first occurrence of a string within another, case insensitive */
PHP_FUNCTION(mb_stripos)
{
- int n = -1;
+ size_t n = (size_t) -1;
zend_long offset = 0;
mbfl_string haystack, needle;
const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
- size_t from_encoding_len, haystack_len, needle_len;
+ size_t from_encoding_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
if (needle.len == 0) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
+
n = php_mb_stripos(0, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, offset, from_encoding);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -2516,30 +2497,19 @@ PHP_FUNCTION(mb_stripos)
Finds position of last occurrence of a string within another, case insensitive */
PHP_FUNCTION(mb_strripos)
{
- int n = -1;
+ size_t n = (size_t) -1;
zend_long offset = 0;
mbfl_string haystack, needle;
const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
- size_t from_encoding_len, haystack_len, needle_len;
+ size_t from_encoding_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|ls", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
n = php_mb_stripos(1, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, offset, from_encoding);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -2551,49 +2521,32 @@ PHP_FUNCTION(mb_strripos)
Finds first occurrence of a string within another */
PHP_FUNCTION(mb_strstr)
{
- int n, len, mblen;
+ size_t n;
mbfl_string haystack, needle, result, *ret = NULL;
char *enc_name = NULL;
- size_t enc_name_len, haystack_len, needle_len;
+ size_t enc_name_len;
zend_bool part = 0;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &part, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
- if (enc_name != NULL) {
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(enc_name);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
+ if (!haystack.encoding) {
+ RETURN_FALSE;
}
- if (needle.len <= 0) {
+ if (needle.len == 0) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
+
n = mbfl_strpos(&haystack, &needle, 0, 0);
- if (n >= 0) {
- mblen = mbfl_strlen(&haystack);
+ if (!mbfl_is_error(n)) {
if (part) {
ret = mbfl_substr(&haystack, &result, 0, n);
if (ret != NULL) {
@@ -2604,8 +2557,7 @@ PHP_FUNCTION(mb_strstr)
RETVAL_FALSE;
}
} else {
- len = (mblen - n);
- ret = mbfl_substr(&haystack, &result, n, len);
+ ret = mbfl_substr(&haystack, &result, n, MBFL_SUBSTR_UNTIL_END);
if (ret != NULL) {
// TODO: avoid reallocation ???
RETVAL_STRINGL((char *)ret->val, ret->len);
@@ -2624,51 +2576,34 @@ PHP_FUNCTION(mb_strstr)
Finds the last occurrence of a character in a string within another */
PHP_FUNCTION(mb_strrchr)
{
- int n, len, mblen;
+ size_t n;
mbfl_string haystack, needle, result, *ret = NULL;
char *enc_name = NULL;
- size_t enc_name_len, haystack_len, needle_len;
+ size_t enc_name_len;
zend_bool part = 0;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &part, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
- if (enc_name != NULL) {
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(enc_name);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
+ if (!haystack.encoding) {
+ RETURN_FALSE;
}
- if (haystack.len <= 0) {
+ if (haystack.len == 0) {
RETURN_FALSE;
}
- if (needle.len <= 0) {
+ if (needle.len == 0) {
RETURN_FALSE;
}
+
n = mbfl_strpos(&haystack, &needle, 0, 1);
- if (n >= 0) {
- mblen = mbfl_strlen(&haystack);
+ if (!mbfl_is_error(n)) {
if (part) {
ret = mbfl_substr(&haystack, &result, 0, n);
if (ret != NULL) {
@@ -2679,8 +2614,7 @@ PHP_FUNCTION(mb_strrchr)
RETVAL_FALSE;
}
} else {
- len = (mblen - n);
- ret = mbfl_substr(&haystack, &result, n, len);
+ ret = mbfl_substr(&haystack, &result, n, MBFL_SUBSTR_UNTIL_END);
if (ret != NULL) {
// TODO: avoid reallocation ???
RETVAL_STRINGL((char *)ret->val, ret->len);
@@ -2700,52 +2634,32 @@ PHP_FUNCTION(mb_strrchr)
PHP_FUNCTION(mb_stristr)
{
zend_bool part = 0;
- size_t from_encoding_len, len, mblen, haystack_len, needle_len;
- int n;
+ size_t from_encoding_len, n;
mbfl_string haystack, needle, result, *ret = NULL;
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = NULL;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(from_encoding);
+ if (!haystack.encoding) {
+ RETURN_FALSE;
}
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
if (!needle.len) {
php_error_docref(NULL, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(from_encoding);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", from_encoding);
- RETURN_FALSE;
- }
-
n = php_mb_stripos(0, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, 0, from_encoding);
-
- if (n <0) {
+ if (mbfl_is_error(n)) {
RETURN_FALSE;
}
- mblen = mbfl_strlen(&haystack);
-
if (part) {
ret = mbfl_substr(&haystack, &result, 0, n);
if (ret != NULL) {
@@ -2756,8 +2670,7 @@ PHP_FUNCTION(mb_stristr)
RETVAL_FALSE;
}
} else {
- len = (mblen - n);
- ret = mbfl_substr(&haystack, &result, n, len);
+ ret = mbfl_substr(&haystack, &result, n, MBFL_SUBSTR_UNTIL_END);
if (ret != NULL) {
// TODO: avoid reallocaton ???
RETVAL_STRINGL((char *)ret->val, ret->len);
@@ -2774,47 +2687,28 @@ PHP_FUNCTION(mb_stristr)
PHP_FUNCTION(mb_strrichr)
{
zend_bool part = 0;
- int n, len, mblen;
- size_t from_encoding_len, haystack_len, needle_len;
+ size_t n;
+ size_t from_encoding_len;
mbfl_string haystack, needle, result, *ret = NULL;
- const char *from_encoding = MBSTRG(current_internal_encoding)->name;
+ const char *from_encoding = NULL;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|bs", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &part, &from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(from_encoding);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", from_encoding);
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(from_encoding);
+ if (!haystack.encoding) {
RETURN_FALSE;
}
n = php_mb_stripos(1, (char *)haystack.val, haystack.len, (char *)needle.val, needle.len, 0, from_encoding);
-
- if (n <0) {
+ if (mbfl_is_error(n)) {
RETURN_FALSE;
}
- mblen = mbfl_strlen(&haystack);
-
if (part) {
ret = mbfl_substr(&haystack, &result, 0, n);
if (ret != NULL) {
@@ -2825,8 +2719,7 @@ PHP_FUNCTION(mb_strrichr)
RETVAL_FALSE;
}
} else {
- len = (mblen - n);
- ret = mbfl_substr(&haystack, &result, n, len);
+ ret = mbfl_substr(&haystack, &result, n, MBFL_SUBSTR_UNTIL_END);
if (ret != NULL) {
// TODO: avoid reallocation ???
RETVAL_STRINGL((char *)ret->val, ret->len);
@@ -2842,48 +2735,31 @@ PHP_FUNCTION(mb_strrichr)
Count the number of substring occurrences */
PHP_FUNCTION(mb_substr_count)
{
- int n;
+ size_t n;
mbfl_string haystack, needle;
char *enc_name = NULL;
- size_t enc_name_len, haystack_len, needle_len;
+ size_t enc_name_len;
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
- haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|s", (char **)&haystack.val, &haystack_len, (char **)&needle.val, &needle_len, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|s", (char **)&haystack.val, &haystack.len, (char **)&needle.val, &needle.len, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(haystack_len)) {
- php_error_docref(NULL, E_WARNING, "Haystack length overflows the max allowed length of %u", UINT_MAX);
- return;
- } else if (ZEND_SIZE_T_UINT_OVFL(needle_len)) {
- php_error_docref(NULL, E_WARNING, "Needle length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- haystack.len = (uint32_t)haystack_len;
- needle.len = (uint32_t)needle_len;
-
- if (enc_name != NULL) {
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(enc_name);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
+ haystack.no_language = needle.no_language = MBSTRG(language);
+ haystack.encoding = needle.encoding = php_mb_get_encoding(enc_name);
+ if (!haystack.encoding) {
+ RETURN_FALSE;
}
- if (needle.len <= 0) {
+ if (needle.len == 0) {
php_error_docref(NULL, E_WARNING, "Empty substring");
RETURN_FALSE;
}
n = mbfl_substr_count(&haystack, &needle);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -2897,7 +2773,7 @@ PHP_FUNCTION(mb_substr)
{
char *str, *encoding = NULL;
zend_long from, len;
- int mblen;
+ size_t mblen, real_from, real_len;
size_t str_len, encoding_len;
zend_bool len_is_null = 1;
mbfl_string string, result, *ret;
@@ -2908,62 +2784,50 @@ PHP_FUNCTION(mb_substr)
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
-
- if (encoding) {
- string.no_encoding = mbfl_name2no_encoding(encoding);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encoding);
- RETURN_FALSE;
- }
+ string.encoding = php_mb_get_encoding(encoding);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
string.val = (unsigned char *)str;
string.len = str_len;
- if (len_is_null) {
- len = str_len;
- }
-
/* measures length */
mblen = 0;
- if (from < 0 || len < 0) {
+ if (from < 0 || (!len_is_null && len < 0)) {
mblen = mbfl_strlen(&string);
}
/* if "from" position is negative, count start position from the end
* of the string
*/
- if (from < 0) {
- from = mblen + from;
- if (from < 0) {
- from = 0;
- }
+ if (from >= 0) {
+ real_from = (size_t) from;
+ } else if (-from < mblen) {
+ real_from = mblen + from;
+ } else {
+ real_from = 0;
}
/* if "length" position is negative, set it to the length
* needed to stop that many chars from the end of the string
*/
- if (len < 0) {
- len = (mblen - from) + len;
- if (len < 0) {
- len = 0;
- }
+ if (len_is_null) {
+ real_len = MBFL_SUBSTR_UNTIL_END;
+ } else if (len >= 0) {
+ real_len = (size_t) len;
+ } else if (real_from < mblen && -len < mblen - real_from) {
+ real_len = (mblen - real_from) + len;
+ } else {
+ real_len = 0;
}
if (((MBSTRG(func_overload) & MB_OVERLOAD_STRING) == MB_OVERLOAD_STRING)
- && (from >= mbfl_strlen(&string))) {
+ && (real_from > mbfl_strlen(&string))) {
RETURN_FALSE;
}
- if (from > INT_MAX) {
- from = INT_MAX;
- }
- if (len > INT_MAX) {
- len = INT_MAX;
- }
-
- ret = mbfl_substr(&string, &result, from, len);
+ ret = mbfl_substr(&string, &result, real_from, real_len);
if (NULL == ret) {
RETURN_FALSE;
}
@@ -2980,31 +2844,20 @@ PHP_FUNCTION(mb_strcut)
{
char *encoding = NULL;
zend_long from, len;
- size_t encoding_len, string_len;
+ size_t encoding_len;
zend_bool len_is_null = 1;
mbfl_string string, result, *ret;
mbfl_string_init(&string);
- string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl|l!s", (char **)&string.val, &string_len, &from, &len, &len_is_null, &encoding, &encoding_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl|l!s", (char **)&string.val, &string.len, &from, &len, &len_is_null, &encoding, &encoding_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
-
- if (encoding) {
- string.no_encoding = mbfl_name2no_encoding(encoding);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encoding);
- RETURN_FALSE;
- }
+ string.no_language = MBSTRG(language);
+ string.encoding = php_mb_get_encoding(encoding);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
if (len_is_null) {
@@ -3031,7 +2884,7 @@ PHP_FUNCTION(mb_strcut)
}
}
- if ((unsigned int)from > string.len) {
+ if (from > string.len) {
RETURN_FALSE;
}
@@ -3050,37 +2903,25 @@ PHP_FUNCTION(mb_strcut)
Gets terminal width of a string */
PHP_FUNCTION(mb_strwidth)
{
- int n;
+ size_t n;
mbfl_string string;
char *enc_name = NULL;
- size_t enc_name_len, string_len;
+ size_t enc_name_len;
mbfl_string_init(&string);
- string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s", (char **)&string.val, &string_len, &enc_name, &enc_name_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s", (char **)&string.val, &string.len, &enc_name, &enc_name_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
-
- if (enc_name != NULL) {
- string.no_encoding = mbfl_name2no_encoding(enc_name);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc_name);
- RETURN_FALSE;
- }
+ string.no_language = MBSTRG(language);
+ string.encoding = php_mb_get_encoding(enc_name);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
n = mbfl_strwidth(&string);
- if (n >= 0) {
+ if (!mbfl_is_error(n)) {
RETVAL_LONG(n);
} else {
RETVAL_FALSE;
@@ -3103,23 +2944,17 @@ PHP_FUNCTION(mb_strimwidth)
mbfl_string_init(&string);
mbfl_string_init(&marker);
- string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- marker.no_language = MBSTRG(language);
- marker.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- marker.val = NULL;
- marker.len = 0;
- if (encoding) {
- string.no_encoding = marker.no_encoding = mbfl_name2no_encoding(encoding);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encoding);
- RETURN_FALSE;
- }
+ string.no_language = marker.no_language = MBSTRG(language);
+ string.encoding = marker.encoding = php_mb_get_encoding(encoding);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
string.val = (unsigned char *)str;
string.len = str_len;
+ marker.val = NULL;
+ marker.len = 0;
if ((from < 0) || (width < 0)) {
swidth = mbfl_strwidth(&string);
@@ -3176,16 +3011,53 @@ static inline zend_bool php_mb_is_no_encoding_utf8(enum mbfl_no_encoding no_enc)
return (no_enc >= mbfl_no_encoding_utf8 && no_enc <= mbfl_no_encoding_utf8_sb);
}
+MBSTRING_API char *php_mb_convert_encoding_ex(const char *input, size_t length, const mbfl_encoding *to_encoding, const mbfl_encoding *from_encoding, size_t *output_len)
+{
+ mbfl_string string, result, *ret;
+ mbfl_buffer_converter *convd;
+ char *output = NULL;
+
+ if (output_len) {
+ *output_len = 0;
+ }
+
+ /* initialize string */
+ mbfl_string_init(&string);
+ mbfl_string_init(&result);
+ string.encoding = from_encoding;
+ string.no_language = MBSTRG(language);
+ string.val = (unsigned char *)input;
+ string.len = length;
+
+ /* initialize converter */
+ convd = mbfl_buffer_converter_new(from_encoding, to_encoding, string.len);
+ if (convd == NULL) {
+ php_error_docref(NULL, E_WARNING, "Unable to create character encoding converter");
+ return NULL;
+ }
+
+ mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode));
+ mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar));
+
+ /* do it */
+ ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
+ if (ret) {
+ if (output_len) {
+ *output_len = ret->len;
+ }
+ output = (char *)ret->val;
+ }
+
+ MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
+ mbfl_buffer_converter_delete(convd);
+ return output;
+}
+/* }}} */
/* {{{ MBSTRING_API char *php_mb_convert_encoding() */
MBSTRING_API char *php_mb_convert_encoding(const char *input, size_t length, const char *_to_encoding, const char *_from_encodings, size_t *output_len)
{
- mbfl_string string, result, *ret;
const mbfl_encoding *from_encoding, *to_encoding;
- mbfl_buffer_converter *convd;
- size_t size;
- const mbfl_encoding **list;
- char *output=NULL;
if (output_len) {
*output_len = 0;
@@ -3204,33 +3076,24 @@ MBSTRING_API char *php_mb_convert_encoding(const char *input, size_t length, con
to_encoding = MBSTRG(current_internal_encoding);
}
- /* initialize string */
- mbfl_string_init(&string);
- mbfl_string_init(&result);
- from_encoding = MBSTRG(current_internal_encoding);
- string.no_encoding = from_encoding->no_encoding;
- string.no_language = MBSTRG(language);
- string.val = (unsigned char *)input;
- string.len = length;
-
/* pre-conversion encoding */
+ from_encoding = MBSTRG(current_internal_encoding);
if (_from_encodings) {
- list = NULL;
- size = 0;
+ const mbfl_encoding **list = NULL;
+ size_t size = 0;
php_mb_parse_encoding_list(_from_encodings, strlen(_from_encodings), &list, &size, 0);
if (size == 1) {
from_encoding = *list;
- string.no_encoding = from_encoding->no_encoding;
} else if (size > 1) {
/* auto detect */
- from_encoding = mbfl_identify_encoding2(&string, list, size, MBSTRG(strict_detection));
- if (from_encoding) {
- string.no_encoding = from_encoding->no_encoding;
- } else {
+ mbfl_string string;
+ mbfl_string_init(&string);
+ string.val = (unsigned char *)input;
+ string.len = length;
+ from_encoding = mbfl_identify_encoding(&string, list, size, MBSTRG(strict_detection));
+ if (!from_encoding) {
php_error_docref(NULL, E_WARNING, "Unable to detect character encoding");
from_encoding = &mbfl_encoding_pass;
- to_encoding = from_encoding;
- string.no_encoding = from_encoding->no_encoding;
}
} else {
php_error_docref(NULL, E_WARNING, "Illegal character encoding specified");
@@ -3240,28 +3103,7 @@ MBSTRING_API char *php_mb_convert_encoding(const char *input, size_t length, con
}
}
- /* initialize converter */
- convd = mbfl_buffer_converter_new2(from_encoding, to_encoding, string.len);
- if (convd == NULL) {
- php_error_docref(NULL, E_WARNING, "Unable to create character encoding converter");
- return NULL;
- }
-
- mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode));
- mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar));
-
- /* do it */
- ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
- if (ret) {
- if (output_len) {
- *output_len = ret->len;
- }
- output = (char *)ret->val;
- }
-
- MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
- mbfl_buffer_converter_delete(convd);
- return output;
+ return php_mb_convert_encoding_ex(input, length, to_encoding, from_encoding, output_len);
}
/* }}} */
@@ -3278,13 +3120,13 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons
return NULL;
}
- if (input->u.v.nApplyCount++ > 1) {
- input->u.v.nApplyCount--;
+ if (GC_IS_RECURSIVE(input)) {
+ GC_UNPROTECT_RECURSION(input);
php_error_docref(NULL, E_WARNING, "Cannot convert recursively referenced values");
return NULL;
}
- output = (HashTable *)emalloc(sizeof(HashTable));
- zend_hash_init(output, zend_hash_num_elements(input), NULL, ZVAL_PTR_DTOR, 0);
+ GC_TRY_PROTECT_RECURSION(input);
+ output = zend_new_array(zend_hash_num_elements(input));
ZEND_HASH_FOREACH_KEY_VAL(input, idx, key, entry) {
/* convert key */
if (key) {
@@ -3308,11 +3150,11 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons
break;
case IS_ARRAY:
chash = php_mb_convert_encoding_recursive(HASH_OF(entry), _to_encoding, _from_encodings);
- if (!chash) {
- chash = (HashTable *)emalloc(sizeof(HashTable));
- zend_hash_init(chash, 0, NULL, ZVAL_PTR_DTOR, 0);
+ if (chash) {
+ ZVAL_ARR(&entry_tmp, chash);
+ } else {
+ ZVAL_EMPTY_ARRAY(&entry_tmp);
}
- ZVAL_ARR(&entry_tmp, chash);
break;
case IS_OBJECT:
default:
@@ -3328,7 +3170,7 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons
zend_hash_index_add(output, idx, &entry_tmp);
}
} ZEND_HASH_FOREACH_END();
- input->u.v.nApplyCount--;
+ GC_TRY_UNPROTECT_RECURSION(input);
return output;
}
@@ -3414,16 +3256,25 @@ PHP_FUNCTION(mb_convert_encoding)
}
/* }}} */
+static char *mbstring_convert_case(
+ int case_mode, const char *str, size_t str_len, size_t *ret_len,
+ const mbfl_encoding *enc) {
+ return php_unicode_convert_case(
+ case_mode, str, str_len, ret_len, enc,
+ MBSTRG(current_filter_illegal_mode), MBSTRG(current_filter_illegal_substchar));
+}
+
/* {{{ proto string mb_convert_case(string sourcestring, int mode [, string encoding])
Returns a case-folded version of sourcestring */
PHP_FUNCTION(mb_convert_case)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = NULL;
char *str;
size_t str_len, from_encoding_len;
zend_long case_mode = 0;
char *newstr;
size_t ret_len;
+ const mbfl_encoding *enc;
RETVAL_FALSE;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl|s!", &str, &str_len,
@@ -3431,7 +3282,17 @@ PHP_FUNCTION(mb_convert_case)
return;
}
- newstr = php_unicode_convert_case(case_mode, str, (size_t) str_len, &ret_len, from_encoding);
+ enc = php_mb_get_encoding(from_encoding);
+ if (!enc) {
+ return;
+ }
+
+ if (case_mode < 0 || case_mode > PHP_UNICODE_CASE_MODE_MAX) {
+ php_error_docref(NULL, E_WARNING, "Invalid case mode");
+ return;
+ }
+
+ newstr = mbstring_convert_case(case_mode, str, str_len, &ret_len, enc);
if (newstr) {
// TODO: avoid reallocation ???
@@ -3446,17 +3307,24 @@ PHP_FUNCTION(mb_convert_case)
*/
PHP_FUNCTION(mb_strtoupper)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = NULL;
char *str;
size_t str_len, from_encoding_len;
char *newstr;
size_t ret_len;
+ const mbfl_encoding *enc;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s!", &str, &str_len,
&from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- newstr = php_unicode_convert_case(PHP_UNICODE_CASE_UPPER, str, (size_t) str_len, &ret_len, from_encoding);
+
+ enc = php_mb_get_encoding(from_encoding);
+ if (!enc) {
+ RETURN_FALSE;
+ }
+
+ newstr = mbstring_convert_case(PHP_UNICODE_CASE_UPPER, str, str_len, &ret_len, enc);
if (newstr) {
// TODO: avoid reallocation ???
@@ -3473,17 +3341,24 @@ PHP_FUNCTION(mb_strtoupper)
*/
PHP_FUNCTION(mb_strtolower)
{
- const char *from_encoding = MBSTRG(current_internal_encoding)->mime_name;
+ const char *from_encoding = NULL;
char *str;
size_t str_len, from_encoding_len;
char *newstr;
size_t ret_len;
+ const mbfl_encoding *enc;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s!", &str, &str_len,
&from_encoding, &from_encoding_len) == FAILURE) {
return;
}
- newstr = php_unicode_convert_case(PHP_UNICODE_CASE_LOWER, str, (size_t) str_len, &ret_len, from_encoding);
+
+ enc = php_mb_get_encoding(from_encoding);
+ if (!enc) {
+ RETURN_FALSE;
+ }
+
+ newstr = mbstring_convert_case(PHP_UNICODE_CASE_LOWER, str, str_len, &ret_len, enc);
if (newstr) {
// TODO: avoid reallocation ???
@@ -3538,13 +3413,13 @@ PHP_FUNCTION(mb_detect_encoding)
}
break;
}
- if (size <= 0) {
+ if (size == 0) {
php_error_docref(NULL, E_WARNING, "Illegal argument");
}
}
if (ZEND_NUM_ARGS() < 3) {
- strict = (zend_bool)MBSTRG(strict_detection);
+ strict = MBSTRG(strict_detection);
}
if (size > 0 && list != NULL) {
@@ -3558,7 +3433,7 @@ PHP_FUNCTION(mb_detect_encoding)
string.no_language = MBSTRG(language);
string.val = (unsigned char *)str;
string.len = str_len;
- ret = mbfl_identify_encoding2(&string, elist, size, strict);
+ ret = mbfl_identify_encoding(&string, elist, size, strict);
if (list != NULL) {
efree((void *)list);
@@ -3625,53 +3500,46 @@ PHP_FUNCTION(mb_encoding_aliases)
Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?= */
PHP_FUNCTION(mb_encode_mimeheader)
{
- enum mbfl_no_encoding charset, transenc;
+ const mbfl_encoding *charset, *transenc;
mbfl_string string, result, *ret;
char *charset_name = NULL;
size_t charset_name_len;
char *trans_enc_name = NULL;
size_t trans_enc_name_len;
char *linefeed = "\r\n";
- size_t linefeed_len, string_len;
+ size_t linefeed_len;
zend_long indent = 0;
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.encoding = MBSTRG(current_internal_encoding);
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|sssl", (char **)&string.val, &string_len, &charset_name, &charset_name_len, &trans_enc_name, &trans_enc_name_len, &linefeed, &linefeed_len, &indent) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|sssl", (char **)&string.val, &string.len, &charset_name, &charset_name_len, &trans_enc_name, &trans_enc_name_len, &linefeed, &linefeed_len, &indent) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
-
- charset = mbfl_no_encoding_pass;
- transenc = mbfl_no_encoding_base64;
+ charset = &mbfl_encoding_pass;
+ transenc = &mbfl_encoding_base64;
if (charset_name != NULL) {
- charset = mbfl_name2no_encoding(charset_name);
- if (charset == mbfl_no_encoding_invalid) {
+ charset = mbfl_name2encoding(charset_name);
+ if (!charset) {
php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", charset_name);
RETURN_FALSE;
}
} else {
const mbfl_language *lang = mbfl_no2language(MBSTRG(language));
if (lang != NULL) {
- charset = lang->mail_charset;
- transenc = lang->mail_header_encoding;
+ charset = mbfl_no2encoding(lang->mail_charset);
+ transenc = mbfl_no2encoding(lang->mail_header_encoding);
}
}
if (trans_enc_name != NULL) {
if (*trans_enc_name == 'B' || *trans_enc_name == 'b') {
- transenc = mbfl_no_encoding_base64;
+ transenc = &mbfl_encoding_base64;
} else if (*trans_enc_name == 'Q' || *trans_enc_name == 'q') {
- transenc = mbfl_no_encoding_qprint;
+ transenc = &mbfl_encoding_qprint;
}
}
@@ -3692,25 +3560,17 @@ PHP_FUNCTION(mb_encode_mimeheader)
PHP_FUNCTION(mb_decode_mimeheader)
{
mbfl_string string, result, *ret;
- size_t string_len;
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.encoding = MBSTRG(current_internal_encoding);
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", (char **)&string.val, &string_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", (char **)&string.val, &string.len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
-
mbfl_string_init(&result);
- ret = mbfl_mime_header_decode(&string, &result, MBSTRG(current_internal_encoding)->no_encoding);
+ ret = mbfl_mime_header_decode(&string, &result, MBSTRG(current_internal_encoding));
if (ret != NULL) {
// TODO: avoid reallocation ???
RETVAL_STRINGL((char *)ret->val, ret->len); /* the string is already strdup()'ed */
@@ -3725,33 +3585,23 @@ PHP_FUNCTION(mb_decode_mimeheader)
Conversion between full-width character and half-width character (Japanese) */
PHP_FUNCTION(mb_convert_kana)
{
- int opt, i;
+ int opt;
mbfl_string string, result, *ret;
char *optstr = NULL;
size_t optstr_len;
char *encname = NULL;
- size_t encname_len, string_len;
+ size_t encname_len;
mbfl_string_init(&string);
- string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|ss", (char **)&string.val, &string_len, &optstr, &optstr_len, &encname, &encname_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|ss", (char **)&string.val, &string.len, &optstr, &optstr_len, &encname, &encname_len) == FAILURE) {
return;
}
- if (ZEND_SIZE_T_UINT_OVFL(string_len)) {
- php_error_docref(NULL, E_WARNING, "String length overflows the max allowed length of %u", UINT_MAX);
- return;
- }
-
- string.len = (uint32_t)string_len;
-
/* option */
if (optstr != NULL) {
char *p = optstr;
- int n = optstr_len;
- i = 0;
+ size_t i = 0, n = optstr_len;
opt = 0;
while (i < n) {
i++;
@@ -3814,12 +3664,10 @@ PHP_FUNCTION(mb_convert_kana)
}
/* encoding */
- if (encname != NULL) {
- string.no_encoding = mbfl_name2no_encoding(encname);
- if (string.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encname);
- RETURN_FALSE;
- }
+ string.no_language = MBSTRG(language);
+ string.encoding = php_mb_get_encoding(encname);
+ if (!string.encoding) {
+ RETURN_FALSE;
}
ret = mbfl_ja_jp_hantozen(&string, &result, opt);
@@ -3833,24 +3681,114 @@ PHP_FUNCTION(mb_convert_kana)
}
/* }}} */
-#define PHP_MBSTR_STACK_BLOCK_SIZE 32
+static int mb_recursive_encoder_detector_feed(mbfl_encoding_detector *identd, zval *var, int *recursion_error) /* {{{ */
+{
+ mbfl_string string;
+ HashTable *ht;
+ zval *entry;
+
+ ZVAL_DEREF(var);
+ if (Z_TYPE_P(var) == IS_STRING) {
+ string.val = (unsigned char *)Z_STRVAL_P(var);
+ string.len = Z_STRLEN_P(var);
+ if (mbfl_encoding_detector_feed(identd, &string)) {
+ return 1; /* complete detecting */
+ }
+ } else if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
+ if (Z_REFCOUNTED_P(var)) {
+ if (Z_IS_RECURSIVE_P(var)) {
+ *recursion_error = 1;
+ return 0;
+ }
+ Z_PROTECT_RECURSION_P(var);
+ }
+
+ ht = HASH_OF(var);
+ if (ht != NULL) {
+ ZEND_HASH_FOREACH_VAL_IND(ht, entry) {
+ if (mb_recursive_encoder_detector_feed(identd, entry, recursion_error)) {
+ if (Z_REFCOUNTED_P(var)) {
+ Z_UNPROTECT_RECURSION_P(var);
+ }
+ return 1;
+ } else if (*recursion_error) {
+ if (Z_REFCOUNTED_P(var)) {
+ Z_UNPROTECT_RECURSION_P(var);
+ }
+ return 0;
+ }
+ } ZEND_HASH_FOREACH_END();
+ }
+
+ if (Z_REFCOUNTED_P(var)) {
+ Z_UNPROTECT_RECURSION_P(var);
+ }
+ }
+ return 0;
+} /* }}} */
+
+static int mb_recursive_convert_variable(mbfl_buffer_converter *convd, zval *var) /* {{{ */
+{
+ mbfl_string string, result, *ret;
+ HashTable *ht;
+ zval *entry, *orig_var;
+
+ orig_var = var;
+ ZVAL_DEREF(var);
+ if (Z_TYPE_P(var) == IS_STRING) {
+ string.val = (unsigned char *)Z_STRVAL_P(var);
+ string.len = Z_STRLEN_P(var);
+ ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
+ if (ret != NULL) {
+ zval_ptr_dtor(orig_var);
+ // TODO: avoid reallocation ???
+ ZVAL_STRINGL(orig_var, (char *)ret->val, ret->len);
+ efree(ret->val);
+ }
+ } else if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
+ if (Z_TYPE_P(var) == IS_ARRAY) {
+ SEPARATE_ARRAY(var);
+ }
+ if (Z_REFCOUNTED_P(var)) {
+ if (Z_IS_RECURSIVE_P(var)) {
+ return 1;
+ }
+ Z_PROTECT_RECURSION_P(var);
+ }
+
+ ht = HASH_OF(var);
+ if (ht != NULL) {
+ ZEND_HASH_FOREACH_VAL_IND(ht, entry) {
+ if (mb_recursive_convert_variable(convd, entry)) {
+ if (Z_REFCOUNTED_P(var)) {
+ Z_UNPROTECT_RECURSION_P(var);
+ }
+ return 1;
+ }
+ } ZEND_HASH_FOREACH_END();
+ }
+
+ if (Z_REFCOUNTED_P(var)) {
+ Z_UNPROTECT_RECURSION_P(var);
+ }
+ }
+ return 0;
+} /* }}} */
/* {{{ proto string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])
Converts the string resource in variables to desired encoding */
PHP_FUNCTION(mb_convert_variables)
{
- zval *args, *stack, *var, *hash_entry, *hash_entry_ptr, *zfrom_enc;
- HashTable *target_hash;
- mbfl_string string, result, *ret;
+ zval *args, *zfrom_enc;
+ mbfl_string string, result;
const mbfl_encoding *from_encoding, *to_encoding;
mbfl_encoding_detector *identd;
mbfl_buffer_converter *convd;
- int n, argc, stack_level, stack_max;
+ int n, argc;
size_t to_enc_len;
size_t elistsz;
const mbfl_encoding **elist;
char *to_enc;
- void *ptmp;
int recursion_error = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sz+", &to_enc, &to_enc_len, &zfrom_enc, &args, &argc) == FAILURE) {
@@ -3868,7 +3806,7 @@ PHP_FUNCTION(mb_convert_variables)
mbfl_string_init(&string);
mbfl_string_init(&result);
from_encoding = MBSTRG(current_internal_encoding);
- string.no_encoding = from_encoding->no_encoding;
+ string.encoding = from_encoding;
string.no_language = MBSTRG(language);
/* pre-conversion encoding */
@@ -3884,101 +3822,32 @@ PHP_FUNCTION(mb_convert_variables)
break;
}
- if (elistsz <= 0) {
+ if (elistsz == 0) {
from_encoding = &mbfl_encoding_pass;
} else if (elistsz == 1) {
from_encoding = *elist;
} else {
/* auto detect */
from_encoding = NULL;
- stack_max = PHP_MBSTR_STACK_BLOCK_SIZE;
- stack = (zval *)safe_emalloc(stack_max, sizeof(zval), 0);
- stack_level = 0;
- identd = mbfl_encoding_detector_new2(elist, elistsz, MBSTRG(strict_detection));
+ identd = mbfl_encoding_detector_new(elist, elistsz, MBSTRG(strict_detection));
if (identd != NULL) {
n = 0;
- while (n < argc || stack_level > 0) {
- if (stack_level <= 0) {
- var = &args[n++];
- ZVAL_DEREF(var);
- SEPARATE_ZVAL_NOREF(var);
- if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- zend_hash_internal_pointer_reset(target_hash);
- }
- }
- } else {
- stack_level--;
- var = &stack[stack_level];
- }
- if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- while ((hash_entry = zend_hash_get_current_data(target_hash)) != NULL) {
- if (Z_REFCOUNTED_P(var)) {
- if (++target_hash->u.v.nApplyCount > 1) {
- --target_hash->u.v.nApplyCount;
- recursion_error = 1;
- goto detect_end;
- }
- }
- zend_hash_move_forward(target_hash);
- if (Z_TYPE_P(hash_entry) == IS_INDIRECT) {
- hash_entry = Z_INDIRECT_P(hash_entry);
- }
- ZVAL_DEREF(hash_entry);
- if (Z_TYPE_P(hash_entry) == IS_ARRAY || Z_TYPE_P(hash_entry) == IS_OBJECT) {
- if (stack_level >= stack_max) {
- stack_max += PHP_MBSTR_STACK_BLOCK_SIZE;
- ptmp = erealloc(stack, sizeof(zval) * stack_max);
- stack = (zval *)ptmp;
- }
- ZVAL_COPY_VALUE(&stack[stack_level], var);
- stack_level++;
- var = hash_entry;
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- zend_hash_internal_pointer_reset(target_hash);
- continue;
- }
- } else if (Z_TYPE_P(hash_entry) == IS_STRING) {
- string.val = (unsigned char *)Z_STRVAL_P(hash_entry);
- string.len = Z_STRLEN_P(hash_entry);
- if (mbfl_encoding_detector_feed(identd, &string)) {
- goto detect_end; /* complete detecting */
- }
- }
- }
- }
- } else if (Z_TYPE_P(var) == IS_STRING) {
- string.val = (unsigned char *)Z_STRVAL_P(var);
- string.len = Z_STRLEN_P(var);
- if (mbfl_encoding_detector_feed(identd, &string)) {
- goto detect_end; /* complete detecting */
- }
+ while (n < argc) {
+ if (mb_recursive_encoder_detector_feed(identd, &args[n], &recursion_error)) {
+ break;
}
+ n++;
}
-detect_end:
- from_encoding = mbfl_encoding_detector_judge2(identd);
+ from_encoding = mbfl_encoding_detector_judge(identd);
mbfl_encoding_detector_delete(identd);
- }
- if (recursion_error) {
- while(stack_level-- && (var = &stack[stack_level])) {
- if (Z_REFCOUNTED_P(var)) {
- if (HASH_OF(var)->u.v.nApplyCount > 1) {
- HASH_OF(var)->u.v.nApplyCount--;
- }
+ if (recursion_error) {
+ if (elist != NULL) {
+ efree((void *)elist);
}
+ php_error_docref(NULL, E_WARNING, "Cannot handle recursive references");
+ RETURN_FALSE;
}
- efree(stack);
- if (elist != NULL) {
- efree((void *)elist);
- }
- php_error_docref(NULL, E_WARNING, "Cannot handle recursive references");
- RETURN_FALSE;
}
- efree(stack);
if (!from_encoding) {
php_error_docref(NULL, E_WARNING, "Unable to detect encoding");
@@ -3991,7 +3860,7 @@ detect_end:
/* create converter */
convd = NULL;
if (from_encoding != &mbfl_encoding_pass) {
- convd = mbfl_buffer_converter_new2(from_encoding, to_encoding, 0);
+ convd = mbfl_buffer_converter_new(from_encoding, to_encoding, 0);
if (convd == NULL) {
php_error_docref(NULL, E_WARNING, "Unable to create converter");
RETURN_FALSE;
@@ -4002,100 +3871,25 @@ detect_end:
/* convert */
if (convd != NULL) {
- stack_max = PHP_MBSTR_STACK_BLOCK_SIZE;
- stack = (zval*)safe_emalloc(stack_max, sizeof(zval), 0);
- stack_level = 0;
n = 0;
- while (n < argc || stack_level > 0) {
- if (stack_level <= 0) {
- var = &args[n++];
- ZVAL_DEREF(var);
- SEPARATE_ZVAL_NOREF(var);
- if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- zend_hash_internal_pointer_reset(target_hash);
- }
- }
- } else {
- stack_level--;
- var = &stack[stack_level];
- }
- if (Z_TYPE_P(var) == IS_ARRAY || Z_TYPE_P(var) == IS_OBJECT) {
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- while ((hash_entry_ptr = zend_hash_get_current_data(target_hash)) != NULL) {
- zend_hash_move_forward(target_hash);
- if (Z_TYPE_P(hash_entry_ptr) == IS_INDIRECT) {
- hash_entry_ptr = Z_INDIRECT_P(hash_entry_ptr);
- }
- hash_entry = hash_entry_ptr;
- ZVAL_DEREF(hash_entry);
- if (Z_TYPE_P(hash_entry) == IS_ARRAY || Z_TYPE_P(hash_entry) == IS_OBJECT) {
- if (Z_REFCOUNTED_P(hash_entry)) {
- if (++(HASH_OF(hash_entry)->u.v.nApplyCount) > 1) {
- --(HASH_OF(hash_entry)->u.v.nApplyCount);
- recursion_error = 1;
- goto conv_end;
- }
- }
- if (stack_level >= stack_max) {
- stack_max += PHP_MBSTR_STACK_BLOCK_SIZE;
- ptmp = erealloc(stack, sizeof(zval) * stack_max);
- stack = (zval *)ptmp;
- }
- ZVAL_COPY_VALUE(&stack[stack_level], var);
- stack_level++;
- var = hash_entry;
- SEPARATE_ZVAL(hash_entry);
- target_hash = HASH_OF(var);
- if (target_hash != NULL) {
- zend_hash_internal_pointer_reset(target_hash);
- continue;
- }
- } else if (Z_TYPE_P(hash_entry) == IS_STRING) {
- string.val = (unsigned char *)Z_STRVAL_P(hash_entry);
- string.len = Z_STRLEN_P(hash_entry);
- ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
- if (ret != NULL) {
- zval_ptr_dtor(hash_entry_ptr);
- // TODO: avoid reallocation ???
- ZVAL_STRINGL(hash_entry_ptr, (char *)ret->val, ret->len);
- efree(ret->val);
- }
- }
- }
- }
- } else if (Z_TYPE_P(var) == IS_STRING) {
- string.val = (unsigned char *)Z_STRVAL_P(var);
- string.len = Z_STRLEN_P(var);
- ret = mbfl_buffer_converter_feed_result(convd, &string, &result);
- if (ret != NULL) {
- zval_ptr_dtor(var);
- // TODO: avoid reallocation ???
- ZVAL_STRINGL(var, (char *)ret->val, ret->len);
- efree(ret->val);
- }
+ while (n < argc) {
+ zval *zv = &args[n];
+
+ ZVAL_DEREF(zv);
+ recursion_error = mb_recursive_convert_variable(convd, zv);
+ if (recursion_error) {
+ break;
}
+ n++;
}
-conv_end:
MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd);
mbfl_buffer_converter_delete(convd);
if (recursion_error) {
- while(stack_level-- && (var = &stack[stack_level])) {
- if (Z_REFCOUNTED_P(var)) {
- if (HASH_OF(var)->u.v.nApplyCount > 1) {
- HASH_OF(var)->u.v.nApplyCount--;
- }
- }
- }
- efree(stack);
php_error_docref(NULL, E_WARNING, "Cannot handle recursive references");
RETURN_FALSE;
}
- efree(stack);
}
if (from_encoding) {
@@ -4118,7 +3912,6 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type)
int i, *convmap, *mapelm, mapsize=0;
zend_bool is_hex = 0;
mbfl_string string, result, *ret;
- enum mbfl_no_encoding no_encoding;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sz|sb", &str, &str_len, &zconvmap, &encoding, &encoding_len, &is_hex) == FAILURE) {
return;
@@ -4126,18 +3919,16 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type)
mbfl_string_init(&string);
string.no_language = MBSTRG(language);
- string.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ string.encoding = MBSTRG(current_internal_encoding);
string.val = (unsigned char *)str;
string.len = str_len;
/* encoding */
if (encoding && encoding_len > 0) {
- no_encoding = mbfl_name2no_encoding(encoding);
- if (no_encoding == mbfl_no_encoding_invalid) {
+ string.encoding = mbfl_name2encoding(encoding);
+ if (!string.encoding) {
php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", encoding);
RETURN_FALSE;
- } else {
- string.no_encoding = no_encoding;
}
}
@@ -4155,8 +3946,7 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type)
mapelm = convmap;
mapsize = 0;
ZEND_HASH_FOREACH_VAL(target_hash, hash_entry) {
- convert_to_long_ex(hash_entry);
- *mapelm++ = Z_LVAL_P(hash_entry);
+ *mapelm++ = zval_get_long(hash_entry);
mapsize++;
} ZEND_HASH_FOREACH_END();
}
@@ -4327,7 +4117,7 @@ static int _php_mbstr_parse_mail_headers(HashTable *ht, const char *str, size_t
zend_hash_update(ht, fld_name, &val);
- zend_string_release(fld_name);
+ zend_string_release_ex(fld_name, 0);
}
fld_name = fld_val = NULL;
@@ -4375,7 +4165,7 @@ out:
zend_hash_update(ht, fld_name, &val);
- zend_string_release(fld_name);
+ zend_string_release_ex(fld_name, 0);
}
}
return state;
@@ -4383,17 +4173,16 @@ out:
PHP_FUNCTION(mb_send_mail)
{
- int n;
- char *to = NULL;
+ char *to;
size_t to_len;
- char *message = NULL;
+ char *message;
size_t message_len;
- char *subject = NULL;
+ char *subject;
size_t subject_len;
zval *headers = NULL;
zend_string *extra_cmd = NULL;
- zend_string *str_headers=NULL, *tmp_headers;
- int i;
+ zend_string *str_headers = NULL, *tmp_headers;
+ size_t n, i;
char *to_r = NULL;
char *force_extra_parameters = INI_STR("mail.force_extra_parameters");
struct {
@@ -4404,10 +4193,10 @@ PHP_FUNCTION(mb_send_mail)
char *message_buf = NULL, *subject_buf = NULL, *p;
mbfl_string orig_str, conv_str;
mbfl_string *pstr; /* pointer to mbfl string for return value */
- enum mbfl_no_encoding
- tran_cs, /* transfar text charset */
- head_enc, /* header transfar encoding */
- body_enc; /* body transfar encoding */
+ enum mbfl_no_encoding;
+ const mbfl_encoding *tran_cs, /* transfar text charset */
+ *head_enc, /* header transfar encoding */
+ *body_enc; /* body transfar encoding */
mbfl_memory_device device; /* automatic allocateable buffer for additional header */
const mbfl_language *lang;
int err = 0;
@@ -4422,14 +4211,14 @@ PHP_FUNCTION(mb_send_mail)
mbfl_string_init(&conv_str);
/* character-set, transfer-encoding */
- tran_cs = mbfl_no_encoding_utf8;
- head_enc = mbfl_no_encoding_base64;
- body_enc = mbfl_no_encoding_base64;
+ tran_cs = &mbfl_encoding_utf8;
+ head_enc = &mbfl_encoding_base64;
+ body_enc = &mbfl_encoding_base64;
lang = mbfl_no2language(MBSTRG(language));
if (lang != NULL) {
- tran_cs = lang->mail_charset;
- head_enc = lang->mail_header_encoding;
- body_enc = lang->mail_body_encoding;
+ tran_cs = mbfl_no2encoding(lang->mail_charset);
+ head_enc = mbfl_no2encoding(lang->mail_header_encoding);
+ body_enc = mbfl_no2encoding(lang->mail_body_encoding);
}
if (zend_parse_parameters(ZEND_NUM_ARGS(), "sss|zS", &to, &to_len, &subject, &subject_len, &message, &message_len, &headers, &extra_cmd) == FAILURE) {
@@ -4446,7 +4235,7 @@ PHP_FUNCTION(mb_send_mail)
tmp_headers = zend_string_init(Z_STRVAL_P(headers), Z_STRLEN_P(headers), 0);
MAIL_ASCIIZ_CHECK_MBSTRING(ZSTR_VAL(tmp_headers), ZSTR_LEN(tmp_headers));
str_headers = php_trim(tmp_headers, NULL, 0, 2);
- zend_string_release(tmp_headers);
+ zend_string_release_ex(tmp_headers, 0);
break;
case IS_ARRAY:
str_headers = php_mail_build_headers(headers);
@@ -4483,16 +4272,16 @@ PHP_FUNCTION(mb_send_mail)
if (*p != '\0') {
if ((param_name = php_strtok_r(p, "= ", &tmp)) != NULL) {
if (strcasecmp(param_name, "charset") == 0) {
- enum mbfl_no_encoding _tran_cs = tran_cs;
+ const mbfl_encoding *_tran_cs = tran_cs;
charset = php_strtok_r(NULL, "= \"", &tmp);
if (charset != NULL) {
- _tran_cs = mbfl_name2no_encoding(charset);
+ _tran_cs = mbfl_name2encoding(charset);
}
- if (_tran_cs == mbfl_no_encoding_invalid) {
+ if (!_tran_cs) {
php_error_docref(NULL, E_WARNING, "Unsupported charset \"%s\" - will be regarded as ascii", charset);
- _tran_cs = mbfl_no_encoding_ascii;
+ _tran_cs = &mbfl_encoding_ascii;
}
tran_cs = _tran_cs;
}
@@ -4503,11 +4292,11 @@ PHP_FUNCTION(mb_send_mail)
}
if ((s = zend_hash_str_find(&ht_headers, "CONTENT-TRANSFER-ENCODING", sizeof("CONTENT-TRANSFER-ENCODING") - 1))) {
- enum mbfl_no_encoding _body_enc;
+ const mbfl_encoding *_body_enc;
ZEND_ASSERT(Z_TYPE_P(s) == IS_STRING);
- _body_enc = mbfl_name2no_encoding(Z_STRVAL_P(s));
- switch (_body_enc) {
+ _body_enc = mbfl_name2encoding(Z_STRVAL_P(s));
+ switch (_body_enc ? _body_enc->no_encoding : mbfl_no_encoding_invalid) {
case mbfl_no_encoding_base64:
case mbfl_no_encoding_7bit:
case mbfl_no_encoding_8bit:
@@ -4516,89 +4305,73 @@ PHP_FUNCTION(mb_send_mail)
default:
php_error_docref(NULL, E_WARNING, "Unsupported transfer encoding \"%s\" - will be regarded as 8bit", Z_STRVAL_P(s));
- body_enc = mbfl_no_encoding_8bit;
+ body_enc = &mbfl_encoding_8bit;
break;
}
suppressed_hdrs.cnt_trans_enc = 1;
}
/* To: */
- if (to != NULL) {
- if (to_len > 0) {
- to_r = estrndup(to, to_len);
- for (; to_len; to_len--) {
- if (!isspace((unsigned char) to_r[to_len - 1])) {
- break;
- }
- to_r[to_len - 1] = '\0';
- }
- for (i = 0; to_r[i]; i++) {
- if (iscntrl((unsigned char) to_r[i])) {
- /* According to RFC 822, section 3.1.1 long headers may be separated into
- * parts using CRLF followed at least one linear-white-space character ('\t' or ' ').
- * To prevent these separators from being replaced with a space, we use the
- * SKIP_LONG_HEADER_SEP_MBSTRING to skip over them.
- */
- SKIP_LONG_HEADER_SEP_MBSTRING(to_r, i);
- to_r[i] = ' ';
- }
+ if (to_len > 0) {
+ to_r = estrndup(to, to_len);
+ for (; to_len; to_len--) {
+ if (!isspace((unsigned char) to_r[to_len - 1])) {
+ break;
}
- } else {
- to_r = to;
+ to_r[to_len - 1] = '\0';
+ }
+ for (i = 0; to_r[i]; i++) {
+ if (iscntrl((unsigned char) to_r[i])) {
+ /* According to RFC 822, section 3.1.1 long headers may be separated into
+ * parts using CRLF followed at least one linear-white-space character ('\t' or ' ').
+ * To prevent these separators from being replaced with a space, we use the
+ * SKIP_LONG_HEADER_SEP_MBSTRING to skip over them.
+ */
+ SKIP_LONG_HEADER_SEP_MBSTRING(to_r, i);
+ to_r[i] = ' ';
+ }
}
} else {
- php_error_docref(NULL, E_WARNING, "Missing To: field");
- err = 1;
+ to_r = to;
}
/* Subject: */
- if (subject != NULL) {
- orig_str.no_language = MBSTRG(language);
- orig_str.val = (unsigned char *)subject;
- orig_str.len = subject_len;
- orig_str.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
- if (orig_str.no_encoding == mbfl_no_encoding_invalid || orig_str.no_encoding == mbfl_no_encoding_pass) {
- const mbfl_encoding *encoding = mbfl_identify_encoding2(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
- orig_str.no_encoding = encoding ? encoding->no_encoding: mbfl_no_encoding_invalid;
- }
- pstr = mbfl_mime_header_encode(&orig_str, &conv_str, tran_cs, head_enc, "\n", sizeof("Subject: [PHP-jp nnnnnnnn]"));
- if (pstr != NULL) {
- subject_buf = subject = (char *)pstr->val;
- }
- } else {
- php_error_docref(NULL, E_WARNING, "Missing Subject: field");
- err = 1;
+ orig_str.no_language = MBSTRG(language);
+ orig_str.val = (unsigned char *)subject;
+ orig_str.len = subject_len;
+ orig_str.encoding = MBSTRG(current_internal_encoding);
+ if (orig_str.encoding->no_encoding == mbfl_no_encoding_invalid
+ || orig_str.encoding->no_encoding == mbfl_no_encoding_pass) {
+ orig_str.encoding = mbfl_identify_encoding(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
+ }
+ pstr = mbfl_mime_header_encode(&orig_str, &conv_str, tran_cs, head_enc, "\n", sizeof("Subject: [PHP-jp nnnnnnnn]"));
+ if (pstr != NULL) {
+ subject_buf = subject = (char *)pstr->val;
}
/* message body */
- if (message != NULL) {
- orig_str.no_language = MBSTRG(language);
- orig_str.val = (unsigned char *)message;
- orig_str.len = (unsigned int)message_len;
- orig_str.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ orig_str.no_language = MBSTRG(language);
+ orig_str.val = (unsigned char *)message;
+ orig_str.len = message_len;
+ orig_str.encoding = MBSTRG(current_internal_encoding);
- if (orig_str.no_encoding == mbfl_no_encoding_invalid || orig_str.no_encoding == mbfl_no_encoding_pass) {
- const mbfl_encoding *encoding = mbfl_identify_encoding2(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
- orig_str.no_encoding = encoding ? encoding->no_encoding: mbfl_no_encoding_invalid;
- }
+ if (orig_str.encoding->no_encoding == mbfl_no_encoding_invalid
+ || orig_str.encoding->no_encoding == mbfl_no_encoding_pass) {
+ orig_str.encoding = mbfl_identify_encoding(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size), MBSTRG(strict_detection));
+ }
- pstr = NULL;
- {
- mbfl_string tmpstr;
+ pstr = NULL;
+ {
+ mbfl_string tmpstr;
- if (mbfl_convert_encoding(&orig_str, &tmpstr, tran_cs) != NULL) {
- tmpstr.no_encoding=mbfl_no_encoding_8bit;
- pstr = mbfl_convert_encoding(&tmpstr, &conv_str, body_enc);
- efree(tmpstr.val);
- }
- }
- if (pstr != NULL) {
- message_buf = message = (char *)pstr->val;
+ if (mbfl_convert_encoding(&orig_str, &tmpstr, tran_cs) != NULL) {
+ tmpstr.encoding = &mbfl_encoding_8bit;
+ pstr = mbfl_convert_encoding(&tmpstr, &conv_str, body_enc);
+ efree(tmpstr.val);
}
- } else {
- /* this is not really an error, so it is allowed. */
- php_error_docref(NULL, E_WARNING, "Empty message body");
- message = NULL;
+ }
+ if (pstr != NULL) {
+ message_buf = message = (char *)pstr->val;
}
/* other headers */
@@ -4613,7 +4386,7 @@ PHP_FUNCTION(mb_send_mail)
if (n > 0 && p[n - 1] != '\n') {
mbfl_memory_device_strncat(&device, "\n", 1);
}
- zend_string_release(str_headers);
+ zend_string_release_ex(str_headers, 0);
}
if (!zend_hash_str_exists(&ht_headers, "MIME-VERSION", sizeof("MIME-VERSION") - 1)) {
@@ -4624,7 +4397,7 @@ PHP_FUNCTION(mb_send_mail)
if (!suppressed_hdrs.cnt_type) {
mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER2, sizeof(PHP_MBSTR_MAIL_MIME_HEADER2) - 1);
- p = (char *)mbfl_no2preferred_mime_name(tran_cs);
+ p = (char *)mbfl_no2preferred_mime_name(tran_cs->no_encoding);
if (p != NULL) {
mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER3, sizeof(PHP_MBSTR_MAIL_MIME_HEADER3) - 1);
mbfl_memory_device_strcat(&device, p);
@@ -4633,7 +4406,7 @@ PHP_FUNCTION(mb_send_mail)
}
if (!suppressed_hdrs.cnt_trans_enc) {
mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER4, sizeof(PHP_MBSTR_MAIL_MIME_HEADER4) - 1);
- p = (char *)mbfl_no2preferred_mime_name(body_enc);
+ p = (char *)mbfl_no2preferred_mime_name(body_enc->no_encoding);
if (p == NULL) {
p = "7bit";
}
@@ -4658,7 +4431,7 @@ PHP_FUNCTION(mb_send_mail)
}
if (extra_cmd) {
- zend_string_release(extra_cmd);
+ zend_string_release_ex(extra_cmd, 0);
}
if (to_r != to) {
@@ -4673,7 +4446,7 @@ PHP_FUNCTION(mb_send_mail)
mbfl_memory_device_clear(&device);
zend_hash_destroy(&ht_headers);
if (str_headers) {
- zend_string_release(str_headers);
+ zend_string_release_ex(str_headers, 0);
}
}
@@ -4868,7 +4641,7 @@ static inline mbfl_buffer_converter *php_mb_init_convd(const mbfl_encoding *enco
{
mbfl_buffer_converter *convd;
- convd = mbfl_buffer_converter_new2(encoding, encoding, 0);
+ convd = mbfl_buffer_converter_new(encoding, encoding, 0);
if (convd == NULL) {
return NULL;
}
@@ -4880,10 +4653,10 @@ static inline mbfl_buffer_converter *php_mb_init_convd(const mbfl_encoding *enco
static inline int php_mb_check_encoding_impl(mbfl_buffer_converter *convd, const char *input, size_t length, const mbfl_encoding *encoding) {
mbfl_string string, result, *ret = NULL;
- long illegalchars = 0;
+ size_t illegalchars = 0;
/* initialize string */
- mbfl_string_init_set(&string, mbfl_no_language_neutral, encoding->no_encoding);
+ mbfl_string_init_set(&string, mbfl_no_language_neutral, encoding);
mbfl_string_init(&result);
string.val = (unsigned char *) input;
@@ -4960,12 +4733,12 @@ MBSTRING_API int php_mb_check_encoding_recursive(HashTable *vars, const zend_str
return 0;
}
- if (vars->u.v.nApplyCount++ > 1) {
- vars->u.v.nApplyCount--;
+ if (GC_IS_RECURSIVE(vars)) {
mbfl_buffer_converter_delete(convd);
php_error_docref(NULL, E_WARNING, "Cannot not handle circular references");
return 0;
}
+ GC_TRY_PROTECT_RECURSION(vars);
ZEND_HASH_FOREACH_KEY_VAL(vars, idx, key, entry) {
ZVAL_DEREF(entry);
if (key) {
@@ -4999,7 +4772,7 @@ MBSTRING_API int php_mb_check_encoding_recursive(HashTable *vars, const zend_str
break;
}
} ZEND_HASH_FOREACH_END();
- vars->u.v.nApplyCount--;
+ GC_TRY_UNPROTECT_RECURSION(vars);
mbfl_buffer_converter_delete(convd);
return valid;
}
@@ -5051,26 +4824,19 @@ PHP_FUNCTION(mb_check_encoding)
/* }}} */
-static inline zend_long php_mb_ord(const char* str, size_t str_len, const char* enc)
+static inline zend_long php_mb_ord(const char* str, size_t str_len, const char* enc_name)
{
+ const mbfl_encoding *enc;
enum mbfl_no_encoding no_enc;
- char* ret;
- size_t ret_len;
- zend_long cp;
-
- if (enc == NULL) {
- no_enc = MBSTRG(current_internal_encoding)->no_encoding;
- } else {
- no_enc = mbfl_name2no_encoding(enc);
- if (no_enc == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc);
- return -1;
- }
+ enc = php_mb_get_encoding(enc_name);
+ if (!enc) {
+ return -1;
}
+ no_enc = enc->no_encoding;
if (php_mb_is_unsupported_no_encoding(no_enc)) {
- php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc);
+ php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc_name);
return -1;
}
@@ -5080,32 +4846,33 @@ static inline zend_long php_mb_ord(const char* str, size_t str_len, const char*
}
{
- long orig_illegalchars = MBSTRG(illegalchars);
- MBSTRG(illegalchars) = 0;
- ret = php_mb_convert_encoding(str, str_len, "UCS-4BE", enc, &ret_len);
- if (MBSTRG(illegalchars) != 0) {
- if (ret) {
- efree(ret);
- }
- MBSTRG(illegalchars) = orig_illegalchars;
+ mbfl_wchar_device dev;
+ mbfl_convert_filter *filter;
+ zend_long cp;
+
+ mbfl_wchar_device_init(&dev);
+ filter = mbfl_convert_filter_new(
+ enc, &mbfl_encoding_wchar,
+ mbfl_wchar_device_output, 0, &dev);
+ if (!filter) {
+ php_error_docref(NULL, E_WARNING, "Creation of filter failed");
return -1;
}
- MBSTRG(illegalchars) = orig_illegalchars;
- }
+ mbfl_convert_filter_feed_string(filter, (const unsigned char *) str, str_len);
+ mbfl_convert_filter_flush(filter);
- if (ret == NULL) {
- return -1;
- }
-
- cp = (unsigned char) ret[0] << 24 | \
- (unsigned char) ret[1] << 16 | \
- (unsigned char) ret[2] << 8 | \
- (unsigned char) ret[3];
-
- efree(ret);
+ if (dev.pos < 1 || filter->num_illegalchar || dev.buffer[0] >= MBFL_WCSGROUP_UCS4MAX) {
+ mbfl_convert_filter_delete(filter);
+ mbfl_wchar_device_clear(&dev);
+ return -1;
+ }
- return cp;
+ cp = dev.buffer[0];
+ mbfl_convert_filter_delete(filter);
+ mbfl_wchar_device_clear(&dev);
+ return cp;
+ }
}
@@ -5135,26 +4902,22 @@ PHP_FUNCTION(mb_ord)
/* }}} */
-static inline char* php_mb_chr(zend_long cp, const char* enc, size_t *output_len)
+static inline zend_string *php_mb_chr(zend_long cp, const char *enc_name)
{
+ const mbfl_encoding *enc;
enum mbfl_no_encoding no_enc;
+ zend_string *ret;
char* buf;
size_t buf_len;
- char* ret;
- size_t ret_len;
- if (enc == NULL) {
- no_enc = MBSTRG(current_internal_encoding)->no_encoding;
- } else {
- no_enc = mbfl_name2no_encoding(enc);
- if (no_enc == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc);
- return NULL;
- }
+ enc = php_mb_get_encoding(enc_name);
+ if (!enc) {
+ return NULL;
}
+ no_enc = enc->no_encoding;
if (php_mb_is_unsupported_no_encoding(no_enc)) {
- php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc);
+ php_error_docref(NULL, E_WARNING, "Unsupported encoding \"%s\"", enc_name);
return NULL;
}
@@ -5168,42 +4931,32 @@ static inline char* php_mb_chr(zend_long cp, const char* enc, size_t *output_len
}
if (cp < 0x80) {
- ret_len = 1;
- ret = (char *) safe_emalloc(ret_len, 1, 1);
- ret[0] = cp;
- ret[1] = 0;
+ ret = ZSTR_CHAR(cp);
} else if (cp < 0x800) {
- ret_len = 2;
- ret = (char *) safe_emalloc(ret_len, 1, 1);
- ret[0] = 0xc0 | (cp >> 6);
- ret[1] = 0x80 | (cp & 0x3f);
- ret[2] = 0;
+ ret = zend_string_alloc(2, 0);
+ ZSTR_VAL(ret)[0] = 0xc0 | (cp >> 6);
+ ZSTR_VAL(ret)[1] = 0x80 | (cp & 0x3f);
+ ZSTR_VAL(ret)[2] = 0;
} else if (cp < 0x10000) {
- ret_len = 3;
- ret = (char *) safe_emalloc(ret_len, 1, 1);
- ret[0] = 0xe0 | (cp >> 12);
- ret[1] = 0x80 | ((cp >> 6) & 0x3f);
- ret[2] = 0x80 | (cp & 0x3f);
- ret[3] = 0;
+ ret = zend_string_alloc(3, 0);
+ ZSTR_VAL(ret)[0] = 0xe0 | (cp >> 12);
+ ZSTR_VAL(ret)[1] = 0x80 | ((cp >> 6) & 0x3f);
+ ZSTR_VAL(ret)[2] = 0x80 | (cp & 0x3f);
+ ZSTR_VAL(ret)[3] = 0;
} else {
- ret_len = 4;
- ret = (char *) safe_emalloc(ret_len, 1, 1);
- ret[0] = 0xf0 | (cp >> 18);
- ret[1] = 0x80 | ((cp >> 12) & 0x3f);
- ret[2] = 0x80 | ((cp >> 6) & 0x3f);
- ret[3] = 0x80 | (cp & 0x3f);
- ret[4] = 0;
- }
-
- if (output_len) {
- *output_len = ret_len;
+ ret = zend_string_alloc(4, 0);
+ ZSTR_VAL(ret)[0] = 0xf0 | (cp >> 18);
+ ZSTR_VAL(ret)[1] = 0x80 | ((cp >> 12) & 0x3f);
+ ZSTR_VAL(ret)[2] = 0x80 | ((cp >> 6) & 0x3f);
+ ZSTR_VAL(ret)[3] = 0x80 | (cp & 0x3f);
+ ZSTR_VAL(ret)[4] = 0;
}
return ret;
}
buf_len = 4;
- buf = (char *) safe_emalloc(buf_len, 1, 1);
+ buf = (char *) emalloc(buf_len + 1);
buf[0] = (cp >> 24) & 0xff;
buf[1] = (cp >> 16) & 0xff;
buf[2] = (cp >> 8) & 0xff;
@@ -5211,24 +4964,24 @@ static inline char* php_mb_chr(zend_long cp, const char* enc, size_t *output_len
buf[4] = 0;
{
+ char *ret_str;
+ size_t ret_len;
long orig_illegalchars = MBSTRG(illegalchars);
MBSTRG(illegalchars) = 0;
- ret = php_mb_convert_encoding(buf, buf_len, enc, "UCS-4BE", &ret_len);
+ ret_str = php_mb_convert_encoding_ex(buf, buf_len, enc, &mbfl_encoding_ucs4be, &ret_len);
if (MBSTRG(illegalchars) != 0) {
efree(buf);
- efree(ret);
+ efree(ret_str);
MBSTRG(illegalchars) = orig_illegalchars;
return NULL;
}
+ ret = zend_string_init(ret_str, ret_len, 0);
+ efree(ret_str);
MBSTRG(illegalchars) = orig_illegalchars;
}
efree(buf);
- if (output_len) {
- *output_len = ret_len;
- }
-
return ret;
}
@@ -5239,8 +4992,7 @@ PHP_FUNCTION(mb_chr)
zend_long cp;
char* enc = NULL;
size_t enc_len;
- char* ret;
- size_t ret_len;
+ zend_string* ret;
ZEND_PARSE_PARAMETERS_START(1, 2)
Z_PARAM_LONG(cp)
@@ -5248,44 +5000,41 @@ PHP_FUNCTION(mb_chr)
Z_PARAM_STRING(enc, enc_len)
ZEND_PARSE_PARAMETERS_END();
- ret = php_mb_chr(cp, enc, &ret_len);
-
+ ret = php_mb_chr(cp, enc);
if (ret == NULL) {
RETURN_FALSE;
}
- RETVAL_STRING(ret);
- efree(ret);
+ RETURN_STR(ret);
}
/* }}} */
-static inline char* php_mb_scrub(const char* str, size_t str_len, const char* enc, size_t *ret_len)
+static inline char* php_mb_scrub(const char* str, size_t str_len, const mbfl_encoding *enc, size_t *ret_len)
{
- return php_mb_convert_encoding(str, str_len, enc, enc, ret_len);
+ return php_mb_convert_encoding_ex(str, str_len, enc, enc, ret_len);
}
/* {{{ proto string|false mb_scrub([string str[, string encoding]]) */
PHP_FUNCTION(mb_scrub)
{
+ const mbfl_encoding *enc;
char* str;
size_t str_len;
- char *enc = NULL;
- size_t enc_len;
+ char *enc_name = NULL;
+ size_t enc_name_len;
char *ret;
size_t ret_len;
ZEND_PARSE_PARAMETERS_START(1, 2)
Z_PARAM_STRING(str, str_len)
Z_PARAM_OPTIONAL
- Z_PARAM_STRING(enc, enc_len)
+ Z_PARAM_STRING(enc_name, enc_name_len)
ZEND_PARSE_PARAMETERS_END();
- if (enc == NULL) {
- enc = (char *) MBSTRG(current_internal_encoding)->name;
- } else if (!mbfl_is_support_encoding(enc)) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", enc);
+ enc = php_mb_get_encoding(enc_name);
+ if (!enc) {
RETURN_FALSE;
}
@@ -5411,63 +5160,65 @@ MBSTRING_API char *php_mb_safe_strrchr(const char *s, unsigned int c, size_t nby
/* {{{ MBSTRING_API int php_mb_stripos()
*/
-MBSTRING_API int php_mb_stripos(int mode, const char *old_haystack, unsigned int old_haystack_len, const char *old_needle, unsigned int old_needle_len, long offset, const char *from_encoding)
+MBSTRING_API size_t php_mb_stripos(int mode, const char *old_haystack, size_t old_haystack_len, const char *old_needle, size_t old_needle_len, zend_long offset, const char *from_encoding)
{
- int n;
+ size_t n = (size_t) -1;
mbfl_string haystack, needle;
- n = -1;
+ const mbfl_encoding *enc;
+
+ enc = php_mb_get_encoding(from_encoding);
+ if (!enc) {
+ return (size_t) -1;
+ }
mbfl_string_init(&haystack);
mbfl_string_init(&needle);
haystack.no_language = MBSTRG(language);
- haystack.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ haystack.encoding = enc;
needle.no_language = MBSTRG(language);
- needle.no_encoding = MBSTRG(current_internal_encoding)->no_encoding;
+ needle.encoding = enc;
do {
+ /* We're using simple case-folding here, because we'd have to deal with remapping of
+ * offsets otherwise. */
+
size_t len = 0;
- haystack.val = (unsigned char *)php_unicode_convert_case(PHP_UNICODE_CASE_UPPER, (char *)old_haystack, old_haystack_len, &len, from_encoding);
+ haystack.val = (unsigned char *)mbstring_convert_case(PHP_UNICODE_CASE_FOLD_SIMPLE, (char *)old_haystack, old_haystack_len, &len, enc);
haystack.len = len;
if (!haystack.val) {
break;
}
- if (haystack.len <= 0) {
+ if (haystack.len == 0) {
break;
}
- needle.val = (unsigned char *)php_unicode_convert_case(PHP_UNICODE_CASE_UPPER, (char *)old_needle, old_needle_len, &len, from_encoding);
+ needle.val = (unsigned char *)mbstring_convert_case(PHP_UNICODE_CASE_FOLD_SIMPLE, (char *)old_needle, old_needle_len, &len, enc);
needle.len = len;
if (!needle.val) {
break;
}
- if (needle.len <= 0) {
- break;
- }
-
- haystack.no_encoding = needle.no_encoding = mbfl_name2no_encoding(from_encoding);
- if (haystack.no_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", from_encoding);
+ if (needle.len == 0) {
break;
}
- {
- int haystack_char_len = mbfl_strlen(&haystack);
+ if (offset != 0) {
+ size_t haystack_char_len = mbfl_strlen(&haystack);
if (mode) {
- if ((offset > 0 && offset > haystack_char_len) ||
- (offset < 0 && -offset > haystack_char_len)) {
+ if ((offset > 0 && (size_t)offset > haystack_char_len) ||
+ (offset < 0 && (size_t)(-offset) > haystack_char_len)) {
php_error_docref(NULL, E_WARNING, "Offset is greater than the length of haystack string");
break;
}
} else {
if (offset < 0) {
- offset += (long)haystack_char_len;
+ offset += (zend_long)haystack_char_len;
}
- if (offset < 0 || offset > haystack_char_len) {
+ if (offset < 0 || (size_t)offset > haystack_char_len) {
php_error_docref(NULL, E_WARNING, "Offset not contained in string");
break;
}
diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h
index df34a50b76..ede7b17b24 100644
--- a/ext/mbstring/mbstring.h
+++ b/ext/mbstring/mbstring.h
@@ -13,36 +13,11 @@
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Tsukada Takuya <tsukada@fminn.nagano.nagano.jp> |
+ | Hironori Sato <satoh@jpnnet.com> |
+ | Shigeru Kanemoto <sgk@happysize.co.jp> |
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
-/*
- * PHP 4 Multibyte String module "mbstring" (currently only for Japanese)
- *
- * History:
- * 2000.5.19 Release php-4.0RC2_jstring-1.0
- * 2001.4.1 Release php4_jstring-1.0.91
- * 2001.4.30 Release php4-jstring-1.1 (contribute to The PHP Group)
- * 2001.5.1 Renamed from jstring to mbstring (hirokawa@php.net)
- */
-
-/*
- * PHP3 Internationalization support program.
- *
- * Copyright (c) 1999,2000 by the PHP3 internationalization team.
- * All rights reserved.
- *
- * See README_PHP3-i18n-ja for more detail.
- *
- * Authors:
- * Hironori Sato <satoh@jpnnet.com>
- * Shigeru Kanemoto <sgk@happysize.co.jp>
- * Tsukada Takuya <tsukada@fminn.nagano.nagano.jp>
- */
-
-
#ifndef _MBSTRING_H
#define _MBSTRING_H
@@ -140,6 +115,9 @@ MBSTRING_API char *php_mb_safe_strrchr_ex(const char *s, unsigned int c,
MBSTRING_API char *php_mb_safe_strrchr(const char *s, unsigned int c,
size_t nbytes);
+MBSTRING_API char *php_mb_convert_encoding_ex(
+ const char *input, size_t length,
+ const mbfl_encoding *to_encoding, const mbfl_encoding *from_encoding, size_t *output_len);
MBSTRING_API char * php_mb_convert_encoding(const char *input, size_t length,
const char *_to_encoding,
const char *_from_encodings,
@@ -150,20 +128,14 @@ MBSTRING_API int php_mb_check_encoding_list(const char *encoding_list);
MBSTRING_API size_t php_mb_mbchar_bytes_ex(const char *s, const mbfl_encoding *enc);
MBSTRING_API size_t php_mb_mbchar_bytes(const char *s);
-MBSTRING_API int php_mb_encoding_detector_ex(const char *arg_string, int arg_length,
- char *arg_list);
-
-MBSTRING_API int php_mb_encoding_converter_ex(char **str, int *len, const char *encoding_to,
- const char *encoding_from);
-MBSTRING_API int php_mb_stripos(int mode, const char *old_haystack, unsigned int old_haystack_len, const char *old_needle, unsigned int old_needle_len, long offset, const char *from_encoding);
+MBSTRING_API size_t php_mb_stripos(int mode, const char *old_haystack, size_t old_haystack_len, const char *old_needle, size_t old_needle_len, zend_long offset, const char *from_encoding);
MBSTRING_API int php_mb_check_encoding(const char *input, size_t length, const char *enc);
/* internal use only */
-int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, uint32_t new_value_length);
+int _php_mb_ini_mbstring_internal_encoding_set(const char *new_value, size_t new_value_length);
ZEND_BEGIN_MODULE_GLOBALS(mbstring)
char *internal_encoding_name;
- enum mbfl_no_language language;
const mbfl_encoding *internal_encoding;
const mbfl_encoding *current_internal_encoding;
const mbfl_encoding *http_output_encoding;
@@ -185,15 +157,18 @@ ZEND_BEGIN_MODULE_GLOBALS(mbstring)
int filter_illegal_substchar;
int current_filter_illegal_mode;
int current_filter_illegal_substchar;
- long func_overload;
+ zend_long func_overload;
+ enum mbfl_no_language language;
zend_bool encoding_translation;
- long strict_detection;
- long illegalchars;
+ zend_bool strict_detection;
+ size_t illegalchars;
mbfl_buffer_converter *outconv;
void *http_output_conv_mimetypes;
#if HAVE_MBREGEX
struct _zend_mb_regex_globals *mb_regex_globals;
#endif
+ char *last_used_encoding_name;
+ const mbfl_encoding *last_used_encoding;
ZEND_END_MODULE_GLOBALS(mbstring)
#define MB_OVERLOAD_MAIL 1
diff --git a/ext/mbstring/oniguruma.patch b/ext/mbstring/oniguruma.patch
index 7c21f622fb..aa248839cf 100644
--- a/ext/mbstring/oniguruma.patch
+++ b/ext/mbstring/oniguruma.patch
@@ -1,61 +1,28 @@
-diff -wur oniguruma.orig/src/config.h.win32 oniguruma/src/config.h.win32
---- oniguruma.orig/src/config.h.win32 2017-07-13 17:12:45.228068900 +0200
-+++ oniguruma/src/config.h.win32 2017-07-13 16:11:19.955226200 +0200
+ ext/mbstring/oniguruma/src/config.h.win32 | 1 +
+ ext/mbstring/oniguruma/src/config.h.win64 | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/ext/mbstring/oniguruma/src/config.h.win32 b/ext/mbstring/oniguruma/src/config.h.win32
+index bdbdaf25c1..9a9c43f26d 100644
+--- a/ext/mbstring/oniguruma/src/config.h.win32
++++ b/ext/mbstring/oniguruma/src/config.h.win32
@@ -15,6 +15,7 @@
- #define SIZEOF_VOIDP 4
- #define SIZEOF_FLOAT 4
- #define SIZEOF_DOUBLE 8
+ #define SIZEOF_VOIDP 4
+ #define SIZEOF_FLOAT 4
+ #define SIZEOF_DOUBLE 8
+#define SIZEOF_SIZE_T 4
- #define HAVE_PROTOTYPES 1
- #define TOKEN_PASTE(x,y) x##y
- #define HAVE_STDARG_PROTOTYPES 1
-diff -wur oniguruma.orig/src/config.h.win64 oniguruma/src/config.h.win64
---- oniguruma.orig/src/config.h.win64 2017-07-13 17:12:45.273605000 +0200
-+++ oniguruma/src/config.h.win64 2017-07-13 16:11:19.957231300 +0200
+ #define HAVE_PROTOTYPES 1
+ #define TOKEN_PASTE(x,y) x##y
+ #define HAVE_STDARG_PROTOTYPES 1
+diff --git a/ext/mbstring/oniguruma/src/config.h.win64 b/ext/mbstring/oniguruma/src/config.h.win64
+index 01a86c7bb9..dec7b75773 100644
+--- a/ext/mbstring/oniguruma/src/config.h.win64
++++ b/ext/mbstring/oniguruma/src/config.h.win64
@@ -15,6 +15,7 @@
- #define SIZEOF_VOIDP 8
- #define SIZEOF_FLOAT 4
- #define SIZEOF_DOUBLE 8
+ #define SIZEOF_VOIDP 8
+ #define SIZEOF_FLOAT 4
+ #define SIZEOF_DOUBLE 8
+#define SIZEOF_SIZE_T 8
- #define HAVE_PROTOTYPES 1
- #define TOKEN_PASTE(x,y) x##y
- #define HAVE_STDARG_PROTOTYPES 1
-diff -wur oniguruma.orig/src/regint.h oniguruma/src/regint.h
---- oniguruma.orig/src/regint.h 2017-07-13 17:12:48.686073300 +0200
-+++ oniguruma/src/regint.h 2017-07-13 17:13:28.032286100 +0200
-@@ -201,17 +201,21 @@
- } while(0)
-
- /* sizeof(OnigCodePoint) */
-+#ifdef SIZEOF_SIZE_T
-+# define WORD_ALIGNMENT_SIZE SIZEOF_SIZE_T
-+#else
- #define WORD_ALIGNMENT_SIZE SIZEOF_LONG
-+#endif
-
- #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
- (pad_size) = WORD_ALIGNMENT_SIZE \
-- - ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\
-+ - ((size_t)(addr) % WORD_ALIGNMENT_SIZE);\
- if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\
- } while (0)
-
- #define ALIGNMENT_RIGHT(addr) do {\
- (addr) += (WORD_ALIGNMENT_SIZE - 1);\
-- (addr) -= ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\
-+ (addr) -= ((size_t)(addr) % WORD_ALIGNMENT_SIZE);\
- } while (0)
-
- #endif /* PLATFORM_UNALIGNED_WORD_ACCESS */
-@@ -662,7 +666,11 @@
- BBuf* mbuf; /* multi-byte info or NULL */
- } CClassNode;
-
-+#ifdef _WIN64
-+typedef __int64 OnigStackIndex;
-+#else
- typedef long OnigStackIndex;
-+#endif
-
- typedef struct _OnigStackType {
- unsigned int type;
+ #define HAVE_PROTOTYPES 1
+ #define TOKEN_PASTE(x,y) x##y
+ #define HAVE_STDARG_PROTOTYPES 1
diff --git a/ext/mbstring/oniguruma/COPYING b/ext/mbstring/oniguruma/COPYING
index c38f50223a..e999ab5bd7 100644
--- a/ext/mbstring/oniguruma/COPYING
+++ b/ext/mbstring/oniguruma/COPYING
@@ -1,28 +1,26 @@
Oniguruma LICENSE
-----------------
-/*-
- * Copyright (c) 2002-2015 K.Kosako <kkosako0@gmail.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
+Copyright (c) 2002-2018 K.Kosako <kkosako0@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/ext/mbstring/oniguruma/HISTORY b/ext/mbstring/oniguruma/HISTORY
index 74004e9743..c1d5b0a43b 100644
--- a/ext/mbstring/oniguruma/HISTORY
+++ b/ext/mbstring/oniguruma/HISTORY
@@ -1,5 +1,118 @@
History
+2018/09/03: Version 6.9.0
+
+2018/08/24: add Unicode Emoji properties
+2018/08/24: update Unicode version 11.0.0
+2018/08/21: support gperf 3.1 instead of 3.0.4
+2018/08/07: add ENABLE_POSIX_API switch into src/Makefile.windows
+2018/08/02: add make_win.bat and src/config.h.windows.in
+2018/06/25: add ENABLE_POSIX_API option into CMakeLists.txt
+2018/06/04: add .travis.yml (for TravisCI)
+
+2018/04/17: Version 6.8.2
+
+2018/04/13: add doc/CALLOUTS.API.ja
+2018/04/10: add doc/CALLOUTS.API
+2018/04/10: fix #87: Read unknown address in onig_error_code_to_str()
+2018/04/06: fix #86: typedef StateCheckNumType is unused
+2018/04/02: update automake 1.16.1
+2018/03/30: fix #84: stack-buffer-overflow in mbc_enc_len
+2018/03/28: PR #83: Improve CMake build
+2018/03/21: switch uses of UChar to OnigUChar in oniguruma.h (#80)
+
+2018/03/19: Version 6.8.1
+
+2018/03/19: update LTVERSION from 4:0:0 to 5:0:0
+2018/03/19: add flag, sb_range etc.. into OnigEncodingType
+2018/03/19: move regex structure from oniguruma.h to regint.h
+2018/03/19: ONIGENC_CTYPE_XXX to be enum (Issue #33)
+
+2018/03/16: Version 6.8.0
+
+2018/03/12: add doc/CALLOUTS.BUILTIN for builtin callouts
+2018/03/08: allow abbreviated notation for callouts (?(*name)..|..) (?(?{...})..|..)
+2018/03/02: NEW API: move onigenc_strdup() from regenc.h to oniguruma.h
+2018/02/21: remove all USE_COMBINATION_EXPLOSION_CHECK
+2018/02/15: fix #78: bad definition of PV_()
+2018/02/14: add configure option --enable-posix-api (for #77)
+2018/02/08: implement callouts of name
+2018/02/01: implement callouts of contents
+2018/01/30: define ONIGURUMA_VERSION_INT
+2018/01/29: enable USE_TRY_IN_MATCH_LIMIT by default
+2018/01/29: NEW API: onig_search_with_param() onig_match_with_param()
+2018/01/26: remove include windows.h from oniguruma.h
+
+2018/01/26: Version 6.7.1
+
+2018/01/25: disable USE_TRY_IN_MATCH_LIMIT by default
+2018/01/24: implement mechanism of try-in-match-limit
+2018/01/24: #76: rename EXPORT to ONIGURUMA_EXPORT
+2018/01/15: #73: update for automake 1.15.1
+2018/01/14: #74: update description of README
+2018/01/10: #72: Correct spelling and grammar in FAQ (English)
+2017/12/25: remove USE_COMBINATION_EXPLOSION_CHECK codes
+
+2017/12/11: Version 6.7.0
+
+2017/12/08: Disable \N and \O on ONIG_SYNTAX_RUBY
+2017/12/08: add ONIG_SYNTAX_ONIGURUMA (default syntax)
+2017/12/05: restructure StackType
+2017/11/13: implement subexp calls (?R), (?&name), (?-n), (?+n) for Perl syntax
+2017/09/25: use string pool of gperf for Unicode Property lookup function
+2017/09/16: fix #70: an empty greedy regex and a word boundary (.*\b) fails
+2017/09/13: remove a stack type STK_POS
+2017/09/08: fix #69: add a declaration of onig_end()
+2017/09/07: fix #68: Compilation failure in out-of-source build
+2017/09/03: [new] hexadecimal codepoint \uHHHH
+
+2017/08/30: Version 6.6.1
+
+2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*)
+
+2017/08/28: Version 6.6.0
+
+2017/08/26: fix #67: can't compile with Visual Studio 2005
+2017/08/24: rename Absent clear to Range clear
+2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y
+2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties
+2017/08/16: --enable-crnl-as-line-terminator to be deprecated
+2017/08/15: [new] ASCII only mode options (?WDSP)
+2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII options
+2017/08/11: disable OP_CCLASS_NODE
+2017/08/11: [spec] Absent clear restore previous range value at backtrack
+2017/08/07: optimize for simple one char repetition in Absent expression
+2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression
+2017/08/04: remove compile switch USE_NAMED_GROUP
+
+2017/08/03: Version 6.5.0
+
+2017/07/30: [new] support Absent clear (Absent functions)
+2017/07/25: abolish configure option: --enable-combination-explosion-check
+2017/07/23: [new] support Absent functions (?~...)
+2017/07/14: fix #65: SIZEOF_SIZE_T doesn't exist on certain architecutres
+2017/07/11: [new] support \O (true anychar)
+2017/07/10: [new] support \K (keep)
+2017/07/10: add new node type: NODE_GIMMICK
+2017/07/07: [new] support \N (no newline)
+2017/07/05: [new] support \R (general newline)
+2017/07/05: [new] support if-then-else syntax
+2017/07/04: [new] support backref validity checker
+
+2017/07/03: Version 6.4.0
+
+2017/06/30: fix memory leaks
+2017/06/29: fix memory leaks
+2017/06/28: change encoding of doc/XXXX.ja from EUC-JP to UTF-8
+2017/06/28: update doc/RE, and doc/RE.ja
+2017/06/26: fix fatal bug of endless repeat check on Windows
+2017/06/26: PR #62 : add check for return values
+2017/06/23: [new] support call zero (\g{0})
+2017/06/23: [new] support relative call by positive number
+2017/06/23: [new] support relative back-reference by positive number
+2017/06/15: fix #60 : check value type
+2017/06/02: change output format for ONIG_DEBUG_COMPILE and ONIG_DEBUG_MATCH
+
2017/05/29: Version 6.3.0
2017/05/24: fix #60 : invalid state(CCS_VALUE) in parse_char_class()
@@ -1924,7 +2037,7 @@ History
2003/01/31: [impl] rename TTRANS() to TOLOWER().
2003/01/30: [bug] .c.o --> .c.obj in win32\Makefile.
2003/01/30: [impl] add -DNOT_RUBY to Makefile.in.
- NOT_RUBY is refered in regint.h for escape double
+ NOT_RUBY is referred in regint.h for escape double
including config.h.
2003/01/30: [impl] when string hasn't case ambiguity, don't compile
to ignore case opcode.
diff --git a/ext/mbstring/oniguruma/INSTALL b/ext/mbstring/oniguruma/INSTALL
index 2099840756..8865734f81 100644
--- a/ext/mbstring/oniguruma/INSTALL
+++ b/ext/mbstring/oniguruma/INSTALL
@@ -1,8 +1,8 @@
Installation Instructions
*************************
-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
-Inc.
+ Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
+Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -12,97 +12,96 @@ without warranty of any kind.
Basic Installation
==================
- Briefly, the shell command `./configure && make && make install'
+ Briefly, the shell command './configure && make && make install'
should configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
+more-detailed instructions are generic; see the 'README' file for
instructions specific to this package. Some packages provide this
-`INSTALL' file but do not implement all of the features documented
+'INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
- The `configure' shell script attempts to guess correct values for
+ The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions. Finally, it creates a shell script 'config.status' that
you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
+ It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring. Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
+some point 'config.cache' contains results you don't want to keep, you
may remove or edit it.
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
+ The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'. You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
The simplest way to compile this package is:
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
+ 1. 'cd' to the directory containing the package's source code and type
+ './configure' to configure the package for your system.
- Running `configure' might take a while. While running, it prints
+ Running 'configure' might take a while. While running, it prints
some messages telling which features it is checking for.
- 2. Type `make' to compile the package.
+ 2. Type 'make' to compile the package.
- 3. Optionally, type `make check' to run any self-tests that come with
+ 3. Optionally, type 'make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
- 4. Type `make install' to install the programs and any data files and
+ 4. Type 'make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
- user, and only the `make install' phase executed with root
+ user, and only the 'make install' phase executed with root
privileges.
- 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ 5. Optionally, type 'make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
- regular user, particularly if the prior `make install' required
+ regular user, particularly if the prior 'make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
+ source code directory by typing 'make clean'. To also remove the
+ files that 'configure' created (so you can compile the package for
+ a different kind of computer), type 'make distclean'. There is
+ also a 'make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
- 7. Often, you can also type `make uninstall' to remove the installed
+ 7. Often, you can also type 'make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
- 8. Some packages, particularly those that use Automake, provide `make
+ 8. Some packages, particularly those that use Automake, provide 'make
distcheck', which can by used by developers to test that all other
- targets like `make install' and `make uninstall' work correctly.
+ targets like 'make install' and 'make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
+the 'configure' script does not know about. Run './configure --help'
for details on some of the pertinent environment variables.
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
+ You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here is
+an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
@@ -113,21 +112,21 @@ Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
+own directory. To do this, you can use GNU 'make'. 'cd' to the
directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'. This
-is known as a "VPATH" build.
+the 'configure' script. 'configure' automatically checks for the source
+code in the directory that 'configure' is in and in '..'. This is known
+as a "VPATH" build.
- With a non-GNU `make', it is safer to compile the package for one
+ With a non-GNU 'make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
+installed the package for one architecture, use 'make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor. Like
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
@@ -136,105 +135,104 @@ this:
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
+using the 'lipo' tool if you have problems.
Installation Names
==================
- By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
+ By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc. You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them. In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
+options like '--bindir=DIR' to specify different values for particular
+kinds of files. Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
+correct locations to 'configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
+'make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
-affected directory. For example, `make install
+affected directory. For example, 'make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
-`${prefix}'. Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated. The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
- The second method involves providing the `DESTDIR' variable. For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names. The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
+'${prefix}'. Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated. The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation. However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the 'DESTDIR' variable. For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names. The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+ Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System). The
+'README' should mention any '--enable-' and '--with-' options that the
package recognizes.
- For packages that use the X Window System, `configure' can usually
+ For packages that use the X Window System, 'configure' can usually
find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
-execution of `make' will be. For these packages, running `./configure
+execution of 'make' will be. For these packages, running './configure
--enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
+overridden with 'make V=1'; while running './configure
--disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
+overridden with 'make V=0'.
Particular systems
==================
- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
-CC is not installed, it is recommended to use the following options in
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
+is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
- HP-UX `make' updates targets which have the same time stamps as
-their prerequisites, which makes it generally unusable when shipped
-generated files such as `configure' are involved. Use GNU `make'
-instead.
+ HP-UX 'make' updates targets which have the same time stamps as their
+prerequisites, which makes it generally unusable when shipped generated
+files such as 'configure' are involved. Use GNU 'make' instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
-a workaround. If GNU CC is not installed, it is therefore recommended
-to try
+parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
+workaround. If GNU CC is not installed, it is therefore recommended to
+try
./configure CC="cc"
@@ -242,26 +240,26 @@ and if that doesn't work, try
./configure CC="cc -nodtk"
- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+ On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
+these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
- On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'. It is recommended to use the following options:
+ On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
- There may be some features `configure' cannot figure out
+ There may be some features 'configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
+_same_ architectures, 'configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
+'--build=TYPE' option. TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
@@ -270,101 +268,101 @@ where SYSTEM can have one of these forms:
OS
KERNEL-OS
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
+ See the file 'config.sub' for the possible values of each field. If
+'config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
+use the option '--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
+eventually be run) with '--host=TYPE'.
Sharing Defaults
================
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
+ If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists. Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
+environment passed to 'configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
+them in the 'configure' command line, using 'VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
-causes the specified `gcc' to be used as the C compiler (unless it is
+causes the specified 'gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf limitation. Until the limitation is lifted, you can use
-this workaround:
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation. Until the limitation is lifted, you can use this
+workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
-`configure' Invocation
+'configure' Invocation
======================
- `configure' recognizes the following options to control how it
+ 'configure' recognizes the following options to control how it
operates.
-`--help'
-`-h'
- Print a summary of all of the options to `configure', and exit.
+'--help'
+'-h'
+ Print a summary of all of the options to 'configure', and exit.
-`--help=short'
-`--help=recursive'
+'--help=short'
+'--help=recursive'
Print a summary of the options unique to this package's
- `configure', and exit. The `short' variant lists options used
- only in the top level, while the `recursive' variant lists options
- also present in any nested packages.
+ 'configure', and exit. The 'short' variant lists options used only
+ in the top level, while the 'recursive' variant lists options also
+ present in any nested packages.
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
+'--version'
+'-V'
+ Print the version of Autoconf used to generate the 'configure'
script, and exit.
-`--cache-file=FILE'
+'--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
+ traditionally 'config.cache'. FILE defaults to '/dev/null' to
disable caching.
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
+'--config-cache'
+'-C'
+ Alias for '--cache-file=config.cache'.
-`--quiet'
-`--silent'
-`-q'
+'--quiet'
+'--silent'
+'-q'
Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
+ suppress all normal output, redirect it to '/dev/null' (any error
messages will still be shown).
-`--srcdir=DIR'
+'--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
+ 'configure' can determine that directory automatically.
-`--prefix=DIR'
- Use DIR as the installation prefix. *note Installation Names::
- for more details, including other options available for fine-tuning
- the installation locations.
+'--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names:: for
+ more details, including other options available for fine-tuning the
+ installation locations.
-`--no-create'
-`-n'
+'--no-create'
+'-n'
Run the configure checks, but stop before creating any output
files.
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
+'configure' also accepts some other, not widely useful, options. Run
+'configure --help' for more details.
diff --git a/ext/mbstring/oniguruma/README b/ext/mbstring/oniguruma/README
index a3d3ab487a..7089df205d 100644
--- a/ext/mbstring/oniguruma/README
+++ b/ext/mbstring/oniguruma/README
@@ -1,12 +1,30 @@
-README 2016/05/06
+README 2018/04/05
-Oniguruma ---- (C) K.Kosako <kkosako0@gmail.com>
+Oniguruma ---- (C) K.Kosako
https://github.com/kkos/oniguruma
-Oniguruma is a regular expressions library.
-The characteristics of this library is that different character encoding
-for every regular expression object can be specified.
+FIXED Security Issues (in Oniguruma 6.3.0):
+ CVE-2017-9224, CVE-2017-9225, CVE-2017-9226
+ CVE-2017-9227, CVE-2017-9228, CVE-2017-9229
+
+---
+Oniguruma is a modern and flexible regular expressions library. It
+encompasses features from different regular expression implementations
+that traditionally exist in different languages. It comes close to
+being a complete superset of all regular expression features found
+in other regular expression implementations.
+
+Its features include:
+* Character encoding can be specified per regular expression object.
+* Several regular expression types are supported:
+ * POSIX
+ * Grep
+ * GNU Regex
+ * Perl
+ * Java
+ * Ruby
+ * Emacs
Supported character encodings:
@@ -174,16 +192,4 @@ Source Files
win32/config.h config.h for Win32
-
-ToDo
-
- ? case fold flag: Katakana <-> Hiragana.
- ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS.
- ?? transmission stopper. (return ONIG_STOP from match_at())
-
and I'm thankful to Akinori MUSHA.
-
-
-Mail Address: K.Kosako <kkosako0@gmail.com>
diff --git a/ext/mbstring/oniguruma/README.ja b/ext/mbstring/oniguruma/README.ja
deleted file mode 100644
index 826a8e74df..0000000000
--- a/ext/mbstring/oniguruma/README.ja
+++ /dev/null
@@ -1,195 +0,0 @@
-README.ja 2016/05/06
-
-µ´¼Ö ---- (C) K.Kosako <kkosako0@gmail.com>
-
-https://github.com/kkos/oniguruma
-
-µ´¼Ö¤ÏÀµµ¬É½¸½¥é¥¤¥Ö¥é¥ê¤Ç¤¢¤ë¡£
-¤³¤Î¥é¥¤¥Ö¥é¥ê¤ÎÆÃĹ¤Ï¡¢¤½¤ì¤¾¤ì¤ÎÀµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤´¤È¤Ë
-ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄê¤Ç¤­¤ë¤³¤È¤Ç¤¢¤ë¡£
-
-¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°:
-
- ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
- EUC-JP, EUC-TW, EUC-KR, EUC-CN,
- Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
- ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
- ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
- ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
-
-* GB18030: µ×ÊÝ·òÍλáÄó¶¡
-* CP1251: Byte»áÄó¶¡
-------------------------------------------------------------
-
-¥é¥¤¥»¥ó¥¹
-
- BSD¥é¥¤¥»¥ó¥¹
-
-
-¥¤¥ó¥¹¥È¡¼¥ë
-
- ¥±¡¼¥¹£±: Unix¤ÈCygwin´Ä¶­
-
- 1. autoreconf -vfi (* configure¥¹¥¯¥ê¥×¥È¤¬¤Ê¤¤¤È¤­¤À¤±)
-
- 2. ./configure
- 3. make
- 4. make install
-
- ¥¢¥ó¥¤¥ó¥¹¥È¡¼¥ë
-
- make uninstall
-
- ¹½À®³Îǧ
-
- onig-config --cflags
- onig-config --libs
- onig-config --prefix
- onig-config --exec-prefix
-
-
-
- ¥±¡¼¥¹£²: Windows 64/32bit (Visual Studio)´Ä¶­
-
- make_win64 ¤¢¤ë¤¤¤Ï make_win32 ¤ò¼Â¹Ô
-
- onig_s.lib: static link library
- onig.dll: dynamic link library
-
- * Æ°ºî¥Æ¥¹¥È (ASCII/Shift_JIS)
- 1. cd src
- 2. copy ..\windows\testc.c .
- 3. nmake -f Makefile.windows ctest
-
- (Visual Studio Community 2015 ¤ÇÆ°ºî³Îǧ)
-
-
-
-Àµµ¬É½¸½
-
- doc/RE.ja¤ò»²¾È
-
-
-»ÈÍÑÊýË¡
-
- »ÈÍѤ¹¤ë¥×¥í¥°¥é¥à¤Ç¡¢oniguruma.h¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë(Oniguruma API¤Î¾ì¹ç)¡£
- Oniguruma API¤Ë¤Ä¤¤¤Æ¤Ï¡¢doc/API.ja¤ò»²¾È¡£
-
- oniguruma.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·¿Ì¾UChar(== unsigned char)¤ò̵¸ú¤Ë¤·¤¿¤¤¾ì¹ç
- ¤Ë¤Ï¡¢ONIG_ESCAPE_UCHAR_COLLISION¤òdefine¤·¤Æ¤«¤éoniguruma.h¤ò¥¤¥ó¥¯¥ë¡¼¥É
- ¤¹¤ë¤³¤È¡£¤³¤Î¤È¤­¤Ë¤ÏUChar¤ÏÄêµÁ¤µ¤ì¤º¡¢OnigUChar¤È¤¤¤¦Ì¾Á°¤ÎÄêµÁ¤Î¤ß¤¬
- Í­¸ú¤Ë¤Ê¤ë¡£
-
- oniguruma.h¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë·¿Ì¾regex_t¤ò̵¸ú¤Ë¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢
- ONIG_ESCAPE_REGEX_T_COLLISION¤òdefine¤·¤Æ¤«¤éoniguruma.h¤ò¥¤¥ó¥¯¥ë¡¼¥É
- ¤¹¤ë¤³¤È¡£¤³¤Î¤È¤­¤Ë¤Ïregex_t¤ÏÄêµÁ¤µ¤ì¤º¡¢OnigRegexType, OnigRegex¤È¤¤¤¦
- ̾Á°¤ÎÄêµÁ¤Î¤ß¤¬Í­¸ú¤Ë¤Ê¤ë¡£
-
- Unix/Cygwin¾å¤Ç¥³¥ó¥Ñ¥¤¥ë¡¢¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤ÎÎ㡧
- (prefix¤¬/usr/local¤Î¤È¤­)
- cc sample.c -L/usr/local/lib -lonig
-
- GNU libtool¤ò»ÈÍѤ·¤Æ¤¤¤ë¤Î¤Ç¡¢¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤¬¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¥µ¥Ý¡¼¥È¤·¤Æ
- ¤¤¤ì¤Ð¡¢»ÈÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
- ÀÅŪ¥é¥¤¥Ö¥é¥ê¤È¶¦Í­¥é¥¤¥Ö¥é¥ê¤Î¤É¤Á¤é¤ò»ÈÍѤ¹¤ë¤«¤ò»ØÄꤹ¤ëÊýË¡¡¢¼Â¹Ô»þÅÀ¤Ç¤Î
- ´Ä¶­ÀßÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼«Ê¬¤ÇÄ´¤Ù¤Æ²¼¤µ¤¤¡£
-
-
- Win32¤Ç¥¹¥¿¥Æ¥£¥Ã¥¯¥ê¥ó¥¯¥é¥¤¥Ö¥é¥ê(onig_s.lib)¤ò¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢
- ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¤Ë -DONIG_EXTERN=extern ¤ò¥³¥ó¥Ñ¥¤¥ë°ú¿ô¤ËÄɲ乤뤳¤È¡£
-
-
-»ÈÍÑÎã¥×¥í¥°¥é¥à
-
- sample/simple.c ºÇ¾®Îã (Oniguruma API)
- sample/names.c ̾Á°ÉÕ¤­¥°¥ë¡¼¥×¥³¡¼¥ë¥Ð¥Ã¥¯»ÈÍÑÎã
- sample/encode.c ´ö¤Ä¤«¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°»ÈÍÑÎã
- sample/listcap.c Êá³ÍÍúÎòµ¡Ç½¤Î»ÈÍÑÎã
- sample/posix.c POSIX API»ÈÍÑÎã
- sample/sql.c ²ÄÊѥ᥿ʸ»úµ¡Ç½»ÈÍÑÎã (SQL-like ¥Ñ¥¿¡¼¥ó)
- sample/user_property.c ¥æ¡¼¥¶ÄêµÁUnicode¥×¥í¥Ñ¥Æ¥£¤Î»ÈÍÑÎã
-
-
-¥Æ¥¹¥È¥×¥í¥°¥é¥à
- sample/syntax.c Perl¡¢Java¡¢ASISʸˡ¤Î¥Æ¥¹¥È
- sample/crnl.c --enable-crnl-as-line-terminator ¥Æ¥¹¥È
-
-
-¥½¡¼¥¹¥Õ¥¡¥¤¥ë
-
- oniguruma.h µ´¼ÖAPI¥Ø¥Ã¥À (¸ø³«)
- onig-config.in onig-config¥×¥í¥°¥é¥à ¥Æ¥ó¥×¥ì¡¼¥È
-
- regenc.h ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°ÏÈÁȤߥإåÀ
- regint.h ÆâÉôÀë¸À
- regparse.h regparse.c¤Èregcomp.c¤Î¤¿¤á¤ÎÆâÉôÀë¸À
- regcomp.c ¥³¥ó¥Ñ¥¤¥ë¡¢ºÇŬ²½´Ø¿ô
- regenc.c ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°ÏÈÁȤß
- regerror.c ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸´Ø¿ô
- regext.c ³ÈÄ¥API´Ø¿ô
- regexec.c ¸¡º÷¡¢¾È¹ç´Ø¿ô
- regparse.c Àµµ¬É½¸½¥Ñ¥¿¡¼¥ó²òÀÏ´Ø¿ô
- regsyntax.c Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ´Ø¿ô¡¢Áȹþ¤ßʸˡÄêµÁ
- regtrav.c Êá³ÍÍúÎòÌÚ½ä²ó´Ø¿ô
- regversion.c ÈǾðÊó´Ø¿ô
- st.h ¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë´Ø¿ôÀë¸À
- st.c ¥Ï¥Ã¥·¥å¥Æ¡¼¥Ö¥ë´Ø¿ô
-
- oniggnu.h GNU regex API¥Ø¥Ã¥À (¸ø³«)
- reggnu.c GNU regex API´Ø¿ô
-
- onigposix.h POSIX API¥Ø¥Ã¥À (¸ø³«)
- regposerr.c POSIX API¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸´Ø¿ô
- regposix.c POSIX API´Ø¿ô
-
- mktable.c ʸ»ú¥¿¥¤¥×¥Æ¡¼¥Ö¥ëÀ¸À®¥×¥í¥°¥é¥à
- ascii.c ASCII ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- euc_jp.c EUC-JP ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- euc_tw.c EUC-TW ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- euc_kr.c EUC-KR, EUC-CN ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- sjis.c Shift_JIS ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- big5.c Big5 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- gb18030.c GB18030 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- koi8.c KOI8 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- koi8_r.c KOI8-R ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- cp1251.c CP1251 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- iso8859_1.c ISO-8859-1 (Latin-1)
- iso8859_2.c ISO-8859-2 (Latin-2)
- iso8859_3.c ISO-8859-3 (Latin-3)
- iso8859_4.c ISO-8859-4 (Latin-4)
- iso8859_5.c ISO-8859-5 (Cyrillic)
- iso8859_6.c ISO-8859-6 (Arabic)
- iso8859_7.c ISO-8859-7 (Greek)
- iso8859_8.c ISO-8859-8 (Hebrew)
- iso8859_9.c ISO-8859-9 (Latin-5 ¤Þ¤¿¤Ï Turkish)
- iso8859_10.c ISO-8859-10 (Latin-6 ¤Þ¤¿¤Ï Nordic)
- iso8859_11.c ISO-8859-11 (Thai)
- iso8859_13.c ISO-8859-13 (Latin-7 ¤Þ¤¿¤Ï Baltic Rim)
- iso8859_14.c ISO-8859-14 (Latin-8 ¤Þ¤¿¤Ï Celtic)
- iso8859_15.c ISO-8859-15 (Latin-9 ¤Þ¤¿¤Ï West European with Euro)
- iso8859_16.c ISO-8859-16
- (Latin-10 ¤Þ¤¿¤Ï South-Eastern European with Euro)
- utf8.c UTF-8 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- utf16_be.c UTF-16BE ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- utf16_le.c UTF-16LE ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- utf32_be.c UTF-32BE ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- utf32_le.c UTF-32LE ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- unicode.c Unicode¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¶¦Ä̽èÍý
-
- win32/Makefile Win32ÍÑ Makefile (for VC++)
- win32/config.h Win32ÍÑ config.h
-
-
-
-»Ä·ï
-
- ? case fold flag: Katakana <-> Hiragana
- ? ONIG_OPTION_NOTBOS/NOTEOSÄɲà (\A, \z, \Z)
- ?? \X (== \PM\pM*)
- ?? ʸˡÍ×ÁÇ ONIG_SYN_CONTEXT_INDEP_ANCHORS¤Î¼ÂÁõ
- ?? ¸¡º÷°ÌÃÖ°ÜÆ°Ää»ß±é»»»Ò (match_at()¤«¤éONIG_STOP¤òÊÖ¤¹)
-
-and I'm thankful to Akinori MUSHA.
-
-
-¥¢¥É¥ì¥¹: K.Kosako <kkosako0@gmail.com>
diff --git a/ext/mbstring/oniguruma/README.md b/ext/mbstring/oniguruma/README.md
index a3abc750ac..cf62b33e65 100644
--- a/ext/mbstring/oniguruma/README.md
+++ b/ext/mbstring/oniguruma/README.md
@@ -1,11 +1,15 @@
+[![Build Status](https://travis-ci.org/kkos/oniguruma.svg?branch=master)](https://travis-ci.org/kkos/oniguruma)
+
Oniguruma
=========
https://github.com/kkos/oniguruma
-Oniguruma is a regular expressions library.
-The characteristics of this library is that different character encoding
-for every regular expression object can be specified.
+Oniguruma is a modern and flexible regular expressions library. It
+encompasses features from different regular expression implementations
+that traditionally exist in different languages.
+
+Character encoding can be specified per regular expression object.
Supported character encodings:
@@ -20,10 +24,94 @@ Supported character encodings:
* CP1251: contributed by Byte
+New feature of version 6.9.0
+--------------------------
+
+* Update Unicode version 11.0.0
+* NEW: add Emoji properties
+
+
+New feature of version 6.8.2
+--------------------------
+
+* Fix: #80 UChar in header causes issue
+* NEW API: onig_set_callout_user_data_of_match_param() (* omission in 6.8.0)
+* add doc/CALLOUTS.API and doc/CALLOUTS.API.ja
+
+
+New feature of version 6.8.1
+--------------------------
+
+* Update shared library version to 5.0.0 for API incompatible changes from 6.7.1
+
+
+New feature of version 6.8.0
+--------------------------
+
+* Retry-limit-in-match function enabled by default
+* NEW: configure option --enable-posix-api=no (* enabled by default)
+* NEW API: onig_search_with_param(), onig_match_with_param()
+* NEW: Callouts of contents (?{...contents...}) (?{...}\[tag]\[X<>]) (?{{...}})
+* NEW: Callouts of name (*name) (*name\[tag]{args...})
+* NEW: Builtin callouts (*FAIL) (*MISMATCH) (*ERROR{n}) (*COUNT) (*MAX{n}) etc..
+* Examples of Callouts program: [callout.c](sample/callout.c), [count.c](sample/count.c), [echo.c](sample/echo.c)
+
+
+New feature of version 6.7.1
+--------------------------
+
+* NEW: Mechanism of retry-limit-in-match (* disabled by default)
+
+
+New feature of version 6.7.0
+--------------------------
+
+* NEW: hexadecimal codepoint \uHHHH
+* NEW: add ONIG_SYNTAX_ONIGURUMA (== ONIG_SYNTAX_DEFAULT)
+* Disabled \N and \O on ONIG_SYNTAX_RUBY
+* Reduced size of object file
+
+
+New feature of version 6.6.0
+--------------------------
+
+* NEW: ASCII only mode options for character type/property (?WDSP)
+* NEW: Extended Grapheme Cluster boundary \y, \Y (*original)
+* NEW: Extended Grapheme Cluster \X
+* Range-clear (Absent-clear) operator restores previous range in retractions.
+
+
+New feature of version 6.5.0
+--------------------------
+
+* NEW: \K (keep)
+* NEW: \R (general newline) \N (no newline)
+* NEW: \O (true anychar)
+* NEW: if-then-else (?(...)...\|...)
+* NEW: Backreference validity checker (?(xxx)) (*original)
+* NEW: Absent repeater (?~absent) \[is equal to (?\~\|absent|\O*)]
+* NEW: Absent expression (?~|absent|expr) (*original)
+* NEW: Absent stopper (?~|absent) (*original)
+
+
+New feature of version 6.4.0
+--------------------------
+
+* Fix fatal problem of endless repeat on Windows
+* NEW: call zero (call the total regexp) \g<0>
+* NEW: relative backref/call by positive number \k<+n>, \g<+n>
+
+
New feature of version 6.3.0
--------------------------
-* NEW SYNTAX: escape-o-brace for octal codepoint.
+* NEW: octal codepoint \o{.....}
+* Fixed CVE-2017-9224
+* Fixed CVE-2017-9225
+* Fixed CVE-2017-9226
+* Fixed CVE-2017-9227
+* Fixed CVE-2017-9228
+* Fixed CVE-2017-9229
New feature of version 6.1.2
@@ -77,7 +165,7 @@ Install
### Case 2: Windows 64/32bit platform (Visual Studio)
- execute make_win64 or make_win32
+ Execute make_win.bat
onig_s.lib: static link library
onig.dll: dynamic link library
@@ -135,6 +223,7 @@ Sample Programs
|sample/scan.c |example of using onig_scan(). |
|sample/sql.c |example of the variable meta characters. |
|sample/user_property.c|example of user defined Unicode property. |
+|sample/callout.c |example of callouts. |
Test Programs
@@ -205,5 +294,4 @@ Source Files
|utf32_le.c |UTF-32LE encoding |
|unicode.c |common codes of Unicode encoding |
|unicode_fold_data.c|Unicode folding data |
-|win32/Makefile |Makefile for Win32 (VC++) |
-|win32/config.h |config.h for Win32 |
+|windows/testc.c |Test program for Windowns (VC++) |
diff --git a/ext/mbstring/oniguruma/README_japanese b/ext/mbstring/oniguruma/README_japanese
new file mode 100644
index 0000000000..b1b249acd7
--- /dev/null
+++ b/ext/mbstring/oniguruma/README_japanese
@@ -0,0 +1,183 @@
+README.ja 2017/08/25
+
+鬼車 ---- (C) K.Kosako <kkosako0@gmail.com>
+
+https://github.com/kkos/oniguruma
+
+鬼車ã¯æ­£è¦è¡¨ç¾ãƒ©ã‚¤ãƒ–ラリã§ã‚る。
+ã“ã®ãƒ©ã‚¤ãƒ–ラリã®ç‰¹é•·ã¯ã€ãã‚Œãžã‚Œã®æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトã”ã¨ã«
+文字エンコーディングを指定ã§ãã‚‹ã“ã¨ã§ã‚る。
+
+サãƒãƒ¼ãƒˆã—ã¦ã„る文字エンコーディング:
+
+ ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
+ EUC-JP, EUC-TW, EUC-KR, EUC-CN,
+ Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
+ ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
+ ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
+ ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
+
+* GB18030: ä¹…ä¿å¥æ´‹æ°æä¾›
+* CP1251: Byteæ°æä¾›
+------------------------------------------------------------
+
+ライセンス
+
+ BSDライセンス
+
+
+インストール
+
+ ケース1: Unixã¨Cygwin環境
+
+ 1. autoreconf -vfi (* configureスクリプトãŒãªã„ã¨ãã ã‘)
+
+ 2. ./configure
+ 3. make
+ 4. make install
+
+ アンインストール
+
+ make uninstall
+
+ 構æˆç¢ºèª
+
+ onig-config --cflags
+ onig-config --libs
+ onig-config --prefix
+ onig-config --exec-prefix
+
+
+
+ ケース2: Windows 64/32bit (Visual Studio)環境
+
+ make_win64 ã‚ã‚‹ã„㯠make_win32 を実行
+
+ onig_s.lib: static link library
+ onig.dll: dynamic link library
+
+ * 動作テスト (ASCII/Shift_JIS)
+ 1. cd src
+ 2. copy ..\windows\testc.c .
+ 3. nmake -f Makefile.windows ctest
+
+ (Visual Studio Community 2015 ã§å‹•ä½œç¢ºèª)
+
+
+
+æ­£è¦è¡¨ç¾
+
+ doc/RE.jaã‚’å‚ç…§
+
+
+使用方法
+
+ 使用ã™ã‚‹ãƒ—ログラムã§ã€oniguruma.hをインクルードã™ã‚‹(Oniguruma APIã®å ´åˆ)。
+ Oniguruma APIã«ã¤ã„ã¦ã¯ã€doc/API.jaã‚’å‚照。
+
+ oniguruma.hã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹åž‹åUChar(== unsigned char)を無効ã«ã—ãŸã„å ´åˆ
+ ã«ã¯ã€ONIG_ESCAPE_UCHAR_COLLISIONã‚’defineã—ã¦ã‹ã‚‰oniguruma.hをインクルード
+ ã™ã‚‹ã“ã¨ã€‚ã“ã®ã¨ãã«ã¯UCharã¯å®šç¾©ã•ã‚Œãšã€OnigUCharã¨ã„ã†åå‰ã®å®šç¾©ã®ã¿ãŒ
+ 有効ã«ãªã‚‹ã€‚
+
+ oniguruma.hã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹åž‹åregex_tを無効ã«ã—ãŸã„å ´åˆã«ã¯ã€
+ ONIG_ESCAPE_REGEX_T_COLLISIONã‚’defineã—ã¦ã‹ã‚‰oniguruma.hをインクルード
+ ã™ã‚‹ã“ã¨ã€‚ã“ã®ã¨ãã«ã¯regex_tã¯å®šç¾©ã•ã‚Œãšã€OnigRegexType, OnigRegexã¨ã„ã†
+ åå‰ã®å®šç¾©ã®ã¿ãŒæœ‰åŠ¹ã«ãªã‚‹ã€‚
+
+ Unix/Cygwin上ã§ã‚³ãƒ³ãƒ‘イルã€ãƒªãƒ³ã‚¯ã™ã‚‹å ´åˆã®ä¾‹ï¼š
+ (prefixãŒ/usr/localã®ã¨ã)
+ cc sample.c -L/usr/local/lib -lonig
+
+ GNU libtoolを使用ã—ã¦ã„ã‚‹ã®ã§ã€ãƒ—ラットフォームãŒå…±æœ‰ãƒ©ã‚¤ãƒ–ラリをサãƒãƒ¼ãƒˆã—ã¦
+ ã„ã‚Œã°ã€ä½¿ç”¨ã§ãるよã†ã«ãªã£ã¦ã„る。
+ é™çš„ライブラリã¨å…±æœ‰ãƒ©ã‚¤ãƒ–ラリã®ã©ã¡ã‚‰ã‚’使用ã™ã‚‹ã‹ã‚’指定ã™ã‚‹æ–¹æ³•ã€å®Ÿè¡Œæ™‚点ã§ã®
+ 環境設定方法ã«ã¤ã„ã¦ã¯ã€è‡ªåˆ†ã§èª¿ã¹ã¦ä¸‹ã•ã„。
+
+
+ Win32ã§ã‚¹ã‚¿ãƒ†ã‚£ãƒƒã‚¯ãƒªãƒ³ã‚¯ãƒ©ã‚¤ãƒ–ラリ(onig_s.lib)をリンクã™ã‚‹å ´åˆã«ã¯ã€
+ コンパイルã™ã‚‹ã¨ãã« -DONIG_EXTERN=extern をコンパイル引数ã«è¿½åŠ ã™ã‚‹ã“ã¨ã€‚
+
+
+使用例プログラム
+
+ sample/simple.c 最å°ä¾‹ (Oniguruma API)
+ sample/names.c åå‰ä»˜ãグループコールãƒãƒƒã‚¯ä½¿ç”¨ä¾‹
+ sample/encode.c å¹¾ã¤ã‹ã®æ–‡å­—エンコーディング使用例
+ sample/listcap.c æ•ç²å±¥æ­´æ©Ÿèƒ½ã®ä½¿ç”¨ä¾‹
+ sample/posix.c POSIX API使用例
+ sample/sql.c å¯å¤‰ãƒ¡ã‚¿æ–‡å­—機能使用例 (SQL-like パターン)
+ sample/user_property.c ユーザ定義Unicodeプロパティã®ä½¿ç”¨ä¾‹
+
+
+テストプログラム
+ sample/syntax.c Perlã€Javaã€ASIS文法ã®ãƒ†ã‚¹ãƒˆ
+ sample/crnl.c --enable-crnl-as-line-terminator テスト
+
+
+ソースファイル
+
+ oniguruma.h 鬼車APIヘッダ (公開)
+ onig-config.in onig-configプログラム テンプレート
+
+ regenc.h 文字エンコーディング枠組ã¿ãƒ˜ãƒƒãƒ€
+ regint.h 内部宣言
+ regparse.h regparse.cã¨regcomp.cã®ãŸã‚ã®å†…部宣言
+ regcomp.c コンパイルã€æœ€é©åŒ–関数
+ regenc.c 文字エンコーディング枠組ã¿
+ regerror.c エラーメッセージ関数
+ regext.c 拡張API関数
+ regexec.c 検索ã€ç…§åˆé–¢æ•°
+ regparse.c æ­£è¦è¡¨ç¾ãƒ‘ターン解æžé–¢æ•°
+ regsyntax.c æ­£è¦è¡¨ç¾ãƒ‘ターン文法関数ã€çµ„è¾¼ã¿æ–‡æ³•å®šç¾©
+ regtrav.c æ•ç²å±¥æ­´æœ¨å·¡å›žé–¢æ•°
+ regversion.c 版情報関数
+ st.h ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル関数宣言
+ st.c ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル関数
+
+ oniggnu.h GNU regex APIヘッダ (公開)
+ reggnu.c GNU regex API関数
+
+ onigposix.h POSIX APIヘッダ (公開)
+ regposerr.c POSIX APIエラーメッセージ関数
+ regposix.c POSIX API関数
+
+ mktable.c 文字タイプテーブル生æˆãƒ—ログラム
+ ascii.c ASCII エンコーディング
+ euc_jp.c EUC-JP エンコーディング
+ euc_tw.c EUC-TW エンコーディング
+ euc_kr.c EUC-KR, EUC-CN エンコーディング
+ sjis.c Shift_JIS エンコーディング
+ big5.c Big5 エンコーディング
+ gb18030.c GB18030 エンコーディング
+ koi8.c KOI8 エンコーディング
+ koi8_r.c KOI8-R エンコーディング
+ cp1251.c CP1251 エンコーディング
+ iso8859_1.c ISO-8859-1 (Latin-1)
+ iso8859_2.c ISO-8859-2 (Latin-2)
+ iso8859_3.c ISO-8859-3 (Latin-3)
+ iso8859_4.c ISO-8859-4 (Latin-4)
+ iso8859_5.c ISO-8859-5 (Cyrillic)
+ iso8859_6.c ISO-8859-6 (Arabic)
+ iso8859_7.c ISO-8859-7 (Greek)
+ iso8859_8.c ISO-8859-8 (Hebrew)
+ iso8859_9.c ISO-8859-9 (Latin-5 ã¾ãŸã¯ Turkish)
+ iso8859_10.c ISO-8859-10 (Latin-6 ã¾ãŸã¯ Nordic)
+ iso8859_11.c ISO-8859-11 (Thai)
+ iso8859_13.c ISO-8859-13 (Latin-7 ã¾ãŸã¯ Baltic Rim)
+ iso8859_14.c ISO-8859-14 (Latin-8 ã¾ãŸã¯ Celtic)
+ iso8859_15.c ISO-8859-15 (Latin-9 ã¾ãŸã¯ West European with Euro)
+ iso8859_16.c ISO-8859-16
+ (Latin-10 ã¾ãŸã¯ South-Eastern European with Euro)
+ utf8.c UTF-8 エンコーディング
+ utf16_be.c UTF-16BE エンコーディング
+ utf16_le.c UTF-16LE エンコーディング
+ utf32_be.c UTF-32BE エンコーディング
+ utf32_le.c UTF-32LE エンコーディング
+ unicode.c Unicodeエンコーディングã®å…±é€šå‡¦ç†
+
+ win32/Makefile Win32用 Makefile (for VC++)
+ win32/config.h Win32用 config.h
+
+
+and I'm thankful to Akinori MUSHA.
diff --git a/ext/mbstring/oniguruma/doc/API b/ext/mbstring/oniguruma/doc/API
index d12a46b997..08f9227c82 100644
--- a/ext/mbstring/oniguruma/doc/API
+++ b/ext/mbstring/oniguruma/doc/API
@@ -1,4 +1,4 @@
-Oniguruma API Version 6.1.0 2016/08/22
+Oniguruma API Version 6.8.0 2018/03/13
#include <oniguruma.h>
@@ -83,6 +83,16 @@ Oniguruma API Version 6.1.0 2016/08/22
ONIG_OPTION_DONT_CAPTURE_GROUP only named group captured.
ONIG_OPTION_CAPTURE_GROUP named and no-named group captured.
+ ONIG_OPTION_WORD_IS_ASCII ASCII only word (\w, \p{Word}, [[:word:]])
+ ASCII only word bound (\b)
+ ONIG_OPTION_DIGIT_IS_ASCII ASCII only digit (\d, \p{Digit}, [[:digit:]])
+ ONIG_OPTION_SPACE_IS_ASCII ASCII only space (\s, \p{Space}, [[:space:]])
+ ONIG_OPTION_POSIX_IS_ASCII ASCII only POSIX properties
+ (includes word, digit, space)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit,
+ word)
+
5 enc: character encoding.
ONIG_ENCODING_ASCII ASCII
@@ -130,7 +140,8 @@ Oniguruma API Version 6.1.0 2016/08/22
ONIG_SYNTAX_PERL Perl
ONIG_SYNTAX_PERL_NG Perl + named group
ONIG_SYNTAX_RUBY Ruby
- ONIG_SYNTAX_DEFAULT default (== Ruby)
+ ONIG_SYNTAX_ONIGURUMA Oniguruma
+ ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA)
onig_set_default_syntax()
or any OnigSyntaxType data address defined by user.
@@ -211,6 +222,77 @@ Oniguruma API Version 6.1.0 2016/08/22
1 reg: regex object.
+# OnigMatchParam* onig_new_match_param()
+
+ Allocate a OnigMatchParam object and initialize the contents by
+ onig_initialize_match_param().
+
+
+# void onig_free_match_param(OnigMatchParam* mp)
+
+ Free memory used by a OnigMatchParam object.
+
+ arguments
+ 1 mp: OnigMatchParam object
+
+
+# void onig_initialize_match_param(OnigMatchParam* mp)
+
+ Set match-param fields to default values.
+ Match-param is used in onig_match_with_param() and onig_search_with_param().
+
+ arguments
+ 1 mp: match-param pointer
+
+
+# int onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* mp, unsigned int limit)
+
+ Set a maximum number of match-stack depth.
+ 0 means unlimited.
+
+ arguments
+ 1 mp: match-param pointer
+ 2 limit: number of limit
+
+ normal return: ONIG_NORMAL
+
+
+# int onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* mp, unsigned long limit)
+
+ Set a retry limit count of a match process.
+
+ arguments
+ 1 mp: match-param pointer
+ 2 limit: number of limit
+
+ normal return: ONIG_NORMAL
+
+
+# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ Set a function for callouts of contents in progress.
+ If 0 (NULL) is set, never called in progress.
+
+ arguments
+ 1 mp: match-param pointer
+ 2 f: function
+
+ normal return: ONIG_NORMAL
+
+
+# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ Set a function for callouts of contents in retraction (backtrack).
+ If 0 (NULL) is set, never called in retraction.
+
+ arguments
+ 1 mp: match-param pointer
+ 2 f: function
+
+ normal return: ONIG_NORMAL
+
+
+
# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start,
const UChar* range, OnigRegion* region, OnigOptionType option)
@@ -235,8 +317,17 @@ Oniguruma API Version 6.1.0 2016/08/22
ONIG_OPTION_POSIX_REGION region argument is regmatch_t[] of POSIX API.
+# int onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* start, const UChar* range, OnigRegion* region,
+ OnigOptionType option, OnigMatchParam* mp)
+
+ arguments
+ 1-7: same as onig_search()
+ 8 mp: match parameter values (match_stack_limit, retry_limit_in_match)
+
+
# int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
- OnigRegion* region, OnigOptionType option)
+ OnigRegion* region, OnigOptionType option)
Match string and return result and matching region.
@@ -256,6 +347,15 @@ Oniguruma API Version 6.1.0 2016/08/22
ONIG_OPTION_POSIX_REGION region argument is regmatch_t[] type of POSIX API.
+# int onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* at, OnigRegion* region,
+ OnigOptionType option, OnigMatchParam* mp)
+
+ arguments
+ 1-6: same as onig_match()
+ 7 mp: match parameter values (match_stack_limit, retry_limit_in_match)
+
+
# int onig_scan(regex_t* reg, const UChar* str, const UChar* end,
OnigRegion* region, OnigOptionType option,
int (*scan_callback)(int, int, OnigRegion*, void*),
@@ -612,6 +712,47 @@ Oniguruma API Version 6.1.0 2016/08/22
normal return: ONIG_NORMAL
+# unsigned long onig_get_retry_limit_in_match(void)
+
+ Return the limit of retry counts in matching process.
+ (default: 10000000)
+
+ normal return: limit value
+
+
+# int onig_set_retry_limit_in_match(unsigned long n)
+
+ Set the limit of retry counts in matching process.
+
+ normal return: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_progress_callout(void)
+
+ Get a function for callouts of contents in progress.
+
+
+# int onig_set_progress_callout(OnigCalloutFunc f)
+
+ Set a function for callouts of contents in progress.
+ If 0 (NULL) is set, never called in progress.
+
+ normal return: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_retraction_callout(void)
+
+ Get a function for callouts of contents in retraction (backtrack).
+
+
+# int onig_set_retraction_callout(OnigCalloutFunc f)
+
+ Set a function for callouts of contents in retraction (backtrack).
+ If 0 (NULL) is set, never called in retraction.
+
+ normal return: ONIG_NORMAL
+
+
# int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges))
Define new Unicode property.
diff --git a/ext/mbstring/oniguruma/doc/API.ja b/ext/mbstring/oniguruma/doc/API.ja
index dcc7317b0a..522628810f 100644
--- a/ext/mbstring/oniguruma/doc/API.ja
+++ b/ext/mbstring/oniguruma/doc/API.ja
@@ -1,89 +1,98 @@
-µ´¼Ö¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ Version 6.1.0 2016/08/22
+鬼車インターフェース Version 6.8.0 2018/03/13
#include <oniguruma.h>
# int onig_initialize(OnigEncoding use_encodings[], int num_encodings)
- ¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½
- ºÇ½é¤Ë¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¡£
+ ライブラリã®åˆæœŸåŒ–
+ 最åˆã«å‘¼ã³å‡ºã™å¿…è¦ãŒã‚る。
- * onig_init() ¤ÏÇÑ»ß
+ * onig_init() ã¯å»ƒæ­¢
- °ú¿ô
- 1 use_encodings: »ÈÍѤ¹¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÇÛÎó
- 2 num_encodings: ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î¿ô
+ 引数
+ 1 use_encodings: 使用ã™ã‚‹æ–‡å­—エンコーディングã®é…列
+ 2 num_encodings: 文字エンコーディングã®æ•°
# int onig_error_code_to_str(UChar* err_buf, int err_code, ...)
- ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¼èÆÀ¤¹¤ë¡£
+ エラーメッセージをå–å¾—ã™ã‚‹ã€‚
- ¤³¤Î´Ø¿ô¤ò¡¢onig_new()¤Î·ë²Ì¤ËÂФ·¤Æ¸Æ¤Ó½Ð¤¹¾ì¹ç¤Ë¤Ï¡¢onig_new()¤Îpattern°ú¿ô¤ò
- ¥á¥â¥ê²òÊü¤¹¤ë¤è¤ê¤âÁ°¤Ë¸Æ¤Ó½Ð¤µ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+ ã“ã®é–¢æ•°ã‚’ã€onig_new()ã®çµæžœã«å¯¾ã—ã¦å‘¼ã³å‡ºã™å ´åˆã«ã¯ã€onig_new()ã®pattern引数を
+ メモリ解放ã™ã‚‹ã‚ˆã‚Šã‚‚å‰ã«å‘¼ã³å‡ºã•ãªã‘ã‚Œã°ãªã‚‰ãªã„。
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸Ê¸»úÎó¤Î¥Ð¥¤¥ÈĹ
+ 正常終了戻り値: エラーメッセージ文字列ã®ãƒã‚¤ãƒˆé•·
- °ú¿ô
- 1 err_buf: ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò³ÊǼ¤¹¤ëÎΰè
- (ɬÍפʥµ¥¤¥º: ONIG_MAX_ERROR_MESSAGE_LEN)
- 2 err_code: ¥¨¥é¡¼¥³¡¼¥É
- 3 err_info (optional): onig_new()¤Îerr_info
+ 引数
+ 1 err_buf: エラーメッセージを格ç´ã™ã‚‹é ˜åŸŸ
+ (å¿…è¦ãªã‚µã‚¤ã‚º: ONIG_MAX_ERROR_MESSAGE_LEN)
+ 2 err_code: エラーコード
+ 3 err_info (optional): onig_new()ã®err_info
# void onig_set_warn_func(OnigWarnFunc func)
- ·Ù¹ðÄÌÃδؿô¤ò¥»¥Ã¥È¤¹¤ë¡£
+ 警告通知関数をセットã™ã‚‹ã€‚
- ·Ù¹ð:
+ 警告:
'[', '-', ']' in character class without escape.
']' in pattern without escape.
- °ú¿ô
- 1 func: ·Ù¹ð´Ø¿ô void (*func)(char* warning_message)
+ 引数
+ 1 func: 警告関数 void (*func)(char* warning_message)
# void onig_set_verb_warn_func(OnigWarnFunc func)
- ¾ÜºÙ·Ù¹ðÄÌÃδؿô¤ò¥»¥Ã¥È¤¹¤ë¡£
+ 詳細警告通知関数をセットã™ã‚‹ã€‚
- ¾ÜºÙ·Ù¹ð:
+ 詳細警告:
redundant nested repeat operator.
- °ú¿ô
- 1 func: ¾ÜºÙ·Ù¹ð´Ø¿ô void (*func)(char* warning_message)
+ 引数
+ 1 func: 詳細警告関数 void (*func)(char* warning_message)
# int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
OnigErrorInfo* err_info)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È(regex)¤òºîÀ®¤¹¤ë¡£
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト(regex)を作æˆã™ã‚‹ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
- °ú¿ô
- 1 reg: ºîÀ®¤µ¤ì¤¿Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¥¢¥É¥ì¥¹
- 2 pattern: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸ»úÎó
- 3 pattern_end: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸ»úÎó¤Î½ªÃ¼¥¢¥É¥ì¥¹(pattern + pattern length)
- 4 option: Àµµ¬É½¸½¥³¥ó¥Ñ¥¤¥ë»þ¥ª¥×¥·¥ç¥ó
+ 引数
+ 1 reg: 作æˆã•ã‚ŒãŸæ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトを返ã™ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 2 pattern: æ­£è¦è¡¨ç¾ãƒ‘ターン文字列
+ 3 pattern_end: æ­£è¦è¡¨ç¾ãƒ‘ターン文字列ã®çµ‚端アドレス(pattern + pattern length)
+ 4 option: æ­£è¦è¡¨ç¾ã‚³ãƒ³ãƒ‘イル時オプション
- ONIG_OPTION_NONE ¥ª¥×¥·¥ç¥ó¤Ê¤·
+ ONIG_OPTION_NONE オプションãªã—
ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z'
- ONIG_OPTION_MULTILINE '.'¤¬²þ¹Ô¤Ë¥Þ¥Ã¥Á¤¹¤ë
- ONIG_OPTION_IGNORECASE Û£Ëæ¥Þ¥Ã¥Á ¥ª¥ó
- ONIG_OPTION_EXTEND ¥Ñ¥¿¡¼¥ó³ÈÄ¥·Á¼°
- ONIG_OPTION_FIND_LONGEST ºÇĹ¥Þ¥Ã¥Á
- ONIG_OPTION_FIND_NOT_EMPTY ¶õ¥Þ¥Ã¥Á¤ò̵»ë
+ ONIG_OPTION_MULTILINE '.'ãŒæ”¹è¡Œã«ãƒžãƒƒãƒã™ã‚‹
+ ONIG_OPTION_IGNORECASE 曖昧マッムオン
+ ONIG_OPTION_EXTEND パターン拡張形å¼
+ ONIG_OPTION_FIND_LONGEST 最長マッãƒ
+ ONIG_OPTION_FIND_NOT_EMPTY 空マッãƒã‚’無視
ONIG_OPTION_NEGATE_SINGLELINE
ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED,
- ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL_NG, ONIG_SYNTAX_JAVA¤Ç
- ¥Ç¥Õ¥©¥ë¥È¤ÇÍ­¸ú¤ÊONIG_OPTION_SINGLELINE¤ò¥¯¥ê¥¢¤¹¤ë¡£
-
- ONIG_OPTION_DONT_CAPTURE_GROUP ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤Î¤ßÊá³Í
- ONIG_OPTION_CAPTURE_GROUP ̾Á°Ìµ¤·Êá³Í¼°½¸¹ç¤âÊá³Í
-
- 5 enc: ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
+ ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL_NG, ONIG_SYNTAX_JAVAã§
+ デフォルトã§æœ‰åŠ¹ãªONIG_OPTION_SINGLELINEをクリアã™ã‚‹ã€‚
+
+ ONIG_OPTION_DONT_CAPTURE_GROUP åå‰ä»˜ãæ•ç²å¼é›†åˆã®ã¿æ•ç²
+ ONIG_OPTION_CAPTURE_GROUP åå‰ç„¡ã—æ•ç²å¼é›†åˆã‚‚æ•ç²
+ ONIG_OPTION_WORD_IS_ASCII wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]])
+ word boundãŒASCIIã®ã¿ (\b)
+ ONIG_OPTION_DIGIT_IS_ASCII digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]])
+ ONIG_OPTION_SPACE_IS_ASCII spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]])
+ ONIG_OPTION_POSIX_IS_ASCII POSIXプロパティãŒASCIIã®ã¿
+ (word, digit, spaceã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit,
+ word)
+
+ 5 enc: 文字エンコーディング
ONIG_ENCODING_ASCII ASCII
ONIG_ENCODING_ISO_8859_1 ISO 8859-1
@@ -116,9 +125,9 @@
ONIG_ENCODING_BIG5 Big5
ONIG_ENCODING_GB18030 GB18030
- ¤Þ¤¿¤Ï¡¢¥æ¡¼¥¶¤¬ÄêµÁ¤·¤¿OnigEncodingType¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹
+ ã¾ãŸã¯ã€ãƒ¦ãƒ¼ã‚¶ãŒå®šç¾©ã—ãŸOnigEncodingTypeデータã®ã‚¢ãƒ‰ãƒ¬ã‚¹
- 6 syntax: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡÄêµÁ
+ 6 syntax: æ­£è¦è¡¨ç¾ãƒ‘ターン文法定義
ONIG_SYNTAX_ASIS plain text
ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE
@@ -128,15 +137,16 @@
ONIG_SYNTAX_GNU_REGEX GNU regex
ONIG_SYNTAX_JAVA Java (Sun java.util.regex)
ONIG_SYNTAX_PERL Perl
- ONIG_SYNTAX_PERL_NG Perl + ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç
+ ONIG_SYNTAX_PERL_NG Perl + åå‰ä»˜ãæ•ç²å¼é›†åˆ
ONIG_SYNTAX_RUBY Ruby
- ONIG_SYNTAX_DEFAULT default (== Ruby)
+ ONIG_SYNTAX_ONIGURUMA Oniguruma
+ ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA)
onig_set_default_syntax()
- ¤Þ¤¿¤Ï¡¢¥æ¡¼¥¶¤¬ÄêµÁ¤·¤¿OnigSyntaxType¥Ç¡¼¥¿¤Î¥¢¥É¥ì¥¹
+ ã¾ãŸã¯ã€ãƒ¦ãƒ¼ã‚¶ãŒå®šç¾©ã—ãŸOnigSyntaxTypeデータã®ã‚¢ãƒ‰ãƒ¬ã‚¹
- 7 err_info: ¥¨¥é¡¼¾ðÊó¤òÊÖ¤¹¤¿¤á¤Î¥¢¥É¥ì¥¹
- onig_error_code_to_str()¤Î»°ÈÖÌܤΰú¿ô¤È¤·¤Æ»ÈÍѤ¹¤ë
+ 7 err_info: エラー情報を返ã™ãŸã‚ã®ã‚¢ãƒ‰ãƒ¬ã‚¹
+ onig_error_code_to_str()ã®ä¸‰ç•ªç›®ã®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹
@@ -145,44 +155,44 @@
OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
OnigErrorInfo* err_info)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È(regex)¤òºîÀ®¤¹¤ë¡£
- reg¤ÎÎΰè¤òÆâÉô¤Ç³ä¤êÅö¤Æ¤Ê¤¤¡£
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト(regex)を作æˆã™ã‚‹ã€‚
+ regã®é ˜åŸŸã‚’内部ã§å‰²ã‚Šå½“ã¦ãªã„。
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
# int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
OnigCompileInfo* ci, OnigErrorInfo* einfo)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È(regex)¤òºîÀ®¤¹¤ë¡£
- ¤³¤Î´Ø¿ô¤Ï¡¢onig_new()¤Î¥Ç¥é¥Ã¥¯¥¹ÈÇ¡£
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト(regex)を作æˆã™ã‚‹ã€‚
+ ã“ã®é–¢æ•°ã¯ã€onig_new()ã®ãƒ‡ãƒ©ãƒƒã‚¯ã‚¹ç‰ˆã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
- °ú¿ô
- 1 reg: ºîÀ®¤µ¤ì¤¿Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¥¢¥É¥ì¥¹
- 2 pattern: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸ»úÎó
- 3 pattern_end: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸ»úÎó¤Î½ªÃ¼¥¢¥É¥ì¥¹(pattern + pattern length)
- 4 ci: ¥³¥ó¥Ñ¥¤¥ë¾ðÊó
+ 引数
+ 1 reg: 作æˆã•ã‚ŒãŸæ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトを返ã™ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 2 pattern: æ­£è¦è¡¨ç¾ãƒ‘ターン文字列
+ 3 pattern_end: æ­£è¦è¡¨ç¾ãƒ‘ターン文字列ã®çµ‚端アドレス(pattern + pattern length)
+ 4 ci: コンパイル情報
- ci->num_of_elements: ci¤ÎÍ×ÁÇ¿ô (¸½ºß¤ÎÈǤǤÏ: 5)
- ci->pattern_enc: ¥Ñ¥¿¡¼¥óʸ»úÎó¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- ci->target_enc: ÂоÝʸ»úÎó¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- ci->syntax: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡÄêµÁ
- ci->option: Àµµ¬É½¸½¥³¥ó¥Ñ¥¤¥ë»þ¥ª¥×¥·¥ç¥ó
- ci->case_fold_flag: ONIG_OPTION_IGNORECASE¥â¡¼¥É¤Ç¤Î
- ʸ»úÛ£Ëæ¥Þ¥Ã¥Á»ØÄê¥Ó¥Ã¥È¥Õ¥é¥°
+ ci->num_of_elements: ciã®è¦ç´ æ•° (ç¾åœ¨ã®ç‰ˆã§ã¯: 5)
+ ci->pattern_enc: パターン文字列ã®æ–‡å­—エンコーディング
+ ci->target_enc: 対象文字列ã®æ–‡å­—エンコーディング
+ ci->syntax: æ­£è¦è¡¨ç¾ãƒ‘ターン文法定義
+ ci->option: æ­£è¦è¡¨ç¾ã‚³ãƒ³ãƒ‘イル時オプション
+ ci->case_fold_flag: ONIG_OPTION_IGNORECASEモードã§ã®
+ 文字曖昧マッãƒæŒ‡å®šãƒ“ットフラグ
- ONIGENC_CASE_FOLD_MIN: ºÇ¾®
- ONIGENC_CASE_FOLD_DEFAULT: ºÇ¾®
+ ONIGENC_CASE_FOLD_MIN: 最å°
+ ONIGENC_CASE_FOLD_DEFAULT: 最å°
onig_set_default_case_fold_flag()
- 5 err_info: ¥¨¥é¡¼¾ðÊó¤òÊÖ¤¹¤¿¤á¤Î¥¢¥É¥ì¥¹
- onig_error_code_to_str()¤Î»°ÈÖÌܤΰú¿ô¤È¤·¤Æ»ÈÍѤ¹¤ë
+ 5 err_info: エラー情報を返ã™ãŸã‚ã®ã‚¢ãƒ‰ãƒ¬ã‚¹
+ onig_error_code_to_str()ã®ä¸‰ç•ªç›®ã®å¼•æ•°ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹
- °Û¤Ê¤ëʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÎÁȤ߹ç¤ï¤»¤Ï¡¢°Ê²¼¤Î¾ì¹ç¤Ë¤Î¤ßµö¤µ¤ì¤ë¡£
+ ç•°ãªã‚‹æ–‡å­—エンコーディングã®çµ„ã¿åˆã‚ã›ã¯ã€ä»¥ä¸‹ã®å ´åˆã«ã®ã¿è¨±ã•ã‚Œã‚‹ã€‚
pattern_enc: ASCII, ISO_8859_1
target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE
@@ -196,64 +206,153 @@
# void onig_free(regex_t* reg)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤Î¥á¥â¥ê¤ò²òÊü¤¹¤ë¡£
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトã®ãƒ¡ãƒ¢ãƒªã‚’解放ã™ã‚‹ã€‚
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
# void onig_free_body(regex_t* reg)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤Î¥á¥â¥ê¤ò²òÊü¤¹¤ë¡£(reg¼«¿È¤ÎÎΰè¤ò½ü¤¤¤Æ)
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトã®ãƒ¡ãƒ¢ãƒªã‚’解放ã™ã‚‹ã€‚(reg自身ã®é ˜åŸŸã‚’除ã„ã¦)
+
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+
+
+# OnigMatchParam* onig_new_match_param()
+
+ OnigMatchParamオブジェクトを生æˆã—ã€onig_initialize_match_param()を使用ã—ã¦
+ 中身をåˆæœŸåŒ–ã™ã‚‹ã€‚
+
+
+# void onig_free_match_param(OnigMatchParam* mp)
+
+ OnigMatchParamオブジェクトã§ä½¿ç”¨ã—ã¦ã„るメモリを開放ã™ã‚‹ã€‚
+
+ 引数
+ 1 mp: OnigMatchParamオブジェクト
+
+
+# void onig_initialize_match_param(OnigMatchParam* mp)
+
+ マッãƒãƒ‘ラメタ構造体ã«ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã‚’セットã™ã‚‹ã€‚
+ マッãƒãƒ‘ラメタã¯ã€onig_match_with_param(), onig_search_with_param()ã§
+ 使用ã•ã‚Œã‚‹ã€‚
+
+ 引数
+ 1 mp: マッãƒãƒ‘ラメタオブジェクトアドレス
+
+
+# int onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* mp, unsigned int limit)
+
+ マッãƒã‚¹ã‚¿ãƒƒã‚¯ã®æœ€å¤§æ·±ã•ã‚’セットã™ã‚‹ã€‚
+ 0ã¯ã€ç„¡åˆ¶é™ã‚’表ã™ã€‚
+
+ 引数
+ 1 mp: マッãƒãƒ‘ラメタオブジェクトアドレス
+ 2 limit: 制é™æ•°
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# int onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* mp, unsigned long limit)
+
+ 一回ã®ãƒžãƒƒãƒã§ã®ãƒªãƒˆãƒ©ã‚¤æ•°ã®æœ€å¤§å€¤ã‚’セットã™ã‚‹ã€‚
+
+ 引数
+ 1 mp: マッãƒãƒ‘ラメタオブジェクトアドレス
+ 2 limit: 制é™å›žæ•°
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ å‰é€²æ™‚ã®å†…容ã®å‘¼ã³å‡ºã—(callouts)ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’セットã™ã‚‹ã€‚
+ ã‚‚ã—ï¼(NULL)ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã¨ã€å‰é€²æ™‚ã«å‘¼ã³å‡ºã—ã¯èµ·ã“らãªã„。
+
+ 引数
+ 1 mp: マッãƒãƒ‘ラメタオブジェクトアドレス
+ 2 f: 呼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 後退時ã®å†…容ã®å‘¼ã³å‡ºã—(callouts)ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’セットã™ã‚‹ã€‚
+ ã‚‚ã—ï¼(NULL)ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã¨ã€å¾Œé€€æ™‚ã«å‘¼ã³å‡ºã—ã¯èµ·ã“らãªã„。
+
+ 引数
+ 1 mp: マッãƒãƒ‘ラメタオブジェクトアドレス
+ 2 f: 呼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°
+
+ 正常終了戻り値: ONIG_NORMAL
# int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start,
const UChar* range, OnigRegion* region, OnigOptionType option)
- Àµµ¬É½¸½¤Çʸ»úÎó¤ò¸¡º÷¤·¡¢¸¡º÷·ë²Ì¤È¥Þ¥Ã¥ÁÎΰè¤òÊÖ¤¹¡£
+ æ­£è¦è¡¨ç¾ã§æ–‡å­—列を検索ã—ã€æ¤œç´¢çµæžœã¨ãƒžãƒƒãƒé ˜åŸŸã‚’è¿”ã™ã€‚
+
+ 正常終了戻り値: マッãƒä½ç½® (p - str >= 0)
+ 検索失敗: ONIG_MISMATCH (< 0)
+
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 str: 検索対象文字列
+ 3 end: 検索対象文字列ã®çµ‚端アドレス
+ 4 start: 検索対象文字列ã®æ¤œç´¢å…ˆé ­ä½ç½®ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 5 range: 検索対象文字列ã®æ¤œç´¢çµ‚了ä½ç½®ã‚¢ãƒ‰ãƒ¬ã‚¹
+ å‰æ–¹æŽ¢ç´¢ (start <= 探索ã•ã‚Œã‚‹æ–‡å­—列 < range)
+ 後方探索 (range <= 探索ã•ã‚Œã‚‹æ–‡å­—列 <= start)
+ 6 region: マッãƒé ˜åŸŸæƒ…å ±(region) (NULLも許ã•ã‚Œã‚‹)
+ 7 option: 検索時オプション
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ¥Þ¥Ã¥Á°ÌÃÖ (p - str >= 0)
- ¸¡º÷¼ºÇÔ: ONIG_MISMATCH (< 0)
+ ONIG_OPTION_NOTBOL 文字列ã®å…ˆé ­(str)を行頭ã¨çœ‹åšã•ãªã„
+ ONIG_OPTION_NOTEOL 文字列ã®çµ‚端(end)を行末ã¨çœ‹åšã•ãªã„
+ ONIG_OPTION_POSIX_REGION region引数をPOSIX APIã®regmatch_t[]ã«ã™ã‚‹
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 str: ¸¡º÷ÂоÝʸ»úÎó
- 3 end: ¸¡º÷ÂоÝʸ»úÎó¤Î½ªÃ¼¥¢¥É¥ì¥¹
- 4 start: ¸¡º÷ÂоÝʸ»úÎó¤Î¸¡º÷ÀèƬ°ÌÃÖ¥¢¥É¥ì¥¹
- 5 range: ¸¡º÷ÂоÝʸ»úÎó¤Î¸¡º÷½ªÎ»°ÌÃÖ¥¢¥É¥ì¥¹
- Á°Êýõº÷ (start <= õº÷¤µ¤ì¤ëʸ»úÎó < range)
- ¸åÊýõº÷ (range <= õº÷¤µ¤ì¤ëʸ»úÎó <= start)
- 6 region: ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region) (NULL¤âµö¤µ¤ì¤ë)
- 7 option: ¸¡º÷»þ¥ª¥×¥·¥ç¥ó
- ONIG_OPTION_NOTBOL ʸ»úÎó¤ÎÀèƬ(str)¤ò¹ÔƬ¤È´ÇÐö¤µ¤Ê¤¤
- ONIG_OPTION_NOTEOL ʸ»úÎó¤Î½ªÃ¼(end)¤ò¹ÔËö¤È´ÇÐö¤µ¤Ê¤¤
- ONIG_OPTION_POSIX_REGION region°ú¿ô¤òPOSIX API¤Îregmatch_t[]¤Ë¤¹¤ë
+# int onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* start, const UChar* range, OnigRegion* region,
+ OnigOptionType option, OnigMatchParam* mp)
+
+ 引数
+ 1-7: onig_search()ã¨åŒã˜
+ 8 mp: マッãƒãƒ‘ラメタ値 (match_stack_limit, retry_limit_in_match)
# int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
OnigRegion* region, OnigOptionType option)
- ʸ»úÎó¤Î»ØÄê°ÌÃ֤ǥޥåÁ¥ó¥°¤ò¹Ô¤¤¡¢·ë²Ì¤È¥Þ¥Ã¥ÁÎΰè¤òÊÖ¤¹¡£
+ 文字列ã®æŒ‡å®šä½ç½®ã§ãƒžãƒƒãƒãƒ³ã‚°ã‚’è¡Œã„ã€çµæžœã¨ãƒžãƒƒãƒé ˜åŸŸã‚’è¿”ã™ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ¥Þ¥Ã¥Á¤·¤¿¥Ð¥¤¥ÈĹ (>= 0)
+ 正常終了戻り値: マッãƒã—ãŸãƒã‚¤ãƒˆé•· (>= 0)
not match: ONIG_MISMATCH ( < 0)
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 str: ¸¡º÷ÂоÝʸ»úÎó
- 3 end: ¸¡º÷ÂоÝʸ»úÎó¤Î½ªÃ¼¥¢¥É¥ì¥¹
- 4 at: ¸¡º÷ÂоÝʸ»úÎó¤Î¸¡º÷¥¢¥É¥ì¥¹
- 5 region: ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region) (NULL¤âµö¤µ¤ì¤ë)
- 6 option: ¸¡º÷»þ¥ª¥×¥·¥ç¥ó
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 str: 検索対象文字列
+ 3 end: 検索対象文字列ã®çµ‚端アドレス
+ 4 at: 検索対象文字列ã®æ¤œç´¢ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 5 region: マッãƒé ˜åŸŸæƒ…å ±(region) (NULLも許ã•ã‚Œã‚‹)
+ 6 option: 検索時オプション
+
+ ONIG_OPTION_NOTBOL 文字列ã®å…ˆé ­(str)を行頭ã¨çœ‹åšã•ãªã„
+ ONIG_OPTION_NOTEOL 文字列ã®çµ‚端(end)を行末ã¨çœ‹åšã•ãªã„
+ ONIG_OPTION_POSIX_REGION region引数をPOSIX APIã®regmatch_t[]ã«ã™ã‚‹
+
+
+# int onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* at, OnigRegion* region,
+ OnigOptionType option, OnigMatchParam* mp)
- ONIG_OPTION_NOTBOL ʸ»úÎó¤ÎÀèƬ(str)¤ò¹ÔƬ¤È´ÇÐö¤µ¤Ê¤¤
- ONIG_OPTION_NOTEOL ʸ»úÎó¤Î½ªÃ¼(end)¤ò¹ÔËö¤È´ÇÐö¤µ¤Ê¤¤
- ONIG_OPTION_POSIX_REGION region°ú¿ô¤òPOSIX API¤Îregmatch_t[]¤Ë¤¹¤ë
+ 引数
+ 1-6: onig_match()ã¨åŒã˜
+ 7 mp: マッãƒãƒ‘ラメタ値 (match_stack_limit, retry_limit_in_match)
# int onig_scan(regex_t* reg, const UChar* str, const UChar* end,
@@ -261,127 +360,127 @@
int (*scan_callback)(int, int, OnigRegion*, void*),
void* callback_arg)
- Àµµ¬É½¸½¤Çʸ»úÎó¤ò¥¹¥­¥ã¥ó¤·¤Æ¡¢¥Þ¥Ã¥Á¥ó¥°¤¹¤ëËè¤Ë¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¡£
+ æ­£è¦è¡¨ç¾ã§æ–‡å­—列をスキャンã—ã¦ã€ãƒžãƒƒãƒãƒ³ã‚°ã™ã‚‹æ¯Žã«ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°ã‚’呼ã³å‡ºã™ã€‚
- Àµ¾ï½ªÎ»: ¥Þ¥Ã¥Á²ó¿ô (0²ó¤â´Þ¤á¤ë)
- ¥¨¥é¡¼: ¥¨¥é¡¼¥³¡¼¥É (< 0)
- ÃæÃÇ: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤¬£°°Ê³°¤ÎÌá¤êÃͤòÊÖ¤·¤¿¤È¤­¡¢¤½¤ÎÃͤòÌá¤êÃͤȤ·¤ÆÃæÃÇ
+ 正常終了: マッãƒå›žæ•° (0回もå«ã‚ã‚‹)
+ エラー: エラーコード (< 0)
+ 中断: コールãƒãƒƒã‚¯é–¢æ•°ãŒï¼ä»¥å¤–ã®æˆ»ã‚Šå€¤ã‚’è¿”ã—ãŸã¨ãã€ãã®å€¤ã‚’戻り値ã¨ã—ã¦ä¸­æ–­
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 str: ¸¡º÷ÂоÝʸ»úÎó
- 3 end: ¸¡º÷ÂоÝʸ»úÎó¤Î½ªÃ¼¥¢¥É¥ì¥¹
- 4 region: ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region) (NULL¤âµö¤µ¤ì¤ë)
- 5 option: ¸¡º÷»þ¥ª¥×¥·¥ç¥ó
- 6 scan_callback: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô
- 7 callback_arg: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ËÅϤµ¤ì¤ëÉղðú¿ôÃÍ
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 str: 検索対象文字列
+ 3 end: 検索対象文字列ã®çµ‚端アドレス
+ 4 region: マッãƒé ˜åŸŸæƒ…å ±(region) (NULLも許ã•ã‚Œã‚‹)
+ 5 option: 検索時オプション
+ 6 scan_callback: コールãƒãƒƒã‚¯é–¢æ•°
+ 7 callback_arg: コールãƒãƒƒã‚¯é–¢æ•°ã«æ¸¡ã•ã‚Œã‚‹ä»˜åŠ å¼•æ•°å€¤
# OnigRegion* onig_region_new(void)
- ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region)¤òºîÀ®¤¹¤ë¡£
+ マッãƒé ˜åŸŸæƒ…å ±(region)を作æˆã™ã‚‹ã€‚
# void onig_region_free(OnigRegion* region, int free_self)
- ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region)¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¥á¥â¥ê¤ò²òÊü¤¹¤ë¡£
+ マッãƒé ˜åŸŸæƒ…å ±(region)ã§ä½¿ç”¨ã•ã‚Œã¦ã„るメモリを解放ã™ã‚‹ã€‚
- °ú¿ô
- 1 region: ¥Þ¥Ã¥ÁÎΰè¾ðÊ󥪥֥¸¥§¥¯¥È
- 2 free_self: [1: region¼«¿È¤ò´Þ¤á¤ÆÁ´¤Æ²òÊü, 0: region¼«¿È¤Ï²òÊü¤·¤Ê¤¤]
+ 引数
+ 1 region: マッãƒé ˜åŸŸæƒ…報オブジェクト
+ 2 free_self: [1: region自身をå«ã‚ã¦å…¨ã¦è§£æ”¾, 0: region自身ã¯è§£æ”¾ã—ãªã„]
# void onig_region_copy(OnigRegion* to, OnigRegion* from)
- ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region)¤òÊ£À½¤¹¤ë¡£
+ マッãƒé ˜åŸŸæƒ…å ±(region)を複製ã™ã‚‹ã€‚
- °ú¿ô
- 1 to: ÂоÝÎΰè
- 2 from: ¸µÎΰè
+ 引数
+ 1 to: 対象領域
+ 2 from: 元領域
# void onig_region_clear(OnigRegion* region)
- ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region)¤ÎÃæÌ£¤ò¥¯¥ê¥¢¤¹¤ë¡£
+ マッãƒé ˜åŸŸæƒ…å ±(region)ã®ä¸­å‘³ã‚’クリアã™ã‚‹ã€‚
- °ú¿ô
- 1 region: ÂоÝÎΰè
+ 引数
+ 1 region: 対象領域
# int onig_region_resize(OnigRegion* region, int n)
- ¥Þ¥Ã¥ÁÎΰè¾ðÊó(region)¤ÎÊá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)¿ô¤òÊѹ¹¤¹¤ë¡£
+ マッãƒé ˜åŸŸæƒ…å ±(region)ã®æ•ç²å¼é›†åˆ(グループ)数を変更ã™ã‚‹ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
- °ú¿ô
- 1 region: ÂоÝÎΰè
- 2 n: ¿·¤·¤¤¥µ¥¤¥º
+ 引数
+ 1 region: 対象領域
+ 2 n: æ–°ã—ã„サイズ
# int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end,
int** num_list)
- »ØÄꤷ¤¿Ì¾Á°¤ËÂФ¹¤ë̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)¤Î
- ¥°¥ë¡¼¥×ÈÖ¹æ¥ê¥¹¥È¤òÊÖ¤¹¡£
- ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤Ï¡¢(?<name>....)¤Ë¤è¤Ã¤ÆÄêµÁ¤Ç¤­¤ë¡£
+ 指定ã—ãŸåå‰ã«å¯¾ã™ã‚‹åå‰ä»˜ãæ•ç²å¼é›†åˆ(グループ)ã®
+ グループ番å·ãƒªã‚¹ãƒˆã‚’è¿”ã™ã€‚
+ åå‰ä»˜ãæ•ç²å¼é›†åˆã¯ã€(?<name>....)ã«ã‚ˆã£ã¦å®šç¾©ã§ãる。
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: »ØÄꤵ¤ì¤¿Ì¾Á°¤ËÂФ¹¤ë¥°¥ë¡¼¥×¿ô
- (Îã /(?<x>..)(?<x>..)/ ==> 2)
- ̾Á°¤ËÂФ¹¤ë¥°¥ë¡¼¥×¤¬Â¸ºß¤·¤Ê¤¤: -1
+ 正常終了戻り値: 指定ã•ã‚ŒãŸåå‰ã«å¯¾ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—æ•°
+ (例 /(?<x>..)(?<x>..)/ ==> 2)
+ åå‰ã«å¯¾ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ãŒå­˜åœ¨ã—ãªã„: -1
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 name: Êá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)̾
- 3 name_end: Êá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)̾¤Î½ªÃ¼¥¢¥É¥ì¥¹
- 4 num_list: ÈÖ¹æ¥ê¥¹¥È¤òÊÖ¤¹¥¢¥É¥ì¥¹
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 name: æ•ç²å¼é›†åˆ(グループ)å
+ 3 name_end: æ•ç²å¼é›†åˆ(グループ)åã®çµ‚端アドレス
+ 4 num_list: 番å·ãƒªã‚¹ãƒˆã‚’è¿”ã™ã‚¢ãƒ‰ãƒ¬ã‚¹
# int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end,
OnigRegion *region)
- »ØÄꤵ¤ì¤¿Ì¾Á°¤Î¸åÊý»²¾È(\k<name>)¤ËÂФ¹¤ëÊá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)¤ÎÈÖ¹æ¤òÊÖ¤¹¡£
- ̾Á°¤ËÂФ·¤Æ¡¢Ê£¿ô¤Î¥Þ¥Ã¥ÁÎΰ褬ͭ¸ú¤Ç¤¢¤ì¤Ð¡¢¤½¤ÎÃæ¤ÎºÇÂç¤ÎÈÖ¹æ¤òÊÖ¤¹¡£
- ̾Á°¤ËÂФ¹¤ëÊá³Í¼°½¸¹ç¤¬°ì¸Ä¤·¤«¤Ê¤¤¤È¤­¤Ë¤Ï¡¢Âбþ¤¹¤ë¥Þ¥Ã¥ÁÎΰ褬ͭ¸ú¤«
- ¤É¤¦¤«¤Ë´Ø·¸¤Ê¤¯¡¢¤½¤ÎÈÖ¹æ¤òÊÖ¤¹¡£(½¾¤Ã¤Æ¡¢region¤Ë¤ÏNULL¤òÅϤ·¤Æ¤â¤è¤¤¡£)
+ 指定ã•ã‚ŒãŸåå‰ã®å¾Œæ–¹å‚ç…§(\k<name>)ã«å¯¾ã™ã‚‹æ•ç²å¼é›†åˆ(グループ)ã®ç•ªå·ã‚’è¿”ã™ã€‚
+ åå‰ã«å¯¾ã—ã¦ã€è¤‡æ•°ã®ãƒžãƒƒãƒé ˜åŸŸãŒæœ‰åŠ¹ã§ã‚ã‚Œã°ã€ãã®ä¸­ã®æœ€å¤§ã®ç•ªå·ã‚’è¿”ã™ã€‚
+ åå‰ã«å¯¾ã™ã‚‹æ•ç²å¼é›†åˆãŒä¸€å€‹ã—ã‹ãªã„ã¨ãã«ã¯ã€å¯¾å¿œã™ã‚‹ãƒžãƒƒãƒé ˜åŸŸãŒæœ‰åŠ¹ã‹
+ ã©ã†ã‹ã«é–¢ä¿‚ãªãã€ãã®ç•ªå·ã‚’è¿”ã™ã€‚(従ã£ã¦ã€regionã«ã¯NULLを渡ã—ã¦ã‚‚よã„。)
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ÈÖ¹æ
+ 正常終了戻り値: 番å·
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 name: Êá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)̾
- 3 name_end: Êá³Í¼°½¸¹ç(¥°¥ë¡¼¥×)̾¤Î½ªÃ¼¥¢¥É¥ì¥¹
- 4 region: search/match·ë²Ì¤Î¥Þ¥Ã¥ÁÎΰè
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 name: æ•ç²å¼é›†åˆ(グループ)å
+ 3 name_end: æ•ç²å¼é›†åˆ(グループ)åã®çµ‚端アドレス
+ 4 region: search/matchçµæžœã®ãƒžãƒƒãƒé ˜åŸŸ
# int onig_foreach_name(regex_t* reg,
int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*),
void* arg)
- Á´¤Æ¤Î̾Á°¤ËÂФ·¤Æ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¸Æ¤Ó½Ð¤·¤ò¼Â¹Ô¤¹¤ë¡£
+ å…¨ã¦ã®åå‰ã«å¯¾ã—ã¦ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯é–¢æ•°å‘¼ã³å‡ºã—を実行ã™ã‚‹ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: 0
- ¥¨¥é¡¼: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÌá¤êÃÍ
+ 正常終了戻り値: 0
+ エラー: コールãƒãƒƒã‚¯é–¢æ•°ã®æˆ»ã‚Šå€¤
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- 2 func: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ 2 func: コールãƒãƒƒã‚¯é–¢æ•°
func(name, name_end, <number of groups>, <group number's list>,
reg, arg);
- func¤¬0°Ê³°¤ÎÃͤòÊÖ¤¹¤È¡¢¤½¤ì°Ê¹ß¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï¹Ô¤Ê¤ï¤º¤Ë
- ½ªÎ»¤¹¤ë¡£
+ funcãŒ0以外ã®å€¤ã‚’è¿”ã™ã¨ã€ãれ以é™ã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã¯è¡Œãªã‚ãšã«
+ 終了ã™ã‚‹ã€‚
- 3 arg: func¤ËÂФ¹¤ëÄɲðú¿ô
+ 3 arg: funcã«å¯¾ã™ã‚‹è¿½åŠ å¼•æ•°
# int onig_number_of_names(regex_t* reg)
- ¥Ñ¥¿¡¼¥óÃæ¤ÇÄêµÁ¤µ¤ì¤¿Ì¾Á°¤Î¿ô¤òÊÖ¤¹¡£
- °ì¸Ä¤Î̾Á°¤Î¿½ÅÄêµÁ¤Ï°ì¸Ä¤È´ÇÐö¤¹¡£
+ パターン中ã§å®šç¾©ã•ã‚ŒãŸåå‰ã®æ•°ã‚’è¿”ã™ã€‚
+ 一個ã®åå‰ã®å¤šé‡å®šç¾©ã¯ä¸€å€‹ã¨çœ‹åšã™ã€‚
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
# OnigEncoding onig_get_encoding(regex_t* reg)
@@ -389,157 +488,157 @@
# OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg)
# OnigSyntaxType* onig_get_syntax(regex_t* reg)
- Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¡¢Âбþ¤¹¤ëÃͤòÊÖ¤¹¡£
+ æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトã«å¯¾ã—ã¦ã€å¯¾å¿œã™ã‚‹å€¤ã‚’è¿”ã™ã€‚
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
# int onig_number_of_captures(regex_t* reg)
- ¥Ñ¥¿¡¼¥óÃæ¤ÇÄêµÁ¤µ¤ì¤¿Êá³Í¥°¥ë¡¼¥×¤Î¿ô¤òÊÖ¤¹¡£
+ パターン中ã§å®šç¾©ã•ã‚ŒãŸæ•ç²ã‚°ãƒ«ãƒ¼ãƒ—ã®æ•°ã‚’è¿”ã™ã€‚
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
# int onig_number_of_capture_histories(regex_t* reg)
- ¥Ñ¥¿¡¼¥óÃæ¤ÇÄêµÁ¤µ¤ì¤¿Êá³ÍÍúÎò(?@...)¤Î¿ô¤òÊÖ¤¹¡£
+ パターン中ã§å®šç¾©ã•ã‚ŒãŸæ•ç²å±¥æ­´(?@...)ã®æ•°ã‚’è¿”ã™ã€‚
- »ÈÍѤ¹¤ëʸˡ¤ÇÊá³ÍÍúÎòµ¡Ç½¤¬Í­¸ú(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)
- ¤Ç¤Ê¤±¤ì¤Ð¡¢Êá³ÍÍúÎòµ¡Ç½¤Ï»ÈÍѤǤ­¤Ê¤¤¡£
+ 使用ã™ã‚‹æ–‡æ³•ã§æ•ç²å±¥æ­´æ©Ÿèƒ½ãŒæœ‰åŠ¹(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)
+ ã§ãªã‘ã‚Œã°ã€æ•ç²å±¥æ­´æ©Ÿèƒ½ã¯ä½¿ç”¨ã§ããªã„。
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
# OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region)
- Êá³ÍÍúÎò¥Ç¡¼¥¿¤Î¥ë¡¼¥È¥Î¡¼¥É¤òÊÖ¤¹¡£
+ æ•ç²å±¥æ­´ãƒ‡ãƒ¼ã‚¿ã®ãƒ«ãƒ¼ãƒˆãƒŽãƒ¼ãƒ‰ã‚’è¿”ã™ã€‚
- ¥Þ¥Ã¥Á¤¬¼ºÇÔ¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¤³¤ÎÃͤÏÉÔÄê¤Ç¤¢¤ë¡£
+ マッãƒãŒå¤±æ•—ã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€ã“ã®å€¤ã¯ä¸å®šã§ã‚る。
- °ú¿ô
- 1 region: ¥Þ¥Ã¥ÁÎΰè
+ 引数
+ 1 region: マッãƒé ˜åŸŸ
# int onig_capture_tree_traverse(OnigRegion* region, int at,
int(*func)(int,int,int,int,int,void*), void* arg)
- Êá³ÍÍúÎò¥Ç¡¼¥¿ÌÚ¤ò½ä²ó¤·¤Æ¥³¡¼¥ë¥Ð¥Ã¥¯¤¹¤ë¡£
+ æ•ç²å±¥æ­´ãƒ‡ãƒ¼ã‚¿æœ¨ã‚’巡回ã—ã¦ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã™ã‚‹ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: 0
- ¥¨¥é¡¼: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô¤ÎÌá¤êÃÍ
+ 正常終了戻り値: 0
+ エラー: コールãƒãƒƒã‚¯é–¢æ•°ã®æˆ»ã‚Šå€¤
- °ú¿ô
- 1 region: ¥Þ¥Ã¥ÁÎΰè
- 2 at: ¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¹Ô¤Ê¤¦¥¿¥¤¥ß¥ó¥°
+ 引数
+ 1 region: マッãƒé ˜åŸŸ
+ 2 at: コールãƒãƒƒã‚¯ã‚’è¡Œãªã†ã‚¿ã‚¤ãƒŸãƒ³ã‚°
ONIG_TRAVERSE_CALLBACK_AT_FIRST:
- ºÇ½é¤Ë¥³¡¼¥ë¥Ð¥Ã¥¯¤·¤Æ¡¢»Ò¥Î¡¼¥É¤ò½ä²ó
+ 最åˆã«ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã—ã¦ã€å­ãƒŽãƒ¼ãƒ‰ã‚’巡回
ONIG_TRAVERSE_CALLBACK_AT_LAST:
- »Ò¥Î¡¼¥É¤ò½ä²ó¤·¤Æ¡¢¥³¡¼¥ë¥Ð¥Ã¥¯
+ å­ãƒŽãƒ¼ãƒ‰ã‚’巡回ã—ã¦ã€ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯
ONIG_TRAVERSE_CALLBACK_AT_BOTH:
- ºÇ½é¤Ë¥³¡¼¥ë¥Ð¥Ã¥¯¤·¤Æ¡¢»Ò¥Î¡¼¥É¤ò½ä²ó¡¢ºÇ¸å¤Ë¤â¤¦°ìÅÙ¥³¡¼¥ë¥Ð¥Ã¥¯
+ 最åˆã«ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã—ã¦ã€å­ãƒŽãƒ¼ãƒ‰ã‚’巡回ã€æœ€å¾Œã«ã‚‚ã†ä¸€åº¦ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯
- 3 func: ¥³¡¼¥ë¥Ð¥Ã¥¯´Ø¿ô
- func¤¬0°Ê³°¤ÎÃͤòÊÖ¤¹¤È¡¢¤½¤ì°Ê¹ß¤Î½ä²ó¤Ï¹Ô¤Ê¤ï¤º¤Ë
- ½ªÎ»¤¹¤ë¡£
+ 3 func: コールãƒãƒƒã‚¯é–¢æ•°
+ funcãŒ0以外ã®å€¤ã‚’è¿”ã™ã¨ã€ãれ以é™ã®å·¡å›žã¯è¡Œãªã‚ãšã«
+ 終了ã™ã‚‹ã€‚
int func(int group, int beg, int end, int level, int at,
void* arg)
- group: ¥°¥ë¡¼¥×ÈÖ¹æ
- beg: ¥Þ¥Ã¥Á³«»Ï°ÌÃÖ
- end ¥Þ¥Ã¥Á½ªÎ»°ÌÃÖ
- level: ¥Í¥¹¥È¥ì¥Ù¥ë (0¤«¤é)
- at: ¥³¡¼¥ë¥Ð¥Ã¥¯¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¥¿¥¤¥ß¥ó¥°
+ group: グループ番å·
+ beg: マッãƒé–‹å§‹ä½ç½®
+ end マッãƒçµ‚了ä½ç½®
+ level: ãƒã‚¹ãƒˆãƒ¬ãƒ™ãƒ« (0ã‹ã‚‰)
+ at: コールãƒãƒƒã‚¯ãŒå‘¼ã³å‡ºã•ã‚ŒãŸã‚¿ã‚¤ãƒŸãƒ³ã‚°
ONIG_TRAVERSE_CALLBACK_AT_FIRST
ONIG_TRAVERSE_CALLBACK_AT_LAST
- arg: Äɲðú¿ô
+ arg: 追加引数
- 4 arg; func¤ËÂФ¹¤ëÄɲðú¿ô
+ 4 arg; funcã«å¯¾ã™ã‚‹è¿½åŠ å¼•æ•°
# int onig_noname_group_capture_is_active(regex_t* reg)
- ̾Á°¤Ê¤·¼°½¸¹ç¤ÎÊá³Íµ¡Ç½¤¬Í­¸ú¤«¤É¤¦¤«¤òÊÖ¤¹¡£
+ åå‰ãªã—å¼é›†åˆã®æ•ç²æ©Ÿèƒ½ãŒæœ‰åŠ¹ã‹ã©ã†ã‹ã‚’è¿”ã™ã€‚
- Í­¸ú: 1
- ̵¸ú: 0
+ 有効: 1
+ 無効: 0
- °ú¿ô
- 1 reg: Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
+ 引数
+ 1 reg: æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
- ¥ª¥×¥·¥ç¥ó¤ÎONIG_OPTION_DONT_CAPTURE_GROUP¤¬ON --> ̵¸ú
+ オプションã®ONIG_OPTION_DONT_CAPTURE_GROUPãŒON --> 無効
- ¥Ñ¥¿¡¼¥ó¤¬Ì¾Á°¤Ä¤­¼°½¸¹ç¤ò»ÈÍѤ·¤Æ¤¤¤ë
- AND »ÈÍÑʸˡ¤Ç¡¢ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP¤¬ON
- AND ¥ª¥×¥·¥ç¥ó¤ÎONIG_OPTION_CAPTURE_GROUP¤¬OFF
- --> ̵¸ú
+ パターンãŒåå‰ã¤ãå¼é›†åˆã‚’使用ã—ã¦ã„ã‚‹
+ AND 使用文法ã§ã€ONIG_SYN_CAPTURE_ONLY_NAMED_GROUPãŒON
+ AND オプションã®ONIG_OPTION_CAPTURE_GROUPãŒOFF
+ --> 無効
- ¾åµ­°Ê³°¤Î¾ì¹ç --> Í­¸ú
+ 上記以外ã®å ´åˆ --> 有効
# UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s)
- ʸ»ú°ì¸ÄʬÁ°¤Îʸ»úÎó°ÌÃÖ¤òÊÖ¤¹¡£
+ 文字一個分å‰ã®æ–‡å­—列ä½ç½®ã‚’è¿”ã™ã€‚
- °ú¿ô
- 1 enc: ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- 2 start: ʸ»úÎó¤ÎÀèƬ¥¢¥É¥ì¥¹
- 3 s: ʸ»úÎóÃæ¤Î°ÌÃÖ
+ 引数
+ 1 enc: 文字エンコーディング
+ 2 start: 文字列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 3 s: 文字列中ã®ä½ç½®
# UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc,
const UChar* start, const UChar* s)
- ʸ»ú¤ÎÀèƬ¥Ð¥¤¥È°ÌÃ֤ˤʤë¤è¤¦¤Ëº¸Â¦¤ËÄ´À°¤·¤¿¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£
+ 文字ã®å…ˆé ­ãƒã‚¤ãƒˆä½ç½®ã«ãªã‚‹ã‚ˆã†ã«å·¦å´ã«èª¿æ•´ã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
- °ú¿ô
- 1 enc: ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- 2 start: ʸ»úÎó¤ÎÀèƬ¥¢¥É¥ì¥¹
- 3 s: ʸ»úÎóÃæ¤Î°ÌÃÖ
+ 引数
+ 1 enc: 文字エンコーディング
+ 2 start: 文字列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 3 s: 文字列中ã®ä½ç½®
# UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc,
const UChar* start, const UChar* s)
- ʸ»ú¤ÎÀèƬ¥Ð¥¤¥È°ÌÃ֤ˤʤë¤è¤¦¤Ë±¦Â¦¤ËÄ´À°¤·¤¿¥¢¥É¥ì¥¹¤òÊÖ¤¹¡£
+ 文字ã®å…ˆé ­ãƒã‚¤ãƒˆä½ç½®ã«ãªã‚‹ã‚ˆã†ã«å³å´ã«èª¿æ•´ã—ãŸã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
- °ú¿ô
- 1 enc: ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°
- 2 start: ʸ»úÎó¤ÎÀèƬ¥¢¥É¥ì¥¹
- 3 s: ʸ»úÎóÃæ¤Î°ÌÃÖ
+ 引数
+ 1 enc: 文字エンコーディング
+ 2 start: 文字列ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹
+ 3 s: 文字列中ã®ä½ç½®
# int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end)
# int onigenc_strlen_null(OnigEncoding enc, const UChar* s)
- ʸ»úÎó¤Îʸ»ú¿ô¤òÊÖ¤¹¡£
+ 文字列ã®æ–‡å­—æ•°ã‚’è¿”ã™ã€‚
# int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s)
- ʸ»úÎó¤Î¥Ð¥¤¥È¿ô¤òÊÖ¤¹¡£
+ 文字列ã®ãƒã‚¤ãƒˆæ•°ã‚’è¿”ã™ã€‚
# int onig_set_default_syntax(OnigSyntaxType* syntax)
- ¥Ç¥Õ¥©¥ë¥È¤ÎÀµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ¤ò¥»¥Ã¥È¤¹¤ë¡£
+ デフォルトã®æ­£è¦è¡¨ç¾ãƒ‘ターン文法をセットã™ã‚‹ã€‚
- °ú¿ô
- 1 syntax: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ
+ 引数
+ 1 syntax: æ­£è¦è¡¨ç¾ãƒ‘ターン文法
# void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)
- Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ¤ò¥³¥Ô¡¼¤¹¤ë¡£
+ æ­£è¦è¡¨ç¾ãƒ‘ターン文法をコピーã™ã‚‹ã€‚
- °ú¿ô
- 1 to: ÂоÝ
- 2 from: ¸µ
+ 引数
+ 1 to: 対象
+ 2 from: å…ƒ
# unsigned int onig_get_syntax_op(OnigSyntaxType* syntax)
@@ -552,35 +651,35 @@
# void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)
# void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)
- Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ¤ÎÍ×ÁǤò»²¾È/¼èÆÀ¤¹¤ë¡£
+ æ­£è¦è¡¨ç¾ãƒ‘ターン文法ã®è¦ç´ ã‚’å‚ç…§/å–å¾—ã™ã‚‹ã€‚
- °ú¿ô
- 1 syntax: Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ
- 2 op, op2, behavior, options: Í×ÁǤÎÃÍ
+ 引数
+ 1 syntax: æ­£è¦è¡¨ç¾ãƒ‘ターン文法
+ 2 op, op2, behavior, options: è¦ç´ ã®å€¤
# void onig_copy_encoding(OnigEncoding to, OnigEncoding from)
- ʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò¥³¥Ô¡¼¤¹¤ë¡£
+ 文字エンコーディングをコピーã™ã‚‹ã€‚
- °ú¿ô
- 1 to: ÂоÝ
- 2 from: ¸µ
+ 引数
+ 1 to: 対象
+ 2 from: å…ƒ
# int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what,
OnigCodePoint code)
- ¥á¥¿Ê¸»ú¤ò»ØÄꤷ¤¿¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃͤ˥»¥Ã¥È¤¹¤ë¡£
- ONIG_SYN_OP_VARIABLE_META_CHARACTERS¤¬Àµµ¬É½¸½¥Ñ¥¿¡¼¥óʸˡ¤ÇÍ­¸ú¤Ë
- ¤Ê¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¨¥¹¥±¡¼¥×ʸ»ú¤ò½ü¤¤¤Æ¡¢¤³¤³¤Ç»ØÄꤷ¤¿¥á¥¿Ê¸»ú¤Ï
- µ¡Ç½¤·¤Ê¤¤¡£(Áȹþ¤ß¤Îʸˡ¤Ç¤ÏÍ­¸ú¤Ë¤·¤Æ¤¤¤Ê¤¤¡£)
+ メタ文字を指定ã—ãŸã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤ã«ã‚»ãƒƒãƒˆã™ã‚‹ã€‚
+ ONIG_SYN_OP_VARIABLE_META_CHARACTERSãŒæ­£è¦è¡¨ç¾ãƒ‘ターン文法ã§æœ‰åŠ¹ã«
+ ãªã£ã¦ã„ãªã„å ´åˆã«ã¯ã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を除ã„ã¦ã€ã“ã“ã§æŒ‡å®šã—ãŸãƒ¡ã‚¿æ–‡å­—ã¯
+ 機能ã—ãªã„。(組込ã¿ã®æ–‡æ³•ã§ã¯æœ‰åŠ¹ã«ã—ã¦ã„ãªã„。)
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
- °ú¿ô
- 1 syntax: ÂоÝʸˡ
- 2 what: ¥á¥¿Ê¸»úµ¡Ç½¤Î»ØÄê
+ 引数
+ 1 syntax: 対象文法
+ 2 what: メタ文字機能ã®æŒ‡å®š
ONIG_META_CHAR_ESCAPE
ONIG_META_CHAR_ANYCHAR
@@ -589,79 +688,120 @@
ONIG_META_CHAR_ONE_OR_MORE_TIME
ONIG_META_CHAR_ANYCHAR_ANYTIME
- 3 code: ¥á¥¿Ê¸»ú¤Î¥³¡¼¥É¥Ý¥¤¥ó¥È ¤Þ¤¿¤Ï ONIG_INEFFECTIVE_META_CHAR.
+ 3 code: メタ文字ã®ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆ ã¾ãŸã¯ ONIG_INEFFECTIVE_META_CHAR.
# OnigCaseFoldType onig_get_default_case_fold_flag()
- ¥Ç¥Õ¥©¥ë¥È¤Îcase fold¥Õ¥é¥°¤ò¼èÆÀ¤¹¤ë¡£
+ デフォルトã®case foldフラグをå–å¾—ã™ã‚‹ã€‚
# int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag)
- ¥Ç¥Õ¥©¥ë¥È¤Îcase fold¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
+ デフォルトã®case foldフラグをセットã™ã‚‹ã€‚
- °ú¿ô
- 1 case_fold_flag: case fold¥Õ¥é¥°
+ 引数
+ 1 case_fold_flag: case foldフラグ
# unsigned int onig_get_match_stack_limit_size(void)
- ¥Þ¥Ã¥Á¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤ÎºÇÂçÃͤòÊÖ¤¹¡£
- (¥Ç¥Õ¥©¥ë¥È: 0 == ̵À©¸Â)
+ マッãƒã‚¹ã‚¿ãƒƒã‚¯ã‚µã‚¤ã‚ºã®æœ€å¤§å€¤ã‚’è¿”ã™ã€‚
+ (デフォルト: 0 == 無制é™)
# int onig_set_match_stack_limit_size(unsigned int size)
- ¥Þ¥Ã¥Á¥¹¥¿¥Ã¥¯¥µ¥¤¥º¤ÎºÇÂçÃͤò»ØÄꤹ¤ë¡£
- (size = 0: ̵À©¸Â)
+ マッãƒã‚¹ã‚¿ãƒƒã‚¯ã‚µã‚¤ã‚ºã®æœ€å¤§å€¤ã‚’指定ã™ã‚‹ã€‚
+ (size = 0: 無制é™)
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# unsigned long onig_get_retry_limit_in_match(void)
+
+ マッãƒãƒ³ã‚°é–¢æ•°å†…ã§ã®ãƒªãƒˆãƒ©ã‚¤æ•°ã®åˆ¶é™å€¤ã‚’è¿”ã™ã€‚
+ (デフォルト: 10000000)
+
+ 正常終了戻り値: 制é™å€¤
+
+
+# int onig_set_retry_limit_in_match(unsigned long n)
+
+ マッãƒãƒ³ã‚°é–¢æ•°å†…ã§ã®ãƒªãƒˆãƒ©ã‚¤æ•°ã®åˆ¶é™å€¤ã‚’指定ã™ã‚‹ã€‚
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_progress_callout(void)
+
+ å‰é€²æ™‚ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’è¿”ã™ã€‚
+
+
+# int onig_set_progress_callout(OnigCalloutFunc f)
+
+ å‰é€²æ™‚ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’指定ã™ã‚‹ã€‚
+ ã‚‚ã—0(NULL)を指定ã™ã‚‹ã¨ã€å‰é€²æ™‚ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã—ã¯èµ·ã“らãªã„。
+
+ 正常終了戻り値: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_retraction_callout(void)
+
+ 後退時ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’è¿”ã™ã€‚
+
+
+# int onig_set_retraction_callout(OnigCalloutFunc f)
+
+ 後退時ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã•ã‚Œã‚‹é–¢æ•°ã‚’指定ã™ã‚‹ã€‚
+ ã‚‚ã—0(NULL)を指定ã™ã‚‹ã¨ã€å¾Œé€€æ™‚ã®å†…容ã®å‘¼ã³å‡ºã—ã§å‘¼ã³å‡ºã—ã¯èµ·ã“らãªã„。
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
# int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges))
- ¿·¤·¤¤Unicode¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤¹¤ë¡£
- (¤³¤Î´Ø¿ô¤Ï¥¹¥ì¥Ã¥É¥»¡¼¥Õ¤Ç¤Ï¤Ê¤¤)
+ æ–°ã—ã„Unicodeプロパティを定義ã™ã‚‹ã€‚
+ (ã“ã®é–¢æ•°ã¯ã‚¹ãƒ¬ãƒƒãƒ‰ã‚»ãƒ¼ãƒ•ã§ã¯ãªã„)
- °ú¿ô
- 1 name: ¥×¥í¥Ñ¥Æ¥£Ì¾ (ASCII¥³¡¼¥É¤Î¤ß¡£ ʸ»ú ' ', '-', '_' ¤Ï̵»ë¤µ¤ì¤ë¡£)
- 2 ranges: ¥×¥í¥Ñ¥Æ¥£¥³¡¼¥É¥Ý¥¤¥ó¥ÈÈÏ°Ï
- (ºÇ½é¤ÎÍ×ÁǤÏÈϰϤοô)
+ 引数
+ 1 name: プロパティå (ASCIIコードã®ã¿ã€‚ 文字 ' ', '-', '_' ã¯ç„¡è¦–ã•ã‚Œã‚‹ã€‚)
+ 2 ranges: プロパティコードãƒã‚¤ãƒ³ãƒˆç¯„囲
+ (最åˆã®è¦ç´ ã¯ç¯„囲ã®æ•°)
[num-of-ranges, 1st-range-start, 1st-range-end, 2nd-range-start... ]
- * ¤³¤Î´Ø¿ô¤ò¸Æ¤ó¤À¸å¤Ç¡¢ranges¤òÊѹ¹/Ç˲õ¤·¤Ê¤¤¤³¤È
+ * ã“ã®é–¢æ•°ã‚’呼んã å¾Œã§ã€rangesを変更/破壊ã—ãªã„ã“ã¨
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
# unsigned int onig_get_parse_depth_limit(void)
- ºÆµ¢¥Ñ¡¼¥¹½èÍý¤ÎºÇÂ翼¤µ¤òÊÖ¤¹¡£
- (¥Ç¥Õ¥©¥ë¥È: regint.h ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë DEFAULT_PARSE_DEPTH_LIMIT¡£¸½ºß¤Ï 4096)
+ å†å¸°ãƒ‘ース処ç†ã®æœ€å¤§æ·±ã•ã‚’è¿”ã™ã€‚
+ (デフォルト: regint.h ã§å®šç¾©ã•ã‚Œã¦ã„ã‚‹ DEFAULT_PARSE_DEPTH_LIMIT。ç¾åœ¨ã¯ 4096)
# int onig_set_parse_depth_limit(unsigned int depth)
- ºÆµ¢¥Ñ¡¼¥¹½èÍý¤ÎºÇÂ翼¤µ¤ò»ØÄꤹ¤ë¡£
- (depth = 0: regint.h ¤ÇÄêµÁ¤µ¤ì¤¿¥Ç¥Õ¥©¥ë¥ÈÃͤËÀßÄꤹ¤ë¡£)
+ å†å¸°ãƒ‘ース処ç†ã®æœ€å¤§æ·±ã•ã‚’指定ã™ã‚‹ã€‚
+ (depth = 0: regint.h ã§å®šç¾©ã•ã‚ŒãŸãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã«è¨­å®šã™ã‚‹ã€‚)
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
# int onig_end(void)
- ¥é¥¤¥Ö¥é¥ê¤Î»ÈÍѤò½ªÎ»¤¹¤ë¡£
+ ライブラリã®ä½¿ç”¨ã‚’終了ã™ã‚‹ã€‚
- Àµ¾ï½ªÎ»Ìá¤êÃÍ: ONIG_NORMAL
+ 正常終了戻り値: ONIG_NORMAL
- onig_init()¤òºÆÅٸƤӽФ·¤Æ¤â¡¢°ÊÁ°¤ËºîÀ®¤·¤¿Àµµ¬É½¸½¥ª¥Ö¥¸¥§¥¯¥È
- ¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£
+ onig_init()ã‚’å†åº¦å‘¼ã³å‡ºã—ã¦ã‚‚ã€ä»¥å‰ã«ä½œæˆã—ãŸæ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクト
+ を使用ã™ã‚‹ã“ã¨ã¯ã§ããªã„。
# const char* onig_version(void)
- ¥Ð¡¼¥¸¥ç¥óʸ»úÎó¤òÊÖ¤¹¡£(Îã "5.0.3")
+ ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列を返ã™ã€‚(例 "5.0.3")
// END
diff --git a/ext/mbstring/oniguruma/doc/CALLOUTS.API b/ext/mbstring/oniguruma/doc/CALLOUTS.API
new file mode 100644
index 0000000000..057a054d87
--- /dev/null
+++ b/ext/mbstring/oniguruma/doc/CALLOUTS.API
@@ -0,0 +1,385 @@
+Callouts API Version 6.8.2 2018/06/08
+
+#include <oniguruma.h>
+
+(1) Callout functions
+(2) Set/Get functions for Callouts of contents
+(3) Set functions for Callouts of name
+(4) User data
+(5) Get values from OnigCalloutArgs
+(6) Tag
+(7) Callout data (used in callout functions)
+(8) Callout data (used in applications)
+(9) Miscellaneous functions
+
+
+(1) Callout functions
+
+ type: OnigCalloutFunc
+
+ typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data);
+
+ If 0 (NULL) is set as a callout function value, never called.
+
+
+ * Callout function return value (int)
+
+ ONIG_CALLOUT_FAIL (== 1): fail
+ ONIG_CALLOUT_SUCCESS (== 0): success
+ less than -1: error code (terminate search/match)
+
+ ONIG_CALLOUT_FAIL/SUCCESS values are ignored in retractions,
+ because retraction is a part of recovery process after failure.
+
+ * Example of callout function
+
+ extern int always_success(OnigCalloutArgs* args, void* user_data)
+ {
+ return ONIG_CALLOUT_SUCCESS;
+ }
+
+
+
+(2) Set/Get functions for Callouts of contents
+
+# OnigCalloutFunc onig_get_progress_callout(void)
+
+ Get a function for callouts of contents in progress.
+
+
+# int onig_set_progress_callout(OnigCalloutFunc f)
+
+ Set a function for callouts of contents in progress.
+ This value set in onig_initialize_match_param() as a default
+ callout function.
+
+ normal return: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_retraction_callout(void)
+
+ Get a function for callouts of contents in retraction (backtrack).
+
+
+# int onig_set_retraction_callout(OnigCalloutFunc f)
+
+ Set a function for callouts of contents in retraction (backtrack).
+ This value set in onig_initialize_match_param() as a default
+ callout function.
+
+ normal return: ONIG_NORMAL
+
+
+# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ Set a function for callouts of contents in progress.
+
+ arguments
+ 1 mp: match-param pointer
+ 2 f: function
+
+ normal return: ONIG_NORMAL
+
+
+# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ Set a function for callouts of contents in retraction (backtrack).
+
+ arguments
+ 1 mp: match-param pointer
+ 2 f: function
+
+ normal return: ONIG_NORMAL
+
+
+
+(3) Set functions for Callouts of name
+
+# int onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int opt_arg_num, OnigValue opt_defaults[])
+
+ Set a function for callouts of name.
+ Allowed name string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z)
+
+ (enc, name) pair is used as key value to find callout function.
+ You have to call this function for every encoding used in your applications.
+ But if enc is ASCII compatible and (enc, name) entry is not found,
+ then (ASCII, name) entry is used.
+ Therefore, if you use ASCII compatible encodings only, it is enough to call
+ this function one time for (ASCII, name).
+
+ arguments
+ 1 enc: character encoding
+ 2 type: callout type (currently ONIG_CALLOUT_TYPE_SINGLE only supported)
+ 3 name: name string address (the string is encoded by enc)
+ 4 name_end: name string end address
+ 5 callout_in: direction (ONIG_CALLOUT_IN_PROGRESS/RETRACTION/BOTH)
+ 6 callout: callout function
+ 7 end_callout: * not used currently (set 0)
+ 8 arg_num: number of arguments (*limit by ONIG_CALLOUT_MAX_ARGS_NUM == 4)
+ 9 arg_types: type array of arguments
+ 10 opt_arg_num: number of optional arguments
+ 11 opt_defaults: default values array of optional arguments
+
+ normal return: ONIG_NORMAL
+ error:
+ ONIGERR_INVALID_CALLOUT_NAME
+ ONIGERR_INVALID_ARGUMENT
+ ONIGERR_INVALID_CALLOUT_ARG
+
+
+
+(4) User data
+
+# int onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data)
+
+ Set a user_data value which passed as second argument of callout.
+
+ normal return: ONIG_NORMAL
+
+
+
+(5) Get values from OnigCalloutArgs
+
+# int onig_get_callout_num_by_callout_args(OnigCalloutArgs* args)
+
+ Returns callout number of this callout.
+ "Callout number" is an identifier of callout in a regex pattern.
+
+
+# OnigCalloutIn onig_get_callout_in_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the direction of this callout.
+ (ONIG_CALLOUT_IN_PROGRESS or ONIG_CALLOUT_IN_RETRACTION)
+
+
+# int onig_get_name_id_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the name identifier of this callout.
+ If this callout is callout of contents, then returns ONIG_NON_NAME_ID.
+
+
+# const OnigUChar* onig_get_contents_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the contents string of this callout. (NULL terminated string)
+ If this callout is callout of name, then returns NULL.
+
+
+# const OnigUChar* onig_get_contents_end_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the end of contents string of this callout.
+ If this callout is callout of name, then returns NULL.
+
+
+# int onig_get_args_num_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the number of args of this callout.
+ It includes optional arguments that doesn't passed in regex pattern.
+ If this callout is callout of contents, then returns
+ ONIGERR_INVALID_ARGUMENT.
+
+
+# int onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the number of args that passed really in regex pattern.
+ If this callout is callout of contents, then returns
+ ONIGERR_INVALID_ARGUMENT.
+
+
+# int onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val)
+
+ Returns a value and a type of the callout argument.
+ If this callout is callout of contents, then returns
+ ONIGERR_INVALID_ARGUMENT.
+
+ normal return: ONIG_NORMAL
+
+
+# const OnigUChar* onig_get_string_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the subject string address.
+ This is the second argument(str) of onig_search().
+
+
+# const OnigUChar* onig_get_string_end_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the end address of subject string.
+ This is the third argument(end) of onig_search().
+
+
+# const OnigUChar* onig_get_start_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the start address of subject string in current match process.
+
+
+# const OnigUChar* onig_get_right_range_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the right range address of subject string.
+
+
+# const OnigUChar* onig_get_current_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the current address of subject string in current match process.
+
+
+# OnigRegex onig_get_regex_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the regex object address of this callout.
+
+
+# unsigned long onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args)
+
+ Returns the current counter value for retry-limit-in-match.
+
+
+
+(6) Tag
+
+ "Tag" is a name assigned to a callout in regexp pattern.
+ Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z)
+
+
+# int onig_callout_tag_is_exist_at_callout_num(OnigRegex reg, int callout_num)
+
+ Returns 1 if tag is assigned for the callout, else returns 0.
+
+
+# int onig_get_callout_num_by_tag(OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end)
+
+ Returns the callout number for the tag.
+
+
+# const OnigUChar* onig_get_callout_tag_start(OnigRegex reg, int callout_num)
+
+ Returns the start address of tag string for the callout.
+ (NULL terminated string)
+
+
+# const OnigUChar* onig_get_callout_tag_end(OnigRegex reg, int callout_num)
+
+ Returns the end address of tag string for the callout.
+
+
+
+(7) Callout data (used in callout functions)
+
+ "Callout data" is ONIG_CALLOUT_DATA_SLOT_NUM(5) values area
+ for each callout in each search process.
+ Each value area in a callout is indicated by "slot" number (0 - 4).
+ Callout data are used for any purpose by callout function implementers.
+
+
+# int onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ Returns the callout data value/type for a callout slot indicated by
+ callout_num/slot.
+
+ normal return: ONIG_NORMAL
+ 1: not yet set (type is ONIG_TYPE_VOID)
+ < 0: error code
+
+
+# int onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)
+
+ Returns self callout data value/type.
+
+ normal return: ONIG_NORMAL
+ 1: not yet set (type is ONIG_TYPE_VOID)
+ < 0: error code
+
+
+# int onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val)
+
+ Set the callout data value/type for a callout slot indicated by callout_num/slot.
+
+ normal return: ONIG_NORMAL
+ < 0: error code
+
+
+# int onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val)
+
+ Set self callout data value/type for a callout slot indicated by slot.
+
+ normal return: ONIG_NORMAL
+ < 0: error code
+
+
+# int onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)
+
+ This function is almost same as onig_get_callout_data_by_callout_args_self().
+ But this function doesn't clear values which set in previous failed match process.
+ Other onig_get_callout_data_xxxx() functions clear all values which set
+ in previous failed match process.
+
+ For example, Builtin callout (*TOTAL_COUNT) is implemented by using this
+ function for accumulate count of all of match processes in a search process.
+ Builtin callout (*COUNT) returns count in last success match process only,
+ because it doesn't use this function.
+
+
+(8) Callout data (used in apllications)
+
+# int onig_get_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ Returns the callout data value/type for a callout slot indicated by
+ callout_num/slot.
+
+ normal return: ONIG_NORMAL
+ 1: not yet set (type is ONIG_TYPE_VOID)
+ < 0: error code
+
+
+# int onig_get_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val)
+
+ Returns the callout data value/type for a callout slot indicated by tag/slot.
+
+ normal return: ONIG_NORMAL
+ 1: not yet set (type is ONIG_TYPE_VOID)
+ < 0: error code
+
+
+# int onig_set_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val)
+
+ Set the callout data value/type for a callout slot indicated by callout_num/slot.
+
+ normal return: ONIG_NORMAL
+ < 0: error code
+
+
+# int onig_set_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val)
+
+ Set the callout data value/type for a callout slot indicated by tag/slot.
+
+ normal return: ONIG_NORMAL
+ < 0: error code
+
+
+# int onig_get_callout_data_dont_clear_old(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ No needs to use this function.
+ It will be abolished.
+
+
+
+(9) Miscellaneous functions
+
+# OnigUChar* onig_get_callout_name_by_name_id(int name_id)
+
+ Returns callout name of the name id.
+ if invalid name id is passed, return 0.
+
+
+# int onig_get_capture_range_in_callout(OnigCalloutArgs* args, int mem_num, int* begin, int* end)
+
+ Returns current capture range position.
+ Position is byte length offset from subject string.
+ For uncaptured mem_num, ONIG_REGION_NOTPOS is set.
+
+
+# int onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* used_bytes)
+
+ Returns current used match-stack size.
+
+ used_num: number of match-stack elements
+ used_bytes: used byte size of match-stack
+
+//END
diff --git a/ext/mbstring/oniguruma/doc/CALLOUTS.API.ja b/ext/mbstring/oniguruma/doc/CALLOUTS.API.ja
new file mode 100644
index 0000000000..c56555ad12
--- /dev/null
+++ b/ext/mbstring/oniguruma/doc/CALLOUTS.API.ja
@@ -0,0 +1,382 @@
+Callouts API Version 6.8.2 2018/06/08
+
+#include <oniguruma.h>
+
+(1) 呼ã³å‡ºã—関数
+(2) 内容ã®å‘¼ã³å‡ºã—関数ã®è¨­å®š/å–å¾—
+(3) åå‰ã®å‘¼ã³å‡ºã—関数ã®è¨­å®š
+(4) ユーザデータ
+(5) OnigCalloutArgsã‹ã‚‰ã®å€¤ã®å–å¾—
+(6) å札
+(7) 呼ã³å‡ºã—データ (呼ã³å‡ºã—関数内ã‹ã‚‰ä½¿ç”¨ã•ã‚Œã‚‹)
+(8) 呼ã³å‡ºã—データ (アプリケーションã‹ã‚‰ä½¿ç”¨ã•ã‚Œã‚‹)
+(9) ãã®ä»–ã®é–¢æ•°
+
+
+(1) 呼ã³å‡ºã—関数
+
+ åž‹: OnigCalloutFunc
+
+ typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data);
+
+ è‹¥ã—呼ã³å‡ºã—関数ã¨ã—ã¦ï¼(NULL)ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã¨ã€å‘¼ã°ã‚Œã‚‹ã“ã¨ã¯ãªã„
+
+
+ * 呼ã³å‡ºã—関数ã®æˆ»ã‚Šå€¤ (int)
+
+ ONIG_CALLOUT_FAIL (== 1): 失敗
+ ONIG_CALLOUT_SUCCESS (== 0): æˆåŠŸ
+ -1未満: エラーコード (検索/ç…§åˆã®çµ‚了)
+
+ ONIG_CALLOUT_FAIL/SUCCESSã¯ã€å¾Œé€€ä¸­ã®å‘¼ã³å‡ºã—ã§ã¯ç„¡è¦–ã•ã‚Œã‚‹ã€‚
+ 後退ã¯å¤±æ•—ã®å›žå¾©éŽç¨‹ãªã®ã§ã€‚
+
+ * 呼ã³å‡ºã—関数ã®ä¾‹
+
+ extern int always_success(OnigCalloutArgs* args, void* user_data)
+ {
+ return ONIG_CALLOUT_SUCCESS;
+ }
+
+
+
+(2) 内容ã®å‘¼ã³å‡ºã—関数ã®è¨­å®š/å–å¾—
+
+# OnigCalloutFunc onig_get_progress_callout(void)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(å‰é€²ä¸­)ã‚’è¿”ã™
+
+
+# int onig_set_progress_callout(OnigCalloutFunc f)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(å‰é€²ä¸­)をセットã™ã‚‹ã€‚
+ ã“ã®å€¤ã¯onig_initialize_match_param()ã®ä¸­ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‘¼ã³å‡ºã—関数ã¨ã—ã¦
+ セットã•ã‚Œã‚‹ã€‚
+
+ 正常終了: ONIG_NORMAL
+
+
+# OnigCalloutFunc onig_get_retraction_callout(void)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(後退中)ã‚’è¿”ã™
+
+
+# int onig_set_retraction_callout(OnigCalloutFunc f)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(後退中)をセットã™ã‚‹ã€‚
+ ã“ã®å€¤ã¯onig_initialize_match_param()ã®ä¸­ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®å‘¼ã³å‡ºã—関数ã¨ã—ã¦
+ セットã•ã‚Œã‚‹ã€‚
+
+ 正常終了: ONIG_NORMAL
+
+
+# int onig_set_progress_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(å‰é€²ä¸­)をセットã™ã‚‹ã€‚
+
+ 引数
+ 1 mp: match-paramアドレス
+ 2 f: 関数
+
+ 正常終了: ONIG_NORMAL
+
+
+# int onig_set_retraction_callout_of_match_param(OnigMatchParam* mp, OnigCalloutFunc f)
+
+ 内容ã®å‘¼ã³å‡ºã—関数(後退中)をセットã™ã‚‹ã€‚
+
+ 引数
+ 1 mp: match-paramアドレス
+ 2 f: 関数
+
+ 正常終了: ONIG_NORMAL
+
+
+
+(3) åå‰ã®å‘¼ã³å‡ºã—関数ã®è¨­å®š
+
+# int onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int opt_arg_num, OnigValue opt_defaults[])
+
+ åå‰ã®å‘¼ã³å‡ºã—関数をセットã™ã‚‹ã€‚
+ åå‰ã«è¨±ã•ã‚Œã‚‹æ–‡å­—: _ A-Z a-z 0-9 (* 最åˆã®æ–‡å­—: _ A-Z a-z)
+
+ (enc, name)ã®ãƒšã‚¢ãŒã€å‘¼ã³å‡ºã—関数を見ã¤ã‘ã‚‹ãŸã‚ã®ã‚­ãƒ¼ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã‚‹ã€‚
+ アプリケーションã§ä½¿ç”¨ã•ã‚Œã‚‹å„エンコーディングã«å¯¾ã—ã¦ã“ã®é–¢æ•°ã‚’呼ã¶å¿…è¦ãŒã‚る。
+ ã—ã‹ã—è‹¥ã—encエンコーディングãŒASCII互æ›ã§ã‚ã‚Šã€(enc, name)ã«å¯¾ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªãŒ
+ 見ã¤ã‹ã‚‰ãªã„å ´åˆã«ã¯ã€(ASCII, name)エントリãŒå‚ç…§ã•ã‚Œã‚‹ã€‚
+ 従ã£ã¦ã€è‹¥ã—ASCII互æ›ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®ã¿ä½¿ç”¨ã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€ã“ã®é–¢æ•°ã‚’(ASCII, name)
+ ã«ã¤ã„ã¦ä¸€å›žå‘¼ã¹ã°å分ã§ã‚る。
+
+ 引数
+ 1 enc: 文字エンコーディング
+ 2 type: 呼ã³å‡ºã—åž‹ (ç¾åœ¨ã¯ ONIG_CALLOUT_TYPE_SINGLE ã®ã¿ã‚µãƒãƒ¼ãƒˆ)
+ 3 name: åå‰ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ (encã§ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã•ã‚Œã¦ã„る文字列)
+ 4 name_end: åå‰ã®çµ‚端アドレス
+ 5 callout_in: æ–¹å‘フラグ (ONIG_CALLOUT_IN_PROGRESS/RETRACTION/BOTH)
+ 6 callout: 呼ã³å‡ºã—関数
+ 7 end_callout: *ã¾ã ä½¿ç”¨ã—ã¦ã„ãªã„ (ï¼ã‚’セット)
+ 8 arg_num: 引数ã®æ•° (* 最大値 ONIG_CALLOUT_MAX_ARGS_NUM == 4)
+ 9 arg_types: 引数ã®åž‹ã®é…列
+ 10 opt_arg_num: オプション引数ã®æ•°
+ 11 opt_defaults: オプション引数ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤
+
+ 正常終了: ONIG_NORMAL
+ error:
+ ONIGERR_INVALID_CALLOUT_NAME
+ ONIGERR_INVALID_ARGUMENT
+ ONIGERR_INVALID_CALLOUT_ARG
+
+
+
+(4) ユーザデータ
+
+# int onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data)
+
+ 呼ã³å‡ºã—関数ã®å¼•æ•°ã¨ã—ã¦æ¸¡ã•ã‚Œã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ‡ãƒ¼ã‚¿ã‚’セットã™ã‚‹ã€‚
+
+ 正常終了: ONIG_NORMAL
+
+
+
+(5) OnigCalloutArgsã‹ã‚‰ã®å€¤ã®å–å¾—
+
+# int onig_get_callout_num_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®å‘¼ã³å‡ºã—番å·ã‚’è¿”ã™ã€‚
+ "呼ã³å‡ºã—番å·"ã¨ã¯ã€æ­£è¦è¡¨ç¾ãƒ‘ターンã®ä¸­ã®å‘¼ã³å‡ºã—ã«å¯¾ã™ã‚‹è­˜åˆ¥å­ã§ã‚る。
+
+
+# OnigCalloutIn onig_get_callout_in_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ãŒèµ·ããŸæ™‚ã®æ–¹å‘(å‰é€²ä¸­/後退中)ã‚’è¿”ã™ã€‚
+ (ONIG_CALLOUT_IN_PROGRESS ã‹ ONIG_CALLOUT_IN_RETRACTION)
+
+
+# int onig_get_name_id_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®åå‰(name)ã®è­˜åˆ¥å­ã‚’è¿”ã™ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒå†…容ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€ONIG_NON_NAME_IDãŒè¿”ã•ã‚Œã‚‹ã€‚
+
+
+# const OnigUChar* onig_get_contents_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®å†…容文字列(NULL終端ã‚ã‚Š)ã‚’è¿”ã™ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒåå‰ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€NULLã‚’è¿”ã™ã€‚
+
+
+# const OnigUChar* onig_get_contents_end_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®å†…容(contents)ã®çµ‚端を返ã™ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒåå‰ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€NULLã‚’è¿”ã™ã€‚
+
+
+# int onig_get_args_num_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®å¼•æ•°ã®æ•°ã‚’è¿”ã™ã€‚
+ æ­£è¦è¡¨ç¾ãƒ‘ターンã®ä¸­ã§æ¸¡ã•ã‚Œãªã‹ã£ãŸã‚ªãƒ—ション引数もå«ã‚€ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒå†…容ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€ONIGERR_INVALID_ARGUMENTãŒè¿”ã•ã‚Œã‚‹ã€‚
+
+
+# int onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®æœ¬å½“ã«æ¸¡ã•ã‚ŒãŸå¼•æ•°ã®æ•°ã‚’è¿”ã™ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒå†…容ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€ONIGERR_INVALID_ARGUMENTãŒè¿”ã•ã‚Œã‚‹ã€‚
+
+
+# int onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®ä¸€å€‹ã®å¼•æ•°ã®å€¤ã¨åž‹ã‚’è¿”ã™ã€‚
+ è‹¥ã—ã“ã®å‘¼ã³å‡ºã—ãŒå†…容ã®å‘¼ã³å‡ºã—ã®ã¨ãã«ã¯ã€ONIGERR_INVALID_ARGUMENTãŒè¿”ã•ã‚Œã‚‹ã€‚
+
+ 正常終了: ONIG_NORMAL
+
+
+# const OnigUChar* onig_get_string_by_callout_args(OnigCalloutArgs* args)
+
+ 対象文字列ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
+ onig_search()ã®äºŒç•ªç›®ã®å¼•æ•°(str)ã§ã‚る。
+
+
+# const OnigUChar* onig_get_string_end_by_callout_args(OnigCalloutArgs* args)
+
+ 対象文字列ã®çµ‚端アドレスを返ã™ã€‚
+ onig_search()ã®ä¸‰ç•ªç›®ã®å¼•æ•°(end)ã§ã‚る。
+
+
+# const OnigUChar* onig_get_start_by_callout_args(OnigCalloutArgs* args)
+
+ 対象文字列ã®ç¾åœ¨ã®ç…§åˆå‡¦ç†é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
+
+
+# const OnigUChar* onig_get_right_range_by_callout_args(OnigCalloutArgs* args)
+
+ 対象文字列ã®ç¾åœ¨ã®ç…§åˆç¯„囲アドレスを返ã™ã€‚
+
+
+# const OnigUChar* onig_get_current_by_callout_args(OnigCalloutArgs* args)
+
+ 対象文字列ã®ç¾åœ¨ã®ç…§åˆä½ç½®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
+
+
+# OnigRegex onig_get_regex_by_callout_args(OnigCalloutArgs* args)
+
+ ã“ã®å‘¼ã³å‡ºã—ã®æ­£è¦è¡¨ç¾ã‚ªãƒ–ジェクトã®ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
+
+
+# unsigned long onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args)
+
+ retry-limit-in-matchã®ãŸã‚ã®ãƒªãƒˆãƒ©ã‚¤ã‚«ã‚¦ãƒ³ã‚¿ã®ç¾åœ¨å€¤ã‚’è¿”ã™ã€‚
+
+
+
+(6) å札
+
+ "Tag" (å札)ã¨ã¯ã€æ­£è¦è¡¨ç¾ãƒ‘ターンã®ä¸­ã§å‘¼ã³å‡ºã—ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸåå‰ã§ã‚る。
+ tag文字列ã«ä½¿ç”¨ã§ãる文字: _ A-Z a-z 0-9 (* 先頭ã®æ–‡å­—: _ A-Z a-z)
+
+
+# int onig_callout_tag_is_exist_at_callout_num(OnigRegex reg, int callout_num)
+
+ ãã®å‘¼ã³å‡ºã—ã«tagãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã‚Œã°1ã‚’è¿”ã™ã€ãã†ã§ãªã‘ã‚Œã°0ã‚’è¿”ã™ã€‚
+
+
+# const OnigUChar* onig_get_callout_tag_start(OnigRegex reg, int callout_num)
+
+ ãã®å‘¼ã³å‡ºã—ã«å¯¾ã™ã‚‹tag文字列(NULL終端ã‚ã‚Š)ã®å…ˆé ­ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’è¿”ã™ã€‚
+
+
+# const OnigUChar* onig_get_callout_tag_end(OnigRegex reg, int callout_num)
+
+ ãã®å‘¼ã³å‡ºã—ã«å¯¾ã™ã‚‹tag文字列ã®çµ‚端アドレスを返ã™ã€‚
+
+
+# int onig_get_callout_num_by_tag(OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end)
+
+ ãã®tagã«å¯¾ã™ã‚‹å‘¼ã³å‡ºã—番å·ã‚’è¿”ã™ã€‚
+
+
+
+(7) 呼ã³å‡ºã—データ (呼ã³å‡ºã—関数内ã‹ã‚‰ä½¿ç”¨ã•ã‚Œã‚‹)
+
+ "呼ã³å‡ºã—データ" (callout data)ã¨ã¯ã€
+ ãã‚Œãžã‚Œã®å‘¼ã³å‡ºã—ã«å¯¾ã—ã¦ãã‚Œãžã‚Œã®æ¤œç´¢å‡¦ç†ã®ä¸­ã§å‰²ã‚Šå½“ã¦ã‚‰ã‚ŒãŸã€
+ ONIG_CALLOUT_DATA_SLOT_NUM(== 5)個ã®å€¤ã®é ˜åŸŸã§ã‚る。
+ 一個ã®å‘¼ã³å‡ºã—ã«å¯¾ã™ã‚‹å„値ã®é ˜åŸŸã¯ã€"スロット"(slot)番å·(0 - 4)ã«ã‚ˆã£ã¦ç¤ºã•ã‚Œã‚‹ã€‚
+ 呼ã³å‡ºã—データã¯å‘¼ã³å‡ºã—関数ã®å®Ÿè£…者ã«ã‚ˆã£ã¦ä»»æ„ã®ç›®çš„ã«ä½¿ç”¨ã•ã‚Œã‚‹ã€‚
+
+
+# int onig_get_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ callout_num/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®å€¤/åž‹ã‚’è¿”ã™ã€‚
+
+ 正常終了: ONIG_NORMAL
+ 1: 値ãŒæœªã‚»ãƒƒãƒˆ (type㯠ONIG_TYPE_VOID)
+ < 0: エラーコード
+
+
+# int onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)
+
+ 自分自身ã®å‘¼ã³å‡ºã—ã®slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸã‚¹ãƒ­ãƒƒãƒˆã«å¯¾ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®å€¤/åž‹ã‚’è¿”ã™ã€‚
+
+ 正常終了: ONIG_NORMAL
+ 1: 値ãŒæœªã‚»ãƒƒãƒˆ (type㯠ONIG_TYPE_VOID)
+ < 0: エラーコード
+
+
+# int onig_set_callout_data_by_callout_args(OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val)
+
+ callout_num/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹å€¤/型をセットã™ã‚‹ã€‚。
+
+ 正常終了: ONIG_NORMAL
+ < 0: エラーコード
+
+
+# int onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val)
+
+ 自分自身ã®å‘¼ã³å‡ºã—ã®slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸã‚¹ãƒ­ãƒƒãƒˆã«å¯¾ã™ã‚‹å€¤/型をセットã™ã‚‹ã€‚。
+
+ 正常終了: ONIG_NORMAL
+ < 0: エラーコード
+
+
+# int onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val)
+
+ ã“ã®é–¢æ•°ã¯ã€onig_get_callout_data_by_callout_args_self()ã¨ã»ã¼åŒã˜ã§ã‚る。
+ ã—ã‹ã—ã“ã®é–¢æ•°ã¯ã€ç¾åœ¨ã®ç…§åˆå‡¦ç†ä»¥å‰ã®å¤±æ•—ã—ãŸç…§åˆå‡¦ç†ã®ä¸­ã§ã‚»ãƒƒãƒˆã•ã‚ŒãŸå€¤ã‚’
+ クリアã—ãªã„。
+ ä»–ã®onig_get_callout_data_xxxx()関数ã¯ã€ä»¥å‰ã®å¤±æ•—ã—ãŸç…§åˆå‡¦ç†ã®ä¸­ã§ã‚»ãƒƒãƒˆã•ã‚ŒãŸå€¤ã‚’
+ クリアã™ã‚‹ã€‚
+
+ 例ãˆã°ã€çµ„ã¿è¾¼ã¿å‘¼ã³å‡ºã—(*TOTAL_COUNT)ã¯ã€æ¤œç´¢å‡¦ç†ã®ä¸­ã®å…¨ã¦ã®ç…§åˆå‡¦ç†ã®ç©ç®—カウントを
+ å¾—ã‚‹ãŸã‚ã«ã“ã®é–¢æ•°ã‚’使用ã—ã¦å®Ÿè£…ã•ã‚Œã¦ã„る。
+ 組ã¿è¾¼ã‚€å‘¼ã³å‡ºã—(*COUNT)ã¯ã€ã“ã®é–¢æ•°ã‚’使用ã—ãªã„ã®ã§ã€æœ€å¾Œã®æˆåŠŸã—ãŸç…§åˆå‡¦ç†ã ã‘ã®
+ カウントを返ã™ã€‚
+
+
+
+(8) 呼ã³å‡ºã—データ (アプリケーションã‹ã‚‰ä½¿ç”¨ã•ã‚Œã‚‹)
+
+# int onig_get_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ callout_num/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®å€¤/åž‹ã‚’è¿”ã™ã€‚
+
+ 正常終了: ONIG_NORMAL
+ 1: 値ãŒæœªã‚»ãƒƒãƒˆ (type㯠ONIG_TYPE_VOID)
+ < 0: エラーコード
+
+
+# int onig_get_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val)
+
+ tag/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ã®å€¤/åž‹ã‚’è¿”ã™ã€‚
+
+ 正常終了: ONIG_NORMAL
+ 1: 値ãŒæœªã‚»ãƒƒãƒˆ (type㯠ONIG_TYPE_VOID)
+ < 0: エラーコード
+
+
+# int onig_set_callout_data(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val)
+
+ callout_num/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹å€¤/型をセットã™ã‚‹ã€‚。
+
+ 正常終了: ONIG_NORMAL
+ < 0: エラーコード
+
+
+# int onig_set_callout_data_by_tag(OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val)
+
+ tag/slotã«ã‚ˆã£ã¦ç¤ºã•ã‚ŒãŸå‘¼ã³å‡ºã—スロットã«å¯¾ã™ã‚‹å€¤/型をセットã™ã‚‹ã€‚。
+
+ 正常終了: ONIG_NORMAL
+ < 0: エラーコード
+
+
+# int onig_get_callout_data_dont_clear_old(OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val)
+
+ ã“ã®é–¢æ•°ã‚’使用ã™ã‚‹å¿…è¦ã¯ãªã„ã¨æ€ã‚れる。
+ 廃止予定。
+
+
+
+(9) ãã®ä»–ã®é–¢æ•°
+
+# OnigUChar* onig_get_callout_name_by_name_id(int name_id)
+
+ åå‰ã®è­˜åˆ¥å­ã«å¯¾ã™ã‚‹åå‰ã‚’è¿”ã™ã€‚
+ ä¸æ­£ãªè­˜åˆ¥å­ãŒæ¸¡ã•ã‚ŒãŸå ´åˆã«ã¯ï¼ã‚’è¿”ã™ã€‚
+
+
+# int onig_get_capture_range_in_callout(OnigCalloutArgs* args, int mem_num, int* begin, int* end)
+
+ ç¾åœ¨ã®æ•ç²ç¯„囲を返ã™ã€‚
+ ä½ç½®ã¯ã€å¯¾è±¡æ–‡å­—列ã«å¯¾ã™ã‚‹ãƒã‚¤ãƒˆå˜ä½ã§è¡¨ã•ã‚Œã‚‹ã€‚
+ 未æ•ç²ã®mem_numã«å¯¾ã—ã¦ã¯ã€ONIG_REGION_NOTPOSãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã€‚
+
+
+# int onig_get_used_stack_size_in_callout(OnigCalloutArgs* args, int* used_num, int* used_bytes)
+
+ ç¾åœ¨ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ç…§åˆå‡¦ç†ç”¨ã‚¹ã‚¿ãƒƒã‚¯ã‚µã‚¤ã‚ºã‚’è¿”ã™ã€‚
+
+ used_num: è¦ç´ æ•°
+ used_bytes: ãƒã‚¤ãƒˆæ•°
+
+//END
diff --git a/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN b/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN
new file mode 100644
index 0000000000..26840e74c4
--- /dev/null
+++ b/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN
@@ -0,0 +1,95 @@
+CALLOUTS.BUILTIN 2018/03/26
+
+
+* FAIL (progress)
+
+ (*FAIL)
+
+ Always fail.
+
+
+* MISMATCH (progress)
+
+ (*MISMATCH)
+
+ Terminates Match process.
+ Continues Search process.
+
+
+* ERROR (progress)
+
+ (*ERROR{n::LONG})
+
+ Terminates Search/Match process.
+
+ Return value is the argument 'n'. (The value must be less than -1)
+ 'n' is an optional argument. (default value is ONIG_ABORT)
+
+
+* MAX (progress/retraction)
+
+ (*MAX{n::LONG/TAG, c::CHAR})
+
+ Restricts the maximum count of success(default), progress or retraction.
+ If 'n' type is tag, slot 0 value of the tag are used.
+ Depends on 'c' argument, the slot 0 value changes.
+ 'c' is an optional argument, default value is 'X'.
+
+ (* success count = progress count - retraction count)
+
+
+ ex. "(?:(*COUNT[T]{X})a)*(?:(*MAX{T})c)*"
+
+ [callout data]
+ slot 0: '>': progress count, '<': retraction count, 'X': success count (default)
+
+
+* COUNT (progress/retraction)
+
+ (*COUNT{c::CHAR})
+
+ Counter.
+ Depends on 'c' argument, the slot 0 value changes.
+ 'c' is an optional argument, default value is '>'.
+
+ [callout data]
+ slot 0: '>': progress count (default), '<': retraction count, 'X': success count
+ slot 1: progress count
+ slot 2: retraction count
+
+ ** If option ONIG_OPTION_FIND_LONGEST or ONIG_OPTION_FIND_NOT_EMPTY is used,
+ counts are not accurate.
+
+
+* TOTAL_COUNT (progress/retraction)
+
+ (*TOTAL_COUNT{c::CHAR})
+
+ It's the almost same as COUNT.
+ But the counts are integrated in a search process.
+ 'c' is an optional argument, default value is '>'.
+
+ [callout data]
+ slot 0: '>': progress count (default), '<': retraction count, 'X': success count
+ slot 1: progress count
+ slot 2: retraction count
+
+ ** If option ONIG_OPTION_FIND_LONGEST or ONIG_OPTION_FIND_NOT_EMPTY is used,
+ counts are not accurate.
+
+
+* CMP (progress)
+
+ (*CMP{x::TAG/LONG, op::STRING, y::TAG/LONG})
+
+ Compares x value and y value with op operator.
+ If x and y types are tag, slot 0 value of the tag are used.
+
+ op: '==', '!=', '>', '<', '>=', '<='
+
+ ex. "(?:(*MAX[TA]{7})a|(*MAX[TB]{5})b)*(*CMP{TA,>=,4})"
+
+ [callout data]
+ slot 0: op value (enum OP_CMP in src/regexec.c)
+
+//END
diff --git a/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN.ja b/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN.ja
new file mode 100644
index 0000000000..d371beb6e9
--- /dev/null
+++ b/ext/mbstring/oniguruma/doc/CALLOUTS.BUILTIN.ja
@@ -0,0 +1,93 @@
+CALLOUTS.BUILTIN.ja 2018/03/26
+
+
+* FAIL (å‰é€²)
+
+ (*FAIL)
+
+ 常ã«å¤±æ•—ã™ã‚‹
+
+
+* MISMATCH (å‰é€²)
+
+ (*MISMATCH)
+
+ ç…§åˆã‚’中止ã™ã‚‹
+ 検索ã¯ç¶™ç¶šã™ã‚‹
+
+
+* ERROR (å‰é€²)
+
+ (*ERROR{n::LONG})
+
+ 検索/ç…§åˆã‚’中止ã™ã‚‹
+ 戻り値ã¯å¼•æ•°'n'ã®å€¤ã€‚(-1よりå°ã•ã„è² ã®å€¤ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„)
+ 'n'ã¯ã‚ªãƒ—ション引数ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯ONIG_ABORT
+
+
+* MAX (å‰é€²/後退)
+
+ (*MAX{n::LONG/TAG, c::CHAR})
+
+ æˆåŠŸ(デフォルト)ã€å‰é€²ã¾ãŸã¯å¾Œé€€å›žæ•°ã‚’制é™ã™ã‚‹
+ 'n'ãŒTAGã®ã¨ãã¯ã€ãã®TAGã®calloutã®slot 0ã®å€¤ãŒä½¿ç”¨ã•ã‚Œã‚‹
+ 'c'引数ã®å€¤ã«ã‚ˆã£ã¦ã€slot 0ã®å€¤ãŒå¤‰åŒ–ã™ã‚‹
+ 'c'ã¯ã‚ªãƒ—ション引数ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯'X'
+
+ 例: "(?:(*COUNT[T]{X})a)*(?:(*MAX{T})c)*"
+
+ [callout data]
+ slot 0: '>': å‰é€²å›žæ•°, '<': 後退回数, 'X': æˆåŠŸå›žæ•°(デフォルト)
+
+
+* COUNT (å‰é€²/後退)
+
+ (*COUNT{c::CHAR})
+
+ カウンタ
+ 'c'引数ã®å€¤ã«ã‚ˆã£ã¦ã€slot 0ã®å€¤ãŒå¤‰åŒ–ã™ã‚‹
+ 'c'ã¯ã‚ªãƒ—ション引数ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯'>'
+
+ [callout data]
+ slot 0: '>': å‰é€²å›žæ•°(デフォルト), '<': 後退回数, 'X': æˆåŠŸå›žæ•°
+ slot 1: å‰é€²å›žæ•°
+ slot 2: 後退回数
+
+ (* æˆåŠŸå›žæ•° = å‰é€²å›žæ•° - 後退回数)
+
+ ** ONIG_OPTION_FIND_LONGEST ã¾ãŸã¯ ONIG_OPTION_FIND_NOT_EMPTY ãŒä½¿ç”¨ã•ã‚Œã‚‹ã¨
+ 正確ãªå‹•ä½œãŒã§ããªããªã‚‹
+
+
+* TOTAL_COUNT (å‰é€²/後退)
+
+ (*TOTAL_COUNT{c::CHAR})
+
+ ã“ã‚Œã¯COUNTã¨ã»ã¨ã‚“ã©åŒã˜
+ ã—ã‹ã—ã€ã‚«ã‚¦ãƒ³ãƒˆãŒæ¤œç´¢éŽç¨‹ã§ç©ç®—ã•ã‚Œã‚‹
+ 'c'ã¯ã‚ªãƒ—ション引数ã§ã€ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ã¯'>'
+
+ [callout data]
+ slot 0: '>': å‰é€²å›žæ•°(デフォルト), '<': 後退回数, 'X': æˆåŠŸå›žæ•°
+ slot 1: å‰é€²å›žæ•°
+ slot 2: 後退回数
+
+ ** ONIG_OPTION_FIND_LONGEST ã¾ãŸã¯ ONIG_OPTION_FIND_NOT_EMPTY ãŒä½¿ç”¨ã•ã‚Œã‚‹ã¨
+ 正確ãªå‹•ä½œãŒã§ããªããªã‚‹
+
+
+* CMP (å‰é€²)
+
+ (*CMP{x::TAG/LONG, op::STRING, y::TAG/LONG})
+
+ xã®å€¤ã¨yã®å€¤ã‚’op演算å­ã§æ¯”較ã™ã‚‹
+ x, yãŒTAGã®ã¨ãã«ã¯ãã®calloutã®slot 0ã®å€¤ãŒå‚ç…§ã•ã‚Œã‚‹
+
+ op: '==', '!=', '>', '<', '>=', '<='
+
+ 例: "(?:(*MAX[TA]{7})a|(*MAX[TB]{5})b)*(*CMP{TA,>=,4})"
+
+ [callout data]
+ slot 0: op値 (src/regexec.c ã®ä¸­ã® enum OP_CMP)
+
+//END
diff --git a/ext/mbstring/oniguruma/doc/FAQ b/ext/mbstring/oniguruma/doc/FAQ
index c00f030453..dfbd7fac79 100644
--- a/ext/mbstring/oniguruma/doc/FAQ
+++ b/ext/mbstring/oniguruma/doc/FAQ
@@ -1,12 +1,12 @@
FAQ 2006/11/14
-1. Lognest match
+1. Longest match
- You can execute longest match by using ONIG_OPTION_FIND_LONGEST option
+ You can execute the longest match by using ONIG_OPTION_FIND_LONGEST option
in onig_new().
2. Mailing list
- There is no mailing list about Oniguruma.
+ There is no mailing list for Oniguruma.
// END
diff --git a/ext/mbstring/oniguruma/doc/FAQ.ja b/ext/mbstring/oniguruma/doc/FAQ.ja
index b8f4aa92d8..ffb25f4a6c 100644
--- a/ext/mbstring/oniguruma/doc/FAQ.ja
+++ b/ext/mbstring/oniguruma/doc/FAQ.ja
@@ -1,22 +1,22 @@
FAQ 2016/04/06
-1. ºÇĹ¥Þ¥Ã¥Á
+1. 最長マッãƒ
- onig_new()¤ÎÃæ¤Ç¡¢ONIG_OPTION_FIND_LONGEST¥ª¥×¥·¥ç¥ó
- ¤ò»ÈÍѤ¹¤ì¤ÐºÇĹ¥Þ¥Ã¥Á¤Ë¤Ê¤ë¡£
+ onig_new()ã®ä¸­ã§ã€ONIG_OPTION_FIND_LONGESTオプション
+ を使用ã™ã‚Œã°æœ€é•·ãƒžãƒƒãƒã«ãªã‚‹ã€‚
2. CR + LF
- DOS¤Î²þ¹Ô(CR(0x0c) + LF(0x0a)¤ÎϢ³)
+ DOSã®æ”¹è¡Œ(CR(0x0c) + LF(0x0a)ã®é€£ç¶š)
- regenc.h¤ÎÃæ¤Î¡¢°Ê²¼¤ÎÉôʬ¤òÍ­¸ú¤Ë¤¹¤ë¡£
+ regenc.hã®ä¸­ã®ã€ä»¥ä¸‹ã®éƒ¨åˆ†ã‚’有効ã«ã™ã‚‹ã€‚
/* #define USE_CRNL_AS_LINE_TERMINATOR */
-3. ¥á¡¼¥ê¥ó¥°¥ê¥¹¥È
+3. メーリングリスト
- µ´¼Ö¤Ë´Ø¤¹¤ë¥á¡¼¥ê¥ó¥°¥ê¥¹¥È¤Ï¸ºß¤·¤Ê¤¤¡£
+ 鬼車ã«é–¢ã™ã‚‹ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã¯å­˜åœ¨ã—ãªã„。
//END
diff --git a/ext/mbstring/oniguruma/doc/RE b/ext/mbstring/oniguruma/doc/RE
index 168541597c..963d0092f4 100644
--- a/ext/mbstring/oniguruma/doc/RE
+++ b/ext/mbstring/oniguruma/doc/RE
@@ -1,6 +1,6 @@
-Oniguruma Regular Expressions Version 6.3.0 2017/05/19
+Oniguruma Regular Expressions Version 6.8.0 2018/07/26
-syntax: ONIG_SYNTAX_RUBY (default)
+syntax: ONIG_SYNTAX_ONIGURUMA (default)
1. Syntax elements
@@ -23,6 +23,7 @@ syntax: ONIG_SYNTAX_RUBY (default)
\e escape (0x1B)
\nnn octal char (encoded byte value)
\o{17777777777} wide octal char (character code point value)
+ \uHHHH wide hexadecimal char (character code point value)
\xHH hexadecimal char (encoded byte value)
\x{7HHHHHHH} wide hexadecimal char (character code point value)
\cx control char (character code point value)
@@ -52,8 +53,8 @@ syntax: ONIG_SYNTAX_RUBY (default)
Not Unicode:
\t, \n, \v, \f, \r, \x20
- Unicode:
- 0009, 000A, 000B, 000C, 000D, 0085(NEL),
+ Unicode case:
+ U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL),
General_Category -- Line_Separator
-- Paragraph_Separator
-- Space_Separator
@@ -70,6 +71,26 @@ syntax: ONIG_SYNTAX_RUBY (default)
\H non-hexdigit char
+ \R general newline (* can't be used in character-class)
+ "\r\n" or \n,\v,\f,\r (* but doesn't backtrack from \r\n to \r)
+
+ Unicode case:
+ "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029
+
+ \N negative newline (?-m:.)
+
+ \O true anychar (?m:.) (* original function)
+
+ \X Extended Grapheme Cluster (?>\O(?:\Y\O)*)
+
+ \X doesn't check whether matching start position is boundary.
+ Write as \y\X if you want to ensure it.
+
+ Unicode case:
+ See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+ Not Unicode: (?>\r\n|\O)
+
Character Property
@@ -129,10 +150,15 @@ syntax: ONIG_SYNTAX_RUBY (default)
$ end of the line
\b word boundary
\B non-word boundary
+ \y Extended Grapheme Cluster boundary
+ \Y Extended Grapheme Cluster non-boundary
+
\A beginning of string
\Z end of string, or before newline at the end
\z end of string
\G where the current search attempt begins
+ \K keep (keep start position of the result string)
+
6. Character class
@@ -183,9 +209,9 @@ syntax: ONIG_SYNTAX_RUBY (default)
Final_Punctuation | Initial_Punctuation | Other_Punctuation |
Open_Punctuation
space Space_Separator | Line_Separator | Paragraph_Separator |
- 0009 | 000A | 000B | 000C | 000D | 0085
+ U+0009 | U+000A | U+000B | U+000C | U+000D | U+0085
upper Uppercase_Letter
- xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066
+ xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066
(0-9, a-f, A-F)
word Letter | Mark | Decimal_Number | Connector_Punctuation
@@ -195,11 +221,24 @@ syntax: ONIG_SYNTAX_RUBY (default)
(?#...) comment
- (?imx-imx) option on/off
- i: ignore case
- m: multi-line (dot (.) also matches newline)
- x: extended form
- (?imx-imx:subexp) option on/off for subexp
+ (?imxWDSP-imxWDSP:subexp) option on/off for subexp
+
+ i: ignore case
+ m: multi-line (dot (.) also matches newline)
+ x: extended form
+ W: ASCII only word (\w, \p{Word}, [[:word:]])
+ ASCII only word bound (\b)
+ D: ASCII only digit (\d, \p{Digit}, [[:digit:]])
+ S: ASCII only space (\s, \p{Space}, [[:space:]])
+ P: ASCII only POSIX properties (includes W,D,S)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit, word)
+
+ (?imxWDSP-imxWDSP) isolated option
+
+ * It makes a group to the next ')' or end of the pattern.
+ /ab(?i)c|def|gh/ == /ab(?i:c|def|gh)/
+
(?:subexp) non-capturing group
(subexp) capturing group
@@ -229,6 +268,82 @@ syntax: ONIG_SYNTAX_RUBY (default)
Assigning the same name to two or more subexps is allowed.
+ <Callouts>
+
+ * Callouts of contents
+ (?{...contents...}) callout in progress
+ (?{...contents...}D) D is a direction flag char
+ D = 'X': in progress and retraction
+ '<': in retraction only
+ '>': in progress only
+ (?{...contents...}[tag]) tag assigned
+ (?{...contents...}[tag]D)
+
+ * Escape characters have no effects in contents.
+ * contents is not allowed to start with '{'.
+
+ (?{{{...contents...}}}) n times continuations '}' in contents is allowed in
+ (n+1) times continuations {{{...}}}.
+
+ Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z)
+
+
+ * Callouts of name
+ (*name)
+ (*name{args...}) with args
+ (*name[tag]) tag assigned
+ (*name[tag]{args...})
+
+ Allowed name string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z)
+ Allowed tag string characters: _ A-Z a-z 0-9 (* first character: _ A-Z a-z)
+
+
+ <Absent functions>
+
+ (?~absent) Absent repeater (* proposed by Tanaka Akira)
+ This works like .* (more precisely \O*), but it is
+ limited by the range that does not include the string
+ match with <absent>.
+ This is a written abbreviation of (?~|absent|\O*).
+ \O* is used as a repeater.
+
+ (?~|absent|exp) Absent expression (* original)
+ This works like "exp", but it is limited by the range
+ that does not include the string match with <absent>.
+
+ ex. (?~|345|\d*) "12345678" ==> "12", "1", ""
+
+ (?~|absent) Absent stopper (* original)
+ After passed this operator, string right range is limited
+ at the point that does not include the string match whth
+ <absent>.
+
+ (?~|) Range clear
+ Clear the effects caused by Absent stoppers.
+
+ * Nested Absent functions are not supported and the behavior
+ is undefined.
+
+
+ <if-then-else>
+
+ (?(condition_exp)then_exp|else_exp) if-then-else
+ (?(condition_exp)then_exp) if-then
+
+ condition_exp can be a backreference number/name or a normal
+ regular expression.
+ When condition_exp is a backreference number/name, both then_exp and
+ else_exp can be omitted.
+ Then it works as a backreference validity checker.
+
+ [ backreference validity checker ] (* original)
+
+ (?(n)), (?(-n)), (?(+n)), (?(n+level)) ...
+ (?(<n>)), (?('-n')), (?(<+n>)) ...
+ (?(<name>)), (?('name')), (?(<name+level>)) ...
+
+
+
8. Backreferences
When we say "backreference a group," it actually means, "re-match the same
@@ -237,6 +352,8 @@ syntax: ONIG_SYNTAX_RUBY (default)
\n \k<n> \k'n' (n >= 1) backreference the nth group in the regexp
\k<-n> \k'-n' (n >= 1) backreference the nth group counting
backwards from the referring position
+ \k<+n> \k'+n' (n >= 1) backreference the nth group counting
+ forwards from the referring position
\k<name> \k'name' backreference a group with the specified name
When backreferencing with a name that is assigned to more than one groups,
@@ -280,14 +397,17 @@ syntax: ONIG_SYNTAX_RUBY (default)
p r.match("<foo>f<bar>bbb</bar>f</foo>").captures
-9. Subexp calls ("Tanaka Akira special")
+9. Subexp calls ("Tanaka Akira special") (* original function)
When we say "call a group," it actually means, "re-execute the subexp in
that group."
\g<n> \g'n' (n >= 1) call the nth group
+ \g<0> \g'0' call zero (call the total regexp)
\g<-n> \g'-n' (n >= 1) call the nth group counting backwards from
the calling position
+ \g<+n> \g'+n' (n >= 1) call the nth group counting forwards from
+ the calling position
\g<name> \g'name' call the group with the specified name
* Left-most recursive calls are not allowed.
@@ -340,7 +460,7 @@ syntax: ONIG_SYNTAX_RUBY (default)
-----------------------------
A-1. Syntax-dependent options
- + ONIG_SYNTAX_RUBY
+ + ONIG_SYNTAX_ONIGURUMA
(?m): dot (.) also matches newline
+ ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA
@@ -359,10 +479,8 @@ A-2. Original extensions
A-3. Missing features compared with perl 5.8.0
+ \N{name}
- + \l,\u,\L,\U, \X, \C
- + (?{code})
+ + \l,\u,\L,\U,\C
+ (??{code})
- + (?(condition)yes-pat|no-pat)
* \Q...\E
This is effective on ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA.
diff --git a/ext/mbstring/oniguruma/doc/RE.ja b/ext/mbstring/oniguruma/doc/RE.ja
index 5c09100400..a83bfb450c 100644
--- a/ext/mbstring/oniguruma/doc/RE.ja
+++ b/ext/mbstring/oniguruma/doc/RE.ja
@@ -1,74 +1,95 @@
-µ´¼Ö Àµµ¬É½¸½ Version 6.3.0 2017/05/19
+鬼車 æ­£è¦è¡¨ç¾ Version 6.8.0 2018/07/26
-»ÈÍÑʸˡ: ONIG_SYNTAX_RUBY (´ûÄêÃÍ)
+使用文法: ONIG_SYNTAX_ONIGURUMA (既定値)
-1. ´ðËÜÍ×ÁÇ
+1. 基本è¦ç´ 
- \ ÂàÈò½¤¾þ (¥¨¥¹¥±¡¼¥×) Àµµ¬É½¸½µ­¹æ¤ÎÍ­¸ú/̵¸ú¤ÎÀ©¸æ
- | ÁªÂò»Ò
- (...) ¼°½¸¹ç (¥°¥ë¡¼¥×)
- [...] ʸ»ú½¸¹ç (ʸ»ú¥¯¥é¥¹)
+ \ 退é¿ä¿®é£¾ (エスケープ) æ­£è¦è¡¨ç¾è¨˜å·ã®æœ‰åŠ¹/無効ã®åˆ¶å¾¡
+ | é¸æŠžå­
+ (...) å¼é›†åˆ (グループ)
+ [...] æ–‡å­—é›†åˆ (文字クラス)
-2. ʸ»ú
+2. 文字
- \t ¿åÊ¿¥¿¥Ö (0x09)
- \v ¿âľ¥¿¥Ö (0x0B)
- \n ²þ¹Ô (0x0A)
- \r Éüµ¢ (0x0D)
- \b ¸åÂà¶õÇò (0x08)
- \f ²þÊÇ (0x0C)
- \a ¾â (0x07)
- \e ÂàÈò½¤¾þ (0x1B)
- \nnn Ȭ¿Ê¿ôɽ¸½ Éä¹æ²½¥Ð¥¤¥ÈÃÍ(¤Î°ìÉô)
- \o{17777777777} ³ÈĥȬ¿Ê¿ôɽ¸½ ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
- \xHH ½½Ï»¿Ê¿ôɽ¸½ Éä¹æ²½¥Ð¥¤¥ÈÃÍ(¤Î°ìÉô)
- \x{7HHHHHHH} ³ÈÄ¥½½Ï»¿Ê¿ôɽ¸½ ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
- \cx À©¸æʸ»úɽ¸½ ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
- \C-x À©¸æʸ»úɽ¸½ ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
- \M-x Ķ (x|0x80) ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
- \M-\C-x Ķ + À©¸æʸ»úɽ¸½ ¥³¡¼¥É¥Ý¥¤¥ó¥ÈÃÍ
+ \t 水平タブ (0x09)
+ \v 垂直タブ (0x0B)
+ \n 改行 (0x0A)
+ \r 復帰 (0x0D)
+ \b 後退空白 (0x08)
+ \f æ”¹é  (0x0C)
+ \a é˜ (0x07)
+ \e 退é¿ä¿®é£¾ (0x1B)
+ \nnn å…«é€²æ•°è¡¨ç¾ ç¬¦å·åŒ–ãƒã‚¤ãƒˆå€¤(ã®ä¸€éƒ¨)
+ \o{17777777777} æ‹¡å¼µå…«é€²æ•°è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
+ \uHHHH æ‹¡å¼µåå…­é€²æ•°è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
+ \xHH åå…­é€²æ•°è¡¨ç¾ ç¬¦å·åŒ–ãƒã‚¤ãƒˆå€¤(ã®ä¸€éƒ¨)
+ \x{7HHHHHHH} æ‹¡å¼µåå…­é€²æ•°è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
+ \cx åˆ¶å¾¡æ–‡å­—è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
+ \C-x åˆ¶å¾¡æ–‡å­—è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
+ \M-x 超 (x|0x80) コードãƒã‚¤ãƒ³ãƒˆå€¤
+ \M-\C-x 超 + åˆ¶å¾¡æ–‡å­—è¡¨ç¾ ã‚³ãƒ¼ãƒ‰ãƒã‚¤ãƒ³ãƒˆå€¤
- ¢¨ \b¤Ï¡¢Ê¸»ú½¸¹çÆâ¤Ç¤Î¤ßÍ­¸ú
+ ※ \bã¯ã€æ–‡å­—集åˆå†…ã§ã®ã¿æœ‰åŠ¹
-3. ʸ»ú¼ï
+3. 文字種
- . Ǥ°Õʸ»ú (²þ¹Ô¤ò½ü¤¯)
+ . ä»»æ„文字 (改行を除ã: オプションã«ä¾å­˜)
- \w ñ¸ì¹½À®Ê¸»ú
+ \w å˜èªžæ§‹æˆæ–‡å­—
- Unicode°Ê³°¤Î¾ì¹ç:
- ±Ñ¿ô»ú, "_" ¤ª¤è¤Ó ¿¥Ð¥¤¥Èʸ»ú¡£
+ Unicode以外ã®å ´åˆ:
+ 英数字, "_" ãŠã‚ˆã³ 多ãƒã‚¤ãƒˆæ–‡å­—。
- Unicode¤Î¾ì¹ç:
+ Unicodeã®å ´åˆ:
General_Category -- (Letter|Mark|Number|Connector_Punctuation)
- \W Èóñ¸ì¹½À®Ê¸»ú
+ \W éžå˜èªžæ§‹æˆæ–‡å­—
- \s ¶õÇòʸ»ú
+ \s 空白文字
- Unicode°Ê³°¤Î¾ì¹ç:
+ Unicode以外ã®å ´åˆ:
\t, \n, \v, \f, \r, \x20
- Unicode¤Î¾ì¹ç:
- 0009, 000A, 000B, 000C, 000D, 0085(NEL),
+ Unicodeã®å ´åˆ:
+ U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL),
General_Category -- Line_Separator
-- Paragraph_Separator
-- Space_Separator
- \S Èó¶õÇòʸ»ú
+ \S éžç©ºç™½æ–‡å­—
- \d 10¿Ê¿ô»ú
+ \d 10進数字
- Unicode¤Î¾ì¹ç: General_Category -- Decimal_Number
+ Unicodeã®å ´åˆ: General_Category -- Decimal_Number
- \D Èó10¿Ê¿ô»ú
+ \D éž10進数字
- \h 16¿Ê¿ô»ú [0-9a-fA-F]
+ \h 16進数字 [0-9a-fA-F]
- \H Èó16¿Ê¿ô»ú
+ \H éž16進数字
+
+ \R 汎改行 (* 文字集åˆã®ä¸­ã§ã¯ä½¿ç”¨ã§ããªã„)
+ "\r\n" or \n,\v,\f,\r (* 但㗠\r\nã‹ã‚‰\rã«ã¯ãƒãƒƒã‚¯ãƒˆãƒ©ãƒƒã‚¯ã—ãªã„)
+
+ Unicodeã®å ´åˆ:
+ "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029
+
+ \N éžæ”¹è¡Œæ–‡å­— (?-m:.)
+
+ \O 真任æ„文字 (?m:.) (* 原作)
+
+ \X 拡張書記素房 (?>\O(?:\Y\O)*)
+
+ \Xã¯ç…§åˆã®é–‹å§‹ä½ç½®ãŒæ‹¡å¼µæ›¸è¨˜ç´ æˆ¿ã®å¢ƒç•Œã‹ã©ã†ã‹ã‚’確èªã—ãªã„。
+ ãれを確実ã«ã—ãŸã‘ã‚Œã°ã€\y\Xã¨æ›¸ã‘ã°è‰¯ã„。
+
+ Unicodeã®å ´åˆ:
+ å‚ç…§ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/]
+
+ Unicode以外ã®å ´åˆ: (?>\r\n|\O)
Character Property
@@ -79,95 +100,100 @@
property-name:
- + Á´¤Æ¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇÍ­¸ú
+ + å…¨ã¦ã®ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã§æœ‰åŠ¹
Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower,
Print, Punct, Space, Upper, XDigit, Word, ASCII,
- + EUC-JP, Shift_JIS¤ÇÍ­¸ú
+ + EUC-JP, Shift_JISã§æœ‰åŠ¹
Hiragana, Katakana
- + UTF8, UTF16, UTF32¤ÇÍ­¸ú
- doc/UNICODE_PROPERTIES»²¾È
+ + UTF8, UTF16, UTF32ã§æœ‰åŠ¹
+ doc/UNICODE_PROPERTIESå‚ç…§
+
+4. é‡æŒ‡å®šå­
-4. ÎÌ»ØÄê»Ò
+ 欲張り
- ÍßÄ¥¤ê
+ ? 一回ã¾ãŸã¯é›¶å›ž
+ * 零回以上
+ + 一回以上
+ {n,m} n回以上m回以下
+ {n,} n回以上
+ {,n} 零回以上n回以下 ({0,n})
+ {n} n回
- ? °ì²ó¤Þ¤¿¤ÏÎí²ó
- * Îí²ó°Ê¾å
- + °ì²ó°Ê¾å
- {n,m} n²ó°Ê¾åm²ó°Ê²¼
- {n,} n²ó°Ê¾å
- {,n} Îí²ó°Ê¾ån²ó°Ê²¼ ({0,n})
- {n} n²ó
+ 無欲
- ̵Íß
+ ?? 一回ã¾ãŸã¯é›¶å›ž
+ *? 零回以上
+ +? 一回以上
+ {n,m}? n回以上m回以下
+ {n,}? n回以上
+ {,n}? 零回以上n回以下 (== {0,n}?)
- ?? °ì²ó¤Þ¤¿¤ÏÎí²ó
- *? Îí²ó°Ê¾å
- +? °ì²ó°Ê¾å
- {n,m}? n²ó°Ê¾åm²ó°Ê²¼
- {n,}? n²ó°Ê¾å
- {,n}? Îí²ó°Ê¾ån²ó°Ê²¼ (== {0,n}?)
+ 強欲 (欲張りã§ã€ç¹°ã‚Šè¿”ã—ã«æˆåŠŸã—ãŸå¾Œã¯å›žæ•°ã‚’減らã™ã‚ˆã†ãªå¾Œé€€å†è©¦è¡Œã‚’ã—ãªã„)
- ¶¯Íß (ÍßÄ¥¤ê¤Ç¡¢·«¤êÊÖ¤·¤ËÀ®¸ù¤·¤¿¸å¤Ï²ó¿ô¤ò¸º¤é¤¹¤è¤¦¤Ê¸åÂàºÆ»î¹Ô¤ò¤·¤Ê¤¤)
+ ?+ 一回ã¾ãŸã¯é›¶å›ž
+ *+ 零回以上
+ ++ 一回以上
- ?+ °ì²ó¤Þ¤¿¤ÏÎí²ó
- *+ Îí²ó°Ê¾å
- ++ °ì²ó°Ê¾å
+ ({n,m}+, {n,}+, {n}+ ã¯ã€ONIG_SYNTAX_JAVAã§ã®ã¿å¼·æ¬²ãªæŒ‡å®šå­)
- ({n,m}+, {n,}+, {n}+ ¤Ï¡¢ONIG_SYNTAX_JAVA¤Ç¤Î¤ß¶¯ÍߤʻØÄê»Ò)
+ 例. /a*+/ === /(?>a*)/
- Îã. /a*+/ === /(?>a*)/
+5. 錨
-5. ÉÅ
+ ^ 行頭
+ $ 行末
+ \b å˜èªžå¢ƒç•Œ
+ \B éžå˜èªžå¢ƒç•Œ
+ \y 拡張書記素房 境界
+ \Y 拡張書記素房 éžå¢ƒç•Œ
- ^ ¹ÔƬ
- $ ¹ÔËö
- \b ñ¸ì¶­³¦
- \B Èóñ¸ì¶­³¦
- \A ʸ»úÎóÀèƬ
- \Z ʸ»úÎóËöÈø¡¢¤Þ¤¿¤Ïʸ»úÎóËöÈø¤Î²þ¹Ô¤ÎľÁ°
- \z ʸ»úÎóËöÈø
- \G ¾È¹ç³«»Ï°ÌÃÖ
+ \A 文字列先頭
+ \Z 文字列末尾ã€ã¾ãŸã¯æ–‡å­—列末尾ã®æ”¹è¡Œã®ç›´å‰
+ \z 文字列末尾
+ \G 探索開始ä½ç½®
+ \K ä¿æŒ (çµæžœã®é–‹å§‹ä½ç½®ã‚’ã“ã®ä½ç½®ã«ä¿ã¤)
-6. ʸ»ú½¸¹ç
- ^... ÈÝÄê (ºÇÄãÍ¥ÀèÅٱ黻»Ò)
- x-y ÈÏ°Ï (x¤«¤éy¤Þ¤Ç)
- [...] ½¸¹ç (ʸ»ú½¸¹çÆâʸ»ú½¸¹ç)
- ..&&.. Àѱ黻 (^¤Î¼¡¤ËÍ¥ÀèÅÙ¤¬Ä㤤±é»»»Ò)
+6. 文字集åˆ
- Îã. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w]
+ ^... å¦å®š (最低優先度演算å­)
+ x-y 範囲 (xã‹ã‚‰yã¾ã§)
+ [...] é›†åˆ (文字集åˆå†…文字集åˆ)
+ ..&&.. ç©æ¼”ç®— (^ã®æ¬¡ã«å„ªå…ˆåº¦ãŒä½Žã„演算å­)
- ¢¨ '[', '-', ']'¤ò¡¢Ê¸»ú½¸¹çÆâ¤ÇÄ̾ïʸ»ú¤Î°ÕÌ£¤Ç»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢
- ¤³¤ì¤é¤Îʸ»ú¤ò'\'¤ÇÂàÈò½¤¾þ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
+ 例. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w]
+ ※ '[', '-', ']'ã‚’ã€æ–‡å­—集åˆå†…ã§é€šå¸¸æ–‡å­—ã®æ„味ã§ä½¿ç”¨ã—ãŸã„å ´åˆã«ã¯ã€
+ ã“れらã®æ–‡å­—ã‚’'\'ã§é€€é¿ä¿®é£¾ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„。
- POSIX¥Ö¥é¥±¥Ã¥È ([:xxxxx:], ÈÝÄê [:^xxxxx:])
- Unicode°Ê³°¤Î¾ì¹ç:
+ POSIXブラケット ([:xxxxx:], å¦å®š [:^xxxxx:])
- alnum ±Ñ¿ô»ú
- alpha 񥯣
+ Unicode以外ã®å ´åˆ:
+
+ alnum 英数字
+ alpha 英字
ascii 0 - 127
blank \t, \x20
cntrl
digit 0-9
- graph ¿¥Ð¥¤¥Èʸ»úÁ´Éô¤ò´Þ¤à
+ graph 多ãƒã‚¤ãƒˆæ–‡å­—全部をå«ã‚€
lower
- print ¿¥Ð¥¤¥Èʸ»úÁ´Éô¤ò´Þ¤à
+ print 多ãƒã‚¤ãƒˆæ–‡å­—全部をå«ã‚€
punct
space \t, \n, \v, \f, \r, \x20
upper
xdigit 0-9, a-f, A-F
- word ±Ñ¿ô»ú, "_" ¤ª¤è¤Ó ¿¥Ð¥¤¥Èʸ»ú
+ word 英数字, "_" ãŠã‚ˆã³ 多ãƒã‚¤ãƒˆæ–‡å­—
- Unicode¤Î¾ì¹ç:
+ Unicodeã®å ´åˆ:
alnum Letter | Mark | Decimal_Number
alpha Letter | Mark
@@ -182,75 +208,171 @@
Final_Punctuation | Initial_Punctuation | Other_Punctuation |
Open_Punctuation
space Space_Separator | Line_Separator | Paragraph_Separator |
- 0009 | 000A | 000B | 000C | 000D | 0085
+ U+0009 | U+000A | U+000B | U+000C | U+000D | U+0085
upper Uppercase_Letter
- xdigit 0030 - 0039 | 0041 - 0046 | 0061 - 0066
+ xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066
(0-9, a-f, A-F)
word Letter | Mark | Decimal_Number | Connector_Punctuation
-7. ³ÈÄ¥¼°½¸¹ç
+7. æ‹¡å¼µå¼é›†åˆ
+
+ (?#...) 注釈
+
+ (?imxWDSP-imxWDSP:å¼) å¼ã‚ªãƒ—ション
+
+ i: 大文字å°æ–‡å­—ç…§åˆ
+ m: 複数行
+ x: 拡張形å¼
+ W: wordãŒASCIIã®ã¿ (\w, \p{Word}, [[:word:]])
+ word境界ãŒASCIIã®ã¿ (\b)
+ D: digitãŒASCIIã®ã¿ (\d, \p{Digit}, [[:digit:]])
+ S: spaceãŒASCIIã®ã¿ (\s, \p{Space}, [[:space:]])
+ P: POSIXプロパティãŒASCIIã®ã¿ (W,D,Sã‚’å…¨ã¦å«ã‚“ã§ã„ã‚‹)
+ (alnum, alpha, blank, cntrl, digit, graph,
+ lower, print, punct, space, upper, xdigit, word)
+
+ (?imxWDSP-imxWDSP) 孤立オプション
+
+ * ã“ã‚Œã¯æ¬¡ã®')'ã¾ãŸã¯ãƒ‘ターンã®çµ‚ã‚ã‚Šã¾ã§ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’å½¢æˆã™ã‚‹
+ /ab(?i)c|def|gh/ == /ab(?i:c|def|gh)/
+
+
+ (å¼) æ•ç²å¼é›†åˆ
+ (?:å¼) éžæ•ç²å¼é›†åˆ
+
+ (?=å¼) 先読ã¿
+ (?!å¼) å¦å®šå…ˆèª­ã¿
+ (?<=å¼) 戻り読ã¿
+ (?<!å¼) å¦å®šæˆ»ã‚Šèª­ã¿
+
+ 戻り読ã¿ã®å¼ã¯å›ºå®šæ–‡å­—é•·ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。
+ ã—ã‹ã—ã€æœ€ä¸Šä½ã®é¸æŠžå­ã ã‘ã¯ç•°ãªã£ãŸæ–‡å­—é•·ãŒè¨±ã•ã‚Œã‚‹ã€‚
+ 例. (?<=a|bc) ã¯è¨±å¯. (?<=aaa(?:b|cd)) ã¯ä¸è¨±å¯
+
+ å¦å®šæˆ»ã‚Šèª­ã¿ã§ã¯ã€æ•ç²å¼é›†åˆã¯è¨±ã•ã‚Œãªã„ãŒã€
+ éžæ•ç²å¼é›†åˆã¯è¨±ã•ã‚Œã‚‹ã€‚
+
+ (?>å¼) 原å­çš„å¼é›†åˆ
+ å¼å…¨ä½“を通éŽã—ãŸã¨ãã€å¼ã®ä¸­ã§ã®å¾Œé€€å†è©¦è¡Œã‚’è¡Œãªã‚ãªã„
+
+ (?<name>å¼), (?'name'å¼)
+ åå‰ä»˜ãæ•ç²å¼é›†åˆ
+ å¼é›†åˆã«åå‰ã‚’割り当ã¦ã‚‹(定義ã™ã‚‹)。
+ (åå‰ã¯å˜èªžæ§‹æˆæ–‡å­—ã§ãªã‘ã‚Œã°ãªã‚‰ãªã„。)
+
+ åå‰ã ã‘ã§ãªãã€æ•ç²å¼é›†åˆã¨åŒæ§˜ã«ç•ªå·ã‚‚割り当ã¦ã‚‰ã‚Œã‚‹ã€‚
+ 番å·æŒ‡å®šãŒç¦æ­¢ã•ã‚Œã¦ã„ãªã„状態 (10. æ•ç²å¼é›†åˆ ã‚’å‚ç…§)
+ ã®ã¨ãã¯ã€åå‰ã‚’使ã‚ãªã„ã§ç•ªå·ã§ã‚‚å‚ç…§ã§ãる。
+
+ 複数ã®å¼é›†åˆã«åŒã˜åå‰ã‚’与ãˆã‚‹ã“ã¨ã¯è¨±ã•ã‚Œã¦ã„る。
+ ã“ã®å ´åˆã«ã¯ã€ã“ã®åå‰ã‚’使用ã—ãŸå¾Œæ–¹å‚ç…§ã¯å¯èƒ½ã§ã‚ã‚‹ãŒã€
+ 部分å¼å‘¼å‡ºã—ã¯ã§ããªã„。
+
+
+ <呼ã³å‡ºã—>
+
+ * 内容ã®å‘¼ã³å‡ºã—
+ (?{...contents...}) å‰é€²ä¸­ã®ã¿ã®å‘¼ã³å‡ºã—
+ (?{...contents...}D) Dã¯æ–¹å‘指定文字
+ D = 'X': å‰é€²ä¸­ãŠã‚ˆã³å¾Œé€€ä¸­
+ '<': 後退中ã®ã¿
+ '>': å‰é€²ä¸­ã®ã¿
+ (?{...contents...}[tag]) å札付ã
+ (?{...contents...}[tag]D)
+
+ * エスケープ文字ã¯contentsã®ä¸­ã§ä½•ã®æ©Ÿèƒ½ã‚‚æŒãŸãªã„
+ * contentsã¯ã€'{'文字ã§å§‹ã¾ã£ã¦ã¯ãªã‚‰ãªã„
+
+ (?{{{...contents...}}}) contentsã®ä¸­ã®n個連続ã®'}'ã¯ã€(n+1)個連続ã®{{{...}}}
+ ã®ä¸­ã§è¨±ã•ã‚Œã‚‹
+
+ tagã«è¨±ã•ã‚Œã‚‹æ–‡å­—: _ A-Z a-z 0-9 (* 最åˆã®æ–‡å­—: _ A-Z a-z)
+
+
+ * åå‰ã®å‘¼ã³å‡ºã—
+ (*name)
+ (*name{args...}) 引数付ã
+ (*name[tag]) å札付ã
+ (*name[tag]{args...})
+
+ nameã«è¨±ã•ã‚Œã‚‹æ–‡å­—: _ A-Z a-z 0-9 (* 最åˆã®æ–‡å­—: _ A-Z a-z)
+ tag ã«è¨±ã•ã‚Œã‚‹æ–‡å­—: _ A-Z a-z 0-9 (* 最åˆã®æ–‡å­—: _ A-Z a-z)
+
+
+
+ <ä¸åœ¨æ©Ÿèƒ½ç¾¤>
+
+ (?~ä¸åœ¨å¼) ä¸åœ¨ç¹°ã‚Šè¿”ã— (*原案 田中哲)
+ ã“れ㯠.*(より正確ã«ã¯\O*)ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«
+ é©åˆã™ã‚‹æ–‡å­—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
+ ã“ã‚Œã¯(?~|ä¸åœ¨å¼|\O*)ã®çœç•¥è¡¨è¨˜ã§ã‚る。
+
+ (?~|ä¸åœ¨å¼|å¼) ä¸åœ¨å¼ (* 原作)
+ ã“ã‚Œã¯<å¼>ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å­—列を
+ å«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
+
+ 例 (?~|345|\d*) "12345678" ==> "12", "1", ""
+
+ (?~|ä¸åœ¨å¼) ä¸åœ¨åœæ­¢ (* 原作)
+ ã“ã®æ¼”ç®—å­ã‚’通éŽã—ãŸå¾Œã¯ã€å¯¾è±¡æ–‡å­—列ã®é©åˆç¯„囲ãŒ
+ <ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å­—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚
+
+ (?~|) 範囲消去
+ ä¸åœ¨åœæ­¢ã®åŠ¹æžœã‚’消ã—ã¦ã€ãれ以å‰ã®çŠ¶æ…‹ã«ã™ã‚‹ã€‚
+
+ * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œå­ã«ã¯å¯¾å¿œã—ã¦ãŠã‚‰ãšã€ãã®å ´åˆã®æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚
- (?#...) Ãí¼á
- (?imx-imx) ¸ÉΩ¥ª¥×¥·¥ç¥ó
- i: Âçʸ»ú¾®Ê¸»ú¾È¹ç
- m: Ê£¿ô¹Ô
- x: ³ÈÄ¥·Á¼°
- (?imx-imx:¼°) ¼°¥ª¥×¥·¥ç¥ó
- (¼°) Êá³Í¼°½¸¹ç
- (?:¼°) ÈóÊá³Í¼°½¸¹ç
- (?=¼°) ÀèÆɤß
- (?!¼°) ÈÝÄêÀèÆɤß
- (?<=¼°) Ìá¤êÆɤß
- (?<!¼°) ÈÝÄêÌá¤êÆɤß
+ <æ¡ä»¶æ–‡>
- Ìá¤êÆɤߤμ°¤Ï¸ÇÄêʸ»úĹ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
- ¤·¤«¤·¡¢ºÇ¾å°Ì¤ÎÁªÂò»Ò¤À¤±¤Ï°Û¤Ê¤Ã¤¿Ê¸»úŤ¬µö¤µ¤ì¤ë¡£
- Îã. (?<=a|bc) ¤Ïµö²Ä. (?<=aaa(?:b|cd)) ¤ÏÉÔµö²Ä
+ (?(æ¡ä»¶å¼)æˆåŠŸå¼|失敗å¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã€å¤±æ•—ã™ã‚Œã°å¤±æ•—å¼ã‚’実行ã™ã‚‹
+ ã“ã®æ©Ÿèƒ½ã®å­˜åœ¨ç†ç”±ã¯ã€æˆåŠŸå¼ãŒå¤±æ•—ã—ã¦ã‚‚失敗å¼ã«ã¯
+ è¡Œã‹ãªã„ã“ã¨ã€‚ã“ã‚Œã¯ä»–ã®æ­£è¦è¡¨ç¾ã§æ›¸ãã“ã¨ãŒã§ããªã„。
+ ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã®ã¨ãã€
+ 後方å‚照値ã®æœ‰åŠ¹æ€§ã‚’調ã¹ã‚‹(文字列ã¨ç…§åˆã¯ã—ãªã„)
+ æ„味ã«ãªã‚‹ã€‚
- ÈÝÄêÌá¤êÆɤߤǤϡ¢Êá³Í¼°½¸¹ç¤Ïµö¤µ¤ì¤Ê¤¤¤¬¡¢
- ÈóÊá³Í¼°½¸¹ç¤Ïµö¤µ¤ì¤ë¡£
+ (?(æ¡ä»¶å¼)æˆåŠŸå¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã‚’実行ã™ã‚‹
+ (æ¡ä»¶å¼ãŒé€šå¸¸ã®å¼ã®ã¨ãã«ã¯ã€ã“ã®æ§‹æ–‡ã¯ä¸å¿…è¦ã ãŒ
+ 今ã®ã¨ã“ã‚エラーã«ã¯ã—ãªã„。)
- (?>¼°) ¸¶»ÒŪ¼°½¸¹ç
- ¼°Á´ÂΤòÄ̲ᤷ¤¿¤È¤­¡¢¼°¤ÎÃæ¤Ç¤Î¸åÂàºÆ»î¹Ô¤ò¹Ô¤Ê¤ï¤Ê¤¤
- (?<name>¼°), (?'name'¼°)
- ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç
- ¼°½¸¹ç¤Ë̾Á°¤ò³ä¤êÅö¤Æ¤ë(ÄêµÁ¤¹¤ë)¡£
- (̾Á°¤Ïñ¸ì¹½À®Ê¸»ú¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£)
+ æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã¾ãŸã¯æ™®é€šã®å¼ã‚’使用ã§ãる。
+ æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®å ´åˆã€æˆåŠŸå¼ã¨å¤±æ•—å¼ã®ä¸¡æ–¹ã‚’çœç•¥å¯èƒ½ã§ã‚ã‚Šã€
+ ã“ã®å ´åˆã€å¾Œæ–¹å‚照値有効性を調ã¹ã‚‹(æˆåŠŸ/失敗)機能ã®ã¿ã«ãªã‚‹ã€‚
- ̾Á°¤À¤±¤Ç¤Ê¤¯¡¢Êá³Í¼°½¸¹ç¤ÈƱÍͤËÈÖ¹æ¤â³ä¤êÅö¤Æ¤é¤ì¤ë¡£
- ÈÖ¹æ»ØÄ꤬¶Ø»ß¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂÖ (10. Êá³Í¼°½¸¹ç ¤ò»²¾È)
- ¤Î¤È¤­¤Ï¡¢Ì¾Á°¤ò»È¤ï¤Ê¤¤¤ÇÈÖ¹æ¤Ç¤â»²¾È¤Ç¤­¤ë¡£
+ [後方å‚照値有効性確èªå™¨] (* 原作)
+ (?(n)), (?(-n)), (?(+n)), (?(n+level)) ...
+ (?(<n>)), (?('-n')), (?(<+n>)) ...
+ (?(<name>)), (?('name')), (?(<name+level>)) ...
- Ê£¿ô¤Î¼°½¸¹ç¤ËƱ¤¸Ì¾Á°¤òÍ¿¤¨¤ë¤³¤È¤Ïµö¤µ¤ì¤Æ¤¤¤ë¡£
- ¤³¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤Î̾Á°¤ò»ÈÍѤ·¤¿¸åÊý»²¾È¤Ï²Äǽ¤Ç¤¢¤ë¤¬¡¢
- Éôʬ¼°¸Æ½Ð¤·¤Ï¤Ç¤­¤Ê¤¤¡£
-8. ¸åÊý»²¾È
+8. 後方å‚ç…§
- \n ÈÖ¹æ»ØÄ껲¾È (n >= 1)
- \k<n> ÈÖ¹æ»ØÄ껲¾È (n >= 1)
- \k'n' ÈÖ¹æ»ØÄ껲¾È (n >= 1)
- \k<-n> ÁêÂÐÈÖ¹æ»ØÄ껲¾È (n >= 1)
- \k'-n' ÁêÂÐÈÖ¹æ»ØÄ껲¾È (n >= 1)
- \k<name> ̾Á°»ØÄ껲¾È
- \k'name' ̾Á°»ØÄ껲¾È
+ \n 番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k<n> 番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k'n' 番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k<-n> 相対番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k'-n' 相対番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k<+n> 相対番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k'+n' 相対番å·æŒ‡å®šå‚ç…§ (n >= 1)
+ \k<name> åå‰æŒ‡å®šå‚ç…§
+ \k'name' åå‰æŒ‡å®šå‚ç…§
- ̾Á°»ØÄ껲¾È¤Ç¡¢¤½¤Î̾Á°¤¬Ê£¿ô¤Î¼°½¸¹ç¤Ç¿½ÅÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢
- ÈÖ¹æ¤ÎÂ礭¤¤¼°½¸¹ç¤«¤éÍ¥ÀèŪ¤Ë»²¾È¤µ¤ì¤ë¡£
- (¥Þ¥Ã¥Á¤·¤Ê¤¤¤È¤­¤Ë¤ÏÈÖ¹æ¤Î¾®¤µ¤¤¼°½¸¹ç¤¬»²¾È¤µ¤ì¤ë)
+ åå‰æŒ‡å®šå‚ç…§ã§ã€ãã®åå‰ãŒè¤‡æ•°ã®å¼é›†åˆã§å¤šé‡å®šç¾©ã•ã‚Œã¦ã„ã‚‹å ´åˆã«ã¯ã€
+ 番å·ã®å¤§ãã„å¼é›†åˆã‹ã‚‰å„ªå…ˆçš„ã«å‚ç…§ã•ã‚Œã‚‹ã€‚
+ (マッãƒã—ãªã„ã¨ãã«ã¯ç•ªå·ã®å°ã•ã„å¼é›†åˆãŒå‚ç…§ã•ã‚Œã‚‹)
- ¢¨ ÈÖ¹æ»ØÄ껲¾È¤Ï¡¢Ì¾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤¬ÄêµÁ¤µ¤ì¡¢
- ¤«¤Ä ONIG_OPTION_CAPTURE_GROUP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
- ¶Ø»ß¤µ¤ì¤ë¡£(10. Êá³Í¼°½¸¹ç ¤ò»²¾È)
+ ※ 番å·æŒ‡å®šå‚ç…§ã¯ã€åå‰ä»˜ãæ•ç²å¼é›†åˆãŒå®šç¾©ã•ã‚Œã€
+ ã‹ã¤ ONIG_OPTION_CAPTURE_GROUPãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã«ã¯ã€
+ ç¦æ­¢ã•ã‚Œã‚‹ã€‚(10. æ•ç²å¼é›†åˆ ã‚’å‚ç…§)
- ¥Í¥¹¥È¥ì¥Ù¥ëÉÕ¤­¸åÊý»²¾È
+ ãƒã‚¹ãƒˆãƒ¬ãƒ™ãƒ«ä»˜ã後方å‚ç…§
level: 0, 1, 2, ...
@@ -264,14 +386,14 @@
\k'name+level'
\k'name-level'
- ¸åÊý»²¾È¤Î°ÌÃÖ¤«¤éÁêÂÐŪ¤ÊÉôʬ¼°¸Æ½Ð¤·¥Í¥¹¥È¥ì¥Ù¥ë¤ò»ØÄꤷ¤Æ¡¢¤½¤Î¥ì¥Ù¥ë¤Ç¤Î
- Êá³ÍÃͤò»²¾È¤¹¤ë¡£
+ 後方å‚ç…§ã®ä½ç½®ã‹ã‚‰ç›¸å¯¾çš„ãªéƒ¨åˆ†å¼å‘¼å‡ºã—ãƒã‚¹ãƒˆãƒ¬ãƒ™ãƒ«ã‚’指定ã—ã¦ã€ãã®ãƒ¬ãƒ™ãƒ«ã§ã®
+ æ•ç²å€¤ã‚’å‚ç…§ã™ã‚‹ã€‚
- Îã-1.
+ 例-1.
/\A(?<a>|.|(?:(?<b>.)\g<a>\k<b+0>))\z/.match("reer")
- Îã-2.
+ 例-2.
r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED)
(?<element> \g<stag> \g<content>* \g<etag> ){0}
@@ -286,164 +408,166 @@
-9. Éôʬ¼°¸Æ½Ð¤· ("ÅÄÃæů¥¹¥Ú¥·¥ã¥ë")
+9. 部分å¼å‘¼å‡ºã— ("田中哲スペシャル") (* 原作)
- \g<name> ̾Á°»ØÄê¸Æ½Ð¤·
- \g'name' ̾Á°»ØÄê¸Æ½Ð¤·
- \g<n> ÈÖ¹æ»ØÄê¸Æ½Ð¤· (n >= 1)
- \g'n' ÈÖ¹æ»ØÄê¸Æ½Ð¤· (n >= 1)
- \g<-n> ÁêÂÐÈÖ¹æ»ØÄê¸Æ½Ð¤· (n >= 1)
- \g'-n' ÁêÂÐÈÖ¹æ»ØÄê¸Æ½Ð¤· (n >= 1)
+ \g<name> åå‰æŒ‡å®šå‘¼å‡ºã—
+ \g'name' åå‰æŒ‡å®šå‘¼å‡ºã—
+ \g<n> 番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
+ \g'n' 番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
+ \g<0> 番å·æŒ‡å®šå‘¼å‡ºã—(全体呼ã³å‡ºã—)
+ \g'0' 番å·æŒ‡å®šå‘¼å‡ºã—(全体呼ã³å‡ºã—)
+ \g<-n> 相対番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
+ \g'-n' 相対番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
+ \g<+n> 相対番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
+ \g'+n' 相対番å·æŒ‡å®šå‘¼å‡ºã— (n >= 1)
- ¢¨ ºÇº¸°ÌÃ֤ǤκƵ¢¸Æ½Ð¤·¤Ï¶Ø»ß¤µ¤ì¤ë¡£
- Îã. (?<name>a|\g<name>b) => error
+ ※ 最左ä½ç½®ã§ã®å†å¸°å‘¼å‡ºã—ã¯ç¦æ­¢ã•ã‚Œã‚‹ã€‚
+ 例. (?<name>a|\g<name>b) => error
(?<name>a|b\g<name>c) => OK
- ¢¨ ÈÖ¹æ»ØÄê¸Æ½Ð¤·¤Ï¡¢Ì¾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤¬ÄêµÁ¤µ¤ì¡¢
- ¤«¤Ä ONIG_OPTION_CAPTURE_GROUP¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
- ¶Ø»ß¤µ¤ì¤ë¡£ (10. Êá³Í¼°½¸¹ç ¤ò»²¾È)
+ ※ 番å·æŒ‡å®šå‘¼å‡ºã—ã¯ã€åå‰ä»˜ãæ•ç²å¼é›†åˆãŒå®šç¾©ã•ã‚Œã€
+ ã‹ã¤ ONIG_OPTION_CAPTURE_GROUPãŒæŒ‡å®šã•ã‚Œã¦ã„ãªã„å ´åˆã«ã¯ã€
+ ç¦æ­¢ã•ã‚Œã‚‹ã€‚ (10. æ•ç²å¼é›†åˆ ã‚’å‚ç…§)
- ¢¨ ¸Æ¤Ó½Ð¤µ¤ì¤¿¼°½¸¹ç¤Î¥ª¥×¥·¥ç¥ó¾õÂÖ¤¬¸Æ½Ð¤·Â¦¤Î¥ª¥×¥·¥ç¥ó¾õÂ֤ȰۤʤäƤ¤¤ë
- ¤È¤­¡¢¸Æ¤Ó½Ð¤µ¤ì¤¿Â¦¤Î¥ª¥×¥·¥ç¥ó¾õÂÖ¤¬Í­¸ú¤Ç¤¢¤ë¡£
+ ※ 呼ã³å‡ºã•ã‚ŒãŸå¼é›†åˆã®ã‚ªãƒ—ション状態ãŒå‘¼å‡ºã—å´ã®ã‚ªãƒ—ション状態ã¨ç•°ãªã£ã¦ã„ã‚‹
+ ã¨ãã€å‘¼ã³å‡ºã•ã‚ŒãŸå´ã®ã‚ªãƒ—ション状態ãŒæœ‰åŠ¹ã§ã‚る。
- Îã. (?-i:\g<name>)(?i:(?<name>a)){0} ¤Ï "A" ¤Ë¾È¹çÀ®¸ù¤¹¤ë¡£
+ 例. (?-i:\g<name>)(?i:(?<name>a)){0} 㯠"A" ã«ç…§åˆæˆåŠŸã™ã‚‹ã€‚
-10. Êá³Í¼°½¸¹ç
+10. æ•ç²å¼é›†åˆ
- Êá³Í¼°½¸¹ç(...)¤Ï¡¢°Ê²¼¤Î¾ò·ï¤Ë±þ¤¸¤Æ¿¶Éñ¤¬ÊѲ½¤¹¤ë¡£
- (̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤ÏÊѲ½¤·¤Ê¤¤)
+ æ•ç²å¼é›†åˆ(...)ã¯ã€ä»¥ä¸‹ã®æ¡ä»¶ã«å¿œã˜ã¦æŒ¯èˆžãŒå¤‰åŒ–ã™ã‚‹ã€‚
+ (åå‰ä»˜ãæ•ç²å¼é›†åˆã¯å¤‰åŒ–ã—ãªã„)
- case 1. /.../ (̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤ÏÉÔ»ÈÍÑ¡¢¥ª¥×¥·¥ç¥ó¤Ê¤·)
+ case 1. /.../ (åå‰ä»˜ãæ•ç²å¼é›†åˆã¯ä¸ä½¿ç”¨ã€ã‚ªãƒ—ションãªã—)
- (...) ¤Ï¡¢Êá³Í¼°½¸¹ç¤È¤·¤Æ°·¤ï¤ì¤ë¡£
+ (...) ã¯ã€æ•ç²å¼é›†åˆã¨ã—ã¦æ‰±ã‚れる。
- case 2. /.../g (̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤ÏÉÔ»ÈÍÑ¡¢¥ª¥×¥·¥ç¥ó 'g'¤ò»ØÄê)
+ case 2. /.../g (åå‰ä»˜ãæ•ç²å¼é›†åˆã¯ä¸ä½¿ç”¨ã€ã‚ªãƒ—ション 'g'を指定)
- (...) ¤Ï¡¢ÈóÊá³Í¼°½¸¹ç¤È¤·¤Æ°·¤ï¤ì¤ë¡£
+ (...) ã¯ã€éžæ•ç²å¼é›†åˆã¨ã—ã¦æ‰±ã‚れる。
- case 3. /..(?<name>..)../ (̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤Ï»ÈÍÑ¡¢¥ª¥×¥·¥ç¥ó¤Ê¤·)
+ case 3. /..(?<name>..)../ (åå‰ä»˜ãæ•ç²å¼é›†åˆã¯ä½¿ç”¨ã€ã‚ªãƒ—ションãªã—)
- (...) ¤Ï¡¢ÈóÊá³Í¼°½¸¹ç¤È¤·¤Æ°·¤ï¤ì¤ë¡£
- ÈÖ¹æ»ØÄ껲¾È/¸Æ¤Ó½Ð¤·¤ÏÉÔµö²Ä¡£
+ (...) ã¯ã€éžæ•ç²å¼é›†åˆã¨ã—ã¦æ‰±ã‚れる。
+ 番å·æŒ‡å®šå‚ç…§/呼ã³å‡ºã—ã¯ä¸è¨±å¯ã€‚
- case 4. /..(?<name>..)../G (̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤Ï»ÈÍÑ¡¢¥ª¥×¥·¥ç¥ó 'G'¤ò»ØÄê)
+ case 4. /..(?<name>..)../G (åå‰ä»˜ãæ•ç²å¼é›†åˆã¯ä½¿ç”¨ã€ã‚ªãƒ—ション 'G'を指定)
- (...) ¤Ï¡¢Êá³Í¼°½¸¹ç¤È¤·¤Æ°·¤ï¤ì¤ë¡£
- ÈÖ¹æ»ØÄ껲¾È/¸Æ¤Ó½Ð¤·¤Ïµö²Ä¡£
+ (...) ã¯ã€æ•ç²å¼é›†åˆã¨ã—ã¦æ‰±ã‚れる。
+ 番å·æŒ‡å®šå‚ç…§/呼ã³å‡ºã—ã¯è¨±å¯ã€‚
- ⤷
+ 但ã—
g: ONIG_OPTION_DONT_CAPTURE_GROUP
G: ONIG_OPTION_CAPTURE_GROUP
- ('g'¤È'G'¥ª¥×¥·¥ç¥ó¤Ï¡¢ruby-dev ML¤ÇµÄÏÀ¤µ¤ì¤¿¡£)
+ ('g'ã¨'G'オプションã¯ã€ruby-dev MLã§è­°è«–ã•ã‚ŒãŸã€‚)
- ¤³¤ì¤é¤Î¿¶Éñ¤Î°ÕÌ£¤Ï¡¢
- ̾Á°ÉÕ¤­Êá³Í¤È̾Á°Ìµ¤·Êá³Í¤òƱ»þ¤Ë»ÈÍѤ¹¤ëɬÁ³À­¤Î¤¢¤ë¾ìÌ̤Ͼ¯¤Ê¤¤¤Ç¤¢¤í¤¦
- ¤È¤¤¤¦Íýͳ¤«¤é¹Í¤¨¤é¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£
+ ã“れらã®æŒ¯èˆžã®æ„味ã¯ã€
+ åå‰ä»˜ãæ•ç²ã¨åå‰ç„¡ã—æ•ç²ã‚’åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹å¿…然性ã®ã‚ã‚‹å ´é¢ã¯å°‘ãªã„ã§ã‚ã‚ã†
+ ã¨ã„ã†ç†ç”±ã‹ã‚‰è€ƒãˆã‚‰ã‚ŒãŸã‚‚ã®ã§ã‚る。
-----------------------------
-Êäµ­ 1. ʸˡ°Í¸¥ª¥×¥·¥ç¥ó
+補記 1. 文法ä¾å­˜ã‚ªãƒ—ション
- + ONIG_SYNTAX_RUBY
- (?m): ½ª»ßÉäµ­¹æ(.)¤Ï²þ¹Ô¤È¾È¹çÀ®¸ù
+ + ONIG_SYNTAX_ONIGURUMA
+ (?m): 終止符記å·(.)ã¯æ”¹è¡Œã¨ç…§åˆæˆåŠŸ
- + ONIG_SYNTAX_PERL ¤È ONIG_SYNTAX_JAVA
- (?s): ½ª»ßÉäµ­¹æ(.)¤Ï²þ¹Ô¤È¾È¹çÀ®¸ù
- (?m): ^ ¤Ï²þ¹Ô¤Îľ¸å¤Ë¾È¹ç¤¹¤ë¡¢$ ¤Ï²þ¹Ô¤ÎľÁ°¤Ë¾È¹ç¤¹¤ë
+ + ONIG_SYNTAX_PERL 㨠ONIG_SYNTAX_JAVA
+ (?s): 終止符記å·(.)ã¯æ”¹è¡Œã¨ç…§åˆæˆåŠŸ
+ (?m): ^ ã¯æ”¹è¡Œã®ç›´å¾Œã«ç…§åˆã™ã‚‹ã€$ ã¯æ”¹è¡Œã®ç›´å‰ã«ç…§åˆã™ã‚‹
-Êäµ­ 2. Æȼ«³ÈÄ¥µ¡Ç½
+補記 2. 独自拡張機能
- + 16¿Ê¿ô¿ô»ú¡¢Èó16¿Ê¿ô»ú \h, \H
- + ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç (?<name>...), (?'name'...)
- + ̾Á°»ØÄê¸åÊý»²¾È \k<name>
- + Éôʬ¼°¸Æ½Ð¤· \g<name>, \g<group-num>
+ + 16進数数字ã€éž16進数字 \h, \H
+ + åå‰ä»˜ãæ•ç²å¼é›†åˆ (?<name>...), (?'name'...)
+ + åå‰æŒ‡å®šå¾Œæ–¹å‚ç…§ \k<name>
+ + 部分å¼å‘¼å‡ºã— \g<name>, \g<group-num>
-Êäµ­ 3. Perl 5.8.0¤ÈÈæ³Ó¤·¤Æ¸ºß¤·¤Ê¤¤µ¡Ç½
+補記 3. Perl 5.8.0ã¨æ¯”較ã—ã¦å­˜åœ¨ã—ãªã„機能
+ \N{name}
- + \l,\u,\L,\U, \X, \C
- + (?{code})
+ + \l,\u,\L,\U,\C
+ (??{code})
- + (?(condition)yes-pat|no-pat)
* \Q...\E
- ⤷ONIG_SYNTAX_PERL¤ÈONIG_SYNTAX_JAVA¤Ç¤ÏÍ­¸ú
-
-
-Êäµ­ 4. Ruby 1.8 ¤ÎÆüËܸ첽 GNU regex(version 0.12)¤È¤Î°ã¤¤
-
- + ʸ»úPropertyµ¡Ç½Äɲà (\p{property}, \P{Property})
- + 16¿Ê¿ô»ú¥¿¥¤¥×Äɲà (\h, \H)
- + Ìá¤êÆɤߵ¡Ç½¤òÄɲÃ
- + ¶¯Íߤʷ«¤êÊÖ¤·»ØÄê»Ò¤òÄɲà (?+, *+, ++)
- + ʸ»ú½¸¹ç¤ÎÃæ¤Î±é»»»Ò¤òÄɲà ([...], &&)
- ('[' ¤Ï¡¢Ê¸»ú½¸¹ç¤ÎÃæ¤ÇÄ̾ï¤Îʸ»ú¤È¤·¤Æ»ÈÍѤ¹¤ë¤È¤­¤Ë¤Ï
- ÂàÈò½¤¾þ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤)
- + ̾Á°ÉÕ¤­Êá³Í¼°½¸¹ç¤È¡¢Éôʬ¼°¸Æ½Ð¤·µ¡Ç½ÄɲÃ
- + ¿¥Ð¥¤¥Èʸ»ú¥³¡¼¥É¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¤È¤­¡¢
- ʸ»ú½¸¹ç¤ÎÃæ¤ÇȬ¿Ê¿ô¤Þ¤¿¤Ï½½Ï»¿Ê¿ôɽ¸½¤ÎϢ³¤Ï¡¢Â¿¥Ð¥¤¥ÈÉä¹æ¤Çɽ¸½¤µ¤ì¤¿
- °ì¸Ä¤Îʸ»ú¤È²ò¼á¤µ¤ì¤ë
- (Îã. [\xa1\xa2], [\xa1\xa7-\xa4\xa1])
- + ʸ»ú½¸¹ç¤ÎÃæ¤Ç¡¢°ì¥Ð¥¤¥Èʸ»ú¤È¿¥Ð¥¤¥Èʸ»ú¤ÎÈÏ°Ï»ØÄê¤Ïµö¤µ¤ì¤ë¡£
- ex. /[a-¤¢]/
- + ¸ÉΩ¥ª¥×¥·¥ç¥ó¤ÎÍ­¸úÈϰϤϡ¢¤½¤Î¸ÉΩ¥ª¥×¥·¥ç¥ó¤ò´Þ¤ó¤Ç¤¤¤ë¼°½¸¹ç¤Î
- ½ª¤ï¤ê¤Þ¤Ç¤Ç¤¢¤ë
- Îã. (?:(?i)a|b) ¤Ï (?:(?i:a|b)) ¤È²ò¼á¤µ¤ì¤ë¡¢(?:(?i:a)|b)¤Ç¤Ï¤Ê¤¤
- + ¸ÉΩ¥ª¥×¥·¥ç¥ó¤Ï¤½¤ÎÁ°¤Î¼°¤ËÂФ·¤ÆÆ©²áŪ¤Ç¤Ï¤Ê¤¤
- Îã. /a(?i)*/ ¤Ïʸˡ¥¨¥é¡¼¤È¤Ê¤ë
- + ÉÔ´°Á´¤Ê·«¤êÊÖ¤·ÈÏ°Ï»ØÄê»Ò¤ÏÄ̾ï¤Îʸ»úÎó¤È¤·¤Æµö²Ä¤µ¤ì¤ë
- Îã. /{/, /({)/, /a{2,3/
- + ÈÝÄêŪPOSIX¥Ö¥é¥±¥Ã¥È [:^xxxx:] ¤òÄɲÃ
- + POSIX¥Ö¥é¥±¥Ã¥È [:ascii:] ¤òÄɲÃ
- + ÀèÆɤߤ竤êÊÖ¤·¤ÏÉÔµö²Ä
- Îã. /(?=a)*/, /(?!b){5}/
- + ¿ôÃͤǻØÄꤵ¤ì¤¿Ê¸»ú¤ËÂФ·¤Æ¤â¡¢Âçʸ»ú¾®Ê¸»ú¾È¹ç¥ª¥×¥·¥ç¥ó¤ÏÍ­¸ú
- Îã. /\x61/i =~ "A"
- + ·«¤êÊÖ¤·²ó¿ô»ØÄê¤Ç¡¢ºÇÄã²ó¿ô¤Î¾Êά(0²ó)¤¬¤Ç¤­¤ë
+ 但ã—ONIG_SYNTAX_PERLã¨ONIG_SYNTAX_JAVAã§ã¯æœ‰åŠ¹
+
+
+補記 4. Ruby 1.8 ã®æ—¥æœ¬èªžåŒ– GNU regex(version 0.12)ã¨ã®é•ã„
+
+ + 文字Property機能追加 (\p{property}, \P{Property})
+ + 16進数字タイプ追加 (\h, \H)
+ + 戻り読ã¿æ©Ÿèƒ½ã‚’追加
+ + 強欲ãªç¹°ã‚Šè¿”ã—指定å­ã‚’追加 (?+, *+, ++)
+ + 文字集åˆã®ä¸­ã®æ¼”ç®—å­ã‚’追加 ([...], &&)
+ ('[' ã¯ã€æ–‡å­—集åˆã®ä¸­ã§é€šå¸¸ã®æ–‡å­—ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã¨ãã«ã¯
+ 退é¿ä¿®é£¾ã—ãªã‘ã‚Œã°ãªã‚‰ãªã„)
+ + åå‰ä»˜ãæ•ç²å¼é›†åˆã¨ã€éƒ¨åˆ†å¼å‘¼å‡ºã—機能追加
+ + 多ãƒã‚¤ãƒˆæ–‡å­—コードãŒæŒ‡å®šã•ã‚Œã¦ã„ã‚‹ã¨ãã€
+ 文字集åˆã®ä¸­ã§å…«é€²æ•°ã¾ãŸã¯å六進数表ç¾ã®é€£ç¶šã¯ã€å¤šãƒã‚¤ãƒˆç¬¦å·ã§è¡¨ç¾ã•ã‚ŒãŸ
+ 一個ã®æ–‡å­—ã¨è§£é‡ˆã•ã‚Œã‚‹
+ (例. [\xa1\xa2], [\xa1\xa7-\xa4\xa1])
+ + 文字集åˆã®ä¸­ã§ã€ä¸€ãƒã‚¤ãƒˆæ–‡å­—ã¨å¤šãƒã‚¤ãƒˆæ–‡å­—ã®ç¯„囲指定ã¯è¨±ã•ã‚Œã‚‹ã€‚
+ ex. /[a-ã‚]/
+ + 孤立オプションã®æœ‰åŠ¹ç¯„囲ã¯ã€ãã®å­¤ç«‹ã‚ªãƒ—ションをå«ã‚“ã§ã„ã‚‹å¼é›†åˆã®
+ 終ã‚ã‚Šã¾ã§ã§ã‚ã‚‹
+ 例. (?:(?i)a|b) 㯠(?:(?i:a|b)) ã¨è§£é‡ˆã•ã‚Œã‚‹ã€(?:(?i:a)|b)ã§ã¯ãªã„
+ + 孤立オプションã¯ãã®å‰ã®å¼ã«å¯¾ã—ã¦é€éŽçš„ã§ã¯ãªã„
+ 例. /a(?i)*/ ã¯æ–‡æ³•ã‚¨ãƒ©ãƒ¼ã¨ãªã‚‹
+ + ä¸å®Œå…¨ãªç¹°ã‚Šè¿”ã—範囲指定å­ã¯é€šå¸¸ã®æ–‡å­—列ã¨ã—ã¦è¨±å¯ã•ã‚Œã‚‹
+ 例. /{/, /({)/, /a{2,3/
+ + å¦å®šçš„POSIXブラケット [:^xxxx:] を追加
+ + POSIXブラケット [:ascii:] を追加
+ + 先読ã¿ã®ç¹°ã‚Šè¿”ã—ã¯ä¸è¨±å¯
+ 例. /(?=a)*/, /(?!b){5}/
+ + 数値ã§æŒ‡å®šã•ã‚ŒãŸæ–‡å­—ã«å¯¾ã—ã¦ã‚‚ã€å¤§æ–‡å­—å°æ–‡å­—ç…§åˆã‚ªãƒ—ションã¯æœ‰åŠ¹
+ 例. /\x61/i =~ "A"
+ + ç¹°ã‚Šè¿”ã—回数指定ã§ã€æœ€ä½Žå›žæ•°ã®çœç•¥(0回)ãŒã§ãã‚‹
/a{,n}/ == /a{0,n}/
- ºÇÄã²ó¿ô¤ÈºÇÂç²ó¿ô¤ÎƱ»þ¾Êά¤Ïµö¤µ¤ì¤Ê¤¤¡£(/a{,}/)
- + /a{n}?/¤Ï̵Íߤʱ黻»Ò¤Ç¤Ï¤Ê¤¤¡£
+ 最低回数ã¨æœ€å¤§å›žæ•°ã®åŒæ™‚çœç•¥ã¯è¨±ã•ã‚Œãªã„。(/a{,}/)
+ + /a{n}?/ã¯ç„¡æ¬²ãªæ¼”ç®—å­ã§ã¯ãªã„。
/a{n}?/ == /(?:a{n})?/
- + ̵¸ú¤Ê¸åÊý»²¾È¤ò¥Á¥§¥Ã¥¯¤·¤Æ¥¨¥é¡¼¤Ë¤¹¤ë¡£
+ + 無効ãªå¾Œæ–¹å‚照をãƒã‚§ãƒƒã‚¯ã—ã¦ã‚¨ãƒ©ãƒ¼ã«ã™ã‚‹ã€‚
/\1/, /(a)\2/
- + ̵¸Â·«¤êÊÖ¤·¤ÎÃæ¤Ç¡¢Ä¹¤µÎí¤Ç¤Î¾È¹çÀ®¸ù¤Ï·«¤êÊÖ¤·¤òÃæÃǤµ¤»¤ë¤¬¡¢
- ¤³¤Î¤È¤­¡¢ÃæÃǤ¹¤Ù¤­¤«¤É¤¦¤«¤ÎȽÄê¤È¤·¤Æ¡¢Êá³Í¼°½¸¹ç¤ÎÊá³Í¾õÂÖ¤Î
- ÊѲ½¤Þ¤Ç¹Íθ¤·¤Æ¤¤¤ë
+ + ç„¡é™ç¹°ã‚Šè¿”ã—ã®ä¸­ã§ã€é•·ã•é›¶ã§ã®ç…§åˆæˆåŠŸã¯ç¹°ã‚Šè¿”ã—を中断ã•ã›ã‚‹ãŒã€
+ ã“ã®ã¨ãã€ä¸­æ–­ã™ã¹ãã‹ã©ã†ã‹ã®åˆ¤å®šã¨ã—ã¦ã€æ•ç²å¼é›†åˆã®æ•ç²çŠ¶æ…‹ã®
+ 変化ã¾ã§è€ƒæ…®ã—ã¦ã„ã‚‹
/(?:()|())*\1\2/ =~ ""
/(?:\1a|())*/ =~ "a"
-Êäµ­ 5. ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤¬¡¢´ûÄêÃͤǤÏÍ­¸ú¤Ë¤·¤Æ¤¤¤Ê¤¤µ¡Ç½
+補記 5. 実装ã•ã‚Œã¦ã„ã‚‹ãŒã€æ—¢å®šå€¤ã§ã¯æœ‰åŠ¹ã«ã—ã¦ã„ãªã„機能
- + Êá³ÍÍúÎò»²¾È
+ + æ•ç²å±¥æ­´å‚ç…§
- (?@...) ¤È (?@<name>...)
+ (?@...) 㨠(?@<name>...)
- Îã. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
+ 例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
- »ÈÍÑÊýË¡¤Ï¡¢sample/listcap.c¤ò»²¾È
+ 使用方法ã¯ã€sample/listcap.cã‚’å‚ç…§
- Í­¸ú¤Ë¤·¤Æ¤¤¤Ê¤¤Íýͳ¤Ï¡¢¤É¤ÎÄøÅÙÌò¤ËΩ¤Ä¤«¤Ï¤Ã¤­¤ê¤·¤Ê¤¤¤¿¤á¡£
+ 有効ã«ã—ã¦ã„ãªã„ç†ç”±ã¯ã€ã©ã®ç¨‹åº¦å½¹ã«ç«‹ã¤ã‹ã¯ã£ãã‚Šã—ãªã„ãŸã‚。
-Êäµ­ 6. ÌäÂêÅÀ
+補記 6. å•é¡Œç‚¹
- + ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¥Ð¥¤¥ÈÃͤ¬Å¬Àµ¤Ê²Á¤«¤É¤¦¤«¤Î¥Á¥§¥Ã¥¯¤Ï¹Ô¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£
+ + エンコーディングãƒã‚¤ãƒˆå€¤ãŒé©æ­£ãªä¾¡ã‹ã©ã†ã‹ã®ãƒã‚§ãƒƒã‚¯ã¯è¡Œãªã£ã¦ã„ãªã„。
- Îã: UTF-8
+ 例: UTF-8
- * ÀèƬ¥Ð¥¤¥È¤È¤·¤ÆÉÔÀµ¤Ê¥Ð¥¤¥È¤ò°ìʸ»ú¤È¤ß¤Ê¤¹
+ * 先頭ãƒã‚¤ãƒˆã¨ã—ã¦ä¸æ­£ãªãƒã‚¤ãƒˆã‚’一文字ã¨ã¿ãªã™
/./u =~ "\xa3"
- * ÉÔ´°Á´¤Ê¥Ð¥¤¥È¥·¡¼¥±¥ó¥¹¤Î¥Á¥§¥Ã¥¯¤ò¤·¤Ê¤¤
+ * ä¸å®Œå…¨ãªãƒã‚¤ãƒˆã‚·ãƒ¼ã‚±ãƒ³ã‚¹ã®ãƒã‚§ãƒƒã‚¯ã‚’ã—ãªã„
/\w+/u =~ "a\xf3\x8ec"
- ¤³¤ì¤òÄ´¤Ù¤ë¤³¤È¤Ï²Äǽ¤Ç¤Ï¤¢¤ë¤¬¡¢ÃÙ¤¯¤Ê¤ë¤Î¤Ç¹Ô¤Ê¤ï¤Ê¤¤¡£
+ ã“れを調ã¹ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã¯ã‚ã‚‹ãŒã€é…ããªã‚‹ã®ã§è¡Œãªã‚ãªã„。
- ʸ»úÎó¤È¤·¤Æ¡¢¤½¤Î¤è¤¦¤Ê¥Ð¥¤¥ÈÎó¤ò»ØÄꤷ¤¿¾ì¹ç¤ÎÆ°ºî¤ÏÊݾڤ·¤Ê¤¤¡£
+ 文字列ã¨ã—ã¦ã€ãã®ã‚ˆã†ãªãƒã‚¤ãƒˆåˆ—を指定ã—ãŸå ´åˆã®å‹•ä½œã¯ä¿è¨¼ã—ãªã„。
-½ª¤ê
+終り
diff --git a/ext/mbstring/oniguruma/doc/UNICODE_PROPERTIES b/ext/mbstring/oniguruma/doc/UNICODE_PROPERTIES
index dedc6587c8..1f961ebda1 100644
--- a/ext/mbstring/oniguruma/doc/UNICODE_PROPERTIES
+++ b/ext/mbstring/oniguruma/doc/UNICODE_PROPERTIES
@@ -1,698 +1,771 @@
-Unicode Properties (from Unicode Version: 8.0.0)
+Unicode Properties (from Unicode Version: 11.0.0)
- 1: Any
- 2: Assigned
- 3: C
- 4: Cc
- 5: Cf
- 6: Cn
- 7: Co
- 8: Cs
- 9: L
- 10: LC
- 11: Ll
- 12: Lm
- 13: Lo
- 14: Lt
- 15: Lu
- 16: M
- 17: Mc
- 18: Me
- 19: Mn
- 20: N
- 21: Nd
- 22: Nl
- 23: No
- 24: P
- 25: Pc
- 26: Pd
- 27: Pe
- 28: Pf
- 29: Pi
- 30: Po
- 31: Ps
- 32: S
- 33: Sc
- 34: Sk
- 35: Sm
- 36: So
- 37: Z
- 38: Zl
- 39: Zp
- 40: Zs
- 41: Math
- 42: Alphabetic
- 43: Lowercase
- 44: Uppercase
- 45: Cased
- 46: Case_Ignorable
- 47: Changes_When_Lowercased
- 48: Changes_When_Uppercased
- 49: Changes_When_Titlecased
- 50: Changes_When_Casefolded
- 51: Changes_When_Casemapped
- 52: ID_Start
- 53: ID_Continue
- 54: XID_Start
- 55: XID_Continue
- 56: Default_Ignorable_Code_Point
- 57: Grapheme_Extend
- 58: Grapheme_Base
- 59: Grapheme_Link
- 60: Common
- 61: Latin
- 62: Greek
- 63: Cyrillic
- 64: Armenian
- 65: Hebrew
- 66: Arabic
- 67: Syriac
- 68: Thaana
- 69: Devanagari
- 70: Bengali
- 71: Gurmukhi
- 72: Gujarati
- 73: Oriya
- 74: Tamil
- 75: Telugu
- 76: Kannada
- 77: Malayalam
- 78: Sinhala
- 79: Thai
- 80: Lao
- 81: Tibetan
- 82: Myanmar
- 83: Georgian
- 84: Hangul
- 85: Ethiopic
- 86: Cherokee
- 87: Canadian_Aboriginal
- 88: Ogham
- 89: Runic
- 90: Khmer
- 91: Mongolian
- 92: Hiragana
- 93: Katakana
- 94: Bopomofo
- 95: Han
- 96: Yi
- 97: Old_Italic
- 98: Gothic
- 99: Deseret
-100: Inherited
-101: Tagalog
-102: Hanunoo
-103: Buhid
-104: Tagbanwa
-105: Limbu
-106: Tai_Le
-107: Linear_B
-108: Ugaritic
-109: Shavian
-110: Osmanya
-111: Cypriot
-112: Braille
-113: Buginese
-114: Coptic
-115: New_Tai_Lue
-116: Glagolitic
-117: Tifinagh
-118: Syloti_Nagri
-119: Old_Persian
-120: Kharoshthi
-121: Balinese
-122: Cuneiform
-123: Phoenician
-124: Phags_Pa
-125: Nko
-126: Sundanese
-127: Lepcha
-128: Ol_Chiki
-129: Vai
-130: Saurashtra
-131: Kayah_Li
-132: Rejang
-133: Lycian
-134: Carian
+ 15: ASCII_Hex_Digit
+ 16: Adlam
+ 17: Ahom
+ 18: Alphabetic
+ 19: Anatolian_Hieroglyphs
+ 20: Any
+ 21: Arabic
+ 22: Armenian
+ 23: Assigned
+ 24: Avestan
+ 25: Balinese
+ 26: Bamum
+ 27: Bassa_Vah
+ 28: Batak
+ 29: Bengali
+ 30: Bhaiksuki
+ 31: Bidi_Control
+ 32: Bopomofo
+ 33: Brahmi
+ 34: Braille
+ 35: Buginese
+ 36: Buhid
+ 37: C
+ 38: Canadian_Aboriginal
+ 39: Carian
+ 40: Case_Ignorable
+ 41: Cased
+ 42: Caucasian_Albanian
+ 43: Cc
+ 44: Cf
+ 45: Chakma
+ 46: Cham
+ 47: Changes_When_Casefolded
+ 48: Changes_When_Casemapped
+ 49: Changes_When_Lowercased
+ 50: Changes_When_Titlecased
+ 51: Changes_When_Uppercased
+ 52: Cherokee
+ 53: Cn
+ 54: Co
+ 55: Common
+ 56: Coptic
+ 57: Cs
+ 58: Cuneiform
+ 59: Cypriot
+ 60: Cyrillic
+ 61: Dash
+ 62: Default_Ignorable_Code_Point
+ 63: Deprecated
+ 64: Deseret
+ 65: Devanagari
+ 66: Diacritic
+ 67: Dogra
+ 68: Duployan
+ 69: Egyptian_Hieroglyphs
+ 70: Elbasan
+ 71: Emoji
+ 72: Emoji_Component
+ 73: Emoji_Modifier
+ 74: Emoji_Modifier_Base
+ 75: Emoji_Presentation
+ 76: Ethiopic
+ 77: Extended_Pictographic
+ 78: Extender
+ 79: Georgian
+ 80: Glagolitic
+ 81: Gothic
+ 82: Grantha
+ 83: Grapheme_Base
+ 84: Grapheme_Extend
+ 85: Grapheme_Link
+ 86: Greek
+ 87: Gujarati
+ 88: Gunjala_Gondi
+ 89: Gurmukhi
+ 90: Han
+ 91: Hangul
+ 92: Hanifi_Rohingya
+ 93: Hanunoo
+ 94: Hatran
+ 95: Hebrew
+ 96: Hex_Digit
+ 97: Hiragana
+ 98: Hyphen
+ 99: IDS_Binary_Operator
+100: IDS_Trinary_Operator
+101: ID_Continue
+102: ID_Start
+103: Ideographic
+104: Imperial_Aramaic
+105: Inherited
+106: Inscriptional_Pahlavi
+107: Inscriptional_Parthian
+108: Javanese
+109: Join_Control
+110: Kaithi
+111: Kannada
+112: Katakana
+113: Kayah_Li
+114: Kharoshthi
+115: Khmer
+116: Khojki
+117: Khudawadi
+118: L
+119: LC
+120: Lao
+121: Latin
+122: Lepcha
+123: Limbu
+124: Linear_A
+125: Linear_B
+126: Lisu
+127: Ll
+128: Lm
+129: Lo
+130: Logical_Order_Exception
+131: Lowercase
+132: Lt
+133: Lu
+134: Lycian
135: Lydian
-136: Cham
-137: Tai_Tham
-138: Tai_Viet
-139: Avestan
-140: Egyptian_Hieroglyphs
-141: Samaritan
-142: Lisu
-143: Bamum
-144: Javanese
-145: Meetei_Mayek
-146: Imperial_Aramaic
-147: Old_South_Arabian
-148: Inscriptional_Parthian
-149: Inscriptional_Pahlavi
-150: Old_Turkic
-151: Kaithi
-152: Batak
-153: Brahmi
-154: Mandaic
-155: Chakma
-156: Meroitic_Cursive
-157: Meroitic_Hieroglyphs
-158: Miao
-159: Sharada
-160: Sora_Sompeng
-161: Takri
-162: Caucasian_Albanian
-163: Bassa_Vah
-164: Duployan
-165: Elbasan
-166: Grantha
-167: Pahawh_Hmong
-168: Khojki
-169: Linear_A
-170: Mahajani
-171: Manichaean
-172: Mende_Kikakui
-173: Modi
-174: Mro
-175: Old_North_Arabian
-176: Nabataean
-177: Palmyrene
-178: Pau_Cin_Hau
-179: Old_Permic
-180: Psalter_Pahlavi
-181: Siddham
-182: Khudawadi
-183: Tirhuta
-184: Warang_Citi
-185: Ahom
-186: Anatolian_Hieroglyphs
-187: Hatran
-188: Multani
-189: Old_Hungarian
-190: SignWriting
-191: White_Space
-192: Bidi_Control
-193: Join_Control
-194: Dash
-195: Hyphen
-196: Quotation_Mark
-197: Terminal_Punctuation
-198: Other_Math
-199: Hex_Digit
-200: ASCII_Hex_Digit
-201: Other_Alphabetic
-202: Ideographic
-203: Diacritic
-204: Extender
-205: Other_Lowercase
-206: Other_Uppercase
-207: Noncharacter_Code_Point
-208: Other_Grapheme_Extend
-209: IDS_Binary_Operator
-210: IDS_Trinary_Operator
-211: Radical
-212: Unified_Ideograph
-213: Other_Default_Ignorable_Code_Point
-214: Deprecated
-215: Soft_Dotted
-216: Logical_Order_Exception
-217: Other_ID_Start
-218: Other_ID_Continue
-219: STerm
-220: Variation_Selector
-221: Pattern_White_Space
-222: Pattern_Syntax
-223: Unknown
-224: Aghb
-225: AHex
-226: Arab
-227: Armi
-228: Armn
-229: Avst
-230: Bali
-231: Bamu
-232: Bass
-233: Batk
-234: Beng
-235: Bidi_C
-236: Bopo
-237: Brah
-238: Brai
-239: Bugi
-240: Buhd
-241: Cakm
-242: Cans
-243: Cari
-244: Cased_Letter
-245: Cher
-246: CI
-247: Close_Punctuation
-248: Combining_Mark
-249: Connector_Punctuation
-250: Control
-251: Copt
-252: Cprt
-253: Currency_Symbol
-254: CWCF
-255: CWCM
-256: CWL
-257: CWT
-258: CWU
-259: Cyrl
-260: Dash_Punctuation
-261: Decimal_Number
-262: Dep
-263: Deva
-264: DI
-265: Dia
-266: Dsrt
-267: Dupl
-268: Egyp
-269: Elba
-270: Enclosing_Mark
-271: Ethi
-272: Ext
-273: Final_Punctuation
-274: Format
-275: Geor
-276: Glag
-277: Goth
-278: Gran
-279: Gr_Base
-280: Grek
-281: Gr_Ext
-282: Gr_Link
-283: Gujr
-284: Guru
-285: Hang
-286: Hani
-287: Hano
-288: Hatr
-289: Hebr
-290: Hex
-291: Hira
-292: Hluw
-293: Hmng
-294: Hung
-295: IDC
-296: Ideo
-297: IDS
-298: IDSB
-299: IDST
-300: Initial_Punctuation
-301: Ital
-302: Java
-303: Join_C
-304: Kali
-305: Kana
-306: Khar
-307: Khmr
-308: Khoj
-309: Knda
-310: Kthi
-311: Lana
-312: Laoo
-313: Latn
-314: Lepc
-315: Letter
-316: Letter_Number
-317: Limb
-318: Lina
-319: Linb
-320: Line_Separator
-321: LOE
-322: Lowercase_Letter
-323: Lyci
-324: Lydi
-325: Mahj
-326: Mand
-327: Mani
-328: Mark
-329: Math_Symbol
-330: Mend
-331: Merc
-332: Mero
-333: Mlym
-334: Modifier_Letter
-335: Modifier_Symbol
-336: Mong
-337: Mroo
-338: Mtei
-339: Mult
-340: Mymr
-341: Narb
-342: Nbat
-343: NChar
-344: Nkoo
-345: Nonspacing_Mark
-346: Number
-347: OAlpha
-348: ODI
-349: Ogam
-350: OGr_Ext
-351: OIDC
-352: OIDS
-353: Olck
-354: OLower
-355: OMath
-356: Open_Punctuation
-357: Orkh
-358: Orya
-359: Osma
-360: Other
-361: Other_Letter
-362: Other_Number
-363: Other_Punctuation
-364: Other_Symbol
-365: OUpper
-366: Palm
-367: Paragraph_Separator
-368: Pat_Syn
-369: Pat_WS
-370: Pauc
-371: Perm
-372: Phag
-373: Phli
-374: Phlp
-375: Phnx
-376: Plrd
-377: Private_Use
-378: Prti
-379: Punctuation
-380: Qaac
-381: Qaai
-382: QMark
-383: Rjng
-384: Runr
-385: Samr
-386: Sarb
-387: Saur
-388: SD
-389: Separator
-390: Sgnw
-391: Shaw
-392: Shrd
-393: Sidd
-394: Sind
-395: Sinh
-396: Sora
-397: Space_Separator
-398: Spacing_Mark
-399: Sund
-400: Surrogate
-401: Sylo
-402: Symbol
-403: Syrc
-404: Tagb
-405: Takr
-406: Tale
-407: Talu
-408: Taml
-409: Tavt
-410: Telu
-411: Term
-412: Tfng
-413: Tglg
-414: Thaa
-415: Tibt
-416: Tirh
-417: Titlecase_Letter
-418: Ugar
-419: UIdeo
-420: Unassigned
-421: Uppercase_Letter
-422: Vaii
-423: VS
-424: Wara
-425: WSpace
-426: XIDC
-427: XIDS
-428: Xpeo
-429: Xsux
-430: Yiii
-431: Zinh
-432: Zyyy
-433: Zzzz
-434: In_Basic_Latin
-435: In_Latin_1_Supplement
-436: In_Latin_Extended_A
-437: In_Latin_Extended_B
-438: In_IPA_Extensions
-439: In_Spacing_Modifier_Letters
-440: In_Combining_Diacritical_Marks
-441: In_Greek_and_Coptic
-442: In_Cyrillic
-443: In_Cyrillic_Supplement
-444: In_Armenian
-445: In_Hebrew
-446: In_Arabic
-447: In_Syriac
-448: In_Arabic_Supplement
-449: In_Thaana
-450: In_NKo
-451: In_Samaritan
-452: In_Mandaic
-453: In_Arabic_Extended_A
-454: In_Devanagari
-455: In_Bengali
-456: In_Gurmukhi
-457: In_Gujarati
-458: In_Oriya
-459: In_Tamil
-460: In_Telugu
-461: In_Kannada
-462: In_Malayalam
-463: In_Sinhala
-464: In_Thai
-465: In_Lao
-466: In_Tibetan
-467: In_Myanmar
-468: In_Georgian
-469: In_Hangul_Jamo
-470: In_Ethiopic
-471: In_Ethiopic_Supplement
-472: In_Cherokee
-473: In_Unified_Canadian_Aboriginal_Syllabics
-474: In_Ogham
-475: In_Runic
-476: In_Tagalog
-477: In_Hanunoo
-478: In_Buhid
-479: In_Tagbanwa
-480: In_Khmer
-481: In_Mongolian
-482: In_Unified_Canadian_Aboriginal_Syllabics_Extended
-483: In_Limbu
-484: In_Tai_Le
-485: In_New_Tai_Lue
-486: In_Khmer_Symbols
-487: In_Buginese
-488: In_Tai_Tham
-489: In_Combining_Diacritical_Marks_Extended
-490: In_Balinese
-491: In_Sundanese
-492: In_Batak
-493: In_Lepcha
-494: In_Ol_Chiki
-495: In_Sundanese_Supplement
-496: In_Vedic_Extensions
-497: In_Phonetic_Extensions
-498: In_Phonetic_Extensions_Supplement
-499: In_Combining_Diacritical_Marks_Supplement
-500: In_Latin_Extended_Additional
-501: In_Greek_Extended
-502: In_General_Punctuation
-503: In_Superscripts_and_Subscripts
-504: In_Currency_Symbols
-505: In_Combining_Diacritical_Marks_for_Symbols
-506: In_Letterlike_Symbols
-507: In_Number_Forms
-508: In_Arrows
-509: In_Mathematical_Operators
-510: In_Miscellaneous_Technical
-511: In_Control_Pictures
-512: In_Optical_Character_Recognition
-513: In_Enclosed_Alphanumerics
-514: In_Box_Drawing
-515: In_Block_Elements
-516: In_Geometric_Shapes
-517: In_Miscellaneous_Symbols
-518: In_Dingbats
-519: In_Miscellaneous_Mathematical_Symbols_A
-520: In_Supplemental_Arrows_A
-521: In_Braille_Patterns
-522: In_Supplemental_Arrows_B
-523: In_Miscellaneous_Mathematical_Symbols_B
-524: In_Supplemental_Mathematical_Operators
-525: In_Miscellaneous_Symbols_and_Arrows
-526: In_Glagolitic
-527: In_Latin_Extended_C
-528: In_Coptic
-529: In_Georgian_Supplement
-530: In_Tifinagh
-531: In_Ethiopic_Extended
-532: In_Cyrillic_Extended_A
-533: In_Supplemental_Punctuation
-534: In_CJK_Radicals_Supplement
-535: In_Kangxi_Radicals
-536: In_Ideographic_Description_Characters
-537: In_CJK_Symbols_and_Punctuation
-538: In_Hiragana
-539: In_Katakana
-540: In_Bopomofo
-541: In_Hangul_Compatibility_Jamo
-542: In_Kanbun
-543: In_Bopomofo_Extended
-544: In_CJK_Strokes
-545: In_Katakana_Phonetic_Extensions
-546: In_Enclosed_CJK_Letters_and_Months
-547: In_CJK_Compatibility
-548: In_CJK_Unified_Ideographs_Extension_A
-549: In_Yijing_Hexagram_Symbols
-550: In_CJK_Unified_Ideographs
-551: In_Yi_Syllables
-552: In_Yi_Radicals
-553: In_Lisu
-554: In_Vai
-555: In_Cyrillic_Extended_B
-556: In_Bamum
-557: In_Modifier_Tone_Letters
-558: In_Latin_Extended_D
-559: In_Syloti_Nagri
-560: In_Common_Indic_Number_Forms
-561: In_Phags_pa
-562: In_Saurashtra
-563: In_Devanagari_Extended
-564: In_Kayah_Li
-565: In_Rejang
-566: In_Hangul_Jamo_Extended_A
-567: In_Javanese
-568: In_Myanmar_Extended_B
-569: In_Cham
-570: In_Myanmar_Extended_A
-571: In_Tai_Viet
-572: In_Meetei_Mayek_Extensions
-573: In_Ethiopic_Extended_A
-574: In_Latin_Extended_E
-575: In_Cherokee_Supplement
-576: In_Meetei_Mayek
-577: In_Hangul_Syllables
-578: In_Hangul_Jamo_Extended_B
-579: In_High_Surrogates
-580: In_High_Private_Use_Surrogates
-581: In_Low_Surrogates
-582: In_Private_Use_Area
-583: In_CJK_Compatibility_Ideographs
-584: In_Alphabetic_Presentation_Forms
-585: In_Arabic_Presentation_Forms_A
-586: In_Variation_Selectors
-587: In_Vertical_Forms
-588: In_Combining_Half_Marks
-589: In_CJK_Compatibility_Forms
-590: In_Small_Form_Variants
-591: In_Arabic_Presentation_Forms_B
-592: In_Halfwidth_and_Fullwidth_Forms
-593: In_Specials
-594: In_Linear_B_Syllabary
-595: In_Linear_B_Ideograms
-596: In_Aegean_Numbers
-597: In_Ancient_Greek_Numbers
-598: In_Ancient_Symbols
-599: In_Phaistos_Disc
-600: In_Lycian
-601: In_Carian
-602: In_Coptic_Epact_Numbers
-603: In_Old_Italic
-604: In_Gothic
-605: In_Old_Permic
-606: In_Ugaritic
-607: In_Old_Persian
-608: In_Deseret
-609: In_Shavian
-610: In_Osmanya
-611: In_Elbasan
-612: In_Caucasian_Albanian
-613: In_Linear_A
-614: In_Cypriot_Syllabary
-615: In_Imperial_Aramaic
-616: In_Palmyrene
-617: In_Nabataean
-618: In_Hatran
-619: In_Phoenician
-620: In_Lydian
-621: In_Meroitic_Hieroglyphs
-622: In_Meroitic_Cursive
-623: In_Kharoshthi
-624: In_Old_South_Arabian
-625: In_Old_North_Arabian
-626: In_Manichaean
-627: In_Avestan
-628: In_Inscriptional_Parthian
-629: In_Inscriptional_Pahlavi
-630: In_Psalter_Pahlavi
-631: In_Old_Turkic
-632: In_Old_Hungarian
-633: In_Rumi_Numeral_Symbols
-634: In_Brahmi
-635: In_Kaithi
-636: In_Sora_Sompeng
-637: In_Chakma
-638: In_Mahajani
-639: In_Sharada
-640: In_Sinhala_Archaic_Numbers
-641: In_Khojki
-642: In_Multani
-643: In_Khudawadi
-644: In_Grantha
-645: In_Tirhuta
-646: In_Siddham
-647: In_Modi
-648: In_Takri
-649: In_Ahom
-650: In_Warang_Citi
-651: In_Pau_Cin_Hau
-652: In_Cuneiform
-653: In_Cuneiform_Numbers_and_Punctuation
-654: In_Early_Dynastic_Cuneiform
-655: In_Egyptian_Hieroglyphs
-656: In_Anatolian_Hieroglyphs
-657: In_Bamum_Supplement
-658: In_Mro
-659: In_Bassa_Vah
-660: In_Pahawh_Hmong
-661: In_Miao
-662: In_Kana_Supplement
-663: In_Duployan
-664: In_Shorthand_Format_Controls
-665: In_Byzantine_Musical_Symbols
-666: In_Musical_Symbols
-667: In_Ancient_Greek_Musical_Notation
-668: In_Tai_Xuan_Jing_Symbols
-669: In_Counting_Rod_Numerals
-670: In_Mathematical_Alphanumeric_Symbols
-671: In_Sutton_SignWriting
-672: In_Mende_Kikakui
-673: In_Arabic_Mathematical_Alphabetic_Symbols
-674: In_Mahjong_Tiles
-675: In_Domino_Tiles
-676: In_Playing_Cards
-677: In_Enclosed_Alphanumeric_Supplement
-678: In_Enclosed_Ideographic_Supplement
-679: In_Miscellaneous_Symbols_and_Pictographs
-680: In_Emoticons
-681: In_Ornamental_Dingbats
-682: In_Transport_and_Map_Symbols
-683: In_Alchemical_Symbols
-684: In_Geometric_Shapes_Extended
-685: In_Supplemental_Arrows_C
-686: In_Supplemental_Symbols_and_Pictographs
-687: In_CJK_Unified_Ideographs_Extension_B
-688: In_CJK_Unified_Ideographs_Extension_C
-689: In_CJK_Unified_Ideographs_Extension_D
-690: In_CJK_Unified_Ideographs_Extension_E
-691: In_CJK_Compatibility_Ideographs_Supplement
-692: In_Tags
-693: In_Variation_Selectors_Supplement
-694: In_Supplementary_Private_Use_Area_A
-695: In_Supplementary_Private_Use_Area_B
-696: In_No_Block
+136: M
+137: Mahajani
+138: Makasar
+139: Malayalam
+140: Mandaic
+141: Manichaean
+142: Marchen
+143: Masaram_Gondi
+144: Math
+145: Mc
+146: Me
+147: Medefaidrin
+148: Meetei_Mayek
+149: Mende_Kikakui
+150: Meroitic_Cursive
+151: Meroitic_Hieroglyphs
+152: Miao
+153: Mn
+154: Modi
+155: Mongolian
+156: Mro
+157: Multani
+158: Myanmar
+159: N
+160: Nabataean
+161: Nd
+162: New_Tai_Lue
+163: Newa
+164: Nko
+165: Nl
+166: No
+167: Noncharacter_Code_Point
+168: Nushu
+169: Ogham
+170: Ol_Chiki
+171: Old_Hungarian
+172: Old_Italic
+173: Old_North_Arabian
+174: Old_Permic
+175: Old_Persian
+176: Old_Sogdian
+177: Old_South_Arabian
+178: Old_Turkic
+179: Oriya
+180: Osage
+181: Osmanya
+182: Other_Alphabetic
+183: Other_Default_Ignorable_Code_Point
+184: Other_Grapheme_Extend
+185: Other_ID_Continue
+186: Other_ID_Start
+187: Other_Lowercase
+188: Other_Math
+189: Other_Uppercase
+190: P
+191: Pahawh_Hmong
+192: Palmyrene
+193: Pattern_Syntax
+194: Pattern_White_Space
+195: Pau_Cin_Hau
+196: Pc
+197: Pd
+198: Pe
+199: Pf
+200: Phags_Pa
+201: Phoenician
+202: Pi
+203: Po
+204: Prepended_Concatenation_Mark
+205: Ps
+206: Psalter_Pahlavi
+207: Quotation_Mark
+208: Radical
+209: Regional_Indicator
+210: Rejang
+211: Runic
+212: S
+213: Samaritan
+214: Saurashtra
+215: Sc
+216: Sentence_Terminal
+217: Sharada
+218: Shavian
+219: Siddham
+220: SignWriting
+221: Sinhala
+222: Sk
+223: Sm
+224: So
+225: Soft_Dotted
+226: Sogdian
+227: Sora_Sompeng
+228: Soyombo
+229: Sundanese
+230: Syloti_Nagri
+231: Syriac
+232: Tagalog
+233: Tagbanwa
+234: Tai_Le
+235: Tai_Tham
+236: Tai_Viet
+237: Takri
+238: Tamil
+239: Tangut
+240: Telugu
+241: Terminal_Punctuation
+242: Thaana
+243: Thai
+244: Tibetan
+245: Tifinagh
+246: Tirhuta
+247: Ugaritic
+248: Unified_Ideograph
+249: Unknown
+250: Uppercase
+251: Vai
+252: Variation_Selector
+253: Warang_Citi
+254: White_Space
+255: XID_Continue
+256: XID_Start
+257: Yi
+258: Z
+259: Zanabazar_Square
+260: Zl
+261: Zp
+262: Zs
+ 16: Adlm
+ 42: Aghb
+ 15: AHex
+ 21: Arab
+104: Armi
+ 22: Armn
+ 24: Avst
+ 25: Bali
+ 26: Bamu
+ 27: Bass
+ 28: Batk
+ 29: Beng
+ 30: Bhks
+ 31: Bidi_C
+ 32: Bopo
+ 33: Brah
+ 34: Brai
+ 35: Bugi
+ 36: Buhd
+ 45: Cakm
+ 38: Cans
+ 39: Cari
+119: Cased_Letter
+ 52: Cher
+ 40: CI
+198: Close_Punctuation
+136: Combining_Mark
+196: Connector_Punctuation
+ 43: Control
+ 56: Copt
+ 59: Cprt
+215: Currency_Symbol
+ 47: CWCF
+ 48: CWCM
+ 49: CWL
+ 50: CWT
+ 51: CWU
+ 60: Cyrl
+197: Dash_Punctuation
+161: Decimal_Number
+ 63: Dep
+ 65: Deva
+ 62: DI
+ 66: Dia
+ 67: Dogr
+ 64: Dsrt
+ 68: Dupl
+ 69: Egyp
+ 70: Elba
+146: Enclosing_Mark
+ 76: Ethi
+ 78: Ext
+199: Final_Punctuation
+ 44: Format
+ 79: Geor
+ 80: Glag
+ 88: Gong
+143: Gonm
+ 81: Goth
+ 82: Gran
+ 83: Gr_Base
+ 86: Grek
+ 84: Gr_Ext
+ 85: Gr_Link
+ 87: Gujr
+ 89: Guru
+ 91: Hang
+ 90: Hani
+ 93: Hano
+ 94: Hatr
+ 95: Hebr
+ 96: Hex
+ 97: Hira
+ 19: Hluw
+191: Hmng
+171: Hung
+101: IDC
+103: Ideo
+102: IDS
+ 99: IDSB
+100: IDST
+202: Initial_Punctuation
+172: Ital
+108: Java
+109: Join_C
+113: Kali
+112: Kana
+114: Khar
+115: Khmr
+116: Khoj
+111: Knda
+110: Kthi
+235: Lana
+120: Laoo
+121: Latn
+122: Lepc
+118: Letter
+165: Letter_Number
+123: Limb
+124: Lina
+125: Linb
+260: Line_Separator
+130: LOE
+127: Lowercase_Letter
+134: Lyci
+135: Lydi
+137: Mahj
+138: Maka
+140: Mand
+141: Mani
+142: Marc
+136: Mark
+223: Math_Symbol
+147: Medf
+149: Mend
+150: Merc
+151: Mero
+139: Mlym
+128: Modifier_Letter
+222: Modifier_Symbol
+155: Mong
+156: Mroo
+148: Mtei
+157: Mult
+158: Mymr
+173: Narb
+160: Nbat
+167: NChar
+164: Nkoo
+153: Nonspacing_Mark
+168: Nshu
+159: Number
+182: OAlpha
+183: ODI
+169: Ogam
+184: OGr_Ext
+185: OIDC
+186: OIDS
+170: Olck
+187: OLower
+188: OMath
+205: Open_Punctuation
+178: Orkh
+179: Orya
+180: Osge
+181: Osma
+ 37: Other
+129: Other_Letter
+166: Other_Number
+203: Other_Punctuation
+224: Other_Symbol
+189: OUpper
+192: Palm
+261: Paragraph_Separator
+193: Pat_Syn
+194: Pat_WS
+195: Pauc
+204: PCM
+174: Perm
+200: Phag
+106: Phli
+206: Phlp
+201: Phnx
+152: Plrd
+ 54: Private_Use
+107: Prti
+190: Punctuation
+ 56: Qaac
+105: Qaai
+207: QMark
+209: RI
+210: Rjng
+ 92: Rohg
+211: Runr
+213: Samr
+177: Sarb
+214: Saur
+225: SD
+258: Separator
+220: Sgnw
+218: Shaw
+217: Shrd
+219: Sidd
+117: Sind
+221: Sinh
+226: Sogd
+176: Sogo
+227: Sora
+228: Soyo
+262: Space_Separator
+145: Spacing_Mark
+216: STerm
+229: Sund
+ 57: Surrogate
+230: Sylo
+212: Symbol
+231: Syrc
+233: Tagb
+237: Takr
+234: Tale
+162: Talu
+238: Taml
+239: Tang
+236: Tavt
+240: Telu
+241: Term
+245: Tfng
+232: Tglg
+242: Thaa
+244: Tibt
+246: Tirh
+132: Titlecase_Letter
+247: Ugar
+248: UIdeo
+ 53: Unassigned
+133: Uppercase_Letter
+251: Vaii
+252: VS
+253: Wara
+254: WSpace
+255: XIDC
+256: XIDS
+175: Xpeo
+ 58: Xsux
+257: Yiii
+259: Zanb
+105: Zinh
+ 55: Zyyy
+249: Zzzz
+263: In_Basic_Latin
+264: In_Latin_1_Supplement
+265: In_Latin_Extended_A
+266: In_Latin_Extended_B
+267: In_IPA_Extensions
+268: In_Spacing_Modifier_Letters
+269: In_Combining_Diacritical_Marks
+270: In_Greek_and_Coptic
+271: In_Cyrillic
+272: In_Cyrillic_Supplement
+273: In_Armenian
+274: In_Hebrew
+275: In_Arabic
+276: In_Syriac
+277: In_Arabic_Supplement
+278: In_Thaana
+279: In_NKo
+280: In_Samaritan
+281: In_Mandaic
+282: In_Syriac_Supplement
+283: In_Arabic_Extended_A
+284: In_Devanagari
+285: In_Bengali
+286: In_Gurmukhi
+287: In_Gujarati
+288: In_Oriya
+289: In_Tamil
+290: In_Telugu
+291: In_Kannada
+292: In_Malayalam
+293: In_Sinhala
+294: In_Thai
+295: In_Lao
+296: In_Tibetan
+297: In_Myanmar
+298: In_Georgian
+299: In_Hangul_Jamo
+300: In_Ethiopic
+301: In_Ethiopic_Supplement
+302: In_Cherokee
+303: In_Unified_Canadian_Aboriginal_Syllabics
+304: In_Ogham
+305: In_Runic
+306: In_Tagalog
+307: In_Hanunoo
+308: In_Buhid
+309: In_Tagbanwa
+310: In_Khmer
+311: In_Mongolian
+312: In_Unified_Canadian_Aboriginal_Syllabics_Extended
+313: In_Limbu
+314: In_Tai_Le
+315: In_New_Tai_Lue
+316: In_Khmer_Symbols
+317: In_Buginese
+318: In_Tai_Tham
+319: In_Combining_Diacritical_Marks_Extended
+320: In_Balinese
+321: In_Sundanese
+322: In_Batak
+323: In_Lepcha
+324: In_Ol_Chiki
+325: In_Cyrillic_Extended_C
+326: In_Georgian_Extended
+327: In_Sundanese_Supplement
+328: In_Vedic_Extensions
+329: In_Phonetic_Extensions
+330: In_Phonetic_Extensions_Supplement
+331: In_Combining_Diacritical_Marks_Supplement
+332: In_Latin_Extended_Additional
+333: In_Greek_Extended
+334: In_General_Punctuation
+335: In_Superscripts_and_Subscripts
+336: In_Currency_Symbols
+337: In_Combining_Diacritical_Marks_for_Symbols
+338: In_Letterlike_Symbols
+339: In_Number_Forms
+340: In_Arrows
+341: In_Mathematical_Operators
+342: In_Miscellaneous_Technical
+343: In_Control_Pictures
+344: In_Optical_Character_Recognition
+345: In_Enclosed_Alphanumerics
+346: In_Box_Drawing
+347: In_Block_Elements
+348: In_Geometric_Shapes
+349: In_Miscellaneous_Symbols
+350: In_Dingbats
+351: In_Miscellaneous_Mathematical_Symbols_A
+352: In_Supplemental_Arrows_A
+353: In_Braille_Patterns
+354: In_Supplemental_Arrows_B
+355: In_Miscellaneous_Mathematical_Symbols_B
+356: In_Supplemental_Mathematical_Operators
+357: In_Miscellaneous_Symbols_and_Arrows
+358: In_Glagolitic
+359: In_Latin_Extended_C
+360: In_Coptic
+361: In_Georgian_Supplement
+362: In_Tifinagh
+363: In_Ethiopic_Extended
+364: In_Cyrillic_Extended_A
+365: In_Supplemental_Punctuation
+366: In_CJK_Radicals_Supplement
+367: In_Kangxi_Radicals
+368: In_Ideographic_Description_Characters
+369: In_CJK_Symbols_and_Punctuation
+370: In_Hiragana
+371: In_Katakana
+372: In_Bopomofo
+373: In_Hangul_Compatibility_Jamo
+374: In_Kanbun
+375: In_Bopomofo_Extended
+376: In_CJK_Strokes
+377: In_Katakana_Phonetic_Extensions
+378: In_Enclosed_CJK_Letters_and_Months
+379: In_CJK_Compatibility
+380: In_CJK_Unified_Ideographs_Extension_A
+381: In_Yijing_Hexagram_Symbols
+382: In_CJK_Unified_Ideographs
+383: In_Yi_Syllables
+384: In_Yi_Radicals
+385: In_Lisu
+386: In_Vai
+387: In_Cyrillic_Extended_B
+388: In_Bamum
+389: In_Modifier_Tone_Letters
+390: In_Latin_Extended_D
+391: In_Syloti_Nagri
+392: In_Common_Indic_Number_Forms
+393: In_Phags_pa
+394: In_Saurashtra
+395: In_Devanagari_Extended
+396: In_Kayah_Li
+397: In_Rejang
+398: In_Hangul_Jamo_Extended_A
+399: In_Javanese
+400: In_Myanmar_Extended_B
+401: In_Cham
+402: In_Myanmar_Extended_A
+403: In_Tai_Viet
+404: In_Meetei_Mayek_Extensions
+405: In_Ethiopic_Extended_A
+406: In_Latin_Extended_E
+407: In_Cherokee_Supplement
+408: In_Meetei_Mayek
+409: In_Hangul_Syllables
+410: In_Hangul_Jamo_Extended_B
+411: In_High_Surrogates
+412: In_High_Private_Use_Surrogates
+413: In_Low_Surrogates
+414: In_Private_Use_Area
+415: In_CJK_Compatibility_Ideographs
+416: In_Alphabetic_Presentation_Forms
+417: In_Arabic_Presentation_Forms_A
+418: In_Variation_Selectors
+419: In_Vertical_Forms
+420: In_Combining_Half_Marks
+421: In_CJK_Compatibility_Forms
+422: In_Small_Form_Variants
+423: In_Arabic_Presentation_Forms_B
+424: In_Halfwidth_and_Fullwidth_Forms
+425: In_Specials
+426: In_Linear_B_Syllabary
+427: In_Linear_B_Ideograms
+428: In_Aegean_Numbers
+429: In_Ancient_Greek_Numbers
+430: In_Ancient_Symbols
+431: In_Phaistos_Disc
+432: In_Lycian
+433: In_Carian
+434: In_Coptic_Epact_Numbers
+435: In_Old_Italic
+436: In_Gothic
+437: In_Old_Permic
+438: In_Ugaritic
+439: In_Old_Persian
+440: In_Deseret
+441: In_Shavian
+442: In_Osmanya
+443: In_Osage
+444: In_Elbasan
+445: In_Caucasian_Albanian
+446: In_Linear_A
+447: In_Cypriot_Syllabary
+448: In_Imperial_Aramaic
+449: In_Palmyrene
+450: In_Nabataean
+451: In_Hatran
+452: In_Phoenician
+453: In_Lydian
+454: In_Meroitic_Hieroglyphs
+455: In_Meroitic_Cursive
+456: In_Kharoshthi
+457: In_Old_South_Arabian
+458: In_Old_North_Arabian
+459: In_Manichaean
+460: In_Avestan
+461: In_Inscriptional_Parthian
+462: In_Inscriptional_Pahlavi
+463: In_Psalter_Pahlavi
+464: In_Old_Turkic
+465: In_Old_Hungarian
+466: In_Hanifi_Rohingya
+467: In_Rumi_Numeral_Symbols
+468: In_Old_Sogdian
+469: In_Sogdian
+470: In_Brahmi
+471: In_Kaithi
+472: In_Sora_Sompeng
+473: In_Chakma
+474: In_Mahajani
+475: In_Sharada
+476: In_Sinhala_Archaic_Numbers
+477: In_Khojki
+478: In_Multani
+479: In_Khudawadi
+480: In_Grantha
+481: In_Newa
+482: In_Tirhuta
+483: In_Siddham
+484: In_Modi
+485: In_Mongolian_Supplement
+486: In_Takri
+487: In_Ahom
+488: In_Dogra
+489: In_Warang_Citi
+490: In_Zanabazar_Square
+491: In_Soyombo
+492: In_Pau_Cin_Hau
+493: In_Bhaiksuki
+494: In_Marchen
+495: In_Masaram_Gondi
+496: In_Gunjala_Gondi
+497: In_Makasar
+498: In_Cuneiform
+499: In_Cuneiform_Numbers_and_Punctuation
+500: In_Early_Dynastic_Cuneiform
+501: In_Egyptian_Hieroglyphs
+502: In_Anatolian_Hieroglyphs
+503: In_Bamum_Supplement
+504: In_Mro
+505: In_Bassa_Vah
+506: In_Pahawh_Hmong
+507: In_Medefaidrin
+508: In_Miao
+509: In_Ideographic_Symbols_and_Punctuation
+510: In_Tangut
+511: In_Tangut_Components
+512: In_Kana_Supplement
+513: In_Kana_Extended_A
+514: In_Nushu
+515: In_Duployan
+516: In_Shorthand_Format_Controls
+517: In_Byzantine_Musical_Symbols
+518: In_Musical_Symbols
+519: In_Ancient_Greek_Musical_Notation
+520: In_Mayan_Numerals
+521: In_Tai_Xuan_Jing_Symbols
+522: In_Counting_Rod_Numerals
+523: In_Mathematical_Alphanumeric_Symbols
+524: In_Sutton_SignWriting
+525: In_Glagolitic_Supplement
+526: In_Mende_Kikakui
+527: In_Adlam
+528: In_Indic_Siyaq_Numbers
+529: In_Arabic_Mathematical_Alphabetic_Symbols
+530: In_Mahjong_Tiles
+531: In_Domino_Tiles
+532: In_Playing_Cards
+533: In_Enclosed_Alphanumeric_Supplement
+534: In_Enclosed_Ideographic_Supplement
+535: In_Miscellaneous_Symbols_and_Pictographs
+536: In_Emoticons
+537: In_Ornamental_Dingbats
+538: In_Transport_and_Map_Symbols
+539: In_Alchemical_Symbols
+540: In_Geometric_Shapes_Extended
+541: In_Supplemental_Arrows_C
+542: In_Supplemental_Symbols_and_Pictographs
+543: In_Chess_Symbols
+544: In_CJK_Unified_Ideographs_Extension_B
+545: In_CJK_Unified_Ideographs_Extension_C
+546: In_CJK_Unified_Ideographs_Extension_D
+547: In_CJK_Unified_Ideographs_Extension_E
+548: In_CJK_Unified_Ideographs_Extension_F
+549: In_CJK_Compatibility_Ideographs_Supplement
+550: In_Tags
+551: In_Variation_Selectors_Supplement
+552: In_Supplementary_Private_Use_Area_A
+553: In_Supplementary_Private_Use_Area_B
+554: In_No_Block
diff --git a/ext/mbstring/oniguruma/index.html b/ext/mbstring/oniguruma/index.html
index 79e4de0e0f..f55084e08e 100755
--- a/ext/mbstring/oniguruma/index.html
+++ b/ext/mbstring/oniguruma/index.html
@@ -8,7 +8,7 @@
<h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>)
<p>
-(c) K.Kosako, updated at: 2017/05/26
+(c) K.Kosako, updated at: 2018/08/31
</p>
<dl>
@@ -16,6 +16,16 @@
<dt><b>What's new</b>
</font>
<ul>
+<li>2018/09/03: Version 6.9.0 released.</li>
+<li>2018/04/17: Version 6.8.2 released.</li>
+<li>2018/03/19: Version 6.8.1 released.</li>
+<li>2018/03/16: Version 6.8.0 released.</li>
+<li>2018/01/26: Version 6.7.1 released.</li>
+<li>2017/12/11: Version 6.7.0 released.</li>
+<li>2017/08/30: Version 6.6.1 released.</li>
+<li>2017/08/28: Version 6.6.0 released.</li>
+<li>2017/08/03: Version 6.5.0 released.</li>
+<li>2017/07/03: Version 6.4.0 released.</li>
<li>2017/05/29: Version 6.3.0 released.</li>
<li>2017/04/08: Version 6.2.0 released.</li>
<li>2016/12/11: Version 6.1.3 released.</li>
diff --git a/ext/mbstring/oniguruma/index_ja.html b/ext/mbstring/oniguruma/index_ja.html
index 7070dfe243..06c1753185 100644
--- a/ext/mbstring/oniguruma/index_ja.html
+++ b/ext/mbstring/oniguruma/index_ja.html
@@ -8,7 +8,7 @@
<h1>鬼車</h1>
<p>
-(c) K.Kosako, 最終更新: 2017/05/26
+(c) K.Kosako, 最終更新: 2018/09/03
</p>
<dl>
@@ -16,6 +16,16 @@
<dt><b>更新情報</b>
</font>
<ul>
+<li>2018/09/03: Version 6.9.0 リリース</li>
+<li>2018/04/17: Version 6.8.2 リリース</li>
+<li>2018/03/19: Version 6.8.1 リリース</li>
+<li>2018/03/16: Version 6.8.0 リリース</li>
+<li>2018/01/26: Version 6.7.1 リリース</li>
+<li>2017/12/11: Version 6.7.0 リリース</li>
+<li>2017/08/30: Version 6.6.1 リリース</li>
+<li>2017/08/28: Version 6.6.0 リリース</li>
+<li>2017/08/03: Version 6.5.0 リリース</li>
+<li>2017/07/03: Version 6.4.0 リリース</li>
<li>2017/05/29: Version 6.3.0 リリース</li>
<li>2017/04/08: Version 6.2.0 リリース</li>
<li>2016/12/11: Version 6.1.3 リリース</li>
diff --git a/ext/mbstring/oniguruma/src/ascii.c b/ext/mbstring/oniguruma/src/ascii.c
index b21878d275..eb389448de 100644
--- a/ext/mbstring/oniguruma/src/ascii.c
+++ b/ext/mbstring/oniguruma/src/ascii.c
@@ -2,7 +2,7 @@
ascii.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,7 +27,62 @@
* SUCH DAMAGE.
*/
-#include "regenc.h"
+#include "regint.h" /* for USE_CALLOUT */
+
+static int
+init(void)
+{
+#ifdef USE_CALLOUT
+
+ int id;
+ OnigEncoding enc;
+ char* name;
+ unsigned int args[4];
+ OnigValue opts[4];
+
+ enc = ONIG_ENCODING_ASCII;
+
+ name = "FAIL"; BC0_P(name, fail);
+ name = "MISMATCH"; BC0_P(name, mismatch);
+
+ name = "MAX";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_CHAR;
+ opts[0].c = 'X';
+ BC_B_O(name, max, 2, args, 1, opts);
+
+ name = "ERROR";
+ args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT;
+ BC_P_O(name, error, 1, args, 1, opts);
+
+ name = "COUNT";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, count, 1, args, 1, opts);
+
+ name = "TOTAL_COUNT";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, total_count, 1, args, 1, opts);
+
+ name = "CMP";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_STRING;
+ args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ BC_P(name, cmp, 3, args);
+
+#endif /* USE_CALLOUT */
+
+ return ONIG_NORMAL;
+}
+
+#if 0
+static int
+is_initialized(void)
+{
+ /* Don't use this function */
+ /* can't answer, because builtin callout entries removed in onig_end() */
+ return 0;
+}
+#endif
static int
ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)
@@ -41,8 +96,8 @@ ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)
OnigEncodingType OnigEncodingASCII = {
onigenc_single_byte_mbc_enc_len,
"US-ASCII", /* name */
- 1, /* max byte length */
- 1, /* min byte length */
+ 1, /* max enc length */
+ 1, /* min enc length */
onigenc_is_mbc_newline_0x0a,
onigenc_single_byte_mbc_to_code,
onigenc_single_byte_code_to_mbclen,
@@ -55,7 +110,9 @@ OnigEncodingType OnigEncodingASCII = {
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
onigenc_always_true_is_allowed_reverse_match,
- NULL, /* init */
- NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ init,
+ 0, /* is_initialized */
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/big5.c b/ext/mbstring/oniguruma/src/big5.c
index bc713abdd3..dbc750d850 100644
--- a/ext/mbstring/oniguruma/src/big5.c
+++ b/ext/mbstring/oniguruma/src/big5.c
@@ -2,7 +2,7 @@
big5.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -186,5 +186,7 @@ OnigEncodingType OnigEncodingBIG5 = {
big5_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/config.h.win32 b/ext/mbstring/oniguruma/src/config.h.win32
index 9a9c43f26d..3c855588fa 100644
--- a/ext/mbstring/oniguruma/src/config.h.win32
+++ b/ext/mbstring/oniguruma/src/config.h.win32
@@ -1,85 +1,82 @@
-#define STDC_HEADERS 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 0
-#define SIZEOF___INT64 8
-#define SIZEOF_OFF_T 4
-#define SIZEOF_VOIDP 4
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_SIZE_T 4
-#define HAVE_PROTOTYPES 1
-#define TOKEN_PASTE(x,y) x##y
-#define HAVE_STDARG_PROTOTYPES 1
-#ifndef NORETURN
-#if _MSC_VER > 1100
-#define NORETURN(x) __declspec(noreturn) x
-#else
-#define NORETURN(x) x
-#endif
-#endif
-#define HAVE_DECL_SYS_NERR 1
-#define STDC_HEADERS 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_SYS_UTIME_H 1
-#define HAVE_MEMORY_H 1
-#define uid_t int
-#define gid_t int
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define HAVE_ST_RDEV 1
-#define GETGROUPS_T int
-#define RETSIGTYPE void
-#define HAVE_ALLOCA 1
-#define HAVE_DUP2 1
-#define HAVE_MEMCMP 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MKDIR 1
-#define HAVE_STRCASECMP 1
-#define HAVE_STRNCASECMP 1
-#define HAVE_STRERROR 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRCHR 1
-#define HAVE_STRSTR 1
-#define HAVE_STRTOD 1
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_FLOCK 1
-#define HAVE_VSNPRINTF 1
-#define HAVE_FINITE 1
-#define HAVE_FMOD 1
-#define HAVE_FREXP 1
-#define HAVE_HYPOT 1
-#define HAVE_MODF 1
-#define HAVE_WAITPID 1
-#define HAVE_CHSIZE 1
-#define HAVE_TIMES 1
-#define HAVE__SETJMP 1
-#define HAVE_TELLDIR 1
-#define HAVE_SEEKDIR 1
-#define HAVE_MKTIME 1
-#define HAVE_COSH 1
-#define HAVE_SINH 1
-#define HAVE_TANH 1
-#define HAVE_EXECVE 1
-#define HAVE_TZNAME 1
-#define HAVE_DAYLIGHT 1
-#define SETPGRP_VOID 1
-#define inline __inline
-#define NEED_IO_SEEK_BETWEEN_RW 1
-#define RSHIFT(x,y) ((x)>>(int)y)
-#define FILE_COUNT _cnt
-#define FILE_READPTR _ptr
-#define DEFAULT_KCODE KCODE_NONE
-#define DLEXT ".so"
-#define DLEXT2 ".dll"
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_FLOAT_H 1
+#define HAVE_OFF_T 1
+#define SIZEOF_INT 4
+#define SIZEOF_SHORT 2
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF___INT64 8
+#define SIZEOF_OFF_T 4
+#define SIZEOF_VOIDP 4
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_SIZE_T 4
+#define HAVE_PROTOTYPES 1
+#define TOKEN_PASTE(x,y) x##y
+#define HAVE_STDARG_PROTOTYPES 1
+#ifndef NORETURN
+#if _MSC_VER > 1100
+#define NORETURN(x) __declspec(noreturn) x
+#else
+#define NORETURN(x) x
+#endif
+#endif
+#define HAVE_DECL_SYS_NERR 1
+#define STDC_HEADERS 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_SYS_UTIME_H 1
+#define HAVE_MEMORY_H 1
+#define uid_t int
+#define gid_t int
+#define GETGROUPS_T int
+#define HAVE_ALLOCA 1
+#define HAVE_DUP2 1
+#define HAVE_MEMCMP 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MKDIR 1
+#define HAVE_STRCASECMP 1
+#define HAVE_STRNCASECMP 1
+#define HAVE_STRERROR 1
+#define HAVE_STRFTIME 1
+#define HAVE_STRCHR 1
+#define HAVE_STRSTR 1
+#define HAVE_STRTOD 1
+#define HAVE_STRTOL 1
+#define HAVE_STRTOUL 1
+#define HAVE_FLOCK 1
+#define HAVE_VSNPRINTF 1
+#define HAVE_FINITE 1
+#define HAVE_FMOD 1
+#define HAVE_FREXP 1
+#define HAVE_HYPOT 1
+#define HAVE_MODF 1
+#define HAVE_WAITPID 1
+#define HAVE_CHSIZE 1
+#define HAVE_TIMES 1
+#define HAVE__SETJMP 1
+#define HAVE_TELLDIR 1
+#define HAVE_SEEKDIR 1
+#define HAVE_MKTIME 1
+#define HAVE_COSH 1
+#define HAVE_SINH 1
+#define HAVE_TANH 1
+#define HAVE_EXECVE 1
+#define HAVE_TZNAME 1
+#define HAVE_DAYLIGHT 1
+#define SETPGRP_VOID 1
+#define inline __inline
+#define NEED_IO_SEEK_BETWEEN_RW 1
+#define RSHIFT(x,y) ((x)>>(int)y)
+#define FILE_COUNT _cnt
+#define FILE_READPTR _ptr
+#define DEFAULT_KCODE KCODE_NONE
+#define DLEXT ".so"
+#define DLEXT2 ".dll"
diff --git a/ext/mbstring/oniguruma/src/config.h.win64 b/ext/mbstring/oniguruma/src/config.h.win64
index dec7b75773..c8b8c2b8b6 100644
--- a/ext/mbstring/oniguruma/src/config.h.win64
+++ b/ext/mbstring/oniguruma/src/config.h.win64
@@ -1,85 +1,82 @@
-#define STDC_HEADERS 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_MEMORY_H 1
-#define HAVE_FLOAT_H 1
-#define HAVE_OFF_T 1
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define SIZEOF_LONG 4
-#define SIZEOF_LONG_LONG 0
-#define SIZEOF___INT64 8
-#define SIZEOF_OFF_T 4
-#define SIZEOF_VOIDP 8
-#define SIZEOF_FLOAT 4
-#define SIZEOF_DOUBLE 8
-#define SIZEOF_SIZE_T 8
-#define HAVE_PROTOTYPES 1
-#define TOKEN_PASTE(x,y) x##y
-#define HAVE_STDARG_PROTOTYPES 1
-#ifndef NORETURN
-#if _MSC_VER > 1100
-#define NORETURN(x) __declspec(noreturn) x
-#else
-#define NORETURN(x) x
-#endif
-#endif
-#define HAVE_DECL_SYS_NERR 1
-#define STDC_HEADERS 1
-#define HAVE_STDLIB_H 1
-#define HAVE_STRING_H 1
-#define HAVE_LIMITS_H 1
-#define HAVE_FCNTL_H 1
-#define HAVE_SYS_UTIME_H 1
-#define HAVE_MEMORY_H 1
-#define uid_t int
-#define gid_t int
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-#define HAVE_ST_RDEV 1
-#define GETGROUPS_T int
-#define RETSIGTYPE void
-#define HAVE_ALLOCA 1
-#define HAVE_DUP2 1
-#define HAVE_MEMCMP 1
-#define HAVE_MEMMOVE 1
-#define HAVE_MKDIR 1
-#define HAVE_STRCASECMP 1
-#define HAVE_STRNCASECMP 1
-#define HAVE_STRERROR 1
-#define HAVE_STRFTIME 1
-#define HAVE_STRCHR 1
-#define HAVE_STRSTR 1
-#define HAVE_STRTOD 1
-#define HAVE_STRTOL 1
-#define HAVE_STRTOUL 1
-#define HAVE_FLOCK 1
-#define HAVE_VSNPRINTF 1
-#define HAVE_FINITE 1
-#define HAVE_FMOD 1
-#define HAVE_FREXP 1
-#define HAVE_HYPOT 1
-#define HAVE_MODF 1
-#define HAVE_WAITPID 1
-#define HAVE_CHSIZE 1
-#define HAVE_TIMES 1
-#define HAVE__SETJMP 1
-#define HAVE_TELLDIR 1
-#define HAVE_SEEKDIR 1
-#define HAVE_MKTIME 1
-#define HAVE_COSH 1
-#define HAVE_SINH 1
-#define HAVE_TANH 1
-#define HAVE_EXECVE 1
-#define HAVE_TZNAME 1
-#define HAVE_DAYLIGHT 1
-#define SETPGRP_VOID 1
-#define inline __inline
-#define NEED_IO_SEEK_BETWEEN_RW 1
-#define RSHIFT(x,y) ((x)>>(int)y)
-#define FILE_COUNT _cnt
-#define FILE_READPTR _ptr
-#define DEFAULT_KCODE KCODE_NONE
-#define DLEXT ".so"
-#define DLEXT2 ".dll"
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_FLOAT_H 1
+#define HAVE_OFF_T 1
+#define SIZEOF_INT 4
+#define SIZEOF_SHORT 2
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF___INT64 8
+#define SIZEOF_OFF_T 4
+#define SIZEOF_VOIDP 8
+#define SIZEOF_FLOAT 4
+#define SIZEOF_DOUBLE 8
+#define SIZEOF_SIZE_T 8
+#define HAVE_PROTOTYPES 1
+#define TOKEN_PASTE(x,y) x##y
+#define HAVE_STDARG_PROTOTYPES 1
+#ifndef NORETURN
+#if _MSC_VER > 1100
+#define NORETURN(x) __declspec(noreturn) x
+#else
+#define NORETURN(x) x
+#endif
+#endif
+#define HAVE_DECL_SYS_NERR 1
+#define STDC_HEADERS 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_LIMITS_H 1
+#define HAVE_FCNTL_H 1
+#define HAVE_SYS_UTIME_H 1
+#define HAVE_MEMORY_H 1
+#define uid_t int
+#define gid_t int
+#define GETGROUPS_T int
+#define HAVE_ALLOCA 1
+#define HAVE_DUP2 1
+#define HAVE_MEMCMP 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MKDIR 1
+#define HAVE_STRCASECMP 1
+#define HAVE_STRNCASECMP 1
+#define HAVE_STRERROR 1
+#define HAVE_STRFTIME 1
+#define HAVE_STRCHR 1
+#define HAVE_STRSTR 1
+#define HAVE_STRTOD 1
+#define HAVE_STRTOL 1
+#define HAVE_STRTOUL 1
+#define HAVE_FLOCK 1
+#define HAVE_VSNPRINTF 1
+#define HAVE_FINITE 1
+#define HAVE_FMOD 1
+#define HAVE_FREXP 1
+#define HAVE_HYPOT 1
+#define HAVE_MODF 1
+#define HAVE_WAITPID 1
+#define HAVE_CHSIZE 1
+#define HAVE_TIMES 1
+#define HAVE__SETJMP 1
+#define HAVE_TELLDIR 1
+#define HAVE_SEEKDIR 1
+#define HAVE_MKTIME 1
+#define HAVE_COSH 1
+#define HAVE_SINH 1
+#define HAVE_TANH 1
+#define HAVE_EXECVE 1
+#define HAVE_TZNAME 1
+#define HAVE_DAYLIGHT 1
+#define SETPGRP_VOID 1
+#define inline __inline
+#define NEED_IO_SEEK_BETWEEN_RW 1
+#define RSHIFT(x,y) ((x)>>(int)y)
+#define FILE_COUNT _cnt
+#define FILE_READPTR _ptr
+#define DEFAULT_KCODE KCODE_NONE
+#define DLEXT ".so"
+#define DLEXT2 ".dll"
diff --git a/ext/mbstring/oniguruma/src/cp1251.c b/ext/mbstring/oniguruma/src/cp1251.c
index 4d655bb459..e217037026 100644
--- a/ext/mbstring/oniguruma/src/cp1251.c
+++ b/ext/mbstring/oniguruma/src/cp1251.c
@@ -2,7 +2,7 @@
cp1251.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2006-2016 Byte <byte AT mail DOT kna DOT ru>
+ * Copyright (c) 2006-2018 Byte <byte AT mail DOT kna DOT ru>
* K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
@@ -199,5 +199,7 @@ OnigEncodingType OnigEncodingCP1251 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/euc_jp.c b/ext/mbstring/oniguruma/src/euc_jp.c
index 3b54e958d9..5d3c1f9bce 100644
--- a/ext/mbstring/oniguruma/src/euc_jp.c
+++ b/ext/mbstring/oniguruma/src/euc_jp.c
@@ -2,7 +2,7 @@
euc_jp.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -152,7 +152,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf)
if (enclen(ONIG_ENCODING_EUC_JP, buf) != (p - buf))
return ONIGERR_INVALID_CODE_POINT_VALUE;
#endif
- return p - buf;
+ return (int )(p - buf);
}
static int
@@ -230,13 +230,13 @@ static int
property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
{
struct PropertyNameCtype* pc;
- int len = end - p;
+ int len = (int )(end - p);
char q[32];
if (len < sizeof(q) - 1) {
xmemcpy(q, p, (size_t )len);
q[len] = '\0';
- pc = euc_jp_lookup_property_name(q, len);
+ pc = onigenc_euc_jp_lookup_property_name(q, len);
if (pc != 0)
return pc->ctype;
}
@@ -252,7 +252,7 @@ is_code_ctype(OnigCodePoint code, unsigned int ctype)
return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);
else {
if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) {
- return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
+ return (code_to_mbclen(code) > 1 ? TRUE : FALSE);
}
}
}
@@ -306,5 +306,7 @@ OnigEncodingType OnigEncodingEUC_JP = {
is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/euc_jp_prop.c b/ext/mbstring/oniguruma/src/euc_jp_prop.c
index 8436fa298a..3f84aef46b 100644
--- a/ext/mbstring/oniguruma/src/euc_jp_prop.c
+++ b/ext/mbstring/oniguruma/src/euc_jp_prop.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -pt -T -L ANSI-C -N euc_jp_lookup_property_name --output-file euc_jp_prop.c euc_jp_prop.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -pt -T -L ANSI-C -N onigenc_euc_jp_lookup_property_name --output-file gperf1.tmp euc_jp_prop.gperf */
/* Computed positions: -k'1,3' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -26,7 +26,7 @@
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
#endif
#line 1 "euc_jp_prop.gperf"
@@ -49,7 +49,7 @@ inline
#endif
#endif
static unsigned int
-hash (register const char *str, register unsigned int len)
+hash (register const char *str, register size_t len)
{
static unsigned char asso_values[] =
{
@@ -80,17 +80,11 @@ hash (register const char *str, register unsigned int len)
56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56
};
- return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
+ return (unsigned int )len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
struct PropertyNameCtype *
-euc_jp_lookup_property_name (register const char *str, register unsigned int len)
+onigenc_euc_jp_lookup_property_name (register const char *str, register size_t len)
{
static struct PropertyNameCtype wordlist[] =
{
@@ -144,9 +138,9 @@ euc_jp_lookup_property_name (register const char *str, register unsigned int len
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- register int key = hash (str, len);
+ register unsigned int key = hash (str, len);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
register const char *s = wordlist[key].name;
diff --git a/ext/mbstring/oniguruma/src/euc_kr.c b/ext/mbstring/oniguruma/src/euc_kr.c
index 450caf146f..def311bfd5 100644
--- a/ext/mbstring/oniguruma/src/euc_kr.c
+++ b/ext/mbstring/oniguruma/src/euc_kr.c
@@ -2,7 +2,7 @@
euc_kr.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -184,5 +184,7 @@ OnigEncodingType OnigEncodingEUC_CN = {
euckr_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/euc_tw.c b/ext/mbstring/oniguruma/src/euc_tw.c
index b3ee62866c..8738598686 100644
--- a/ext/mbstring/oniguruma/src/euc_tw.c
+++ b/ext/mbstring/oniguruma/src/euc_tw.c
@@ -2,7 +2,7 @@
euc_tw.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -167,5 +167,7 @@ OnigEncodingType OnigEncodingEUC_TW = {
euctw_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/gb18030.c b/ext/mbstring/oniguruma/src/gb18030.c
index c8b586505c..d4a11087b3 100644
--- a/ext/mbstring/oniguruma/src/gb18030.c
+++ b/ext/mbstring/oniguruma/src/gb18030.c
@@ -2,7 +2,7 @@
gb18030.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2005-2016 KUBO Takehiro <kubo AT jiubao DOT org>
+ * Copyright (c) 2005-2018 KUBO Takehiro <kubo AT jiubao DOT org>
* K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
@@ -89,25 +89,25 @@ is_valid_mbc_string(const UChar* p, const UChar* end)
p++;
if (p >= end) return FALSE;
if (*p < 0x40) {
- if (*p < 0x30 || *p > 0x39)
- return FALSE;
+ if (*p < 0x30 || *p > 0x39)
+ return FALSE;
- p++;
- if (p >= end) return FALSE;
- if (*p < 0x81 || *p == 0xff) return FALSE;
+ p++;
+ if (p >= end) return FALSE;
+ if (*p < 0x81 || *p == 0xff) return FALSE;
- p++;
- if (p >= end) return FALSE;
- if (*p < 0x30 || *p > 0x39)
- return FALSE;
+ p++;
+ if (p >= end) return FALSE;
+ if (*p < 0x30 || *p > 0x39)
+ return FALSE;
- p++;
+ p++;
}
else if (*p == 0x7f || *p == 0xff) {
- return FALSE;
+ return FALSE;
}
else {
- p++;
+ p++;
}
}
}
@@ -138,7 +138,7 @@ gb18030_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end,
#if 0
static int
gb18030_is_mbc_ambiguous(OnigCaseFoldType flag,
- const UChar** pp, const UChar* end)
+ const UChar** pp, const UChar* end)
{
return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_GB18030, flag, pp, end);
}
@@ -197,16 +197,16 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case S_START:
switch (GB18030_MAP[*p]) {
case C1:
- return (UChar *)s;
+ return (UChar *)s;
case C2:
- state = S_one_C2; /* C2 */
- break;
+ state = S_one_C2; /* C2 */
+ break;
case C4:
- state = S_one_C4; /* C4 */
- break;
+ state = S_one_C4; /* C4 */
+ break;
case CM:
- state = S_one_CM; /* CM */
- break;
+ state = S_one_CM; /* CM */
+ break;
}
break;
case S_one_C2: /* C2 */
@@ -214,10 +214,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)s;
+ return (UChar *)s;
case CM:
- state = S_odd_CM_one_CX; /* CM C2 */
- break;
+ state = S_odd_CM_one_CX; /* CM C2 */
+ break;
}
break;
case S_one_C4: /* C4 */
@@ -225,23 +225,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)s;
+ return (UChar *)s;
case CM:
- state = S_one_CMC4;
- break;
+ state = S_one_CMC4;
+ break;
}
break;
case S_one_CM: /* CM */
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)s;
+ return (UChar *)s;
case C4:
- state = S_odd_C4CM;
- break;
+ state = S_odd_C4CM;
+ break;
case CM:
- state = S_odd_CM_one_CX; /* CM CM */
- break;
+ state = S_odd_CM_one_CX; /* CM CM */
+ break;
}
break;
@@ -250,10 +250,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case CM:
- state = S_even_CM_one_CX;
- break;
+ state = S_even_CM_one_CX;
+ break;
}
break;
case S_even_CM_one_CX: /* CM CM C2 */ /* CM CM CM */ /* CM CM C4 */
@@ -261,10 +261,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)s;
+ return (UChar *)s;
case CM:
- state = S_odd_CM_one_CX;
- break;
+ state = S_odd_CM_one_CX;
+ break;
}
break;
@@ -272,26 +272,26 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case C4:
- state = S_one_C4_odd_CMC4; /* C4 CM C4 */
- break;
+ state = S_one_C4_odd_CMC4; /* C4 CM C4 */
+ break;
case CM:
- state = S_even_CM_one_CX; /* CM CM C4 */
- break;
+ state = S_even_CM_one_CX; /* CM CM C4 */
+ break;
}
break;
case S_odd_CMC4: /* CM C4 CM C4 CM C4 */
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case C4:
- state = S_one_C4_odd_CMC4;
- break;
+ state = S_one_C4_odd_CMC4;
+ break;
case CM:
- state = S_odd_CM_odd_CMC4;
- break;
+ state = S_odd_CM_odd_CMC4;
+ break;
}
break;
case S_one_C4_odd_CMC4: /* C4 CM C4 */
@@ -299,23 +299,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case CM:
- state = S_even_CMC4; /* CM C4 CM C4 */
- break;
+ state = S_even_CMC4; /* CM C4 CM C4 */
+ break;
}
break;
case S_even_CMC4: /* CM C4 CM C4 */
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)(s - 3);
+ return (UChar *)(s - 3);
case C4:
- state = S_one_C4_even_CMC4;
- break;
+ state = S_one_C4_even_CMC4;
+ break;
case CM:
- state = S_odd_CM_even_CMC4;
- break;
+ state = S_odd_CM_even_CMC4;
+ break;
}
break;
case S_one_C4_even_CMC4: /* C4 CM C4 CM C4 */
@@ -323,10 +323,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 3);
+ return (UChar *)(s - 3);
case CM:
- state = S_odd_CMC4;
- break;
+ state = S_odd_CMC4;
+ break;
}
break;
@@ -335,10 +335,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 3);
+ return (UChar *)(s - 3);
case CM:
- state = S_even_CM_odd_CMC4;
- break;
+ state = S_even_CM_odd_CMC4;
+ break;
}
break;
case S_even_CM_odd_CMC4: /* CM CM CM C4 CM C4 CM C4 */
@@ -346,10 +346,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case CM:
- state = S_odd_CM_odd_CMC4;
- break;
+ state = S_odd_CM_odd_CMC4;
+ break;
}
break;
@@ -358,10 +358,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 1);
+ return (UChar *)(s - 1);
case CM:
- state = S_even_CM_even_CMC4;
- break;
+ state = S_even_CM_even_CMC4;
+ break;
}
break;
case S_even_CM_even_CMC4: /* CM CM CM C4 CM C4 */
@@ -369,10 +369,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 3);
+ return (UChar *)(s - 3);
case CM:
- state = S_odd_CM_even_CMC4;
- break;
+ state = S_odd_CM_even_CMC4;
+ break;
}
break;
@@ -381,23 +381,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)s;
+ return (UChar *)s;
case CM:
- state = S_one_CM_odd_C4CM; /* CM C4 CM */
- break;
+ state = S_one_CM_odd_C4CM; /* CM C4 CM */
+ break;
}
break;
case S_one_CM_odd_C4CM: /* CM C4 CM */ /* CM C4 CM C4 CM C4 CM */
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)(s - 2); /* |CM C4 CM */
+ return (UChar *)(s - 2); /* |CM C4 CM */
case C4:
- state = S_even_C4CM;
- break;
+ state = S_even_C4CM;
+ break;
case CM:
- state = S_even_CM_odd_C4CM;
- break;
+ state = S_even_CM_odd_C4CM;
+ break;
}
break;
case S_even_C4CM: /* C4 CM C4 CM */
@@ -405,23 +405,23 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 2); /* C4|CM C4 CM */
+ return (UChar *)(s - 2); /* C4|CM C4 CM */
case CM:
- state = S_one_CM_even_C4CM;
- break;
+ state = S_one_CM_even_C4CM;
+ break;
}
break;
case S_one_CM_even_C4CM: /* CM C4 CM C4 CM */
switch (GB18030_MAP[*p]) {
case C1:
case C2:
- return (UChar *)(s - 0); /*|CM C4 CM C4|CM */
+ return (UChar *)(s - 0); /*|CM C4 CM C4|CM */
case C4:
- state = S_odd_C4CM;
- break;
+ state = S_odd_C4CM;
+ break;
case CM:
- state = S_even_CM_even_C4CM;
- break;
+ state = S_even_CM_even_C4CM;
+ break;
}
break;
@@ -430,10 +430,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 0); /* |CM CM|C4|CM */
+ return (UChar *)(s - 0); /* |CM CM|C4|CM */
case CM:
- state = S_odd_CM_odd_C4CM;
- break;
+ state = S_odd_CM_odd_C4CM;
+ break;
}
break;
case S_odd_CM_odd_C4CM: /* CM CM CM C4 CM */
@@ -441,10 +441,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 2); /* |CM CM|CM C4 CM */
+ return (UChar *)(s - 2); /* |CM CM|CM C4 CM */
case CM:
- state = S_even_CM_odd_C4CM;
- break;
+ state = S_even_CM_odd_C4CM;
+ break;
}
break;
@@ -453,10 +453,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 2); /* |CM CM|C4|CM C4 CM */
+ return (UChar *)(s - 2); /* |CM CM|C4|CM C4 CM */
case CM:
- state = S_odd_CM_even_C4CM;
- break;
+ state = S_odd_CM_even_C4CM;
+ break;
}
break;
case S_odd_CM_even_C4CM: /* CM CM CM C4 CM C4 CM */
@@ -464,10 +464,10 @@ gb18030_left_adjust_char_head(const UChar* start, const UChar* s)
case C1:
case C2:
case C4:
- return (UChar *)(s - 0); /* |CM CM|CM C4 CM C4|CM */
+ return (UChar *)(s - 0); /* |CM CM|CM C4 CM C4|CM */
case CM:
- state = S_even_CM_even_C4CM;
- break;
+ state = S_even_CM_even_C4CM;
+ break;
}
break;
}
@@ -534,5 +534,7 @@ OnigEncodingType OnigEncodingGB18030 = {
gb18030_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_1.c b/ext/mbstring/oniguruma/src/iso8859_1.c
index 573931fdaf..ff47b807d4 100644
--- a/ext/mbstring/oniguruma/src/iso8859_1.c
+++ b/ext/mbstring/oniguruma/src/iso8859_1.c
@@ -2,7 +2,7 @@
iso8859_1.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -271,5 +271,7 @@ OnigEncodingType OnigEncodingISO_8859_1 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_10.c b/ext/mbstring/oniguruma/src/iso8859_10.c
index 91b18d4274..f9804e2839 100644
--- a/ext/mbstring/oniguruma/src/iso8859_10.c
+++ b/ext/mbstring/oniguruma/src/iso8859_10.c
@@ -2,7 +2,7 @@
iso8859_10.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -238,5 +238,7 @@ OnigEncodingType OnigEncodingISO_8859_10 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_11.c b/ext/mbstring/oniguruma/src/iso8859_11.c
index 518be25412..108ee8ade0 100644
--- a/ext/mbstring/oniguruma/src/iso8859_11.c
+++ b/ext/mbstring/oniguruma/src/iso8859_11.c
@@ -2,7 +2,7 @@
iso8859_11.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,5 +95,7 @@ OnigEncodingType OnigEncodingISO_8859_11 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_13.c b/ext/mbstring/oniguruma/src/iso8859_13.c
index d1f39a24d6..9585355c78 100644
--- a/ext/mbstring/oniguruma/src/iso8859_13.c
+++ b/ext/mbstring/oniguruma/src/iso8859_13.c
@@ -2,7 +2,7 @@
iso8859_13.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -227,5 +227,7 @@ OnigEncodingType OnigEncodingISO_8859_13 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_14.c b/ext/mbstring/oniguruma/src/iso8859_14.c
index 3361b0db40..83fc551747 100644
--- a/ext/mbstring/oniguruma/src/iso8859_14.c
+++ b/ext/mbstring/oniguruma/src/iso8859_14.c
@@ -2,7 +2,7 @@
iso8859_14.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -240,5 +240,7 @@ OnigEncodingType OnigEncodingISO_8859_14 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_15.c b/ext/mbstring/oniguruma/src/iso8859_15.c
index b09e876171..3a7ad0578f 100644
--- a/ext/mbstring/oniguruma/src/iso8859_15.c
+++ b/ext/mbstring/oniguruma/src/iso8859_15.c
@@ -2,7 +2,7 @@
iso8859_15.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -234,5 +234,7 @@ OnigEncodingType OnigEncodingISO_8859_15 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_16.c b/ext/mbstring/oniguruma/src/iso8859_16.c
index 29a350ddbe..02022d9999 100644
--- a/ext/mbstring/oniguruma/src/iso8859_16.c
+++ b/ext/mbstring/oniguruma/src/iso8859_16.c
@@ -2,7 +2,7 @@
iso8859_16.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -236,5 +236,7 @@ OnigEncodingType OnigEncodingISO_8859_16 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_2.c b/ext/mbstring/oniguruma/src/iso8859_2.c
index 9eb35365fc..ecdbb99174 100644
--- a/ext/mbstring/oniguruma/src/iso8859_2.c
+++ b/ext/mbstring/oniguruma/src/iso8859_2.c
@@ -2,7 +2,7 @@
iso8859_2.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -234,5 +234,7 @@ OnigEncodingType OnigEncodingISO_8859_2 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_3.c b/ext/mbstring/oniguruma/src/iso8859_3.c
index 862823a219..739f1c9b8c 100644
--- a/ext/mbstring/oniguruma/src/iso8859_3.c
+++ b/ext/mbstring/oniguruma/src/iso8859_3.c
@@ -2,7 +2,7 @@
iso8859_3.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -234,5 +234,7 @@ OnigEncodingType OnigEncodingISO_8859_3 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_4.c b/ext/mbstring/oniguruma/src/iso8859_4.c
index db706da23c..4f2b6a029a 100644
--- a/ext/mbstring/oniguruma/src/iso8859_4.c
+++ b/ext/mbstring/oniguruma/src/iso8859_4.c
@@ -2,7 +2,7 @@
iso8859_4.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -236,5 +236,7 @@ OnigEncodingType OnigEncodingISO_8859_4 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_5.c b/ext/mbstring/oniguruma/src/iso8859_5.c
index 0e03e9cb81..cf41061e03 100644
--- a/ext/mbstring/oniguruma/src/iso8859_5.c
+++ b/ext/mbstring/oniguruma/src/iso8859_5.c
@@ -2,7 +2,7 @@
iso8859_5.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -225,5 +225,7 @@ OnigEncodingType OnigEncodingISO_8859_5 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_6.c b/ext/mbstring/oniguruma/src/iso8859_6.c
index 6289af5cfd..1ffe99f71a 100644
--- a/ext/mbstring/oniguruma/src/iso8859_6.c
+++ b/ext/mbstring/oniguruma/src/iso8859_6.c
@@ -2,7 +2,7 @@
iso8859_6.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,5 +95,7 @@ OnigEncodingType OnigEncodingISO_8859_6 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_7.c b/ext/mbstring/oniguruma/src/iso8859_7.c
index 75b520f552..87288c2404 100644
--- a/ext/mbstring/oniguruma/src/iso8859_7.c
+++ b/ext/mbstring/oniguruma/src/iso8859_7.c
@@ -2,7 +2,7 @@
iso8859_7.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -221,5 +221,7 @@ OnigEncodingType OnigEncodingISO_8859_7 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_8.c b/ext/mbstring/oniguruma/src/iso8859_8.c
index 5f18345e61..8f162a4f72 100644
--- a/ext/mbstring/oniguruma/src/iso8859_8.c
+++ b/ext/mbstring/oniguruma/src/iso8859_8.c
@@ -2,7 +2,7 @@
iso8859_8.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,5 +95,7 @@ OnigEncodingType OnigEncodingISO_8859_8 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/iso8859_9.c b/ext/mbstring/oniguruma/src/iso8859_9.c
index d0c06bb9aa..52589cf1b6 100644
--- a/ext/mbstring/oniguruma/src/iso8859_9.c
+++ b/ext/mbstring/oniguruma/src/iso8859_9.c
@@ -2,7 +2,7 @@
iso8859_9.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -227,5 +227,7 @@ OnigEncodingType OnigEncodingISO_8859_9 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/koi8.c b/ext/mbstring/oniguruma/src/koi8.c
index 80f89e93a5..9fb2ee5e6b 100644
--- a/ext/mbstring/oniguruma/src/koi8.c
+++ b/ext/mbstring/oniguruma/src/koi8.c
@@ -2,7 +2,7 @@
koi8.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -249,5 +249,7 @@ OnigEncodingType OnigEncodingKOI8 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/koi8_r.c b/ext/mbstring/oniguruma/src/koi8_r.c
index f8ef34fd46..8adc399a91 100644
--- a/ext/mbstring/oniguruma/src/koi8_r.c
+++ b/ext/mbstring/oniguruma/src/koi8_r.c
@@ -2,7 +2,7 @@
koi8_r.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -211,5 +211,7 @@ OnigEncodingType OnigEncodingKOI8_R = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- onigenc_always_true_is_valid_mbc_string
+ onigenc_always_true_is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/onig_init.c b/ext/mbstring/oniguruma/src/onig_init.c
index 9f535685cd..7ad98b7cf8 100644
--- a/ext/mbstring/oniguruma/src/onig_init.c
+++ b/ext/mbstring/oniguruma/src/onig_init.c
@@ -2,7 +2,7 @@
onig_init.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2016-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*/
-#include "oniguruma.h"
+#include "regint.h"
/* onig_init(): deprecated function */
extern int
diff --git a/ext/mbstring/oniguruma/src/oniggnu.h b/ext/mbstring/oniguruma/src/oniggnu.h
index 3da9f235c2..d688883d49 100644
--- a/ext/mbstring/oniguruma/src/oniggnu.h
+++ b/ext/mbstring/oniguruma/src/oniggnu.h
@@ -35,10 +35,12 @@
extern "C" {
#endif
-#define RE_MBCTYPE_ASCII 0
-#define RE_MBCTYPE_EUC 1
-#define RE_MBCTYPE_SJIS 2
-#define RE_MBCTYPE_UTF8 3
+enum {
+ RE_MBCTYPE_ASCII = 0,
+ RE_MBCTYPE_EUC = 1,
+ RE_MBCTYPE_SJIS = 2,
+ RE_MBCTYPE_UTF8 = 3
+};
/* GNU regex options */
#ifndef RE_NREGS
diff --git a/ext/mbstring/oniguruma/src/onigposix.h b/ext/mbstring/oniguruma/src/onigposix.h
index 2af371751c..da0f9195cb 100644
--- a/ext/mbstring/oniguruma/src/onigposix.h
+++ b/ext/mbstring/oniguruma/src/onigposix.h
@@ -4,7 +4,7 @@
onigposix.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2005 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -97,7 +97,7 @@ typedef struct {
#ifndef ONIG_EXTERN
#if defined(_WIN32) && !defined(__GNUC__)
-#if defined(EXPORT)
+#if defined(ONIGURUMA_EXPORT)
#define ONIG_EXTERN extern __declspec(dllexport)
#else
#define ONIG_EXTERN extern __declspec(dllimport)
@@ -128,6 +128,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;
ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
+ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma;
/* predefined syntaxes (see regsyntax.c) */
#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
@@ -138,6 +139,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
+#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma)
/* default syntax */
#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
@@ -147,6 +149,7 @@ ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax));
ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));
ONIG_EXTERN const char* onig_version P_((void));
ONIG_EXTERN const char* onig_copyright P_((void));
+ONIG_EXTERN int onig_end P_((void));
#endif /* ONIGURUMA_H */
diff --git a/ext/mbstring/oniguruma/src/oniguruma.h b/ext/mbstring/oniguruma/src/oniguruma.h
index 02d425421e..ab917c623f 100644
--- a/ext/mbstring/oniguruma/src/oniguruma.h
+++ b/ext/mbstring/oniguruma/src/oniguruma.h
@@ -4,7 +4,7 @@
oniguruma.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -35,30 +35,10 @@ extern "C" {
#define ONIGURUMA
#define ONIGURUMA_VERSION_MAJOR 6
-#define ONIGURUMA_VERSION_MINOR 3
+#define ONIGURUMA_VERSION_MINOR 9
#define ONIGURUMA_VERSION_TEENY 0
-#ifdef __cplusplus
-# ifndef HAVE_PROTOTYPES
-# define HAVE_PROTOTYPES 1
-# endif
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */
-#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
-
-#ifdef HAVE_STDARG_H
-# ifndef HAVE_STDARG_PROTOTYPES
-# define HAVE_STDARG_PROTOTYPES 1
-# endif
-#endif
+#define ONIGURUMA_VERSION_INT 60900
#ifndef P_
#if defined(__STDC__) || defined(_WIN32)
@@ -69,16 +49,12 @@ extern "C" {
#endif
#ifndef PV_
-#ifdef HAVE_STDARG_PROTOTYPES
# define PV_(args) args
-#else
-# define PV_(args) ()
-#endif
#endif
#ifndef ONIG_EXTERN
#if defined(_WIN32) && !defined(__GNUC__)
-#if defined(EXPORT) || defined(RUBY_EXPORT)
+#if defined(ONIGURUMA_EXPORT)
#define ONIG_EXTERN extern __declspec(dllexport)
#else
#define ONIG_EXTERN extern __declspec(dllimport)
@@ -96,10 +72,6 @@ extern "C" {
#define UChar OnigUChar
#endif
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
typedef unsigned int OnigCodePoint;
typedef unsigned char OnigUChar;
typedef unsigned int OnigCtype;
@@ -143,7 +115,7 @@ typedef struct {
OnigCodePoint one_or_more_time;
OnigCodePoint anychar_anytime;
} OnigMetaCharTableType;
-
+
typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
typedef struct OnigEncodingTypeST {
@@ -166,6 +138,9 @@ typedef struct OnigEncodingTypeST {
int (*init)(void);
int (*is_initialized)(void);
int (*is_valid_mbc_string)(const OnigUChar* s, const OnigUChar* end);
+ unsigned int flag;
+ OnigCodePoint sb_range;
+ int index;
} OnigEncodingType;
typedef OnigEncodingType* OnigEncoding;
@@ -243,21 +218,24 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
/* 18: 6(max-byte) * 3(case-fold chars) */
/* character types */
-#define ONIGENC_CTYPE_NEWLINE 0
-#define ONIGENC_CTYPE_ALPHA 1
-#define ONIGENC_CTYPE_BLANK 2
-#define ONIGENC_CTYPE_CNTRL 3
-#define ONIGENC_CTYPE_DIGIT 4
-#define ONIGENC_CTYPE_GRAPH 5
-#define ONIGENC_CTYPE_LOWER 6
-#define ONIGENC_CTYPE_PRINT 7
-#define ONIGENC_CTYPE_PUNCT 8
-#define ONIGENC_CTYPE_SPACE 9
-#define ONIGENC_CTYPE_UPPER 10
-#define ONIGENC_CTYPE_XDIGIT 11
-#define ONIGENC_CTYPE_WORD 12
-#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */
-#define ONIGENC_CTYPE_ASCII 14
+typedef enum {
+ ONIGENC_CTYPE_NEWLINE = 0,
+ ONIGENC_CTYPE_ALPHA = 1,
+ ONIGENC_CTYPE_BLANK = 2,
+ ONIGENC_CTYPE_CNTRL = 3,
+ ONIGENC_CTYPE_DIGIT = 4,
+ ONIGENC_CTYPE_GRAPH = 5,
+ ONIGENC_CTYPE_LOWER = 6,
+ ONIGENC_CTYPE_PRINT = 7,
+ ONIGENC_CTYPE_PUNCT = 8,
+ ONIGENC_CTYPE_SPACE = 9,
+ ONIGENC_CTYPE_UPPER = 10,
+ ONIGENC_CTYPE_XDIGIT = 11,
+ ONIGENC_CTYPE_WORD = 12,
+ ONIGENC_CTYPE_ALNUM = 13, /* alpha || digit */
+ ONIGENC_CTYPE_ASCII = 14
+} OnigEncCtype;
+
#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII
@@ -270,7 +248,7 @@ ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;
#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128)
#define ONIGENC_IS_MBC_WORD(enc,s,end) \
ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
-
+#define ONIGENC_IS_MBC_WORD_ASCII(enc,s,end) onigenc_is_mbc_word_ascii(enc,s,end)
#define ONIGENC_NAME(enc) ((enc)->name)
@@ -365,7 +343,8 @@ ONIG_EXTERN
int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p));
ONIG_EXTERN
int onigenc_is_valid_mbc_string P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end));
-
+ONIG_EXTERN
+OnigUChar* onigenc_strdup P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end));
/* PART: regular expression */
@@ -385,6 +364,7 @@ typedef unsigned int OnigOptionType;
/* options */
#define ONIG_OPTION_NONE 0U
+/* options (compile time) */
#define ONIG_OPTION_IGNORECASE 1U
#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
@@ -395,11 +375,18 @@ typedef unsigned int OnigOptionType;
#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
/* options (search time) */
-#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
-#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
-#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
-#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_CHECK_VALIDITY_OF_STRING /* limit */
+#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
+#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
+#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
+#define ONIG_OPTION_CHECK_VALIDITY_OF_STRING (ONIG_OPTION_POSIX_REGION << 1)
+/* #define ONIG_OPTION_CRLF_AS_LINE_SEPARATOR (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 1) */
+/* options (compile time) */
+#define ONIG_OPTION_WORD_IS_ASCII (ONIG_OPTION_CHECK_VALIDITY_OF_STRING << 4)
+#define ONIG_OPTION_DIGIT_IS_ASCII (ONIG_OPTION_WORD_IS_ASCII << 1)
+#define ONIG_OPTION_SPACE_IS_ASCII (ONIG_OPTION_DIGIT_IS_ASCII << 1)
+#define ONIG_OPTION_POSIX_IS_ASCII (ONIG_OPTION_SPACE_IS_ASCII << 1)
+
+#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_IS_ASCII /* limit */
#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
@@ -424,6 +411,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;
ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;
ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG;
ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
+ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma;
/* predefined syntaxes (see regsyntax.c) */
#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
@@ -436,6 +424,7 @@ ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;
#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
#define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG)
#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
+#define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma)
/* default syntax */
ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
@@ -496,6 +485,15 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */
#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */
#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */
+#define ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (1U<<21) /* (?(n)) (?(...)...|...) */
+#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<22) /* \K */
+#define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */
+#define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */
+#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */
+#define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */
+#define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */
+#define ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (1U<<28) /* (?{...}) (?{{...}}) */
+#define ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (1U<<29) /* (*name) (*name{a,..}) */
/* syntax (behavior) */
#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */
@@ -535,6 +533,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_NORMAL 0
#define ONIG_MISMATCH -1
#define ONIG_NO_SUPPORT_CONFIG -2
+#define ONIG_ABORT -3
/* internal error */
#define ONIGERR_MEMORY -5
@@ -545,11 +544,12 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_UNEXPECTED_BYTECODE -14
#define ONIGERR_MATCH_STACK_LIMIT_OVER -15
#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
+#define ONIGERR_RETRY_LIMIT_IN_MATCH_OVER -17
#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21
#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
#define ONIGERR_FAIL_TO_INITIALIZE -23
/* general error */
-#define ONIGERR_INVALID_ARGUMENT -30
+#define ONIGERR_INVALID_ARGUMENT -30
/* syntax error */
#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100
#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101
@@ -596,6 +596,15 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_NEVER_ENDING_RECURSION -221
#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
+#define ONIGERR_INVALID_IF_ELSE_SYNTAX -224
+#define ONIGERR_INVALID_ABSENT_GROUP_PATTERN -225
+#define ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN -226
+#define ONIGERR_INVALID_CALLOUT_PATTERN -227
+#define ONIGERR_INVALID_CALLOUT_NAME -228
+#define ONIGERR_UNDEFINED_CALLOUT_NAME -229
+#define ONIGERR_INVALID_CALLOUT_BODY -230
+#define ONIGERR_INVALID_CALLOUT_TAG_NAME -231
+#define ONIGERR_INVALID_CALLOUT_ARG -232
#define ONIGERR_INVALID_CODE_POINT_VALUE -400
#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
@@ -609,7 +618,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax;
/* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */
-/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */
+/* must be smaller than MEM_STATUS_BITS_NUM (unsigned int * 8) */
#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31
#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \
((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])
@@ -661,49 +670,8 @@ extern void onig_null_warn P_((const char* s));
#define ONIG_CHAR_TABLE_SIZE 256
-typedef struct re_pattern_buffer {
- /* common members of BBuf(bytes-buffer) */
- unsigned char* p; /* compiled pattern */
- unsigned int used; /* used space for p */
- unsigned int alloc; /* allocated space for p */
-
- int num_mem; /* used memory(...) num counted from 1 */
- int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */
- int num_null_check; /* OP_NULL_CHECK_START/END id counter */
- int num_comb_exp_check; /* combination explosion check */
- int num_call; /* number of subexp call */
- unsigned int capture_history; /* (?@...) flag (1-31) */
- unsigned int bt_mem_start; /* need backtrack flag */
- unsigned int bt_mem_end; /* need backtrack flag */
- int stack_pop_level;
- int repeat_range_alloc;
- OnigRepeatRange* repeat_range;
-
- OnigEncoding enc;
- OnigOptionType options;
- OnigSyntaxType* syntax;
- OnigCaseFoldType case_fold_flag;
- void* name_table;
-
- /* optimization info (string search, char-map and anchors) */
- int optimize; /* optimize flag */
- int threshold_len; /* search str-length for apply optimize */
- int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */
- OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */
- OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */
- int sub_anchor; /* start-anchor for exact or map */
- unsigned char *exact;
- unsigned char *exact_end;
- unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */
- int *int_map; /* BM skip for exact_len > 255 */
- int *int_map_backward; /* BM skip for backward search */
- OnigLen dmin; /* min-distance of exact or map */
- OnigLen dmax; /* max-distance of exact or map */
-
- /* regex_t link chain */
- struct re_pattern_buffer* chain; /* escape compile-conflict */
-} OnigRegexType;
-
+struct re_pattern_buffer;
+typedef struct re_pattern_buffer OnigRegexType;
typedef OnigRegexType* OnigRegex;
#ifndef ONIG_ESCAPE_REGEX_T_COLLISION
@@ -720,10 +688,74 @@ typedef struct {
OnigCaseFoldType case_fold_flag;
} OnigCompileInfo;
+
+/* types for callout */
+typedef enum {
+ ONIG_CALLOUT_IN_PROGRESS = 1, /* 1<<0 */
+ ONIG_CALLOUT_IN_RETRACTION = 2 /* 1<<1 */
+} OnigCalloutIn;
+
+#define ONIG_CALLOUT_IN_BOTH (ONIG_CALLOUT_IN_PROGRESS | ONIG_CALLOUT_IN_RETRACTION)
+
+typedef enum {
+ ONIG_CALLOUT_OF_CONTENTS = 0,
+ ONIG_CALLOUT_OF_NAME = 1
+} OnigCalloutOf;
+
+typedef enum {
+ ONIG_CALLOUT_TYPE_SINGLE = 0,
+ ONIG_CALLOUT_TYPE_START_CALL = 1,
+ ONIG_CALLOUT_TYPE_BOTH_CALL = 2,
+ ONIG_CALLOUT_TYPE_START_MARK_END_CALL = 3,
+} OnigCalloutType;
+
+
+#define ONIG_NON_NAME_ID -1
+#define ONIG_NON_CALLOUT_NUM 0
+
+#define ONIG_CALLOUT_MAX_ARGS_NUM 4
+#define ONIG_CALLOUT_DATA_SLOT_NUM 5
+
+struct OnigCalloutArgsStruct;
+typedef struct OnigCalloutArgsStruct OnigCalloutArgs;
+
+typedef int (*OnigCalloutFunc)(OnigCalloutArgs* args, void* user_data);
+
+/* callout function return values (less than -1: error code) */
+typedef enum {
+ ONIG_CALLOUT_FAIL = 1,
+ ONIG_CALLOUT_SUCCESS = 0
+} OnigCalloutResult;
+
+typedef enum {
+ ONIG_TYPE_VOID = 0,
+ ONIG_TYPE_LONG = 1<<0,
+ ONIG_TYPE_CHAR = 1<<1,
+ ONIG_TYPE_STRING = 1<<2,
+ ONIG_TYPE_POINTER = 1<<3,
+ ONIG_TYPE_TAG = 1<<4,
+} OnigType;
+
+typedef union {
+ long l;
+ OnigCodePoint c;
+ struct {
+ OnigUChar* start;
+ OnigUChar* end;
+ } s;
+ void* p;
+ int tag; /* tag -> callout_num */
+} OnigValue;
+
+
+struct OnigMatchParamStruct;
+typedef struct OnigMatchParamStruct OnigMatchParam;
+
+
/* Oniguruma Native API */
ONIG_EXTERN
-int onig_initialize P_((OnigEncoding encodings[], int n));
+int onig_initialize P_((OnigEncoding encodings[], int number_of_encodings));
/* onig_init(): deprecated function. Use onig_initialize(). */
ONIG_EXTERN
int onig_init P_((void));
@@ -736,7 +768,7 @@ void onig_set_verb_warn_func P_((OnigWarnFunc f));
ONIG_EXTERN
int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
ONIG_EXTERN
-int onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax));
+int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax));
int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
ONIG_EXTERN
int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));
@@ -745,12 +777,16 @@ void onig_free P_((OnigRegex));
ONIG_EXTERN
void onig_free_body P_((OnigRegex));
ONIG_EXTERN
-int onig_scan(regex_t* reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg);
+int onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg);
ONIG_EXTERN
int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
ONIG_EXTERN
+int onig_search_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
+ONIG_EXTERN
int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
ONIG_EXTERN
+int onig_match_with_param P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option, OnigMatchParam* mp));
+ONIG_EXTERN
OnigRegion* onig_region_new P_((void));
ONIG_EXTERN
void onig_region_init P_((OnigRegion* region));
@@ -823,6 +859,10 @@ unsigned int onig_get_match_stack_limit_size P_((void));
ONIG_EXTERN
int onig_set_match_stack_limit_size P_((unsigned int size));
ONIG_EXTERN
+unsigned long onig_get_retry_limit_in_match P_((void));
+ONIG_EXTERN
+int onig_set_retry_limit_in_match P_((unsigned long n));
+ONIG_EXTERN
unsigned int onig_get_parse_depth_limit P_((void));
ONIG_EXTERN
int onig_set_capture_num_limit P_((int num));
@@ -837,6 +877,123 @@ const char* onig_version P_((void));
ONIG_EXTERN
const char* onig_copyright P_((void));
+/* for OnigMatchParam */
+ONIG_EXTERN
+OnigMatchParam* onig_new_match_param P_((void));
+ONIG_EXTERN
+void onig_free_match_param P_((OnigMatchParam* p));
+ONIG_EXTERN
+void onig_free_match_param_content P_((OnigMatchParam* p));
+ONIG_EXTERN
+int onig_initialize_match_param P_((OnigMatchParam* mp));
+ONIG_EXTERN
+int onig_set_match_stack_limit_size_of_match_param P_((OnigMatchParam* param, unsigned int limit));
+ONIG_EXTERN
+int onig_set_retry_limit_in_match_of_match_param P_((OnigMatchParam* param, unsigned long limit));
+ONIG_EXTERN
+int onig_set_progress_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f));
+ONIG_EXTERN
+int onig_set_retraction_callout_of_match_param P_((OnigMatchParam* param, OnigCalloutFunc f));
+ONIG_EXTERN
+int onig_set_callout_user_data_of_match_param P_((OnigMatchParam* param, void* user_data));
+
+/* for callout functions */
+ONIG_EXTERN
+OnigCalloutFunc onig_get_progress_callout P_((void));
+ONIG_EXTERN
+int onig_set_progress_callout P_((OnigCalloutFunc f));
+ONIG_EXTERN
+OnigCalloutFunc onig_get_retraction_callout P_((void));
+ONIG_EXTERN
+int onig_set_retraction_callout P_((OnigCalloutFunc f));
+ONIG_EXTERN
+int onig_set_callout_of_name P_((OnigEncoding enc, OnigCalloutType type, OnigUChar* name, OnigUChar* name_end, int callout_in, OnigCalloutFunc callout, OnigCalloutFunc end_callout, int arg_num, unsigned int arg_types[], int optional_arg_num, OnigValue opt_defaults[]));
+ONIG_EXTERN
+OnigUChar* onig_get_callout_name_by_name_id P_((int id));
+ONIG_EXTERN
+int onig_get_callout_num_by_tag P_((OnigRegex reg, const OnigUChar* tag, const OnigUChar* tag_end));
+ONIG_EXTERN
+int onig_get_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_set_callout_data_by_tag P_((OnigRegex reg, OnigMatchParam* mp, const OnigUChar* tag, const OnigUChar* tag_end, int slot, OnigType type, OnigValue* val));
+
+/* used in callout functions */
+ONIG_EXTERN
+int onig_get_callout_num_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+OnigCalloutIn onig_get_callout_in_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+int onig_get_name_id_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_contents_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_contents_end_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+int onig_get_args_num_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+int onig_get_passed_args_num_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+int onig_get_arg_by_callout_args P_((OnigCalloutArgs* args, int index, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+const OnigUChar* onig_get_string_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_string_end_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_start_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_right_range_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+const OnigUChar* onig_get_current_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+OnigRegex onig_get_regex_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+unsigned long onig_get_retry_counter_by_callout_args P_((OnigCalloutArgs* args));
+ONIG_EXTERN
+int onig_callout_tag_is_exist_at_callout_num P_((OnigRegex reg, int callout_num));
+ONIG_EXTERN
+const OnigUChar* onig_get_callout_tag_start P_((OnigRegex reg, int callout_num));
+ONIG_EXTERN
+const OnigUChar* onig_get_callout_tag_end P_((OnigRegex reg, int callout_num));
+ONIG_EXTERN
+int onig_get_callout_data_dont_clear_old P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_get_callout_data_by_callout_args_self_dont_clear_old P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_get_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_get_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_get_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType* type, OnigValue* val));
+ONIG_EXTERN
+int onig_set_callout_data P_((OnigRegex reg, OnigMatchParam* mp, int callout_num, int slot, OnigType type, OnigValue* val));
+ONIG_EXTERN
+int onig_set_callout_data_by_callout_args P_((OnigCalloutArgs* args, int callout_num, int slot, OnigType type, OnigValue* val));
+ONIG_EXTERN
+int onig_set_callout_data_by_callout_args_self P_((OnigCalloutArgs* args, int slot, OnigType type, OnigValue* val));
+ONIG_EXTERN
+int onig_get_capture_range_in_callout P_((OnigCalloutArgs* args, int mem_num, int* begin, int* end));
+ONIG_EXTERN
+int onig_get_used_stack_size_in_callout P_((OnigCalloutArgs* args, int* used_num, int* used_bytes));
+
+/* builtin callout functions */
+ONIG_EXTERN
+int onig_builtin_fail P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_mismatch P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_error P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_count P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_total_count P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_max P_((OnigCalloutArgs* args, void* user_data));
+ONIG_EXTERN
+int onig_builtin_cmp P_((OnigCalloutArgs* args, void* user_data));
+
+ONIG_EXTERN
+int onig_setup_builtin_monitors_by_ascii_encoded_name P_((void* fp));
+
#ifdef __cplusplus
}
#endif
diff --git a/ext/mbstring/oniguruma/src/regcomp.c b/ext/mbstring/oniguruma/src/regcomp.c
index 3f4c95be6b..3ea28412a7 100644
--- a/ext/mbstring/oniguruma/src/regcomp.c
+++ b/ext/mbstring/oniguruma/src/regcomp.c
@@ -2,7 +2,7 @@
regcomp.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,6 +31,83 @@
OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN;
+#if 0
+typedef struct {
+ int n;
+ int alloc;
+ int* v;
+} int_stack;
+
+static int
+make_int_stack(int_stack** rs, int init_size)
+{
+ int_stack* s;
+ int* v;
+
+ *rs = 0;
+
+ s = xmalloc(sizeof(*s));
+ if (IS_NULL(s)) return ONIGERR_MEMORY;
+
+ v = (int* )xmalloc(sizeof(int) * init_size);
+ if (IS_NULL(v)) {
+ xfree(s);
+ return ONIGERR_MEMORY;
+ }
+
+ s->n = 0;
+ s->alloc = init_size;
+ s->v = v;
+
+ *rs = s;
+ return ONIG_NORMAL;
+}
+
+static void
+free_int_stack(int_stack* s)
+{
+ if (IS_NOT_NULL(s)) {
+ if (IS_NOT_NULL(s->v))
+ xfree(s->v);
+ xfree(s);
+ }
+}
+
+static int
+int_stack_push(int_stack* s, int v)
+{
+ if (s->n >= s->alloc) {
+ int new_size = s->alloc * 2;
+ int* nv = (int* )xrealloc(s->v, sizeof(int) * new_size);
+ if (IS_NULL(nv)) return ONIGERR_MEMORY;
+
+ s->alloc = new_size;
+ s->v = nv;
+ }
+
+ s->v[s->n] = v;
+ s->n++;
+ return ONIG_NORMAL;
+}
+
+static int
+int_stack_pop(int_stack* s)
+{
+ int v;
+
+#ifdef ONIG_DEBUG
+ if (s->n <= 0) {
+ fprintf(stderr, "int_stack_pop: fail empty. %p\n", s);
+ return 0;
+ }
+#endif
+
+ v = s->v[s->n];
+ s->n--;
+ return v;
+}
+#endif
+
extern OnigCaseFoldType
onig_get_default_case_fold_flag(void)
{
@@ -44,45 +121,48 @@ onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag)
return 0;
}
-
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
-static unsigned char PadBuf[WORD_ALIGNMENT_SIZE];
-#endif
-
-static UChar*
-str_dup(UChar* s, UChar* end)
+static int
+int_multiply_cmp(int x, int y, int v)
{
- int len = end - s;
+ if (x == 0 || y == 0) return -1;
- if (len > 0) {
- UChar* r = (UChar* )xmalloc(len + 1);
- CHECK_NULL_RETURN(r);
- xmemcpy(r, s, len);
- r[len] = (UChar )0;
- return r;
+ if (x < INT_MAX / y) {
+ int xy = x * y;
+ if (xy > v) return 1;
+ else {
+ if (xy == v) return 0;
+ else return -1;
+ }
}
- else return NULL;
+ else
+ return 1;
}
+
+#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
+static unsigned char PadBuf[WORD_ALIGNMENT_SIZE];
+#endif
+
static void
swap_node(Node* a, Node* b)
{
Node c;
+
c = *a; *a = *b; *b = c;
- if (NTYPE(a) == NT_STR) {
- StrNode* sn = NSTR(a);
+ if (NODE_TYPE(a) == NODE_STRING) {
+ StrNode* sn = STR_(a);
if (sn->capa == 0) {
- int len = sn->end - sn->s;
+ int len = (int )(sn->end - sn->s);
sn->s = sn->buf;
sn->end = sn->s + len;
}
}
- if (NTYPE(b) == NT_STR) {
- StrNode* sn = NSTR(b);
+ if (NODE_TYPE(b) == NODE_STRING) {
+ StrNode* sn = STR_(b);
if (sn->capa == 0) {
- int len = sn->end - sn->s;
+ int len = (int )(sn->end - sn->s);
sn->s = sn->buf;
sn->end = sn->s + len;
}
@@ -92,11 +172,11 @@ swap_node(Node* a, Node* b)
static OnigLen
distance_add(OnigLen d1, OnigLen d2)
{
- if (d1 == ONIG_INFINITE_DISTANCE || d2 == ONIG_INFINITE_DISTANCE)
- return ONIG_INFINITE_DISTANCE;
+ if (d1 == INFINITE_LEN || d2 == INFINITE_LEN)
+ return INFINITE_LEN;
else {
- if (d1 <= ONIG_INFINITE_DISTANCE - d2) return d1 + d2;
- else return ONIG_INFINITE_DISTANCE;
+ if (d1 <= INFINITE_LEN - d2) return d1 + d2;
+ else return INFINITE_LEN;
}
}
@@ -105,36 +185,23 @@ distance_multiply(OnigLen d, int m)
{
if (m == 0) return 0;
- if (d < ONIG_INFINITE_DISTANCE / m)
+ if (d < INFINITE_LEN / m)
return d * m;
else
- return ONIG_INFINITE_DISTANCE;
+ return INFINITE_LEN;
}
static int
bitset_is_empty(BitSetRef bs)
{
int i;
+
for (i = 0; i < (int )BITSET_SIZE; i++) {
if (bs[i] != 0) return 0;
}
return 1;
}
-#ifdef ONIG_DEBUG
-static int
-bitset_on_num(BitSetRef bs)
-{
- int i, n;
-
- n = 0;
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
- if (BITSET_AT(bs, i)) n++;
- }
- return n;
-}
-#endif
-
extern int
onig_bbuf_init(BBuf* buf, int size)
{
@@ -153,74 +220,62 @@ onig_bbuf_init(BBuf* buf, int size)
}
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
static int
-unset_addr_list_init(UnsetAddrList* uslist, int size)
+unset_addr_list_init(UnsetAddrList* list, int size)
{
- UnsetAddr* p;
-
- p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size);
+ UnsetAddr* p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size);
CHECK_NULL_RETURN_MEMERR(p);
- uslist->num = 0;
- uslist->alloc = size;
- uslist->us = p;
+
+ list->num = 0;
+ list->alloc = size;
+ list->us = p;
return 0;
}
static void
-unset_addr_list_end(UnsetAddrList* uslist)
+unset_addr_list_end(UnsetAddrList* list)
{
- if (IS_NOT_NULL(uslist->us))
- xfree(uslist->us);
+ if (IS_NOT_NULL(list->us))
+ xfree(list->us);
}
static int
-unset_addr_list_add(UnsetAddrList* uslist, int offset, struct _Node* node)
+unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node)
{
UnsetAddr* p;
int size;
- if (uslist->num >= uslist->alloc) {
- size = uslist->alloc * 2;
- p = (UnsetAddr* )xrealloc(uslist->us, sizeof(UnsetAddr) * size);
+ if (list->num >= list->alloc) {
+ size = list->alloc * 2;
+ p = (UnsetAddr* )xrealloc(list->us, sizeof(UnsetAddr) * size);
CHECK_NULL_RETURN_MEMERR(p);
- uslist->alloc = size;
- uslist->us = p;
+ list->alloc = size;
+ list->us = p;
}
- uslist->us[uslist->num].offset = offset;
- uslist->us[uslist->num].target = node;
- uslist->num++;
+ list->us[list->num].offset = offset;
+ list->us[list->num].target = node;
+ list->num++;
return 0;
}
-#endif /* USE_SUBEXP_CALL */
+#endif /* USE_CALL */
static int
add_opcode(regex_t* reg, int opcode)
{
- BBUF_ADD1(reg, opcode);
- return 0;
-}
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-static int
-add_state_check_num(regex_t* reg, int num)
-{
- StateCheckNumType n = (StateCheckNumType )num;
-
- BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM);
+ BB_ADD1(reg, opcode);
return 0;
}
-#endif
static int
add_rel_addr(regex_t* reg, int addr)
{
RelAddrType ra = (RelAddrType )addr;
- BBUF_ADD(reg, &ra, SIZE_RELADDR);
+ BB_ADD(reg, &ra, SIZE_RELADDR);
return 0;
}
@@ -229,7 +284,7 @@ add_abs_addr(regex_t* reg, int addr)
{
AbsAddrType ra = (AbsAddrType )addr;
- BBUF_ADD(reg, &ra, SIZE_ABSADDR);
+ BB_ADD(reg, &ra, SIZE_ABSADDR);
return 0;
}
@@ -238,7 +293,7 @@ add_length(regex_t* reg, int len)
{
LengthType l = (LengthType )len;
- BBUF_ADD(reg, &l, SIZE_LENGTH);
+ BB_ADD(reg, &l, SIZE_LENGTH);
return 0;
}
@@ -247,64 +302,80 @@ add_mem_num(regex_t* reg, int num)
{
MemNumType n = (MemNumType )num;
- BBUF_ADD(reg, &n, SIZE_MEMNUM);
+ BB_ADD(reg, &n, SIZE_MEMNUM);
return 0;
}
+#if 0
static int
add_pointer(regex_t* reg, void* addr)
{
PointerType ptr = (PointerType )addr;
- BBUF_ADD(reg, &ptr, SIZE_POINTER);
+ BB_ADD(reg, &ptr, SIZE_POINTER);
return 0;
}
+#endif
static int
add_option(regex_t* reg, OnigOptionType option)
{
- BBUF_ADD(reg, &option, SIZE_OPTION);
+ BB_ADD(reg, &option, SIZE_OPTION);
return 0;
}
static int
-add_opcode_rel_addr(regex_t* reg, int opcode, int addr)
+add_save_type(regex_t* reg, enum SaveType type)
{
- int r;
+ SaveType t = (SaveType )type;
- r = add_opcode(reg, opcode);
- if (r) return r;
- r = add_rel_addr(reg, addr);
- return r;
+ BB_ADD(reg, &t, SIZE_SAVE_TYPE);
+ return 0;
}
static int
-add_bytes(regex_t* reg, UChar* bytes, int len)
+add_update_var_type(regex_t* reg, enum UpdateVarType type)
{
- BBUF_ADD(reg, bytes, len);
+ UpdateVarType t = (UpdateVarType )type;
+
+ BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE);
return 0;
}
static int
-add_bitset(regex_t* reg, BitSetRef bs)
+add_mode(regex_t* reg, ModeType mode)
{
- BBUF_ADD(reg, bs, SIZE_BITSET);
+ BB_ADD(reg, &mode, SIZE_MODE);
return 0;
}
static int
-add_opcode_option(regex_t* reg, int opcode, OnigOptionType option)
+add_opcode_rel_addr(regex_t* reg, int opcode, int addr)
{
int r;
r = add_opcode(reg, opcode);
- if (r) return r;
- r = add_option(reg, option);
+ if (r != 0) return r;
+ r = add_rel_addr(reg, addr);
return r;
}
+static int
+add_bytes(regex_t* reg, UChar* bytes, int len)
+{
+ BB_ADD(reg, bytes, len);
+ return 0;
+}
+
+static int
+add_bitset(regex_t* reg, BitSetRef bs)
+{
+ BB_ADD(reg, bs, SIZE_BITSET);
+ return 0;
+}
+
static int compile_length_tree(Node* node, regex_t* reg);
-static int compile_tree(Node* node, regex_t* reg);
+static int compile_tree(Node* node, regex_t* reg, ScanEnv* env);
#define IS_NEED_STR_LEN_OP_EXACT(op) \
@@ -357,60 +428,60 @@ select_str_opcode(int mb_len, int str_len, int ignore_case)
}
static int
-compile_tree_empty_check(Node* node, regex_t* reg, int empty_info)
+compile_tree_empty_check(Node* node, regex_t* reg, int empty_info, ScanEnv* env)
{
int r;
int saved_num_null_check = reg->num_null_check;
- if (empty_info != 0) {
- r = add_opcode(reg, OP_NULL_CHECK_START);
- if (r) return r;
+ if (empty_info != QUANT_BODY_IS_NOT_EMPTY) {
+ r = add_opcode(reg, OP_EMPTY_CHECK_START);
+ if (r != 0) return r;
r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */
- if (r) return r;
+ if (r != 0) return r;
reg->num_null_check++;
}
- r = compile_tree(node, reg);
- if (r) return r;
+ r = compile_tree(node, reg, env);
+ if (r != 0) return r;
- if (empty_info != 0) {
- if (empty_info == NQ_TARGET_IS_EMPTY)
- r = add_opcode(reg, OP_NULL_CHECK_END);
- else if (empty_info == NQ_TARGET_IS_EMPTY_MEM)
- r = add_opcode(reg, OP_NULL_CHECK_END_MEMST);
- else if (empty_info == NQ_TARGET_IS_EMPTY_REC)
- r = add_opcode(reg, OP_NULL_CHECK_END_MEMST_PUSH);
+ if (empty_info != QUANT_BODY_IS_NOT_EMPTY) {
+ if (empty_info == QUANT_BODY_IS_EMPTY)
+ r = add_opcode(reg, OP_EMPTY_CHECK_END);
+ else if (empty_info == QUANT_BODY_IS_EMPTY_MEM)
+ r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST);
+ else if (empty_info == QUANT_BODY_IS_EMPTY_REC)
+ r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST_PUSH);
- if (r) return r;
+ if (r != 0) return r;
r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */
}
return r;
}
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
static int
-compile_call(CallNode* node, regex_t* reg)
+compile_call(CallNode* node, regex_t* reg, ScanEnv* env)
{
int r;
r = add_opcode(reg, OP_CALL);
- if (r) return r;
- r = unset_addr_list_add(node->unset_addr_list, BBUF_GET_OFFSET_POS(reg),
- node->target);
- if (r) return r;
+ if (r != 0) return r;
+ r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg),
+ NODE_CALL_BODY(node));
+ if (r != 0) return r;
r = add_abs_addr(reg, 0 /*dummy addr.*/);
return r;
}
#endif
static int
-compile_tree_n_times(Node* node, int n, regex_t* reg)
+compile_tree_n_times(Node* node, int n, regex_t* reg, ScanEnv* env)
{
int i, r;
for (i = 0; i < n; i++) {
- r = compile_tree(node, reg);
- if (r) return r;
+ r = compile_tree(node, reg, env);
+ if (r != 0) return r;
}
return 0;
}
@@ -458,15 +529,15 @@ static int
compile_length_string_node(Node* node, regex_t* reg)
{
int rlen, r, len, prev_len, slen, ambig;
- OnigEncoding enc = reg->enc;
UChar *p, *prev;
StrNode* sn;
+ OnigEncoding enc = reg->enc;
- sn = NSTR(node);
+ sn = STR_(node);
if (sn->end <= sn->s)
return 0;
- ambig = NSTRING_IS_AMBIG(node);
+ ambig = NODE_STRING_IS_AMBIG(node);
p = prev = sn->s;
SAFE_ENC_LEN(enc, p, sn->end, prev_len);
@@ -488,6 +559,7 @@ compile_length_string_node(Node* node, regex_t* reg)
}
p += len;
}
+
r = add_compile_string_length(prev, prev_len, slen, reg, ambig);
rlen += r;
return rlen;
@@ -499,23 +571,24 @@ compile_length_string_raw_node(StrNode* sn, regex_t* reg)
if (sn->end <= sn->s)
return 0;
- return add_compile_string_length(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0);
+ return add_compile_string_length(sn->s, 1 /* sb */, (int )(sn->end - sn->s),
+ reg, 0);
}
static int
compile_string_node(Node* node, regex_t* reg)
{
int r, len, prev_len, slen, ambig;
- OnigEncoding enc = reg->enc;
UChar *p, *prev, *end;
StrNode* sn;
+ OnigEncoding enc = reg->enc;
- sn = NSTR(node);
+ sn = STR_(node);
if (sn->end <= sn->s)
return 0;
end = sn->end;
- ambig = NSTRING_IS_AMBIG(node);
+ ambig = NODE_STRING_IS_AMBIG(node);
p = prev = sn->s;
SAFE_ENC_LEN(enc, p, end, prev_len);
@@ -529,7 +602,7 @@ compile_string_node(Node* node, regex_t* reg)
}
else {
r = add_compile_string(prev, prev_len, slen, reg, ambig);
- if (r) return r;
+ if (r != 0) return r;
prev = p;
slen = 1;
@@ -538,6 +611,7 @@ compile_string_node(Node* node, regex_t* reg)
p += len;
}
+
return add_compile_string(prev, prev_len, slen, reg, ambig);
}
@@ -547,7 +621,7 @@ compile_string_raw_node(StrNode* sn, regex_t* reg)
if (sn->end <= sn->s)
return 0;
- return add_compile_string(sn->s, 1 /* sb */, sn->end - sn->s, reg, 0);
+ return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0);
}
static int
@@ -558,7 +632,7 @@ add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)
return add_bytes(reg, mbuf->p, mbuf->used);
#else
int r, pad_size;
- UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
+ UChar* p = BB_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;
GET_ALIGNMENT_PAD_SIZE(p, pad_size);
add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1));
@@ -578,11 +652,6 @@ compile_length_cclass_node(CClassNode* cc, regex_t* reg)
{
int len;
- if (IS_NCCLASS_SHARE(cc)) {
- len = SIZE_OPCODE + SIZE_POINTER;
- return len;
- }
-
if (IS_NULL(cc->mbuf)) {
len = SIZE_OPCODE + SIZE_BITSET;
}
@@ -608,12 +677,6 @@ compile_cclass_node(CClassNode* cc, regex_t* reg)
{
int r;
- if (IS_NCCLASS_SHARE(cc)) {
- add_opcode(reg, OP_CCLASS_NODE);
- r = add_pointer(reg, cc);
- return r;
- }
-
if (IS_NULL(cc->mbuf)) {
if (IS_NCCLASS_NOT(cc))
add_opcode(reg, OP_CCLASS_NOT);
@@ -638,7 +701,7 @@ compile_cclass_node(CClassNode* cc, regex_t* reg)
add_opcode(reg, OP_CCLASS_MIX);
r = add_bitset(reg, cc->bs);
- if (r) return r;
+ if (r != 0) return r;
r = add_multi_byte_cclass(cc->mbuf, reg);
}
}
@@ -678,46 +741,46 @@ entry_repeat_range(regex_t* reg, int id, int lower, int upper)
}
static int
-compile_range_repeat_node(QtfrNode* qn, int target_len, int empty_info,
- regex_t* reg)
+compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info,
+ regex_t* reg, ScanEnv* env)
{
int r;
int num_repeat = reg->num_repeat;
r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG);
- if (r) return r;
+ if (r != 0) return r;
r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */
reg->num_repeat++;
- if (r) return r;
+ if (r != 0) return r;
r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC);
- if (r) return r;
+ if (r != 0) return r;
r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper);
- if (r) return r;
+ if (r != 0) return r;
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ if (r != 0) return r;
if (
-#ifdef USE_SUBEXP_CALL
- reg->num_call > 0 ||
+#ifdef USE_CALL
+ NODE_IS_IN_MULTI_ENTRY(qn) ||
#endif
- IS_QUANTIFIER_IN_REPEAT(qn)) {
+ NODE_IS_IN_REAL_REPEAT(qn)) {
r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG);
}
else {
r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG);
}
- if (r) return r;
+ if (r != 0) return r;
r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */
return r;
}
static int
-is_anychar_star_quantifier(QtfrNode* qn)
+is_anychar_infinite_greedy(QuantNode* qn)
{
if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) &&
- NTYPE(qn->target) == NT_CANY)
+ NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn)))
return 1;
else
return 0;
@@ -726,255 +789,21 @@ is_anychar_star_quantifier(QtfrNode* qn)
#define QUANTIFIER_EXPAND_LIMIT_SIZE 50
#define CKN_ON (ckn > 0)
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-
static int
-compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)
-{
- int len, mod_tlen, cklen;
- int ckn;
- int infinite = IS_REPEAT_INFINITE(qn->upper);
- int empty_info = qn->target_empty_info;
- int tlen = compile_length_tree(qn->target, reg);
-
- if (tlen < 0) return tlen;
-
- ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0);
-
- cklen = (CKN_ON ? SIZE_STATE_CHECK_NUM: 0);
-
- /* anychar repeat */
- if (NTYPE(qn->target) == NT_CANY) {
- if (qn->greedy && infinite) {
- if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON)
- return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen;
- else
- return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen;
- }
- }
-
- if (empty_info != 0)
- mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);
- else
- mod_tlen = tlen;
-
- if (infinite && qn->lower <= 1) {
- if (qn->greedy) {
- if (qn->lower == 1)
- len = SIZE_OP_JUMP;
- else
- len = 0;
-
- len += SIZE_OP_PUSH + cklen + mod_tlen + SIZE_OP_JUMP;
- }
- else {
- if (qn->lower == 0)
- len = SIZE_OP_JUMP;
- else
- len = 0;
-
- len += mod_tlen + SIZE_OP_PUSH + cklen;
- }
- }
- else if (qn->upper == 0) {
- if (qn->is_refered != 0) /* /(?<n>..){0}/ */
- len = SIZE_OP_JUMP + tlen;
- else
- len = 0;
- }
- else if (qn->upper == 1 && qn->greedy) {
- if (qn->lower == 0) {
- if (CKN_ON) {
- len = SIZE_OP_STATE_CHECK_PUSH + tlen;
- }
- else {
- len = SIZE_OP_PUSH + tlen;
- }
- }
- else {
- len = tlen;
- }
- }
- else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */
- len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen;
- }
- else {
- len = SIZE_OP_REPEAT_INC
- + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM;
- if (CKN_ON)
- len += SIZE_OP_STATE_CHECK;
- }
-
- return len;
-}
-
-static int
-compile_quantifier_node(QtfrNode* qn, regex_t* reg)
-{
- int r, mod_tlen;
- int ckn;
- int infinite = IS_REPEAT_INFINITE(qn->upper);
- int empty_info = qn->target_empty_info;
- int tlen = compile_length_tree(qn->target, reg);
-
- if (tlen < 0) return tlen;
-
- ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0);
-
- if (is_anychar_star_quantifier(qn)) {
- r = compile_tree_n_times(qn->target, qn->lower, reg);
- if (r) return r;
- if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) {
- if (IS_MULTILINE(reg->options))
- r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT);
- else
- r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT);
- if (r) return r;
- if (CKN_ON) {
- r = add_state_check_num(reg, ckn);
- if (r) return r;
- }
-
- return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);
- }
- else {
- if (IS_MULTILINE(reg->options)) {
- r = add_opcode(reg, (CKN_ON ?
- OP_STATE_CHECK_ANYCHAR_ML_STAR
- : OP_ANYCHAR_ML_STAR));
- }
- else {
- r = add_opcode(reg, (CKN_ON ?
- OP_STATE_CHECK_ANYCHAR_STAR
- : OP_ANYCHAR_STAR));
- }
- if (r) return r;
- if (CKN_ON)
- r = add_state_check_num(reg, ckn);
-
- return r;
- }
- }
-
- if (empty_info != 0)
- mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);
- else
- mod_tlen = tlen;
-
- if (infinite && qn->lower <= 1) {
- if (qn->greedy) {
- if (qn->lower == 1) {
- r = add_opcode_rel_addr(reg, OP_JUMP,
- (CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH));
- if (r) return r;
- }
-
- if (CKN_ON) {
- r = add_opcode(reg, OP_STATE_CHECK_PUSH);
- if (r) return r;
- r = add_state_check_num(reg, ckn);
- if (r) return r;
- r = add_rel_addr(reg, mod_tlen + SIZE_OP_JUMP);
- }
- else {
- r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP);
- }
- if (r) return r;
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP
- + (int )(CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH)));
- }
- else {
- if (qn->lower == 0) {
- r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen);
- if (r) return r;
- }
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
- if (CKN_ON) {
- r = add_opcode(reg, OP_STATE_CHECK_PUSH_OR_JUMP);
- if (r) return r;
- r = add_state_check_num(reg, ckn);
- if (r) return r;
- r = add_rel_addr(reg,
- -(mod_tlen + (int )SIZE_OP_STATE_CHECK_PUSH_OR_JUMP));
- }
- else
- r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH));
- }
- }
- else if (qn->upper == 0) {
- if (qn->is_refered != 0) { /* /(?<n>..){0}/ */
- r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
- if (r) return r;
- r = compile_tree(qn->target, reg);
- }
- else
- r = 0;
- }
- else if (qn->upper == 1 && qn->greedy) {
- if (qn->lower == 0) {
- if (CKN_ON) {
- r = add_opcode(reg, OP_STATE_CHECK_PUSH);
- if (r) return r;
- r = add_state_check_num(reg, ckn);
- if (r) return r;
- r = add_rel_addr(reg, tlen);
- }
- else {
- r = add_opcode_rel_addr(reg, OP_PUSH, tlen);
- }
- if (r) return r;
- }
-
- r = compile_tree(qn->target, reg);
- }
- else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */
- if (CKN_ON) {
- r = add_opcode(reg, OP_STATE_CHECK_PUSH);
- if (r) return r;
- r = add_state_check_num(reg, ckn);
- if (r) return r;
- r = add_rel_addr(reg, SIZE_OP_JUMP);
- }
- else {
- r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP);
- }
-
- if (r) return r;
- r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
- if (r) return r;
- r = compile_tree(qn->target, reg);
- }
- else {
- r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg);
- if (CKN_ON) {
- if (r) return r;
- r = add_opcode(reg, OP_STATE_CHECK);
- if (r) return r;
- r = add_state_check_num(reg, ckn);
- }
- }
- return r;
-}
-
-#else /* USE_COMBINATION_EXPLOSION_CHECK */
-
-static int
-compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)
+compile_length_quantifier_node(QuantNode* qn, regex_t* reg)
{
int len, mod_tlen;
int infinite = IS_REPEAT_INFINITE(qn->upper);
- int empty_info = qn->target_empty_info;
- int tlen = compile_length_tree(qn->target, reg);
+ enum QuantBodyEmpty empty_info = qn->body_empty_info;
+ int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
+ if (tlen == 0) return 0;
/* anychar repeat */
- if (NTYPE(qn->target) == NT_CANY) {
- if (qn->greedy && infinite) {
+ if (is_anychar_infinite_greedy(qn)) {
+ if (qn->lower <= 1 ||
+ int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0) {
if (IS_NOT_NULL(qn->next_head_exact))
return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower;
else
@@ -982,13 +811,14 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)
}
}
- if (empty_info != 0)
- mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);
- else
+ if (empty_info == QUANT_BODY_IS_NOT_EMPTY)
mod_tlen = tlen;
+ else
+ mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END);
if (infinite &&
- (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {
+ (qn->lower <= 1 ||
+ int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {
len = SIZE_OP_JUMP;
}
@@ -1011,8 +841,9 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)
len = SIZE_OP_JUMP + tlen;
}
else if (!infinite && qn->greedy &&
- (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper
- <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {
+ (qn->upper == 1 ||
+ int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper,
+ QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
len = tlen * qn->lower;
len += (SIZE_OP_PUSH + tlen) * (qn->upper - qn->lower);
}
@@ -1028,41 +859,45 @@ compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)
}
static int
-compile_quantifier_node(QtfrNode* qn, regex_t* reg)
+compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env)
{
int i, r, mod_tlen;
int infinite = IS_REPEAT_INFINITE(qn->upper);
- int empty_info = qn->target_empty_info;
- int tlen = compile_length_tree(qn->target, reg);
+ enum QuantBodyEmpty empty_info = qn->body_empty_info;
+ int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
+ if (tlen == 0) return 0;
- if (is_anychar_star_quantifier(qn)) {
- r = compile_tree_n_times(qn->target, qn->lower, reg);
- if (r) return r;
+ if (is_anychar_infinite_greedy(qn) &&
+ (qn->lower <= 1 ||
+ int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
+ r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
+ if (r != 0) return r;
if (IS_NOT_NULL(qn->next_head_exact)) {
- if (IS_MULTILINE(reg->options))
+ if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)))
r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT);
else
r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT);
- if (r) return r;
- return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);
+ if (r != 0) return r;
+ return add_bytes(reg, STR_(qn->next_head_exact)->s, 1);
}
else {
- if (IS_MULTILINE(reg->options))
+ if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg)))
return add_opcode(reg, OP_ANYCHAR_ML_STAR);
else
return add_opcode(reg, OP_ANYCHAR_STAR);
}
}
- if (empty_info != 0)
- mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);
- else
+ if (empty_info == QUANT_BODY_IS_NOT_EMPTY)
mod_tlen = tlen;
+ else
+ mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END);
if (infinite &&
- (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {
+ (qn->lower <= 1 ||
+ int_multiply_cmp(tlen, qn->lower, QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {
if (qn->greedy) {
if (IS_NOT_NULL(qn->head_exact))
@@ -1075,190 +910,202 @@ compile_quantifier_node(QtfrNode* qn, regex_t* reg)
else {
r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP);
}
- if (r) return r;
+ if (r != 0) return r;
}
else {
- r = compile_tree_n_times(qn->target, qn->lower, reg);
- if (r) return r;
+ r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
+ if (r != 0) return r;
}
if (qn->greedy) {
if (IS_NOT_NULL(qn->head_exact)) {
r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1,
mod_tlen + SIZE_OP_JUMP);
- if (r) return r;
- add_bytes(reg, NSTR(qn->head_exact)->s, 1);
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
+ if (r != 0) return r;
+ add_bytes(reg, STR_(qn->head_exact)->s, 1);
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1));
+ -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1));
}
else if (IS_NOT_NULL(qn->next_head_exact)) {
r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT,
mod_tlen + SIZE_OP_JUMP);
- if (r) return r;
- add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
+ if (r != 0) return r;
+ add_bytes(reg, STR_(qn->next_head_exact)->s, 1);
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_JUMP,
- -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT));
+ -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT));
}
else {
r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP);
- if (r) return r;
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
+ if (r != 0) return r;
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_JUMP,
-(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH));
}
}
else {
r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen);
- if (r) return r;
- r = compile_tree_empty_check(qn->target, reg, empty_info);
- if (r) return r;
+ if (r != 0) return r;
+ r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env);
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH));
}
}
else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?<n>..){0}/ */
r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
- if (r) return r;
- r = compile_tree(qn->target, reg);
+ if (r != 0) return r;
+ r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
}
- else if (!infinite && qn->greedy &&
- (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper
- <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {
+ else if (! infinite && qn->greedy &&
+ (qn->upper == 1 ||
+ int_multiply_cmp(tlen + SIZE_OP_PUSH, qn->upper,
+ QUANTIFIER_EXPAND_LIMIT_SIZE) <= 0)) {
int n = qn->upper - qn->lower;
- r = compile_tree_n_times(qn->target, qn->lower, reg);
- if (r) return r;
+ r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
+ if (r != 0) return r;
for (i = 0; i < n; i++) {
r = add_opcode_rel_addr(reg, OP_PUSH,
- (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH);
- if (r) return r;
- r = compile_tree(qn->target, reg);
- if (r) return r;
+ (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH);
+ if (r != 0) return r;
+ r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
+ if (r != 0) return r;
}
}
- else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */
+ else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */
r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP);
- if (r) return r;
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_JUMP, tlen);
- if (r) return r;
- r = compile_tree(qn->target, reg);
+ if (r != 0) return r;
+ r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
}
else {
- r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg);
+ r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env);
}
return r;
}
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */
static int
-compile_length_option_node(EncloseNode* node, regex_t* reg)
+compile_length_option_node(EnclosureNode* node, regex_t* reg)
{
int tlen;
OnigOptionType prev = reg->options;
- reg->options = node->option;
- tlen = compile_length_tree(node->target, reg);
+ reg->options = node->o.options;
+ tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
reg->options = prev;
- if (tlen < 0) return tlen;
-
- if (IS_DYNAMIC_OPTION(prev ^ node->option)) {
- return SIZE_OP_SET_OPTION_PUSH + SIZE_OP_SET_OPTION + SIZE_OP_FAIL
- + tlen + SIZE_OP_SET_OPTION;
- }
- else
- return tlen;
+ return tlen;
}
static int
-compile_option_node(EncloseNode* node, regex_t* reg)
+compile_option_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
{
int r;
OnigOptionType prev = reg->options;
- if (IS_DYNAMIC_OPTION(prev ^ node->option)) {
- r = add_opcode_option(reg, OP_SET_OPTION_PUSH, node->option);
- if (r) return r;
- r = add_opcode_option(reg, OP_SET_OPTION, prev);
- if (r) return r;
- r = add_opcode(reg, OP_FAIL);
- if (r) return r;
- }
-
- reg->options = node->option;
- r = compile_tree(node->target, reg);
+ reg->options = node->o.options;
+ r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
reg->options = prev;
- if (IS_DYNAMIC_OPTION(prev ^ node->option)) {
- if (r) return r;
- r = add_opcode_option(reg, OP_SET_OPTION, prev);
- }
return r;
}
static int
-compile_length_enclose_node(EncloseNode* node, regex_t* reg)
+compile_length_enclosure_node(EnclosureNode* node, regex_t* reg)
{
int len;
int tlen;
- if (node->type == ENCLOSE_OPTION)
+ if (node->type == ENCLOSURE_OPTION)
return compile_length_option_node(node, reg);
- if (node->target) {
- tlen = compile_length_tree(node->target, reg);
+ if (NODE_ENCLOSURE_BODY(node)) {
+ tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
if (tlen < 0) return tlen;
}
else
tlen = 0;
switch (node->type) {
- case ENCLOSE_MEMORY:
-#ifdef USE_SUBEXP_CALL
- if (IS_ENCLOSE_CALLED(node)) {
+ case ENCLOSURE_MEMORY:
+#ifdef USE_CALL
+
+ if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
+ len = tlen + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN;
+ return len;
+ }
+
+ if (NODE_IS_CALLED(node)) {
len = SIZE_OP_MEMORY_START_PUSH + tlen
+ SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN;
- if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
- len += (IS_ENCLOSE_RECURSION(node)
+ if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
+ len += (NODE_IS_RECURSION(node)
? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);
else
- len += (IS_ENCLOSE_RECURSION(node)
+ len += (NODE_IS_RECURSION(node)
? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
}
- else if (IS_ENCLOSE_RECURSION(node)) {
+ else if (NODE_IS_RECURSION(node)) {
len = SIZE_OP_MEMORY_START_PUSH;
- len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)
+ len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)
? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_REC);
}
else
#endif
{
- if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum))
+ if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum))
len = SIZE_OP_MEMORY_START_PUSH;
else
len = SIZE_OP_MEMORY_START;
- len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)
- ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END);
+ len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)
+ ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END);
}
break;
- case ENCLOSE_STOP_BACKTRACK:
- if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) {
- QtfrNode* qn = NQTFR(node->target);
- tlen = compile_length_tree(qn->target, reg);
+ case ENCLOSURE_STOP_BACKTRACK:
+ if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) {
+ QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node));
+ tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (tlen < 0) return tlen;
len = tlen * qn->lower
- + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP;
+ + SIZE_OP_PUSH + tlen + SIZE_OP_POP_OUT + SIZE_OP_JUMP;
}
else {
- len = SIZE_OP_PUSH_STOP_BT + tlen + SIZE_OP_POP_STOP_BT;
+ len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END;
+ }
+ break;
+
+ case ENCLOSURE_IF_ELSE:
+ {
+ Node* cond = NODE_ENCLOSURE_BODY(node);
+ Node* Then = node->te.Then;
+ Node* Else = node->te.Else;
+
+ len = compile_length_tree(cond, reg);
+ if (len < 0) return len;
+ len += SIZE_OP_PUSH;
+ len += SIZE_OP_ATOMIC_START + SIZE_OP_ATOMIC_END;
+
+ if (IS_NOT_NULL(Then)) {
+ tlen = compile_length_tree(Then, reg);
+ if (tlen < 0) return tlen;
+ len += tlen;
+ }
+
+ if (IS_NOT_NULL(Else)) {
+ len += SIZE_OP_JUMP;
+ tlen = compile_length_tree(Else, reg);
+ if (tlen < 0) return tlen;
+ len += tlen;
+ }
}
break;
@@ -1273,103 +1120,167 @@ compile_length_enclose_node(EncloseNode* node, regex_t* reg)
static int get_char_length_tree(Node* node, regex_t* reg, int* len);
static int
-compile_enclose_node(EncloseNode* node, regex_t* reg)
+compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
{
- int r, len;
+ int r;
+ int len;
- if (node->type == ENCLOSE_OPTION)
- return compile_option_node(node, reg);
+#ifdef USE_CALL
+ if (node->m.regnum == 0 && NODE_IS_CALLED(node)) {
+ r = add_opcode(reg, OP_CALL);
+ if (r != 0) return r;
+ node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+ NODE_STATUS_ADD(node, ADDR_FIXED);
+ r = add_abs_addr(reg, (int )node->m.called_addr);
+ if (r != 0) return r;
+ len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
+ len += SIZE_OP_RETURN;
+ r = add_opcode_rel_addr(reg, OP_JUMP, len);
+ if (r != 0) return r;
+
+ r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_RETURN);
+ return r;
+ }
- switch (node->type) {
- case ENCLOSE_MEMORY:
-#ifdef USE_SUBEXP_CALL
- if (IS_ENCLOSE_CALLED(node)) {
- r = add_opcode(reg, OP_CALL);
- if (r) return r;
- node->call_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
- node->state |= NST_ADDR_FIXED;
- r = add_abs_addr(reg, (int )node->call_addr);
- if (r) return r;
- len = compile_length_tree(node->target, reg);
- len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN);
- if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
- len += (IS_ENCLOSE_RECURSION(node)
- ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);
- else
- len += (IS_ENCLOSE_RECURSION(node)
- ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
+ if (NODE_IS_CALLED(node)) {
+ r = add_opcode(reg, OP_CALL);
+ if (r != 0) return r;
+ node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;
+ NODE_STATUS_ADD(node, ADDR_FIXED);
+ r = add_abs_addr(reg, (int )node->m.called_addr);
+ if (r != 0) return r;
+ len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg);
+ len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN);
+ if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
+ len += (NODE_IS_RECURSION(node)
+ ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);
+ else
+ len += (NODE_IS_RECURSION(node)
+ ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);
- r = add_opcode_rel_addr(reg, OP_JUMP, len);
- if (r) return r;
- }
+ r = add_opcode_rel_addr(reg, OP_JUMP, len);
+ if (r != 0) return r;
+ }
#endif
- if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum))
- r = add_opcode(reg, OP_MEMORY_START_PUSH);
- else
- r = add_opcode(reg, OP_MEMORY_START);
- if (r) return r;
- r = add_mem_num(reg, node->regnum);
- if (r) return r;
- r = compile_tree(node->target, reg);
- if (r) return r;
-#ifdef USE_SUBEXP_CALL
- if (IS_ENCLOSE_CALLED(node)) {
- if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
- r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node)
- ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH));
- else
- r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node)
- ? OP_MEMORY_END_REC : OP_MEMORY_END));
- if (r) return r;
- r = add_mem_num(reg, node->regnum);
- if (r) return r;
- r = add_opcode(reg, OP_RETURN);
- }
- else if (IS_ENCLOSE_RECURSION(node)) {
- if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
- r = add_opcode(reg, OP_MEMORY_END_PUSH_REC);
- else
- r = add_opcode(reg, OP_MEMORY_END_REC);
- if (r) return r;
- r = add_mem_num(reg, node->regnum);
- }
- else
+ if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum))
+ r = add_opcode(reg, OP_MEMORY_START_PUSH);
+ else
+ r = add_opcode(reg, OP_MEMORY_START);
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->m.regnum);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ if (r != 0) return r;
+
+#ifdef USE_CALL
+ if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
+ r = add_opcode(reg, (NODE_IS_RECURSION(node)
+ ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH));
+ else
+ r = add_opcode(reg, (NODE_IS_RECURSION(node)
+ ? OP_MEMORY_END_REC : OP_MEMORY_END));
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->m.regnum);
+ if (NODE_IS_CALLED(node)) {
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_RETURN);
+ }
+#else
+ if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum))
+ r = add_opcode(reg, OP_MEMORY_END_PUSH);
+ else
+ r = add_opcode(reg, OP_MEMORY_END);
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->m.regnum);
#endif
- {
- if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))
- r = add_opcode(reg, OP_MEMORY_END_PUSH);
- else
- r = add_opcode(reg, OP_MEMORY_END);
- if (r) return r;
- r = add_mem_num(reg, node->regnum);
- }
+
+ return r;
+}
+
+static int
+compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env)
+{
+ int r, len;
+
+ switch (node->type) {
+ case ENCLOSURE_MEMORY:
+ r = compile_enclosure_memory_node(node, reg, env);
+ break;
+
+ case ENCLOSURE_OPTION:
+ r = compile_option_node(node, reg, env);
break;
- case ENCLOSE_STOP_BACKTRACK:
- if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) {
- QtfrNode* qn = NQTFR(node->target);
- r = compile_tree_n_times(qn->target, qn->lower, reg);
- if (r) return r;
+ case ENCLOSURE_STOP_BACKTRACK:
+ if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) {
+ QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node));
+ r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env);
+ if (r != 0) return r;
- len = compile_length_tree(qn->target, reg);
+ len = compile_length_tree(NODE_QUANT_BODY(qn), reg);
if (len < 0) return len;
- r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP + SIZE_OP_JUMP);
- if (r) return r;
- r = compile_tree(qn->target, reg);
- if (r) return r;
- r = add_opcode(reg, OP_POP);
- if (r) return r;
+ r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP_OUT + SIZE_OP_JUMP);
+ if (r != 0) return r;
+ r = compile_tree(NODE_QUANT_BODY(qn), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_POP_OUT);
+ if (r != 0) return r;
r = add_opcode_rel_addr(reg, OP_JUMP,
- -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP));
+ -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP_OUT + (int )SIZE_OP_JUMP));
}
else {
- r = add_opcode(reg, OP_PUSH_STOP_BT);
- if (r) return r;
- r = compile_tree(node->target, reg);
- if (r) return r;
- r = add_opcode(reg, OP_POP_STOP_BT);
+ r = add_opcode(reg, OP_ATOMIC_START);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_ATOMIC_END);
+ }
+ break;
+
+ case ENCLOSURE_IF_ELSE:
+ {
+ int cond_len, then_len, jump_len;
+ Node* cond = NODE_ENCLOSURE_BODY(node);
+ Node* Then = node->te.Then;
+ Node* Else = node->te.Else;
+
+ r = add_opcode(reg, OP_ATOMIC_START);
+ if (r != 0) return r;
+
+ cond_len = compile_length_tree(cond, reg);
+ if (cond_len < 0) return cond_len;
+ if (IS_NOT_NULL(Then)) {
+ then_len = compile_length_tree(Then, reg);
+ if (then_len < 0) return then_len;
+ }
+ else
+ then_len = 0;
+
+ jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END;
+ if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP;
+
+ r = add_opcode_rel_addr(reg, OP_PUSH, jump_len);
+ if (r != 0) return r;
+ r = compile_tree(cond, reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_ATOMIC_END);
+ if (r != 0) return r;
+
+ if (IS_NOT_NULL(Then)) {
+ r = compile_tree(Then, reg, env);
+ if (r != 0) return r;
+ }
+
+ if (IS_NOT_NULL(Else)) {
+ int else_len = compile_length_tree(Else, reg);
+ r = add_opcode_rel_addr(reg, OP_JUMP, else_len);
+ if (r != 0) return r;
+ r = compile_tree(Else, reg, env);
+ }
}
break;
@@ -1387,23 +1298,37 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)
int len;
int tlen = 0;
- if (node->target) {
- tlen = compile_length_tree(node->target, reg);
+ if (IS_NOT_NULL(NODE_ANCHOR_BODY(node))) {
+ tlen = compile_length_tree(NODE_ANCHOR_BODY(node), reg);
if (tlen < 0) return tlen;
}
switch (node->type) {
case ANCHOR_PREC_READ:
- len = SIZE_OP_PUSH_POS + tlen + SIZE_OP_POP_POS;
+ len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END;
break;
case ANCHOR_PREC_READ_NOT:
- len = SIZE_OP_PUSH_POS_NOT + tlen + SIZE_OP_FAIL_POS;
+ len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END;
break;
case ANCHOR_LOOK_BEHIND:
len = SIZE_OP_LOOK_BEHIND + tlen;
break;
case ANCHOR_LOOK_BEHIND_NOT:
- len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT;
+ len = SIZE_OP_LOOK_BEHIND_NOT_START + tlen + SIZE_OP_LOOK_BEHIND_NOT_END;
+ break;
+
+ case ANCHOR_WORD_BOUNDARY:
+ case ANCHOR_NO_WORD_BOUNDARY:
+#ifdef USE_WORD_BEGIN_END
+ case ANCHOR_WORD_BEGIN:
+ case ANCHOR_WORD_END:
+#endif
+ len = SIZE_OP_WORD_BOUNDARY;
+ break;
+
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ len = SIZE_OPCODE;
break;
default:
@@ -1415,9 +1340,10 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg)
}
static int
-compile_anchor_node(AnchorNode* node, regex_t* reg)
+compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env)
{
int r, len;
+ enum OpCode op;
switch (node->type) {
case ANCHOR_BEGIN_BUF: r = add_opcode(reg, OP_BEGIN_BUF); break;
@@ -1427,67 +1353,89 @@ compile_anchor_node(AnchorNode* node, regex_t* reg)
case ANCHOR_SEMI_END_BUF: r = add_opcode(reg, OP_SEMI_END_BUF); break;
case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;
- case ANCHOR_WORD_BOUND: r = add_opcode(reg, OP_WORD_BOUND); break;
- case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break;
+ case ANCHOR_WORD_BOUNDARY:
+ op = OP_WORD_BOUNDARY;
+ word:
+ r = add_opcode(reg, op);
+ if (r != 0) return r;
+ r = add_mode(reg, (ModeType )node->ascii_mode);
+ break;
+
+ case ANCHOR_NO_WORD_BOUNDARY:
+ op = OP_NO_WORD_BOUNDARY; goto word;
+ break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN: r = add_opcode(reg, OP_WORD_BEGIN); break;
- case ANCHOR_WORD_END: r = add_opcode(reg, OP_WORD_END); break;
+ case ANCHOR_WORD_BEGIN:
+ op = OP_WORD_BEGIN; goto word;
+ break;
+ case ANCHOR_WORD_END:
+ op = OP_WORD_END; goto word;
+ break;
#endif
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ r = add_opcode(reg, OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ break;
+
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ r = add_opcode(reg, OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ break;
+
case ANCHOR_PREC_READ:
- r = add_opcode(reg, OP_PUSH_POS);
- if (r) return r;
- r = compile_tree(node->target, reg);
- if (r) return r;
- r = add_opcode(reg, OP_POP_POS);
+ r = add_opcode(reg, OP_PREC_READ_START);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_PREC_READ_END);
break;
case ANCHOR_PREC_READ_NOT:
- len = compile_length_tree(node->target, reg);
+ len = compile_length_tree(NODE_ANCHOR_BODY(node), reg);
if (len < 0) return len;
- r = add_opcode_rel_addr(reg, OP_PUSH_POS_NOT, len + SIZE_OP_FAIL_POS);
- if (r) return r;
- r = compile_tree(node->target, reg);
- if (r) return r;
- r = add_opcode(reg, OP_FAIL_POS);
+ r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_PREC_READ_NOT_END);
break;
case ANCHOR_LOOK_BEHIND:
{
int n;
r = add_opcode(reg, OP_LOOK_BEHIND);
- if (r) return r;
+ if (r != 0) return r;
if (node->char_len < 0) {
- r = get_char_length_tree(node->target, reg, &n);
- if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
+ r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n);
+ if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
}
else
n = node->char_len;
r = add_length(reg, n);
- if (r) return r;
- r = compile_tree(node->target, reg);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
}
break;
case ANCHOR_LOOK_BEHIND_NOT:
{
int n;
- len = compile_length_tree(node->target, reg);
- r = add_opcode_rel_addr(reg, OP_PUSH_LOOK_BEHIND_NOT,
- len + SIZE_OP_FAIL_LOOK_BEHIND_NOT);
- if (r) return r;
+
+ len = compile_length_tree(NODE_ANCHOR_BODY(node), reg);
+ r = add_opcode_rel_addr(reg, OP_LOOK_BEHIND_NOT_START,
+ len + SIZE_OP_LOOK_BEHIND_NOT_END);
+ if (r != 0) return r;
if (node->char_len < 0) {
- r = get_char_length_tree(node->target, reg, &n);
- if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
+ r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n);
+ if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
}
else
n = node->char_len;
r = add_length(reg, n);
- if (r) return r;
- r = compile_tree(node->target, reg);
- if (r) return r;
- r = add_opcode(reg, OP_FAIL_LOOK_BEHIND_NOT);
+ if (r != 0) return r;
+ r = compile_tree(NODE_ANCHOR_BODY(node), reg, env);
+ if (r != 0) return r;
+ r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END);
}
break;
@@ -1500,88 +1448,203 @@ compile_anchor_node(AnchorNode* node, regex_t* reg)
}
static int
+compile_gimmick_node(GimmickNode* node, regex_t* reg)
+{
+ int r;
+
+ switch (node->type) {
+ case GIMMICK_FAIL:
+ r = add_opcode(reg, OP_FAIL);
+ break;
+
+ case GIMMICK_KEEP:
+ r = add_opcode(reg, OP_PUSH_SAVE_VAL);
+ if (r != 0) return r;
+ r = add_save_type(reg, SAVE_KEEP);
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->id);
+ break;
+
+ case GIMMICK_SAVE:
+ r = add_opcode(reg, OP_PUSH_SAVE_VAL);
+ if (r != 0) return r;
+ r = add_save_type(reg, node->detail_type);
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->id);
+ break;
+
+ case GIMMICK_UPDATE_VAR:
+ r = add_opcode(reg, OP_UPDATE_VAR);
+ if (r != 0) return r;
+ r = add_update_var_type(reg, node->detail_type);
+ if (r != 0) return r;
+ r = add_mem_num(reg, node->id);
+ break;
+
+#ifdef USE_CALLOUT
+ case GIMMICK_CALLOUT:
+ switch (node->detail_type) {
+ case ONIG_CALLOUT_OF_CONTENTS:
+ case ONIG_CALLOUT_OF_NAME:
+ {
+ r = add_opcode(reg, (node->detail_type == ONIG_CALLOUT_OF_CONTENTS) ?
+ OP_CALLOUT_CONTENTS : OP_CALLOUT_NAME);
+ if (r != 0) return r;
+ if (node->detail_type == ONIG_CALLOUT_OF_NAME) {
+ r = add_mem_num(reg, node->id);
+ if (r != 0) return r;
+ }
+ r = add_mem_num(reg, node->num);
+ if (r != 0) return r;
+ }
+ break;
+
+ default:
+ r = ONIGERR_TYPE_BUG;
+ break;
+ }
+#endif
+ }
+
+ return r;
+}
+
+static int
+compile_length_gimmick_node(GimmickNode* node, regex_t* reg)
+{
+ int len;
+
+ switch (node->type) {
+ case GIMMICK_FAIL:
+ len = SIZE_OP_FAIL;
+ break;
+
+ case GIMMICK_KEEP:
+ case GIMMICK_SAVE:
+ len = SIZE_OP_PUSH_SAVE_VAL;
+ break;
+
+ case GIMMICK_UPDATE_VAR:
+ len = SIZE_OP_UPDATE_VAR;
+ break;
+
+#ifdef USE_CALLOUT
+ case GIMMICK_CALLOUT:
+ switch (node->detail_type) {
+ case ONIG_CALLOUT_OF_CONTENTS:
+ len = SIZE_OP_CALLOUT_CONTENTS;
+ break;
+ case ONIG_CALLOUT_OF_NAME:
+ len = SIZE_OP_CALLOUT_NAME;
+ break;
+
+ default:
+ len = ONIGERR_TYPE_BUG;
+ break;
+ }
+ break;
+#endif
+ }
+
+ return len;
+}
+
+static int
compile_length_tree(Node* node, regex_t* reg)
{
- int len, type, r;
+ int len, r;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
len = 0;
do {
- r = compile_length_tree(NCAR(node), reg);
+ r = compile_length_tree(NODE_CAR(node), reg);
if (r < 0) return r;
len += r;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
r = len;
break;
- case NT_ALT:
+ case NODE_ALT:
{
int n;
n = r = 0;
do {
- r += compile_length_tree(NCAR(node), reg);
+ r += compile_length_tree(NODE_CAR(node), reg);
n++;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
r += (SIZE_OP_PUSH + SIZE_OP_JUMP) * (n - 1);
}
break;
- case NT_STR:
- if (NSTRING_IS_RAW(node))
- r = compile_length_string_raw_node(NSTR(node), reg);
+ case NODE_STRING:
+ if (NODE_STRING_IS_RAW(node))
+ r = compile_length_string_raw_node(STR_(node), reg);
else
r = compile_length_string_node(node, reg);
break;
- case NT_CCLASS:
- r = compile_length_cclass_node(NCCLASS(node), reg);
+ case NODE_CCLASS:
+ r = compile_length_cclass_node(CCLASS_(node), reg);
break;
- case NT_CTYPE:
- case NT_CANY:
+ case NODE_CTYPE:
r = SIZE_OPCODE;
break;
- case NT_BREF:
+ case NODE_BACKREF:
{
- BRefNode* br = NBREF(node);
+ BackRefNode* br = BACKREF_(node);
+ if (NODE_IS_CHECKER(node)) {
#ifdef USE_BACKREF_WITH_LEVEL
- if (IS_BACKREF_NEST_LEVEL(br)) {
- r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +
- SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
- }
- else
+ if (NODE_IS_NEST_LEVEL(node)) {
+ r = SIZE_OPCODE + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
+ }
+ else
#endif
- if (br->back_num == 1) {
- r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2)
- ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM));
+ r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
}
else {
- r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
+#ifdef USE_BACKREF_WITH_LEVEL
+ if (NODE_IS_NEST_LEVEL(node)) {
+ r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +
+ SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
+ }
+ else
+#endif
+ if (br->back_num == 1) {
+ r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2)
+ ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM));
+ }
+ else {
+ r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);
+ }
}
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
+#ifdef USE_CALL
+ case NODE_CALL:
r = SIZE_OP_CALL;
break;
#endif
- case NT_QTFR:
- r = compile_length_quantifier_node(NQTFR(node), reg);
+ case NODE_QUANT:
+ r = compile_length_quantifier_node(QUANT_(node), reg);
break;
- case NT_ENCLOSE:
- r = compile_length_enclose_node(NENCLOSE(node), reg);
+ case NODE_ENCLOSURE:
+ r = compile_length_enclosure_node(ENCLOSURE_(node), reg);
break;
- case NT_ANCHOR:
- r = compile_length_anchor_node(NANCHOR(node), reg);
+ case NODE_ANCHOR:
+ r = compile_length_anchor_node(ANCHOR_(node), reg);
+ break;
+
+ case NODE_GIMMICK:
+ r = compile_length_gimmick_node(GIMMICK_(node), reg);
break;
default:
@@ -1593,165 +1656,191 @@ compile_length_tree(Node* node, regex_t* reg)
}
static int
-compile_tree(Node* node, regex_t* reg)
+compile_tree(Node* node, regex_t* reg, ScanEnv* env)
{
- int n, type, len, pos, r = 0;
+ int n, len, pos, r = 0;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
do {
- r = compile_tree(NCAR(node), reg);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ r = compile_tree(NODE_CAR(node), reg, env);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_ALT:
+ case NODE_ALT:
{
Node* x = node;
len = 0;
do {
- len += compile_length_tree(NCAR(x), reg);
- if (NCDR(x) != NULL) {
+ len += compile_length_tree(NODE_CAR(x), reg);
+ if (IS_NOT_NULL(NODE_CDR(x))) {
len += SIZE_OP_PUSH + SIZE_OP_JUMP;
}
- } while (IS_NOT_NULL(x = NCDR(x)));
+ } while (IS_NOT_NULL(x = NODE_CDR(x)));
pos = reg->used + len; /* goal position */
do {
- len = compile_length_tree(NCAR(node), reg);
- if (IS_NOT_NULL(NCDR(node))) {
- r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_JUMP);
- if (r) break;
+ len = compile_length_tree(NODE_CAR(node), reg);
+ if (IS_NOT_NULL(NODE_CDR(node))) {
+ enum OpCode push = NODE_IS_SUPER(node) ? OP_PUSH_SUPER : OP_PUSH;
+ r = add_opcode_rel_addr(reg, push, len + SIZE_OP_JUMP);
+ if (r != 0) break;
}
- r = compile_tree(NCAR(node), reg);
- if (r) break;
- if (IS_NOT_NULL(NCDR(node))) {
+ r = compile_tree(NODE_CAR(node), reg, env);
+ if (r != 0) break;
+ if (IS_NOT_NULL(NODE_CDR(node))) {
len = pos - (reg->used + SIZE_OP_JUMP);
r = add_opcode_rel_addr(reg, OP_JUMP, len);
- if (r) break;
+ if (r != 0) break;
}
- } while (IS_NOT_NULL(node = NCDR(node)));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
}
break;
- case NT_STR:
- if (NSTRING_IS_RAW(node))
- r = compile_string_raw_node(NSTR(node), reg);
+ case NODE_STRING:
+ if (NODE_STRING_IS_RAW(node))
+ r = compile_string_raw_node(STR_(node), reg);
else
r = compile_string_node(node, reg);
break;
- case NT_CCLASS:
- r = compile_cclass_node(NCCLASS(node), reg);
+ case NODE_CCLASS:
+ r = compile_cclass_node(CCLASS_(node), reg);
break;
- case NT_CTYPE:
+ case NODE_CTYPE:
{
int op;
- switch (NCTYPE(node)->ctype) {
+ switch (CTYPE_(node)->ctype) {
+ case CTYPE_ANYCHAR:
+ if (IS_MULTILINE(CTYPE_OPTION(node, reg)))
+ r = add_opcode(reg, OP_ANYCHAR_ML);
+ else
+ r = add_opcode(reg, OP_ANYCHAR);
+ break;
+
case ONIGENC_CTYPE_WORD:
- if (NCTYPE(node)->not != 0) op = OP_NOT_WORD;
- else op = OP_WORD;
+ if (CTYPE_(node)->ascii_mode == 0) {
+ op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD;
+ }
+ else {
+ op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII;
+ }
+ r = add_opcode(reg, op);
break;
+
default:
return ONIGERR_TYPE_BUG;
break;
}
- r = add_opcode(reg, op);
}
break;
- case NT_CANY:
- if (IS_MULTILINE(reg->options))
- r = add_opcode(reg, OP_ANYCHAR_ML);
- else
- r = add_opcode(reg, OP_ANYCHAR);
- break;
-
- case NT_BREF:
+ case NODE_BACKREF:
{
- BRefNode* br = NBREF(node);
+ BackRefNode* br = BACKREF_(node);
+ if (NODE_IS_CHECKER(node)) {
#ifdef USE_BACKREF_WITH_LEVEL
- if (IS_BACKREF_NEST_LEVEL(br)) {
- r = add_opcode(reg, OP_BACKREF_WITH_LEVEL);
- if (r) return r;
- r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE));
- if (r) return r;
- r = add_length(reg, br->nest_level);
- if (r) return r;
+ if (NODE_IS_NEST_LEVEL(node)) {
+ r = add_opcode(reg, OP_BACKREF_CHECK_WITH_LEVEL);
+ if (r != 0) return r;
+ r = add_length(reg, br->nest_level);
+ if (r != 0) return r;
+ }
+ else
+#endif
+ {
+ r = add_opcode(reg, OP_BACKREF_CHECK);
+ if (r != 0) return r;
+ }
goto add_bacref_mems;
}
- else
-#endif
- if (br->back_num == 1) {
- n = br->back_static[0];
- if (IS_IGNORECASE(reg->options)) {
- r = add_opcode(reg, OP_BACKREFN_IC);
- if (r) return r;
- r = add_mem_num(reg, n);
+ else {
+#ifdef USE_BACKREF_WITH_LEVEL
+ if (NODE_IS_NEST_LEVEL(node)) {
+ r = add_opcode(reg, OP_BACKREF_WITH_LEVEL);
+ if (r != 0) return r;
+ r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE));
+ if (r != 0) return r;
+ r = add_length(reg, br->nest_level);
+ if (r != 0) return r;
+
+ goto add_bacref_mems;
}
- else {
- switch (n) {
- case 1: r = add_opcode(reg, OP_BACKREF1); break;
- case 2: r = add_opcode(reg, OP_BACKREF2); break;
- default:
- r = add_opcode(reg, OP_BACKREFN);
- if (r) return r;
+ else
+#endif
+ if (br->back_num == 1) {
+ n = br->back_static[0];
+ if (IS_IGNORECASE(reg->options)) {
+ r = add_opcode(reg, OP_BACKREF_N_IC);
+ if (r != 0) return r;
r = add_mem_num(reg, n);
- break;
}
- }
- }
- else {
- int i;
- int* p;
-
- if (IS_IGNORECASE(reg->options)) {
- r = add_opcode(reg, OP_BACKREF_MULTI_IC);
+ else {
+ switch (n) {
+ case 1: r = add_opcode(reg, OP_BACKREF1); break;
+ case 2: r = add_opcode(reg, OP_BACKREF2); break;
+ default:
+ r = add_opcode(reg, OP_BACKREF_N);
+ if (r != 0) return r;
+ r = add_mem_num(reg, n);
+ break;
+ }
+ }
}
else {
- r = add_opcode(reg, OP_BACKREF_MULTI);
- }
- if (r) return r;
+ int i;
+ int* p;
-#ifdef USE_BACKREF_WITH_LEVEL
- add_bacref_mems:
-#endif
- r = add_length(reg, br->back_num);
- if (r) return r;
- p = BACKREFS_P(br);
- for (i = br->back_num - 1; i >= 0; i--) {
- r = add_mem_num(reg, p[i]);
- if (r) return r;
+ if (IS_IGNORECASE(reg->options)) {
+ r = add_opcode(reg, OP_BACKREF_MULTI_IC);
+ }
+ else {
+ r = add_opcode(reg, OP_BACKREF_MULTI);
+ }
+ if (r != 0) return r;
+
+ add_bacref_mems:
+ r = add_length(reg, br->back_num);
+ if (r != 0) return r;
+ p = BACKREFS_P(br);
+ for (i = br->back_num - 1; i >= 0; i--) {
+ r = add_mem_num(reg, p[i]);
+ if (r != 0) return r;
+ }
}
}
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- r = compile_call(NCALL(node), reg);
+#ifdef USE_CALL
+ case NODE_CALL:
+ r = compile_call(CALL_(node), reg, env);
break;
#endif
- case NT_QTFR:
- r = compile_quantifier_node(NQTFR(node), reg);
+ case NODE_QUANT:
+ r = compile_quantifier_node(QUANT_(node), reg, env);
+ break;
+
+ case NODE_ENCLOSURE:
+ r = compile_enclosure_node(ENCLOSURE_(node), reg, env);
break;
- case NT_ENCLOSE:
- r = compile_enclose_node(NENCLOSE(node), reg);
+ case NODE_ANCHOR:
+ r = compile_anchor_node(ANCHOR_(node), reg, env);
break;
- case NT_ANCHOR:
- r = compile_anchor_node(NANCHOR(node), reg);
+ case NODE_GIMMICK:
+ r = compile_gimmick_node(GIMMICK_(node), reg);
break;
default:
#ifdef ONIG_DEBUG
- fprintf(stderr, "compile_tree: undefined node type %d\n", NTYPE(node));
+ fprintf(stderr, "compile_tree: undefined node type %d\n", NODE_TYPE(node));
#endif
break;
}
@@ -1759,58 +1848,68 @@ compile_tree(Node* node, regex_t* reg)
return r;
}
-#ifdef USE_NAMED_GROUP
-
static int
noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)
{
int r = 0;
Node* node = *plink;
- switch (NTYPE(node)) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
do {
- r = noname_disable_map(&(NCAR(node)), map, counter);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ r = noname_disable_map(&(NODE_CAR(node)), map, counter);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_QTFR:
+ case NODE_QUANT:
{
- Node** ptarget = &(NQTFR(node)->target);
+ Node** ptarget = &(NODE_BODY(node));
Node* old = *ptarget;
r = noname_disable_map(ptarget, map, counter);
- if (*ptarget != old && NTYPE(*ptarget) == NT_QTFR) {
+ if (*ptarget != old && NODE_TYPE(*ptarget) == NODE_QUANT) {
onig_reduce_nested_quantifier(node, *ptarget);
}
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
- if (en->type == ENCLOSE_MEMORY) {
- if (IS_ENCLOSE_NAMED_GROUP(en)) {
+ EnclosureNode* en = ENCLOSURE_(node);
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_NAMED_GROUP(node)) {
(*counter)++;
- map[en->regnum].new_val = *counter;
- en->regnum = *counter;
- r = noname_disable_map(&(en->target), map, counter);
+ map[en->m.regnum].new_val = *counter;
+ en->m.regnum = *counter;
+ r = noname_disable_map(&(NODE_BODY(node)), map, counter);
}
else {
- *plink = en->target;
- en->target = NULL_NODE;
+ *plink = NODE_BODY(node);
+ NODE_BODY(node) = NULL_NODE;
onig_node_free(node);
r = noname_disable_map(plink, map, counter);
}
}
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ r = noname_disable_map(&(NODE_ENCLOSURE_BODY(en)), map, counter);
+ if (r != 0) return r;
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = noname_disable_map(&(en->te.Then), map, counter);
+ if (r != 0) return r;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = noname_disable_map(&(en->te.Else), map, counter);
+ if (r != 0) return r;
+ }
+ }
else
- r = noname_disable_map(&(en->target), map, counter);
+ r = noname_disable_map(&(NODE_BODY(node)), map, counter);
}
break;
- case NT_ANCHOR:
- if (NANCHOR(node)->target)
- r = noname_disable_map(&(NANCHOR(node)->target), map, counter);
+ case NODE_ANCHOR:
+ if (IS_NOT_NULL(NODE_BODY(node)))
+ r = noname_disable_map(&(NODE_BODY(node)), map, counter);
break;
default:
@@ -1825,9 +1924,9 @@ renumber_node_backref(Node* node, GroupNumRemap* map)
{
int i, pos, n, old_num;
int *backs;
- BRefNode* bn = NBREF(node);
+ BackRefNode* bn = BACKREF_(node);
- if (! IS_BACKREF_NAME_REF(bn))
+ if (! NODE_IS_BY_NAME(node))
return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
old_num = bn->back_num;
@@ -1853,27 +1952,45 @@ renumber_by_map(Node* node, GroupNumRemap* map)
{
int r = 0;
- switch (NTYPE(node)) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
do {
- r = renumber_by_map(NCAR(node), map);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ r = renumber_by_map(NODE_CAR(node), map);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_QTFR:
- r = renumber_by_map(NQTFR(node)->target, map);
+
+ case NODE_QUANT:
+ r = renumber_by_map(NODE_BODY(node), map);
break;
- case NT_ENCLOSE:
- r = renumber_by_map(NENCLOSE(node)->target, map);
+
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ r = renumber_by_map(NODE_BODY(node), map);
+ if (r != 0) return r;
+
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = renumber_by_map(en->te.Then, map);
+ if (r != 0) return r;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = renumber_by_map(en->te.Else, map);
+ if (r != 0) return r;
+ }
+ }
+ }
break;
- case NT_BREF:
+ case NODE_BACKREF:
r = renumber_node_backref(node, map);
break;
- case NT_ANCHOR:
- if (NANCHOR(node)->target)
- r = renumber_by_map(NANCHOR(node)->target, map);
+ case NODE_ANCHOR:
+ if (IS_NOT_NULL(NODE_BODY(node)))
+ r = renumber_by_map(NODE_BODY(node), map);
break;
default:
@@ -1888,28 +2005,46 @@ numbered_ref_check(Node* node)
{
int r = 0;
- switch (NTYPE(node)) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
do {
- r = numbered_ref_check(NCAR(node));
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ r = numbered_ref_check(NODE_CAR(node));
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_QTFR:
- r = numbered_ref_check(NQTFR(node)->target);
- break;
- case NT_ENCLOSE:
- r = numbered_ref_check(NENCLOSE(node)->target);
+
+ case NODE_ANCHOR:
+ if (IS_NULL(NODE_BODY(node)))
+ break;
+ /* fall */
+ case NODE_QUANT:
+ r = numbered_ref_check(NODE_BODY(node));
break;
- case NT_BREF:
- if (! IS_BACKREF_NAME_REF(NBREF(node)))
- return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ r = numbered_ref_check(NODE_BODY(node));
+ if (r != 0) return r;
+
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = numbered_ref_check(en->te.Then);
+ if (r != 0) return r;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = numbered_ref_check(en->te.Else);
+ if (r != 0) return r;
+ }
+ }
+ }
+
break;
- case NT_ANCHOR:
- if (NANCHOR(node)->target)
- r = numbered_ref_check(NANCHOR(node)->target);
+ case NODE_BACKREF:
+ if (! NODE_IS_BY_NAME(node))
+ return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
break;
default:
@@ -1923,7 +2058,7 @@ static int
disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
{
int r, i, pos, counter;
- BitStatusType loc;
+ MemStatusType loc;
GroupNumRemap* map;
map = (GroupNumRemap* )xalloca(sizeof(GroupNumRemap) * (env->num_mem + 1));
@@ -1940,16 +2075,16 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
for (i = 1, pos = 1; i <= env->num_mem; i++) {
if (map[i].new_val > 0) {
- SCANENV_MEM_NODES(env)[pos] = SCANENV_MEM_NODES(env)[i];
+ SCANENV_MEMENV(env)[pos] = SCANENV_MEMENV(env)[i];
pos++;
}
}
loc = env->capture_history;
- BIT_STATUS_CLEAR(env->capture_history);
+ MEM_STATUS_CLEAR(env->capture_history);
for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) {
- if (BIT_STATUS_AT(loc, i)) {
- BIT_STATUS_ON_AT_SIMPLE(env->capture_history, map[i].new_val);
+ if (MEM_STATUS_AT(loc, i)) {
+ MEM_STATUS_ON_SIMPLE(env->capture_history, map[i].new_val);
}
}
@@ -1958,97 +2093,29 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)
return onig_renumber_name_table(reg, map);
}
-#endif /* USE_NAMED_GROUP */
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
static int
-unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg)
+fix_unset_addr_list(UnsetAddrList* uslist, regex_t* reg)
{
int i, offset;
- EncloseNode* en;
+ EnclosureNode* en;
AbsAddrType addr;
for (i = 0; i < uslist->num; i++) {
- en = NENCLOSE(uslist->us[i].target);
- if (! IS_ENCLOSE_ADDR_FIXED(en)) return ONIGERR_PARSER_BUG;
- addr = en->call_addr;
+ if (! NODE_IS_ADDR_FIXED(uslist->us[i].target))
+ return ONIGERR_PARSER_BUG;
+
+ en = ENCLOSURE_(uslist->us[i].target);
+ addr = en->m.called_addr;
offset = uslist->us[i].offset;
- BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR);
+ BB_WRITE(reg, offset, &addr, SIZE_ABSADDR);
}
return 0;
}
#endif
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
-static int
-quantifiers_memory_node_info(Node* node)
-{
- int r = 0;
-
- switch (NTYPE(node)) {
- case NT_LIST:
- case NT_ALT:
- {
- int v;
- do {
- v = quantifiers_memory_node_info(NCAR(node));
- if (v > r) r = v;
- } while (v >= 0 && IS_NOT_NULL(node = NCDR(node)));
- }
- break;
-
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (IS_CALL_RECURSION(NCALL(node))) {
- return NQ_TARGET_IS_EMPTY_REC; /* tiny version */
- }
- else
- r = quantifiers_memory_node_info(NCALL(node)->target);
- break;
-#endif
-
- case NT_QTFR:
- {
- QtfrNode* qn = NQTFR(node);
- if (qn->upper != 0) {
- r = quantifiers_memory_node_info(qn->target);
- }
- }
- break;
-
- case NT_ENCLOSE:
- {
- EncloseNode* en = NENCLOSE(node);
- switch (en->type) {
- case ENCLOSE_MEMORY:
- return NQ_TARGET_IS_EMPTY_MEM;
- break;
-
- case ENCLOSE_OPTION:
- case ENCLOSE_STOP_BACKTRACK:
- r = quantifiers_memory_node_info(en->target);
- break;
- default:
- break;
- }
- }
- break;
-
- case NT_BREF:
- case NT_STR:
- case NT_CTYPE:
- case NT_CCLASS:
- case NT_CANY:
- case NT_ANCHOR:
- default:
- break;
- }
-
- return r;
-}
-#endif /* USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT */
-
#define GET_CHAR_LEN_VARLEN -1
#define GET_CHAR_LEN_TOP_ALT_VARLEN -2
@@ -2062,23 +2129,23 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
level++;
*len = 0;
- switch (NTYPE(node)) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
do {
- r = get_char_length_tree1(NCAR(node), reg, &tlen, level);
+ r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level);
if (r == 0)
*len = distance_add(*len, tlen);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_ALT:
+ case NODE_ALT:
{
int tlen2;
int varlen = 0;
- r = get_char_length_tree1(NCAR(node), reg, &tlen, level);
- while (r == 0 && IS_NOT_NULL(node = NCDR(node))) {
- r = get_char_length_tree1(NCAR(node), reg, &tlen2, level);
+ r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level);
+ while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))) {
+ r = get_char_length_tree1(NODE_CAR(node), reg, &tlen2, level);
if (r == 0) {
if (tlen != tlen2)
varlen = 1;
@@ -2097,10 +2164,11 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
}
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* sn = NSTR(node);
+ StrNode* sn = STR_(node);
UChar *s = sn->s;
+
while (s < sn->end) {
s += enclen(reg->enc, s);
(*len)++;
@@ -2108,67 +2176,102 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)
}
break;
- case NT_QTFR:
+ case NODE_QUANT:
{
- QtfrNode* qn = NQTFR(node);
+ QuantNode* qn = QUANT_(node);
+
if (qn->lower == qn->upper) {
- r = get_char_length_tree1(qn->target, reg, &tlen, level);
- if (r == 0)
- *len = distance_multiply(tlen, qn->lower);
+ if (qn->upper == 0) {
+ *len = 0;
+ }
+ else {
+ r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level);
+ if (r == 0)
+ *len = distance_multiply(tlen, qn->lower);
+ }
}
else
r = GET_CHAR_LEN_VARLEN;
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (! IS_CALL_RECURSION(NCALL(node)))
- r = get_char_length_tree1(NCALL(node)->target, reg, len, level);
+#ifdef USE_CALL
+ case NODE_CALL:
+ if (! NODE_IS_RECURSION(node))
+ r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
else
r = GET_CHAR_LEN_VARLEN;
break;
#endif
- case NT_CTYPE:
- *len = 1;
- break;
-
- case NT_CCLASS:
- case NT_CANY:
+ case NODE_CTYPE:
+ case NODE_CCLASS:
*len = 1;
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
+
switch (en->type) {
- case ENCLOSE_MEMORY:
-#ifdef USE_SUBEXP_CALL
- if (IS_ENCLOSE_CLEN_FIXED(en))
+ case ENCLOSURE_MEMORY:
+#ifdef USE_CALL
+ if (NODE_IS_CLEN_FIXED(node))
*len = en->char_len;
else {
- r = get_char_length_tree1(en->target, reg, len, level);
+ r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
if (r == 0) {
en->char_len = *len;
- SET_ENCLOSE_STATUS(node, NST_CLEN_FIXED);
+ NODE_STATUS_ADD(node, CLEN_FIXED);
}
}
break;
#endif
- case ENCLOSE_OPTION:
- case ENCLOSE_STOP_BACKTRACK:
- r = get_char_length_tree1(en->target, reg, len, level);
+ case ENCLOSURE_OPTION:
+ case ENCLOSURE_STOP_BACKTRACK:
+ r = get_char_length_tree1(NODE_BODY(node), reg, len, level);
+ break;
+ case ENCLOSURE_IF_ELSE:
+ {
+ int clen, elen;
+
+ r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level);
+ if (r == 0) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = get_char_length_tree1(en->te.Then, reg, &tlen, level);
+ if (r != 0) break;
+ }
+ else tlen = 0;
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = get_char_length_tree1(en->te.Else, reg, &elen, level);
+ if (r != 0) break;
+ }
+ else elen = 0;
+
+ if (clen + tlen != elen) {
+ r = GET_CHAR_LEN_VARLEN;
+ }
+ else {
+ *len = elen;
+ }
+ }
+ }
break;
+
default:
break;
}
}
break;
- case NT_ANCHOR:
+ case NODE_ANCHOR:
+ case NODE_GIMMICK:
break;
+ case NODE_BACKREF:
+ if (NODE_IS_CHECKER(node))
+ break;
+ /* fall */
default:
r = GET_CHAR_LEN_VARLEN;
break;
@@ -2185,28 +2288,33 @@ get_char_length_tree(Node* node, regex_t* reg, int* len)
/* x is not included y ==> 1 : 0 */
static int
-is_not_included(Node* x, Node* y, regex_t* reg)
+is_exclusive(Node* x, Node* y, regex_t* reg)
{
int i, len;
OnigCodePoint code;
UChar *p;
- int ytype;
+ NodeType ytype;
retry:
- ytype = NTYPE(y);
- switch (NTYPE(x)) {
- case NT_CTYPE:
+ ytype = NODE_TYPE(y);
+ switch (NODE_TYPE(x)) {
+ case NODE_CTYPE:
{
+ if (CTYPE_(x)->ctype == CTYPE_ANYCHAR ||
+ CTYPE_(y)->ctype == CTYPE_ANYCHAR)
+ break;
+
switch (ytype) {
- case NT_CTYPE:
- if (NCTYPE(y)->ctype == NCTYPE(x)->ctype &&
- NCTYPE(y)->not != NCTYPE(x)->not)
+ case NODE_CTYPE:
+ if (CTYPE_(y)->ctype == CTYPE_(x)->ctype &&
+ CTYPE_(y)->not != CTYPE_(x)->not &&
+ CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode)
return 1;
else
return 0;
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
swap:
{
Node* tmp;
@@ -2215,7 +2323,7 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_STR:
+ case NODE_STRING:
goto swap;
break;
@@ -2225,18 +2333,25 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
{
- CClassNode* xc = NCCLASS(x);
+ int range;
+ CClassNode* xc = CCLASS_(x);
+
switch (ytype) {
- case NT_CTYPE:
- switch (NCTYPE(y)->ctype) {
+ case NODE_CTYPE:
+ switch (CTYPE_(y)->ctype) {
+ case CTYPE_ANYCHAR:
+ return 0;
+ break;
+
case ONIGENC_CTYPE_WORD:
- if (NCTYPE(y)->not == 0) {
+ if (CTYPE_(y)->not == 0) {
if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+ range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+ for (i = 0; i < range; i++) {
if (BITSET_AT(xc->bs, i)) {
- if (IS_CODE_SB_WORD(reg->enc, i)) return 0;
+ if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0;
}
}
return 1;
@@ -2245,18 +2360,18 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
else {
if (IS_NOT_NULL(xc->mbuf)) return 0;
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
- if (! IS_CODE_SB_WORD(reg->enc, i)) {
- if (!IS_NCCLASS_NOT(xc)) {
- if (BITSET_AT(xc->bs, i))
- return 0;
- }
- else {
- if (! BITSET_AT(xc->bs, i))
- return 0;
- }
+ if (IS_NCCLASS_NOT(xc)) return 0;
+
+ range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+ for (i = 0; i < range; i++) {
+ if (! ONIGENC_IS_CODE_WORD(reg->enc, i)) {
+ if (BITSET_AT(xc->bs, i))
+ return 0;
}
}
+ for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+ if (BITSET_AT(xc->bs, i)) return 0;
+ }
return 1;
}
break;
@@ -2266,15 +2381,14 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
{
int v;
- CClassNode* yc = NCCLASS(y);
+ CClassNode* yc = CCLASS_(y);
for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
v = BITSET_AT(xc->bs, i);
- if ((v != 0 && !IS_NCCLASS_NOT(xc)) ||
- (v == 0 && IS_NCCLASS_NOT(xc))) {
+ if ((v != 0 && !IS_NCCLASS_NOT(xc)) || (v == 0 && IS_NCCLASS_NOT(xc))) {
v = BITSET_AT(yc->bs, i);
if ((v != 0 && !IS_NCCLASS_NOT(yc)) ||
(v == 0 && IS_NCCLASS_NOT(yc)))
@@ -2288,7 +2402,7 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_STR:
+ case NODE_STRING:
goto swap;
break;
@@ -2298,30 +2412,41 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* xs = NSTR(x);
- if (NSTRING_LEN(x) == 0)
+ StrNode* xs = STR_(x);
+
+ if (NODE_STRING_LEN(x) == 0)
break;
- //c = *(xs->s);
switch (ytype) {
- case NT_CTYPE:
- switch (NCTYPE(y)->ctype) {
+ case NODE_CTYPE:
+ switch (CTYPE_(y)->ctype) {
+ case CTYPE_ANYCHAR:
+ break;
+
case ONIGENC_CTYPE_WORD:
- if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
- return NCTYPE(y)->not;
- else
- return !(NCTYPE(y)->not);
+ if (CTYPE_(y)->ascii_mode == 0) {
+ if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))
+ return CTYPE_(y)->not;
+ else
+ return !(CTYPE_(y)->not);
+ }
+ else {
+ if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end))
+ return CTYPE_(y)->not;
+ else
+ return !(CTYPE_(y)->not);
+ }
break;
default:
break;
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
{
- CClassNode* cc = NCCLASS(y);
+ CClassNode* cc = CCLASS_(y);
code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s,
xs->s + ONIGENC_MBC_MAXLEN(reg->enc));
@@ -2329,13 +2454,14 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
break;
- case NT_STR:
+ case NODE_STRING:
{
UChar *q;
- StrNode* ys = NSTR(y);
- len = NSTRING_LEN(x);
- if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y);
- if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) {
+ StrNode* ys = STR_(y);
+
+ len = NODE_STRING_LEN(x);
+ if (len > NODE_STRING_LEN(y)) len = NODE_STRING_LEN(y);
+ if (NODE_STRING_IS_AMBIG(x) || NODE_STRING_IS_AMBIG(y)) {
/* tiny version */
return 0;
}
@@ -2346,7 +2472,7 @@ is_not_included(Node* x, Node* y, regex_t* reg)
}
}
break;
-
+
default:
break;
}
@@ -2365,35 +2491,37 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
{
Node* n = NULL_NODE;
- switch (NTYPE(node)) {
- case NT_BREF:
- case NT_ALT:
- case NT_CANY:
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
+ switch (NODE_TYPE(node)) {
+ case NODE_BACKREF:
+ case NODE_ALT:
+#ifdef USE_CALL
+ case NODE_CALL:
#endif
break;
- case NT_CTYPE:
- case NT_CCLASS:
+ case NODE_CTYPE:
+ if (CTYPE_(node)->ctype == CTYPE_ANYCHAR)
+ break;
+ /* fall */
+ case NODE_CCLASS:
if (exact == 0) {
n = node;
}
break;
- case NT_LIST:
- n = get_head_value_node(NCAR(node), exact, reg);
+ case NODE_LIST:
+ n = get_head_value_node(NODE_CAR(node), exact, reg);
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* sn = NSTR(node);
+ StrNode* sn = STR_(node);
if (sn->end <= sn->s)
break;
if (exact != 0 &&
- !NSTRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) {
+ !NODE_STRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) {
}
else {
n = node;
@@ -2401,45 +2529,47 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
}
break;
- case NT_QTFR:
+ case NODE_QUANT:
{
- QtfrNode* qn = NQTFR(node);
+ QuantNode* qn = QUANT_(node);
if (qn->lower > 0) {
if (IS_NOT_NULL(qn->head_exact))
n = qn->head_exact;
else
- n = get_head_value_node(qn->target, exact, reg);
+ n = get_head_value_node(NODE_BODY(node), exact, reg);
}
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
switch (en->type) {
- case ENCLOSE_OPTION:
+ case ENCLOSURE_OPTION:
{
OnigOptionType options = reg->options;
- reg->options = NENCLOSE(node)->option;
- n = get_head_value_node(NENCLOSE(node)->target, exact, reg);
+ reg->options = ENCLOSURE_(node)->o.options;
+ n = get_head_value_node(NODE_BODY(node), exact, reg);
reg->options = options;
}
break;
- case ENCLOSE_MEMORY:
- case ENCLOSE_STOP_BACKTRACK:
- n = get_head_value_node(en->target, exact, reg);
+ case ENCLOSURE_MEMORY:
+ case ENCLOSURE_STOP_BACKTRACK:
+ case ENCLOSURE_IF_ELSE:
+ n = get_head_value_node(NODE_BODY(node), exact, reg);
break;
}
}
break;
- case NT_ANCHOR:
- if (NANCHOR(node)->type == ANCHOR_PREC_READ)
- n = get_head_value_node(NANCHOR(node)->target, exact, reg);
+ case NODE_ANCHOR:
+ if (ANCHOR_(node)->type == ANCHOR_PREC_READ)
+ n = get_head_value_node(NODE_BODY(node), exact, reg);
break;
+ case NODE_GIMMICK:
default:
break;
}
@@ -2448,298 +2578,396 @@ get_head_value_node(Node* node, int exact, regex_t* reg)
}
static int
-check_type_tree(Node* node, int type_mask, int enclose_mask, int anchor_mask)
+check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask)
{
- int type, r = 0;
+ NodeType type;
+ int r = 0;
- type = NTYPE(node);
- if ((NTYPE2BIT(type) & type_mask) == 0)
+ type = NODE_TYPE(node);
+ if ((NODE_TYPE2BIT(type) & type_mask) == 0)
return 1;
switch (type) {
- case NT_LIST:
- case NT_ALT:
+ case NODE_LIST:
+ case NODE_ALT:
do {
- r = check_type_tree(NCAR(node), type_mask, enclose_mask,
+ r = check_type_tree(NODE_CAR(node), type_mask, enclosure_mask,
anchor_mask);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_QTFR:
- r = check_type_tree(NQTFR(node)->target, type_mask, enclose_mask,
- anchor_mask);
+ case NODE_QUANT:
+ r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
- if ((en->type & enclose_mask) == 0)
+ EnclosureNode* en = ENCLOSURE_(node);
+ if (((1<<en->type) & enclosure_mask) == 0)
return 1;
- r = check_type_tree(en->target, type_mask, enclose_mask, anchor_mask);
+ r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
+ if (r == 0 && en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = check_type_tree(en->te.Then, type_mask, enclosure_mask, anchor_mask);
+ if (r != 0) break;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = check_type_tree(en->te.Else, type_mask, enclosure_mask, anchor_mask);
+ }
+ }
}
break;
- case NT_ANCHOR:
- type = NANCHOR(node)->type;
+ case NODE_ANCHOR:
+ type = ANCHOR_(node)->type;
if ((type & anchor_mask) == 0)
return 1;
- if (NANCHOR(node)->target)
- r = check_type_tree(NANCHOR(node)->target,
- type_mask, enclose_mask, anchor_mask);
+ if (IS_NOT_NULL(NODE_BODY(node)))
+ r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask);
break;
+ case NODE_GIMMICK:
default:
break;
}
return r;
}
-static int
-get_min_len(Node* node, OnigLen *min, ScanEnv* env)
+static OnigLen
+tree_min_len(Node* node, ScanEnv* env)
{
+ OnigLen len;
OnigLen tmin;
- int r = 0;
- *min = 0;
- switch (NTYPE(node)) {
- case NT_BREF:
- {
+ len = 0;
+ switch (NODE_TYPE(node)) {
+ case NODE_BACKREF:
+ if (! NODE_IS_CHECKER(node)) {
int i;
int* backs;
- Node** nodes = SCANENV_MEM_NODES(env);
- BRefNode* br = NBREF(node);
- if (br->state & NST_RECURSION) break;
+ MemEnv* mem_env = SCANENV_MEMENV(env);
+ BackRefNode* br = BACKREF_(node);
+ if (NODE_IS_RECURSION(node)) break;
backs = BACKREFS_P(br);
- if (backs[0] > env->num_mem) return ONIGERR_INVALID_BACKREF;
- r = get_min_len(nodes[backs[0]], min, env);
- if (r != 0) break;
+ len = tree_min_len(mem_env[backs[0]].node, env);
for (i = 1; i < br->back_num; i++) {
- if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF;
- r = get_min_len(nodes[backs[i]], &tmin, env);
- if (r != 0) break;
- if (*min > tmin) *min = tmin;
+ tmin = tree_min_len(mem_env[backs[i]].node, env);
+ if (len > tmin) len = tmin;
}
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (IS_CALL_RECURSION(NCALL(node))) {
- EncloseNode* en = NENCLOSE(NCALL(node)->target);
- if (IS_ENCLOSE_MIN_FIXED(en))
- *min = en->min_len;
+#ifdef USE_CALL
+ case NODE_CALL:
+ {
+ Node* t = NODE_BODY(node);
+ if (NODE_IS_RECURSION(node)) {
+ if (NODE_IS_MIN_FIXED(t))
+ len = ENCLOSURE_(t)->min_len;
+ }
+ else
+ len = tree_min_len(t, env);
}
- else
- r = get_min_len(NCALL(node)->target, min, env);
break;
#endif
- case NT_LIST:
+ case NODE_LIST:
do {
- r = get_min_len(NCAR(node), &tmin, env);
- if (r == 0) *min += tmin;
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ tmin = tree_min_len(NODE_CAR(node), env);
+ len = distance_add(len, tmin);
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_ALT:
+ case NODE_ALT:
{
Node *x, *y;
y = node;
do {
- x = NCAR(y);
- r = get_min_len(x, &tmin, env);
- if (r != 0) break;
- if (y == node) *min = tmin;
- else if (*min > tmin) *min = tmin;
- } while (r == 0 && IS_NOT_NULL(y = NCDR(y)));
+ x = NODE_CAR(y);
+ tmin = tree_min_len(x, env);
+ if (y == node) len = tmin;
+ else if (len > tmin) len = tmin;
+ } while (IS_NOT_NULL(y = NODE_CDR(y)));
}
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* sn = NSTR(node);
- *min = sn->end - sn->s;
+ StrNode* sn = STR_(node);
+ len = (int )(sn->end - sn->s);
}
break;
- case NT_CTYPE:
- *min = 1;
+ case NODE_CTYPE:
+ case NODE_CCLASS:
+ len = ONIGENC_MBC_MINLEN(env->enc);
break;
- case NT_CCLASS:
- case NT_CANY:
- *min = 1;
- break;
-
- case NT_QTFR:
+ case NODE_QUANT:
{
- QtfrNode* qn = NQTFR(node);
+ QuantNode* qn = QUANT_(node);
if (qn->lower > 0) {
- r = get_min_len(qn->target, min, env);
- if (r == 0)
- *min = distance_multiply(*min, qn->lower);
+ len = tree_min_len(NODE_BODY(node), env);
+ len = distance_multiply(len, qn->lower);
}
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
switch (en->type) {
- case ENCLOSE_MEMORY:
- if (IS_ENCLOSE_MIN_FIXED(en))
- *min = en->min_len;
+ case ENCLOSURE_MEMORY:
+ if (NODE_IS_MIN_FIXED(node))
+ len = en->min_len;
else {
- if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
- *min = 0; // recursive
+ if (NODE_IS_MARK1(node))
+ len = 0; /* recursive */
else {
- SET_ENCLOSE_STATUS(node, NST_MARK1);
- r = get_min_len(en->target, min, env);
- CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
- if (r == 0) {
- en->min_len = *min;
- SET_ENCLOSE_STATUS(node, NST_MIN_FIXED);
- }
+ NODE_STATUS_ADD(node, MARK1);
+ len = tree_min_len(NODE_BODY(node), env);
+ NODE_STATUS_REMOVE(node, MARK1);
+
+ en->min_len = len;
+ NODE_STATUS_ADD(node, MIN_FIXED);
}
}
break;
- case ENCLOSE_OPTION:
- case ENCLOSE_STOP_BACKTRACK:
- r = get_min_len(en->target, min, env);
+ case ENCLOSURE_OPTION:
+ case ENCLOSURE_STOP_BACKTRACK:
+ len = tree_min_len(NODE_BODY(node), env);
+ break;
+ case ENCLOSURE_IF_ELSE:
+ {
+ OnigLen elen;
+
+ len = tree_min_len(NODE_BODY(node), env);
+ if (IS_NOT_NULL(en->te.Then))
+ len += tree_min_len(en->te.Then, env);
+ if (IS_NOT_NULL(en->te.Else))
+ elen = tree_min_len(en->te.Else, env);
+ else elen = 0;
+
+ if (elen < len) len = elen;
+ }
break;
}
}
break;
- case NT_ANCHOR:
+ case NODE_GIMMICK:
+ {
+ GimmickNode* g = GIMMICK_(node);
+ if (g->type == GIMMICK_FAIL) {
+ len = INFINITE_LEN;
+ break;
+ }
+ }
+ /* fall */
+ case NODE_ANCHOR:
default:
break;
}
- return r;
+ return len;
}
-static int
-get_max_len(Node* node, OnigLen *max, ScanEnv* env)
+static OnigLen
+tree_max_len(Node* node, ScanEnv* env)
{
+ OnigLen len;
OnigLen tmax;
- int r = 0;
- *max = 0;
- switch (NTYPE(node)) {
- case NT_LIST:
+ len = 0;
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
do {
- r = get_max_len(NCAR(node), &tmax, env);
- if (r == 0)
- *max = distance_add(*max, tmax);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ tmax = tree_max_len(NODE_CAR(node), env);
+ len = distance_add(len, tmax);
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_ALT:
+ case NODE_ALT:
do {
- r = get_max_len(NCAR(node), &tmax, env);
- if (r == 0 && *max < tmax) *max = tmax;
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ tmax = tree_max_len(NODE_CAR(node), env);
+ if (len < tmax) len = tmax;
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* sn = NSTR(node);
- *max = sn->end - sn->s;
+ StrNode* sn = STR_(node);
+ len = (OnigLen )(sn->end - sn->s);
}
break;
- case NT_CTYPE:
- *max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
- break;
-
- case NT_CCLASS:
- case NT_CANY:
- *max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
+ case NODE_CTYPE:
+ case NODE_CCLASS:
+ len = ONIGENC_MBC_MAXLEN_DIST(env->enc);
break;
- case NT_BREF:
- {
+ case NODE_BACKREF:
+ if (! NODE_IS_CHECKER(node)) {
int i;
int* backs;
- Node** nodes = SCANENV_MEM_NODES(env);
- BRefNode* br = NBREF(node);
- if (br->state & NST_RECURSION) {
- *max = ONIG_INFINITE_DISTANCE;
+ MemEnv* mem_env = SCANENV_MEMENV(env);
+ BackRefNode* br = BACKREF_(node);
+ if (NODE_IS_RECURSION(node)) {
+ len = INFINITE_LEN;
break;
}
backs = BACKREFS_P(br);
for (i = 0; i < br->back_num; i++) {
- if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF;
- r = get_max_len(nodes[backs[i]], &tmax, env);
- if (r != 0) break;
- if (*max < tmax) *max = tmax;
+ tmax = tree_max_len(mem_env[backs[i]].node, env);
+ if (len < tmax) len = tmax;
}
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (! IS_CALL_RECURSION(NCALL(node)))
- r = get_max_len(NCALL(node)->target, max, env);
+#ifdef USE_CALL
+ case NODE_CALL:
+ if (! NODE_IS_RECURSION(node))
+ len = tree_max_len(NODE_BODY(node), env);
else
- *max = ONIG_INFINITE_DISTANCE;
+ len = INFINITE_LEN;
break;
#endif
- case NT_QTFR:
+ case NODE_QUANT:
{
- QtfrNode* qn = NQTFR(node);
+ QuantNode* qn = QUANT_(node);
if (qn->upper != 0) {
- r = get_max_len(qn->target, max, env);
- if (r == 0 && *max != 0) {
+ len = tree_max_len(NODE_BODY(node), env);
+ if (len != 0) {
if (! IS_REPEAT_INFINITE(qn->upper))
- *max = distance_multiply(*max, qn->upper);
+ len = distance_multiply(len, qn->upper);
else
- *max = ONIG_INFINITE_DISTANCE;
+ len = INFINITE_LEN;
}
}
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
switch (en->type) {
- case ENCLOSE_MEMORY:
- if (IS_ENCLOSE_MAX_FIXED(en))
- *max = en->max_len;
+ case ENCLOSURE_MEMORY:
+ if (NODE_IS_MAX_FIXED(node))
+ len = en->max_len;
else {
- if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
- *max = ONIG_INFINITE_DISTANCE;
+ if (NODE_IS_MARK1(node))
+ len = INFINITE_LEN;
else {
- SET_ENCLOSE_STATUS(node, NST_MARK1);
- r = get_max_len(en->target, max, env);
- CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
- if (r == 0) {
- en->max_len = *max;
- SET_ENCLOSE_STATUS(node, NST_MAX_FIXED);
- }
+ NODE_STATUS_ADD(node, MARK1);
+ len = tree_max_len(NODE_BODY(node), env);
+ NODE_STATUS_REMOVE(node, MARK1);
+
+ en->max_len = len;
+ NODE_STATUS_ADD(node, MAX_FIXED);
}
}
break;
- case ENCLOSE_OPTION:
- case ENCLOSE_STOP_BACKTRACK:
- r = get_max_len(en->target, max, env);
+ case ENCLOSURE_OPTION:
+ case ENCLOSURE_STOP_BACKTRACK:
+ len = tree_max_len(NODE_BODY(node), env);
break;
+ case ENCLOSURE_IF_ELSE:
+ {
+ OnigLen tlen, elen;
+
+ len = tree_max_len(NODE_BODY(node), env);
+ if (IS_NOT_NULL(en->te.Then)) {
+ tlen = tree_max_len(en->te.Then, env);
+ len = distance_add(len, tlen);
+ }
+ if (IS_NOT_NULL(en->te.Else))
+ elen = tree_max_len(en->te.Else, env);
+ else elen = 0;
+
+ if (elen > len) len = elen;
+ }
+ break;
+ }
+ }
+ break;
+
+ case NODE_ANCHOR:
+ case NODE_GIMMICK:
+ default:
+ break;
+ }
+
+ return len;
+}
+
+static int
+check_backrefs(Node* node, ScanEnv* env)
+{
+ int r;
+
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
+ do {
+ r = check_backrefs(NODE_CAR(node), env);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
+
+ case NODE_ANCHOR:
+ if (! ANCHOR_HAS_BODY(ANCHOR_(node))) {
+ r = 0;
+ break;
+ }
+ /* fall */
+ case NODE_QUANT:
+ r = check_backrefs(NODE_BODY(node), env);
+ break;
+
+ case NODE_ENCLOSURE:
+ r = check_backrefs(NODE_BODY(node), env);
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ if (r != 0) return r;
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = check_backrefs(en->te.Then, env);
+ if (r != 0) return r;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = check_backrefs(en->te.Else, env);
+ }
}
}
break;
- case NT_ANCHOR:
+ case NODE_BACKREF:
+ {
+ int i;
+ BackRefNode* br = BACKREF_(node);
+ int* backs = BACKREFS_P(br);
+ MemEnv* mem_env = SCANENV_MEMENV(env);
+
+ for (i = 0; i < br->back_num; i++) {
+ if (backs[i] > env->num_mem)
+ return ONIGERR_INVALID_BACKREF;
+
+ NODE_STATUS_ADD(mem_env[backs[i]].node, BACKREF);
+ }
+ r = 0;
+ }
+ break;
+
default:
+ r = 0;
break;
}
@@ -2747,85 +2975,114 @@ get_max_len(Node* node, OnigLen *max, ScanEnv* env)
}
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
-#define RECURSION_EXIST 1
-#define RECURSION_INFINITE 2
+#define RECURSION_EXIST (1<<0)
+#define RECURSION_MUST (1<<1)
+#define RECURSION_INFINITE (1<<2)
static int
-subexp_inf_recursive_check(Node* node, ScanEnv* env, int head)
+infinite_recursive_call_check(Node* node, ScanEnv* env, int head)
{
- int type;
+ int ret;
int r = 0;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
{
Node *x;
OnigLen min;
- int ret;
x = node;
do {
- ret = subexp_inf_recursive_check(NCAR(x), env, head);
- if (ret < 0 || ret == RECURSION_INFINITE) return ret;
+ ret = infinite_recursive_call_check(NODE_CAR(x), env, head);
+ if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret;
r |= ret;
- if (head) {
- ret = get_min_len(NCAR(x), &min, env);
- if (ret != 0) return ret;
+ if (head != 0) {
+ min = tree_min_len(NODE_CAR(x), env);
if (min != 0) head = 0;
}
- } while (IS_NOT_NULL(x = NCDR(x)));
+ } while (IS_NOT_NULL(x = NODE_CDR(x)));
}
break;
- case NT_ALT:
+ case NODE_ALT:
{
- int ret;
- r = RECURSION_EXIST;
+ int must;
+
+ must = RECURSION_MUST;
do {
- ret = subexp_inf_recursive_check(NCAR(node), env, head);
- if (ret < 0 || ret == RECURSION_INFINITE) return ret;
- r &= ret;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ ret = infinite_recursive_call_check(NODE_CAR(node), env, head);
+ if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret;
+
+ r |= (ret & RECURSION_EXIST);
+ must &= ret;
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
+ r |= must;
}
break;
- case NT_QTFR:
- r = subexp_inf_recursive_check(NQTFR(node)->target, env, head);
- if (r == RECURSION_EXIST) {
- if (NQTFR(node)->lower == 0) r = 0;
+ case NODE_QUANT:
+ r = infinite_recursive_call_check(NODE_BODY(node), env, head);
+ if (r < 0) return r;
+ if ((r & RECURSION_MUST) != 0) {
+ if (QUANT_(node)->lower == 0)
+ r &= ~RECURSION_MUST;
}
break;
- case NT_ANCHOR:
+ case NODE_ANCHOR:
+ if (! ANCHOR_HAS_BODY(ANCHOR_(node)))
+ break;
+ /* fall */
+ case NODE_CALL:
+ r = infinite_recursive_call_check(NODE_BODY(node), env, head);
+ break;
+
+ case NODE_ENCLOSURE:
{
- AnchorNode* an = NANCHOR(node);
- switch (an->type) {
- case ANCHOR_PREC_READ:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
- case ANCHOR_LOOK_BEHIND_NOT:
- r = subexp_inf_recursive_check(an->target, env, head);
- break;
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_MARK2(node))
+ return 0;
+ else if (NODE_IS_MARK1(node))
+ return (head == 0 ? RECURSION_EXIST | RECURSION_MUST
+ : RECURSION_EXIST | RECURSION_MUST | RECURSION_INFINITE);
+ else {
+ NODE_STATUS_ADD(node, MARK2);
+ r = infinite_recursive_call_check(NODE_BODY(node), env, head);
+ NODE_STATUS_REMOVE(node, MARK2);
+ }
}
- }
- break;
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ int eret;
- case NT_CALL:
- r = subexp_inf_recursive_check(NCALL(node)->target, env, head);
- break;
+ ret = infinite_recursive_call_check(NODE_BODY(node), env, head);
+ if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret;
+ r |= ret;
+ if (IS_NOT_NULL(en->te.Then)) {
+ OnigLen min;
+ if (head != 0) {
+ min = tree_min_len(NODE_BODY(node), env);
+ }
+ else min = 0;
- case NT_ENCLOSE:
- if (IS_ENCLOSE_MARK2(NENCLOSE(node)))
- return 0;
- else if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
- return (head == 0 ? RECURSION_EXIST : RECURSION_INFINITE);
- else {
- SET_ENCLOSE_STATUS(node, NST_MARK2);
- r = subexp_inf_recursive_check(NENCLOSE(node)->target, env, head);
- CLEAR_ENCLOSE_STATUS(node, NST_MARK2);
+ ret = infinite_recursive_call_check(en->te.Then, env, min != 0 ? 0:head);
+ if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret;
+ r |= ret;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ eret = infinite_recursive_call_check(en->te.Else, env, head);
+ if (eret < 0 || (eret & RECURSION_INFINITE) != 0) return eret;
+ r |= (eret & RECURSION_EXIST);
+ if ((eret & RECURSION_MUST) == 0)
+ r &= ~RECURSION_MUST;
+ }
+ }
+ else {
+ r = infinite_recursive_call_check(NODE_BODY(node), env, head);
+ }
}
break;
@@ -2837,53 +3094,63 @@ subexp_inf_recursive_check(Node* node, ScanEnv* env, int head)
}
static int
-subexp_inf_recursive_check_trav(Node* node, ScanEnv* env)
+infinite_recursive_call_check_trav(Node* node, ScanEnv* env)
{
- int type;
- int r = 0;
+ int r;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
do {
- r = subexp_inf_recursive_check_trav(NCAR(node), env);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
- break;
-
- case NT_QTFR:
- r = subexp_inf_recursive_check_trav(NQTFR(node)->target, env);
+ r = infinite_recursive_call_check_trav(NODE_CAR(node), env);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_ANCHOR:
- {
- AnchorNode* an = NANCHOR(node);
- switch (an->type) {
- case ANCHOR_PREC_READ:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
- case ANCHOR_LOOK_BEHIND_NOT:
- r = subexp_inf_recursive_check_trav(an->target, env);
- break;
- }
+ case NODE_ANCHOR:
+ if (! ANCHOR_HAS_BODY(ANCHOR_(node))) {
+ r = 0;
+ break;
}
+ /* fall */
+ case NODE_QUANT:
+ r = infinite_recursive_call_check_trav(NODE_BODY(node), env);
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_RECURSION(node) && NODE_IS_CALLED(node)) {
+ int ret;
- if (IS_ENCLOSE_RECURSION(en)) {
- SET_ENCLOSE_STATUS(node, NST_MARK1);
- r = subexp_inf_recursive_check(en->target, env, 1);
- if (r > 0) return ONIGERR_NEVER_ENDING_RECURSION;
- CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
+ NODE_STATUS_ADD(node, MARK1);
+
+ ret = infinite_recursive_call_check(NODE_BODY(node), env, 1);
+ if (ret < 0) return ret;
+ else if ((ret & (RECURSION_MUST | RECURSION_INFINITE)) != 0)
+ return ONIGERR_NEVER_ENDING_RECURSION;
+
+ NODE_STATUS_REMOVE(node, MARK1);
+ }
+ }
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = infinite_recursive_call_check_trav(en->te.Then, env);
+ if (r != 0) return r;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = infinite_recursive_call_check_trav(en->te.Else, env);
+ if (r != 0) return r;
+ }
}
- r = subexp_inf_recursive_check_trav(en->target, env);
}
+
+ r = infinite_recursive_call_check_trav(NODE_BODY(node), env);
break;
default:
+ r = 0;
break;
}
@@ -2891,228 +3158,154 @@ subexp_inf_recursive_check_trav(Node* node, ScanEnv* env)
}
static int
-subexp_recursive_check(Node* node)
+recursive_call_check(Node* node)
{
- int r = 0;
+ int r;
- switch (NTYPE(node)) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
+ r = 0;
do {
- r |= subexp_recursive_check(NCAR(node));
- } while (IS_NOT_NULL(node = NCDR(node)));
+ r |= recursive_call_check(NODE_CAR(node));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_QTFR:
- r = subexp_recursive_check(NQTFR(node)->target);
+ case NODE_ANCHOR:
+ if (! ANCHOR_HAS_BODY(ANCHOR_(node))) {
+ r = 0;
+ break;
+ }
+ /* fall */
+ case NODE_QUANT:
+ r = recursive_call_check(NODE_BODY(node));
break;
- case NT_ANCHOR:
- {
- AnchorNode* an = NANCHOR(node);
- switch (an->type) {
- case ANCHOR_PREC_READ:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
- case ANCHOR_LOOK_BEHIND_NOT:
- r = subexp_recursive_check(an->target);
- break;
- }
+ case NODE_CALL:
+ r = recursive_call_check(NODE_BODY(node));
+ if (r != 0) {
+ if (NODE_IS_MARK1(NODE_BODY(node)))
+ NODE_STATUS_ADD(node, RECURSION);
}
break;
- case NT_CALL:
- r = subexp_recursive_check(NCALL(node)->target);
- if (r != 0) SET_CALL_RECURSION(node);
- break;
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
- case NT_ENCLOSE:
- if (IS_ENCLOSE_MARK2(NENCLOSE(node)))
- return 0;
- else if (IS_ENCLOSE_MARK1(NENCLOSE(node)))
- return 1; /* recursion */
- else {
- SET_ENCLOSE_STATUS(node, NST_MARK2);
- r = subexp_recursive_check(NENCLOSE(node)->target);
- CLEAR_ENCLOSE_STATUS(node, NST_MARK2);
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_MARK2(node))
+ return 0;
+ else if (NODE_IS_MARK1(node))
+ return 1; /* recursion */
+ else {
+ NODE_STATUS_ADD(node, MARK2);
+ r = recursive_call_check(NODE_BODY(node));
+ NODE_STATUS_REMOVE(node, MARK2);
+ }
+ }
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ r = 0;
+ if (IS_NOT_NULL(en->te.Then)) {
+ r |= recursive_call_check(en->te.Then);
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ r |= recursive_call_check(en->te.Else);
+ }
+ r |= recursive_call_check(NODE_BODY(node));
+ }
+ else {
+ r = recursive_call_check(NODE_BODY(node));
+ }
}
break;
default:
+ r = 0;
break;
}
return r;
}
+#define IN_RECURSION (1<<0)
+#define FOUND_CALLED_NODE 1
static int
-subexp_recursive_check_trav(Node* node, ScanEnv* env)
+recursive_call_check_trav(Node* node, ScanEnv* env, int state)
{
-#define FOUND_CALLED_NODE 1
-
- int type;
int r = 0;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
- case NT_ALT:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
{
int ret;
do {
- ret = subexp_recursive_check_trav(NCAR(node), env);
+ ret = recursive_call_check_trav(NODE_CAR(node), env, state);
if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE;
else if (ret < 0) return ret;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
}
break;
- case NT_QTFR:
- r = subexp_recursive_check_trav(NQTFR(node)->target, env);
- if (NQTFR(node)->upper == 0) {
+ case NODE_QUANT:
+ r = recursive_call_check_trav(NODE_BODY(node), env, state);
+ if (QUANT_(node)->upper == 0) {
if (r == FOUND_CALLED_NODE)
- NQTFR(node)->is_refered = 1;
+ QUANT_(node)->is_refered = 1;
}
break;
- case NT_ANCHOR:
+ case NODE_ANCHOR:
{
- AnchorNode* an = NANCHOR(node);
- switch (an->type) {
- case ANCHOR_PREC_READ:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
- case ANCHOR_LOOK_BEHIND_NOT:
- r = subexp_recursive_check_trav(an->target, env);
- break;
- }
+ AnchorNode* an = ANCHOR_(node);
+ if (ANCHOR_HAS_BODY(an))
+ r = recursive_call_check_trav(NODE_ANCHOR_BODY(an), env, state);
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
-
- if (! IS_ENCLOSE_RECURSION(en)) {
- if (IS_ENCLOSE_CALLED(en)) {
- SET_ENCLOSE_STATUS(node, NST_MARK1);
- r = subexp_recursive_check(en->target);
- if (r != 0) SET_ENCLOSE_STATUS(node, NST_RECURSION);
- CLEAR_ENCLOSE_STATUS(node, NST_MARK1);
+ int ret;
+ int state1;
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_CALLED(node) || (state & IN_RECURSION) != 0) {
+ if (! NODE_IS_RECURSION(node)) {
+ NODE_STATUS_ADD(node, MARK1);
+ r = recursive_call_check(NODE_BODY(node));
+ if (r != 0)
+ NODE_STATUS_ADD(node, RECURSION);
+ NODE_STATUS_REMOVE(node, MARK1);
+ }
+
+ if (NODE_IS_CALLED(node))
+ r = FOUND_CALLED_NODE;
}
}
- r = subexp_recursive_check_trav(en->target, env);
- if (IS_ENCLOSE_CALLED(en))
- r |= FOUND_CALLED_NODE;
- }
- break;
-
- default:
- break;
- }
-
- return r;
-}
-
-static int
-setup_subexp_call(Node* node, ScanEnv* env)
-{
- int type;
- int r = 0;
-
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
- do {
- r = setup_subexp_call(NCAR(node), env);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
- break;
- case NT_ALT:
- do {
- r = setup_subexp_call(NCAR(node), env);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
- break;
-
- case NT_QTFR:
- r = setup_subexp_call(NQTFR(node)->target, env);
- break;
- case NT_ENCLOSE:
- r = setup_subexp_call(NENCLOSE(node)->target, env);
- break;
+ state1 = state;
+ if (NODE_IS_RECURSION(node))
+ state1 |= IN_RECURSION;
- case NT_CALL:
- {
- CallNode* cn = NCALL(node);
- Node** nodes = SCANENV_MEM_NODES(env);
+ ret = recursive_call_check_trav(NODE_BODY(node), env, state1);
+ if (ret == FOUND_CALLED_NODE)
+ r = FOUND_CALLED_NODE;
- if (cn->group_num != 0) {
- int gnum = cn->group_num;
-
-#ifdef USE_NAMED_GROUP
- if (env->num_named > 0 &&
- IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
- !ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_CAPTURE_GROUP)) {
- return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
- }
-#endif
- if (gnum > env->num_mem) {
- onig_scan_env_set_error_string(env,
- ONIGERR_UNDEFINED_GROUP_REFERENCE, cn->name, cn->name_end);
- return ONIGERR_UNDEFINED_GROUP_REFERENCE;
- }
-
-#ifdef USE_NAMED_GROUP
- set_call_attr:
-#endif
- cn->target = nodes[cn->group_num];
- if (IS_NULL(cn->target)) {
- onig_scan_env_set_error_string(env,
- ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end);
- return ONIGERR_UNDEFINED_NAME_REFERENCE;
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ ret = recursive_call_check_trav(en->te.Then, env, state1);
+ if (ret == FOUND_CALLED_NODE)
+ r = FOUND_CALLED_NODE;
}
- SET_ENCLOSE_STATUS(cn->target, NST_CALLED);
- BIT_STATUS_ON_AT(env->bt_mem_start, cn->group_num);
- cn->unset_addr_list = env->unset_addr_list;
- }
-#ifdef USE_NAMED_GROUP
- else {
- int *refs;
-
- int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end,
- &refs);
- if (n <= 0) {
- onig_scan_env_set_error_string(env,
- ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end);
- return ONIGERR_UNDEFINED_NAME_REFERENCE;
- }
- else if (n > 1) {
- onig_scan_env_set_error_string(env,
- ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, cn->name, cn->name_end);
- return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL;
- }
- else {
- cn->group_num = refs[0];
- goto set_call_attr;
+ if (IS_NOT_NULL(en->te.Else)) {
+ ret = recursive_call_check_trav(en->te.Else, env, state1);
+ if (ret == FOUND_CALLED_NODE)
+ r = FOUND_CALLED_NODE;
}
}
-#endif
- }
- break;
-
- case NT_ANCHOR:
- {
- AnchorNode* an = NANCHOR(node);
-
- switch (an->type) {
- case ANCHOR_PREC_READ:
- case ANCHOR_PREC_READ_NOT:
- case ANCHOR_LOOK_BEHIND:
- case ANCHOR_LOOK_BEHIND_NOT:
- r = setup_subexp_call(an->target, env);
- break;
- }
}
break;
@@ -3122,6 +3315,7 @@ setup_subexp_call(Node* node, ScanEnv* env)
return r;
}
+
#endif
/* divide different length alternatives in look-behind.
@@ -3132,30 +3326,28 @@ static int
divide_look_behind_alternatives(Node* node)
{
Node *head, *np, *insert_node;
- AnchorNode* an = NANCHOR(node);
+ AnchorNode* an = ANCHOR_(node);
int anc_type = an->type;
- /* fprintf(stderr, "divide_look_behind: %d\n", (int )node); */
-
- head = an->target;
- np = NCAR(head);
+ head = NODE_ANCHOR_BODY(an);
+ np = NODE_CAR(head);
swap_node(node, head);
- NCAR(node) = head;
- NANCHOR(head)->target = np;
+ NODE_CAR(node) = head;
+ NODE_BODY(head) = np;
np = node;
- while ((np = NCDR(np)) != NULL_NODE) {
- insert_node = onig_node_new_anchor(anc_type);
+ while (IS_NOT_NULL(np = NODE_CDR(np))) {
+ insert_node = onig_node_new_anchor(anc_type, an->ascii_mode);
CHECK_NULL_RETURN_MEMERR(insert_node);
- NANCHOR(insert_node)->target = NCAR(np);
- NCAR(np) = insert_node;
+ NODE_BODY(insert_node) = NODE_CAR(np);
+ NODE_CAR(np) = insert_node;
}
if (anc_type == ANCHOR_LOOK_BEHIND_NOT) {
np = node;
do {
- SET_NTYPE(np, NT_LIST); /* alt -> list */
- } while ((np = NCDR(np)) != NULL_NODE);
+ NODE_SET_TYPE(np, NODE_LIST); /* alt -> list */
+ } while (IS_NOT_NULL(np = NODE_CDR(np)));
}
return 0;
}
@@ -3164,11 +3356,9 @@ static int
setup_look_behind(Node* node, regex_t* reg, ScanEnv* env)
{
int r, len;
- AnchorNode* an = NANCHOR(node);
+ AnchorNode* an = ANCHOR_(node);
- /* fprintf(stderr, "setup_look_behind: %x\n", (int )node); */
-
- r = get_char_length_tree(an->target, reg, &len);
+ r = get_char_length_tree(NODE_ANCHOR_BODY(an), reg, &len);
if (r == 0)
an->char_len = len;
else if (r == GET_CHAR_LEN_VARLEN)
@@ -3186,44 +3376,43 @@ setup_look_behind(Node* node, regex_t* reg, ScanEnv* env)
static int
next_setup(Node* node, Node* next_node, regex_t* reg)
{
- int type;
+ NodeType type;
retry:
- type = NTYPE(node);
- if (type == NT_QTFR) {
- QtfrNode* qn = NQTFR(node);
+ type = NODE_TYPE(node);
+ if (type == NODE_QUANT) {
+ QuantNode* qn = QUANT_(node);
if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) {
-#ifdef USE_QTFR_PEEK_NEXT
+#ifdef USE_QUANT_PEEK_NEXT
Node* n = get_head_value_node(next_node, 1, reg);
/* '\0': for UTF-16BE etc... */
- if (IS_NOT_NULL(n) && NSTR(n)->s[0] != '\0') {
+ if (IS_NOT_NULL(n) && STR_(n)->s[0] != '\0') {
qn->next_head_exact = n;
}
#endif
/* automatic posseivation a*b ==> (?>a*)b */
if (qn->lower <= 1) {
- int ttype = NTYPE(qn->target);
- if (IS_NODE_TYPE_SIMPLE(ttype)) {
+ if (NODE_IS_SIMPLE_TYPE(NODE_BODY(node))) {
Node *x, *y;
- x = get_head_value_node(qn->target, 0, reg);
+ x = get_head_value_node(NODE_BODY(node), 0, reg);
if (IS_NOT_NULL(x)) {
y = get_head_value_node(next_node, 0, reg);
- if (IS_NOT_NULL(y) && is_not_included(x, y, reg)) {
- Node* en = onig_node_new_enclose(ENCLOSE_STOP_BACKTRACK);
+ if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) {
+ Node* en = onig_node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
CHECK_NULL_RETURN_MEMERR(en);
- SET_ENCLOSE_STATUS(en, NST_STOP_BT_SIMPLE_REPEAT);
+ NODE_STATUS_ADD(en, STOP_BT_SIMPLE_REPEAT);
swap_node(node, en);
- NENCLOSE(node)->target = en;
+ NODE_BODY(node) = en;
}
}
}
}
}
}
- else if (type == NT_ENCLOSE) {
- EncloseNode* en = NENCLOSE(node);
- if (en->type == ENCLOSE_MEMORY) {
- node = en->target;
+ else if (type == NODE_ENCLOSURE) {
+ EnclosureNode* en = ENCLOSURE_(node);
+ if (en->type == ENCLOSURE_MEMORY) {
+ node = NODE_BODY(node);
goto retry;
}
}
@@ -3237,10 +3426,10 @@ update_string_node_case_fold(regex_t* reg, Node *node)
UChar *p, *end, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
UChar *sbuf, *ebuf, *sp;
int r, i, len, sbuf_size;
- StrNode* sn = NSTR(node);
+ StrNode* sn = STR_(node);
end = sn->end;
- sbuf_size = (end - sn->s) * 2;
+ sbuf_size = (int )(end - sn->s) * 2;
sbuf = (UChar* )xmalloc(sbuf_size);
CHECK_NULL_RETURN_MEMERR(sbuf);
ebuf = sbuf + sbuf_size;
@@ -3273,8 +3462,7 @@ update_string_node_case_fold(regex_t* reg, Node *node)
}
static int
-expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end,
- regex_t* reg)
+expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, regex_t* reg)
{
int r;
Node *node;
@@ -3288,18 +3476,19 @@ expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end,
return r;
}
- NSTRING_SET_AMBIG(node);
- NSTRING_SET_DONT_GET_OPT_INFO(node);
+ NODE_STRING_SET_AMBIG(node);
+ NODE_STRING_SET_DONT_GET_OPT_INFO(node);
*rnode = node;
return 0;
}
static int
-expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
- UChar *p, int slen, UChar *end,
- regex_t* reg, Node **rnode)
+expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p,
+ int slen, UChar *end, regex_t* reg, Node **rnode)
{
- int r, i, j, len, varlen;
+ int r, i, j;
+ int len;
+ int varlen;
Node *anode, *var_anode, *snode, *xnode, *an;
UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];
@@ -3319,11 +3508,11 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
xnode = onig_node_new_list(NULL, NULL);
if (IS_NULL(xnode)) goto mem_err;
- NCAR(var_anode) = xnode;
+ NODE_CAR(var_anode) = xnode;
anode = onig_node_new_alt(NULL_NODE, NULL_NODE);
if (IS_NULL(anode)) goto mem_err;
- NCAR(xnode) = anode;
+ NODE_CAR(xnode) = anode;
}
else {
*rnode = anode = onig_node_new_alt(NULL_NODE, NULL_NODE);
@@ -3333,7 +3522,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
snode = onig_node_new_str(p, p + slen);
if (IS_NULL(snode)) goto mem_err;
- NCAR(anode) = snode;
+ NODE_CAR(anode) = snode;
for (i = 0; i < item_num; i++) {
snode = onig_node_new_str(NULL, NULL);
@@ -3379,18 +3568,18 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
goto mem_err;
}
- NCAR(an) = xnode;
+ NODE_CAR(an) = xnode;
}
else {
- NCAR(an) = snode;
+ NODE_CAR(an) = snode;
}
- NCDR(var_anode) = an;
+ NODE_CDR(var_anode) = an;
var_anode = an;
}
else {
- NCAR(an) = snode;
- NCDR(anode) = an;
+ NODE_CAR(an) = snode;
+ NODE_CDR(anode) = an;
anode = an;
}
}
@@ -3415,9 +3604,9 @@ expand_case_fold_string(Node* node, regex_t* reg)
UChar *start, *end, *p;
Node *top_root, *root, *snode, *prev_node;
OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];
- StrNode* sn = NSTR(node);
+ StrNode* sn = STR_(node);
- if (NSTRING_IS_AMBIG(node)) return 0;
+ if (NODE_STRING_IS_AMBIG(node)) return 0;
start = sn->s;
end = sn->end;
@@ -3428,8 +3617,8 @@ expand_case_fold_string(Node* node, regex_t* reg)
alt_num = 1;
p = start;
while (p < end) {
- n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag,
- p, end, items);
+ n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, p, end,
+ items);
if (n < 0) {
r = n;
goto err;
@@ -3485,7 +3674,7 @@ expand_case_fold_string(Node* node, regex_t* reg)
}
}
- root = NCAR(prev_node);
+ root = NODE_CAR(prev_node);
}
else { /* r == 0 */
if (IS_NOT_NULL(root)) {
@@ -3542,156 +3731,681 @@ expand_case_fold_string(Node* node, regex_t* reg)
return r;
}
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-
-#define CEC_THRES_NUM_BIG_REPEAT 512
-#define CEC_INFINITE_NUM 0x7fffffff
-
-#define CEC_IN_INFINITE_REPEAT (1<<0)
-#define CEC_IN_FINITE_REPEAT (1<<1)
-#define CEC_CONT_BIG_REPEAT (1<<2)
-
-static int
-setup_comb_exp_check(Node* node, int state, ScanEnv* env)
+#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+static enum QuantBodyEmpty
+quantifiers_memory_node_info(Node* node)
{
- int type;
- int r = state;
+ int r = QUANT_BODY_IS_EMPTY;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
{
- Node* prev = NULL_NODE;
+ int v;
do {
- r = setup_comb_exp_check(NCAR(node), r, env);
- prev = NCAR(node);
- } while (r >= 0 && IS_NOT_NULL(node = NCDR(node)));
+ v = quantifiers_memory_node_info(NODE_CAR(node));
+ if (v > r) r = v;
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
}
break;
- case NT_ALT:
+#ifdef USE_CALL
+ case NODE_CALL:
+ if (NODE_IS_RECURSION(node)) {
+ return QUANT_BODY_IS_EMPTY_REC; /* tiny version */
+ }
+ else
+ r = quantifiers_memory_node_info(NODE_BODY(node));
+ break;
+#endif
+
+ case NODE_QUANT:
{
- int ret;
- do {
- ret = setup_comb_exp_check(NCAR(node), state, env);
- r |= ret;
- } while (ret >= 0 && IS_NOT_NULL(node = NCDR(node)));
+ QuantNode* qn = QUANT_(node);
+ if (qn->upper != 0) {
+ r = quantifiers_memory_node_info(NODE_BODY(node));
+ }
}
break;
- case NT_QTFR:
+ case NODE_ENCLOSURE:
{
- int child_state = state;
- int add_state = 0;
- QtfrNode* qn = NQTFR(node);
- Node* target = qn->target;
- int var_num;
-
- if (! IS_REPEAT_INFINITE(qn->upper)) {
- if (qn->upper > 1) {
- /* {0,1}, {1,1} are allowed */
- child_state |= CEC_IN_FINITE_REPEAT;
-
- /* check (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} */
- if (env->backrefed_mem == 0) {
- if (NTYPE(qn->target) == NT_ENCLOSE) {
- EncloseNode* en = NENCLOSE(qn->target);
- if (en->type == ENCLOSE_MEMORY) {
- if (NTYPE(en->target) == NT_QTFR) {
- QtfrNode* q = NQTFR(en->target);
- if (IS_REPEAT_INFINITE(q->upper)
- && q->greedy == qn->greedy) {
- qn->upper = (qn->lower == 0 ? 1 : qn->lower);
- if (qn->upper == 1)
- child_state = state;
- }
- }
- }
- }
+ EnclosureNode* en = ENCLOSURE_(node);
+ switch (en->type) {
+ case ENCLOSURE_MEMORY:
+ if (NODE_IS_RECURSION(node)) {
+ return QUANT_BODY_IS_EMPTY_REC;
+ }
+ return QUANT_BODY_IS_EMPTY_MEM;
+ break;
+
+ case ENCLOSURE_OPTION:
+ case ENCLOSURE_STOP_BACKTRACK:
+ r = quantifiers_memory_node_info(NODE_BODY(node));
+ break;
+ case ENCLOSURE_IF_ELSE:
+ {
+ int v;
+ r = quantifiers_memory_node_info(NODE_BODY(node));
+ if (IS_NOT_NULL(en->te.Then)) {
+ v = quantifiers_memory_node_info(en->te.Then);
+ if (v > r) r = v;
+ }
+ if (IS_NOT_NULL(en->te.Else)) {
+ v = quantifiers_memory_node_info(en->te.Else);
+ if (v > r) r = v;
}
}
+ break;
+ default:
+ break;
}
+ }
+ break;
+
+ case NODE_BACKREF:
+ case NODE_STRING:
+ case NODE_CTYPE:
+ case NODE_CCLASS:
+ case NODE_ANCHOR:
+ case NODE_GIMMICK:
+ default:
+ break;
+ }
+
+ return r;
+}
+#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */
+
+
+#define IN_ALT (1<<0)
+#define IN_NOT (1<<1)
+#define IN_REAL_REPEAT (1<<2)
+#define IN_VAR_REPEAT (1<<3)
+#define IN_ZERO_REPEAT (1<<4)
+#define IN_MULTI_ENTRY (1<<5)
+
+#ifdef USE_CALL
+
+#ifdef __GNUC__
+__inline
+#endif
+static int
+setup_call_node_call(CallNode* cn, ScanEnv* env, int state)
+{
+ MemEnv* mem_env = SCANENV_MEMENV(env);
+
+ if (cn->by_number != 0) {
+ int gnum = cn->group_num;
+
+ if (env->num_named > 0 &&
+ IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
+ ! ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) {
+ return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;
+ }
+
+ if (gnum > env->num_mem) {
+ onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE,
+ cn->name, cn->name_end);
+ return ONIGERR_UNDEFINED_GROUP_REFERENCE;
+ }
+
+ set_call_attr:
+ NODE_CALL_BODY(cn) = mem_env[cn->group_num].node;
+ if (IS_NULL(NODE_CALL_BODY(cn))) {
+ onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
+ cn->name, cn->name_end);
+ return ONIGERR_UNDEFINED_NAME_REFERENCE;
+ }
+ }
+ else {
+ int *refs;
+
+ int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, &refs);
+ if (n <= 0) {
+ onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
+ cn->name, cn->name_end);
+ return ONIGERR_UNDEFINED_NAME_REFERENCE;
+ }
+ else if (n > 1) {
+ onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL,
+ cn->name, cn->name_end);
+ return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL;
+ }
+ else {
+ cn->group_num = refs[0];
+ goto set_call_attr;
+ }
+ }
+
+ return 0;
+}
+
+static void
+setup_call2_call(Node* node)
+{
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
+ do {
+ setup_call2_call(NODE_CAR(node));
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
- if (state & CEC_IN_FINITE_REPEAT) {
- qn->comb_exp_check_num = -1;
+ case NODE_QUANT:
+ setup_call2_call(NODE_BODY(node));
+ break;
+
+ case NODE_ANCHOR:
+ if (ANCHOR_HAS_BODY(ANCHOR_(node)))
+ setup_call2_call(NODE_BODY(node));
+ break;
+
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (! NODE_IS_MARK1(node)) {
+ NODE_STATUS_ADD(node, MARK1);
+ setup_call2_call(NODE_BODY(node));
+ NODE_STATUS_REMOVE(node, MARK1);
+ }
+ }
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ setup_call2_call(NODE_BODY(node));
+ if (IS_NOT_NULL(en->te.Then))
+ setup_call2_call(en->te.Then);
+ if (IS_NOT_NULL(en->te.Else))
+ setup_call2_call(en->te.Else);
}
else {
- if (IS_REPEAT_INFINITE(qn->upper)) {
- var_num = CEC_INFINITE_NUM;
- child_state |= CEC_IN_INFINITE_REPEAT;
+ setup_call2_call(NODE_BODY(node));
+ }
+ }
+ break;
+
+ case NODE_CALL:
+ if (! NODE_IS_MARK1(node)) {
+ NODE_STATUS_ADD(node, MARK1);
+ {
+ CallNode* cn = CALL_(node);
+ Node* called = NODE_CALL_BODY(cn);
+
+ cn->entry_count++;
+
+ NODE_STATUS_ADD(called, CALLED);
+ ENCLOSURE_(called)->m.entry_count++;
+ setup_call2_call(called);
+ }
+ NODE_STATUS_REMOVE(node, MARK1);
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static int
+setup_call(Node* node, ScanEnv* env, int state)
+{
+ int r;
+
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
+ do {
+ r = setup_call(NODE_CAR(node), env, state);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
+
+ case NODE_QUANT:
+ if (QUANT_(node)->upper == 0)
+ state |= IN_ZERO_REPEAT;
+
+ r = setup_call(NODE_BODY(node), env, state);
+ break;
+
+ case NODE_ANCHOR:
+ if (ANCHOR_HAS_BODY(ANCHOR_(node)))
+ r = setup_call(NODE_BODY(node), env, state);
+ else
+ r = 0;
+ break;
+
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if ((state & IN_ZERO_REPEAT) != 0) {
+ NODE_STATUS_ADD(node, IN_ZERO_REPEAT);
+ ENCLOSURE_(node)->m.entry_count--;
}
- else {
- var_num = qn->upper - qn->lower;
+ r = setup_call(NODE_BODY(node), env, state);
+ }
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ r = setup_call(NODE_BODY(node), env, state);
+ if (r != 0) return r;
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = setup_call(en->te.Then, env, state);
+ if (r != 0) return r;
}
+ if (IS_NOT_NULL(en->te.Else))
+ r = setup_call(en->te.Else, env, state);
+ }
+ else
+ r = setup_call(NODE_BODY(node), env, state);
+ }
+ break;
- if (var_num >= CEC_THRES_NUM_BIG_REPEAT)
- add_state |= CEC_CONT_BIG_REPEAT;
-
- if (((state & CEC_IN_INFINITE_REPEAT) != 0 && var_num != 0) ||
- ((state & CEC_CONT_BIG_REPEAT) != 0 &&
- var_num >= CEC_THRES_NUM_BIG_REPEAT)) {
- if (qn->comb_exp_check_num == 0) {
- env->num_comb_exp_check++;
- qn->comb_exp_check_num = env->num_comb_exp_check;
- if (env->curr_max_regnum > env->comb_exp_max_regnum)
- env->comb_exp_max_regnum = env->curr_max_regnum;
- }
+ case NODE_CALL:
+ if ((state & IN_ZERO_REPEAT) != 0) {
+ NODE_STATUS_ADD(node, IN_ZERO_REPEAT);
+ CALL_(node)->entry_count--;
+ }
+
+ r = setup_call_node_call(CALL_(node), env, state);
+ break;
+
+ default:
+ r = 0;
+ break;
+ }
+
+ return r;
+}
+
+static int
+setup_call2(Node* node)
+{
+ int r = 0;
+
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
+ case NODE_ALT:
+ do {
+ r = setup_call2(NODE_CAR(node));
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
+
+ case NODE_QUANT:
+ if (QUANT_(node)->upper != 0)
+ r = setup_call2(NODE_BODY(node));
+ break;
+
+ case NODE_ANCHOR:
+ if (ANCHOR_HAS_BODY(ANCHOR_(node)))
+ r = setup_call2(NODE_BODY(node));
+ break;
+
+ case NODE_ENCLOSURE:
+ if (! NODE_IS_IN_ZERO_REPEAT(node))
+ r = setup_call2(NODE_BODY(node));
+
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (r != 0) return r;
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = setup_call2(en->te.Then);
+ if (r != 0) return r;
}
+ if (IS_NOT_NULL(en->te.Else))
+ r = setup_call2(en->te.Else);
}
+ }
+ break;
- r = setup_comb_exp_check(target, child_state, env);
- r |= add_state;
+ case NODE_CALL:
+ if (! NODE_IS_IN_ZERO_REPEAT(node)) {
+ setup_call2_call(node);
}
break;
- case NT_ENCLOSE:
+ default:
+ break;
+ }
+
+ return r;
+}
+
+
+static void
+setup_called_state_call(Node* node, int state)
+{
+ switch (NODE_TYPE(node)) {
+ case NODE_ALT:
+ state |= IN_ALT;
+ /* fall */
+ case NODE_LIST:
+ do {
+ setup_called_state_call(NODE_CAR(node), state);
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
+
+ case NODE_QUANT:
{
- EncloseNode* en = NENCLOSE(node);
+ QuantNode* qn = QUANT_(node);
- switch (en->type) {
- case ENCLOSE_MEMORY:
- {
- if (env->curr_max_regnum < en->regnum)
- env->curr_max_regnum = en->regnum;
+ if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ state |= IN_REAL_REPEAT;
+ if (qn->lower != qn->upper)
+ state |= IN_VAR_REPEAT;
+
+ setup_called_state_call(NODE_QUANT_BODY(qn), state);
+ }
+ break;
+
+ case NODE_ANCHOR:
+ {
+ AnchorNode* an = ANCHOR_(node);
- r = setup_comb_exp_check(en->target, state, env);
+ switch (an->type) {
+ case ANCHOR_PREC_READ_NOT:
+ case ANCHOR_LOOK_BEHIND_NOT:
+ state |= IN_NOT;
+ /* fall */
+ case ANCHOR_PREC_READ:
+ case ANCHOR_LOOK_BEHIND:
+ setup_called_state_call(NODE_ANCHOR_BODY(an), state);
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ if (en->type == ENCLOSURE_MEMORY) {
+ if (NODE_IS_MARK1(node)) {
+ if ((~en->m.called_state & state) != 0) {
+ en->m.called_state |= state;
+ setup_called_state_call(NODE_BODY(node), state);
+ }
}
+ else {
+ NODE_STATUS_ADD(node, MARK1);
+ en->m.called_state |= state;
+ setup_called_state_call(NODE_BODY(node), state);
+ NODE_STATUS_REMOVE(node, MARK1);
+ }
+ }
+ else if (en->type == ENCLOSURE_IF_ELSE) {
+ if (IS_NOT_NULL(en->te.Then)) {
+ setup_called_state_call(en->te.Then, state);
+ }
+ if (IS_NOT_NULL(en->te.Else))
+ setup_called_state_call(en->te.Else, state);
+ }
+ else {
+ setup_called_state_call(NODE_BODY(node), state);
+ }
+ }
+ break;
+
+ case NODE_CALL:
+ setup_called_state_call(NODE_BODY(node), state);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void
+setup_called_state(Node* node, int state)
+{
+ switch (NODE_TYPE(node)) {
+ case NODE_ALT:
+ state |= IN_ALT;
+ /* fall */
+ case NODE_LIST:
+ do {
+ setup_called_state(NODE_CAR(node), state);
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
+ break;
+
+#ifdef USE_CALL
+ case NODE_CALL:
+ setup_called_state_call(node, state);
+ break;
+#endif
+
+ case NODE_ENCLOSURE:
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+
+ switch (en->type) {
+ case ENCLOSURE_MEMORY:
+ if (en->m.entry_count > 1)
+ state |= IN_MULTI_ENTRY;
+
+ en->m.called_state |= state;
+ /* fall */
+ case ENCLOSURE_OPTION:
+ case ENCLOSURE_STOP_BACKTRACK:
+ setup_called_state(NODE_BODY(node), state);
+ break;
+ case ENCLOSURE_IF_ELSE:
+ setup_called_state(NODE_BODY(node), state);
+ if (IS_NOT_NULL(en->te.Then))
+ setup_called_state(en->te.Then, state);
+ if (IS_NOT_NULL(en->te.Else))
+ setup_called_state(en->te.Else, state);
break;
+ }
+ }
+ break;
+ case NODE_QUANT:
+ {
+ QuantNode* qn = QUANT_(node);
+
+ if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ state |= IN_REAL_REPEAT;
+ if (qn->lower != qn->upper)
+ state |= IN_VAR_REPEAT;
+
+ setup_called_state(NODE_QUANT_BODY(qn), state);
+ }
+ break;
+
+ case NODE_ANCHOR:
+ {
+ AnchorNode* an = ANCHOR_(node);
+
+ switch (an->type) {
+ case ANCHOR_PREC_READ_NOT:
+ case ANCHOR_LOOK_BEHIND_NOT:
+ state |= IN_NOT;
+ /* fall */
+ case ANCHOR_PREC_READ:
+ case ANCHOR_LOOK_BEHIND:
+ setup_called_state(NODE_ANCHOR_BODY(an), state);
+ break;
default:
- r = setup_comb_exp_check(en->target, state, env);
break;
}
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (IS_CALL_RECURSION(NCALL(node)))
- env->has_recursion = 1;
- else
- r = setup_comb_exp_check(NCALL(node)->target, state, env);
+ case NODE_BACKREF:
+ case NODE_STRING:
+ case NODE_CTYPE:
+ case NODE_CCLASS:
+ case NODE_GIMMICK:
+ default:
break;
+ }
+}
+
+#endif /* USE_CALL */
+
+
+static int setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env);
+
+#ifdef __GNUC__
+__inline
#endif
+static int
+setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env)
+{
+/* allowed node types in look-behind */
+#define ALLOWED_TYPE_IN_LB \
+ ( NODE_BIT_LIST | NODE_BIT_ALT | NODE_BIT_STRING | NODE_BIT_CCLASS \
+ | NODE_BIT_CTYPE | NODE_BIT_ANCHOR | NODE_BIT_ENCLOSURE | NODE_BIT_QUANT \
+ | NODE_BIT_CALL | NODE_BIT_GIMMICK)
+
+#define ALLOWED_ENCLOSURE_IN_LB ( 1<<ENCLOSURE_MEMORY | 1<<ENCLOSURE_OPTION )
+#define ALLOWED_ENCLOSURE_IN_LB_NOT (1<<ENCLOSURE_OPTION)
+
+#define ALLOWED_ANCHOR_IN_LB \
+ ( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF \
+ | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY | ANCHOR_NO_WORD_BOUNDARY \
+ | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+ | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+ | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
+
+#define ALLOWED_ANCHOR_IN_LB_NOT \
+ ( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE \
+ | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUNDARY \
+ | ANCHOR_NO_WORD_BOUNDARY | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END \
+ | ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY \
+ | ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY )
+
+ int r;
+ AnchorNode* an = ANCHOR_(node);
+
+ switch (an->type) {
+ case ANCHOR_PREC_READ:
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env);
+ break;
+ case ANCHOR_PREC_READ_NOT:
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env);
+ break;
+
+ case ANCHOR_LOOK_BEHIND:
+ {
+ r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB,
+ ALLOWED_ENCLOSURE_IN_LB, ALLOWED_ANCHOR_IN_LB);
+ if (r < 0) return r;
+ if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env);
+ if (r != 0) return r;
+ r = setup_look_behind(node, reg, env);
+ }
+ break;
+
+ case ANCHOR_LOOK_BEHIND_NOT:
+ {
+ r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB,
+ ALLOWED_ENCLOSURE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT);
+ if (r < 0) return r;
+ if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
+ r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env);
+ if (r != 0) return r;
+ r = setup_look_behind(node, reg, env);
+ }
+ break;
default:
+ r = 0;
break;
}
return r;
}
+
+#ifdef __GNUC__
+__inline
+#endif
+static int
+setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env)
+{
+ int r;
+ OnigLen d;
+ QuantNode* qn = QUANT_(node);
+ Node* body = NODE_BODY(node);
+
+ if ((state & IN_REAL_REPEAT) != 0) {
+ NODE_STATUS_ADD(node, IN_REAL_REPEAT);
+ }
+ if ((state & IN_MULTI_ENTRY) != 0) {
+ NODE_STATUS_ADD(node, IN_MULTI_ENTRY);
+ }
+
+ if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) {
+ d = tree_min_len(body, env);
+ if (d == 0) {
+#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ qn->body_empty_info = quantifiers_memory_node_info(body);
+ if (qn->body_empty_info == QUANT_BODY_IS_EMPTY_REC) {
+ if (NODE_TYPE(body) == NODE_ENCLOSURE &&
+ ENCLOSURE_(body)->type == ENCLOSURE_MEMORY) {
+ MEM_STATUS_ON(env->bt_mem_end, ENCLOSURE_(body)->m.regnum);
+ }
+ }
+#else
+ qn->body_empty_info = QUANT_BODY_IS_EMPTY;
+#endif
+ }
+ }
+
+ if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2)
+ state |= IN_REAL_REPEAT;
+ if (qn->lower != qn->upper)
+ state |= IN_VAR_REPEAT;
+
+ r = setup_tree(body, reg, state, env);
+ if (r != 0) return r;
+
+ /* expand string */
+#define EXPAND_STRING_MAX_LENGTH 100
+ if (NODE_TYPE(body) == NODE_STRING) {
+ if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper &&
+ qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) {
+ int len = NODE_STRING_LEN(body);
+ StrNode* sn = STR_(body);
+
+ if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) {
+ int i, n = qn->lower;
+ onig_node_conv_to_str_node(node, STR_(body)->flag);
+ for (i = 0; i < n; i++) {
+ r = onig_node_str_cat(node, sn->s, sn->end);
+ if (r != 0) return r;
+ }
+ onig_node_free(body);
+ return r;
+ }
+ }
+ }
+
+#ifdef USE_OP_PUSH_OR_JUMP_EXACT
+ if (qn->greedy && (qn->body_empty_info != QUANT_BODY_IS_NOT_EMPTY)) {
+ if (NODE_TYPE(body) == NODE_QUANT) {
+ QuantNode* tqn = QUANT_(body);
+ if (IS_NOT_NULL(tqn->head_exact)) {
+ qn->head_exact = tqn->head_exact;
+ tqn->head_exact = NULL;
+ }
+ }
+ else {
+ qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg);
+ }
+ }
#endif
-#define IN_ALT (1<<0)
-#define IN_NOT (1<<1)
-#define IN_REPEAT (1<<2)
-#define IN_VAR_REPEAT (1<<3)
-#define IN_CALL (1<<4)
-#define IN_RECCALL (1<<5)
+ return r;
+}
/* setup_tree does the following work.
- 1. check empty loop. (set qn->target_empty_info)
+ 1. check empty loop. (set qn->body_empty_info)
2. expand ignore-case in char class.
3. set memory status bit flags. (reg->mem_stats)
4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact].
@@ -3701,249 +4415,122 @@ setup_comb_exp_check(Node* node, int state, ScanEnv* env)
static int
setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
{
- int type;
int r = 0;
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
{
Node* prev = NULL_NODE;
do {
- r = setup_tree(NCAR(node), reg, state, env);
+ r = setup_tree(NODE_CAR(node), reg, state, env);
if (IS_NOT_NULL(prev) && r == 0) {
- r = next_setup(prev, NCAR(node), reg);
+ r = next_setup(prev, NODE_CAR(node), reg);
}
- prev = NCAR(node);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
+ prev = NODE_CAR(node);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
}
break;
- case NT_ALT:
+ case NODE_ALT:
do {
- r = setup_tree(NCAR(node), reg, (state | IN_ALT), env);
- } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));
- break;
-
- case NT_CCLASS:
+ r = setup_tree(NODE_CAR(node), reg, (state | IN_ALT), env);
+ } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node)));
break;
- case NT_STR:
- if (IS_IGNORECASE(reg->options) && !NSTRING_IS_RAW(node)) {
+ case NODE_STRING:
+ if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_RAW(node)) {
r = expand_case_fold_string(node, reg);
}
break;
- case NT_CTYPE:
- case NT_CANY:
- break;
-
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- break;
-#endif
-
- case NT_BREF:
+ case NODE_BACKREF:
{
int i;
int* p;
- Node** nodes = SCANENV_MEM_NODES(env);
- BRefNode* br = NBREF(node);
+ BackRefNode* br = BACKREF_(node);
p = BACKREFS_P(br);
for (i = 0; i < br->back_num; i++) {
if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF;
- BIT_STATUS_ON_AT(env->backrefed_mem, p[i]);
- BIT_STATUS_ON_AT(env->bt_mem_start, p[i]);
+ MEM_STATUS_ON(env->backrefed_mem, p[i]);
+ MEM_STATUS_ON(env->bt_mem_start, p[i]);
#ifdef USE_BACKREF_WITH_LEVEL
- if (IS_BACKREF_NEST_LEVEL(br)) {
- BIT_STATUS_ON_AT(env->bt_mem_end, p[i]);
+ if (NODE_IS_NEST_LEVEL(node)) {
+ MEM_STATUS_ON(env->bt_mem_end, p[i]);
}
#endif
- SET_ENCLOSE_STATUS(nodes[p[i]], NST_MEM_BACKREFED);
- }
- }
- break;
-
- case NT_QTFR:
- {
- OnigLen d;
- QtfrNode* qn = NQTFR(node);
- Node* target = qn->target;
-
- if ((state & IN_REPEAT) != 0) {
- qn->state |= NST_IN_REPEAT;
- }
-
- if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) {
- r = get_min_len(target, &d, env);
- if (r) break;
- if (d == 0) {
- qn->target_empty_info = NQ_TARGET_IS_EMPTY;
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
- r = quantifiers_memory_node_info(target);
- if (r < 0) break;
- if (r > 0) {
- qn->target_empty_info = r;
- }
-#endif
-#if 0
- r = get_max_len(target, &d, env);
- if (r == 0 && d == 0) {
- /* ()* ==> ()?, ()+ ==> () */
- qn->upper = 1;
- if (qn->lower > 1) qn->lower = 1;
- if (NTYPE(target) == NT_STR) {
- qn->upper = qn->lower = 0; /* /(?:)+/ ==> // */
- }
- }
-#endif
- }
}
-
- state |= IN_REPEAT;
- if (qn->lower != qn->upper)
- state |= IN_VAR_REPEAT;
- r = setup_tree(target, reg, state, env);
- if (r) break;
-
- /* expand string */
-#define EXPAND_STRING_MAX_LENGTH 100
- if (NTYPE(target) == NT_STR) {
- if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper &&
- qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) {
- int len = NSTRING_LEN(target);
- StrNode* sn = NSTR(target);
-
- if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) {
- int i, n = qn->lower;
- onig_node_conv_to_str_node(node, NSTR(target)->flag);
- for (i = 0; i < n; i++) {
- r = onig_node_str_cat(node, sn->s, sn->end);
- if (r) break;
- }
- onig_node_free(target);
- break; /* break case NT_QTFR: */
- }
- }
- }
-
-#ifdef USE_OP_PUSH_OR_JUMP_EXACT
- if (qn->greedy && (qn->target_empty_info != 0)) {
- if (NTYPE(target) == NT_QTFR) {
- QtfrNode* tqn = NQTFR(target);
- if (IS_NOT_NULL(tqn->head_exact)) {
- qn->head_exact = tqn->head_exact;
- tqn->head_exact = NULL;
- }
- }
- else {
- qn->head_exact = get_head_value_node(qn->target, 1, reg);
- }
- }
-#endif
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
switch (en->type) {
- case ENCLOSE_OPTION:
+ case ENCLOSURE_OPTION:
{
OnigOptionType options = reg->options;
- reg->options = NENCLOSE(node)->option;
- r = setup_tree(NENCLOSE(node)->target, reg, state, env);
+ reg->options = ENCLOSURE_(node)->o.options;
+ r = setup_tree(NODE_BODY(node), reg, state, env);
reg->options = options;
}
break;
- case ENCLOSE_MEMORY:
- if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_CALL)) != 0) {
- BIT_STATUS_ON_AT(env->bt_mem_start, en->regnum);
- /* SET_ENCLOSE_STATUS(node, NST_MEM_IN_ALT_NOT); */
+ case ENCLOSURE_MEMORY:
+#ifdef USE_CALL
+ state |= en->m.called_state;
+#endif
+
+ if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_MULTI_ENTRY)) != 0
+ || NODE_IS_RECURSION(node)) {
+ MEM_STATUS_ON(env->bt_mem_start, en->m.regnum);
}
- if (IS_ENCLOSE_CALLED(en))
- state |= IN_CALL;
- if (IS_ENCLOSE_RECURSION(en))
- state |= IN_RECCALL;
- else if ((state & IN_RECCALL) != 0)
- SET_CALL_RECURSION(node);
- r = setup_tree(en->target, reg, state, env);
+ r = setup_tree(NODE_BODY(node), reg, state, env);
break;
- case ENCLOSE_STOP_BACKTRACK:
+ case ENCLOSURE_STOP_BACKTRACK:
{
- Node* target = en->target;
+ Node* target = NODE_BODY(node);
r = setup_tree(target, reg, state, env);
- if (NTYPE(target) == NT_QTFR) {
- QtfrNode* tqn = NQTFR(target);
+ if (NODE_TYPE(target) == NODE_QUANT) {
+ QuantNode* tqn = QUANT_(target);
if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 &&
tqn->greedy != 0) { /* (?>a*), a*+ etc... */
- int qtype = NTYPE(tqn->target);
- if (IS_NODE_TYPE_SIMPLE(qtype))
- SET_ENCLOSE_STATUS(node, NST_STOP_BT_SIMPLE_REPEAT);
+ if (NODE_IS_SIMPLE_TYPE(NODE_BODY(target)))
+ NODE_STATUS_ADD(node, STOP_BT_SIMPLE_REPEAT);
}
}
}
break;
- }
- }
- break;
-
- case NT_ANCHOR:
- {
- AnchorNode* an = NANCHOR(node);
-
- switch (an->type) {
- case ANCHOR_PREC_READ:
- r = setup_tree(an->target, reg, state, env);
- break;
- case ANCHOR_PREC_READ_NOT:
- r = setup_tree(an->target, reg, (state | IN_NOT), env);
- break;
-/* allowed node types in look-behind */
-#define ALLOWED_TYPE_IN_LB \
- ( BIT_NT_LIST | BIT_NT_ALT | BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE | \
- BIT_NT_CANY | BIT_NT_ANCHOR | BIT_NT_ENCLOSE | BIT_NT_QTFR | BIT_NT_CALL )
-
-#define ALLOWED_ENCLOSE_IN_LB ( ENCLOSE_MEMORY | ENCLOSE_OPTION )
-#define ALLOWED_ENCLOSE_IN_LB_NOT ENCLOSE_OPTION
-
-#define ALLOWED_ANCHOR_IN_LB \
-( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
-
-#define ALLOWED_ANCHOR_IN_LB_NOT \
-( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_WORD_BOUND | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END )
-
- case ANCHOR_LOOK_BEHIND:
- {
- r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB,
- ALLOWED_ENCLOSE_IN_LB, ALLOWED_ANCHOR_IN_LB);
- if (r < 0) return r;
- if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
- r = setup_tree(an->target, reg, state, env);
+ case ENCLOSURE_IF_ELSE:
+ r = setup_tree(NODE_BODY(node), reg, (state | IN_ALT), env);
+ if (r != 0) return r;
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = setup_tree(en->te.Then, reg, (state | IN_ALT), env);
if (r != 0) return r;
- r = setup_look_behind(node, reg, env);
- }
- break;
-
- case ANCHOR_LOOK_BEHIND_NOT:
- {
- r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB,
- ALLOWED_ENCLOSE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT);
- if (r < 0) return r;
- if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;
- r = setup_tree(an->target, reg, (state | IN_NOT), env);
- if (r != 0) return r;
- r = setup_look_behind(node, reg, env);
}
+ if (IS_NOT_NULL(en->te.Else))
+ r = setup_tree(en->te.Else, reg, (state | IN_ALT), env);
break;
}
}
break;
+ case NODE_QUANT:
+ r = setup_quant(node, reg, state, env);
+ break;
+
+ case NODE_ANCHOR:
+ r = setup_anchor(node, reg, state, env);
+ break;
+
+#ifdef USE_CALL
+ case NODE_CALL:
+#endif
+ case NODE_CTYPE:
+ case NODE_CCLASS:
+ case NODE_GIMMICK:
default:
break;
}
@@ -3954,11 +4541,11 @@ setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)
/* set skip map for Boyer-Moore search */
static int
set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
- UChar skip[], int** int_skip)
+ UChar skip[], int** int_skip)
{
int i, len;
- len = end - s;
+ len = (int )(end - s);
if (len < ONIG_CHAR_TABLE_SIZE) {
for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len;
@@ -3983,10 +4570,10 @@ set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
typedef struct {
OnigLen min; /* min byte length */
OnigLen max; /* max byte length */
-} MinMaxLen;
+} MinMax;
typedef struct {
- MinMaxLen mmd;
+ MinMax mmd;
OnigEncoding enc;
OnigOptionType options;
OnigCaseFoldType case_fold_flag;
@@ -3994,44 +4581,40 @@ typedef struct {
} OptEnv;
typedef struct {
- int left_anchor;
- int right_anchor;
-} OptAncInfo;
+ int left;
+ int right;
+} OptAnc;
typedef struct {
- MinMaxLen mmd; /* info position */
- OptAncInfo anc;
-
- int reach_end;
- int ignore_case;
- int len;
- UChar s[OPT_EXACT_MAXLEN];
-} OptExactInfo;
+ MinMax mmd; /* position */
+ OptAnc anc;
+ int reach_end;
+ int ignore_case;
+ int len;
+ UChar s[OPT_EXACT_MAXLEN];
+} OptExact;
typedef struct {
- MinMaxLen mmd; /* info position */
- OptAncInfo anc;
-
- int value; /* weighted value */
- UChar map[ONIG_CHAR_TABLE_SIZE];
-} OptMapInfo;
+ MinMax mmd; /* position */
+ OptAnc anc;
+ int value; /* weighted value */
+ UChar map[ONIG_CHAR_TABLE_SIZE];
+} OptMap;
typedef struct {
- MinMaxLen len;
-
- OptAncInfo anc;
- OptExactInfo exb; /* boundary */
- OptExactInfo exm; /* middle */
- OptExactInfo expr; /* prec read (?=...) */
-
- OptMapInfo map; /* boundary */
-} NodeOptInfo;
+ MinMax len;
+ OptAnc anc;
+ OptExact exb; /* boundary */
+ OptExact exm; /* middle */
+ OptExact expr; /* prec read (?=...) */
+ OptMap map; /* boundary */
+} NodeOpt;
static int
map_position_value(OnigEncoding enc, int i)
{
- static const short int ByteValTable[] = {
+ static const short int Vals[] = {
5, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 1, 10, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
12, 4, 7, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5,
@@ -4042,18 +4625,18 @@ map_position_value(OnigEncoding enc, int i)
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 1
};
- if (i < (int )(sizeof(ByteValTable)/sizeof(ByteValTable[0]))) {
+ if (i < (int )(sizeof(Vals)/sizeof(Vals[0]))) {
if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1)
return 20;
else
- return (int )ByteValTable[i];
+ return (int )Vals[i];
}
else
return 4; /* Take it easy. */
}
static int
-distance_value(MinMaxLen* mm)
+distance_value(MinMax* mm)
{
/* 1000 / (min-max-dist + 1) */
static const short int dist_vals[] = {
@@ -4071,7 +4654,7 @@ distance_value(MinMaxLen* mm)
OnigLen d;
- if (mm->max == ONIG_INFINITE_DISTANCE) return 0;
+ if (mm->max == INFINITE_LEN) return 0;
d = mm->max - mm->min;
if (d < (OnigLen )(sizeof(dist_vals)/sizeof(dist_vals[0])))
@@ -4082,7 +4665,7 @@ distance_value(MinMaxLen* mm)
}
static int
-comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2)
+comp_distance_value(MinMax* d1, MinMax* d2, int v1, int v2)
{
if (v2 <= 0) return -1;
if (v1 <= 0) return 1;
@@ -4099,50 +4682,40 @@ comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2)
}
static int
-is_equal_mml(MinMaxLen* a, MinMaxLen* b)
+is_equal_mml(MinMax* a, MinMax* b)
{
return (a->min == b->min && a->max == b->max) ? 1 : 0;
}
-
static void
-set_mml(MinMaxLen* mml, OnigLen min, OnigLen max)
+set_mml(MinMax* l, OnigLen min, OnigLen max)
{
- mml->min = min;
- mml->max = max;
+ l->min = min;
+ l->max = max;
}
static void
-clear_mml(MinMaxLen* mml)
+clear_mml(MinMax* l)
{
- mml->min = mml->max = 0;
+ l->min = l->max = 0;
}
static void
-copy_mml(MinMaxLen* to, MinMaxLen* from)
+copy_mml(MinMax* to, MinMax* from)
{
to->min = from->min;
to->max = from->max;
}
static void
-add_mml(MinMaxLen* to, MinMaxLen* from)
+add_mml(MinMax* to, MinMax* from)
{
to->min = distance_add(to->min, from->min);
to->max = distance_add(to->max, from->max);
}
-#if 0
static void
-add_len_mml(MinMaxLen* to, OnigLen len)
-{
- to->min = distance_add(to->min, len);
- to->max = distance_add(to->max, len);
-}
-#endif
-
-static void
-alt_merge_mml(MinMaxLen* to, MinMaxLen* from)
+alt_merge_mml(MinMax* to, MinMax* from)
{
if (to->min > from->min) to->min = from->min;
if (to->max < from->max) to->max = from->max;
@@ -4155,123 +4728,126 @@ copy_opt_env(OptEnv* to, OptEnv* from)
}
static void
-clear_opt_anc_info(OptAncInfo* anc)
+clear_opt_anc_info(OptAnc* a)
{
- anc->left_anchor = 0;
- anc->right_anchor = 0;
+ a->left = 0;
+ a->right = 0;
}
static void
-copy_opt_anc_info(OptAncInfo* to, OptAncInfo* from)
+copy_opt_anc_info(OptAnc* to, OptAnc* from)
{
*to = *from;
}
static void
-concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right,
- OnigLen left_len, OnigLen right_len)
+concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right,
+ OnigLen left_len, OnigLen right_len)
{
clear_opt_anc_info(to);
- to->left_anchor = left->left_anchor;
+ to->left = left->left;
if (left_len == 0) {
- to->left_anchor |= right->left_anchor;
+ to->left |= right->left;
}
- to->right_anchor = right->right_anchor;
+ to->right = right->right;
if (right_len == 0) {
- to->right_anchor |= left->right_anchor;
+ to->right |= left->right;
}
else {
- to->right_anchor |= (left->right_anchor & ANCHOR_PREC_READ_NOT);
+ to->right |= (left->right & ANCHOR_PREC_READ_NOT);
}
}
static int
-is_left_anchor(int anc)
+is_left(int a)
{
- if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF ||
- anc == ANCHOR_END_LINE || anc == ANCHOR_PREC_READ ||
- anc == ANCHOR_PREC_READ_NOT)
+ if (a == ANCHOR_END_BUF || a == ANCHOR_SEMI_END_BUF ||
+ a == ANCHOR_END_LINE || a == ANCHOR_PREC_READ || a == ANCHOR_PREC_READ_NOT)
return 0;
return 1;
}
static int
-is_set_opt_anc_info(OptAncInfo* to, int anc)
+is_set_opt_anc_info(OptAnc* to, int anc)
{
- if ((to->left_anchor & anc) != 0) return 1;
+ if ((to->left & anc) != 0) return 1;
- return ((to->right_anchor & anc) != 0 ? 1 : 0);
+ return ((to->right & anc) != 0 ? 1 : 0);
}
static void
-add_opt_anc_info(OptAncInfo* to, int anc)
+add_opt_anc_info(OptAnc* to, int anc)
{
- if (is_left_anchor(anc))
- to->left_anchor |= anc;
+ if (is_left(anc))
+ to->left |= anc;
else
- to->right_anchor |= anc;
+ to->right |= anc;
}
static void
-remove_opt_anc_info(OptAncInfo* to, int anc)
+remove_opt_anc_info(OptAnc* to, int anc)
{
- if (is_left_anchor(anc))
- to->left_anchor &= ~anc;
+ if (is_left(anc))
+ to->left &= ~anc;
else
- to->right_anchor &= ~anc;
+ to->right &= ~anc;
}
static void
-alt_merge_opt_anc_info(OptAncInfo* to, OptAncInfo* add)
+alt_merge_opt_anc_info(OptAnc* to, OptAnc* add)
{
- to->left_anchor &= add->left_anchor;
- to->right_anchor &= add->right_anchor;
+ to->left &= add->left;
+ to->right &= add->right;
}
static int
-is_full_opt_exact_info(OptExactInfo* ex)
+is_full_opt_exact(OptExact* e)
{
- return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0);
+ return (e->len >= OPT_EXACT_MAXLEN ? 1 : 0);
}
static void
-clear_opt_exact_info(OptExactInfo* ex)
+clear_opt_exact(OptExact* e)
{
- clear_mml(&ex->mmd);
- clear_opt_anc_info(&ex->anc);
- ex->reach_end = 0;
- ex->ignore_case = 0;
- ex->len = 0;
- ex->s[0] = '\0';
+ clear_mml(&e->mmd);
+ clear_opt_anc_info(&e->anc);
+ e->reach_end = 0;
+ e->ignore_case = 0;
+ e->len = 0;
+ e->s[0] = '\0';
}
static void
-copy_opt_exact_info(OptExactInfo* to, OptExactInfo* from)
+copy_opt_exact(OptExact* to, OptExact* from)
{
*to = *from;
}
-static void
-concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc)
+static int
+concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc)
{
- int i, j, len;
+ int i, j, len, r;
UChar *p, *end;
- OptAncInfo tanc;
+ OptAnc tanc;
if (! to->ignore_case && add->ignore_case) {
- if (to->len >= add->len) return ; /* avoid */
+ if (to->len >= add->len) return 0; /* avoid */
to->ignore_case = 1;
}
+ r = 0;
p = add->s;
end = p + add->len;
for (i = to->len; p < end; ) {
len = enclen(enc, p);
- if (i + len > OPT_EXACT_MAXLEN) break;
+ if (i + len > OPT_EXACT_MAXLEN) {
+ r = 1; /* 1:full */
+ break;
+ }
for (j = 0; j < len && p < end; j++)
to->s[i++] = *p++;
}
@@ -4280,13 +4856,14 @@ concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc)
to->reach_end = (p == end ? add->reach_end : 0);
concat_opt_anc_info(&tanc, &to->anc, &add->anc, 1, 1);
- if (! to->reach_end) tanc.right_anchor = 0;
+ if (! to->reach_end) tanc.right = 0;
copy_opt_anc_info(&to->anc, &tanc);
+
+ return r;
}
static void
-concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end,
- int raw ARG_UNUSED, OnigEncoding enc)
+concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, OnigEncoding enc)
{
int i, j, len;
UChar *p;
@@ -4302,17 +4879,17 @@ concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end,
}
static void
-alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env)
+alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env)
{
int i, j, len;
if (add->len == 0 || to->len == 0) {
- clear_opt_exact_info(to);
+ clear_opt_exact(to);
return ;
}
if (! is_equal_mml(&to->mmd, &add->mmd)) {
- clear_opt_exact_info(to);
+ clear_opt_exact(to);
return ;
}
@@ -4334,44 +4911,44 @@ alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env)
to->ignore_case |= add->ignore_case;
alt_merge_opt_anc_info(&to->anc, &add->anc);
- if (! to->reach_end) to->anc.right_anchor = 0;
+ if (! to->reach_end) to->anc.right = 0;
}
static void
-select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt)
+select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt)
{
- int v1, v2;
+ int vn, va;
- v1 = now->len;
- v2 = alt->len;
+ vn = now->len;
+ va = alt->len;
- if (v2 == 0) {
+ if (va == 0) {
return ;
}
- else if (v1 == 0) {
- copy_opt_exact_info(now, alt);
+ else if (vn == 0) {
+ copy_opt_exact(now, alt);
return ;
}
- else if (v1 <= 2 && v2 <= 2) {
+ else if (vn <= 2 && va <= 2) {
/* ByteValTable[x] is big value --> low price */
- v2 = map_position_value(enc, now->s[0]);
- v1 = map_position_value(enc, alt->s[0]);
+ va = map_position_value(enc, now->s[0]);
+ vn = map_position_value(enc, alt->s[0]);
- if (now->len > 1) v1 += 5;
- if (alt->len > 1) v2 += 5;
+ if (now->len > 1) vn += 5;
+ if (alt->len > 1) va += 5;
}
- if (now->ignore_case == 0) v1 *= 2;
- if (alt->ignore_case == 0) v2 *= 2;
+ if (now->ignore_case == 0) vn *= 2;
+ if (alt->ignore_case == 0) va *= 2;
- if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0)
- copy_opt_exact_info(now, alt);
+ if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0)
+ copy_opt_exact(now, alt);
}
static void
-clear_opt_map_info(OptMapInfo* map)
+clear_opt_map(OptMap* map)
{
- static const OptMapInfo clean_info = {
+ static const OptMap clean_info = {
{0, 0}, {0, 0}, 0,
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4393,87 +4970,87 @@ clear_opt_map_info(OptMapInfo* map)
}
};
- xmemcpy(map, &clean_info, sizeof(OptMapInfo));
+ xmemcpy(map, &clean_info, sizeof(OptMap));
}
static void
-copy_opt_map_info(OptMapInfo* to, OptMapInfo* from)
+copy_opt_map(OptMap* to, OptMap* from)
{
*to = *from;
}
static void
-add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc)
+add_char_opt_map(OptMap* m, UChar c, OnigEncoding enc)
{
- if (map->map[c] == 0) {
- map->map[c] = 1;
- map->value += map_position_value(enc, c);
+ if (m->map[c] == 0) {
+ m->map[c] = 1;
+ m->value += map_position_value(enc, c);
}
}
static int
-add_char_amb_opt_map_info(OptMapInfo* map, UChar* p, UChar* end,
- OnigEncoding enc, OnigCaseFoldType case_fold_flag)
+add_char_amb_opt_map(OptMap* map, UChar* p, UChar* end,
+ OnigEncoding enc, OnigCaseFoldType fold_flag)
{
OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];
UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];
int i, n;
- add_char_opt_map_info(map, p[0], enc);
+ add_char_opt_map(map, p[0], enc);
- case_fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag);
- n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, case_fold_flag, p, end, items);
+ fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(fold_flag);
+ n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, fold_flag, p, end, items);
if (n < 0) return n;
for (i = 0; i < n; i++) {
ONIGENC_CODE_TO_MBC(enc, items[i].code[0], buf);
- add_char_opt_map_info(map, buf[0], enc);
+ add_char_opt_map(map, buf[0], enc);
}
return 0;
}
static void
-select_opt_map_info(OptMapInfo* now, OptMapInfo* alt)
+select_opt_map(OptMap* now, OptMap* alt)
{
static int z = 1<<15; /* 32768: something big value */
- int v1, v2;
+ int vn, va;
if (alt->value == 0) return ;
if (now->value == 0) {
- copy_opt_map_info(now, alt);
+ copy_opt_map(now, alt);
return ;
}
- v1 = z / now->value;
- v2 = z / alt->value;
- if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0)
- copy_opt_map_info(now, alt);
+ vn = z / now->value;
+ va = z / alt->value;
+ if (comp_distance_value(&now->mmd, &alt->mmd, vn, va) > 0)
+ copy_opt_map(now, alt);
}
static int
-comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m)
+comp_opt_exact_or_map(OptExact* e, OptMap* m)
{
#define COMP_EM_BASE 20
- int ve, vm;
+ int ae, am;
if (m->value <= 0) return -1;
- ve = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2);
- vm = COMP_EM_BASE * 5 * 2 / m->value;
- return comp_distance_value(&e->mmd, &m->mmd, ve, vm);
+ ae = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2);
+ am = COMP_EM_BASE * 5 * 2 / m->value;
+ return comp_distance_value(&e->mmd, &m->mmd, ae, am);
}
static void
-alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add)
+alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add)
{
int i, val;
/* if (! is_equal_mml(&to->mmd, &add->mmd)) return ; */
if (to->value == 0) return ;
if (add->value == 0 || to->mmd.max < add->mmd.min) {
- clear_opt_map_info(to);
+ clear_opt_map(to);
return ;
}
@@ -4493,48 +5070,47 @@ alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add)
}
static void
-set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd)
+set_bound_node_opt_info(NodeOpt* opt, MinMax* plen)
{
- copy_mml(&(opt->exb.mmd), mmd);
- copy_mml(&(opt->expr.mmd), mmd);
- copy_mml(&(opt->map.mmd), mmd);
+ copy_mml(&(opt->exb.mmd), plen);
+ copy_mml(&(opt->expr.mmd), plen);
+ copy_mml(&(opt->map.mmd), plen);
}
static void
-clear_node_opt_info(NodeOptInfo* opt)
+clear_node_opt_info(NodeOpt* opt)
{
clear_mml(&opt->len);
clear_opt_anc_info(&opt->anc);
- clear_opt_exact_info(&opt->exb);
- clear_opt_exact_info(&opt->exm);
- clear_opt_exact_info(&opt->expr);
- clear_opt_map_info(&opt->map);
+ clear_opt_exact(&opt->exb);
+ clear_opt_exact(&opt->exm);
+ clear_opt_exact(&opt->expr);
+ clear_opt_map(&opt->map);
}
static void
-copy_node_opt_info(NodeOptInfo* to, NodeOptInfo* from)
+copy_node_opt_info(NodeOpt* to, NodeOpt* from)
{
*to = *from;
}
static void
-concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add)
+concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add)
{
int exb_reach, exm_reach;
- OptAncInfo tanc;
+ OptAnc tanc;
concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max);
copy_opt_anc_info(&to->anc, &tanc);
if (add->exb.len > 0 && to->len.max == 0) {
- concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc,
- to->len.max, add->len.max);
+ concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, to->len.max, add->len.max);
copy_opt_anc_info(&add->exb.anc, &tanc);
}
if (add->map.value > 0 && to->len.max == 0) {
if (add->map.mmd.max == 0)
- add->map.anc.left_anchor |= to->anc.left_anchor;
+ add->map.anc.left |= to->anc.left;
}
exb_reach = to->exb.reach_end;
@@ -4545,16 +5121,16 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add)
if (add->exb.len > 0) {
if (exb_reach) {
- concat_opt_exact_info(&to->exb, &add->exb, enc);
- clear_opt_exact_info(&add->exb);
+ concat_opt_exact(&to->exb, &add->exb, enc);
+ clear_opt_exact(&add->exb);
}
else if (exm_reach) {
- concat_opt_exact_info(&to->exm, &add->exb, enc);
- clear_opt_exact_info(&add->exb);
+ concat_opt_exact(&to->exm, &add->exb, enc);
+ clear_opt_exact(&add->exb);
}
}
- select_opt_exact_info(enc, &to->exm, &add->exb);
- select_opt_exact_info(enc, &to->exm, &add->exm);
+ select_opt_exact(enc, &to->exm, &add->exb);
+ select_opt_exact(enc, &to->exm, &add->exm);
if (to->expr.len > 0) {
if (add->len.max > 0) {
@@ -4562,28 +5138,27 @@ concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add)
to->expr.len = add->len.max;
if (to->expr.mmd.max == 0)
- select_opt_exact_info(enc, &to->exb, &to->expr);
+ select_opt_exact(enc, &to->exb, &to->expr);
else
- select_opt_exact_info(enc, &to->exm, &to->expr);
+ select_opt_exact(enc, &to->exm, &to->expr);
}
}
else if (add->expr.len > 0) {
- copy_opt_exact_info(&to->expr, &add->expr);
+ copy_opt_exact(&to->expr, &add->expr);
}
- select_opt_map_info(&to->map, &add->map);
-
+ select_opt_map(&to->map, &add->map);
add_mml(&to->len, &add->len);
}
static void
-alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env)
+alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env)
{
- alt_merge_opt_anc_info (&to->anc, &add->anc);
- alt_merge_opt_exact_info(&to->exb, &add->exb, env);
- alt_merge_opt_exact_info(&to->exm, &add->exm, env);
- alt_merge_opt_exact_info(&to->expr, &add->expr, env);
- alt_merge_opt_map_info(env->enc, &to->map, &add->map);
+ alt_merge_opt_anc_info(&to->anc, &add->anc);
+ alt_merge_opt_exact(&to->exb, &add->exb, env);
+ alt_merge_opt_exact(&to->exm, &add->exm, env);
+ alt_merge_opt_exact(&to->expr, &add->expr, env);
+ alt_merge_opt_map(env->enc, &to->map, &add->map);
alt_merge_mml(&to->len, &add->len);
}
@@ -4592,77 +5167,76 @@ alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env)
#define MAX_NODE_OPT_INFO_REF_COUNT 5
static int
-optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
+optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env)
{
- int type;
- int r = 0;
+ int i;
+ int r;
+ NodeOpt xo;
+ OnigEncoding enc;
+ r = 0;
+ enc = env->enc;
clear_node_opt_info(opt);
set_bound_node_opt_info(opt, &env->mmd);
- type = NTYPE(node);
- switch (type) {
- case NT_LIST:
+ switch (NODE_TYPE(node)) {
+ case NODE_LIST:
{
OptEnv nenv;
- NodeOptInfo nopt;
Node* nd = node;
copy_opt_env(&nenv, env);
do {
- r = optimize_node_left(NCAR(nd), &nopt, &nenv);
+ r = optimize_nodes(NODE_CAR(nd), &xo, &nenv);
if (r == 0) {
- add_mml(&nenv.mmd, &nopt.len);
- concat_left_node_opt_info(env->enc, opt, &nopt);
+ add_mml(&nenv.mmd, &xo.len);
+ concat_left_node_opt_info(enc, opt, &xo);
}
- } while (r == 0 && IS_NOT_NULL(nd = NCDR(nd)));
+ } while (r == 0 && IS_NOT_NULL(nd = NODE_CDR(nd)));
}
break;
- case NT_ALT:
+ case NODE_ALT:
{
- NodeOptInfo nopt;
Node* nd = node;
do {
- r = optimize_node_left(NCAR(nd), &nopt, env);
+ r = optimize_nodes(NODE_CAR(nd), &xo, env);
if (r == 0) {
- if (nd == node) copy_node_opt_info(opt, &nopt);
- else alt_merge_node_opt_info(opt, &nopt, env);
+ if (nd == node) copy_node_opt_info(opt, &xo);
+ else alt_merge_node_opt_info(opt, &xo, env);
}
- } while ((r == 0) && IS_NOT_NULL(nd = NCDR(nd)));
+ } while ((r == 0) && IS_NOT_NULL(nd = NODE_CDR(nd)));
}
break;
- case NT_STR:
+ case NODE_STRING:
{
- StrNode* sn = NSTR(node);
- int slen = sn->end - sn->s;
- int is_raw = NSTRING_IS_RAW(node);
+ StrNode* sn = STR_(node);
+ int slen = (int )(sn->end - sn->s);
+ /* int is_raw = NODE_STRING_IS_RAW(node); */
- if (! NSTRING_IS_AMBIG(node)) {
- concat_opt_exact_info_str(&opt->exb, sn->s, sn->end,
- NSTRING_IS_RAW(node), env->enc);
+ if (! NODE_STRING_IS_AMBIG(node)) {
+ concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc);
if (slen > 0) {
- add_char_opt_map_info(&opt->map, *(sn->s), env->enc);
+ add_char_opt_map(&opt->map, *(sn->s), enc);
}
set_mml(&opt->len, slen, slen);
}
else {
int max;
- if (NSTRING_IS_DONT_GET_OPT_INFO(node)) {
- int n = onigenc_strlen(env->enc, sn->s, sn->end);
- max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n;
+ if (NODE_STRING_IS_DONT_GET_OPT_INFO(node)) {
+ int n = onigenc_strlen(enc, sn->s, sn->end);
+ max = ONIGENC_MBC_MAXLEN_DIST(enc) * n;
}
else {
- concat_opt_exact_info_str(&opt->exb, sn->s, sn->end,
- is_raw, env->enc);
+ concat_opt_exact_str(&opt->exb, sn->s, sn->end, enc);
opt->exb.ignore_case = 1;
if (slen > 0) {
- r = add_char_amb_opt_map_info(&opt->map, sn->s, sn->end,
- env->enc, env->case_fold_flag);
+ r = add_char_amb_opt_map(&opt->map, sn->s, sn->end,
+ enc, env->case_fold_flag);
if (r != 0) break;
}
@@ -4677,24 +5251,24 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
{
- int i, z;
- CClassNode* cc = NCCLASS(node);
+ int z;
+ CClassNode* cc = CCLASS_(node);
/* no need to check ignore case. (set in setup_tree()) */
if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) {
- OnigLen min = ONIGENC_MBC_MINLEN(env->enc);
- OnigLen max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
+ OnigLen min = ONIGENC_MBC_MINLEN(enc);
+ OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc);
set_mml(&opt->len, min, max);
}
else {
for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
z = BITSET_AT(cc->bs, i);
- if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) {
- add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
+ if ((z && ! IS_NCCLASS_NOT(cc)) || (! z && IS_NCCLASS_NOT(cc))) {
+ add_char_opt_map(&opt->map, (UChar )i, enc);
}
}
set_mml(&opt->len, 1, 1);
@@ -4702,28 +5276,36 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
break;
- case NT_CTYPE:
+ case NODE_CTYPE:
{
- int i, min, max;
+ int min, max;
+ int range;
- max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
+ max = ONIGENC_MBC_MAXLEN_DIST(enc);
if (max == 1) {
min = 1;
- switch (NCTYPE(node)->ctype) {
+ switch (CTYPE_(node)->ctype) {
+ case CTYPE_ANYCHAR:
+ break;
+
case ONIGENC_CTYPE_WORD:
- if (NCTYPE(node)->not != 0) {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
- if (! ONIGENC_IS_CODE_WORD(env->enc, i)) {
- add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
+ range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE;
+ if (CTYPE_(node)->not != 0) {
+ for (i = 0; i < range; i++) {
+ if (! ONIGENC_IS_CODE_WORD(enc, i)) {
+ add_char_opt_map(&opt->map, (UChar )i, enc);
}
}
+ for (i = range; i < SINGLE_BYTE_SIZE; i++) {
+ add_char_opt_map(&opt->map, (UChar )i, enc);
+ }
}
else {
- for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
- if (ONIGENC_IS_CODE_WORD(env->enc, i)) {
- add_char_opt_map_info(&opt->map, (UChar )i, env->enc);
+ for (i = 0; i < range; i++) {
+ if (ONIGENC_IS_CODE_WORD(enc, i)) {
+ add_char_opt_map(&opt->map, (UChar )i, enc);
}
}
}
@@ -4731,22 +5313,14 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
}
else {
- min = ONIGENC_MBC_MINLEN(env->enc);
+ min = ONIGENC_MBC_MINLEN(enc);
}
set_mml(&opt->len, min, max);
}
break;
- case NT_CANY:
- {
- OnigLen min = ONIGENC_MBC_MINLEN(env->enc);
- OnigLen max = ONIGENC_MBC_MAXLEN_DIST(env->enc);
- set_mml(&opt->len, min, max);
- }
- break;
-
- case NT_ANCHOR:
- switch (NANCHOR(node)->type) {
+ case NODE_ANCHOR:
+ switch (ANCHOR_(node)->type) {
case ANCHOR_BEGIN_BUF:
case ANCHOR_BEGIN_POSITION:
case ANCHOR_BEGIN_LINE:
@@ -4755,24 +5329,22 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
case ANCHOR_END_LINE:
case ANCHOR_PREC_READ_NOT:
case ANCHOR_LOOK_BEHIND:
- add_opt_anc_info(&opt->anc, NANCHOR(node)->type);
+ add_opt_anc_info(&opt->anc, ANCHOR_(node)->type);
break;
case ANCHOR_PREC_READ:
{
- NodeOptInfo nopt;
-
- r = optimize_node_left(NANCHOR(node)->target, &nopt, env);
+ r = optimize_nodes(NODE_BODY(node), &xo, env);
if (r == 0) {
- if (nopt.exb.len > 0)
- copy_opt_exact_info(&opt->expr, &nopt.exb);
- else if (nopt.exm.len > 0)
- copy_opt_exact_info(&opt->expr, &nopt.exm);
+ if (xo.exb.len > 0)
+ copy_opt_exact(&opt->expr, &xo.exb);
+ else if (xo.exm.len > 0)
+ copy_opt_exact(&opt->expr, &xo.exm);
opt->expr.reach_end = 0;
- if (nopt.map.value > 0)
- copy_opt_map_info(&opt->map, &nopt.map);
+ if (xo.map.value > 0)
+ copy_opt_map(&opt->map, &xo.map);
}
}
break;
@@ -4782,151 +5354,167 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
break;
- case NT_BREF:
- {
- int i;
+ case NODE_BACKREF:
+ if (! NODE_IS_CHECKER(node)) {
int* backs;
OnigLen min, max, tmin, tmax;
- Node** nodes = SCANENV_MEM_NODES(env->scan_env);
- BRefNode* br = NBREF(node);
+ MemEnv* mem_env = SCANENV_MEMENV(env->scan_env);
+ BackRefNode* br = BACKREF_(node);
- if (br->state & NST_RECURSION) {
- set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE);
+ if (NODE_IS_RECURSION(node)) {
+ set_mml(&opt->len, 0, INFINITE_LEN);
break;
}
backs = BACKREFS_P(br);
- r = get_min_len(nodes[backs[0]], &min, env->scan_env);
- if (r != 0) break;
- r = get_max_len(nodes[backs[0]], &max, env->scan_env);
- if (r != 0) break;
+ min = tree_min_len(mem_env[backs[0]].node, env->scan_env);
+ max = tree_max_len(mem_env[backs[0]].node, env->scan_env);
for (i = 1; i < br->back_num; i++) {
- r = get_min_len(nodes[backs[i]], &tmin, env->scan_env);
- if (r != 0) break;
- r = get_max_len(nodes[backs[i]], &tmax, env->scan_env);
- if (r != 0) break;
+ tmin = tree_min_len(mem_env[backs[i]].node, env->scan_env);
+ tmax = tree_max_len(mem_env[backs[i]].node, env->scan_env);
if (min > tmin) min = tmin;
if (max < tmax) max = tmax;
}
- if (r == 0) set_mml(&opt->len, min, max);
+ set_mml(&opt->len, min, max);
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
- if (IS_CALL_RECURSION(NCALL(node)))
- set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE);
+#ifdef USE_CALL
+ case NODE_CALL:
+ if (NODE_IS_RECURSION(node))
+ set_mml(&opt->len, 0, INFINITE_LEN);
else {
OnigOptionType save = env->options;
- env->options = NENCLOSE(NCALL(node)->target)->option;
- r = optimize_node_left(NCALL(node)->target, opt, env);
+ env->options = ENCLOSURE_(NODE_BODY(node))->o.options;
+ r = optimize_nodes(NODE_BODY(node), opt, env);
env->options = save;
}
break;
#endif
- case NT_QTFR:
+ case NODE_QUANT:
{
- int i;
OnigLen min, max;
- NodeOptInfo nopt;
- QtfrNode* qn = NQTFR(node);
+ QuantNode* qn = QUANT_(node);
- r = optimize_node_left(qn->target, &nopt, env);
- if (r) break;
+ r = optimize_nodes(NODE_BODY(node), &xo, env);
+ if (r != 0) break;
- if (qn->lower == 0 && IS_REPEAT_INFINITE(qn->upper)) {
- if (env->mmd.max == 0 &&
- NTYPE(qn->target) == NT_CANY && qn->greedy) {
- if (IS_MULTILINE(env->options))
- add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_ML);
- else
- add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR);
- }
- }
- else {
- if (qn->lower > 0) {
- copy_node_opt_info(opt, &nopt);
- if (nopt.exb.len > 0) {
- if (nopt.exb.reach_end) {
- for (i = 2; i <= qn->lower &&
- ! is_full_opt_exact_info(&opt->exb); i++) {
- concat_opt_exact_info(&opt->exb, &nopt.exb, env->enc);
- }
- if (i < qn->lower) {
- opt->exb.reach_end = 0;
- }
+ if (qn->lower > 0) {
+ copy_node_opt_info(opt, &xo);
+ if (xo.exb.len > 0) {
+ if (xo.exb.reach_end) {
+ for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->exb); i++) {
+ int rc = concat_opt_exact(&opt->exb, &xo.exb, enc);
+ if (rc > 0) break;
}
+ if (i < qn->lower) opt->exb.reach_end = 0;
}
+ }
- if (qn->lower != qn->upper) {
- opt->exb.reach_end = 0;
- opt->exm.reach_end = 0;
- }
- if (qn->lower > 1)
- opt->exm.reach_end = 0;
+ if (qn->lower != qn->upper) {
+ opt->exb.reach_end = 0;
+ opt->exm.reach_end = 0;
}
+ if (qn->lower > 1)
+ opt->exm.reach_end = 0;
}
- min = distance_multiply(nopt.len.min, qn->lower);
- if (IS_REPEAT_INFINITE(qn->upper))
- max = (nopt.len.max > 0 ? ONIG_INFINITE_DISTANCE : 0);
- else
- max = distance_multiply(nopt.len.max, qn->upper);
+ if (IS_REPEAT_INFINITE(qn->upper)) {
+ if (env->mmd.max == 0 &&
+ NODE_IS_ANYCHAR(NODE_BODY(node)) && qn->greedy != 0) {
+ if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), env)))
+ add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_ML);
+ else
+ add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF);
+ }
+ max = (xo.len.max > 0 ? INFINITE_LEN : 0);
+ }
+ else {
+ max = distance_multiply(xo.len.max, qn->upper);
+ }
+
+ min = distance_multiply(xo.len.min, qn->lower);
set_mml(&opt->len, min, max);
}
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
{
- EncloseNode* en = NENCLOSE(node);
+ EnclosureNode* en = ENCLOSURE_(node);
switch (en->type) {
- case ENCLOSE_OPTION:
+ case ENCLOSURE_OPTION:
{
OnigOptionType save = env->options;
- env->options = en->option;
- r = optimize_node_left(en->target, opt, env);
+ env->options = en->o.options;
+ r = optimize_nodes(NODE_BODY(node), opt, env);
env->options = save;
}
break;
- case ENCLOSE_MEMORY:
-#ifdef USE_SUBEXP_CALL
+ case ENCLOSURE_MEMORY:
+#ifdef USE_CALL
en->opt_count++;
if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) {
OnigLen min, max;
min = 0;
- max = ONIG_INFINITE_DISTANCE;
- if (IS_ENCLOSE_MIN_FIXED(en)) min = en->min_len;
- if (IS_ENCLOSE_MAX_FIXED(en)) max = en->max_len;
+ max = INFINITE_LEN;
+ if (NODE_IS_MIN_FIXED(node)) min = en->min_len;
+ if (NODE_IS_MAX_FIXED(node)) max = en->max_len;
set_mml(&opt->len, min, max);
}
else
#endif
{
- r = optimize_node_left(en->target, opt, env);
-
- if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) {
- if (BIT_STATUS_AT(env->scan_env->backrefed_mem, en->regnum))
- remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK);
+ r = optimize_nodes(NODE_BODY(node), opt, env);
+ if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK)) {
+ if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum))
+ remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_INF_MASK);
}
}
break;
- case ENCLOSE_STOP_BACKTRACK:
- r = optimize_node_left(en->target, opt, env);
+ case ENCLOSURE_STOP_BACKTRACK:
+ r = optimize_nodes(NODE_BODY(node), opt, env);
+ break;
+
+ case ENCLOSURE_IF_ELSE:
+ {
+ OptEnv nenv;
+
+ copy_opt_env(&nenv, env);
+ r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &xo, &nenv);
+ if (r == 0) {
+ add_mml(&nenv.mmd, &xo.len);
+ concat_left_node_opt_info(enc, opt, &xo);
+ if (IS_NOT_NULL(en->te.Then)) {
+ r = optimize_nodes(en->te.Then, &xo, &nenv);
+ if (r == 0) {
+ concat_left_node_opt_info(enc, opt, &xo);
+ }
+ }
+
+ if (IS_NOT_NULL(en->te.Else)) {
+ r = optimize_nodes(en->te.Else, &xo, env);
+ if (r == 0)
+ alt_merge_node_opt_info(opt, &xo, env);
+ }
+ }
+ }
break;
}
}
break;
+ case NODE_GIMMICK:
+ break;
+
default:
#ifdef ONIG_DEBUG
- fprintf(stderr, "optimize_node_left: undefined node type %d\n",
- NTYPE(node));
+ fprintf(stderr, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node));
#endif
r = ONIGERR_TYPE_BUG;
break;
@@ -4936,7 +5524,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)
}
static int
-set_optimize_exact_info(regex_t* reg, OptExactInfo* e)
+set_optimize_exact(regex_t* reg, OptExact* e)
{
int r;
@@ -4947,12 +5535,12 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e)
CHECK_NULL_RETURN_MEMERR(reg->exact);
xmemcpy(reg->exact, e->s, e->len);
reg->exact_end = reg->exact + e->len;
- reg->optimize = ONIG_OPTIMIZE_EXACT_IC;
+ reg->optimize = OPTIMIZE_EXACT_IC;
}
else {
int allow_reverse;
- reg->exact = str_dup(e->s, e->s + e->len);
+ reg->exact = onigenc_strdup(reg->enc, e->s, e->s + e->len);
CHECK_NULL_RETURN_MEMERR(reg->exact);
reg->exact_end = reg->exact + e->len;
@@ -4961,80 +5549,79 @@ set_optimize_exact_info(regex_t* reg, OptExactInfo* e)
if (e->len >= 3 || (e->len >= 2 && allow_reverse)) {
r = set_bm_skip(reg->exact, reg->exact_end, reg->enc,
- reg->map, &(reg->int_map));
- if (r) return r;
+ reg->map, &(reg->int_map));
+ if (r != 0) return r;
reg->optimize = (allow_reverse != 0
- ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV);
+ ? OPTIMIZE_EXACT_BM : OPTIMIZE_EXACT_BM_NO_REV);
}
else {
- reg->optimize = ONIG_OPTIMIZE_EXACT;
+ reg->optimize = OPTIMIZE_EXACT;
}
}
reg->dmin = e->mmd.min;
reg->dmax = e->mmd.max;
- if (reg->dmin != ONIG_INFINITE_DISTANCE) {
- reg->threshold_len = reg->dmin + (reg->exact_end - reg->exact);
+ if (reg->dmin != INFINITE_LEN) {
+ reg->threshold_len = reg->dmin + (int )(reg->exact_end - reg->exact);
}
return 0;
}
static void
-set_optimize_map_info(regex_t* reg, OptMapInfo* m)
+set_optimize_map(regex_t* reg, OptMap* m)
{
int i;
for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)
reg->map[i] = m->map[i];
- reg->optimize = ONIG_OPTIMIZE_MAP;
+ reg->optimize = OPTIMIZE_MAP;
reg->dmin = m->mmd.min;
reg->dmax = m->mmd.max;
- if (reg->dmin != ONIG_INFINITE_DISTANCE) {
+ if (reg->dmin != INFINITE_LEN) {
reg->threshold_len = reg->dmin + 1;
}
}
static void
-set_sub_anchor(regex_t* reg, OptAncInfo* anc)
+set_sub_anchor(regex_t* reg, OptAnc* anc)
{
- reg->sub_anchor |= anc->left_anchor & ANCHOR_BEGIN_LINE;
- reg->sub_anchor |= anc->right_anchor & ANCHOR_END_LINE;
+ reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE;
+ reg->sub_anchor |= anc->right & ANCHOR_END_LINE;
}
-#ifdef ONIG_DEBUG
+#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
static void print_optimize_info(FILE* f, regex_t* reg);
#endif
static int
set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
{
-
int r;
- NodeOptInfo opt;
+ NodeOpt opt;
OptEnv env;
env.enc = reg->enc;
env.options = reg->options;
env.case_fold_flag = reg->case_fold_flag;
- env.scan_env = scan_env;
+ env.scan_env = scan_env;
clear_mml(&env.mmd);
- r = optimize_node_left(node, &opt, &env);
- if (r) return r;
+ r = optimize_nodes(node, &opt, &env);
+ if (r != 0) return r;
- reg->anchor = opt.anc.left_anchor & (ANCHOR_BEGIN_BUF |
- ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML |
+ reg->anchor = opt.anc.left & (ANCHOR_BEGIN_BUF |
+ ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML |
ANCHOR_LOOK_BEHIND);
- if ((opt.anc.left_anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0)
- reg->anchor &= ~ANCHOR_ANYCHAR_STAR_ML;
+ if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0)
+ reg->anchor &= ~ANCHOR_ANYCHAR_INF_ML;
- reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF |
+ reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF |
ANCHOR_PREC_READ_NOT);
if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) {
@@ -5043,25 +5630,24 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
}
if (opt.exb.len > 0 || opt.exm.len > 0) {
- select_opt_exact_info(reg->enc, &opt.exb, &opt.exm);
- if (opt.map.value > 0 &&
- comp_opt_exact_or_map_info(&opt.exb, &opt.map) > 0) {
+ select_opt_exact(reg->enc, &opt.exb, &opt.exm);
+ if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.exb, &opt.map) > 0) {
goto set_map;
}
else {
- r = set_optimize_exact_info(reg, &opt.exb);
+ r = set_optimize_exact(reg, &opt.exb);
set_sub_anchor(reg, &opt.exb.anc);
}
}
else if (opt.map.value > 0) {
set_map:
- set_optimize_map_info(reg, &opt.map);
+ set_optimize_map(reg, &opt.map);
set_sub_anchor(reg, &opt.map.anc);
}
else {
- reg->sub_anchor |= opt.anc.left_anchor & ANCHOR_BEGIN_LINE;
+ reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE;
if (opt.len.max == 0)
- reg->sub_anchor |= opt.anc.right_anchor & ANCHOR_END_LINE;
+ reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE;
}
#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
@@ -5073,7 +5659,7 @@ set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)
static void
clear_optimize_info(regex_t* reg)
{
- reg->optimize = ONIG_OPTIMIZE_NONE;
+ reg->optimize = OPTIMIZE_NONE;
reg->anchor = 0;
reg->anchor_dmin = 0;
reg->anchor_dmax = 0;
@@ -5089,7 +5675,7 @@ clear_optimize_info(regex_t* reg)
#ifdef ONIG_DEBUG
static void print_enc_string(FILE* fp, OnigEncoding enc,
- const UChar *s, const UChar *end)
+ const UChar *s, const UChar *end)
{
fprintf(fp, "\nPATTERN: /");
@@ -5120,17 +5706,21 @@ static void print_enc_string(FILE* fp, OnigEncoding enc,
fprintf(fp, "/\n");
}
+#endif /* ONIG_DEBUG */
+
+#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)
+
static void
print_distance_range(FILE* f, OnigLen a, OnigLen b)
{
- if (a == ONIG_INFINITE_DISTANCE)
+ if (a == INFINITE_LEN)
fputs("inf", f);
else
fprintf(f, "(%u)", a);
fputs("-", f);
- if (b == ONIG_INFINITE_DISTANCE)
+ if (b == INFINITE_LEN)
fputs("inf", f);
else
fprintf(f, "(%u)", b);
@@ -5172,14 +5762,14 @@ print_anchor(FILE* f, int anchor)
q = 1;
fprintf(f, "end-line");
}
- if (anchor & ANCHOR_ANYCHAR_STAR) {
+ if (anchor & ANCHOR_ANYCHAR_INF) {
if (q) fprintf(f, ", ");
q = 1;
- fprintf(f, "anychar-star");
+ fprintf(f, "anychar-inf");
}
- if (anchor & ANCHOR_ANYCHAR_STAR_ML) {
+ if (anchor & ANCHOR_ANYCHAR_INF_ML) {
if (q) fprintf(f, ", ");
- fprintf(f, "anychar-star-ml");
+ fprintf(f, "anychar-inf-ml");
}
fprintf(f, "]");
@@ -5211,7 +5801,7 @@ print_optimize_info(FILE* f, regex_t* reg)
}
fprintf(f, "]: length: %ld\n", (reg->exact_end - reg->exact));
}
- else if (reg->optimize & ONIG_OPTIMIZE_MAP) {
+ else if (reg->optimize & OPTIMIZE_MAP) {
int c, i, n = 0;
for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)
@@ -5236,7 +5826,67 @@ print_optimize_info(FILE* f, regex_t* reg)
}
}
}
-#endif /* ONIG_DEBUG */
+#endif
+
+
+extern RegexExt*
+onig_get_regex_ext(regex_t* reg)
+{
+ if (IS_NULL(REG_EXTP(reg))) {
+ RegexExt* ext = (RegexExt* )xmalloc(sizeof(*ext));
+ if (IS_NULL(ext)) return 0;
+
+ ext->pattern = 0;
+ ext->pattern_end = 0;
+#ifdef USE_CALLOUT
+ ext->tag_table = 0;
+ ext->callout_num = 0;
+ ext->callout_list_alloc = 0;
+ ext->callout_list = 0;
+#endif
+
+ REG_EXTPL(reg) = (void* )ext;
+ }
+
+ return REG_EXTP(reg);
+}
+
+static void
+free_regex_ext(RegexExt* ext)
+{
+ if (IS_NOT_NULL(ext)) {
+ if (IS_NOT_NULL(ext->pattern))
+ xfree((void* )ext->pattern);
+
+#ifdef USE_CALLOUT
+ if (IS_NOT_NULL(ext->tag_table))
+ onig_callout_tag_table_free(ext->tag_table);
+
+ if (IS_NOT_NULL(ext->callout_list))
+ onig_free_reg_callout_list(ext->callout_num, ext->callout_list);
+#endif
+
+ xfree(ext);
+ }
+}
+
+extern int
+onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end)
+{
+ RegexExt* ext;
+ UChar* s;
+
+ ext = onig_get_regex_ext(reg);
+ CHECK_NULL_RETURN_MEMERR(ext);
+
+ s = onigenc_strdup(reg->enc, pattern, pattern_end);
+ CHECK_NULL_RETURN_MEMERR(s);
+
+ ext->pattern = s;
+ ext->pattern_end = s + (pattern_end - pattern);
+
+ return ONIG_NORMAL;
+}
extern void
@@ -5248,11 +5898,12 @@ onig_free_body(regex_t* reg)
if (IS_NOT_NULL(reg->int_map)) xfree(reg->int_map);
if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward);
if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range);
- if (IS_NOT_NULL(reg->chain)) onig_free(reg->chain);
+ if (IS_NOT_NULL(REG_EXTP(reg))) {
+ free_regex_ext(REG_EXTP(reg));
+ REG_EXTPL(reg) = 0;
+ }
-#ifdef USE_NAMED_GROUP
onig_names_free(reg);
-#endif
}
}
@@ -5278,37 +5929,37 @@ onig_transfer(regex_t* to, regex_t* from)
}
-#ifdef ONIG_DEBUG
-static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));
-#endif
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
static void print_tree P_((FILE* f, Node* node));
#endif
extern int
onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
- OnigErrorInfo* einfo)
+ OnigErrorInfo* einfo)
{
#define COMPILE_INIT_SIZE 20
int r, init_size;
Node* root;
ScanEnv scan_env;
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
UnsetAddrList uslist;
#endif
root = 0;
- if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL;
+ if (IS_NOT_NULL(einfo)) {
+ einfo->enc = reg->enc;
+ einfo->par = (UChar* )NULL;
+ }
#ifdef ONIG_DEBUG
print_enc_string(stderr, reg->enc, pattern, pattern_end);
#endif
if (reg->alloc == 0) {
- init_size = (pattern_end - pattern) * 2;
+ init_size = (int )(pattern_end - pattern) * 2;
if (init_size <= 0) init_size = COMPILE_INIT_SIZE;
- r = BBUF_INIT(reg, init_size);
+ r = BB_INIT(reg, init_size);
if (r != 0) goto end;
}
else
@@ -5319,18 +5970,14 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
reg->num_null_check = 0;
reg->repeat_range_alloc = 0;
reg->repeat_range = (OnigRepeatRange* )NULL;
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- reg->num_comb_exp_check = 0;
-#endif
- r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env);
+ r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env);
if (r != 0) goto err;
-#ifdef USE_NAMED_GROUP
/* mixed use named group and no-named group */
if (scan_env.num_named > 0 &&
IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
- !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
+ ! ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
if (scan_env.num_named != scan_env.num_mem)
r = disable_noname_group_capture(&root, reg, &scan_env);
else
@@ -5338,30 +5985,34 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
if (r != 0) goto err;
}
-#endif
-#ifdef USE_SUBEXP_CALL
+ r = check_backrefs(root, &scan_env);
+ if (r != 0) goto err;
+
+#ifdef USE_CALL
if (scan_env.num_call > 0) {
r = unset_addr_list_init(&uslist, scan_env.num_call);
if (r != 0) goto err;
scan_env.unset_addr_list = &uslist;
- r = setup_subexp_call(root, &scan_env);
+ r = setup_call(root, &scan_env, 0);
+ if (r != 0) goto err_unset;
+ r = setup_call2(root);
if (r != 0) goto err_unset;
- r = subexp_recursive_check_trav(root, &scan_env);
+ r = recursive_call_check_trav(root, &scan_env, 0);
if (r < 0) goto err_unset;
- r = subexp_inf_recursive_check_trav(root, &scan_env);
+ r = infinite_recursive_call_check_trav(root, &scan_env);
if (r != 0) goto err_unset;
- reg->num_call = scan_env.num_call;
+ setup_called_state(root, 0);
}
- else
- reg->num_call = 0;
+
+ reg->num_call = scan_env.num_call;
#endif
r = setup_tree(root, reg, 0, &scan_env);
if (r != 0) goto err_unset;
-#ifdef ONIG_DEBUG_PARSE_TREE
+#ifdef ONIG_DEBUG_PARSE
print_tree(stderr, root);
#endif
@@ -5369,38 +6020,12 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
reg->bt_mem_start = scan_env.bt_mem_start;
reg->bt_mem_start |= reg->capture_history;
if (IS_FIND_CONDITION(reg->options))
- BIT_STATUS_ON_ALL(reg->bt_mem_end);
+ MEM_STATUS_ON_ALL(reg->bt_mem_end);
else {
reg->bt_mem_end = scan_env.bt_mem_end;
reg->bt_mem_end |= reg->capture_history;
}
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- if (scan_env.backrefed_mem == 0
-#ifdef USE_SUBEXP_CALL
- || scan_env.num_call == 0
-#endif
- ) {
- setup_comb_exp_check(root, 0, &scan_env);
-#ifdef USE_SUBEXP_CALL
- if (scan_env.has_recursion != 0) {
- scan_env.num_comb_exp_check = 0;
- }
- else
-#endif
- if (scan_env.comb_exp_max_regnum > 0) {
- int i;
- for (i = 1; i <= scan_env.comb_exp_max_regnum; i++) {
- if (BIT_STATUS_AT(scan_env.backrefed_mem, i) != 0) {
- scan_env.num_comb_exp_check = 0;
- break;
- }
- }
- }
- }
-
- reg->num_comb_exp_check = scan_env.num_comb_exp_check;
-#endif
+ reg->bt_mem_start |= reg->bt_mem_end;
clear_optimize_info(reg);
#ifndef ONIG_DONT_OPTIMIZE
@@ -5408,23 +6033,36 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
if (r != 0) goto err_unset;
#endif
- if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) {
- xfree(scan_env.mem_nodes_dynamic);
- scan_env.mem_nodes_dynamic = (Node** )NULL;
+ if (IS_NOT_NULL(scan_env.mem_env_dynamic)) {
+ xfree(scan_env.mem_env_dynamic);
+ scan_env.mem_env_dynamic = (MemEnv* )NULL;
}
- r = compile_tree(root, reg);
+ r = compile_tree(root, reg, &scan_env);
if (r == 0) {
+ if (scan_env.keep_num > 0) {
+ r = add_opcode(reg, OP_UPDATE_VAR);
+ if (r != 0) goto err;
+ r = add_update_var_type(reg, UPDATE_VAR_KEEP_FROM_STACK_LAST);
+ if (r != 0) goto err;
+ r = add_mem_num(reg, 0 /* not used */);
+ if (r != 0) goto err;
+ }
+
r = add_opcode(reg, OP_END);
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
if (scan_env.num_call > 0) {
- r = unset_addr_list_fix(&uslist, reg);
+ r = fix_unset_addr_list(&uslist, reg);
unset_addr_list_end(&uslist);
- if (r) goto err;
+ if (r != 0) goto err;
}
#endif
- if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0))
+ if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0)
+#ifdef USE_CALLOUT
+ || (IS_NOT_NULL(REG_EXTP(reg)) && REG_EXTP(reg)->callout_num != 0)
+#endif
+ )
reg->stack_pop_level = STACK_POP_LEVEL_ALL;
else {
if (reg->bt_mem_start != 0)
@@ -5433,7 +6071,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
reg->stack_pop_level = STACK_POP_LEVEL_FREE;
}
}
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
else if (scan_env.num_call > 0) {
unset_addr_list_end(&uslist);
}
@@ -5441,17 +6079,15 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
onig_node_free(root);
#ifdef ONIG_DEBUG_COMPILE
-#ifdef USE_NAMED_GROUP
onig_print_names(stderr, reg);
-#endif
- print_compiled_byte_code_list(stderr, reg);
+ onig_print_compiled_byte_code_list(stderr, reg);
#endif
end:
return r;
err_unset:
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
if (scan_env.num_call > 0) {
unset_addr_list_end(&uslist);
}
@@ -5459,15 +6095,14 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
err:
if (IS_NOT_NULL(scan_env.error)) {
if (IS_NOT_NULL(einfo)) {
- einfo->enc = scan_env.enc;
einfo->par = scan_env.error;
einfo->par_end = scan_env.error_end;
}
}
onig_node_free(root);
- if (IS_NOT_NULL(scan_env.mem_nodes_dynamic))
- xfree(scan_env.mem_nodes_dynamic);
+ if (IS_NOT_NULL(scan_env.mem_env_dynamic))
+ xfree(scan_env.mem_env_dynamic);
return r;
}
@@ -5475,9 +6110,8 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
static int onig_inited = 0;
extern int
-onig_reg_init(regex_t* reg, OnigOptionType option,
- OnigCaseFoldType case_fold_flag,
- OnigEncoding enc, OnigSyntaxType* syntax)
+onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag,
+ OnigEncoding enc, OnigSyntaxType* syntax)
{
int r;
@@ -5487,11 +6121,7 @@ onig_reg_init(regex_t* reg, OnigOptionType option,
#if 0
return ONIGERR_LIBRARY_IS_NOT_INITIALIZED;
#else
- r = onig_initialize(NULL, 0);
- if (r != 0)
- return ONIGERR_FAIL_TO_INITIALIZE;
-
- r = onig_initialize_encoding(enc);
+ r = onig_initialize(&enc, 1);
if (r != 0)
return ONIGERR_FAIL_TO_INITIALIZE;
@@ -5524,7 +6154,7 @@ onig_reg_init(regex_t* reg, OnigOptionType option,
(reg)->exact = (UChar* )NULL;
(reg)->int_map = (int* )NULL;
(reg)->int_map_backward = (int* )NULL;
- (reg)->chain = (regex_t* )NULL;
+ REG_EXTPL(reg) = NULL;
(reg)->p = (UChar* )NULL;
(reg)->alloc = 0;
@@ -5536,14 +6166,15 @@ onig_reg_init(regex_t* reg, OnigOptionType option,
}
extern int
-onig_new_without_alloc(regex_t* reg, const UChar* pattern,
- const UChar* pattern_end, OnigOptionType option, OnigEncoding enc,
- OnigSyntaxType* syntax, OnigErrorInfo* einfo)
+onig_new_without_alloc(regex_t* reg,
+ const UChar* pattern, const UChar* pattern_end,
+ OnigOptionType option, OnigEncoding enc,
+ OnigSyntaxType* syntax, OnigErrorInfo* einfo)
{
int r;
r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax);
- if (r) return r;
+ if (r != 0) return r;
r = onig_compile(reg, pattern, pattern_end, einfo);
return r;
@@ -5551,8 +6182,8 @@ onig_new_without_alloc(regex_t* reg, const UChar* pattern,
extern int
onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
- OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
- OnigErrorInfo* einfo)
+ OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,
+ OnigErrorInfo* einfo)
{
int r;
@@ -5560,10 +6191,10 @@ onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
if (IS_NULL(*reg)) return ONIGERR_MEMORY;
r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax);
- if (r) goto err;
+ if (r != 0) goto err;
r = onig_compile(*reg, pattern, pattern_end, einfo);
- if (r) {
+ if (r != 0) {
err:
onig_free(*reg);
*reg = NULL;
@@ -5591,16 +6222,21 @@ onig_initialize(OnigEncoding encodings[], int n)
return r;
}
- return 0;
+ return ONIG_NORMAL;
}
-static OnigEndCallListItemType* EndCallTop;
+typedef struct EndCallListItem {
+ struct EndCallListItem* next;
+ void (*func)(void);
+} EndCallListItemType;
+
+static EndCallListItemType* EndCallTop;
extern void onig_add_end_call(void (*func)(void))
{
- OnigEndCallListItemType* item;
+ EndCallListItemType* item;
- item = (OnigEndCallListItemType* )xmalloc(sizeof(*item));
+ item = (EndCallListItemType* )xmalloc(sizeof(*item));
if (item == 0) return ;
item->next = EndCallTop;
@@ -5612,7 +6248,7 @@ extern void onig_add_end_call(void (*func)(void))
static void
exec_end_call_list(void)
{
- OnigEndCallListItemType* prev;
+ EndCallListItemType* prev;
void (*func)(void);
while (EndCallTop != 0) {
@@ -5630,6 +6266,12 @@ onig_end(void)
{
exec_end_call_list();
+#ifdef USE_CALLOUT
+ onig_global_callout_names_free();
+#endif
+
+ onigenc_end();
+
onig_inited = 0;
return 0;
@@ -5657,9 +6299,10 @@ onig_is_in_code_range(const UChar* p, OnigCodePoint code)
}
extern int
-onig_is_code_in_cc_len(int elen, OnigCodePoint code, CClassNode* cc)
+onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_arg)
{
int found;
+ CClassNode* cc = (CClassNode* )cc_arg;
if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) {
if (IS_NULL(cc->mbuf)) {
@@ -5694,141 +6337,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)
}
-#ifdef ONIG_DEBUG
-
-/* arguments type */
-#define ARG_SPECIAL -1
-#define ARG_NON 0
-#define ARG_RELADDR 1
-#define ARG_ABSADDR 2
-#define ARG_LENGTH 3
-#define ARG_MEMNUM 4
-#define ARG_OPTION 5
-#define ARG_STATE_CHECK 6
-
-OnigOpInfoType OnigOpInfo[] = {
- { OP_FINISH, "finish", ARG_NON },
- { OP_END, "end", ARG_NON },
- { OP_EXACT1, "exact1", ARG_SPECIAL },
- { OP_EXACT2, "exact2", ARG_SPECIAL },
- { OP_EXACT3, "exact3", ARG_SPECIAL },
- { OP_EXACT4, "exact4", ARG_SPECIAL },
- { OP_EXACT5, "exact5", ARG_SPECIAL },
- { OP_EXACTN, "exactn", ARG_SPECIAL },
- { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL },
- { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL },
- { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL },
- { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL },
- { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL },
- { OP_EXACTMBN, "exactmbn", ARG_SPECIAL },
- { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL },
- { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL },
- { OP_CCLASS, "cclass", ARG_SPECIAL },
- { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL },
- { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL },
- { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL },
- { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL },
- { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL },
- { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL },
- { OP_ANYCHAR, "anychar", ARG_NON },
- { OP_ANYCHAR_ML, "anychar-ml", ARG_NON },
- { OP_ANYCHAR_STAR, "anychar*", ARG_NON },
- { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON },
- { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },
- { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },
- { OP_WORD, "word", ARG_NON },
- { OP_NOT_WORD, "not-word", ARG_NON },
- { OP_WORD_BOUND, "word-bound", ARG_NON },
- { OP_NOT_WORD_BOUND, "not-word-bound", ARG_NON },
- { OP_WORD_BEGIN, "word-begin", ARG_NON },
- { OP_WORD_END, "word-end", ARG_NON },
- { OP_BEGIN_BUF, "begin-buf", ARG_NON },
- { OP_END_BUF, "end-buf", ARG_NON },
- { OP_BEGIN_LINE, "begin-line", ARG_NON },
- { OP_END_LINE, "end-line", ARG_NON },
- { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON },
- { OP_BEGIN_POSITION, "begin-position", ARG_NON },
- { OP_BACKREF1, "backref1", ARG_NON },
- { OP_BACKREF2, "backref2", ARG_NON },
- { OP_BACKREFN, "backrefn", ARG_MEMNUM },
- { OP_BACKREFN_IC, "backrefn-ic", ARG_SPECIAL },
- { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL },
- { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL },
- { OP_BACKREF_WITH_LEVEL, "backref_at_level", ARG_SPECIAL },
- { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM },
- { OP_MEMORY_START, "mem-start", ARG_MEMNUM },
- { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM },
- { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM },
- { OP_MEMORY_END, "mem-end", ARG_MEMNUM },
- { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM },
- { OP_SET_OPTION_PUSH, "set-option-push", ARG_OPTION },
- { OP_SET_OPTION, "set-option", ARG_OPTION },
- { OP_FAIL, "fail", ARG_NON },
- { OP_JUMP, "jump", ARG_RELADDR },
- { OP_PUSH, "push", ARG_RELADDR },
- { OP_POP, "pop", ARG_NON },
- { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL },
- { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL },
- { OP_REPEAT, "repeat", ARG_SPECIAL },
- { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL },
- { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM },
- { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM },
- { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM },
- { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM },
- { OP_NULL_CHECK_START, "null-check-start", ARG_MEMNUM },
- { OP_NULL_CHECK_END, "null-check-end", ARG_MEMNUM },
- { OP_NULL_CHECK_END_MEMST,"null-check-end-memst", ARG_MEMNUM },
- { OP_NULL_CHECK_END_MEMST_PUSH,"null-check-end-memst-push", ARG_MEMNUM },
- { OP_PUSH_POS, "push-pos", ARG_NON },
- { OP_POP_POS, "pop-pos", ARG_NON },
- { OP_PUSH_POS_NOT, "push-pos-not", ARG_RELADDR },
- { OP_FAIL_POS, "fail-pos", ARG_NON },
- { OP_PUSH_STOP_BT, "push-stop-bt", ARG_NON },
- { OP_POP_STOP_BT, "pop-stop-bt", ARG_NON },
- { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL },
- { OP_PUSH_LOOK_BEHIND_NOT, "push-look-behind-not", ARG_SPECIAL },
- { OP_FAIL_LOOK_BEHIND_NOT, "fail-look-behind-not", ARG_NON },
- { OP_CALL, "call", ARG_ABSADDR },
- { OP_RETURN, "return", ARG_NON },
- { OP_STATE_CHECK_PUSH, "state-check-push", ARG_SPECIAL },
- { OP_STATE_CHECK_PUSH_OR_JUMP, "state-check-push-or-jump", ARG_SPECIAL },
- { OP_STATE_CHECK, "state-check", ARG_STATE_CHECK },
- { OP_STATE_CHECK_ANYCHAR_STAR, "state-check-anychar*", ARG_STATE_CHECK },
- { OP_STATE_CHECK_ANYCHAR_ML_STAR,
- "state-check-anychar-ml*", ARG_STATE_CHECK },
- { -1, "", ARG_NON }
-};
-
-static char*
-op2name(int opcode)
-{
- int i;
-
- for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {
- if (opcode == OnigOpInfo[i].opcode)
- return OnigOpInfo[i].name;
- }
- return "";
-}
-
-static int
-op2arg_type(int opcode)
-{
- int i;
-
- for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {
- if (opcode == OnigOpInfo[i].opcode)
- return OnigOpInfo[i].arg_type;
- }
- return ARG_SPECIAL;
-}
-
-static void
-Indent(FILE* f, int indent)
-{
- int i;
- for (i = 0; i < indent; i++) putc(' ', f);
-}
+#ifdef ONIG_DEBUG_PARSE
static void
p_string(FILE* f, int len, UChar* s)
@@ -5838,288 +6347,19 @@ p_string(FILE* f, int len, UChar* s)
}
static void
-p_len_string(FILE* f, LengthType len, int mb_len, UChar* s)
-{
- int x = len * mb_len;
-
- fprintf(f, ":%d:", len);
- while (x-- > 0) { fputc(*s++, f); }
-}
-
-extern void
-onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp,
- OnigEncoding enc)
-{
- int i, n, arg_type;
- RelAddrType addr;
- LengthType len;
- MemNumType mem;
- StateCheckNumType scn;
- OnigCodePoint code;
- UChar *q;
-
- fprintf(f, "[%s", op2name(*bp));
- arg_type = op2arg_type(*bp);
- if (arg_type != ARG_SPECIAL) {
- bp++;
- switch (arg_type) {
- case ARG_NON:
- break;
- case ARG_RELADDR:
- GET_RELADDR_INC(addr, bp);
- fprintf(f, ":(%d)", addr);
- break;
- case ARG_ABSADDR:
- GET_ABSADDR_INC(addr, bp);
- fprintf(f, ":(%d)", addr);
- break;
- case ARG_LENGTH:
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d", len);
- break;
- case ARG_MEMNUM:
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- fprintf(f, ":%d", mem);
- break;
- case ARG_OPTION:
- {
- OnigOptionType option = *((OnigOptionType* )bp);
- bp += SIZE_OPTION;
- fprintf(f, ":%d", option);
- }
- break;
-
- case ARG_STATE_CHECK:
- scn = *((StateCheckNumType* )bp);
- bp += SIZE_STATE_CHECK_NUM;
- fprintf(f, ":%d", scn);
- break;
- }
- }
- else {
- switch (*bp++) {
- case OP_EXACT1:
- case OP_ANYCHAR_STAR_PEEK_NEXT:
- case OP_ANYCHAR_ML_STAR_PEEK_NEXT:
- p_string(f, 1, bp++); break;
- case OP_EXACT2:
- p_string(f, 2, bp); bp += 2; break;
- case OP_EXACT3:
- p_string(f, 3, bp); bp += 3; break;
- case OP_EXACT4:
- p_string(f, 4, bp); bp += 4; break;
- case OP_EXACT5:
- p_string(f, 5, bp); bp += 5; break;
- case OP_EXACTN:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 1, bp);
- bp += len;
- break;
-
- case OP_EXACTMB2N1:
- p_string(f, 2, bp); bp += 2; break;
- case OP_EXACTMB2N2:
- p_string(f, 4, bp); bp += 4; break;
- case OP_EXACTMB2N3:
- p_string(f, 6, bp); bp += 6; break;
- case OP_EXACTMB2N:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 2, bp);
- bp += len * 2;
- break;
- case OP_EXACTMB3N:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 3, bp);
- bp += len * 3;
- break;
- case OP_EXACTMBN:
- {
- int mb_len;
-
- GET_LENGTH_INC(mb_len, bp);
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d:%d:", mb_len, len);
- n = len * mb_len;
- while (n-- > 0) { fputc(*bp++, f); }
- }
- break;
-
- case OP_EXACT1_IC:
- len = enclen(enc, bp);
- p_string(f, len, bp);
- bp += len;
- break;
- case OP_EXACTN_IC:
- GET_LENGTH_INC(len, bp);
- p_len_string(f, len, 1, bp);
- bp += len;
- break;
-
- case OP_CCLASS:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- fprintf(f, ":%d", n);
- break;
-
- case OP_CCLASS_NOT:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- fprintf(f, ":%d", n);
- break;
-
- case OP_CCLASS_MB:
- case OP_CCLASS_MB_NOT:
- GET_LENGTH_INC(len, bp);
- q = bp;
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
- ALIGNMENT_RIGHT(q);
-#endif
- GET_CODE_POINT(code, q);
- bp += len;
- fprintf(f, ":%d:%d", (int )code, len);
- break;
-
- case OP_CCLASS_MIX:
- case OP_CCLASS_MIX_NOT:
- n = bitset_on_num((BitSetRef )bp);
- bp += SIZE_BITSET;
- GET_LENGTH_INC(len, bp);
- q = bp;
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
- ALIGNMENT_RIGHT(q);
-#endif
- GET_CODE_POINT(code, q);
- bp += len;
- fprintf(f, ":%d:%d:%d", n, (int )code, len);
- break;
-
- case OP_CCLASS_NODE:
- {
- CClassNode *cc;
-
- GET_POINTER_INC(cc, bp);
- n = bitset_on_num(cc->bs);
- fprintf(f, ":%p:%d", cc, n);
- }
- break;
-
- case OP_BACKREFN_IC:
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- fprintf(f, ":%d", mem);
- break;
-
- case OP_BACKREF_MULTI_IC:
- case OP_BACKREF_MULTI:
- fputs(" ", f);
- GET_LENGTH_INC(len, bp);
- for (i = 0; i < len; i++) {
- GET_MEMNUM_INC(mem, bp);
- if (i > 0) fputs(", ", f);
- fprintf(f, "%d", mem);
- }
- break;
-
- case OP_BACKREF_WITH_LEVEL:
- {
- OnigOptionType option;
- LengthType level;
-
- GET_OPTION_INC(option, bp);
- fprintf(f, ":%d", option);
- GET_LENGTH_INC(level, bp);
- fprintf(f, ":%d", level);
-
- fputs(" ", f);
- GET_LENGTH_INC(len, bp);
- for (i = 0; i < len; i++) {
- GET_MEMNUM_INC(mem, bp);
- if (i > 0) fputs(", ", f);
- fprintf(f, "%d", mem);
- }
- }
- break;
-
- case OP_REPEAT:
- case OP_REPEAT_NG:
- {
- mem = *((MemNumType* )bp);
- bp += SIZE_MEMNUM;
- addr = *((RelAddrType* )bp);
- bp += SIZE_RELADDR;
- fprintf(f, ":%d:%d", mem, addr);
- }
- break;
-
- case OP_PUSH_OR_JUMP_EXACT1:
- case OP_PUSH_IF_PEEK_NEXT:
- addr = *((RelAddrType* )bp);
- bp += SIZE_RELADDR;
- fprintf(f, ":(%d)", addr);
- p_string(f, 1, bp);
- bp += 1;
- break;
-
- case OP_LOOK_BEHIND:
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d", len);
- break;
-
- case OP_PUSH_LOOK_BEHIND_NOT:
- GET_RELADDR_INC(addr, bp);
- GET_LENGTH_INC(len, bp);
- fprintf(f, ":%d:(%d)", len, addr);
- break;
-
- case OP_STATE_CHECK_PUSH:
- case OP_STATE_CHECK_PUSH_OR_JUMP:
- scn = *((StateCheckNumType* )bp);
- bp += SIZE_STATE_CHECK_NUM;
- addr = *((RelAddrType* )bp);
- bp += SIZE_RELADDR;
- fprintf(f, ":%d:(%d)", scn, addr);
- break;
-
- default:
- fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n",
- *--bp);
- }
- }
- fputs("]", f);
- if (nextp) *nextp = bp;
-}
-
-static void
-print_compiled_byte_code_list(FILE* f, regex_t* reg)
+Indent(FILE* f, int indent)
{
- int ncode;
- UChar* bp = reg->p;
- UChar* end = reg->p + reg->used;
-
- fprintf(f, "code length: %d\n", reg->used);
-
- ncode = 0;
- while (bp < end) {
- ncode++;
- if (bp > reg->p) {
- if (ncode % 5 == 0)
- fprintf(f, "\n");
- else
- fputs(" ", f);
- }
- onig_print_compiled_byte_code(f, bp, &bp, reg->enc);
- }
-
- fprintf(f, "\n");
+ int i;
+ for (i = 0; i < indent; i++) putc(' ', f);
}
static void
print_indent_tree(FILE* f, Node* node, int indent)
{
- int i, type;
- int add = 3;
+ int i;
+ NodeType type;
UChar* p;
+ int add = 3;
Indent(f, indent);
if (IS_NULL(node)) {
@@ -6127,29 +6367,28 @@ print_indent_tree(FILE* f, Node* node, int indent)
exit (0);
}
- type = NTYPE(node);
+ type = NODE_TYPE(node);
switch (type) {
- case NT_LIST:
- case NT_ALT:
- if (NTYPE(node) == NT_LIST)
+ case NODE_LIST:
+ case NODE_ALT:
+ if (type == NODE_LIST)
fprintf(f, "<list:%p>\n", node);
else
fprintf(f, "<alt:%p>\n", node);
- print_indent_tree(f, NCAR(node), indent + add);
- while (IS_NOT_NULL(node = NCDR(node))) {
- if (NTYPE(node) != type) {
- fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NTYPE(node));
+ print_indent_tree(f, NODE_CAR(node), indent + add);
+ while (IS_NOT_NULL(node = NODE_CDR(node))) {
+ if (NODE_TYPE(node) != type) {
+ fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NODE_TYPE(node));
exit(0);
}
- print_indent_tree(f, NCAR(node), indent + add);
+ print_indent_tree(f, NODE_CAR(node), indent + add);
}
break;
- case NT_STR:
- fprintf(f, "<string%s:%p>",
- (NSTRING_IS_RAW(node) ? "-raw" : ""), node);
- for (p = NSTR(node)->s; p < NSTR(node)->end; p++) {
+ case NODE_STRING:
+ fprintf(f, "<string%s:%p>", (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node);
+ for (p = STR_(node)->s; p < STR_(node)->end; p++) {
if (*p >= 0x20 && *p < 0x7f)
fputc(*p, f);
else {
@@ -6158,11 +6397,11 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
fprintf(f, "<cclass:%p>", node);
- if (IS_NCCLASS_NOT(NCCLASS(node))) fputs(" not", f);
- if (NCCLASS(node)->mbuf) {
- BBuf* bbuf = NCCLASS(node)->mbuf;
+ if (IS_NCCLASS_NOT(CCLASS_(node))) fputs(" not", f);
+ if (CCLASS_(node)->mbuf) {
+ BBuf* bbuf = CCLASS_(node)->mbuf;
for (i = 0; i < bbuf->used; i++) {
if (i > 0) fprintf(f, ",");
fprintf(f, "%0x", bbuf->p[i]);
@@ -6170,14 +6409,22 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
break;
- case NT_CTYPE:
+ case NODE_CTYPE:
fprintf(f, "<ctype:%p> ", node);
- switch (NCTYPE(node)->ctype) {
+ switch (CTYPE_(node)->ctype) {
+ case CTYPE_ANYCHAR:
+ fprintf(f, "<anychar:%p>", node);
+ break;
+
case ONIGENC_CTYPE_WORD:
- if (NCTYPE(node)->not != 0)
- fputs("not word", f);
+ if (CTYPE_(node)->not != 0)
+ fputs("not word", f);
else
- fputs("word", f);
+ fputs("word", f);
+
+ if (CTYPE_(node)->ascii_mode != 0)
+ fputs(" (ascii)", f);
+
break;
default:
@@ -6186,41 +6433,41 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
break;
- case NT_CANY:
- fprintf(f, "<anychar:%p>", node);
- break;
-
- case NT_ANCHOR:
+ case NODE_ANCHOR:
fprintf(f, "<anchor:%p> ", node);
- switch (NANCHOR(node)->type) {
- case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break;
- case ANCHOR_END_BUF: fputs("end buf", f); break;
- case ANCHOR_BEGIN_LINE: fputs("begin line", f); break;
- case ANCHOR_END_LINE: fputs("end line", f); break;
- case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break;
- case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
-
- case ANCHOR_WORD_BOUND: fputs("word bound", f); break;
- case ANCHOR_NOT_WORD_BOUND: fputs("not word bound", f); break;
+ switch (ANCHOR_(node)->type) {
+ case ANCHOR_BEGIN_BUF: fputs("begin buf", f); break;
+ case ANCHOR_END_BUF: fputs("end buf", f); break;
+ case ANCHOR_BEGIN_LINE: fputs("begin line", f); break;
+ case ANCHOR_END_LINE: fputs("end line", f); break;
+ case ANCHOR_SEMI_END_BUF: fputs("semi end buf", f); break;
+ case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;
+
+ case ANCHOR_WORD_BOUNDARY: fputs("word boundary", f); break;
+ case ANCHOR_NO_WORD_BOUNDARY: fputs("not word boundary", f); break;
#ifdef USE_WORD_BEGIN_END
- case ANCHOR_WORD_BEGIN: fputs("word begin", f); break;
- case ANCHOR_WORD_END: fputs("word end", f); break;
+ case ANCHOR_WORD_BEGIN: fputs("word begin", f); break;
+ case ANCHOR_WORD_END: fputs("word end", f); break;
#endif
+ case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ fputs("extended-grapheme-cluster boundary", f); break;
+ case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ fputs("no-extended-grapheme-cluster boundary", f); break;
case ANCHOR_PREC_READ:
fprintf(f, "prec read\n");
- print_indent_tree(f, NANCHOR(node)->target, indent + add);
+ print_indent_tree(f, NODE_BODY(node), indent + add);
break;
case ANCHOR_PREC_READ_NOT:
fprintf(f, "prec read not\n");
- print_indent_tree(f, NANCHOR(node)->target, indent + add);
+ print_indent_tree(f, NODE_BODY(node), indent + add);
break;
case ANCHOR_LOOK_BEHIND:
fprintf(f, "look behind\n");
- print_indent_tree(f, NANCHOR(node)->target, indent + add);
+ print_indent_tree(f, NODE_BODY(node), indent + add);
break;
case ANCHOR_LOOK_BEHIND_NOT:
fprintf(f, "look behind not\n");
- print_indent_tree(f, NANCHOR(node)->target, indent + add);
+ print_indent_tree(f, NODE_BODY(node), indent + add);
break;
default:
@@ -6229,12 +6476,12 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
break;
- case NT_BREF:
+ case NODE_BACKREF:
{
int* p;
- BRefNode* br = NBREF(node);
+ BackRefNode* br = BACKREF_(node);
p = BACKREFS_P(br);
- fprintf(f, "<backref:%p>", node);
+ fprintf(f, "<backref%s:%p>", NODE_IS_CHECKER(node) ? "-checker" : "", node);
for (i = 0; i < br->back_num; i++) {
if (i > 0) fputs(", ", f);
fprintf(f, "%d", p[i]);
@@ -6242,33 +6489,33 @@ print_indent_tree(FILE* f, Node* node, int indent)
}
break;
-#ifdef USE_SUBEXP_CALL
- case NT_CALL:
+#ifdef USE_CALL
+ case NODE_CALL:
{
- CallNode* cn = NCALL(node);
+ CallNode* cn = CALL_(node);
fprintf(f, "<call:%p>", node);
p_string(f, cn->name_end - cn->name, cn->name);
}
break;
#endif
- case NT_QTFR:
+ case NODE_QUANT:
fprintf(f, "<quantifier:%p>{%d,%d}%s\n", node,
- NQTFR(node)->lower, NQTFR(node)->upper,
- (NQTFR(node)->greedy ? "" : "?"));
- print_indent_tree(f, NQTFR(node)->target, indent + add);
+ QUANT_(node)->lower, QUANT_(node)->upper,
+ (QUANT_(node)->greedy ? "" : "?"));
+ print_indent_tree(f, NODE_BODY(node), indent + add);
break;
- case NT_ENCLOSE:
- fprintf(f, "<enclose:%p> ", node);
- switch (NENCLOSE(node)->type) {
- case ENCLOSE_OPTION:
- fprintf(f, "option:%d", NENCLOSE(node)->option);
+ case NODE_ENCLOSURE:
+ fprintf(f, "<enclosure:%p> ", node);
+ switch (ENCLOSURE_(node)->type) {
+ case ENCLOSURE_OPTION:
+ fprintf(f, "option:%d", ENCLOSURE_(node)->o.options);
break;
- case ENCLOSE_MEMORY:
- fprintf(f, "memory:%d", NENCLOSE(node)->regnum);
+ case ENCLOSURE_MEMORY:
+ fprintf(f, "memory:%d", ENCLOSURE_(node)->m.regnum);
break;
- case ENCLOSE_STOP_BACKTRACK:
+ case ENCLOSURE_STOP_BACKTRACK:
fprintf(f, "stop-bt");
break;
@@ -6276,22 +6523,49 @@ print_indent_tree(FILE* f, Node* node, int indent)
break;
}
fprintf(f, "\n");
- print_indent_tree(f, NENCLOSE(node)->target, indent + add);
+ print_indent_tree(f, NODE_BODY(node), indent + add);
+ break;
+
+ case NODE_GIMMICK:
+ fprintf(f, "<gimmick:%p> ", node);
+ switch (GIMMICK_(node)->type) {
+ case GIMMICK_FAIL:
+ fprintf(f, "fail");
+ break;
+ case GIMMICK_KEEP:
+ fprintf(f, "keep:%d", GIMMICK_(node)->id);
+ break;
+ case GIMMICK_SAVE:
+ fprintf(f, "save:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id);
+ break;
+ case GIMMICK_UPDATE_VAR:
+ fprintf(f, "update_var:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id);
+ break;
+#ifdef USE_CALLOUT
+ case GIMMICK_CALLOUT:
+ switch (GIMMICK_(node)->detail_type) {
+ case ONIG_CALLOUT_OF_CONTENTS:
+ fprintf(f, "callout:contents:%d", GIMMICK_(node)->num);
+ break;
+ case ONIG_CALLOUT_OF_NAME:
+ fprintf(f, "callout:name:%d:%d", GIMMICK_(node)->id, GIMMICK_(node)->num);
+ break;
+ }
+#endif
+ }
break;
default:
- fprintf(f, "print_indent_tree: undefined node type %d\n", NTYPE(node));
+ fprintf(f, "print_indent_tree: undefined node type %d\n", NODE_TYPE(node));
break;
}
- if (type != NT_LIST && type != NT_ALT && type != NT_QTFR &&
- type != NT_ENCLOSE)
+ if (type != NODE_LIST && type != NODE_ALT && type != NODE_QUANT &&
+ type != NODE_ENCLOSURE)
fprintf(f, "\n");
fflush(f);
}
-#endif /* ONIG_DEBUG */
-#ifdef ONIG_DEBUG_PARSE_TREE
static void
print_tree(FILE* f, Node* node)
{
diff --git a/ext/mbstring/oniguruma/src/regenc.c b/ext/mbstring/oniguruma/src/regenc.c
index 554a622382..21f3536e2a 100644
--- a/ext/mbstring/oniguruma/src/regenc.c
+++ b/ext/mbstring/oniguruma/src/regenc.c
@@ -2,7 +2,7 @@
regenc.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,6 +31,66 @@
OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT;
+#define INITED_LIST_SIZE 20
+
+static int InitedListNum;
+
+static struct {
+ OnigEncoding enc;
+ int inited;
+} InitedList[INITED_LIST_SIZE];
+
+static int
+enc_inited_entry(OnigEncoding enc)
+{
+ int i;
+
+ for (i = 0; i < InitedListNum; i++) {
+ if (InitedList[i].enc == enc) {
+ InitedList[i].inited = 1;
+ return i;
+ }
+ }
+
+ i = InitedListNum;
+ if (i < INITED_LIST_SIZE - 1) {
+ InitedList[i].enc = enc;
+ InitedList[i].inited = 1;
+ InitedListNum++;
+ return i;
+ }
+
+ return -1;
+}
+
+static int
+enc_is_inited(OnigEncoding enc)
+{
+ int i;
+
+ for (i = 0; i < InitedListNum; i++) {
+ if (InitedList[i].enc == enc) {
+ return InitedList[i].inited;
+ }
+ }
+
+ return 0;
+}
+
+extern int
+onigenc_end(void)
+{
+ int i;
+
+ for (i = 0; i < InitedListNum; i++) {
+ InitedList[i].enc = 0;
+ InitedList[i].inited = 0;
+ }
+
+ InitedListNum = 0;
+ return ONIG_NORMAL;
+}
+
extern int
onigenc_init(void)
{
@@ -40,8 +100,23 @@ onigenc_init(void)
extern int
onig_initialize_encoding(OnigEncoding enc)
{
- if (enc->init != 0 && (enc->is_initialized() == 0)) {
- int r = (enc->init)();
+ int r;
+
+ if (enc != ONIG_ENCODING_ASCII &&
+ ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) {
+ OnigEncoding ascii = ONIG_ENCODING_ASCII;
+ if (ascii->init != 0 && enc_is_inited(ascii) == 0) {
+ r = ascii->init();
+ if (r != ONIG_NORMAL) return r;
+ enc_inited_entry(ascii);
+ }
+ }
+
+ if (enc->init != 0 &&
+ enc_is_inited(enc) == 0) {
+ r = (enc->init)();
+ if (r == ONIG_NORMAL)
+ enc_inited_entry(enc);
return r;
}
@@ -62,6 +137,25 @@ onigenc_set_default_encoding(OnigEncoding enc)
}
extern UChar*
+onigenc_strdup(OnigEncoding enc, const UChar* s, const UChar* end)
+{
+ int slen, term_len, i;
+ UChar *r;
+
+ slen = (int )(end - s);
+ term_len = ONIGENC_MBC_MINLEN(enc);
+
+ r = (UChar* )xmalloc(slen + term_len);
+ CHECK_NULL_RETURN(r);
+ xmemcpy(r, s, slen);
+
+ for (i = 0; i < term_len; i++)
+ r[slen + i] = (UChar )0;
+
+ return r;
+}
+
+extern UChar*
onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)
{
UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);
@@ -780,7 +874,7 @@ onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)
if (enclen(enc, buf) != (p - buf))
return ONIGERR_INVALID_CODE_POINT_VALUE;
#endif
- return p - buf;
+ return (int )(p - buf);
}
extern int
@@ -803,7 +897,7 @@ onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)
if (enclen(enc, buf) != (p - buf))
return ONIGERR_INVALID_CODE_POINT_VALUE;
#endif
- return p - buf;
+ return (int )(p - buf);
}
extern int
@@ -841,6 +935,16 @@ onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
}
extern int
+onigenc_is_mbc_word_ascii(OnigEncoding enc, UChar* s, const UChar* end)
+{
+ OnigCodePoint code = ONIGENC_MBC_TO_CODE(enc, s, end);
+
+ if (code > 127) return 0;
+
+ return ONIGENC_IS_ASCII_CODE_WORD(code);
+}
+
+extern int
onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,
unsigned int ctype)
{
diff --git a/ext/mbstring/oniguruma/src/regenc.h b/ext/mbstring/oniguruma/src/regenc.h
index e119dab5a6..ae8d65ec26 100644
--- a/ext/mbstring/oniguruma/src/regenc.h
+++ b/ext/mbstring/oniguruma/src/regenc.h
@@ -4,7 +4,7 @@
regenc.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,11 +29,13 @@
* SUCH DAMAGE.
*/
-#ifndef PACKAGE
-/* PACKAGE is defined in config.h */
-#include "config.h"
+#ifndef ONIGURUMA_EXPORT
+#define ONIGURUMA_EXPORT
#endif
+#include "config.h"
+#include <stddef.h>
+
#ifdef ONIG_ESCAPE_UCHAR_COLLISION
#undef ONIG_ESCAPE_UCHAR_COLLISION
#endif
@@ -71,6 +73,8 @@ typedef struct {
#define ONIG_CHECK_NULL_RETURN(p) if (ONIG_IS_NULL(p)) return NULL
#define ONIG_CHECK_NULL_RETURN_VAL(p,val) if (ONIG_IS_NULL(p)) return (val)
+#define MAX_CODE_POINT (~((OnigCodePoint )0))
+
#define enclen(enc,p) ONIGENC_MBC_ENC_LEN(enc,p)
/* character types bit flag */
@@ -109,55 +113,63 @@ struct PropertyNameCtype {
/* #define USE_CRNL_AS_LINE_TERMINATOR */
#define USE_UNICODE_PROPERTIES
+#define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */
/* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */
#define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII
+
+#define ENC_FLAG_ASCII_COMPATIBLE (1<<0)
+#define ENC_FLAG_UNICODE (1<<1)
+
+
/* for encoding system implementation (internal) */
-ONIG_EXTERN int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
-ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
-ONIG_EXTERN int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
-ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
-ONIG_EXTERN int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]));
-ONIG_EXTERN int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end));
+extern int onigenc_end(void);
+extern int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+extern int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
+extern int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+extern int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
+extern int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]));
+extern int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end));
/* methods for single byte encoding */
-ONIG_EXTERN int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
-ONIG_EXTERN int onigenc_single_byte_mbc_enc_len P_((const UChar* p));
-ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end));
-ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code));
-ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf));
-ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s));
-ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
-ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
-ONIG_EXTERN int onigenc_always_true_is_valid_mbc_string P_((const UChar* s, const UChar* end));
-ONIG_EXTERN int onigenc_length_check_is_valid_mbc_string P_((OnigEncoding enc, const UChar* s, const UChar* end));
+extern int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
+extern int onigenc_single_byte_mbc_enc_len P_((const UChar* p));
+extern OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end));
+extern int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code));
+extern int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf));
+extern UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s));
+extern int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
+extern int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end));
+extern int onigenc_always_true_is_valid_mbc_string P_((const UChar* s, const UChar* end));
+extern int onigenc_length_check_is_valid_mbc_string P_((OnigEncoding enc, const UChar* s, const UChar* end));
/* methods for multi byte encoding */
-ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end));
-ONIG_EXTERN int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
-ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));
-ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
-ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
-ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
-ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
-ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));
-ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
-ONIG_EXTERN int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
-ONIG_EXTERN struct PropertyNameCtype* euc_jp_lookup_property_name P_((register const char *str, register unsigned int len));
-ONIG_EXTERN struct PropertyNameCtype* sjis_lookup_property_name P_((register const char *str, register unsigned int len));
-//ONIG_EXTERN const struct PropertyNameCtype* unicode_lookup_property_name P_((register const char *str, register unsigned int len));
+extern OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end));
+extern int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));
+extern int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));
+extern int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
+extern int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
+extern int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));
+extern int onigenc_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const UChar* end));
+extern int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
+extern int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));
+extern int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));
+extern int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));
+extern struct PropertyNameCtype* onigenc_euc_jp_lookup_property_name P_((register const char *str, register size_t len));
+extern struct PropertyNameCtype* onigenc_sjis_lookup_property_name P_((register const char *str, register size_t len));
/* in enc/unicode.c */
-ONIG_EXTERN int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));
-ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]));
-ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((int ctype, const OnigCodePoint* ranges[]));
-ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
-ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
-ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+extern int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));
+extern int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]));
+extern int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const OnigCodePoint* ranges[]));
+extern int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));
+extern int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));
+extern int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));
+extern int onigenc_egcb_is_break_position P_((OnigEncoding enc, UChar* p, UChar* prev, const UChar* start, const UChar* end));
#define UTF16_IS_SURROGATE_FIRST(c) (((c) & 0xfc) == 0xd8)
@@ -194,14 +206,14 @@ extern OnigCodePoint OnigUnicodeFolds3[];
struct ByUnfoldKey {
OnigCodePoint code;
- int index;
- int fold_len;
+ short int index;
+ short int fold_len;
};
-extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code);
-extern int unicode_fold1_key(OnigCodePoint code[]);
-extern int unicode_fold2_key(OnigCodePoint code[]);
-extern int unicode_fold3_key(OnigCodePoint code[]);
+extern const struct ByUnfoldKey* onigenc_unicode_unfold_key(OnigCodePoint code);
+extern int onigenc_unicode_fold1_key(OnigCodePoint code[]);
+extern int onigenc_unicode_fold2_key(OnigCodePoint code[]);
+extern int onigenc_unicode_fold3_key(OnigCodePoint code[]);
extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n);
extern int onig_codes_byte_at(OnigCodePoint code[], int at);
@@ -213,21 +225,21 @@ extern int onig_codes_byte_at(OnigCodePoint code[], int at);
#define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \
OnigEncISO_8859_1_ToUpperCaseTable[c]
-ONIG_EXTERN const UChar OnigEncISO_8859_1_ToLowerCaseTable[];
-ONIG_EXTERN const UChar OnigEncISO_8859_1_ToUpperCaseTable[];
+extern const UChar OnigEncISO_8859_1_ToLowerCaseTable[];
+extern const UChar OnigEncISO_8859_1_ToUpperCaseTable[];
-ONIG_EXTERN int
+extern int
onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n));
-ONIG_EXTERN UChar*
+extern UChar*
onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n));
/* defined in regexec.c, but used in enc/xxx.c */
extern int onig_is_in_code_range P_((const UChar* p, OnigCodePoint code));
-ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding;
-ONIG_EXTERN const UChar OnigEncAsciiToLowerCaseTable[];
-ONIG_EXTERN const UChar OnigEncAsciiToUpperCaseTable[];
-ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];
+extern OnigEncoding OnigEncDefaultCharEncoding;
+extern const UChar OnigEncAsciiToLowerCaseTable[];
+extern const UChar OnigEncAsciiToUpperCaseTable[];
+extern const unsigned short OnigEncAsciiCtypeTable[];
#define ONIGENC_IS_ASCII_CODE(code) ((code) < 0x80)
@@ -235,9 +247,16 @@ ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];
#define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c]
#define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \
((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)
+#define ONIGENC_IS_ASCII_CODE_WORD(code) \
+ ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0)
#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \
(ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\
ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER))
+#define ONIGENC_IS_UNICODE_ENCODING(enc) \
+ (((enc)->flag & ENC_FLAG_UNICODE) != 0)
+
+#define ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc) \
+ (((enc)->flag & ENC_FLAG_ASCII_COMPATIBLE) != 0)
#endif /* REGENC_H */
diff --git a/ext/mbstring/oniguruma/src/regerror.c b/ext/mbstring/oniguruma/src/regerror.c
index ee35b36358..70efe9ac22 100644
--- a/ext/mbstring/oniguruma/src/regerror.c
+++ b/ext/mbstring/oniguruma/src/regerror.c
@@ -2,7 +2,7 @@
regerror.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -43,19 +43,21 @@ onig_error_code_to_format(int code)
{
char *p;
- if (code >= 0) return (UChar* )0;
-
switch (code) {
case ONIG_MISMATCH:
p = "mismatch"; break;
case ONIG_NO_SUPPORT_CONFIG:
p = "no support in this configuration"; break;
+ case ONIG_ABORT:
+ p = "abort"; break;
case ONIGERR_MEMORY:
p = "fail to memory allocation"; break;
case ONIGERR_MATCH_STACK_LIMIT_OVER:
p = "match-stack limit over"; break;
case ONIGERR_PARSE_DEPTH_LIMIT_OVER:
p = "parse depth limit over"; break;
+ case ONIGERR_RETRY_LIMIT_IN_MATCH_OVER:
+ p = "retry-limit-in-match over"; break;
case ONIGERR_TYPE_BUG:
p = "undefined type (bug)"; break;
case ONIGERR_PARSER_BUG:
@@ -135,11 +137,7 @@ onig_error_code_to_format(int code)
case ONIGERR_TOO_BIG_BACKREF_NUMBER:
p = "too big backref number"; break;
case ONIGERR_INVALID_BACKREF:
-#ifdef USE_NAMED_GROUP
p = "invalid backref number/name"; break;
-#else
- p = "invalid backref number"; break;
-#endif
case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:
p = "numbered backref/call is not allowed. (use name)"; break;
case ONIGERR_TOO_MANY_CAPTURES:
@@ -155,11 +153,7 @@ onig_error_code_to_format(int code)
case ONIGERR_INVALID_GROUP_NAME:
p = "invalid group name <%n>"; break;
case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:
-#ifdef USE_NAMED_GROUP
p = "invalid char in group name <%n>"; break;
-#else
- p = "invalid char in group number <%n>"; break;
-#endif
case ONIGERR_UNDEFINED_NAME_REFERENCE:
p = "undefined name <%n> reference"; break;
case ONIGERR_UNDEFINED_GROUP_REFERENCE:
@@ -174,6 +168,24 @@ onig_error_code_to_format(int code)
p = "group number is too big for capture history"; break;
case ONIGERR_INVALID_CHAR_PROPERTY_NAME:
p = "invalid character property name {%n}"; break;
+ case ONIGERR_INVALID_IF_ELSE_SYNTAX:
+ p = "invalid if-else syntax"; break;
+ case ONIGERR_INVALID_ABSENT_GROUP_PATTERN:
+ p = "invalid absent group pattern"; break;
+ case ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN:
+ p = "invalid absent group generator pattern"; break;
+ case ONIGERR_INVALID_CALLOUT_PATTERN:
+ p = "invalid callout pattern"; break;
+ case ONIGERR_INVALID_CALLOUT_NAME:
+ p = "invalid callout name"; break;
+ case ONIGERR_UNDEFINED_CALLOUT_NAME:
+ p = "undefined callout name"; break;
+ case ONIGERR_INVALID_CALLOUT_BODY:
+ p = "invalid callout body"; break;
+ case ONIGERR_INVALID_CALLOUT_TAG_NAME:
+ p = "invalid callout tag name"; break;
+ case ONIGERR_INVALID_CALLOUT_ARG:
+ p = "invalid callout arg"; break;
case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION:
p = "not supported encoding combination"; break;
case ONIGERR_INVALID_COMBINATION_OF_OPTIONS:
@@ -211,24 +223,24 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
while (p < end) {
code = ONIGENC_MBC_TO_CODE(enc, p, end);
if (code >= 0x80) {
- if (code > 0xffff && len + 10 <= buf_size) {
- sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24));
- sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16));
- sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8));
- sprint_byte((char*)(&(buf[len+8])), (unsigned int)code);
- len += 10;
- }
- else if (len + 6 <= buf_size) {
- sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8));
- sprint_byte((char*)(&(buf[len+4])), (unsigned int)code);
- len += 6;
- }
- else {
- break;
- }
+ if (code > 0xffff && len + 10 <= buf_size) {
+ sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24));
+ sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16));
+ sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8));
+ sprint_byte((char*)(&(buf[len+8])), (unsigned int)code);
+ len += 10;
+ }
+ else if (len + 6 <= buf_size) {
+ sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8));
+ sprint_byte((char*)(&(buf[len+4])), (unsigned int)code);
+ len += 6;
+ }
+ else {
+ break;
+ }
}
else {
- buf[len++] = (UChar )code;
+ buf[len++] = (UChar )code;
}
p += enclen(enc, p);
@@ -238,7 +250,7 @@ static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,
*is_over = ((p < end) ? 1 : 0);
}
else {
- len = MIN((end - s), buf_size);
+ len = MIN((int )(end - s), buf_size);
xmemcpy(buf, s, (size_t )len);
*is_over = ((buf_size < (end - s)) ? 1 : 0);
}
@@ -278,31 +290,31 @@ onig_error_code_to_str(s, code, va_alist)
case ONIGERR_INVALID_CHAR_PROPERTY_NAME:
einfo = va_arg(vargs, OnigErrorInfo*);
len = to_ascii(einfo->enc, einfo->par, einfo->par_end,
- parbuf, MAX_ERROR_PAR_LEN - 3, &is_over);
+ parbuf, MAX_ERROR_PAR_LEN - 3, &is_over);
q = onig_error_code_to_format(code);
p = s;
while (*q != '\0') {
if (*q == '%') {
- q++;
- if (*q == 'n') { /* '%n': name */
- xmemcpy(p, parbuf, len);
- p += len;
- if (is_over != 0) {
- xmemcpy(p, "...", 3);
- p += 3;
- }
- q++;
- }
- else
- goto normal_char;
+ q++;
+ if (*q == 'n') { /* '%n': name */
+ xmemcpy(p, parbuf, len);
+ p += len;
+ if (is_over != 0) {
+ xmemcpy(p, "...", 3);
+ p += 3;
+ }
+ q++;
+ }
+ else
+ goto normal_char;
}
else {
normal_char:
- *p++ = *q++;
+ *p++ = *q++;
}
}
*p = '\0';
- len = p - s;
+ len = (int )(p - s);
break;
default:
@@ -342,7 +354,7 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)
n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args);
va_end(args);
- need = (pat_end - pat) * 4 + 4;
+ need = (int )(pat_end - pat) * 4 + 4;
if (n + need < bufsize) {
xstrcat((char* )buf, ": /", bufsize);
@@ -359,7 +371,7 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)
int blen;
while (len-- > 0) {
- sprint_byte_with_x((char* )bs, (unsigned int )(*p++));
+ sprint_byte_with_x((char* )bs, (unsigned int )(*p++));
blen = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);
bp = bs;
while (blen-- > 0) *s++ = *bp++;
@@ -367,23 +379,23 @@ onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)
}
}
else if (*p == '\\') {
- *s++ = *p++;
- len = enclen(enc, p);
- while (len-- > 0) *s++ = *p++;
+ *s++ = *p++;
+ len = enclen(enc, p);
+ while (len-- > 0) *s++ = *p++;
}
else if (*p == '/') {
- *s++ = (unsigned char )'\\';
- *s++ = *p++;
+ *s++ = (unsigned char )'\\';
+ *s++ = *p++;
}
else if (!ONIGENC_IS_CODE_PRINT(enc, *p) &&
- !ONIGENC_IS_CODE_SPACE(enc, *p)) {
- sprint_byte_with_x((char* )bs, (unsigned int )(*p++));
- len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);
+ !ONIGENC_IS_CODE_SPACE(enc, *p)) {
+ sprint_byte_with_x((char* )bs, (unsigned int )(*p++));
+ len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);
bp = bs;
- while (len-- > 0) *s++ = *bp++;
+ while (len-- > 0) *s++ = *bp++;
}
else {
- *s++ = *p++;
+ *s++ = *p++;
}
}
diff --git a/ext/mbstring/oniguruma/src/regexec.c b/ext/mbstring/oniguruma/src/regexec.c
index c0626efd43..6c76d85175 100644
--- a/ext/mbstring/oniguruma/src/regexec.c
+++ b/ext/mbstring/oniguruma/src/regexec.c
@@ -2,7 +2,7 @@
regexec.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,10 +26,10 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-
#include "regint.h"
-#define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
+#define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \
+ ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end))
#ifdef USE_CRNL_AS_LINE_TERMINATOR
#define ONIGENC_IS_MBC_CRNL(enc,p,end) \
@@ -37,6 +37,586 @@
ONIGENC_IS_MBC_NEWLINE(enc,(p+enclen(enc,p)),end))
#endif
+#define CHECK_INTERRUPT_IN_MATCH
+
+#ifdef USE_CALLOUT
+typedef struct {
+ int last_match_at_call_counter;
+ struct {
+ OnigType type;
+ OnigValue val;
+ } slot[ONIG_CALLOUT_DATA_SLOT_NUM];
+} CalloutData;
+#endif
+
+struct OnigMatchParamStruct {
+ unsigned int match_stack_limit;
+ unsigned long retry_limit_in_match;
+#ifdef USE_CALLOUT
+ OnigCalloutFunc progress_callout_of_contents;
+ OnigCalloutFunc retraction_callout_of_contents;
+ int match_at_call_counter;
+ void* callout_user_data;
+ CalloutData* callout_data;
+ int callout_data_alloc_num;
+#endif
+};
+
+extern int
+onig_set_match_stack_limit_size_of_match_param(OnigMatchParam* param,
+ unsigned int limit)
+{
+ param->match_stack_limit = limit;
+ return ONIG_NORMAL;
+}
+
+extern int
+onig_set_retry_limit_in_match_of_match_param(OnigMatchParam* param,
+ unsigned long limit)
+{
+ param->retry_limit_in_match = limit;
+ return ONIG_NORMAL;
+}
+
+extern int
+onig_set_progress_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f)
+{
+#ifdef USE_CALLOUT
+ param->progress_callout_of_contents = f;
+ return ONIG_NORMAL;
+#else
+ return ONIG_NO_SUPPORT_CONFIG;
+#endif
+}
+
+extern int
+onig_set_retraction_callout_of_match_param(OnigMatchParam* param, OnigCalloutFunc f)
+{
+#ifdef USE_CALLOUT
+ param->retraction_callout_of_contents = f;
+ return ONIG_NORMAL;
+#else
+ return ONIG_NO_SUPPORT_CONFIG;
+#endif
+}
+
+extern int
+onig_set_callout_user_data_of_match_param(OnigMatchParam* param, void* user_data)
+{
+#ifdef USE_CALLOUT
+ param->callout_user_data = user_data;
+ return ONIG_NORMAL;
+#else
+ return ONIG_NO_SUPPORT_CONFIG;
+#endif
+}
+
+
+
+typedef struct {
+ void* stack_p;
+ int stack_n;
+ OnigOptionType options;
+ OnigRegion* region;
+ int ptr_num;
+ const UChar* start; /* search start position (for \G: BEGIN_POSITION) */
+ unsigned int match_stack_limit;
+ unsigned long retry_limit_in_match;
+ OnigMatchParam* mp;
+#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
+ int best_len; /* for ONIG_OPTION_FIND_LONGEST */
+ UChar* best_s;
+#endif
+} MatchArg;
+
+
+#ifdef ONIG_DEBUG
+
+/* arguments type */
+typedef enum {
+ ARG_SPECIAL = -1,
+ ARG_NON = 0,
+ ARG_RELADDR = 1,
+ ARG_ABSADDR = 2,
+ ARG_LENGTH = 3,
+ ARG_MEMNUM = 4,
+ ARG_OPTION = 5,
+ ARG_MODE = 6
+} OpArgType;
+
+typedef struct {
+ short int opcode;
+ char* name;
+ OpArgType arg_type;
+} OpInfoType;
+
+static OpInfoType OpInfo[] = {
+ { OP_FINISH, "finish", ARG_NON },
+ { OP_END, "end", ARG_NON },
+ { OP_EXACT1, "exact1", ARG_SPECIAL },
+ { OP_EXACT2, "exact2", ARG_SPECIAL },
+ { OP_EXACT3, "exact3", ARG_SPECIAL },
+ { OP_EXACT4, "exact4", ARG_SPECIAL },
+ { OP_EXACT5, "exact5", ARG_SPECIAL },
+ { OP_EXACTN, "exactn", ARG_SPECIAL },
+ { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL },
+ { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL },
+ { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL },
+ { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL },
+ { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL },
+ { OP_EXACTMBN, "exactmbn", ARG_SPECIAL },
+ { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL },
+ { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL },
+ { OP_CCLASS, "cclass", ARG_SPECIAL },
+ { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL },
+ { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL },
+ { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL },
+ { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL },
+ { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL },
+#ifdef USE_OP_CCLASS_NODE
+ { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL },
+#endif
+ { OP_ANYCHAR, "anychar", ARG_NON },
+ { OP_ANYCHAR_ML, "anychar-ml", ARG_NON },
+ { OP_ANYCHAR_STAR, "anychar*", ARG_NON },
+ { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON },
+ { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },
+ { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },
+ { OP_WORD, "word", ARG_NON },
+ { OP_WORD_ASCII, "word-ascii", ARG_NON },
+ { OP_NO_WORD, "not-word", ARG_NON },
+ { OP_NO_WORD_ASCII, "not-word-ascii", ARG_NON },
+ { OP_WORD_BOUNDARY, "word-boundary", ARG_MODE },
+ { OP_NO_WORD_BOUNDARY, "not-word-boundary", ARG_MODE },
+ { OP_WORD_BEGIN, "word-begin", ARG_MODE },
+ { OP_WORD_END, "word-end", ARG_MODE },
+ { OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "extended-grapheme-cluster-boundary", ARG_NON },
+ { OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, "no-extended-grapheme-cluster-boundary", ARG_NON },
+ { OP_BEGIN_BUF, "begin-buf", ARG_NON },
+ { OP_END_BUF, "end-buf", ARG_NON },
+ { OP_BEGIN_LINE, "begin-line", ARG_NON },
+ { OP_END_LINE, "end-line", ARG_NON },
+ { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON },
+ { OP_BEGIN_POSITION, "begin-position", ARG_NON },
+ { OP_BACKREF1, "backref1", ARG_NON },
+ { OP_BACKREF2, "backref2", ARG_NON },
+ { OP_BACKREF_N, "backref-n", ARG_MEMNUM },
+ { OP_BACKREF_N_IC, "backref-n-ic", ARG_SPECIAL },
+ { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL },
+ { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL },
+ { OP_BACKREF_WITH_LEVEL, "backref_with_level", ARG_SPECIAL },
+ { OP_BACKREF_CHECK, "backref_check", ARG_SPECIAL },
+ { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level", ARG_SPECIAL },
+ { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM },
+ { OP_MEMORY_START, "mem-start", ARG_MEMNUM },
+ { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM },
+ { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM },
+ { OP_MEMORY_END, "mem-end", ARG_MEMNUM },
+ { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM },
+ { OP_FAIL, "fail", ARG_NON },
+ { OP_JUMP, "jump", ARG_RELADDR },
+ { OP_PUSH, "push", ARG_RELADDR },
+ { OP_PUSH_SUPER, "push-super", ARG_RELADDR },
+ { OP_POP_OUT, "pop-out", ARG_NON },
+ { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL },
+ { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL },
+ { OP_REPEAT, "repeat", ARG_SPECIAL },
+ { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL },
+ { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM },
+ { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM },
+ { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM },
+ { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM },
+ { OP_EMPTY_CHECK_START, "empty-check-start", ARG_MEMNUM },
+ { OP_EMPTY_CHECK_END, "empty-check-end", ARG_MEMNUM },
+ { OP_EMPTY_CHECK_END_MEMST,"empty-check-end-memst", ARG_MEMNUM },
+ { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push", ARG_MEMNUM },
+ { OP_PREC_READ_START, "push-pos", ARG_NON },
+ { OP_PREC_READ_END, "pop-pos", ARG_NON },
+ { OP_PREC_READ_NOT_START, "prec-read-not-start", ARG_RELADDR },
+ { OP_PREC_READ_NOT_END, "prec-read-not-end", ARG_NON },
+ { OP_ATOMIC_START, "atomic-start", ARG_NON },
+ { OP_ATOMIC_END, "atomic-end", ARG_NON },
+ { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL },
+ { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start", ARG_SPECIAL },
+ { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end", ARG_NON },
+ { OP_CALL, "call", ARG_ABSADDR },
+ { OP_RETURN, "return", ARG_NON },
+ { OP_PUSH_SAVE_VAL, "push-save-val", ARG_SPECIAL },
+ { OP_UPDATE_VAR, "update-var", ARG_SPECIAL },
+#ifdef USE_CALLOUT
+ { OP_CALLOUT_CONTENTS, "callout-contents", ARG_SPECIAL },
+ { OP_CALLOUT_NAME, "callout-name", ARG_SPECIAL },
+#endif
+ { -1, "", ARG_NON }
+};
+
+static char*
+op2name(int opcode)
+{
+ int i;
+
+ for (i = 0; OpInfo[i].opcode >= 0; i++) {
+ if (opcode == OpInfo[i].opcode)
+ return OpInfo[i].name;
+ }
+ return "";
+}
+
+static int
+op2arg_type(int opcode)
+{
+ int i;
+
+ for (i = 0; OpInfo[i].opcode >= 0; i++) {
+ if (opcode == OpInfo[i].opcode)
+ return OpInfo[i].arg_type;
+ }
+ return ARG_SPECIAL;
+}
+
+static void
+p_string(FILE* f, int len, UChar* s)
+{
+ fputs(":", f);
+ while (len-- > 0) { fputc(*s++, f); }
+}
+
+static void
+p_len_string(FILE* f, LengthType len, int mb_len, UChar* s)
+{
+ int x = len * mb_len;
+
+ fprintf(f, ":%d:", len);
+ while (x-- > 0) { fputc(*s++, f); }
+}
+
+static void
+p_rel_addr(FILE* f, RelAddrType rel_addr, UChar* p, UChar* start)
+{
+ RelAddrType curr = (RelAddrType )(p - start);
+
+ fprintf(f, "{%d/%d}", rel_addr, curr + rel_addr);
+}
+
+static int
+bitset_on_num(BitSetRef bs)
+{
+ int i, n;
+
+ n = 0;
+ for (i = 0; i < SINGLE_BYTE_SIZE; i++) {
+ if (BITSET_AT(bs, i)) n++;
+ }
+ return n;
+}
+
+extern void
+onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start,
+ OnigEncoding enc)
+{
+ int i, n;
+ OpArgType arg_type;
+ RelAddrType addr;
+ LengthType len;
+ MemNumType mem;
+ OnigCodePoint code;
+ OnigOptionType option;
+ ModeType mode;
+ UChar *q;
+
+ fprintf(f, "%s", op2name(*bp));
+ arg_type = op2arg_type(*bp);
+ if (arg_type != ARG_SPECIAL) {
+ bp++;
+ switch (arg_type) {
+ case ARG_NON:
+ break;
+ case ARG_RELADDR:
+ GET_RELADDR_INC(addr, bp);
+ fputc(':', f);
+ p_rel_addr(f, addr, bp, start);
+ break;
+ case ARG_ABSADDR:
+ GET_ABSADDR_INC(addr, bp);
+ fprintf(f, ":{/%d}", addr);
+ break;
+ case ARG_LENGTH:
+ GET_LENGTH_INC(len, bp);
+ fprintf(f, ":%d", len);
+ break;
+ case ARG_MEMNUM:
+ mem = *((MemNumType* )bp);
+ bp += SIZE_MEMNUM;
+ fprintf(f, ":%d", mem);
+ break;
+ case ARG_OPTION:
+ {
+ OnigOptionType option = *((OnigOptionType* )bp);
+ bp += SIZE_OPTION;
+ fprintf(f, ":%d", option);
+ }
+ break;
+ case ARG_MODE:
+ mode = *((ModeType* )bp);
+ bp += SIZE_MODE;
+ fprintf(f, ":%d", mode);
+ break;
+ default:
+ break;
+ }
+ }
+ else {
+ switch (*bp++) {
+ case OP_EXACT1:
+ case OP_ANYCHAR_STAR_PEEK_NEXT:
+ case OP_ANYCHAR_ML_STAR_PEEK_NEXT:
+ p_string(f, 1, bp++); break;
+ case OP_EXACT2:
+ p_string(f, 2, bp); bp += 2; break;
+ case OP_EXACT3:
+ p_string(f, 3, bp); bp += 3; break;
+ case OP_EXACT4:
+ p_string(f, 4, bp); bp += 4; break;
+ case OP_EXACT5:
+ p_string(f, 5, bp); bp += 5; break;
+ case OP_EXACTN:
+ GET_LENGTH_INC(len, bp);
+ p_len_string(f, len, 1, bp);
+ bp += len;
+ break;
+
+ case OP_EXACTMB2N1:
+ p_string(f, 2, bp); bp += 2; break;
+ case OP_EXACTMB2N2:
+ p_string(f, 4, bp); bp += 4; break;
+ case OP_EXACTMB2N3:
+ p_string(f, 6, bp); bp += 6; break;
+ case OP_EXACTMB2N:
+ GET_LENGTH_INC(len, bp);
+ p_len_string(f, len, 2, bp);
+ bp += len * 2;
+ break;
+ case OP_EXACTMB3N:
+ GET_LENGTH_INC(len, bp);
+ p_len_string(f, len, 3, bp);
+ bp += len * 3;
+ break;
+ case OP_EXACTMBN:
+ {
+ int mb_len;
+
+ GET_LENGTH_INC(mb_len, bp);
+ GET_LENGTH_INC(len, bp);
+ fprintf(f, ":%d:%d:", mb_len, len);
+ n = len * mb_len;
+ while (n-- > 0) { fputc(*bp++, f); }
+ }
+ break;
+
+ case OP_EXACT1_IC:
+ len = enclen(enc, bp);
+ p_string(f, len, bp);
+ bp += len;
+ break;
+ case OP_EXACTN_IC:
+ GET_LENGTH_INC(len, bp);
+ p_len_string(f, len, 1, bp);
+ bp += len;
+ break;
+
+ case OP_CCLASS:
+ n = bitset_on_num((BitSetRef )bp);
+ bp += SIZE_BITSET;
+ fprintf(f, ":%d", n);
+ break;
+
+ case OP_CCLASS_NOT:
+ n = bitset_on_num((BitSetRef )bp);
+ bp += SIZE_BITSET;
+ fprintf(f, ":%d", n);
+ break;
+
+ case OP_CCLASS_MB:
+ case OP_CCLASS_MB_NOT:
+ GET_LENGTH_INC(len, bp);
+ q = bp;
+#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
+ ALIGNMENT_RIGHT(q);
+#endif
+ GET_CODE_POINT(code, q);
+ bp += len;
+ fprintf(f, ":%d:%d", (int )code, len);
+ break;
+
+ case OP_CCLASS_MIX:
+ case OP_CCLASS_MIX_NOT:
+ n = bitset_on_num((BitSetRef )bp);
+ bp += SIZE_BITSET;
+ GET_LENGTH_INC(len, bp);
+ q = bp;
+#ifndef PLATFORM_UNALIGNED_WORD_ACCESS
+ ALIGNMENT_RIGHT(q);
+#endif
+ GET_CODE_POINT(code, q);
+ bp += len;
+ fprintf(f, ":%d:%d:%d", n, (int )code, len);
+ break;
+
+#ifdef USE_OP_CCLASS_NODE
+ case OP_CCLASS_NODE:
+ {
+ CClassNode *cc;
+
+ GET_POINTER_INC(cc, bp);
+ n = bitset_on_num(cc->bs);
+ fprintf(f, ":%p:%d", cc, n);
+ }
+ break;
+#endif
+
+ case OP_BACKREF_N_IC:
+ mem = *((MemNumType* )bp);
+ bp += SIZE_MEMNUM;
+ fprintf(f, ":%d", mem);
+ break;
+
+ case OP_BACKREF_MULTI_IC:
+ case OP_BACKREF_MULTI:
+ case OP_BACKREF_CHECK:
+ fputs(" ", f);
+ GET_LENGTH_INC(len, bp);
+ for (i = 0; i < len; i++) {
+ GET_MEMNUM_INC(mem, bp);
+ if (i > 0) fputs(", ", f);
+ fprintf(f, "%d", mem);
+ }
+ break;
+
+ case OP_BACKREF_WITH_LEVEL:
+ GET_OPTION_INC(option, bp);
+ fprintf(f, ":%d", option);
+ /* fall */
+ case OP_BACKREF_CHECK_WITH_LEVEL:
+ {
+ LengthType level;
+
+ GET_LENGTH_INC(level, bp);
+ fprintf(f, ":%d", level);
+
+ fputs(" ", f);
+ GET_LENGTH_INC(len, bp);
+ for (i = 0; i < len; i++) {
+ GET_MEMNUM_INC(mem, bp);
+ if (i > 0) fputs(", ", f);
+ fprintf(f, "%d", mem);
+ }
+ }
+ break;
+
+ case OP_REPEAT:
+ case OP_REPEAT_NG:
+ {
+ mem = *((MemNumType* )bp);
+ bp += SIZE_MEMNUM;
+ addr = *((RelAddrType* )bp);
+ bp += SIZE_RELADDR;
+ fprintf(f, ":%d:%d", mem, addr);
+ }
+ break;
+
+ case OP_PUSH_OR_JUMP_EXACT1:
+ case OP_PUSH_IF_PEEK_NEXT:
+ addr = *((RelAddrType* )bp);
+ bp += SIZE_RELADDR;
+ fputc(':', f);
+ p_rel_addr(f, addr, bp, start);
+ p_string(f, 1, bp);
+ bp += 1;
+ break;
+
+ case OP_LOOK_BEHIND:
+ GET_LENGTH_INC(len, bp);
+ fprintf(f, ":%d", len);
+ break;
+
+ case OP_LOOK_BEHIND_NOT_START:
+ GET_RELADDR_INC(addr, bp);
+ GET_LENGTH_INC(len, bp);
+ fprintf(f, ":%d:", len);
+ p_rel_addr(f, addr, bp, start);
+ break;
+
+ case OP_PUSH_SAVE_VAL:
+ {
+ SaveType type;
+ GET_SAVE_TYPE_INC(type, bp);
+ GET_MEMNUM_INC(mem, bp);
+ fprintf(f, ":%d:%d", type, mem);
+ }
+ break;
+
+ case OP_UPDATE_VAR:
+ {
+ UpdateVarType type;
+ GET_UPDATE_VAR_TYPE_INC(type, bp);
+ GET_MEMNUM_INC(mem, bp);
+ fprintf(f, ":%d:%d", type, mem);
+ }
+ break;
+
+#ifdef USE_CALLOUT
+ case OP_CALLOUT_CONTENTS:
+ {
+ GET_MEMNUM_INC(mem, bp); /* number */
+ fprintf(f, ":%d", mem);
+ }
+ break;
+
+ case OP_CALLOUT_NAME:
+ {
+ int id;
+
+ GET_MEMNUM_INC(id, bp); /* id */
+ GET_MEMNUM_INC(mem, bp); /* number */
+
+ fprintf(f, ":%d:%d", id, mem);
+ }
+ break;
+#endif
+
+ default:
+ fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp);
+ }
+ }
+ if (nextp) *nextp = bp;
+}
+#endif /* ONIG_DEBUG */
+
+#ifdef ONIG_DEBUG_COMPILE
+extern void
+onig_print_compiled_byte_code_list(FILE* f, regex_t* reg)
+{
+ UChar* bp;
+ UChar* start = reg->p;
+ UChar* end = reg->p + reg->used;
+
+ fprintf(f, "bt_mem_start: 0x%x, bt_mem_end: 0x%x\n",
+ reg->bt_mem_start, reg->bt_mem_end);
+ fprintf(f, "code-length: %d\n", reg->used);
+
+ bp = start;
+ while (bp < end) {
+ int pos = bp - start;
+
+ fprintf(f, "%4d: ", pos);
+ onig_print_compiled_byte_code(f, bp, &bp, start, reg->enc);
+ fprintf(f, "\n");
+ }
+ fprintf(f, "\n");
+}
+#endif
+
+
#ifdef USE_CAPTURE_HISTORY
static void history_tree_free(OnigCaptureTreeNode* node);
@@ -240,6 +820,7 @@ onig_region_new(void)
OnigRegion* r;
r = (OnigRegion* )xmalloc(sizeof(OnigRegion));
+ CHECK_NULL_RETURN(r);
onig_region_init(r);
return r;
}
@@ -247,7 +828,7 @@ onig_region_new(void)
extern void
onig_region_free(OnigRegion* r, int free_self)
{
- if (r) {
+ if (r != 0) {
if (r->allocated > 0) {
if (r->beg) xfree(r->beg);
if (r->end) xfree(r->end);
@@ -271,13 +852,17 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
if (to->allocated == 0) {
if (from->num_regs > 0) {
to->beg = (int* )xmalloc(RREGC_SIZE);
+ if (IS_NULL(to->beg)) return;
to->end = (int* )xmalloc(RREGC_SIZE);
+ if (IS_NULL(to->end)) return;
to->allocated = from->num_regs;
}
}
else if (to->allocated < from->num_regs) {
to->beg = (int* )xrealloc(to->beg, RREGC_SIZE);
+ if (IS_NULL(to->beg)) return;
to->end = (int* )xrealloc(to->end, RREGC_SIZE);
+ if (IS_NULL(to->end)) return;
to->allocated = from->num_regs;
}
@@ -296,93 +881,182 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
#endif
}
+#ifdef USE_CALLOUT
+#define CALLOUT_BODY(func, ain, aname_id, anum, user, args, result) do { \
+ args.in = (ain);\
+ args.name_id = (aname_id);\
+ args.num = anum;\
+ args.regex = reg;\
+ args.string = str;\
+ args.string_end = end;\
+ args.start = sstart;\
+ args.right_range = right_range;\
+ args.current = s;\
+ args.retry_in_match_counter = retry_in_match_counter;\
+ args.msa = msa;\
+ args.stk_base = stk_base;\
+ args.stk = stk;\
+ args.mem_start_stk = mem_start_stk;\
+ args.mem_end_stk = mem_end_stk;\
+ result = (func)(&args, user);\
+} while (0)
+
+#define RETRACTION_CALLOUT(func, aname_id, anum, user) do {\
+ int result;\
+ OnigCalloutArgs args;\
+ CALLOUT_BODY(func, ONIG_CALLOUT_IN_RETRACTION, aname_id, anum, user, args, result);\
+ switch (result) {\
+ case ONIG_CALLOUT_FAIL:\
+ case ONIG_CALLOUT_SUCCESS:\
+ break;\
+ default:\
+ if (result > 0) {\
+ result = ONIGERR_INVALID_ARGUMENT;\
+ }\
+ best_len = result;\
+ goto finish;\
+ break;\
+ }\
+} while(0)
+#endif
+
/** stack **/
#define INVALID_STACK_INDEX -1
+#define STK_ALT_FLAG 0x0001
+
/* stack type */
/* used by normal-POP */
-#define STK_ALT 0x0001
-#define STK_LOOK_BEHIND_NOT 0x0002
-#define STK_POS_NOT 0x0003
+#define STK_SUPER_ALT STK_ALT_FLAG
+#define STK_ALT (0x0002 | STK_ALT_FLAG)
+#define STK_ALT_PREC_READ_NOT (0x0004 | STK_ALT_FLAG)
+#define STK_ALT_LOOK_BEHIND_NOT (0x0006 | STK_ALT_FLAG)
+
/* handled by normal-POP */
-#define STK_MEM_START 0x0100
-#define STK_MEM_END 0x8200
-#define STK_REPEAT_INC 0x0300
-#define STK_STATE_CHECK_MARK 0x1000
+#define STK_MEM_START 0x0010
+#define STK_MEM_END 0x8030
+#define STK_REPEAT_INC 0x0050
+#ifdef USE_CALLOUT
+#define STK_CALLOUT 0x0070
+#endif
+
/* avoided by normal-POP */
-#define STK_NULL_CHECK_START 0x3000
-#define STK_NULL_CHECK_END 0x5000 /* for recursive call */
-#define STK_MEM_END_MARK 0x8400
-#define STK_POS 0x0500 /* used when POP-POS */
-#define STK_STOP_BT 0x0600 /* mark for "(?>...)" */
-#define STK_REPEAT 0x0700
-#define STK_CALL_FRAME 0x0800
-#define STK_RETURN 0x0900
-#define STK_VOID 0x0a00 /* for fill a blank */
+#define STK_VOID 0x0000 /* for fill a blank */
+#define STK_EMPTY_CHECK_START 0x3000
+#define STK_EMPTY_CHECK_END 0x5000 /* for recursive call */
+#define STK_MEM_END_MARK 0x8100
+#define STK_TO_VOID_START 0x1200 /* mark for "(?>...)" */
+#define STK_REPEAT 0x0300
+#define STK_CALL_FRAME 0x0400
+#define STK_RETURN 0x0500
+#define STK_SAVE_VAL 0x0600
/* stack type check mask */
-#define STK_MASK_POP_USED 0x00ff
-#define STK_MASK_TO_VOID_TARGET 0x10ff
+#define STK_MASK_POP_USED STK_ALT_FLAG
+#define STK_MASK_POP_HANDLED 0x0010
+#define STK_MASK_POP_HANDLED_TIL (STK_MASK_POP_HANDLED | 0x0004)
+#define STK_MASK_TO_VOID_TARGET 0x100e
#define STK_MASK_MEM_END_OR_MARK 0x8000 /* MEM_END or MEM_END_MARK */
+typedef intptr_t StackIndex;
+
+typedef struct _StackType {
+ unsigned int type;
+ int zid;
+ union {
+ struct {
+ UChar *pcode; /* byte code position */
+ UChar *pstr; /* string position */
+ UChar *pstr_prev; /* previous char position of pstr */
+ } state;
+ struct {
+ int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */
+ UChar *pcode; /* byte code position (head of repeated target) */
+ } repeat;
+ struct {
+ StackIndex si; /* index of stack */
+ } repeat_inc;
+ struct {
+ UChar *pstr; /* start/end position */
+ /* Following information is set, if this stack type is MEM-START */
+ StackIndex prev_start; /* prev. info (for backtrack "(...)*" ) */
+ StackIndex prev_end; /* prev. info (for backtrack "(...)*" ) */
+ } mem;
+ struct {
+ UChar *pstr; /* start position */
+ } empty_check;
+#ifdef USE_CALL
+ struct {
+ UChar *ret_addr; /* byte code position */
+ UChar *pstr; /* string position */
+ } call_frame;
+#endif
+ struct {
+ enum SaveType type;
+ UChar* v;
+ UChar* v2;
+ } val;
+#ifdef USE_CALLOUT
+ struct {
+ int num;
+ OnigCalloutFunc func;
+ } callout;
+#endif
+ } u;
+} StackType;
+
+#ifdef USE_CALLOUT
+
+struct OnigCalloutArgsStruct {
+ OnigCalloutIn in;
+ int name_id; /* name id or ONIG_NON_NAME_ID */
+ int num;
+ OnigRegex regex;
+ const OnigUChar* string;
+ const OnigUChar* string_end;
+ const OnigUChar* start;
+ const OnigUChar* right_range;
+ const OnigUChar* current; /* current matching position */
+ unsigned long retry_in_match_counter;
+
+ /* invisible to users */
+ MatchArg* msa;
+ StackType* stk_base;
+ StackType* stk;
+ StackIndex* mem_start_stk;
+ StackIndex* mem_end_stk;
+};
+
+#endif
+
+
#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
-#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start) do {\
+#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mp) do { \
(msa).stack_p = (void* )0;\
(msa).options = (arg_option);\
(msa).region = (arg_region);\
(msa).start = (arg_start);\
+ (msa).match_stack_limit = (mp)->match_stack_limit;\
+ (msa).retry_limit_in_match = (mp)->retry_limit_in_match;\
+ (msa).mp = mp;\
(msa).best_len = ONIG_MISMATCH;\
- (msa).ptr_num = (reg)->num_repeat + (reg)->num_mem * 2;\
+ (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \
} while(0)
#else
-#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start) do {\
+#define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start, mp) do { \
(msa).stack_p = (void* )0;\
(msa).options = (arg_option);\
(msa).region = (arg_region);\
(msa).start = (arg_start);\
- (msa).ptr_num = (reg)->num_repeat + (reg)->num_mem * 2;\
+ (msa).match_stack_limit = (mp)->match_stack_limit;\
+ (msa).retry_limit_in_match = (mp)->retry_limit_in_match;\
+ (msa).mp = mp;\
+ (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \
} while(0)
#endif
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-
-#define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE 16
-
-#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do { \
- if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\
- unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\
- offset = ((offset) * (state_num)) >> 3;\
- if (size > 0 && offset < size && size < STATE_CHECK_BUFF_MAX_SIZE) {\
- if (size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) \
- (msa).state_check_buff = (void* )xmalloc(size);\
- else \
- (msa).state_check_buff = (void* )xalloca(size);\
- xmemset(((char* )((msa).state_check_buff)+(offset)), 0, \
- (size_t )(size - (offset))); \
- (msa).state_check_buff_size = size;\
- }\
- else {\
- (msa).state_check_buff = (void* )0;\
- (msa).state_check_buff_size = 0;\
- }\
- }\
- else {\
- (msa).state_check_buff = (void* )0;\
- (msa).state_check_buff_size = 0;\
- }\
-} while(0)
-
-#define MATCH_ARG_FREE(msa) do {\
- if ((msa).stack_p) xfree((msa).stack_p);\
- if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \
- if ((msa).state_check_buff) xfree((msa).state_check_buff);\
- }\
-} while(0)
-#else
-#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num)
#define MATCH_ARG_FREE(msa) if ((msa).stack_p) xfree((msa).stack_p)
-#endif
#define ALLOCA_PTR_NUM_LIMIT 50
@@ -391,26 +1065,28 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
if (msa->stack_p) {\
is_alloca = 0;\
alloc_base = msa->stack_p;\
- stk_base = (OnigStackType* )(alloc_base\
- + (sizeof(OnigStackIndex) * msa->ptr_num));\
+ stk_base = (StackType* )(alloc_base\
+ + (sizeof(StackIndex) * msa->ptr_num));\
stk = stk_base;\
stk_end = stk_base + msa->stack_n;\
}\
else if (msa->ptr_num > ALLOCA_PTR_NUM_LIMIT) {\
is_alloca = 0;\
- alloc_base = (char* )xmalloc(sizeof(OnigStackIndex) * msa->ptr_num\
- + sizeof(OnigStackType) * (stack_num));\
- stk_base = (OnigStackType* )(alloc_base\
- + (sizeof(OnigStackIndex) * msa->ptr_num));\
+ alloc_base = (char* )xmalloc(sizeof(StackIndex) * msa->ptr_num\
+ + sizeof(StackType) * (stack_num));\
+ CHECK_NULL_RETURN_MEMERR(alloc_base);\
+ stk_base = (StackType* )(alloc_base\
+ + (sizeof(StackIndex) * msa->ptr_num));\
stk = stk_base;\
stk_end = stk_base + (stack_num);\
}\
else {\
is_alloca = 1;\
- alloc_base = (char* )xalloca(sizeof(OnigStackIndex) * msa->ptr_num\
- + sizeof(OnigStackType) * (stack_num));\
- stk_base = (OnigStackType* )(alloc_base\
- + (sizeof(OnigStackIndex) * msa->ptr_num));\
+ alloc_base = (char* )xalloca(sizeof(StackIndex) * msa->ptr_num\
+ + sizeof(StackType) * (stack_num));\
+ CHECK_NULL_RETURN_MEMERR(alloc_base);\
+ stk_base = (StackType* )(alloc_base\
+ + (sizeof(StackIndex) * msa->ptr_num));\
stk = stk_base;\
stk_end = stk_base + (stack_num);\
}\
@@ -418,11 +1094,12 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
#define STACK_SAVE do{\
- msa->stack_n = stk_end - stk_base;\
+ msa->stack_n = (int )(stk_end - stk_base);\
if (is_alloca != 0) {\
- size_t size = sizeof(OnigStackIndex) * msa->ptr_num \
- + sizeof(OnigStackType) * msa->stack_n;\
+ size_t size = sizeof(StackIndex) * msa->ptr_num \
+ + sizeof(StackType) * msa->stack_n;\
msa->stack_p = xmalloc(size);\
+ CHECK_NULL_RETURN_MEMERR(msa->stack_p);\
xmemcpy(msa->stack_p, alloc_base, size);\
}\
else {\
@@ -431,33 +1108,308 @@ onig_region_copy(OnigRegion* to, OnigRegion* from)
} while(0)
#define UPDATE_FOR_STACK_REALLOC do{\
- repeat_stk = (OnigStackIndex* )alloc_base;\
- mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat);\
- mem_end_stk = mem_start_stk + num_mem;\
- mem_start_stk--; /* for index start from 1 */\
- mem_end_stk--; /* for index start from 1 */\
+ repeat_stk = (StackIndex* )alloc_base;\
+ mem_start_stk = (StackIndex* )(repeat_stk + reg->num_repeat);\
+ mem_end_stk = mem_start_stk + num_mem + 1;\
} while(0)
-static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE;
+static unsigned int MatchStackLimit = DEFAULT_MATCH_STACK_LIMIT_SIZE;
extern unsigned int
onig_get_match_stack_limit_size(void)
{
- return MatchStackLimitSize;
+ return MatchStackLimit;
}
extern int
onig_set_match_stack_limit_size(unsigned int size)
{
- MatchStackLimitSize = size;
+ MatchStackLimit = size;
+ return 0;
+}
+
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+
+static unsigned long RetryLimitInMatch = DEFAULT_RETRY_LIMIT_IN_MATCH;
+
+#define CHECK_RETRY_LIMIT_IN_MATCH do {\
+ if (retry_in_match_counter++ > retry_limit_in_match) goto retry_limit_in_match_over;\
+} while (0)
+
+#else
+
+#define CHECK_RETRY_LIMIT_IN_MATCH
+
+#endif /* USE_RETRY_LIMIT_IN_MATCH */
+
+extern unsigned long
+onig_get_retry_limit_in_match(void)
+{
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ return RetryLimitInMatch;
+#else
+ /* return ONIG_NO_SUPPORT_CONFIG; */
+ return 0;
+#endif
+}
+
+extern int
+onig_set_retry_limit_in_match(unsigned long size)
+{
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ RetryLimitInMatch = size;
+ return 0;
+#else
+ return ONIG_NO_SUPPORT_CONFIG;
+#endif
+}
+
+static OnigCalloutFunc DefaultProgressCallout;
+static OnigCalloutFunc DefaultRetractionCallout;
+
+extern OnigMatchParam*
+onig_new_match_param(void)
+{
+ OnigMatchParam* p;
+
+ p = (OnigMatchParam* )xmalloc(sizeof(*p));
+ if (IS_NOT_NULL(p)) {
+ onig_initialize_match_param(p);
+ }
+
+ return p;
+}
+
+extern void
+onig_free_match_param_content(OnigMatchParam* p)
+{
+#ifdef USE_CALLOUT
+ if (IS_NOT_NULL(p->callout_data)) {
+ xfree(p->callout_data);
+ p->callout_data = 0;
+ }
+#endif
+}
+
+extern void
+onig_free_match_param(OnigMatchParam* p)
+{
+ if (IS_NOT_NULL(p)) {
+ onig_free_match_param_content(p);
+ xfree(p);
+ }
+}
+
+extern int
+onig_initialize_match_param(OnigMatchParam* mp)
+{
+ mp->match_stack_limit = MatchStackLimit;
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ mp->retry_limit_in_match = RetryLimitInMatch;
+#endif
+ mp->progress_callout_of_contents = DefaultProgressCallout;
+ mp->retraction_callout_of_contents = DefaultRetractionCallout;
+
+#ifdef USE_CALLOUT
+ mp->match_at_call_counter = 0;
+ mp->callout_user_data = 0;
+ mp->callout_data = 0;
+ mp->callout_data_alloc_num = 0;
+#endif
+
+ return ONIG_NORMAL;
+}
+
+#ifdef USE_CALLOUT
+
+static int
+adjust_match_param(regex_t* reg, OnigMatchParam* mp)
+{
+ RegexExt* ext = REG_EXTP(reg);
+
+ mp->match_at_call_counter = 0;
+
+ if (IS_NULL(ext) || ext->callout_num == 0) return ONIG_NORMAL;
+
+ if (ext->callout_num > mp->callout_data_alloc_num) {
+ CalloutData* d;
+ size_t n = ext->callout_num * sizeof(*d);
+ if (IS_NOT_NULL(mp->callout_data))
+ d = (CalloutData* )xrealloc(mp->callout_data, n);
+ else
+ d = (CalloutData* )xmalloc(n);
+ CHECK_NULL_RETURN_MEMERR(d);
+
+ mp->callout_data = d;
+ mp->callout_data_alloc_num = ext->callout_num;
+ }
+
+ xmemset(mp->callout_data, 0, mp->callout_data_alloc_num * sizeof(CalloutData));
+ return ONIG_NORMAL;
+}
+
+#define ADJUST_MATCH_PARAM(reg, mp) \
+ r = adjust_match_param(reg, mp);\
+ if (r != ONIG_NORMAL) return r;
+
+#define CALLOUT_DATA_AT_NUM(mp, num) ((mp)->callout_data + ((num) - 1))
+
+extern int
+onig_check_callout_data_and_clear_old_values(OnigCalloutArgs* args)
+{
+ OnigMatchParam* mp;
+ int num;
+ CalloutData* d;
+
+ mp = args->msa->mp;
+ num = args->num;
+
+ d = CALLOUT_DATA_AT_NUM(mp, num);
+ if (d->last_match_at_call_counter != mp->match_at_call_counter) {
+ xmemset(d, 0, sizeof(*d));
+ d->last_match_at_call_counter = mp->match_at_call_counter;
+ return d->last_match_at_call_counter;
+ }
+
return 0;
}
+extern int
+onig_get_callout_data_dont_clear_old(regex_t* reg, OnigMatchParam* mp,
+ int callout_num, int slot,
+ OnigType* type, OnigValue* val)
+{
+ OnigType t;
+ CalloutData* d;
+
+ if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT;
+
+ d = CALLOUT_DATA_AT_NUM(mp, callout_num);
+ t = d->slot[slot].type;
+ if (IS_NOT_NULL(type)) *type = t;
+ if (IS_NOT_NULL(val)) *val = d->slot[slot].val;
+ return (t == ONIG_TYPE_VOID ? 1 : ONIG_NORMAL);
+}
+
+extern int
+onig_get_callout_data_by_callout_args_self_dont_clear_old(OnigCalloutArgs* args,
+ int slot, OnigType* type,
+ OnigValue* val)
+{
+ return onig_get_callout_data_dont_clear_old(args->regex, args->msa->mp,
+ args->num, slot, type, val);
+}
+
+extern int
+onig_get_callout_data(regex_t* reg, OnigMatchParam* mp,
+ int callout_num, int slot,
+ OnigType* type, OnigValue* val)
+{
+ OnigType t;
+ CalloutData* d;
+
+ if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT;
+
+ d = CALLOUT_DATA_AT_NUM(mp, callout_num);
+ if (d->last_match_at_call_counter != mp->match_at_call_counter) {
+ xmemset(d, 0, sizeof(*d));
+ d->last_match_at_call_counter = mp->match_at_call_counter;
+ }
+
+ t = d->slot[slot].type;
+ if (IS_NOT_NULL(type)) *type = t;
+ if (IS_NOT_NULL(val)) *val = d->slot[slot].val;
+ return (t == ONIG_TYPE_VOID ? 1 : ONIG_NORMAL);
+}
+
+extern int
+onig_get_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp,
+ const UChar* tag, const UChar* tag_end, int slot,
+ OnigType* type, OnigValue* val)
+{
+ int num;
+
+ num = onig_get_callout_num_by_tag(reg, tag, tag_end);
+ if (num < 0) return num;
+ if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ return onig_get_callout_data(reg, mp, num, slot, type, val);
+}
+
+extern int
+onig_get_callout_data_by_callout_args(OnigCalloutArgs* args,
+ int callout_num, int slot,
+ OnigType* type, OnigValue* val)
+{
+ return onig_get_callout_data(args->regex, args->msa->mp, callout_num, slot,
+ type, val);
+}
+
+extern int
+onig_get_callout_data_by_callout_args_self(OnigCalloutArgs* args,
+ int slot, OnigType* type, OnigValue* val)
+{
+ return onig_get_callout_data(args->regex, args->msa->mp, args->num, slot,
+ type, val);
+}
+
+extern int
+onig_set_callout_data(regex_t* reg, OnigMatchParam* mp,
+ int callout_num, int slot,
+ OnigType type, OnigValue* val)
+{
+ CalloutData* d;
+
+ if (callout_num <= 0) return ONIGERR_INVALID_ARGUMENT;
+
+ d = CALLOUT_DATA_AT_NUM(mp, callout_num);
+ d->slot[slot].type = type;
+ d->slot[slot].val = *val;
+ d->last_match_at_call_counter = mp->match_at_call_counter;
+
+ return ONIG_NORMAL;
+}
+
+extern int
+onig_set_callout_data_by_tag(regex_t* reg, OnigMatchParam* mp,
+ const UChar* tag, const UChar* tag_end, int slot,
+ OnigType type, OnigValue* val)
+{
+ int num;
+
+ num = onig_get_callout_num_by_tag(reg, tag, tag_end);
+ if (num < 0) return num;
+ if (num == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ return onig_set_callout_data(reg, mp, num, slot, type, val);
+}
+
+extern int
+onig_set_callout_data_by_callout_args(OnigCalloutArgs* args,
+ int callout_num, int slot,
+ OnigType type, OnigValue* val)
+{
+ return onig_set_callout_data(args->regex, args->msa->mp, callout_num, slot,
+ type, val);
+}
+
+extern int
+onig_set_callout_data_by_callout_args_self(OnigCalloutArgs* args,
+ int slot, OnigType type, OnigValue* val)
+{
+ return onig_set_callout_data(args->regex, args->msa->mp, args->num, slot,
+ type, val);
+}
+
+#else
+#define ADJUST_MATCH_PARAM(reg, mp)
+#endif /* USE_CALLOUT */
+
+
static int
stack_double(int is_alloca, char** arg_alloc_base,
- OnigStackType** arg_stk_base,
- OnigStackType** arg_stk_end, OnigStackType** arg_stk,
- OnigMatchArg* msa)
+ StackType** arg_stk_base, StackType** arg_stk_end, StackType** arg_stk,
+ MatchArg* msa)
{
unsigned int n;
int used;
@@ -465,17 +1417,17 @@ stack_double(int is_alloca, char** arg_alloc_base,
size_t new_size;
char* alloc_base;
char* new_alloc_base;
- OnigStackType *stk_base, *stk_end, *stk;
+ StackType *stk_base, *stk_end, *stk;
alloc_base = *arg_alloc_base;
stk_base = *arg_stk_base;
stk_end = *arg_stk_end;
stk = *arg_stk;
- n = stk_end - stk_base;
- size = sizeof(OnigStackIndex) * msa->ptr_num + sizeof(OnigStackType) * n;
+ n = (unsigned int )(stk_end - stk_base);
+ size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n;
n *= 2;
- new_size = sizeof(OnigStackIndex) * msa->ptr_num + sizeof(OnigStackType) * n;
+ new_size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n;
if (is_alloca != 0) {
new_alloc_base = (char* )xmalloc(new_size);
if (IS_NULL(new_alloc_base)) {
@@ -485,11 +1437,11 @@ stack_double(int is_alloca, char** arg_alloc_base,
xmemcpy(new_alloc_base, alloc_base, size);
}
else {
- if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) {
- if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize)
+ if (msa->match_stack_limit != 0 && n > msa->match_stack_limit) {
+ if ((unsigned int )(stk_end - stk_base) == msa->match_stack_limit)
return ONIGERR_MATCH_STACK_LIMIT_OVER;
else
- n = MatchStackLimitSize;
+ n = msa->match_stack_limit;
}
new_alloc_base = (char* )xrealloc(alloc_base, new_size);
if (IS_NULL(new_alloc_base)) {
@@ -499,19 +1451,18 @@ stack_double(int is_alloca, char** arg_alloc_base,
}
alloc_base = new_alloc_base;
- used = stk - stk_base;
+ used = (int )(stk - stk_base);
*arg_alloc_base = alloc_base;
- *arg_stk_base = (OnigStackType* )(alloc_base
- + (sizeof(OnigStackIndex) * msa->ptr_num));
+ *arg_stk_base = (StackType* )(alloc_base
+ + (sizeof(StackIndex) * msa->ptr_num));
*arg_stk = *arg_stk_base + used;
*arg_stk_end = *arg_stk_base + n;
return 0;
}
-#define STACK_ENSURE(n) do {\
- if (stk_end - stk < (n)) {\
- int r = stack_double(is_alloca, &alloc_base, &stk_base, &stk_end, &stk,\
- msa);\
+#define STACK_ENSURE(n) do {\
+ if ((int )(stk_end - stk) < (n)) {\
+ int r = stack_double(is_alloca, &alloc_base, &stk_base, &stk_end, &stk, msa);\
if (r != 0) { STACK_SAVE; return r; } \
is_alloca = 0;\
UPDATE_FOR_STACK_REALLOC;\
@@ -529,92 +1480,51 @@ stack_double(int is_alloca, char** arg_alloc_base,
#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0)
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-#define STATE_CHECK_POS(s,snum) \
- (((s) - str) * num_comb_exp_check + ((snum) - 1))
-#define STATE_CHECK_VAL(v,snum) do {\
- if (state_check_buff != NULL) {\
- int x = STATE_CHECK_POS(s,snum);\
- (v) = state_check_buff[x/8] & (1<<(x%8));\
- }\
- else (v) = 0;\
-} while(0)
-
-
-#define ELSE_IF_STATE_CHECK_MARK(stk) \
- else if ((stk)->type == STK_STATE_CHECK_MARK) { \
- int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\
- state_check_buff[x/8] |= (1<<(x%8)); \
- }
-
#define STACK_PUSH(stack_type,pat,s,sprev) do {\
STACK_ENSURE(1);\
stk->type = (stack_type);\
stk->u.state.pcode = (pat);\
stk->u.state.pstr = (s);\
stk->u.state.pstr_prev = (sprev);\
- stk->u.state.state_check = 0;\
STACK_INC;\
} while(0)
#define STACK_PUSH_ENSURED(stack_type,pat) do {\
stk->type = (stack_type);\
stk->u.state.pcode = (pat);\
- stk->u.state.state_check = 0;\
- STACK_INC;\
-} while(0)
-
-#define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum) do {\
- STACK_ENSURE(1);\
- stk->type = STK_ALT;\
- stk->u.state.pcode = (pat);\
- stk->u.state.pstr = (s);\
- stk->u.state.pstr_prev = (sprev);\
- stk->u.state.state_check = ((state_check_buff != NULL) ? (snum) : 0);\
STACK_INC;\
} while(0)
-#define STACK_PUSH_STATE_CHECK(s,snum) do {\
- if (state_check_buff != NULL) {\
- STACK_ENSURE(1);\
- stk->type = STK_STATE_CHECK_MARK;\
- stk->u.state.pstr = (s);\
- stk->u.state.state_check = (snum);\
- STACK_INC;\
- }\
-} while(0)
-
-#else /* USE_COMBINATION_EXPLOSION_CHECK */
-
-#define ELSE_IF_STATE_CHECK_MARK(stk)
-
-#define STACK_PUSH(stack_type,pat,s,sprev) do {\
- STACK_ENSURE(1);\
+#ifdef ONIG_DEBUG_MATCH
+#define STACK_PUSH_BOTTOM(stack_type,pat) do {\
stk->type = (stack_type);\
- stk->u.state.pcode = (pat);\
- stk->u.state.pstr = (s);\
- stk->u.state.pstr_prev = (sprev);\
+ stk->u.state.pcode = (pat);\
+ stk->u.state.pstr = s;\
+ stk->u.state.pstr_prev = sprev;\
STACK_INC;\
-} while(0)
-
-#define STACK_PUSH_ENSURED(stack_type,pat) do {\
+} while (0)
+#else
+#define STACK_PUSH_BOTTOM(stack_type,pat) do {\
stk->type = (stack_type);\
stk->u.state.pcode = (pat);\
STACK_INC;\
-} while(0)
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */
-
-#define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev)
-#define STACK_PUSH_POS(s,sprev) STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev)
-#define STACK_PUSH_POS_NOT(pat,s,sprev) STACK_PUSH(STK_POS_NOT,pat,s,sprev)
-#define STACK_PUSH_STOP_BT STACK_PUSH_TYPE(STK_STOP_BT)
-#define STACK_PUSH_LOOK_BEHIND_NOT(pat,s,sprev) \
- STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev)
+} while (0)
+#endif
-#define STACK_PUSH_REPEAT(id, pat) do {\
+#define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev)
+#define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev)
+#define STACK_PUSH_POS(s,sprev) \
+ STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,s,sprev)
+#define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \
+ STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev)
+#define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START)
+#define STACK_PUSH_ALT_LOOK_BEHIND_NOT(pat,s,sprev) \
+ STACK_PUSH(STK_ALT_LOOK_BEHIND_NOT,pat,s,sprev)
+
+#define STACK_PUSH_REPEAT(sid, pat) do {\
STACK_ENSURE(1);\
stk->type = STK_REPEAT;\
- stk->u.repeat.num = (id);\
+ stk->zid = (sid);\
stk->u.repeat.pcode = (pat);\
stk->u.repeat.count = 0;\
STACK_INC;\
@@ -630,22 +1540,22 @@ stack_double(int is_alloca, char** arg_alloc_base,
#define STACK_PUSH_MEM_START(mnum, s) do {\
STACK_ENSURE(1);\
stk->type = STK_MEM_START;\
- stk->u.mem.num = (mnum);\
- stk->u.mem.pstr = (s);\
- stk->u.mem.start = mem_start_stk[mnum];\
- stk->u.mem.end = mem_end_stk[mnum];\
- mem_start_stk[mnum] = GET_STACK_INDEX(stk);\
- mem_end_stk[mnum] = INVALID_STACK_INDEX;\
+ stk->zid = (mnum);\
+ stk->u.mem.pstr = (s);\
+ stk->u.mem.prev_start = mem_start_stk[mnum];\
+ stk->u.mem.prev_end = mem_end_stk[mnum];\
+ mem_start_stk[mnum] = GET_STACK_INDEX(stk);\
+ mem_end_stk[mnum] = INVALID_STACK_INDEX;\
STACK_INC;\
} while(0)
#define STACK_PUSH_MEM_END(mnum, s) do {\
STACK_ENSURE(1);\
stk->type = STK_MEM_END;\
- stk->u.mem.num = (mnum);\
- stk->u.mem.pstr = (s);\
- stk->u.mem.start = mem_start_stk[mnum];\
- stk->u.mem.end = mem_end_stk[mnum];\
+ stk->zid = (mnum);\
+ stk->u.mem.pstr = (s);\
+ stk->u.mem.prev_start = mem_start_stk[mnum];\
+ stk->u.mem.prev_end = mem_end_stk[mnum];\
mem_end_stk[mnum] = GET_STACK_INDEX(stk);\
STACK_INC;\
} while(0)
@@ -653,7 +1563,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
#define STACK_PUSH_MEM_END_MARK(mnum) do {\
STACK_ENSURE(1);\
stk->type = STK_MEM_END_MARK;\
- stk->u.mem.num = (mnum);\
+ stk->zid = (mnum);\
STACK_INC;\
} while(0)
@@ -663,10 +1573,10 @@ stack_double(int is_alloca, char** arg_alloc_base,
while (k > stk_base) {\
k--;\
if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \
- && k->u.mem.num == (mnum)) {\
+ && k->zid == (mnum)) {\
level++;\
}\
- else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\
+ else if (k->type == STK_MEM_START && k->zid == (mnum)) {\
if (level == 0) break;\
level--;\
}\
@@ -691,18 +1601,18 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
} while(0)
-#define STACK_PUSH_NULL_CHECK_START(cnum, s) do {\
+#define STACK_PUSH_EMPTY_CHECK_START(cnum, s) do {\
STACK_ENSURE(1);\
- stk->type = STK_NULL_CHECK_START;\
- stk->u.null_check.num = (cnum);\
- stk->u.null_check.pstr = (s);\
+ stk->type = STK_EMPTY_CHECK_START;\
+ stk->zid = (cnum);\
+ stk->u.empty_check.pstr = (s);\
STACK_INC;\
} while(0)
-#define STACK_PUSH_NULL_CHECK_END(cnum) do {\
+#define STACK_PUSH_EMPTY_CHECK_END(cnum) do {\
STACK_ENSURE(1);\
- stk->type = STK_NULL_CHECK_END;\
- stk->u.null_check.num = (cnum);\
+ stk->type = STK_EMPTY_CHECK_END;\
+ stk->zid = (cnum);\
STACK_INC;\
} while(0)
@@ -719,6 +1629,115 @@ stack_double(int is_alloca, char** arg_alloc_base,
STACK_INC;\
} while(0)
+#define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\
+ STACK_ENSURE(1);\
+ stk->type = STK_SAVE_VAL;\
+ stk->zid = (sid);\
+ stk->u.val.type = (stype);\
+ stk->u.val.v = (UChar* )(sval);\
+ STACK_INC;\
+} while(0)
+
+#define STACK_PUSH_SAVE_VAL_WITH_SPREV(sid, stype, sval) do {\
+ STACK_ENSURE(1);\
+ stk->type = STK_SAVE_VAL;\
+ stk->zid = (sid);\
+ stk->u.val.type = (stype);\
+ stk->u.val.v = (UChar* )(sval);\
+ stk->u.val.v2 = sprev;\
+ STACK_INC;\
+} while(0)
+
+#define STACK_GET_SAVE_VAL_TYPE_LAST(stype, sval) do {\
+ StackType *k = stk;\
+ while (k > stk_base) {\
+ k--;\
+ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST"); \
+ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)) {\
+ (sval) = k->u.val.v;\
+ break;\
+ }\
+ }\
+} while (0)
+
+#define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval) do { \
+ int level = 0;\
+ StackType *k = stk;\
+ while (k > stk_base) {\
+ k--;\
+ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \
+ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\
+ && k->zid == (sid)) {\
+ if (level == 0) {\
+ (sval) = k->u.val.v;\
+ break;\
+ }\
+ }\
+ else if (k->type == STK_CALL_FRAME)\
+ level--;\
+ else if (k->type == STK_RETURN)\
+ level++;\
+ }\
+} while (0)
+
+#define STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(stype, sid, sval) do { \
+ int level = 0;\
+ StackType *k = stk;\
+ while (k > stk_base) {\
+ k--;\
+ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \
+ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\
+ && k->zid == (sid)) {\
+ if (level == 0) {\
+ (sval) = k->u.val.v;\
+ sprev = k->u.val.v2;\
+ break;\
+ }\
+ }\
+ else if (k->type == STK_CALL_FRAME)\
+ level--;\
+ else if (k->type == STK_RETURN)\
+ level++;\
+ }\
+} while (0)
+
+#define STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM(stype, sid, sval, stk_from) do { \
+ int level = 0;\
+ StackType *k = (stk_from);\
+ while (k > stk_base) {\
+ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM"); \
+ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\
+ && k->u.val.id == (sid)) {\
+ if (level == 0) {\
+ (sval) = k->u.val.v;\
+ break;\
+ }\
+ }\
+ else if (k->type == STK_CALL_FRAME)\
+ level--;\
+ else if (k->type == STK_RETURN)\
+ level++;\
+ k--;\
+ }\
+} while (0)
+
+#define STACK_PUSH_CALLOUT_CONTENTS(anum, func) do {\
+ STACK_ENSURE(1);\
+ stk->type = STK_CALLOUT;\
+ stk->zid = ONIG_NON_NAME_ID;\
+ stk->u.callout.num = (anum);\
+ stk->u.callout.func = (func);\
+ STACK_INC;\
+} while(0)
+
+#define STACK_PUSH_CALLOUT_NAME(aid, anum, func) do {\
+ STACK_ENSURE(1);\
+ stk->type = STK_CALLOUT;\
+ stk->zid = (aid);\
+ stk->u.callout.num = (anum);\
+ stk->u.callout.func = (func);\
+ STACK_INC;\
+} while(0)
#ifdef ONIG_DEBUG
#define STACK_BASE_CHECK(p, at) \
@@ -735,6 +1754,16 @@ stack_double(int is_alloca, char** arg_alloc_base,
STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \
} while(0)
+
+#ifdef USE_CALLOUT
+#define POP_CALLOUT_CASE \
+ else if (stk->type == STK_CALLOUT) {\
+ RETRACTION_CALLOUT(stk->u.callout.func, stk->zid, stk->u.callout.num, msa->mp->callout_user_data);\
+ }
+#else
+#define POP_CALLOUT_CASE
+#endif
+
#define STACK_POP do {\
switch (pop_level) {\
case STACK_POP_LEVEL_FREE:\
@@ -742,7 +1771,6 @@ stack_double(int is_alloca, char** arg_alloc_base,
stk--;\
STACK_BASE_CHECK(stk, "STACK_POP"); \
if ((stk->type & STK_MASK_POP_USED) != 0) break;\
- ELSE_IF_STATE_CHECK_MARK(stk);\
}\
break;\
case STACK_POP_LEVEL_MEM_START:\
@@ -751,10 +1779,9 @@ stack_double(int is_alloca, char** arg_alloc_base,
STACK_BASE_CHECK(stk, "STACK_POP 2"); \
if ((stk->type & STK_MASK_POP_USED) != 0) break;\
else if (stk->type == STK_MEM_START) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
+ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\
+ mem_end_stk[stk->zid] = stk->u.mem.prev_end;\
}\
- ELSE_IF_STATE_CHECK_MARK(stk);\
}\
break;\
default:\
@@ -762,136 +1789,108 @@ stack_double(int is_alloca, char** arg_alloc_base,
stk--;\
STACK_BASE_CHECK(stk, "STACK_POP 3"); \
if ((stk->type & STK_MASK_POP_USED) != 0) break;\
- else if (stk->type == STK_MEM_START) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
- }\
- else if (stk->type == STK_REPEAT_INC) {\
- STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
- }\
- else if (stk->type == STK_MEM_END) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
+ else if ((stk->type & STK_MASK_POP_HANDLED) != 0) {\
+ if (stk->type == STK_MEM_START) {\
+ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\
+ mem_end_stk[stk->zid] = stk->u.mem.prev_end;\
+ }\
+ else if (stk->type == STK_REPEAT_INC) {\
+ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
+ }\
+ else if (stk->type == STK_MEM_END) {\
+ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\
+ mem_end_stk[stk->zid] = stk->u.mem.prev_end;\
+ }\
+ POP_CALLOUT_CASE\
}\
- ELSE_IF_STATE_CHECK_MARK(stk);\
}\
break;\
}\
} while(0)
-#define STACK_POP_TIL_POS_NOT do {\
+#define POP_TIL_BODY(aname, til_type) do {\
while (1) {\
stk--;\
- STACK_BASE_CHECK(stk, "STACK_POP_TIL_POS_NOT"); \
- if (stk->type == STK_POS_NOT) break;\
- else if (stk->type == STK_MEM_START) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
- }\
- else if (stk->type == STK_REPEAT_INC) {\
- STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
- }\
- else if (stk->type == STK_MEM_END) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
+ STACK_BASE_CHECK(stk, (aname));\
+ if ((stk->type & STK_MASK_POP_HANDLED_TIL) != 0) {\
+ if (stk->type == (til_type)) break;\
+ else {\
+ if (stk->type == STK_MEM_START) {\
+ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\
+ mem_end_stk[stk->zid] = stk->u.mem.prev_end;\
+ }\
+ else if (stk->type == STK_REPEAT_INC) {\
+ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
+ }\
+ else if (stk->type == STK_MEM_END) {\
+ mem_start_stk[stk->zid] = stk->u.mem.prev_start;\
+ mem_end_stk[stk->zid] = stk->u.mem.prev_end;\
+ }\
+ /* Don't call callout here because negation of total success by (?!..) (?<!..) */\
+ }\
}\
- ELSE_IF_STATE_CHECK_MARK(stk);\
}\
} while(0)
-#define STACK_POP_TIL_LOOK_BEHIND_NOT do {\
- while (1) {\
- stk--;\
- STACK_BASE_CHECK(stk, "STACK_POP_TIL_LOOK_BEHIND_NOT"); \
- if (stk->type == STK_LOOK_BEHIND_NOT) break;\
- else if (stk->type == STK_MEM_START) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
- }\
- else if (stk->type == STK_REPEAT_INC) {\
- STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\
- }\
- else if (stk->type == STK_MEM_END) {\
- mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\
- mem_end_stk[stk->u.mem.num] = stk->u.mem.end;\
- }\
- ELSE_IF_STATE_CHECK_MARK(stk);\
- }\
+#define STACK_POP_TIL_ALT_PREC_READ_NOT do {\
+ POP_TIL_BODY("STACK_POP_TIL_ALT_PREC_READ_NOT", STK_ALT_PREC_READ_NOT);\
} while(0)
-#define STACK_POS_END(k) do {\
- k = stk;\
- while (1) {\
- k--;\
- STACK_BASE_CHECK(k, "STACK_POS_END"); \
- if (IS_TO_VOID_TARGET(k)) {\
- k->type = STK_VOID;\
- }\
- else if (k->type == STK_POS) {\
- k->type = STK_VOID;\
- break;\
- }\
- }\
+#define STACK_POP_TIL_ALT_LOOK_BEHIND_NOT do {\
+ POP_TIL_BODY("STACK_POP_TIL_ALT_LOOK_BEHIND_NOT", STK_ALT_LOOK_BEHIND_NOT);\
} while(0)
-#define STACK_STOP_BT_END do {\
- OnigStackType *k = stk;\
+
+#define STACK_EXEC_TO_VOID(k) do {\
+ k = stk;\
while (1) {\
k--;\
- STACK_BASE_CHECK(k, "STACK_STOP_BT_END"); \
+ STACK_BASE_CHECK(k, "STACK_EXEC_TO_VOID"); \
if (IS_TO_VOID_TARGET(k)) {\
+ if (k->type == STK_TO_VOID_START) {\
+ k->type = STK_VOID;\
+ break;\
+ }\
k->type = STK_VOID;\
}\
- else if (k->type == STK_STOP_BT) {\
- k->type = STK_VOID;\
- break;\
- }\
}\
} while(0)
-#define STACK_NULL_CHECK(isnull,id,s) do {\
- OnigStackType* k = stk;\
+#define STACK_EMPTY_CHECK(isnull,sid,s) do {\
+ StackType* k = stk;\
while (1) {\
k--;\
- STACK_BASE_CHECK(k, "STACK_NULL_CHECK"); \
- if (k->type == STK_NULL_CHECK_START) {\
- if (k->u.null_check.num == (id)) {\
- (isnull) = (k->u.null_check.pstr == (s));\
+ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK"); \
+ if (k->type == STK_EMPTY_CHECK_START) {\
+ if (k->zid == (sid)) {\
+ (isnull) = (k->u.empty_check.pstr == (s));\
break;\
}\
}\
}\
} while(0)
-#define STACK_NULL_CHECK_REC(isnull,id,s) do {\
- int level = 0;\
- OnigStackType* k = stk;\
- while (1) {\
- k--;\
- STACK_BASE_CHECK(k, "STACK_NULL_CHECK_REC"); \
- if (k->type == STK_NULL_CHECK_START) {\
- if (k->u.null_check.num == (id)) {\
- if (level == 0) {\
- (isnull) = (k->u.null_check.pstr == (s));\
- break;\
- }\
- else level--;\
- }\
- }\
- else if (k->type == STK_NULL_CHECK_END) {\
- level++;\
- }\
+#define STACK_MEM_START_GET_PREV_END_ADDR(k /* STK_MEM_START*/, reg, addr) do {\
+ if (k->u.mem.prev_end == INVALID_STACK_INDEX) {\
+ (addr) = 0;\
}\
-} while(0)
+ else {\
+ if (MEM_STATUS_AT((reg)->bt_mem_end, k->zid))\
+ (addr) = STACK_AT(k->u.mem.prev_end)->u.mem.pstr;\
+ else\
+ (addr) = (UChar* )k->u.mem.prev_end;\
+ }\
+} while (0)
-#define STACK_NULL_CHECK_MEMST(isnull,id,s,reg) do {\
- OnigStackType* k = stk;\
+#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+#define STACK_EMPTY_CHECK_MEM(isnull,sid,s,reg) do {\
+ StackType* k = stk;\
while (1) {\
k--;\
- STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST"); \
- if (k->type == STK_NULL_CHECK_START) {\
- if (k->u.null_check.num == (id)) {\
- if (k->u.null_check.pstr != (s)) {\
+ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEM"); \
+ if (k->type == STK_EMPTY_CHECK_START) {\
+ if (k->zid == (sid)) {\
+ if (k->u.empty_check.pstr != (s)) {\
(isnull) = 0;\
break;\
}\
@@ -900,14 +1899,11 @@ stack_double(int is_alloca, char** arg_alloc_base,
(isnull) = 1;\
while (k < stk) {\
if (k->type == STK_MEM_START) {\
- if (k->u.mem.end == INVALID_STACK_INDEX) {\
+ STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
+ if (endp == 0) {\
(isnull) = 0; break;\
}\
- if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\
- endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\
- else\
- endp = (UChar* )k->u.mem.end;\
- if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\
+ else if (STACK_AT(k->u.mem.prev_start)->u.mem.pstr != endp) {\
(isnull) = 0; break;\
}\
else if (endp != s) {\
@@ -916,23 +1912,23 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
k++;\
}\
- break;\
+ break;\
}\
}\
}\
}\
} while(0)
-#define STACK_NULL_CHECK_MEMST_REC(isnull,id,s,reg) do {\
+#define STACK_EMPTY_CHECK_MEM_REC(isnull,sid,s,reg) do {\
int level = 0;\
- OnigStackType* k = stk;\
+ StackType* k = stk;\
while (1) {\
k--;\
- STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST_REC"); \
- if (k->type == STK_NULL_CHECK_START) {\
- if (k->u.null_check.num == (id)) {\
+ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEM_REC");\
+ if (k->type == STK_EMPTY_CHECK_START) {\
+ if (k->zid == (sid)) {\
if (level == 0) {\
- if (k->u.null_check.pstr != (s)) {\
+ if (k->u.empty_check.pstr != (s)) {\
(isnull) = 0;\
break;\
}\
@@ -941,23 +1937,28 @@ stack_double(int is_alloca, char** arg_alloc_base,
(isnull) = 1;\
while (k < stk) {\
if (k->type == STK_MEM_START) {\
- if (k->u.mem.end == INVALID_STACK_INDEX) {\
- (isnull) = 0; break;\
- }\
- if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\
- endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\
- else\
- endp = (UChar* )k->u.mem.end;\
- if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\
- (isnull) = 0; break;\
- }\
- else if (endp != s) {\
- (isnull) = -1; /* empty, but position changed */ \
+ if (level == 0) {\
+ STACK_MEM_START_GET_PREV_END_ADDR(k, reg, endp);\
+ if (endp == 0) {\
+ (isnull) = 0; break;\
+ }\
+ else if (STACK_AT(k->u.mem.prev_start)->u.mem.pstr != endp) { \
+ (isnull) = 0; break;\
+ }\
+ else if (endp != s) {\
+ (isnull) = -1; /* empty, but position changed */\
+ }\
}\
}\
+ else if (k->type == STK_EMPTY_CHECK_START) {\
+ if (k->zid == (sid)) level++;\
+ }\
+ else if (k->type == STK_EMPTY_CHECK_END) {\
+ if (k->zid == (sid)) level--;\
+ }\
k++;\
}\
- break;\
+ break;\
}\
}\
else {\
@@ -965,13 +1966,35 @@ stack_double(int is_alloca, char** arg_alloc_base,
}\
}\
}\
- else if (k->type == STK_NULL_CHECK_END) {\
- if (k->u.null_check.num == (id)) level++;\
+ else if (k->type == STK_EMPTY_CHECK_END) {\
+ if (k->zid == (sid)) level++;\
+ }\
+ }\
+} while(0)
+#else
+#define STACK_EMPTY_CHECK_REC(isnull,id,s) do {\
+ int level = 0;\
+ StackType* k = stk;\
+ while (1) {\
+ k--;\
+ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_REC"); \
+ if (k->type == STK_EMPTY_CHECK_START) {\
+ if (k->u.empty_check.num == (id)) {\
+ if (level == 0) {\
+ (isnull) = (k->u.empty_check.pstr == (s));\
+ break;\
+ }\
+ }\
+ level--;\
+ }\
+ else if (k->type == STK_EMPTY_CHECK_END) {\
+ level++;\
}\
}\
} while(0)
+#endif /* USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT */
-#define STACK_GET_REPEAT(id, k) do {\
+#define STACK_GET_REPEAT(sid, k) do {\
int level = 0;\
k = stk;\
while (1) {\
@@ -979,7 +2002,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \
if (k->type == STK_REPEAT) {\
if (level == 0) {\
- if (k->u.repeat.num == (id)) {\
+ if (k->zid == (sid)) {\
break;\
}\
}\
@@ -991,7 +2014,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
#define STACK_RETURN(addr) do {\
int level = 0;\
- OnigStackType* k = stk;\
+ StackType* k = stk;\
while (1) {\
k--;\
STACK_BASE_CHECK(k, "STACK_RETURN"); \
@@ -1020,7 +2043,7 @@ stack_double(int is_alloca, char** arg_alloc_base,
} while(0)
static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
- UChar* s1, UChar** ps2, int mblen)
+ UChar* s1, UChar** ps2, int mblen)
{
UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN];
UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN];
@@ -1065,33 +2088,28 @@ static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,
#define IS_EMPTY_STR (str == end)
-#define ON_STR_BEGIN(s) ((s) == str)
-#define ON_STR_END(s) ((s) == end)
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
+#define ON_STR_BEGIN(s) ((s) == str)
+#define ON_STR_END(s) ((s) == end)
#define DATA_ENSURE_CHECK1 (s < right_range)
#define DATA_ENSURE_CHECK(n) (s + (n) <= right_range)
#define DATA_ENSURE(n) if (s + (n) > right_range) goto fail
-#else
-#define DATA_ENSURE_CHECK1 (s < end)
-#define DATA_ENSURE_CHECK(n) (s + (n) <= end)
-#define DATA_ENSURE(n) if (s + (n) > end) goto fail
-#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */
+#define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range
#ifdef USE_CAPTURE_HISTORY
static int
-make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp,
- OnigStackType* stk_top, UChar* str, regex_t* reg)
+make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp,
+ StackType* stk_top, UChar* str, regex_t* reg)
{
int n, r;
OnigCaptureTreeNode* child;
- OnigStackType* k = *kp;
+ StackType* k = *kp;
while (k < stk_top) {
if (k->type == STK_MEM_START) {
- n = k->u.mem.num;
+ n = k->zid;
if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP &&
- BIT_STATUS_AT(reg->capture_history, n) != 0) {
+ MEM_STATUS_AT(reg->capture_history, n) != 0) {
child = history_node_new();
CHECK_NULL_RETURN_MEMERR(child);
child->group = n;
@@ -1107,7 +2125,7 @@ make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp,
}
}
else if (k->type == STK_MEM_END) {
- if (k->u.mem.num == node->group) {
+ if (k->zid == node->group) {
node->end = (int )(k->u.mem.pstr - str);
*kp = k;
return 0;
@@ -1133,14 +2151,16 @@ static int mem_is_in_memp(int mem, int num, UChar* memp)
return 0;
}
-static int backref_match_at_nested_level(regex_t* reg
- , OnigStackType* top, OnigStackType* stk_base
- , int ignore_case, int case_fold_flag
- , int nest, int mem_num, UChar* memp, UChar** s, const UChar* send)
+static int
+backref_match_at_nested_level(regex_t* reg,
+ StackType* top, StackType* stk_base,
+ int ignore_case, int case_fold_flag,
+ int nest, int mem_num, UChar* memp,
+ UChar** s, const UChar* send)
{
UChar *ss, *p, *pstart, *pend = NULL_UCHARP;
int level;
- OnigStackType* k;
+ StackType* k;
level = 0;
k = top;
@@ -1154,9 +2174,9 @@ static int backref_match_at_nested_level(regex_t* reg
}
else if (level == nest) {
if (k->type == STK_MEM_START) {
- if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
+ if (mem_is_in_memp(k->zid, mem_num, memp)) {
pstart = k->u.mem.pstr;
- if (pend != NULL_UCHARP) {
+ if (IS_NOT_NULL(pend)) {
if (pend - pstart > send - *s) return 0; /* or goto next_mem; */
p = pstart;
ss = *s;
@@ -1178,7 +2198,7 @@ static int backref_match_at_nested_level(regex_t* reg
}
}
else if (k->type == STK_MEM_END) {
- if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
+ if (mem_is_in_memp(k->zid, mem_num, memp)) {
pend = k->u.mem.pstr;
}
}
@@ -1188,6 +2208,37 @@ static int backref_match_at_nested_level(regex_t* reg
return 0;
}
+
+static int
+backref_check_at_nested_level(regex_t* reg,
+ StackType* top, StackType* stk_base,
+ int nest, int mem_num, UChar* memp)
+{
+ int level;
+ StackType* k;
+
+ level = 0;
+ k = top;
+ k--;
+ while (k >= stk_base) {
+ if (k->type == STK_CALL_FRAME) {
+ level--;
+ }
+ else if (k->type == STK_RETURN) {
+ level++;
+ }
+ else if (level == nest) {
+ if (k->type == STK_MEM_END) {
+ if (mem_is_in_memp(k->zid, mem_num, memp)) {
+ return 1;
+ }
+ }
+ }
+ k--;
+ }
+
+ return 0;
+}
#endif /* USE_BACKREF_WITH_LEVEL */
@@ -1222,14 +2273,14 @@ static int OpCurr = OP_FINISH;
static int OpPrevTarget = OP_FAIL;
static int MaxStackDepth = 0;
-#define MOP_IN(opcode) do {\
+#define SOP_IN(opcode) do {\
if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\
OpCurr = opcode;\
OpCounter[opcode]++;\
GETTIME(ts);\
} while(0)
-#define MOP_OUT do {\
+#define SOP_OUT do {\
GETTIME(te);\
OpTime[OpCurr] += TIMEDIFF(te, ts);\
} while(0)
@@ -1253,9 +2304,9 @@ onig_print_statistics(FILE* f)
r = fprintf(f, " count prev time\n");
if (r < 0) return -1;
- for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {
+ for (i = 0; OpInfo[i].opcode >= 0; i++) {
r = fprintf(f, "%8d: %8d: %10ld: %s\n",
- OpCounter[i], OpPrevCounter[i], OpTime[i], OnigOpInfo[i].name);
+ OpCounter[i], OpPrevCounter[i], OpTime[i], OpInfo[i].name);
if (r < 0) return -1;
}
r = fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth);
@@ -1273,8 +2324,8 @@ onig_print_statistics(FILE* f)
#else
#define STACK_INC stk++
-#define MOP_IN(opcode)
-#define MOP_OUT
+#define SOP_IN(opcode)
+#define SOP_OUT
#endif
@@ -1290,10 +2341,8 @@ typedef struct {
/* if sstart == str then set sprev to NULL. */
static int
match_at(regex_t* reg, const UChar* str, const UChar* end,
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
- const UChar* right_range,
-#endif
- const UChar* sstart, UChar* sprev, OnigMatchArg* msa)
+ const UChar* in_right_range, const UChar* sstart, UChar* sprev,
+ MatchArg* msa)
{
static UChar FinishCode[] = { OP_FINISH };
@@ -1302,24 +2351,37 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
MemNumType mem;
RelAddrType addr;
UChar *s, *q, *sbegin;
+ UChar *right_range;
int is_alloca;
char *alloc_base;
- OnigStackType *stk_base, *stk, *stk_end;
- OnigStackType *stkp; /* used as any purpose. */
- OnigStackIndex si;
- OnigStackIndex *repeat_stk;
- OnigStackIndex *mem_start_stk, *mem_end_stk;
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- int scv;
- unsigned char* state_check_buff = msa->state_check_buff;
- int num_comb_exp_check = reg->num_comb_exp_check;
+ StackType *stk_base, *stk, *stk_end;
+ StackType *stkp; /* used as any purpose. */
+ StackIndex si;
+ StackIndex *repeat_stk;
+ StackIndex *mem_start_stk, *mem_end_stk;
+ UChar* keep;
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ unsigned long retry_limit_in_match;
+ unsigned long retry_in_match_counter;
+#endif
+
+#ifdef USE_CALLOUT
+ int of;
#endif
+
UChar *p = reg->p;
OnigOptionType option = reg->options;
OnigEncoding encode = reg->enc;
OnigCaseFoldType case_fold_flag = reg->case_fold_flag;
- //n = reg->num_repeat + reg->num_mem * 2;
+#ifdef USE_CALLOUT
+ msa->mp->match_at_call_counter++;
+#endif
+
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ retry_limit_in_match = msa->retry_limit_in_match;
+#endif
+
pop_level = reg->stack_pop_level;
num_mem = reg->num_mem;
STACK_INIT(INIT_MATCH_STACK_SIZE);
@@ -1329,21 +2391,32 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
#ifdef ONIG_DEBUG_MATCH
- fprintf(stderr, "match_at: str: %d, end: %d, start: %d, sprev: %d\n",
- (int )str, (int )end, (int )sstart, (int )sprev);
+ fprintf(stderr, "match_at: str: %p, end: %p, start: %p, sprev: %p\n",
+ str, end, sstart, sprev);
fprintf(stderr, "size: %d, start offset: %d\n",
- (int )(end - str), (int )(sstart - str));
+ (int )(end - str), (int )(sstart - str));
#endif
- STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */
best_len = ONIG_MISMATCH;
- s = (UChar* )sstart;
+ keep = s = (UChar* )sstart;
+ STACK_PUSH_BOTTOM(STK_ALT, FinishCode); /* bottom stack */
+ INIT_RIGHT_RANGE;
+
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ retry_in_match_counter = 0;
+#endif
+
while (1) {
#ifdef ONIG_DEBUG_MATCH
{
+ static unsigned int counter = 1;
+
UChar *q, *bp, buf[50];
int len;
- fprintf(stderr, "%4d> \"", (int )(s - str));
+ fprintf(stderr, "%7u: %7ld: %4d> \"",
+ counter, GET_STACK_INDEX(stk), (int )(s - str));
+ counter++;
+
bp = buf;
for (i = 0, q = s; i < 7 && q < end; i++) {
len = enclen(encode, q);
@@ -1353,16 +2426,21 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
else { xmemcpy(bp, "\"", 1); bp += 1; }
*bp = 0;
fputs((char* )buf, stderr);
+
for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);
- onig_print_compiled_byte_code(stderr, p, NULL, encode);
+ if (p == FinishCode)
+ fprintf(stderr, "----: ");
+ else
+ fprintf(stderr, "%4d: ", (int )(p - reg->p));
+ onig_print_compiled_byte_code(stderr, p, NULL, reg->p, encode);
fprintf(stderr, "\n");
}
#endif
sbegin = s;
switch (*p++) {
- case OP_END: MOP_IN(OP_END);
- n = s - sstart;
+ case OP_END: SOP_IN(OP_END);
+ n = (int )(s - sstart);
if (n > best_len) {
OnigRegion* region;
#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
@@ -1378,22 +2456,25 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
best_len = n;
region = msa->region;
if (region) {
+ if (keep > s) keep = s;
+
#ifdef USE_POSIX_API_REGION_OPTION
if (IS_POSIX_REGION(msa->options)) {
posix_regmatch_t* rmt = (posix_regmatch_t* )region;
- rmt[0].rm_so = sstart - str;
- rmt[0].rm_eo = s - str;
+ rmt[0].rm_so = (regoff_t )(keep - str);
+ rmt[0].rm_eo = (regoff_t )(s - str);
for (i = 1; i <= num_mem; i++) {
if (mem_end_stk[i] != INVALID_STACK_INDEX) {
- if (BIT_STATUS_AT(reg->bt_mem_start, i))
- rmt[i].rm_so = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
+ if (MEM_STATUS_AT(reg->bt_mem_start, i))
+ rmt[i].rm_so = (regoff_t )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);
else
- rmt[i].rm_so = (UChar* )((void* )(mem_start_stk[i])) - str;
+ rmt[i].rm_so = (regoff_t )((UChar* )((void* )(mem_start_stk[i])) - str);
- rmt[i].rm_eo = (BIT_STATUS_AT(reg->bt_mem_end, i)
- ? STACK_AT(mem_end_stk[i])->u.mem.pstr
- : (UChar* )((void* )mem_end_stk[i])) - str;
+ rmt[i].rm_eo = (regoff_t )((MEM_STATUS_AT(reg->bt_mem_end, i)
+ ? STACK_AT(mem_end_stk[i])->u.mem.pstr
+ : (UChar* )((void* )mem_end_stk[i]))
+ - str);
}
else {
rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;
@@ -1402,18 +2483,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
else {
#endif /* USE_POSIX_API_REGION_OPTION */
- region->beg[0] = sstart - str;
- region->end[0] = s - str;
+ region->beg[0] = (int )(keep - str);
+ region->end[0] = (int )(s - str);
for (i = 1; i <= num_mem; i++) {
if (mem_end_stk[i] != INVALID_STACK_INDEX) {
- if (BIT_STATUS_AT(reg->bt_mem_start, i))
- region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
+ if (MEM_STATUS_AT(reg->bt_mem_start, i))
+ region->beg[i] = (int )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);
else
- region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str;
+ region->beg[i] = (int )((UChar* )((void* )mem_start_stk[i]) - str);
- region->end[i] = (BIT_STATUS_AT(reg->bt_mem_end, i)
- ? STACK_AT(mem_end_stk[i])->u.mem.pstr
- : (UChar* )((void* )mem_end_stk[i])) - str;
+ region->end[i] = (int )((MEM_STATUS_AT(reg->bt_mem_end, i)
+ ? STACK_AT(mem_end_stk[i])->u.mem.pstr
+ : (UChar* )((void* )mem_end_stk[i])) - str);
}
else {
region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
@@ -1435,8 +2516,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
node->group = 0;
- node->beg = sstart - str;
- node->end = s - str;
+ node->beg = (int )(keep - str);
+ node->end = (int )(s - str);
stkp = stk_base;
r = make_capture_history_tree(region->history_root, &stkp,
@@ -1456,7 +2537,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
end_best_len:
#endif
- MOP_OUT;
+ SOP_OUT;
if (IS_FIND_CONDITION(option)) {
if (IS_FIND_NOT_EMPTY(option) && s == sstart) {
@@ -1472,14 +2553,14 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
goto finish;
break;
- case OP_EXACT1: MOP_IN(OP_EXACT1);
+ case OP_EXACT1: SOP_IN(OP_EXACT1);
DATA_ENSURE(1);
if (*p != *s) goto fail;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_EXACT1_IC: MOP_IN(OP_EXACT1_IC);
+ case OP_EXACT1_IC: SOP_IN(OP_EXACT1_IC);
{
int len;
UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
@@ -1498,21 +2579,21 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; q++;
}
}
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_EXACT2: MOP_IN(OP_EXACT2);
+ case OP_EXACT2: SOP_IN(OP_EXACT2);
DATA_ENSURE(2);
if (*p != *s) goto fail;
p++; s++;
if (*p != *s) goto fail;
sprev = s;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACT3: MOP_IN(OP_EXACT3);
+ case OP_EXACT3: SOP_IN(OP_EXACT3);
DATA_ENSURE(3);
if (*p != *s) goto fail;
p++; s++;
@@ -1521,11 +2602,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (*p != *s) goto fail;
sprev = s;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACT4: MOP_IN(OP_EXACT4);
+ case OP_EXACT4: SOP_IN(OP_EXACT4);
DATA_ENSURE(4);
if (*p != *s) goto fail;
p++; s++;
@@ -1536,11 +2617,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (*p != *s) goto fail;
sprev = s;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACT5: MOP_IN(OP_EXACT5);
+ case OP_EXACT5: SOP_IN(OP_EXACT5);
DATA_ENSURE(5);
if (*p != *s) goto fail;
p++; s++;
@@ -1553,22 +2634,22 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (*p != *s) goto fail;
sprev = s;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTN: MOP_IN(OP_EXACTN);
+ case OP_EXACTN: SOP_IN(OP_EXACTN);
GET_LENGTH_INC(tlen, p);
DATA_ENSURE(tlen);
while (tlen-- > 0) {
if (*p++ != *s++) goto fail;
}
sprev = s - 1;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTN_IC: MOP_IN(OP_EXACTN_IC);
+ case OP_EXACTN_IC: SOP_IN(OP_EXACTN_IC);
{
int len;
UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
@@ -1592,20 +2673,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTMB2N1: MOP_IN(OP_EXACTMB2N1);
+ case OP_EXACTMB2N1: SOP_IN(OP_EXACTMB2N1);
DATA_ENSURE(2);
if (*p != *s) goto fail;
p++; s++;
if (*p != *s) goto fail;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_EXACTMB2N2: MOP_IN(OP_EXACTMB2N2);
+ case OP_EXACTMB2N2: SOP_IN(OP_EXACTMB2N2);
DATA_ENSURE(4);
if (*p != *s) goto fail;
p++; s++;
@@ -1616,11 +2697,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; s++;
if (*p != *s) goto fail;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTMB2N3: MOP_IN(OP_EXACTMB2N3);
+ case OP_EXACTMB2N3: SOP_IN(OP_EXACTMB2N3);
DATA_ENSURE(6);
if (*p != *s) goto fail;
p++; s++;
@@ -1635,11 +2716,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; s++;
if (*p != *s) goto fail;
p++; s++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTMB2N: MOP_IN(OP_EXACTMB2N);
+ case OP_EXACTMB2N: SOP_IN(OP_EXACTMB2N);
GET_LENGTH_INC(tlen, p);
DATA_ENSURE(tlen * 2);
while (tlen-- > 0) {
@@ -1649,11 +2730,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; s++;
}
sprev = s - 2;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTMB3N: MOP_IN(OP_EXACTMB3N);
+ case OP_EXACTMB3N: SOP_IN(OP_EXACTMB3N);
GET_LENGTH_INC(tlen, p);
DATA_ENSURE(tlen * 3);
while (tlen-- > 0) {
@@ -1665,11 +2746,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; s++;
}
sprev = s - 3;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_EXACTMBN: MOP_IN(OP_EXACTMBN);
+ case OP_EXACTMBN: SOP_IN(OP_EXACTMBN);
GET_LENGTH_INC(tlen, p); /* mb-len */
GET_LENGTH_INC(tlen2, p); /* string len */
tlen2 *= tlen;
@@ -1679,19 +2760,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p++; s++;
}
sprev = s - tlen;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_CCLASS: MOP_IN(OP_CCLASS);
+ case OP_CCLASS: SOP_IN(OP_CCLASS);
DATA_ENSURE(1);
if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail;
p += SIZE_BITSET;
s += enclen(encode, s); /* OP_CCLASS can match mb-code. \D, \S */
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_MB: MOP_IN(OP_CCLASS_MB);
+ case OP_CCLASS_MB: SOP_IN(OP_CCLASS_MB);
if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail;
cclass_mb:
@@ -1717,10 +2798,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
#endif
}
p += tlen;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_MIX: MOP_IN(OP_CCLASS_MIX);
+ case OP_CCLASS_MIX: SOP_IN(OP_CCLASS_MIX);
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_HEAD(encode, s)) {
p += SIZE_BITSET;
@@ -1735,18 +2816,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p += tlen;
s++;
}
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_NOT: MOP_IN(OP_CCLASS_NOT);
+ case OP_CCLASS_NOT: SOP_IN(OP_CCLASS_NOT);
DATA_ENSURE(1);
if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail;
p += SIZE_BITSET;
s += enclen(encode, s);
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_MB_NOT: MOP_IN(OP_CCLASS_MB_NOT);
+ case OP_CCLASS_MB_NOT: SOP_IN(OP_CCLASS_MB_NOT);
DATA_ENSURE(1);
if (! ONIGENC_IS_MBC_HEAD(encode, s)) {
s++;
@@ -1784,10 +2865,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p += tlen;
cc_mb_not_success:
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_MIX_NOT: MOP_IN(OP_CCLASS_MIX_NOT);
+ case OP_CCLASS_MIX_NOT: SOP_IN(OP_CCLASS_MIX_NOT);
DATA_ENSURE(1);
if (ONIGENC_IS_MBC_HEAD(encode, s)) {
p += SIZE_BITSET;
@@ -1802,10 +2883,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p += tlen;
s++;
}
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_CCLASS_NODE: MOP_IN(OP_CCLASS_NODE);
+#ifdef USE_OP_CCLASS_NODE
+ case OP_CCLASS_NODE: SOP_IN(OP_CCLASS_NODE);
{
OnigCodePoint code;
void *node;
@@ -1821,27 +2903,28 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
code = ONIGENC_MBC_TO_CODE(encode, ss, s);
if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;
}
- MOP_OUT;
+ SOP_OUT;
break;
+#endif
- case OP_ANYCHAR: MOP_IN(OP_ANYCHAR);
+ case OP_ANYCHAR: SOP_IN(OP_ANYCHAR);
DATA_ENSURE(1);
n = enclen(encode, s);
DATA_ENSURE(n);
if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;
s += n;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_ANYCHAR_ML: MOP_IN(OP_ANYCHAR_ML);
+ case OP_ANYCHAR_ML: SOP_IN(OP_ANYCHAR_ML);
DATA_ENSURE(1);
n = enclen(encode, s);
DATA_ENSURE(n);
s += n;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_ANYCHAR_STAR: MOP_IN(OP_ANYCHAR_STAR);
+ case OP_ANYCHAR_STAR: SOP_IN(OP_ANYCHAR_STAR);
while (DATA_ENSURE_CHECK1) {
STACK_PUSH_ALT(p, s, sprev);
n = enclen(encode, s);
@@ -1850,10 +2933,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
sprev = s;
s += n;
}
- MOP_OUT;
+ SOP_OUT;
+ continue;
break;
- case OP_ANYCHAR_ML_STAR: MOP_IN(OP_ANYCHAR_ML_STAR);
+ case OP_ANYCHAR_ML_STAR: SOP_IN(OP_ANYCHAR_ML_STAR);
while (DATA_ENSURE_CHECK1) {
STACK_PUSH_ALT(p, s, sprev);
n = enclen(encode, s);
@@ -1867,10 +2951,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
s++;
}
}
- MOP_OUT;
+ SOP_OUT;
+ continue;
break;
- case OP_ANYCHAR_STAR_PEEK_NEXT: MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
+ case OP_ANYCHAR_STAR_PEEK_NEXT: SOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
while (DATA_ENSURE_CHECK1) {
if (*p == *s) {
STACK_PUSH_ALT(p + 1, s, sprev);
@@ -1882,10 +2967,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
s += n;
}
p++;
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_ANYCHAR_ML_STAR_PEEK_NEXT:MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);
+ case OP_ANYCHAR_ML_STAR_PEEK_NEXT:SOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);
while (DATA_ENSURE_CHECK1) {
if (*p == *s) {
STACK_PUSH_ALT(p + 1, s, sprev);
@@ -1902,186 +2987,201 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
}
p++;
- MOP_OUT;
+ SOP_OUT;
break;
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- case OP_STATE_CHECK_ANYCHAR_STAR: MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR);
- GET_STATE_CHECK_NUM_INC(mem, p);
- while (DATA_ENSURE_CHECK1) {
- STATE_CHECK_VAL(scv, mem);
- if (scv) goto fail;
+ case OP_WORD: SOP_IN(OP_WORD);
+ DATA_ENSURE(1);
+ if (! ONIGENC_IS_MBC_WORD(encode, s, end))
+ goto fail;
- STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
- n = enclen(encode, s);
- DATA_ENSURE(n);
- if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;
- sprev = s;
- s += n;
- }
- MOP_OUT;
+ s += enclen(encode, s);
+ SOP_OUT;
break;
- case OP_STATE_CHECK_ANYCHAR_ML_STAR:
- MOP_IN(OP_STATE_CHECK_ANYCHAR_ML_STAR);
-
- GET_STATE_CHECK_NUM_INC(mem, p);
- while (DATA_ENSURE_CHECK1) {
- STATE_CHECK_VAL(scv, mem);
- if (scv) goto fail;
+ case OP_WORD_ASCII: SOP_IN(OP_WORD_ASCII);
+ DATA_ENSURE(1);
+ if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
+ goto fail;
- STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
- n = enclen(encode, s);
- if (n > 1) {
- DATA_ENSURE(n);
- sprev = s;
- s += n;
- }
- else {
- sprev = s;
- s++;
- }
- }
- MOP_OUT;
+ s += enclen(encode, s);
+ SOP_OUT;
break;
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */
- case OP_WORD: MOP_IN(OP_WORD);
+ case OP_NO_WORD: SOP_IN(OP_NO_WORD);
DATA_ENSURE(1);
- if (! ONIGENC_IS_MBC_WORD(encode, s, end))
+ if (ONIGENC_IS_MBC_WORD(encode, s, end))
goto fail;
s += enclen(encode, s);
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_NOT_WORD: MOP_IN(OP_NOT_WORD);
+ case OP_NO_WORD_ASCII: SOP_IN(OP_NO_WORD_ASCII);
DATA_ENSURE(1);
- if (ONIGENC_IS_MBC_WORD(encode, s, end))
+ if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end))
goto fail;
s += enclen(encode, s);
- MOP_OUT;
+ SOP_OUT;
break;
- case OP_WORD_BOUND: MOP_IN(OP_WORD_BOUND);
- if (ON_STR_BEGIN(s)) {
- DATA_ENSURE(1);
- if (! ONIGENC_IS_MBC_WORD(encode, s, end))
- goto fail;
- }
- else if (ON_STR_END(s)) {
- if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
- }
- else {
- if (ONIGENC_IS_MBC_WORD(encode, s, end)
- == ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
+ case OP_WORD_BOUNDARY: SOP_IN(OP_WORD_BOUNDARY);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); /* ascii_mode */
+
+ if (ON_STR_BEGIN(s)) {
+ DATA_ENSURE(1);
+ if (! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+ goto fail;
+ }
+ else if (ON_STR_END(s)) {
+ if (! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
+ else {
+ if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+ == IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_NOT_WORD_BOUND: MOP_IN(OP_NOT_WORD_BOUND);
- if (ON_STR_BEGIN(s)) {
- if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))
- goto fail;
- }
- else if (ON_STR_END(s)) {
- if (ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
- }
- else {
- if (ONIGENC_IS_MBC_WORD(encode, s, end)
- != ONIGENC_IS_MBC_WORD(encode, sprev, end))
- goto fail;
+ case OP_NO_WORD_BOUNDARY: SOP_IN(OP_NO_WORD_BOUNDARY);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); /* ascii_mode */
+
+ if (ON_STR_BEGIN(s)) {
+ if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode))
+ goto fail;
+ }
+ else if (ON_STR_END(s)) {
+ if (IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
+ else {
+ if (IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)
+ != IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode))
+ goto fail;
+ }
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
#ifdef USE_WORD_BEGIN_END
- case OP_WORD_BEGIN: MOP_IN(OP_WORD_BEGIN);
- if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) {
- if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
- MOP_OUT;
- continue;
+ case OP_WORD_BEGIN: SOP_IN(OP_WORD_BEGIN);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); /* ascii_mode */
+
+ if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+ if (ON_STR_BEGIN(s) || !IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+ SOP_OUT;
+ continue;
+ }
}
}
goto fail;
break;
- case OP_WORD_END: MOP_IN(OP_WORD_END);
- if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
- if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {
- MOP_OUT;
- continue;
+ case OP_WORD_END: SOP_IN(OP_WORD_END);
+ {
+ ModeType mode;
+ GET_MODE_INC(mode, p); /* ascii_mode */
+
+ if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) {
+ if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) {
+ SOP_OUT;
+ continue;
+ }
}
}
goto fail;
break;
#endif
- case OP_BEGIN_BUF: MOP_IN(OP_BEGIN_BUF);
+ case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ SOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) {
+ SOP_OUT;
+ continue;
+ }
+ goto fail;
+ break;
+
+ case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY:
+ SOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY);
+ if (onigenc_egcb_is_break_position(encode, s, sprev, str, end))
+ goto fail;
+
+ SOP_OUT;
+ continue;
+ break;
+
+ case OP_BEGIN_BUF: SOP_IN(OP_BEGIN_BUF);
if (! ON_STR_BEGIN(s)) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_END_BUF: MOP_IN(OP_END_BUF);
+ case OP_END_BUF: SOP_IN(OP_END_BUF);
if (! ON_STR_END(s)) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_BEGIN_LINE: MOP_IN(OP_BEGIN_LINE);
+ case OP_BEGIN_LINE: SOP_IN(OP_BEGIN_LINE);
if (ON_STR_BEGIN(s)) {
if (IS_NOTBOL(msa->options)) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) {
- MOP_OUT;
+ SOP_OUT;
continue;
}
goto fail;
break;
- case OP_END_LINE: MOP_IN(OP_END_LINE);
+ case OP_END_LINE: SOP_IN(OP_END_LINE);
if (ON_STR_END(s)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
#endif
if (IS_NOTEOL(msa->options)) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
}
#endif
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) {
- MOP_OUT;
+ SOP_OUT;
continue;
}
#ifdef USE_CRNL_AS_LINE_TERMINATOR
else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {
- MOP_OUT;
+ SOP_OUT;
continue;
}
#endif
goto fail;
break;
- case OP_SEMI_END_BUF: MOP_IN(OP_SEMI_END_BUF);
+ case OP_SEMI_END_BUF: SOP_IN(OP_SEMI_END_BUF);
if (ON_STR_END(s)) {
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
#endif
if (IS_NOTEOL(msa->options)) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
}
@@ -2089,7 +3189,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) &&
ON_STR_END(s + enclen(encode, s))) {
- MOP_OUT;
+ SOP_OUT;
continue;
}
#ifdef USE_CRNL_AS_LINE_TERMINATOR
@@ -2097,7 +3197,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
UChar* ss = s + enclen(encode, s);
ss += enclen(encode, ss);
if (ON_STR_END(ss)) {
- MOP_OUT;
+ SOP_OUT;
continue;
}
}
@@ -2105,144 +3205,138 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
goto fail;
break;
- case OP_BEGIN_POSITION: MOP_IN(OP_BEGIN_POSITION);
+ case OP_BEGIN_POSITION: SOP_IN(OP_BEGIN_POSITION);
if (s != msa->start)
goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_MEMORY_START_PUSH: MOP_IN(OP_MEMORY_START_PUSH);
+ case OP_MEMORY_START_PUSH: SOP_IN(OP_MEMORY_START_PUSH);
GET_MEMNUM_INC(mem, p);
STACK_PUSH_MEM_START(mem, s);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_MEMORY_START: MOP_IN(OP_MEMORY_START);
+ case OP_MEMORY_START: SOP_IN(OP_MEMORY_START);
GET_MEMNUM_INC(mem, p);
- mem_start_stk[mem] = (OnigStackIndex )((void* )s);
- MOP_OUT;
+ mem_start_stk[mem] = (StackIndex )((void* )s);
+ SOP_OUT;
continue;
break;
- case OP_MEMORY_END_PUSH: MOP_IN(OP_MEMORY_END_PUSH);
+ case OP_MEMORY_END_PUSH: SOP_IN(OP_MEMORY_END_PUSH);
GET_MEMNUM_INC(mem, p);
STACK_PUSH_MEM_END(mem, s);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_MEMORY_END: MOP_IN(OP_MEMORY_END);
+ case OP_MEMORY_END: SOP_IN(OP_MEMORY_END);
GET_MEMNUM_INC(mem, p);
- mem_end_stk[mem] = (OnigStackIndex )((void* )s);
- MOP_OUT;
+ mem_end_stk[mem] = (StackIndex )((void* )s);
+ SOP_OUT;
continue;
break;
-#ifdef USE_SUBEXP_CALL
- case OP_MEMORY_END_PUSH_REC: MOP_IN(OP_MEMORY_END_PUSH_REC);
+#ifdef USE_CALL
+ case OP_MEMORY_END_PUSH_REC: SOP_IN(OP_MEMORY_END_PUSH_REC);
GET_MEMNUM_INC(mem, p);
STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */
STACK_PUSH_MEM_END(mem, s);
mem_start_stk[mem] = GET_STACK_INDEX(stkp);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_MEMORY_END_REC: MOP_IN(OP_MEMORY_END_REC);
+ case OP_MEMORY_END_REC: SOP_IN(OP_MEMORY_END_REC);
GET_MEMNUM_INC(mem, p);
- mem_end_stk[mem] = (OnigStackIndex )((void* )s);
+ mem_end_stk[mem] = (StackIndex )((void* )s);
STACK_GET_MEM_START(mem, stkp);
- if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+ if (MEM_STATUS_AT(reg->bt_mem_start, mem))
mem_start_stk[mem] = GET_STACK_INDEX(stkp);
else
- mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr);
+ mem_start_stk[mem] = (StackIndex )((void* )stkp->u.mem.pstr);
STACK_PUSH_MEM_END_MARK(mem);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
#endif
- case OP_BACKREF1: MOP_IN(OP_BACKREF1);
+ case OP_BACKREF1: SOP_IN(OP_BACKREF1);
mem = 1;
goto backref;
break;
- case OP_BACKREF2: MOP_IN(OP_BACKREF2);
+ case OP_BACKREF2: SOP_IN(OP_BACKREF2);
mem = 2;
goto backref;
break;
- case OP_BACKREFN: MOP_IN(OP_BACKREFN);
+ case OP_BACKREF_N: SOP_IN(OP_BACKREF_N);
GET_MEMNUM_INC(mem, p);
backref:
{
int len;
UChar *pstart, *pend;
- /* if you want to remove following line,
- you should check in parse and compile time. */
- if (mem > num_mem) goto fail;
if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
- if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+ if (MEM_STATUS_AT(reg->bt_mem_start, mem))
pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
else
pstart = (UChar* )((void* )mem_start_stk[mem]);
- pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+ pend = (MEM_STATUS_AT(reg->bt_mem_end, mem)
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
- n = pend - pstart;
+ n = (int )(pend - pstart);
DATA_ENSURE(n);
sprev = s;
STRING_CMP(pstart, s, n);
while (sprev + (len = enclen(encode, sprev)) < s)
sprev += len;
- MOP_OUT;
+ SOP_OUT;
continue;
}
break;
- case OP_BACKREFN_IC: MOP_IN(OP_BACKREFN_IC);
+ case OP_BACKREF_N_IC: SOP_IN(OP_BACKREF_N_IC);
GET_MEMNUM_INC(mem, p);
{
int len;
UChar *pstart, *pend;
- /* if you want to remove following line,
- you should check in parse and compile time. */
- if (mem > num_mem) goto fail;
if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
- if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+ if (MEM_STATUS_AT(reg->bt_mem_start, mem))
pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
else
pstart = (UChar* )((void* )mem_start_stk[mem]);
- pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+ pend = (MEM_STATUS_AT(reg->bt_mem_end, mem)
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
- n = pend - pstart;
+ n = (int )(pend - pstart);
DATA_ENSURE(n);
sprev = s;
STRING_CMP_IC(case_fold_flag, pstart, &s, n);
while (sprev + (len = enclen(encode, sprev)) < s)
sprev += len;
- MOP_OUT;
+ SOP_OUT;
continue;
}
break;
- case OP_BACKREF_MULTI: MOP_IN(OP_BACKREF_MULTI);
+ case OP_BACKREF_MULTI: SOP_IN(OP_BACKREF_MULTI);
{
int len, is_fail;
UChar *pstart, *pend, *swork;
@@ -2254,15 +3348,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
- if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+ if (MEM_STATUS_AT(reg->bt_mem_start, mem))
pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
else
pstart = (UChar* )((void* )mem_start_stk[mem]);
- pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+ pend = (MEM_STATUS_AT(reg->bt_mem_end, mem)
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
- n = pend - pstart;
+ n = (int )(pend - pstart);
DATA_ENSURE(n);
sprev = s;
swork = s;
@@ -2276,12 +3370,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
break; /* success */
}
if (i == tlen) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
}
break;
- case OP_BACKREF_MULTI_IC: MOP_IN(OP_BACKREF_MULTI_IC);
+ case OP_BACKREF_MULTI_IC: SOP_IN(OP_BACKREF_MULTI_IC);
{
int len, is_fail;
UChar *pstart, *pend, *swork;
@@ -2293,15 +3387,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
- if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+ if (MEM_STATUS_AT(reg->bt_mem_start, mem))
pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
else
pstart = (UChar* )((void* )mem_start_stk[mem]);
- pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+ pend = (MEM_STATUS_AT(reg->bt_mem_end, mem)
? STACK_AT(mem_end_stk[mem])->u.mem.pstr
: (UChar* )((void* )mem_end_stk[mem]));
- n = pend - pstart;
+ n = (int )(pend - pstart);
DATA_ENSURE(n);
sprev = s;
swork = s;
@@ -2315,7 +3409,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
break; /* success */
}
if (i == tlen) goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
}
break;
@@ -2334,55 +3428,78 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
sprev = s;
if (backref_match_at_nested_level(reg, stk, stk_base, ic
, case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
- while (sprev + (len = enclen(encode, sprev)) < s)
- sprev += len;
-
+ if (sprev < end) {
+ while (sprev + (len = enclen(encode, sprev)) < s)
+ sprev += len;
+ }
p += (SIZE_MEMNUM * tlen);
}
else
goto fail;
- MOP_OUT;
+ SOP_OUT;
continue;
}
break;
#endif
-#if 0 /* no need: IS_DYNAMIC_OPTION() == 0 */
- case OP_SET_OPTION_PUSH: MOP_IN(OP_SET_OPTION_PUSH);
- GET_OPTION_INC(option, p);
- STACK_PUSH_ALT(p, s, sprev);
- p += SIZE_OP_SET_OPTION + SIZE_OP_FAIL;
- MOP_OUT;
- continue;
+ case OP_BACKREF_CHECK: SOP_IN(OP_BACKREF_CHECK);
+ {
+ GET_LENGTH_INC(tlen, p);
+ for (i = 0; i < tlen; i++) {
+ GET_MEMNUM_INC(mem, p);
+
+ if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue;
+ if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
+
+ p += (SIZE_MEMNUM * (tlen - i - 1));
+ break; /* success */
+ }
+ if (i == tlen) goto fail;
+ SOP_OUT;
+ continue;
+ }
break;
- case OP_SET_OPTION: MOP_IN(OP_SET_OPTION);
- GET_OPTION_INC(option, p);
- MOP_OUT;
- continue;
+#ifdef USE_BACKREF_WITH_LEVEL
+ case OP_BACKREF_CHECK_WITH_LEVEL:
+ {
+ LengthType level;
+
+ GET_LENGTH_INC(level, p);
+ GET_LENGTH_INC(tlen, p);
+
+ if (backref_check_at_nested_level(reg, stk, stk_base,
+ (int )level, (int )tlen, p) != 0) {
+ p += (SIZE_MEMNUM * tlen);
+ }
+ else
+ goto fail;
+
+ SOP_OUT;
+ continue;
+ }
break;
#endif
- case OP_NULL_CHECK_START: MOP_IN(OP_NULL_CHECK_START);
+ case OP_EMPTY_CHECK_START: SOP_IN(OP_EMPTY_CHECK_START);
GET_MEMNUM_INC(mem, p); /* mem: null check id */
- STACK_PUSH_NULL_CHECK_START(mem, s);
- MOP_OUT;
+ STACK_PUSH_EMPTY_CHECK_START(mem, s);
+ SOP_OUT;
continue;
break;
- case OP_NULL_CHECK_END: MOP_IN(OP_NULL_CHECK_END);
+ case OP_EMPTY_CHECK_END: SOP_IN(OP_EMPTY_CHECK_END);
{
- int isnull;
+ int is_empty;
GET_MEMNUM_INC(mem, p); /* mem: null check id */
- STACK_NULL_CHECK(isnull, mem, s);
- if (isnull) {
+ STACK_EMPTY_CHECK(is_empty, mem, s);
+ if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
- fprintf(stderr, "NULL_CHECK_END: skip id:%d, s:%d\n",
- (int )mem, (int )s);
+ fprintf(stderr, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s);
#endif
- null_check_found:
+ empty_check_found:
/* empty loop founded, skip next instruction */
switch (*p++) {
case OP_JUMP:
@@ -2401,145 +3518,116 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
}
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
- case OP_NULL_CHECK_END_MEMST: MOP_IN(OP_NULL_CHECK_END_MEMST);
+#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ case OP_EMPTY_CHECK_END_MEMST: SOP_IN(OP_EMPTY_CHECK_END_MEMST);
{
- int isnull;
+ int is_empty;
GET_MEMNUM_INC(mem, p); /* mem: null check id */
- STACK_NULL_CHECK_MEMST(isnull, mem, s, reg);
- if (isnull) {
+ STACK_EMPTY_CHECK_MEM(is_empty, mem, s, reg);
+ if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
- fprintf(stderr, "NULL_CHECK_END_MEMST: skip id:%d, s:%d\n",
- (int )mem, (int )s);
+ fprintf(stderr, "EMPTY_CHECK_END_MEM: skip id:%d, s:%p\n", (int)mem, s);
#endif
- if (isnull == -1) goto fail;
- goto null_check_found;
+ if (is_empty == -1) goto fail;
+ goto empty_check_found;
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
#endif
-#ifdef USE_SUBEXP_CALL
- case OP_NULL_CHECK_END_MEMST_PUSH:
- MOP_IN(OP_NULL_CHECK_END_MEMST_PUSH);
+#ifdef USE_CALL
+ case OP_EMPTY_CHECK_END_MEMST_PUSH:
+ SOP_IN(OP_EMPTY_CHECK_END_MEMST_PUSH);
{
- int isnull;
+ int is_empty;
GET_MEMNUM_INC(mem, p); /* mem: null check id */
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
- STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg);
+#ifdef USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT
+ STACK_EMPTY_CHECK_MEM_REC(is_empty, mem, s, reg);
#else
- STACK_NULL_CHECK_REC(isnull, mem, s);
+ STACK_EMPTY_CHECK_REC(is_empty, mem, s);
#endif
- if (isnull) {
+ if (is_empty) {
#ifdef ONIG_DEBUG_MATCH
- fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip id:%d, s:%d\n",
- (int )mem, (int )s);
+ fprintf(stderr, "EMPTY_CHECK_END_MEM_PUSH: skip id:%d, s:%p\n",
+ (int )mem, s);
#endif
- if (isnull == -1) goto fail;
- goto null_check_found;
+ if (is_empty == -1) goto fail;
+ goto empty_check_found;
}
else {
- STACK_PUSH_NULL_CHECK_END(mem);
+ STACK_PUSH_EMPTY_CHECK_END(mem);
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
#endif
- case OP_JUMP: MOP_IN(OP_JUMP);
+ case OP_JUMP: SOP_IN(OP_JUMP);
GET_RELADDR_INC(addr, p);
p += addr;
- MOP_OUT;
- CHECK_INTERRUPT_IN_MATCH_AT;
+ SOP_OUT;
+ CHECK_INTERRUPT_IN_MATCH;
continue;
break;
- case OP_PUSH: MOP_IN(OP_PUSH);
+ case OP_PUSH: SOP_IN(OP_PUSH);
GET_RELADDR_INC(addr, p);
STACK_PUSH_ALT(p + addr, s, sprev);
- MOP_OUT;
- continue;
- break;
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- case OP_STATE_CHECK_PUSH: MOP_IN(OP_STATE_CHECK_PUSH);
- GET_STATE_CHECK_NUM_INC(mem, p);
- STATE_CHECK_VAL(scv, mem);
- if (scv) goto fail;
-
- GET_RELADDR_INC(addr, p);
- STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_STATE_CHECK_PUSH_OR_JUMP: MOP_IN(OP_STATE_CHECK_PUSH_OR_JUMP);
- GET_STATE_CHECK_NUM_INC(mem, p);
+ case OP_PUSH_SUPER: SOP_IN(OP_PUSH_SUPER);
GET_RELADDR_INC(addr, p);
- STATE_CHECK_VAL(scv, mem);
- if (scv) {
- p += addr;
- }
- else {
- STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);
- }
- MOP_OUT;
- continue;
- break;
-
- case OP_STATE_CHECK: MOP_IN(OP_STATE_CHECK);
- GET_STATE_CHECK_NUM_INC(mem, p);
- STATE_CHECK_VAL(scv, mem);
- if (scv) goto fail;
-
- STACK_PUSH_STATE_CHECK(s, mem);
- MOP_OUT;
+ STACK_PUSH_SUPER_ALT(p + addr, s, sprev);
+ SOP_OUT;
continue;
break;
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */
- case OP_POP: MOP_IN(OP_POP);
+ case OP_POP_OUT: SOP_IN(OP_POP_OUT);
STACK_POP_ONE;
- MOP_OUT;
+ /* for stop backtrack */
+ /* CHECK_RETRY_LIMIT_IN_MATCH; */
+ SOP_OUT;
continue;
break;
- case OP_PUSH_OR_JUMP_EXACT1: MOP_IN(OP_PUSH_OR_JUMP_EXACT1);
+ case OP_PUSH_OR_JUMP_EXACT1: SOP_IN(OP_PUSH_OR_JUMP_EXACT1);
GET_RELADDR_INC(addr, p);
if (*p == *s && DATA_ENSURE_CHECK1) {
p++;
STACK_PUSH_ALT(p + addr, s, sprev);
- MOP_OUT;
+ SOP_OUT;
continue;
}
p += (addr + 1);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_PUSH_IF_PEEK_NEXT: MOP_IN(OP_PUSH_IF_PEEK_NEXT);
+ case OP_PUSH_IF_PEEK_NEXT: SOP_IN(OP_PUSH_IF_PEEK_NEXT);
GET_RELADDR_INC(addr, p);
if (*p == *s) {
p++;
STACK_PUSH_ALT(p + addr, s, sprev);
- MOP_OUT;
+ SOP_OUT;
continue;
}
p++;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_REPEAT: MOP_IN(OP_REPEAT);
+ case OP_REPEAT: SOP_IN(OP_REPEAT);
{
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
GET_RELADDR_INC(addr, p);
@@ -2552,11 +3640,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
STACK_PUSH_ALT(p + addr, s, sprev);
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_REPEAT_NG: MOP_IN(OP_REPEAT_NG);
+ case OP_REPEAT_NG: SOP_IN(OP_REPEAT_NG);
{
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
GET_RELADDR_INC(addr, p);
@@ -2570,11 +3658,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p += addr;
}
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_REPEAT_INC: MOP_IN(OP_REPEAT_INC);
+ case OP_REPEAT_INC: SOP_IN(OP_REPEAT_INC);
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
si = repeat_stk[mem];
stkp = STACK_AT(si);
@@ -2592,19 +3680,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
p = stkp->u.repeat.pcode;
}
STACK_PUSH_REPEAT_INC(si);
- MOP_OUT;
- CHECK_INTERRUPT_IN_MATCH_AT;
+ SOP_OUT;
+ CHECK_INTERRUPT_IN_MATCH;
continue;
break;
- case OP_REPEAT_INC_SG: MOP_IN(OP_REPEAT_INC_SG);
+ case OP_REPEAT_INC_SG: SOP_IN(OP_REPEAT_INC_SG);
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
STACK_GET_REPEAT(mem, stkp);
si = GET_STACK_INDEX(stkp);
goto repeat_inc;
break;
- case OP_REPEAT_INC_NG: MOP_IN(OP_REPEAT_INC_NG);
+ case OP_REPEAT_INC_NG: SOP_IN(OP_REPEAT_INC_NG);
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
si = repeat_stk[mem];
stkp = STACK_AT(si);
@@ -2626,68 +3714,68 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) {
STACK_PUSH_REPEAT_INC(si);
}
- MOP_OUT;
- CHECK_INTERRUPT_IN_MATCH_AT;
+ SOP_OUT;
+ CHECK_INTERRUPT_IN_MATCH;
continue;
break;
- case OP_REPEAT_INC_NG_SG: MOP_IN(OP_REPEAT_INC_NG_SG);
+ case OP_REPEAT_INC_NG_SG: SOP_IN(OP_REPEAT_INC_NG_SG);
GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */
STACK_GET_REPEAT(mem, stkp);
si = GET_STACK_INDEX(stkp);
goto repeat_inc_ng;
break;
- case OP_PUSH_POS: MOP_IN(OP_PUSH_POS);
+ case OP_PREC_READ_START: SOP_IN(OP_PREC_READ_START);
STACK_PUSH_POS(s, sprev);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_POP_POS: MOP_IN(OP_POP_POS);
+ case OP_PREC_READ_END: SOP_IN(OP_PREC_READ_END);
{
- STACK_POS_END(stkp);
+ STACK_EXEC_TO_VOID(stkp);
s = stkp->u.state.pstr;
sprev = stkp->u.state.pstr_prev;
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_PUSH_POS_NOT: MOP_IN(OP_PUSH_POS_NOT);
+ case OP_PREC_READ_NOT_START: SOP_IN(OP_PREC_READ_NOT_START);
GET_RELADDR_INC(addr, p);
- STACK_PUSH_POS_NOT(p + addr, s, sprev);
- MOP_OUT;
+ STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev);
+ SOP_OUT;
continue;
break;
- case OP_FAIL_POS: MOP_IN(OP_FAIL_POS);
- STACK_POP_TIL_POS_NOT;
+ case OP_PREC_READ_NOT_END: SOP_IN(OP_PREC_READ_NOT_END);
+ STACK_POP_TIL_ALT_PREC_READ_NOT;
goto fail;
break;
- case OP_PUSH_STOP_BT: MOP_IN(OP_PUSH_STOP_BT);
- STACK_PUSH_STOP_BT;
- MOP_OUT;
+ case OP_ATOMIC_START: SOP_IN(OP_ATOMIC_START);
+ STACK_PUSH_TO_VOID_START;
+ SOP_OUT;
continue;
break;
- case OP_POP_STOP_BT: MOP_IN(OP_POP_STOP_BT);
- STACK_STOP_BT_END;
- MOP_OUT;
+ case OP_ATOMIC_END: SOP_IN(OP_ATOMIC_END);
+ STACK_EXEC_TO_VOID(stkp);
+ SOP_OUT;
continue;
break;
- case OP_LOOK_BEHIND: MOP_IN(OP_LOOK_BEHIND);
+ case OP_LOOK_BEHIND: SOP_IN(OP_LOOK_BEHIND);
GET_LENGTH_INC(tlen, p);
s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
if (IS_NULL(s)) goto fail;
sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_PUSH_LOOK_BEHIND_NOT: MOP_IN(OP_PUSH_LOOK_BEHIND_NOT);
+ case OP_LOOK_BEHIND_NOT_START: SOP_IN(OP_LOOK_BEHIND_NOT_START);
GET_RELADDR_INC(addr, p);
GET_LENGTH_INC(tlen, p);
q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
@@ -2698,32 +3786,162 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
/* goto fail; */
}
else {
- STACK_PUSH_LOOK_BEHIND_NOT(p + addr, s, sprev);
+ STACK_PUSH_ALT_LOOK_BEHIND_NOT(p + addr, s, sprev);
s = q;
sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
}
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_FAIL_LOOK_BEHIND_NOT: MOP_IN(OP_FAIL_LOOK_BEHIND_NOT);
- STACK_POP_TIL_LOOK_BEHIND_NOT;
+ case OP_LOOK_BEHIND_NOT_END: SOP_IN(OP_LOOK_BEHIND_NOT_END);
+ STACK_POP_TIL_ALT_LOOK_BEHIND_NOT;
goto fail;
break;
-#ifdef USE_SUBEXP_CALL
- case OP_CALL: MOP_IN(OP_CALL);
+#ifdef USE_CALL
+ case OP_CALL: SOP_IN(OP_CALL);
GET_ABSADDR_INC(addr, p);
STACK_PUSH_CALL_FRAME(p);
p = reg->p + addr;
- MOP_OUT;
+ SOP_OUT;
continue;
break;
- case OP_RETURN: MOP_IN(OP_RETURN);
+ case OP_RETURN: SOP_IN(OP_RETURN);
STACK_RETURN(p);
STACK_PUSH_RETURN;
- MOP_OUT;
+ SOP_OUT;
+ continue;
+ break;
+#endif
+
+ case OP_PUSH_SAVE_VAL: SOP_IN(OP_PUSH_SAVE_VAL);
+ {
+ SaveType type;
+ GET_SAVE_TYPE_INC(type, p);
+ GET_MEMNUM_INC(mem, p); /* mem: save id */
+ switch ((enum SaveType )type) {
+ case SAVE_KEEP:
+ STACK_PUSH_SAVE_VAL(mem, type, s);
+ break;
+
+ case SAVE_S:
+ STACK_PUSH_SAVE_VAL_WITH_SPREV(mem, type, s);
+ break;
+
+ case SAVE_RIGHT_RANGE:
+ STACK_PUSH_SAVE_VAL(mem, SAVE_RIGHT_RANGE, right_range);
+ break;
+ }
+ }
+ SOP_OUT;
+ continue;
+ break;
+
+ case OP_UPDATE_VAR: SOP_IN(OP_UPDATE_VAR);
+ {
+ UpdateVarType type;
+ enum SaveType save_type;
+
+ GET_UPDATE_VAR_TYPE_INC(type, p);
+ GET_MEMNUM_INC(mem, p); /* mem: save id */
+ switch ((enum UpdateVarType )type) {
+ case UPDATE_VAR_KEEP_FROM_STACK_LAST:
+ STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep);
+ break;
+ case UPDATE_VAR_S_FROM_STACK:
+ STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s);
+ break;
+ case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK:
+ save_type = SAVE_S;
+ goto get_save_val_type_last_id;
+ break;
+ case UPDATE_VAR_RIGHT_RANGE_FROM_STACK:
+ save_type = SAVE_RIGHT_RANGE;
+ get_save_val_type_last_id:
+ STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range);
+ break;
+ case UPDATE_VAR_RIGHT_RANGE_INIT:
+ INIT_RIGHT_RANGE;
+ break;
+ }
+ }
+ SOP_OUT;
+ continue;
+ break;
+
+#ifdef USE_CALLOUT
+ case OP_CALLOUT_CONTENTS: SOP_IN(OP_CALLOUT_CONTENTS);
+ of = ONIG_CALLOUT_OF_CONTENTS;
+ goto callout_common_entry;
+
+ SOP_OUT;
+ continue;
+ break;
+
+ case OP_CALLOUT_NAME: SOP_IN(OP_CALLOUT_NAME);
+ {
+ int call_result;
+ int name_id;
+ int num;
+ int in;
+ CalloutListEntry* e;
+ OnigCalloutFunc func;
+ OnigCalloutArgs args;
+
+ of = ONIG_CALLOUT_OF_NAME;
+ GET_MEMNUM_INC(name_id, p);
+
+ callout_common_entry:
+ GET_MEMNUM_INC(num, p);
+ e = onig_reg_callout_list_at(reg, num);
+ in = e->in;
+ if (of == ONIG_CALLOUT_OF_NAME) {
+ func = onig_get_callout_start_func(reg, num);
+ }
+ else {
+ name_id = ONIG_NON_NAME_ID;
+ func = msa->mp->progress_callout_of_contents;
+ }
+
+ if (IS_NOT_NULL(func) && (in & ONIG_CALLOUT_IN_PROGRESS) != 0) {
+ CALLOUT_BODY(func, ONIG_CALLOUT_IN_PROGRESS, name_id,
+ num, msa->mp->callout_user_data, args, call_result);
+ switch (call_result) {
+ case ONIG_CALLOUT_FAIL:
+ goto fail;
+ break;
+ case ONIG_CALLOUT_SUCCESS:
+ goto retraction_callout2;
+ break;
+ default: /* error code */
+ if (call_result > 0) {
+ call_result = ONIGERR_INVALID_ARGUMENT;
+ }
+ best_len = call_result;
+ goto finish;
+ break;
+ }
+ }
+ else {
+ retraction_callout2:
+ if ((in & ONIG_CALLOUT_IN_RETRACTION) != 0) {
+ if (of == ONIG_CALLOUT_OF_NAME) {
+ if (IS_NOT_NULL(func)) {
+ STACK_PUSH_CALLOUT_NAME(name_id, num, func);
+ }
+ }
+ else {
+ func = msa->mp->retraction_callout_of_contents;
+ if (IS_NOT_NULL(func)) {
+ STACK_PUSH_CALLOUT_CONTENTS(num, func);
+ }
+ }
+ }
+ }
+ }
+ SOP_OUT;
continue;
break;
#endif
@@ -2733,22 +3951,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
break;
fail:
- MOP_OUT;
+ SOP_OUT;
/* fall */
- case OP_FAIL: MOP_IN(OP_FAIL);
+ case OP_FAIL: SOP_IN(OP_FAIL);
STACK_POP;
p = stk->u.state.pcode;
s = stk->u.state.pstr;
sprev = stk->u.state.pstr_prev;
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- if (stk->u.state.state_check != 0) {
- stk->type = STK_STATE_CHECK_MARK;
- stk++;
- }
-#endif
-
- MOP_OUT;
+ CHECK_RETRY_LIMIT_IN_MATCH;
+ SOP_OUT;
continue;
break;
@@ -2776,12 +3987,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
unexpected_bytecode_error:
STACK_SAVE;
return ONIGERR_UNEXPECTED_BYTECODE;
+
+#ifdef USE_RETRY_LIMIT_IN_MATCH
+ retry_limit_in_match_over:
+ STACK_SAVE;
+ return ONIGERR_RETRY_LIMIT_IN_MATCH_OVER;
+#endif
}
static UChar*
slow_search(OnigEncoding enc, UChar* target, UChar* target_end,
- const UChar* text, const UChar* text_end, UChar* text_range)
+ const UChar* text, const UChar* text_end, UChar* text_range)
{
UChar *t, *p, *s, *end;
@@ -2813,7 +4030,7 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end,
static int
str_lower_case_match(OnigEncoding enc, int case_fold_flag,
const UChar* t, const UChar* tend,
- const UChar* p, const UChar* end)
+ const UChar* p, const UChar* end)
{
int lowlen;
UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
@@ -2822,7 +4039,7 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag,
lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf);
q = lowbuf;
while (lowlen > 0) {
- if (*t++ != *q++) return 0;
+ if (*t++ != *q++) return 0;
lowlen--;
}
}
@@ -2832,8 +4049,8 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag,
static UChar*
slow_search_ic(OnigEncoding enc, int case_fold_flag,
- UChar* target, UChar* target_end,
- const UChar* text, const UChar* text_end, UChar* text_range)
+ UChar* target, UChar* target_end,
+ const UChar* text, const UChar* text_end, UChar* text_range)
{
UChar *s, *end;
@@ -2846,7 +4063,7 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag,
while (s < end) {
if (str_lower_case_match(enc, case_fold_flag, target, target_end,
- s, text_end))
+ s, text_end))
return s;
s += enclen(enc, s);
@@ -2857,8 +4074,8 @@ slow_search_ic(OnigEncoding enc, int case_fold_flag,
static UChar*
slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end,
- const UChar* text, const UChar* adjust_text,
- const UChar* text_end, const UChar* text_start)
+ const UChar* text, const UChar* adjust_text,
+ const UChar* text_end, const UChar* text_start)
{
UChar *t, *p, *s;
@@ -2889,9 +4106,9 @@ slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end,
static UChar*
slow_search_backward_ic(OnigEncoding enc, int case_fold_flag,
- UChar* target, UChar* target_end,
- const UChar* text, const UChar* adjust_text,
- const UChar* text_end, const UChar* text_start)
+ UChar* target, UChar* target_end,
+ const UChar* text, const UChar* adjust_text,
+ const UChar* text_end, const UChar* text_start)
{
UChar *s;
@@ -2915,20 +4132,20 @@ slow_search_backward_ic(OnigEncoding enc, int case_fold_flag,
static UChar*
bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* text_end,
- const UChar* text_range)
+ const UChar* text, const UChar* text_end,
+ const UChar* text_range)
{
const UChar *s, *se, *t, *p, *end;
const UChar *tail;
int skip, tlen1;
#ifdef ONIG_DEBUG_SEARCH
- fprintf(stderr, "bm_search_notrev: text: %d, text_end: %d, text_range: %d\n",
- (int )text, (int )text_end, (int )text_range);
+ fprintf(stderr, "bm_search_notrev: text: %p, text_end: %p, text_range: %p\n",
+ text, text_end, text_range);
#endif
tail = target_end - 1;
- tlen1 = tail - target;
+ tlen1 = (int )(tail - target);
end = text_range;
if (end + tlen1 > text_end)
end = text_end - tlen1;
@@ -2971,7 +4188,7 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,
static UChar*
bm_search(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* text_end, const UChar* text_range)
+ const UChar* text, const UChar* text_end, const UChar* text_range)
{
const UChar *s, *t, *p, *end;
const UChar *tail;
@@ -3009,9 +4226,7 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end,
#ifdef USE_INT_MAP_BACKWARD
static int
-set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
- int** skip)
-
+set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip)
{
int i, len;
@@ -3032,8 +4247,8 @@ set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,
static UChar*
bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end,
- const UChar* text, const UChar* adjust_text,
- const UChar* text_end, const UChar* text_start)
+ const UChar* text, const UChar* adjust_text,
+ const UChar* text_end, const UChar* text_start)
{
const UChar *s, *t, *p;
@@ -3062,7 +4277,7 @@ bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end,
static UChar*
map_search(OnigEncoding enc, UChar map[],
- const UChar* text, const UChar* text_range)
+ const UChar* text, const UChar* text_range)
{
const UChar *s = text;
@@ -3076,8 +4291,8 @@ map_search(OnigEncoding enc, UChar map[],
static UChar*
map_search_backward(OnigEncoding enc, UChar map[],
- const UChar* text, const UChar* adjust_text,
- const UChar* text_start)
+ const UChar* text, const UChar* adjust_text,
+ const UChar* text_start)
{
const UChar *s = text_start;
@@ -3088,23 +4303,30 @@ map_search_backward(OnigEncoding enc, UChar map[],
}
return (UChar* )NULL;
}
+extern int
+onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at,
+ OnigRegion* region, OnigOptionType option)
+{
+ int r;
+ OnigMatchParam mp;
+
+ onig_initialize_match_param(&mp);
+ r = onig_match_with_param(reg, str, end, at, region, option, &mp);
+ onig_free_match_param_content(&mp);
+ return r;
+}
extern int
-onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region,
- OnigOptionType option)
+onig_match_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* at, OnigRegion* region, OnigOptionType option,
+ OnigMatchParam* mp)
{
int r;
UChar *prev;
- OnigMatchArg msa;
-
- MATCH_ARG_INIT(msa, reg, option, region, at);
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- {
- int offset = at - str;
- STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check);
- }
-#endif
+ MatchArg msa;
+ ADJUST_MATCH_PARAM(reg, mp);
+ MATCH_ARG_INIT(msa, reg, option, region, at, mp);
if (region
#ifdef USE_POSIX_API_REGION_OPTION
&& !IS_POSIX_REGION(option)
@@ -3124,11 +4346,7 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, On
}
prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at);
- r = match_at(reg, str, end,
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
- end,
-#endif
- at, prev, &msa);
+ r = match_at(reg, str, end, end, at, prev, &msa);
}
end:
@@ -3138,13 +4356,13 @@ onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, On
static int
forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
- UChar* range, UChar** low, UChar** high, UChar** low_prev)
+ UChar* range, UChar** low, UChar** high, UChar** low_prev)
{
UChar *p, *pprev = (UChar* )NULL;
#ifdef ONIG_DEBUG_SEARCH
- fprintf(stderr, "forward_search_range: str: %d, end: %d, s: %d, range: %d\n",
- (int )str, (int )end, (int )s, (int )range);
+ fprintf(stderr, "forward_search_range: str: %p, end: %p, s: %p, range: %p\n",
+ str, end, s, range);
#endif
p = s;
@@ -3162,23 +4380,23 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
retry:
switch (reg->optimize) {
- case ONIG_OPTIMIZE_EXACT:
+ case OPTIMIZE_EXACT:
p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range);
break;
- case ONIG_OPTIMIZE_EXACT_IC:
+ case OPTIMIZE_EXACT_IC:
p = slow_search_ic(reg->enc, reg->case_fold_flag,
reg->exact, reg->exact_end, p, end, range);
break;
- case ONIG_OPTIMIZE_EXACT_BM:
+ case OPTIMIZE_EXACT_BM:
p = bm_search(reg, reg->exact, reg->exact_end, p, end, range);
break;
- case ONIG_OPTIMIZE_EXACT_BM_NOT_REV:
+ case OPTIMIZE_EXACT_BM_NO_REV:
p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range);
break;
- case ONIG_OPTIMIZE_MAP:
+ case OPTIMIZE_MAP:
p = map_search(reg->enc, reg->map, p, range);
break;
}
@@ -3234,7 +4452,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
}
}
else {
- if (reg->dmax != ONIG_INFINITE_DISTANCE) {
+ if (reg->dmax != INFINITE_LEN) {
if (p - str < reg->dmax) {
*low = (UChar* )str;
if (low_prev)
@@ -3262,8 +4480,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
#ifdef ONIG_DEBUG_SEARCH
fprintf(stderr,
- "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n",
- (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax);
+ "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n",
+ (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax);
#endif
return 1; /* success */
}
@@ -3276,8 +4494,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
static int
backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
- UChar* s, const UChar* range, UChar* adjrange,
- UChar** low, UChar** high)
+ UChar* s, const UChar* range, UChar* adjrange,
+ UChar** low, UChar** high)
{
UChar *p;
@@ -3286,20 +4504,20 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
retry:
switch (reg->optimize) {
- case ONIG_OPTIMIZE_EXACT:
+ case OPTIMIZE_EXACT:
exact_method:
p = slow_search_backward(reg->enc, reg->exact, reg->exact_end,
- range, adjrange, end, p);
+ range, adjrange, end, p);
break;
- case ONIG_OPTIMIZE_EXACT_IC:
+ case OPTIMIZE_EXACT_IC:
p = slow_search_backward_ic(reg->enc, reg->case_fold_flag,
reg->exact, reg->exact_end,
range, adjrange, end, p);
break;
- case ONIG_OPTIMIZE_EXACT_BM:
- case ONIG_OPTIMIZE_EXACT_BM_NOT_REV:
+ case OPTIMIZE_EXACT_BM:
+ case OPTIMIZE_EXACT_BM_NO_REV:
#ifdef USE_INT_MAP_BACKWARD
if (IS_NULL(reg->int_map_backward)) {
int r;
@@ -3309,7 +4527,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc,
&(reg->int_map_backward));
- if (r) return r;
+ if (r != 0) return r;
}
p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange,
end, p);
@@ -3318,7 +4536,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
#endif
break;
- case ONIG_OPTIMIZE_MAP:
+ case OPTIMIZE_MAP:
p = map_search_backward(reg->enc, reg->map, range, adjrange, p);
break;
}
@@ -3363,7 +4581,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
}
/* no needs to adjust *high, *high is used as range check only */
- if (reg->dmax != ONIG_INFINITE_DISTANCE) {
+ if (reg->dmax != INFINITE_LEN) {
*low = p - reg->dmax;
*high = p - reg->dmin;
*high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high);
@@ -3371,7 +4589,7 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
#ifdef ONIG_DEBUG_SEARCH
fprintf(stderr, "backward_search_range: low: %d, high: %d\n",
- (int )(*low - str), (int )(*high - str));
+ (int )(*low - str), (int )(*high - str));
#endif
return 1; /* success */
}
@@ -3386,29 +4604,45 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
extern int
onig_search(regex_t* reg, const UChar* str, const UChar* end,
- const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option)
+ const UChar* start, const UChar* range, OnigRegion* region,
+ OnigOptionType option)
+{
+ int r;
+ OnigMatchParam mp;
+
+ onig_initialize_match_param(&mp);
+ r = onig_search_with_param(reg, str, end, start, range, region, option, &mp);
+ onig_free_match_param_content(&mp);
+ return r;
+
+}
+
+extern int
+onig_search_with_param(regex_t* reg, const UChar* str, const UChar* end,
+ const UChar* start, const UChar* range, OnigRegion* region,
+ OnigOptionType option, OnigMatchParam* mp)
{
int r;
UChar *s, *prev;
- OnigMatchArg msa;
+ MatchArg msa;
const UChar *orig_start = start;
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
const UChar *orig_range = range;
-#endif
#ifdef ONIG_DEBUG_SEARCH
fprintf(stderr,
- "onig_search (entry point): str: %d, end: %d, start: %d, range: %d\n",
- (int )str, (int )(end - str), (int )(start - str), (int )(range - str));
+ "onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n",
+ str, (int )(end - str), (int )(start - str), (int )(range - str));
#endif
+ ADJUST_MATCH_PARAM(reg, mp);
+
if (region
#ifdef USE_POSIX_API_REGION_OPTION
&& !IS_POSIX_REGION(option)
#endif
) {
r = onig_region_resize_clear(region, reg->num_mem + 1);
- if (r) goto finish_no_msa;
+ if (r != 0) goto finish_no_msa;
}
if (start > end || start < str) goto mismatch_no_msa;
@@ -3421,7 +4655,6 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
}
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
#define MATCH_AND_RETURN_CHECK(upper_range) \
r = match_at(reg, str, end, (upper_range), s, prev, &msa); \
@@ -3443,29 +4676,6 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
else goto finish; /* error */ \
}
#endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
-#else
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
-#define MATCH_AND_RETURN_CHECK(none) \
- r = match_at(reg, str, end, s, prev, &msa);\
- if (r != ONIG_MISMATCH) {\
- if (r >= 0) {\
- if (! IS_FIND_LONGEST(reg->options)) {\
- goto match;\
- }\
- }\
- else goto finish; /* error */ \
- }
-#else
-#define MATCH_AND_RETURN_CHECK(none) \
- r = match_at(reg, str, end, s, prev, &msa);\
- if (r != ONIG_MISMATCH) {\
- if (r >= 0) {\
- goto match;\
- }\
- else goto finish; /* error */ \
- }
-#endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */
-#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */
/* anchor optimize: resume search range */
@@ -3500,7 +4710,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
end_buf:
if ((OnigLen )(max_semi_end - str) < reg->anchor_dmin)
- goto mismatch_no_msa;
+ goto mismatch_no_msa;
if (range > start) {
if ((OnigLen )(min_semi_end - start) > reg->anchor_dmax) {
@@ -3550,7 +4760,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
goto end_buf;
}
}
- else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) {
+ else if ((reg->anchor & ANCHOR_ANYCHAR_INF_ML)) {
goto begin_position;
}
}
@@ -3566,11 +4776,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
s = (UChar* )start;
prev = (UChar* )NULL;
- MATCH_ARG_INIT(msa, reg, option, region, start);
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- msa.state_check_buff = (void* )0;
- msa.state_check_buff_size = 0; /* NO NEED, for valgrind */
-#endif
+ MATCH_ARG_INIT(msa, reg, option, region, start, mp);
MATCH_AND_RETURN_CHECK(end);
goto mismatch;
}
@@ -3579,16 +4785,10 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
#ifdef ONIG_DEBUG_SEARCH
fprintf(stderr, "onig_search(apply anchor): end: %d, start: %d, range: %d\n",
- (int )(end - str), (int )(start - str), (int )(range - str));
+ (int )(end - str), (int )(start - str), (int )(range - str));
#endif
- MATCH_ARG_INIT(msa, reg, option, region, orig_start);
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- {
- int offset = (MIN(start, range) - str);
- STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check);
- }
-#endif
+ MATCH_ARG_INIT(msa, reg, option, region, orig_start, mp);
s = (UChar* )start;
if (range > start) { /* forward search */
@@ -3597,12 +4797,12 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
else
prev = (UChar* )NULL;
- if (reg->optimize != ONIG_OPTIMIZE_NONE) {
+ if (reg->optimize != OPTIMIZE_NONE) {
UChar *sch_range, *low, *high, *low_prev;
sch_range = (UChar* )range;
if (reg->dmax != 0) {
- if (reg->dmax == ONIG_INFINITE_DISTANCE)
+ if (reg->dmax == INFINITE_LEN)
sch_range = (UChar* )end;
else {
sch_range += reg->dmax;
@@ -3613,7 +4813,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
if ((end - start) < reg->threshold_len)
goto mismatch;
- if (reg->dmax != ONIG_INFINITE_DISTANCE) {
+ if (reg->dmax != INFINITE_LEN) {
do {
if (! forward_search_range(reg, str, end, s, sch_range,
&low, &high, &low_prev)) goto mismatch;
@@ -3633,7 +4833,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
if (! forward_search_range(reg, str, end, s, sch_range,
&low, &high, (UChar** )NULL)) goto mismatch;
- if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) {
+ if ((reg->anchor & ANCHOR_ANYCHAR_INF) != 0) {
do {
MATCH_AND_RETURN_CHECK(orig_range);
prev = s;
@@ -3662,12 +4862,10 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
}
}
else { /* backward search */
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE
if (orig_start < end)
orig_start += enclen(reg->enc, orig_start); /* is upper range */
-#endif
- if (reg->optimize != ONIG_OPTIMIZE_NONE) {
+ if (reg->optimize != OPTIMIZE_NONE) {
UChar *low, *high, *adjrange, *sch_start;
if (range < end)
@@ -3675,7 +4873,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
else
adjrange = (UChar* )end;
- if (reg->dmax != ONIG_INFINITE_DISTANCE &&
+ if (reg->dmax != INFINITE_LEN &&
(end - range) >= reg->threshold_len) {
do {
sch_start = s + reg->dmax;
@@ -3700,7 +4898,7 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
sch_start = s;
if (reg->dmax != 0) {
- if (reg->dmax == ONIG_INFINITE_DISTANCE)
+ if (reg->dmax == INFINITE_LEN)
sch_start = (UChar* )end;
else {
sch_start += reg->dmax;
@@ -3763,14 +4961,14 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
match:
MATCH_ARG_FREE(msa);
- return s - str;
+ return (int )(s - str);
}
extern int
onig_scan(regex_t* reg, const UChar* str, const UChar* end,
- OnigRegion* region, OnigOptionType option,
- int (*scan_callback)(int, int, OnigRegion*, void*),
- void* callback_arg)
+ OnigRegion* region, OnigOptionType option,
+ int (*scan_callback)(int, int, OnigRegion*, void*),
+ void* callback_arg)
{
int r;
int n;
@@ -3853,7 +5051,7 @@ onig_number_of_capture_histories(regex_t* reg)
n = 0;
for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) {
- if (BIT_STATUS_AT(reg->capture_history, i) != 0)
+ if (MEM_STATUS_AT(reg->capture_history, i) != 0)
n++;
}
return n;
@@ -3868,3 +5066,627 @@ onig_copy_encoding(OnigEncoding to, OnigEncoding from)
*to = *from;
}
+
+/* for callout functions */
+
+#ifdef USE_CALLOUT
+
+extern OnigCalloutFunc
+onig_get_progress_callout(void)
+{
+ return DefaultProgressCallout;
+}
+
+extern int
+onig_set_progress_callout(OnigCalloutFunc f)
+{
+ DefaultProgressCallout = f;
+ return ONIG_NORMAL;
+}
+
+extern OnigCalloutFunc
+onig_get_retraction_callout(void)
+{
+ return DefaultRetractionCallout;
+}
+
+extern int
+onig_set_retraction_callout(OnigCalloutFunc f)
+{
+ DefaultRetractionCallout = f;
+ return ONIG_NORMAL;
+}
+
+extern int
+onig_get_callout_num_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->num;
+}
+
+extern OnigCalloutIn
+onig_get_callout_in_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->in;
+}
+
+extern int
+onig_get_name_id_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->name_id;
+}
+
+extern const UChar*
+onig_get_contents_by_callout_args(OnigCalloutArgs* args)
+{
+ int num;
+ CalloutListEntry* e;
+
+ num = args->num;
+ e = onig_reg_callout_list_at(args->regex, num);
+ if (IS_NULL(e)) return 0;
+ if (e->of == ONIG_CALLOUT_OF_CONTENTS) {
+ return e->u.content.start;
+ }
+
+ return 0;
+}
+
+extern const UChar*
+onig_get_contents_end_by_callout_args(OnigCalloutArgs* args)
+{
+ int num;
+ CalloutListEntry* e;
+
+ num = args->num;
+ e = onig_reg_callout_list_at(args->regex, num);
+ if (IS_NULL(e)) return 0;
+ if (e->of == ONIG_CALLOUT_OF_CONTENTS) {
+ return e->u.content.end;
+ }
+
+ return 0;
+}
+
+extern int
+onig_get_args_num_by_callout_args(OnigCalloutArgs* args)
+{
+ int num;
+ CalloutListEntry* e;
+
+ num = args->num;
+ e = onig_reg_callout_list_at(args->regex, num);
+ if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT;
+ if (e->of == ONIG_CALLOUT_OF_NAME) {
+ return e->u.arg.num;
+ }
+
+ return ONIGERR_INVALID_ARGUMENT;
+}
+
+extern int
+onig_get_passed_args_num_by_callout_args(OnigCalloutArgs* args)
+{
+ int num;
+ CalloutListEntry* e;
+
+ num = args->num;
+ e = onig_reg_callout_list_at(args->regex, num);
+ if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT;
+ if (e->of == ONIG_CALLOUT_OF_NAME) {
+ return e->u.arg.passed_num;
+ }
+
+ return ONIGERR_INVALID_ARGUMENT;
+}
+
+extern int
+onig_get_arg_by_callout_args(OnigCalloutArgs* args, int index,
+ OnigType* type, OnigValue* val)
+{
+ int num;
+ CalloutListEntry* e;
+
+ num = args->num;
+ e = onig_reg_callout_list_at(args->regex, num);
+ if (IS_NULL(e)) return ONIGERR_INVALID_ARGUMENT;
+ if (e->of == ONIG_CALLOUT_OF_NAME) {
+ if (IS_NOT_NULL(type)) *type = e->u.arg.types[index];
+ if (IS_NOT_NULL(val)) *val = e->u.arg.vals[index];
+ return ONIG_NORMAL;
+ }
+
+ return ONIGERR_INVALID_ARGUMENT;
+}
+
+extern const UChar*
+onig_get_string_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->string;
+}
+
+extern const UChar*
+onig_get_string_end_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->string_end;
+}
+
+extern const UChar*
+onig_get_start_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->start;
+}
+
+extern const UChar*
+onig_get_right_range_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->right_range;
+}
+
+extern const UChar*
+onig_get_current_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->current;
+}
+
+extern OnigRegex
+onig_get_regex_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->regex;
+}
+
+extern unsigned long
+onig_get_retry_counter_by_callout_args(OnigCalloutArgs* args)
+{
+ return args->retry_in_match_counter;
+}
+
+
+extern int
+onig_get_capture_range_in_callout(OnigCalloutArgs* a, int mem_num, int* begin, int* end)
+{
+ OnigRegex reg;
+ const UChar* str;
+ StackType* stk_base;
+ int i;
+
+ i = mem_num;
+ reg = a->regex;
+ str = a->string;
+ stk_base = a->stk_base;
+
+ if (i > 0) {
+ if (a->mem_end_stk[i] != INVALID_STACK_INDEX) {
+ if (MEM_STATUS_AT(reg->bt_mem_start, i))
+ *begin = (int )(STACK_AT(a->mem_start_stk[i])->u.mem.pstr - str);
+ else
+ *begin = (int )((UChar* )((void* )a->mem_start_stk[i]) - str);
+
+ *end = (int )((MEM_STATUS_AT(reg->bt_mem_end, i)
+ ? STACK_AT(a->mem_end_stk[i])->u.mem.pstr
+ : (UChar* )((void* )a->mem_end_stk[i])) - str);
+ }
+ else {
+ *begin = *end = ONIG_REGION_NOTPOS;
+ }
+ }
+ else if (i == 0) {
+#if 0
+ *begin = a->start - str;
+ *end = a->current - str;
+#else
+ return ONIGERR_INVALID_ARGUMENT;
+#endif
+ }
+ else
+ return ONIGERR_INVALID_ARGUMENT;
+
+ return ONIG_NORMAL;
+}
+
+extern int
+onig_get_used_stack_size_in_callout(OnigCalloutArgs* a, int* used_num, int* used_bytes)
+{
+ int n;
+
+ n = (int )(a->stk - a->stk_base);
+
+ if (used_num != 0)
+ *used_num = n;
+
+ if (used_bytes != 0)
+ *used_bytes = n * sizeof(StackType);
+
+ return ONIG_NORMAL;
+}
+
+
+/* builtin callout functions */
+
+extern int
+onig_builtin_fail(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED)
+{
+ return ONIG_CALLOUT_FAIL;
+}
+
+extern int
+onig_builtin_mismatch(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED)
+{
+ return ONIG_MISMATCH;
+}
+
+#if 0
+extern int
+onig_builtin_success(OnigCalloutArgs* args ARG_UNUSED, void* user_data ARG_UNUSED)
+{
+ return ONIG_CALLOUT_SUCCESS;
+}
+#endif
+
+extern int
+onig_builtin_error(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
+{
+ int r;
+ int n;
+ OnigValue val;
+
+ r = onig_get_arg_by_callout_args(args, 0, 0, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ n = (int )val.l;
+ if (n >= 0) {
+ n = ONIGERR_INVALID_CALLOUT_BODY;
+ }
+
+ return n;
+}
+
+extern int
+onig_builtin_count(OnigCalloutArgs* args, void* user_data)
+{
+ (void )onig_check_callout_data_and_clear_old_values(args);
+
+ return onig_builtin_total_count(args, user_data);
+}
+
+extern int
+onig_builtin_total_count(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
+{
+ int r;
+ int slot;
+ OnigType type;
+ OnigValue val;
+ OnigValue aval;
+ OnigCodePoint count_type;
+
+ r = onig_get_arg_by_callout_args(args, 0, &type, &aval);
+ if (r != ONIG_NORMAL) return r;
+
+ count_type = aval.c;
+ if (count_type != '>' && count_type != 'X' && count_type != '<')
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, 0,
+ &type, &val);
+ if (r < ONIG_NORMAL)
+ return r;
+ else if (r > ONIG_NORMAL) {
+ /* type == void: initial state */
+ val.l = 0;
+ }
+
+ if (args->in == ONIG_CALLOUT_IN_RETRACTION) {
+ slot = 2;
+ if (count_type == '<')
+ val.l++;
+ else if (count_type == 'X')
+ val.l--;
+ }
+ else {
+ slot = 1;
+ if (count_type != '<')
+ val.l++;
+ }
+
+ r = onig_set_callout_data_by_callout_args_self(args, 0, ONIG_TYPE_LONG, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ /* slot 1: in progress counter, slot 2: in retraction counter */
+ r = onig_get_callout_data_by_callout_args_self_dont_clear_old(args, slot,
+ &type, &val);
+ if (r < ONIG_NORMAL)
+ return r;
+ else if (r > ONIG_NORMAL) {
+ val.l = 0;
+ }
+
+ val.l++;
+ r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ return ONIG_CALLOUT_SUCCESS;
+}
+
+extern int
+onig_builtin_max(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
+{
+ int r;
+ int slot;
+ long max_val;
+ OnigCodePoint count_type;
+ OnigType type;
+ OnigValue val;
+ OnigValue aval;
+
+ (void )onig_check_callout_data_and_clear_old_values(args);
+
+ slot = 0;
+ r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val);
+ if (r < ONIG_NORMAL)
+ return r;
+ else if (r > ONIG_NORMAL) {
+ /* type == void: initial state */
+ type = ONIG_TYPE_LONG;
+ val.l = 0;
+ }
+
+ r = onig_get_arg_by_callout_args(args, 0, &type, &aval);
+ if (r != ONIG_NORMAL) return r;
+ if (type == ONIG_TYPE_TAG) {
+ r = onig_get_callout_data_by_callout_args(args, aval.tag, 0, &type, &aval);
+ if (r < ONIG_NORMAL) return r;
+ else if (r > ONIG_NORMAL)
+ max_val = 0L;
+ else
+ max_val = aval.l;
+ }
+ else { /* LONG */
+ max_val = aval.l;
+ }
+
+ r = onig_get_arg_by_callout_args(args, 1, &type, &aval);
+ if (r != ONIG_NORMAL) return r;
+
+ count_type = aval.c;
+ if (count_type != '>' && count_type != 'X' && count_type != '<')
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ if (args->in == ONIG_CALLOUT_IN_RETRACTION) {
+ if (count_type == '<') {
+ if (val.l >= max_val) return ONIG_CALLOUT_FAIL;
+ val.l++;
+ }
+ else if (count_type == 'X')
+ val.l--;
+ }
+ else {
+ if (count_type != '<') {
+ if (val.l >= max_val) return ONIG_CALLOUT_FAIL;
+ val.l++;
+ }
+ }
+
+ r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ return ONIG_CALLOUT_SUCCESS;
+}
+
+enum OP_CMP {
+ OP_EQ,
+ OP_NE,
+ OP_LT,
+ OP_GT,
+ OP_LE,
+ OP_GE
+};
+
+extern int
+onig_builtin_cmp(OnigCalloutArgs* args, void* user_data ARG_UNUSED)
+{
+ int r;
+ int slot;
+ long lv;
+ long rv;
+ OnigType type;
+ OnigValue val;
+ regex_t* reg;
+ enum OP_CMP op;
+
+ reg = args->regex;
+
+ r = onig_get_arg_by_callout_args(args, 0, &type, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ if (type == ONIG_TYPE_TAG) {
+ r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val);
+ if (r < ONIG_NORMAL) return r;
+ else if (r > ONIG_NORMAL)
+ lv = 0L;
+ else
+ lv = val.l;
+ }
+ else { /* ONIG_TYPE_LONG */
+ lv = val.l;
+ }
+
+ r = onig_get_arg_by_callout_args(args, 2, &type, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ if (type == ONIG_TYPE_TAG) {
+ r = onig_get_callout_data_by_callout_args(args, val.tag, 0, &type, &val);
+ if (r < ONIG_NORMAL) return r;
+ else if (r > ONIG_NORMAL)
+ rv = 0L;
+ else
+ rv = val.l;
+ }
+ else { /* ONIG_TYPE_LONG */
+ rv = val.l;
+ }
+
+ slot = 0;
+ r = onig_get_callout_data_by_callout_args_self(args, slot, &type, &val);
+ if (r < ONIG_NORMAL)
+ return r;
+ else if (r > ONIG_NORMAL) {
+ /* type == void: initial state */
+ OnigCodePoint c1, c2;
+ UChar* p;
+
+ r = onig_get_arg_by_callout_args(args, 1, &type, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ p = val.s.start;
+ c1 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end);
+ p += ONIGENC_MBC_ENC_LEN(reg->enc, p);
+ if (p < val.s.end) {
+ c2 = ONIGENC_MBC_TO_CODE(reg->enc, p, val.s.end);
+ p += ONIGENC_MBC_ENC_LEN(reg->enc, p);
+ if (p != val.s.end) return ONIGERR_INVALID_CALLOUT_ARG;
+ }
+ else
+ c2 = 0;
+
+ switch (c1) {
+ case '=':
+ if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG;
+ op = OP_EQ;
+ break;
+ case '!':
+ if (c2 != '=') return ONIGERR_INVALID_CALLOUT_ARG;
+ op = OP_NE;
+ break;
+ case '<':
+ if (c2 == '=') op = OP_LE;
+ else if (c2 == 0) op = OP_LT;
+ else return ONIGERR_INVALID_CALLOUT_ARG;
+ break;
+ case '>':
+ if (c2 == '=') op = OP_GE;
+ else if (c2 == 0) op = OP_GT;
+ else return ONIGERR_INVALID_CALLOUT_ARG;
+ break;
+ default:
+ return ONIGERR_INVALID_CALLOUT_ARG;
+ break;
+ }
+ val.l = (long )op;
+ r = onig_set_callout_data_by_callout_args_self(args, slot, ONIG_TYPE_LONG, &val);
+ if (r != ONIG_NORMAL) return r;
+ }
+ else {
+ op = (enum OP_CMP )val.l;
+ }
+
+ switch (op) {
+ case OP_EQ: r = (lv == rv); break;
+ case OP_NE: r = (lv != rv); break;
+ case OP_LT: r = (lv < rv); break;
+ case OP_GT: r = (lv > rv); break;
+ case OP_LE: r = (lv <= rv); break;
+ case OP_GE: r = (lv >= rv); break;
+ }
+
+ return r == 0 ? ONIG_CALLOUT_FAIL : ONIG_CALLOUT_SUCCESS;
+}
+
+
+#include <stdio.h>
+
+static FILE* OutFp;
+
+/* name start with "onig_" for macros. */
+static int
+onig_builtin_monitor(OnigCalloutArgs* args, void* user_data)
+{
+ int r;
+ int num;
+ size_t tag_len;
+ const UChar* start;
+ const UChar* right;
+ const UChar* current;
+ const UChar* string;
+ const UChar* strend;
+ const UChar* tag_start;
+ const UChar* tag_end;
+ regex_t* reg;
+ OnigCalloutIn in;
+ OnigType type;
+ OnigValue val;
+ char buf[20];
+ FILE* fp;
+
+ fp = OutFp;
+
+ r = onig_get_arg_by_callout_args(args, 0, &type, &val);
+ if (r != ONIG_NORMAL) return r;
+
+ in = onig_get_callout_in_by_callout_args(args);
+ if (in == ONIG_CALLOUT_IN_PROGRESS) {
+ if (val.c == '<')
+ return ONIG_CALLOUT_SUCCESS;
+ }
+ else {
+ if (val.c != 'X' && val.c != '<')
+ return ONIG_CALLOUT_SUCCESS;
+ }
+
+ num = onig_get_callout_num_by_callout_args(args);
+ start = onig_get_start_by_callout_args(args);
+ right = onig_get_right_range_by_callout_args(args);
+ current = onig_get_current_by_callout_args(args);
+ string = onig_get_string_by_callout_args(args);
+ strend = onig_get_string_end_by_callout_args(args);
+ reg = onig_get_regex_by_callout_args(args);
+ tag_start = onig_get_callout_tag_start(reg, num);
+ tag_end = onig_get_callout_tag_end(reg, num);
+
+ if (tag_start == 0)
+ xsnprintf(buf, sizeof(buf), "#%d", num);
+ else {
+ /* CAUTION: tag string is not terminated with NULL. */
+ int i;
+
+ tag_len = tag_end - tag_start;
+ if (tag_len >= sizeof(buf)) tag_len = sizeof(buf) - 1;
+ for (i = 0; i < tag_len; i++) buf[i] = tag_start[i];
+ buf[tag_len] = '\0';
+ }
+
+ fprintf(fp, "ONIG-MONITOR: %-4s %s at: %d [%d - %d] len: %d\n",
+ buf,
+ in == ONIG_CALLOUT_IN_PROGRESS ? "=>" : "<=",
+ (int )(current - string),
+ (int )(start - string),
+ (int )(right - string),
+ (int )(strend - string));
+ fflush(fp);
+
+ return ONIG_CALLOUT_SUCCESS;
+}
+
+extern int
+onig_setup_builtin_monitors_by_ascii_encoded_name(void* fp /* FILE* */)
+{
+ int id;
+ char* name;
+ OnigEncoding enc;
+ unsigned int ts[4];
+ OnigValue opts[4];
+
+ if (IS_NOT_NULL(fp))
+ OutFp = (FILE* )fp;
+ else
+ OutFp = stdout;
+
+ enc = ONIG_ENCODING_ASCII;
+
+ name = "MON";
+ ts[0] = ONIG_TYPE_CHAR;
+ opts[0].c = '>';
+ BC_B_O(name, monitor, 1, ts, 1, opts);
+
+ return ONIG_NORMAL;
+}
+
+#endif /* USE_CALLOUT */
diff --git a/ext/mbstring/oniguruma/src/regext.c b/ext/mbstring/oniguruma/src/regext.c
index 1903174e5d..996d043f56 100644
--- a/ext/mbstring/oniguruma/src/regext.c
+++ b/ext/mbstring/oniguruma/src/regext.c
@@ -2,7 +2,7 @@
regext.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,7 +95,7 @@ static int
conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* end,
UChar** conv, UChar** conv_end)
{
- int len = end - s;
+ int len = (int )(end - s);
if (to == ONIG_ENCODING_UTF16_BE) {
if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) {
@@ -171,7 +171,7 @@ onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
if (ci->pattern_enc != ci->target_enc) {
r = conv_encoding(ci->pattern_enc, ci->target_enc, pattern, pattern_end,
&cpat, &cpat_end);
- if (r) return r;
+ if (r != 0) return r;
}
else {
cpat = (UChar* )pattern;
@@ -186,10 +186,10 @@ onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
r = onig_reg_init(*reg, ci->option, ci->case_fold_flag, ci->target_enc,
ci->syntax);
- if (r) goto err;
+ if (r != 0) goto err;
r = onig_compile(*reg, cpat, cpat_end, einfo);
- if (r) {
+ if (r != 0) {
err:
onig_free(*reg);
*reg = NULL;
diff --git a/ext/mbstring/oniguruma/src/reggnu.c b/ext/mbstring/oniguruma/src/reggnu.c
index 1de82fb078..37c751999e 100644
--- a/ext/mbstring/oniguruma/src/reggnu.c
+++ b/ext/mbstring/oniguruma/src/reggnu.c
@@ -2,7 +2,7 @@
reggnu.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,10 +28,7 @@
*/
#include "regint.h"
-
-#ifndef ONIGGNU_H
#include "oniggnu.h"
-#endif
extern void
re_free_registers(OnigRegion* r)
@@ -54,7 +51,7 @@ re_adjust_startpos(regex_t* reg, const char* string, int size,
else {
p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s);
}
- return p - (UChar* )string;
+ return (int )(p - (UChar* )string);
}
return startpos;
@@ -140,8 +137,7 @@ re_mbcinit(int mb_code)
break;
}
- onig_initialize(0, 0);
- onig_initialize_encoding(enc);
+ onig_initialize(&enc, 1);
onigenc_set_default_encoding(enc);
}
diff --git a/ext/mbstring/oniguruma/src/regint.h b/ext/mbstring/oniguruma/src/regint.h
index 4c9853b39d..c3d1ee1512 100644
--- a/ext/mbstring/oniguruma/src/regint.h
+++ b/ext/mbstring/oniguruma/src/regint.h
@@ -4,7 +4,7 @@
regint.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2013 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,7 +30,7 @@
*/
/* for debug */
-/* #define ONIG_DEBUG_PARSE_TREE */
+/* #define ONIG_DEBUG_PARSE */
/* #define ONIG_DEBUG_COMPILE */
/* #define ONIG_DEBUG_SEARCH */
/* #define ONIG_DEBUG_MATCH */
@@ -39,7 +39,7 @@
/* for byte-code statistical data. */
/* #define ONIG_DEBUG_STATISTICS */
-#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \
+#if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \
defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \
defined(ONIG_DEBUG_STATISTICS)
#ifndef ONIG_DEBUG
@@ -56,32 +56,49 @@
/* config */
/* spec. config */
-#define USE_NAMED_GROUP
-#define USE_SUBEXP_CALL
+#define USE_CALL
+#define USE_CALLOUT
#define USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> */
-#define USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */
+#define USE_INSISTENT_CHECK_CAPTURES_IN_EMPTY_REPEAT /* /(?:()|())*\2/ */
#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */
#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
-/* !!! moved to regenc.h. */ /* #define USE_CRNL_AS_LINE_TERMINATOR */
+
+#define USE_RETRY_LIMIT_IN_MATCH
/* internal config */
#define USE_OP_PUSH_OR_JUMP_EXACT
-#define USE_QTFR_PEEK_NEXT
+#define USE_QUANT_PEEK_NEXT
#define USE_ST_LIBRARY
+#include "regenc.h"
+
+#ifdef __cplusplus
+# ifndef HAVE_STDARG_PROTOTYPES
+# define HAVE_STDARG_PROTOTYPES 1
+# endif
+#endif
+
+/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */
+#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4
+# ifndef HAVE_STDARG_PROTOTYPES
+# define HAVE_STDARG_PROTOTYPES 1
+# endif
+#endif
+
+#ifdef HAVE_STDARG_H
+# ifndef HAVE_STDARG_PROTOTYPES
+# define HAVE_STDARG_PROTOTYPES 1
+# endif
+#endif
+
+
#define INIT_MATCH_STACK_SIZE 160
#define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */
+#define DEFAULT_RETRY_LIMIT_IN_MATCH 10000000
#define DEFAULT_PARSE_DEPTH_LIMIT 4096
-#if defined(__GNUC__)
-# define ARG_UNUSED __attribute__ ((unused))
-#else
-# define ARG_UNUSED
-#endif
-
/* */
/* escape other system UChar definition */
-#include "config.h"
#ifdef ONIG_ESCAPE_UCHAR_COLLISION
#undef ONIG_ESCAPE_UCHAR_COLLISION
#endif
@@ -91,15 +108,12 @@
#define USE_VARIABLE_META_CHARS
#define USE_POSIX_API_REGION_OPTION
#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
-/* #define USE_COMBINATION_EXPLOSION_CHECK */ /* (X*)* */
#define xmalloc malloc
#define xrealloc realloc
#define xcalloc calloc
#define xfree free
-#define CHECK_INTERRUPT_IN_MATCH_AT
-
#define st_init_table onig_st_init_table
#define st_init_table_with_size onig_st_init_table_with_size
#define st_init_numtable onig_st_init_numtable
@@ -120,9 +134,6 @@
/* */
#define onig_st_is_member st_is_member
-#define STATE_CHECK_STRING_THRESHOLD_LEN 7
-#define STATE_CHECK_BUFF_MAX_SIZE 0x4000
-
#define xmemset memset
#define xmemcpy memcpy
#define xmemmove memmove
@@ -140,10 +151,20 @@
#endif
+#include <stddef.h>
+
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
#include <alloca.h>
#endif
@@ -161,6 +182,10 @@
#endif
#endif
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
#ifdef __BORLANDC__
#include <malloc.h>
#endif
@@ -169,7 +194,12 @@
# include <stdio.h>
#endif
-#include "regenc.h"
+#ifdef _WIN32
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+#endif
+#endif
#ifdef MIN
#undef MIN
@@ -177,6 +207,7 @@
#ifdef MAX
#undef MAX
#endif
+
#define MIN(a,b) (((a)>(b))?(b):(a))
#define MAX(a,b) (((a)<(b))?(b):(a))
@@ -186,6 +217,8 @@
#define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY
#define NULL_UCHARP ((UChar* )0)
+#define INFINITE_LEN ONIG_INFINITE_DISTANCE
+
#ifdef PLATFORM_UNALIGNED_WORD_ACCESS
#define PLATFORM_GET_INC(val,p,type) do{\
@@ -208,59 +241,160 @@
#endif
#define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\
- (pad_size) = WORD_ALIGNMENT_SIZE \
- - ((size_t)(addr) % WORD_ALIGNMENT_SIZE);\
+ (pad_size) = WORD_ALIGNMENT_SIZE - ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\
if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\
} while (0)
#define ALIGNMENT_RIGHT(addr) do {\
(addr) += (WORD_ALIGNMENT_SIZE - 1);\
- (addr) -= ((size_t)(addr) % WORD_ALIGNMENT_SIZE);\
+ (addr) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\
} while (0)
#endif /* PLATFORM_UNALIGNED_WORD_ACCESS */
+
+#ifdef USE_CALLOUT
+
+typedef struct {
+ int flag;
+ OnigCalloutOf of;
+ int in;
+ int name_id;
+ const UChar* tag_start;
+ const UChar* tag_end;
+ OnigCalloutType type;
+ OnigCalloutFunc start_func;
+ OnigCalloutFunc end_func;
+ union {
+ struct {
+ const UChar* start;
+ const UChar* end;
+ } content;
+ struct {
+ int num;
+ int passed_num;
+ OnigType types[ONIG_CALLOUT_MAX_ARGS_NUM];
+ OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM];
+ } arg;
+ } u;
+} CalloutListEntry;
+
+#endif
+
+typedef struct {
+ const UChar* pattern;
+ const UChar* pattern_end;
+#ifdef USE_CALLOUT
+ void* tag_table;
+ int callout_num;
+ int callout_list_alloc;
+ CalloutListEntry* callout_list; /* index: callout num */
+#endif
+} RegexExt;
+
+#define REG_EXTP(reg) ((RegexExt* )((reg)->chain))
+#define REG_EXTPL(reg) ((reg)->chain)
+
+struct re_pattern_buffer {
+ /* common members of BBuf(bytes-buffer) */
+ unsigned char* p; /* compiled pattern */
+ unsigned int used; /* used space for p */
+ unsigned int alloc; /* allocated space for p */
+
+ int num_mem; /* used memory(...) num counted from 1 */
+ int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */
+ int num_null_check; /* OP_EMPTY_CHECK_START/END id counter */
+ int num_comb_exp_check; /* no longer used (combination explosion check) */
+ int num_call; /* number of subexp call */
+ unsigned int capture_history; /* (?@...) flag (1-31) */
+ unsigned int bt_mem_start; /* need backtrack flag */
+ unsigned int bt_mem_end; /* need backtrack flag */
+ int stack_pop_level;
+ int repeat_range_alloc;
+ OnigRepeatRange* repeat_range;
+
+ OnigEncoding enc;
+ OnigOptionType options;
+ OnigSyntaxType* syntax;
+ OnigCaseFoldType case_fold_flag;
+ void* name_table;
+
+ /* optimization info (string search, char-map and anchors) */
+ int optimize; /* optimize flag */
+ int threshold_len; /* search str-length for apply optimize */
+ int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */
+ OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */
+ OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */
+ int sub_anchor; /* start-anchor for exact or map */
+ unsigned char *exact;
+ unsigned char *exact_end;
+ unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */
+ int *int_map; /* BM skip for exact_len > 255 */
+ int *int_map_backward; /* BM skip for backward search */
+ OnigLen dmin; /* min-distance of exact or map */
+ OnigLen dmax; /* max-distance of exact or map */
+
+ /* regex_t link chain */
+ struct re_pattern_buffer* chain; /* escape compile-conflict */
+};
+
+
/* stack pop level */
-#define STACK_POP_LEVEL_FREE 0
-#define STACK_POP_LEVEL_MEM_START 1
-#define STACK_POP_LEVEL_ALL 2
+enum StackPopLevel {
+ STACK_POP_LEVEL_FREE = 0,
+ STACK_POP_LEVEL_MEM_START = 1,
+ STACK_POP_LEVEL_ALL = 2
+};
/* optimize flags */
-#define ONIG_OPTIMIZE_NONE 0
-#define ONIG_OPTIMIZE_EXACT 1 /* Slow Search */
-#define ONIG_OPTIMIZE_EXACT_BM 2 /* Boyer Moore Search */
-#define ONIG_OPTIMIZE_EXACT_BM_NOT_REV 3 /* BM (but not simple match) */
-#define ONIG_OPTIMIZE_EXACT_IC 4 /* Slow Search (ignore case) */
-#define ONIG_OPTIMIZE_MAP 5 /* char map */
+enum OptimizeType {
+ OPTIMIZE_NONE = 0,
+ OPTIMIZE_EXACT = 1, /* Slow Search */
+ OPTIMIZE_EXACT_BM = 2, /* Boyer Moore Search */
+ OPTIMIZE_EXACT_BM_NO_REV = 3, /* BM (but not simple match) */
+ OPTIMIZE_EXACT_IC = 4, /* Slow Search (ignore case) */
+ OPTIMIZE_MAP = 5 /* char map */
+};
/* bit status */
-typedef unsigned int BitStatusType;
-
-#define BIT_STATUS_BITS_NUM (sizeof(BitStatusType) * 8)
-#define BIT_STATUS_CLEAR(stats) (stats) = 0
-#define BIT_STATUS_ON_ALL(stats) (stats) = ~((BitStatusType )0)
-#define BIT_STATUS_AT(stats,n) \
- ((n) < (int )BIT_STATUS_BITS_NUM ? ((stats) & (1 << n)) : ((stats) & 1))
-
-#define BIT_STATUS_ON_AT(stats,n) do {\
- if ((n) < (int )BIT_STATUS_BITS_NUM) \
- (stats) |= (1 << (n));\
+typedef unsigned int MemStatusType;
+
+#define MEM_STATUS_BITS_NUM (sizeof(MemStatusType) * 8)
+#define MEM_STATUS_CLEAR(stats) (stats) = 0
+#define MEM_STATUS_ON_ALL(stats) (stats) = ~((MemStatusType )0)
+#define MEM_STATUS_AT(stats,n) \
+ ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1))
+#define MEM_STATUS_AT0(stats,n) \
+ ((n) > 0 && (n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1))
+
+#define MEM_STATUS_ON(stats,n) do {\
+ if ((n) < (int )MEM_STATUS_BITS_NUM) {\
+ if ((n) != 0)\
+ (stats) |= ((MemStatusType )1 << (n));\
+ }\
else\
(stats) |= 1;\
} while (0)
-#define BIT_STATUS_ON_AT_SIMPLE(stats,n) do {\
- if ((n) < (int )BIT_STATUS_BITS_NUM)\
- (stats) |= (1 << (n));\
+#define MEM_STATUS_ON_SIMPLE(stats,n) do {\
+ if ((n) < (int )MEM_STATUS_BITS_NUM)\
+ (stats) |= ((MemStatusType )1 << (n));\
} while (0)
#define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1)
+#define IS_CODE_WORD_ASCII(enc,code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
+#define IS_CODE_DIGIT_ASCII(enc, code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code))
+#define IS_CODE_XDIGIT_ASCII(enc, code) \
+ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code))
+
#define DIGITVAL(code) ((code) - '0')
#define ODIGITVAL(code) DIGITVAL(code)
#define XDIGITVAL(enc,code) \
- (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \
+ (IS_CODE_DIGIT_ASCII(enc,code) ? DIGITVAL(code) \
: (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10))
#define IS_SINGLELINE(option) ((option) & ONIG_OPTION_SINGLELINE)
@@ -275,12 +409,20 @@ typedef unsigned int BitStatusType;
#define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL)
#define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION)
-/* OP_SET_OPTION is required for these options.
-#define IS_DYNAMIC_OPTION(option) \
- (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0)
-*/
-/* ignore-case and multibyte status are included in compiled code. */
-#define IS_DYNAMIC_OPTION(option) 0
+#define IS_WORD_ASCII(option) \
+ ((option) & (ONIG_OPTION_WORD_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_DIGIT_ASCII(option) \
+ ((option) & (ONIG_OPTION_DIGIT_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_SPACE_ASCII(option) \
+ ((option) & (ONIG_OPTION_SPACE_IS_ASCII | ONIG_OPTION_POSIX_IS_ASCII))
+#define IS_POSIX_ASCII(option) ((option) & ONIG_OPTION_POSIX_IS_ASCII)
+
+#define IS_ASCII_MODE_CTYPE_OPTION(ctype, options) \
+ ((ctype) >= 0 && \
+ (((ctype) < ONIGENC_CTYPE_ASCII && IS_POSIX_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_WORD && IS_WORD_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_DIGIT && IS_DIGIT_ASCII(options)) ||\
+ ((ctype) == ONIGENC_CTYPE_SPACE && IS_SPACE_ASCII(options))))
#define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \
((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR)
@@ -306,7 +448,7 @@ typedef Bits* BitSetRef;
#define BITSET_CLEAR(bs) do {\
int i;\
- for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \
+ for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \
} while (0)
#define BS_ROOM(bs,pos) (bs)[pos / BITS_IN_ROOM]
@@ -324,21 +466,21 @@ typedef struct _BBuf {
unsigned int alloc;
} BBuf;
-#define BBUF_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
+#define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size))
-#define BBUF_SIZE_INC(buf,inc) do{\
+#define BB_SIZE_INC(buf,inc) do{\
(buf)->alloc += (inc);\
(buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
} while (0)
-#define BBUF_EXPAND(buf,low) do{\
+#define BB_EXPAND(buf,low) do{\
do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\
(buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\
if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\
} while (0)
-#define BBUF_ENSURE_SIZE(buf,size) do{\
+#define BB_ENSURE_SIZE(buf,size) do{\
unsigned int new_alloc = (buf)->alloc;\
while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\
if ((buf)->alloc != new_alloc) {\
@@ -348,74 +490,83 @@ typedef struct _BBuf {
}\
} while (0)
-#define BBUF_WRITE(buf,pos,bytes,n) do{\
+#define BB_WRITE(buf,pos,bytes,n) do{\
int used = (pos) + (n);\
- if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+ if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
xmemcpy((buf)->p + (pos), (bytes), (n));\
if ((buf)->used < (unsigned int )used) (buf)->used = used;\
} while (0)
-#define BBUF_WRITE1(buf,pos,byte) do{\
+#define BB_WRITE1(buf,pos,byte) do{\
int used = (pos) + 1;\
- if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\
+ if ((buf)->alloc < (unsigned int )used) BB_EXPAND((buf),used);\
(buf)->p[(pos)] = (byte);\
if ((buf)->used < (unsigned int )used) (buf)->used = used;\
} while (0)
-#define BBUF_ADD(buf,bytes,n) BBUF_WRITE((buf),(buf)->used,(bytes),(n))
-#define BBUF_ADD1(buf,byte) BBUF_WRITE1((buf),(buf)->used,(byte))
-#define BBUF_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used)
-#define BBUF_GET_OFFSET_POS(buf) ((buf)->used)
+#define BB_ADD(buf,bytes,n) BB_WRITE((buf),(buf)->used,(bytes),(n))
+#define BB_ADD1(buf,byte) BB_WRITE1((buf),(buf)->used,(byte))
+#define BB_GET_ADD_ADDRESS(buf) ((buf)->p + (buf)->used)
+#define BB_GET_OFFSET_POS(buf) ((buf)->used)
/* from < to */
-#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\
- if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\
+#define BB_MOVE_RIGHT(buf,from,to,n) do {\
+ if ((unsigned int )((to)+(n)) > (buf)->alloc) BB_EXPAND((buf),(to) + (n));\
xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\
} while (0)
/* from > to */
-#define BBUF_MOVE_LEFT(buf,from,to,n) do {\
+#define BB_MOVE_LEFT(buf,from,to,n) do {\
xmemmove((buf)->p + (to), (buf)->p + (from), (n));\
} while (0)
/* from > to */
-#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\
+#define BB_MOVE_LEFT_REDUCE(buf,from,to) do {\
xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\
(buf)->used -= (from - to);\
} while (0)
-#define BBUF_INSERT(buf,pos,bytes,n) do {\
+#define BB_INSERT(buf,pos,bytes,n) do {\
if (pos >= (buf)->used) {\
- BBUF_WRITE(buf,pos,bytes,n);\
+ BB_WRITE(buf,pos,bytes,n);\
}\
else {\
- BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
+ BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\
xmemcpy((buf)->p + (pos), (bytes), (n));\
}\
} while (0)
-#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)]
-
-
-#define ANCHOR_BEGIN_BUF (1<<0)
-#define ANCHOR_BEGIN_LINE (1<<1)
-#define ANCHOR_BEGIN_POSITION (1<<2)
-#define ANCHOR_END_BUF (1<<3)
-#define ANCHOR_SEMI_END_BUF (1<<4)
-#define ANCHOR_END_LINE (1<<5)
-
-#define ANCHOR_WORD_BOUND (1<<6)
-#define ANCHOR_NOT_WORD_BOUND (1<<7)
-#define ANCHOR_WORD_BEGIN (1<<8)
-#define ANCHOR_WORD_END (1<<9)
-#define ANCHOR_PREC_READ (1<<10)
-#define ANCHOR_PREC_READ_NOT (1<<11)
-#define ANCHOR_LOOK_BEHIND (1<<12)
-#define ANCHOR_LOOK_BEHIND_NOT (1<<13)
-
-#define ANCHOR_ANYCHAR_STAR (1<<14) /* ".*" optimize info */
-#define ANCHOR_ANYCHAR_STAR_ML (1<<15) /* ".*" optimize info (multi-line) */
+#define BB_GET_BYTE(buf, pos) (buf)->p[(pos)]
+
+
+/* has body */
+#define ANCHOR_PREC_READ (1<<0)
+#define ANCHOR_PREC_READ_NOT (1<<1)
+#define ANCHOR_LOOK_BEHIND (1<<2)
+#define ANCHOR_LOOK_BEHIND_NOT (1<<3)
+/* no body */
+#define ANCHOR_BEGIN_BUF (1<<4)
+#define ANCHOR_BEGIN_LINE (1<<5)
+#define ANCHOR_BEGIN_POSITION (1<<6)
+#define ANCHOR_END_BUF (1<<7)
+#define ANCHOR_SEMI_END_BUF (1<<8)
+#define ANCHOR_END_LINE (1<<9)
+#define ANCHOR_WORD_BOUNDARY (1<<10)
+#define ANCHOR_NO_WORD_BOUNDARY (1<<11)
+#define ANCHOR_WORD_BEGIN (1<<12)
+#define ANCHOR_WORD_END (1<<13)
+#define ANCHOR_ANYCHAR_INF (1<<14)
+#define ANCHOR_ANYCHAR_INF_ML (1<<15)
+#define ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<16)
+#define ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY (1<<17)
+
+
+#define ANCHOR_HAS_BODY(a) ((a)->type < ANCHOR_BEGIN_BUF)
+
+#define IS_WORD_ANCHOR_TYPE(type) \
+ ((type) == ANCHOR_WORD_BOUNDARY || (type) == ANCHOR_NO_WORD_BOUNDARY || \
+ (type) == ANCHOR_WORD_BEGIN || (type) == ANCHOR_WORD_END)
/* operation code */
enum OpCode {
@@ -444,7 +595,9 @@ enum OpCode {
OP_CCLASS_NOT,
OP_CCLASS_MB_NOT,
OP_CCLASS_MIX_NOT,
+#ifdef USE_OP_CCLASS_NODE
OP_CCLASS_NODE, /* pointer to CClassNode node */
+#endif
OP_ANYCHAR, /* "." */
OP_ANYCHAR_ML, /* "." multi-line */
@@ -454,12 +607,17 @@ enum OpCode {
OP_ANYCHAR_ML_STAR_PEEK_NEXT,
OP_WORD,
- OP_NOT_WORD,
- OP_WORD_BOUND,
- OP_NOT_WORD_BOUND,
+ OP_WORD_ASCII,
+ OP_NO_WORD,
+ OP_NO_WORD_ASCII,
+ OP_WORD_BOUNDARY,
+ OP_NO_WORD_BOUNDARY,
OP_WORD_BEGIN,
OP_WORD_END,
+ OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+ OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY,
+
OP_BEGIN_BUF,
OP_END_BUF,
OP_BEGIN_LINE,
@@ -469,11 +627,13 @@ enum OpCode {
OP_BACKREF1,
OP_BACKREF2,
- OP_BACKREFN,
- OP_BACKREFN_IC,
+ OP_BACKREF_N,
+ OP_BACKREF_N_IC,
OP_BACKREF_MULTI,
OP_BACKREF_MULTI_IC,
- OP_BACKREF_WITH_LEVEL, /* \k<xxx+n>, \k<xxx-n> */
+ OP_BACKREF_WITH_LEVEL, /* \k<xxx+n>, \k<xxx-n> */
+ OP_BACKREF_CHECK, /* (?(n)), (?('name')) */
+ OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */
OP_MEMORY_START,
OP_MEMORY_START_PUSH, /* push back-tracker to stack */
@@ -485,7 +645,8 @@ enum OpCode {
OP_FAIL, /* pop stack and move */
OP_JUMP,
OP_PUSH,
- OP_POP,
+ OP_PUSH_SUPER,
+ OP_POP_OUT,
OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */
OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */
OP_REPEAT, /* {n,m} */
@@ -494,33 +655,43 @@ enum OpCode {
OP_REPEAT_INC_NG, /* non greedy */
OP_REPEAT_INC_SG, /* search and get in stack */
OP_REPEAT_INC_NG_SG, /* search and get in stack (non greedy) */
- OP_NULL_CHECK_START, /* null loop checker start */
- OP_NULL_CHECK_END, /* null loop checker end */
- OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */
- OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */
-
- OP_PUSH_POS, /* (?=...) start */
- OP_POP_POS, /* (?=...) end */
- OP_PUSH_POS_NOT, /* (?!...) start */
- OP_FAIL_POS, /* (?!...) end */
- OP_PUSH_STOP_BT, /* (?>...) start */
- OP_POP_STOP_BT, /* (?>...) end */
- OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */
- OP_PUSH_LOOK_BEHIND_NOT, /* (?<!...) start */
- OP_FAIL_LOOK_BEHIND_NOT, /* (?<!...) end */
-
- OP_CALL, /* \g<name> */
+ OP_EMPTY_CHECK_START, /* null loop checker start */
+ OP_EMPTY_CHECK_END, /* null loop checker end */
+ OP_EMPTY_CHECK_END_MEMST, /* null loop checker end (with capture status) */
+ OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */
+
+ OP_PREC_READ_START, /* (?=...) start */
+ OP_PREC_READ_END, /* (?=...) end */
+ OP_PREC_READ_NOT_START, /* (?!...) start */
+ OP_PREC_READ_NOT_END, /* (?!...) end */
+ OP_ATOMIC_START, /* (?>...) start */
+ OP_ATOMIC_END, /* (?>...) end */
+ OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */
+ OP_LOOK_BEHIND_NOT_START, /* (?<!...) start */
+ OP_LOOK_BEHIND_NOT_END, /* (?<!...) end */
+
+ OP_CALL, /* \g<name> */
OP_RETURN,
+ OP_PUSH_SAVE_VAL,
+ OP_UPDATE_VAR,
+#ifdef USE_CALLOUT
+ OP_CALLOUT_CONTENTS, /* (?{...}) (?{{...}}) */
+ OP_CALLOUT_NAME, /* (*name) (*name[tag](args...)) */
+#endif
+};
- OP_STATE_CHECK_PUSH, /* combination explosion check and push */
- OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump */
- OP_STATE_CHECK, /* check only */
- OP_STATE_CHECK_ANYCHAR_STAR,
- OP_STATE_CHECK_ANYCHAR_ML_STAR,
+enum SaveType {
+ SAVE_KEEP = 0, /* SAVE S */
+ SAVE_S = 1,
+ SAVE_RIGHT_RANGE = 2,
+};
- /* no need: IS_DYNAMIC_OPTION() == 0 */
- OP_SET_OPTION_PUSH, /* set option and push recover option */
- OP_SET_OPTION /* set option */
+enum UpdateVarType {
+ UPDATE_VAR_KEEP_FROM_STACK_LAST = 0,
+ UPDATE_VAR_S_FROM_STACK = 1,
+ UPDATE_VAR_RIGHT_RANGE_FROM_STACK = 2,
+ UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK = 3,
+ UPDATE_VAR_RIGHT_RANGE_INIT = 4,
};
typedef int RelAddrType;
@@ -528,20 +699,23 @@ typedef int AbsAddrType;
typedef int LengthType;
typedef int RepeatNumType;
typedef int MemNumType;
-typedef short int StateCheckNumType;
typedef void* PointerType;
+typedef int SaveType;
+typedef int UpdateVarType;
+typedef int ModeType;
#define SIZE_OPCODE 1
#define SIZE_RELADDR sizeof(RelAddrType)
#define SIZE_ABSADDR sizeof(AbsAddrType)
#define SIZE_LENGTH sizeof(LengthType)
#define SIZE_MEMNUM sizeof(MemNumType)
-#define SIZE_STATE_CHECK_NUM sizeof(StateCheckNumType)
#define SIZE_REPEATNUM sizeof(RepeatNumType)
#define SIZE_OPTION sizeof(OnigOptionType)
#define SIZE_CODE_POINT sizeof(OnigCodePoint)
#define SIZE_POINTER sizeof(PointerType)
-
+#define SIZE_SAVE_TYPE sizeof(SaveType)
+#define SIZE_UPDATE_VAR_TYPE sizeof(UpdateVarType)
+#define SIZE_MODE sizeof(ModeType)
#define GET_RELADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, RelAddrType)
#define GET_ABSADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, AbsAddrType)
@@ -550,7 +724,9 @@ typedef void* PointerType;
#define GET_REPEATNUM_INC(num,p) PLATFORM_GET_INC(num, p, RepeatNumType)
#define GET_OPTION_INC(option,p) PLATFORM_GET_INC(option, p, OnigOptionType)
#define GET_POINTER_INC(ptr,p) PLATFORM_GET_INC(ptr, p, PointerType)
-#define GET_STATE_CHECK_NUM_INC(num,p) PLATFORM_GET_INC(num, p, StateCheckNumType)
+#define GET_SAVE_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, SaveType)
+#define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType)
+#define GET_MODE_INC(mode,p) PLATFORM_GET_INC(mode, p, ModeType)
/* code point's address must be aligned address. */
#define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p))
@@ -565,17 +741,17 @@ typedef void* PointerType;
#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1)
#define SIZE_OP_JUMP (SIZE_OPCODE + SIZE_RELADDR)
#define SIZE_OP_PUSH (SIZE_OPCODE + SIZE_RELADDR)
-#define SIZE_OP_POP SIZE_OPCODE
+#define SIZE_OP_PUSH_SUPER (SIZE_OPCODE + SIZE_RELADDR)
+#define SIZE_OP_POP_OUT SIZE_OPCODE
#define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1)
#define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1)
#define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM)
-#define SIZE_OP_PUSH_POS SIZE_OPCODE
-#define SIZE_OP_PUSH_POS_NOT (SIZE_OPCODE + SIZE_RELADDR)
-#define SIZE_OP_POP_POS SIZE_OPCODE
-#define SIZE_OP_FAIL_POS SIZE_OPCODE
-#define SIZE_OP_SET_OPTION (SIZE_OPCODE + SIZE_OPTION)
-#define SIZE_OP_SET_OPTION_PUSH (SIZE_OPCODE + SIZE_OPTION)
+#define SIZE_OP_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE)
+#define SIZE_OP_PREC_READ_START SIZE_OPCODE
+#define SIZE_OP_PREC_READ_NOT_START (SIZE_OPCODE + SIZE_RELADDR)
+#define SIZE_OP_PREC_READ_END SIZE_OPCODE
+#define SIZE_OP_PREC_READ_NOT_END SIZE_OPCODE
#define SIZE_OP_FAIL SIZE_OPCODE
#define SIZE_OP_MEMORY_START (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_MEMORY_START_PUSH (SIZE_OPCODE + SIZE_MEMNUM)
@@ -583,21 +759,21 @@ typedef void* PointerType;
#define SIZE_OP_MEMORY_END_PUSH_REC (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_MEMORY_END (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_MEMORY_END_REC (SIZE_OPCODE + SIZE_MEMNUM)
-#define SIZE_OP_PUSH_STOP_BT SIZE_OPCODE
-#define SIZE_OP_POP_STOP_BT SIZE_OPCODE
-#define SIZE_OP_NULL_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM)
-#define SIZE_OP_NULL_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM)
+#define SIZE_OP_ATOMIC_START SIZE_OPCODE
+#define SIZE_OP_ATOMIC_END SIZE_OPCODE
+#define SIZE_OP_EMPTY_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM)
+#define SIZE_OP_EMPTY_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM)
#define SIZE_OP_LOOK_BEHIND (SIZE_OPCODE + SIZE_LENGTH)
-#define SIZE_OP_PUSH_LOOK_BEHIND_NOT (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH)
-#define SIZE_OP_FAIL_LOOK_BEHIND_NOT SIZE_OPCODE
+#define SIZE_OP_LOOK_BEHIND_NOT_START (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH)
+#define SIZE_OP_LOOK_BEHIND_NOT_END SIZE_OPCODE
#define SIZE_OP_CALL (SIZE_OPCODE + SIZE_ABSADDR)
#define SIZE_OP_RETURN SIZE_OPCODE
+#define SIZE_OP_PUSH_SAVE_VAL (SIZE_OPCODE + SIZE_SAVE_TYPE + SIZE_MEMNUM)
+#define SIZE_OP_UPDATE_VAR (SIZE_OPCODE + SIZE_UPDATE_VAR_TYPE + SIZE_MEMNUM)
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
-#define SIZE_OP_STATE_CHECK (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
-#define SIZE_OP_STATE_CHECK_PUSH (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
-#define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)
-#define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)
+#ifdef USE_CALLOUT
+#define SIZE_OP_CALLOUT_CONTENTS (SIZE_OPCODE + SIZE_MEMNUM)
+#define SIZE_OP_CALLOUT_NAME (SIZE_OPCODE + SIZE_MEMNUM + SIZE_MEMNUM)
#endif
#define MC_ESC(syn) (syn)->meta_char_table.esc
@@ -648,129 +824,114 @@ typedef void* PointerType;
#define FLAG_NCCLASS_SHARE (1<<1)
#define NCCLASS_SET_NOT(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT)
-#define NCCLASS_SET_SHARE(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_SHARE)
#define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT)
#define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT)
-#define IS_NCCLASS_SHARE(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_SHARE)
-typedef struct {
- int type;
- /* struct _Node* next; */
- /* unsigned int flags; */
-} NodeBase;
+extern void onig_add_end_call(void (*func)(void));
-typedef struct {
- NodeBase base;
- unsigned int flags;
- BitSet bs;
- BBuf* mbuf; /* multi-byte info or NULL */
-} CClassNode;
-
-#ifdef _WIN64
-typedef __int64 OnigStackIndex;
-#else
-typedef long OnigStackIndex;
-#endif
-typedef struct _OnigStackType {
- unsigned int type;
- union {
- struct {
- UChar *pcode; /* byte code position */
- UChar *pstr; /* string position */
- UChar *pstr_prev; /* previous char position of pstr */
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- unsigned int state_check;
-#endif
- } state;
- struct {
- int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */
- UChar *pcode; /* byte code position (head of repeated target) */
- int num; /* repeat id */
- } repeat;
- struct {
- OnigStackIndex si; /* index of stack */
- } repeat_inc;
- struct {
- int num; /* memory num */
- UChar *pstr; /* start/end position */
- /* Following information is set, if this stack type is MEM-START */
- OnigStackIndex start; /* prev. info (for backtrack "(...)*" ) */
- OnigStackIndex end; /* prev. info (for backtrack "(...)*" ) */
- } mem;
- struct {
- int num; /* null check id */
- UChar *pstr; /* start position */
- } null_check;
-#ifdef USE_SUBEXP_CALL
- struct {
- UChar *ret_addr; /* byte code position */
- int num; /* null check id */
- UChar *pstr; /* string position */
- } call_frame;
+#ifdef ONIG_DEBUG
+
+#ifdef ONIG_DEBUG_COMPILE
+extern void onig_print_compiled_byte_code_list(FILE* f, regex_t* reg);
#endif
- } u;
-} OnigStackType;
-typedef struct {
- void* stack_p;
- int stack_n;
- OnigOptionType options;
- OnigRegion* region;
- int ptr_num;
- const UChar* start; /* search start position (for \G: BEGIN_POSITION) */
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
- int best_len; /* for ONIG_OPTION_FIND_LONGEST */
- UChar* best_s;
+#ifdef ONIG_DEBUG_STATISTICS
+extern void onig_statistics_init P_((void));
+extern int onig_print_statistics P_((FILE* f));
#endif
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- void* state_check_buff;
- int state_check_buff_size;
#endif
-} OnigMatchArg;
-
-
-#define IS_CODE_SB_WORD(enc,code) \
- (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))
-
-typedef struct OnigEndCallListItem {
- struct OnigEndCallListItem* next;
- void (*func)(void);
-} OnigEndCallListItemType;
-extern void onig_add_end_call(void (*func)(void));
+extern void onig_warning(const char* s);
+extern UChar* onig_error_code_to_format P_((int code));
+extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
+extern int onig_bbuf_init P_((BBuf* buf, int size));
+extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));
+extern void onig_transfer P_((regex_t* to, regex_t* from));
+extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc));
+extern RegexExt* onig_get_regex_ext(regex_t* reg);
+extern int onig_ext_set_pattern(regex_t* reg, const UChar* pattern, const UChar* pattern_end);
+
+#ifdef USE_CALLOUT
+
+extern OnigCalloutType onig_get_callout_type_by_name_id(int name_id);
+extern OnigCalloutFunc onig_get_callout_start_func_by_name_id(int id);
+extern OnigCalloutFunc onig_get_callout_end_func_by_name_id(int id);
+extern int onig_callout_tag_table_free(void* table);
+extern void onig_free_reg_callout_list(int n, CalloutListEntry* list);
+extern CalloutListEntry* onig_reg_callout_list_at(regex_t* reg, int num);
+extern OnigCalloutFunc onig_get_callout_start_func(regex_t* reg, int callout_num);
+
+/* for definition of builtin callout */
+#define BC0_P(name, func) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_PROGRESS,\
+ onig_builtin_ ## func, 0, 0, 0, 0, 0);\
+ if (id < 0) return id;\
+} while(0)
+#define BC0_R(name, func) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_RETRACTION,\
+ onig_builtin_ ## func, 0, 0, 0, 0, 0);\
+ if (id < 0) return id;\
+} while(0)
-#ifdef ONIG_DEBUG
+#define BC0_B(name, func) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_BOTH,\
+ onig_builtin_ ## func, 0, 0, 0, 0, 0);\
+ if (id < 0) return id;\
+} while(0)
-typedef struct {
- short int opcode;
- char* name;
- short int arg_type;
-} OnigOpInfoType;
+#define BC_P(name, func, na, ts) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_PROGRESS,\
+ onig_builtin_ ## func, 0, (na), (ts), 0, 0); \
+ if (id < 0) return id;\
+} while(0)
-extern OnigOpInfoType OnigOpInfo[];
+#define BC_P_O(name, func, nts, ts, nopts, opts) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_PROGRESS,\
+ onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\
+ if (id < 0) return id;\
+} while(0)
+#define BC_B(name, func, na, ts) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_BOTH,\
+ onig_builtin_ ## func, 0, (na), (ts), 0, 0);\
+ if (id < 0) return id;\
+} while(0)
-extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar** nextp, OnigEncoding enc));
+#define BC_B_O(name, func, nts, ts, nopts, opts) do {\
+ int len = onigenc_str_bytelen_null(enc, (UChar* )name);\
+ id = onig_set_callout_of_name(enc, ONIG_CALLOUT_TYPE_SINGLE,\
+ (UChar* )(name), (UChar* )((name) + len),\
+ ONIG_CALLOUT_IN_BOTH,\
+ onig_builtin_ ## func, 0, (nts), (ts), (nopts), (opts));\
+ if (id < 0) return id;\
+} while(0)
-#ifdef ONIG_DEBUG_STATISTICS
-extern void onig_statistics_init P_((void));
-extern int onig_print_statistics P_((FILE* f));
-#endif
-#endif
+#endif /* USE_CALLOUT */
-extern void onig_warning(const char* s);
-extern UChar* onig_error_code_to_format P_((int code));
-extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));
-extern int onig_bbuf_init P_((BBuf* buf, int size));
-extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));
-extern void onig_transfer P_((regex_t* to, regex_t* from));
-extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc));
-extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, CClassNode* cc));
/* strend hash */
typedef void hash_table_type;
+
#ifdef _WIN32
# include <windows.h>
typedef ULONG_PTR hash_data_type;
diff --git a/ext/mbstring/oniguruma/src/regparse.c b/ext/mbstring/oniguruma/src/regparse.c
index 1904880eff..ac5774bb2b 100644
--- a/ext/mbstring/oniguruma/src/regparse.c
+++ b/ext/mbstring/oniguruma/src/regparse.c
@@ -2,7 +2,7 @@
regparse.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,6 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#include "regparse.h"
#include "st.h"
@@ -33,10 +34,62 @@
#include <stdio.h>
#endif
+#define INIT_TAG_NAMES_ALLOC_NUM 5
+
#define WARN_BUFSIZE 256
#define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS
+#define IS_ALLOWED_CODE_IN_CALLOUT_NAME(c) \
+ ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_' /* || c == '!' */)
+#define IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c) \
+ ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '_')
+
+
+OnigSyntaxType OnigSyntaxOniguruma = {
+ (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
+ ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |
+ ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL |
+ ONIG_SYN_OP_ESC_CONTROL_CHARS |
+ ONIG_SYN_OP_ESC_C_CONTROL )
+ & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
+ , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT |
+ ONIG_SYN_OP2_OPTION_RUBY |
+ ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
+ ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
+ ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
+ ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
+ ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |
+ ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
+ ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |
+ ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
+ ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
+ ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
+ ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL |
+ ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |
+ ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 )
+ , ( SYN_GNU_REGEX_BV |
+ ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |
+ ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND |
+ ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
+ ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME |
+ ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY |
+ ONIG_SYN_WARN_CC_OP_NOT_ESCAPED |
+ ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT )
+ , ONIG_OPTION_NONE
+ ,
+ {
+ (OnigCodePoint )'\\' /* esc */
+ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */
+ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */
+ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */
+ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */
+ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */
+ }
+};
OnigSyntaxType OnigSyntaxRuby = {
(( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
@@ -48,13 +101,18 @@ OnigSyntaxType OnigSyntaxRuby = {
, ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT |
ONIG_SYN_OP2_OPTION_RUBY |
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
+ ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
+ ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
+ ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
+ ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |
ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL |
ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |
- ONIG_SYN_OP2_ESC_H_XDIGIT )
+ ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 )
, ( SYN_GNU_REGEX_BV |
ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |
ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND |
@@ -75,7 +133,7 @@ OnigSyntaxType OnigSyntaxRuby = {
}
};
-OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_RUBY;
+OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_ONIGURUMA;
extern void onig_null_warn(const char* s ARG_UNUSED) { }
@@ -140,6 +198,16 @@ onig_set_parse_depth_limit(unsigned int depth)
return 0;
}
+static int
+positive_int_multiply(int x, int y)
+{
+ if (x == 0 || y == 0) return 0;
+
+ if (x < INT_MAX / y)
+ return x * y;
+ else
+ return -1;
+}
static void
bbuf_free(BBuf* bbuf)
@@ -158,17 +226,31 @@ bbuf_clone(BBuf** rto, BBuf* from)
*rto = to = (BBuf* )xmalloc(sizeof(BBuf));
CHECK_NULL_RETURN_MEMERR(to);
- r = BBUF_INIT(to, from->alloc);
- if (r != 0) return r;
+ r = BB_INIT(to, from->alloc);
+ if (r != 0) {
+ xfree(to->p);
+ *rto = 0;
+ return r;
+ }
to->used = from->used;
xmemcpy(to->p, from->p, from->used);
return 0;
}
-#define BACKREF_REL_TO_ABS(rel_no, env) \
- ((env)->num_mem + 1 + (rel_no))
+static int backref_rel_to_abs(int rel_no, ScanEnv* env)
+{
+ if (rel_no > 0) {
+ return env->num_mem + rel_no;
+ }
+ else {
+ return env->num_mem + 1 + rel_no;
+ }
+}
+
+#define OPTION_ON(v,f) ((v) |= (f))
+#define OPTION_OFF(v,f) ((v) &= ~(f))
-#define ONOFF(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f))
+#define OPTION_NEGATE(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f))
#define MBCODE_START_POS(enc) \
(OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80)
@@ -179,7 +261,7 @@ bbuf_clone(BBuf** rto, BBuf* from)
#define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\
if (! ONIGENC_IS_SINGLEBYTE(enc)) {\
r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\
- if (r) return r;\
+ if (r != 0) return r;\
}\
} while (0)
@@ -262,33 +344,40 @@ onig_strncmp(const UChar* s1, const UChar* s2, int n)
extern void
onig_strcpy(UChar* dest, const UChar* src, const UChar* end)
{
- int len = end - src;
+ int len = (int )(end - src);
if (len > 0) {
xmemcpy(dest, src, len);
dest[len] = (UChar )0;
}
}
-#ifdef USE_NAMED_GROUP
-static UChar*
-strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
+static int
+save_entry(ScanEnv* env, enum SaveType type, int* id)
{
- int slen, term_len, i;
- UChar *r;
-
- slen = end - s;
- term_len = ONIGENC_MBC_MINLEN(enc);
+ int nid = env->save_num;
- r = (UChar* )xmalloc(slen + term_len);
- CHECK_NULL_RETURN(r);
- xmemcpy(r, s, slen);
+#if 0
+ if (IS_NULL(env->saves)) {
+ int n = 10;
+ env->saves = (SaveItem* )xmalloc(sizeof(SaveItem) * n);
+ CHECK_NULL_RETURN_MEMERR(env->saves);
+ env->save_alloc_num = n;
+ }
+ else if (env->save_alloc_num <= nid) {
+ int n = env->save_alloc_num * 2;
+ SaveItem* p = (SaveItem* )xrealloc(env->saves, sizeof(SaveItem) * n);
+ CHECK_NULL_RETURN_MEMERR(p);
+ env->saves = p;
+ env->save_alloc_num = n;
+ }
- for (i = 0; i < term_len; i++)
- r[slen + i] = (UChar )0;
+ env->saves[nid].type = type;
+#endif
- return r;
+ env->save_num++;
+ *id = nid;
+ return 0;
}
-#endif
/* scan pattern methods */
#define PEND_VALUE 0
@@ -322,7 +411,7 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
static UChar*
strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end,
- int capa)
+ int capa)
{
UChar* r;
@@ -339,7 +428,7 @@ strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end
/* dest on static area */
static UChar*
strcat_capa_from_static(UChar* dest, UChar* dest_end,
- const UChar* src, const UChar* src_end, int capa)
+ const UChar* src, const UChar* src_end, int capa)
{
UChar* r;
@@ -407,7 +496,7 @@ onig_st_init_strend_table_with_size(int size)
extern int
onig_st_lookup_strend(hash_table_type* table, const UChar* str_key,
- const UChar* end_key, hash_data_type *value)
+ const UChar* end_key, hash_data_type *value)
{
st_str_end_key key;
@@ -419,12 +508,14 @@ onig_st_lookup_strend(hash_table_type* table, const UChar* str_key,
extern int
onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
- const UChar* end_key, hash_data_type value)
+ const UChar* end_key, hash_data_type value)
{
st_str_end_key* key;
int result;
key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key));
+ CHECK_NULL_RETURN_MEMERR(key);
+
key->s = (UChar* )str_key;
key->end = (UChar* )end_key;
result = onig_st_insert(table, (st_data_t )key, value);
@@ -434,10 +525,108 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
return result;
}
-#endif /* USE_ST_LIBRARY */
+typedef struct {
+ OnigEncoding enc;
+ int type; /* callout type: single or not */
+ UChar* s;
+ UChar* end;
+} st_callout_name_key;
+
+static int
+callout_name_table_cmp(st_callout_name_key* x, st_callout_name_key* y)
+{
+ UChar *p, *q;
+ int c;
+
+ if (x->enc != y->enc) return 1;
+ if (x->type != y->type) return 1;
+ if ((x->end - x->s) != (y->end - y->s))
+ return 1;
+
+ p = x->s;
+ q = y->s;
+ while (p < x->end) {
+ c = (int )*p - (int )*q;
+ if (c != 0) return c;
+
+ p++; q++;
+ }
+
+ return 0;
+}
+
+static int
+callout_name_table_hash(st_callout_name_key* x)
+{
+ UChar *p;
+ int val = 0;
+
+ p = x->s;
+ while (p < x->end) {
+ val = val * 997 + (int )*p++;
+ }
+
+ /* use intptr_t for escape warning in Windows */
+ return val + (val >> 5) + ((intptr_t )x->enc & 0xffff) + x->type;
+}
+
+extern hash_table_type*
+onig_st_init_callout_name_table_with_size(int size)
+{
+ static struct st_hash_type hashType = {
+ callout_name_table_cmp,
+ callout_name_table_hash,
+ };
+
+ return (hash_table_type* )
+ onig_st_init_table_with_size(&hashType, size);
+}
+
+extern int
+onig_st_lookup_callout_name_table(hash_table_type* table,
+ OnigEncoding enc,
+ int type,
+ const UChar* str_key,
+ const UChar* end_key,
+ hash_data_type *value)
+{
+ st_callout_name_key key;
+
+ key.enc = enc;
+ key.type = type;
+ key.s = (UChar* )str_key;
+ key.end = (UChar* )end_key;
+
+ return onig_st_lookup(table, (st_data_t )(&key), value);
+}
+
+static int
+st_insert_callout_name_table(hash_table_type* table,
+ OnigEncoding enc, int type,
+ UChar* str_key, UChar* end_key,
+ hash_data_type value)
+{
+ st_callout_name_key* key;
+ int result;
+
+ key = (st_callout_name_key* )xmalloc(sizeof(st_callout_name_key));
+ CHECK_NULL_RETURN_MEMERR(key);
+
+ /* key->s: don't duplicate, because str_key is duped in callout_name_entry() */
+ key->enc = enc;
+ key->type = type;
+ key->s = str_key;
+ key->end = end_key;
+ result = onig_st_insert(table, (st_data_t )key, value);
+ if (result) {
+ xfree(key);
+ }
+ return result;
+}
+
+#endif /* USE_ST_LIBRARY */
-#ifdef USE_NAMED_GROUP
#define INIT_NAME_BACKREFS_ALLOC_NUM 8
@@ -452,6 +641,8 @@ typedef struct {
#ifdef USE_ST_LIBRARY
+#define INIT_NAMES_ALLOC_NUM 5
+
typedef st_table NameTable;
typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */
@@ -522,7 +713,7 @@ onig_names_free(regex_t* reg)
NameTable* t;
r = names_clear(reg);
- if (r) return r;
+ if (r != 0) return r;
t = (NameTable* )reg->name_table;
if (IS_NOT_NULL(t)) onig_st_free_table(t);
@@ -703,7 +894,7 @@ onig_names_free(regex_t* reg)
NameTable* t;
r = names_clear(reg);
- if (r) return r;
+ if (r != 0) return r;
t = (NameTable* )reg->name_table;
if (IS_NOT_NULL(t)) xfree(t);
@@ -765,6 +956,7 @@ onig_number_of_names(regex_t* reg)
static int
name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
{
+ int r;
int alloc;
NameEntry* e;
NameTable* t = (NameTable* )reg->name_table;
@@ -776,20 +968,21 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
if (IS_NULL(e)) {
#ifdef USE_ST_LIBRARY
if (IS_NULL(t)) {
- t = onig_st_init_strend_table_with_size(5);
+ t = onig_st_init_strend_table_with_size(INIT_NAMES_ALLOC_NUM);
reg->name_table = (void* )t;
}
e = (NameEntry* )xmalloc(sizeof(NameEntry));
CHECK_NULL_RETURN_MEMERR(e);
- e->name = strdup_with_null(reg->enc, name, name_end);
+ e->name = onigenc_strdup(reg->enc, name, name_end);
if (IS_NULL(e->name)) {
xfree(e); return ONIGERR_MEMORY;
}
- onig_st_insert_strend(t, e->name, (e->name + (name_end - name)),
- (HashDataType )e);
+ r = onig_st_insert_strend(t, e->name, (e->name + (name_end - name)),
+ (HashDataType )e);
+ if (r < 0) return r;
- e->name_len = name_end - name;
+ e->name_len = (int )(name_end - name);
e->back_num = 0;
e->back_alloc = 0;
e->back_refs = (int* )NULL;
@@ -832,7 +1025,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
}
e = &(t->e[t->num]);
t->num++;
- e->name = strdup_with_null(reg->enc, name, name_end);
+ e->name = onigenc_strdup(reg->enc, name, name_end);
if (IS_NULL(e->name)) return ONIGERR_MEMORY;
e->name_len = name_end - name;
#endif
@@ -874,7 +1067,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
extern int
onig_name_to_group_numbers(regex_t* reg, const UChar* name,
- const UChar* name_end, int** nums)
+ const UChar* name_end, int** nums)
{
NameEntry* e = name_find(reg, name, name_end);
@@ -895,7 +1088,7 @@ onig_name_to_group_numbers(regex_t* reg, const UChar* name,
extern int
onig_name_to_backref_number(regex_t* reg, const UChar* name,
- const UChar* name_end, OnigRegion *region)
+ const UChar* name_end, OnigRegion *region)
{
int i, n, *nums;
@@ -917,115 +1110,877 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name,
}
}
-#else /* USE_NAMED_GROUP */
+extern int
+onig_noname_group_capture_is_active(regex_t* reg)
+{
+ if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
+ return 0;
+
+ if (onig_number_of_names(reg) > 0 &&
+ IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
+ !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
+ return 0;
+ }
+
+ return 1;
+}
+
+#ifdef USE_CALLOUT
+
+typedef struct {
+ OnigCalloutType type;
+ int in;
+ OnigCalloutFunc start_func;
+ OnigCalloutFunc end_func;
+ int arg_num;
+ int opt_arg_num;
+ unsigned int arg_types[ONIG_CALLOUT_MAX_ARGS_NUM];
+ OnigValue opt_defaults[ONIG_CALLOUT_MAX_ARGS_NUM];
+ UChar* name; /* reference to GlobalCalloutNameTable entry: e->name */
+} CalloutNameListEntry;
+
+typedef struct {
+ int n;
+ int alloc;
+ CalloutNameListEntry* v;
+} CalloutNameListType;
+
+static CalloutNameListType* GlobalCalloutNameList;
+
+static int
+make_callout_func_list(CalloutNameListType** rs, int init_size)
+{
+ CalloutNameListType* s;
+ CalloutNameListEntry* v;
+
+ *rs = 0;
+
+ s = xmalloc(sizeof(*s));
+ if (IS_NULL(s)) return ONIGERR_MEMORY;
+
+ v = (CalloutNameListEntry* )xmalloc(sizeof(CalloutNameListEntry) * init_size);
+ if (IS_NULL(v)) {
+ xfree(s);
+ return ONIGERR_MEMORY;
+ }
+
+ s->n = 0;
+ s->alloc = init_size;
+ s->v = v;
+
+ *rs = s;
+ return ONIG_NORMAL;
+}
+
+static void
+free_callout_func_list(CalloutNameListType* s)
+{
+ if (IS_NOT_NULL(s)) {
+ if (IS_NOT_NULL(s->v)) {
+ int i, j;
+
+ for (i = 0; i < s->n; i++) {
+ CalloutNameListEntry* e = s->v + i;
+ for (j = e->arg_num - e->opt_arg_num; j < e->arg_num; j++) {
+ if (e->arg_types[j] == ONIG_TYPE_STRING) {
+ UChar* p = e->opt_defaults[j].s.start;
+ if (IS_NOT_NULL(p)) xfree(p);
+ }
+ }
+ }
+ xfree(s->v);
+ }
+ xfree(s);
+ }
+}
+
+static int
+callout_func_list_add(CalloutNameListType* s, int* rid)
+{
+ if (s->n >= s->alloc) {
+ int new_size = s->alloc * 2;
+ CalloutNameListEntry* nv = (CalloutNameListEntry* )
+ xrealloc(s->v, sizeof(CalloutNameListEntry) * new_size);
+ if (IS_NULL(nv)) return ONIGERR_MEMORY;
+
+ s->alloc = new_size;
+ s->v = nv;
+ }
+
+ *rid = s->n;
+
+ xmemset(&(s->v[s->n]), 0, sizeof(*(s->v)));
+ s->n++;
+ return ONIG_NORMAL;
+}
+
+
+typedef struct {
+ UChar* name;
+ int name_len; /* byte length */
+ int id;
+} CalloutNameEntry;
+
+#ifdef USE_ST_LIBRARY
+typedef st_table CalloutNameTable;
+#else
+typedef struct {
+ CalloutNameEntry* e;
+ int num;
+ int alloc;
+} CalloutNameTable;
+#endif
+
+static CalloutNameTable* GlobalCalloutNameTable;
+static int CalloutNameIDCounter;
+
+#ifdef USE_ST_LIBRARY
+
+static int
+i_free_callout_name_entry(st_callout_name_key* key, CalloutNameEntry* e,
+ void* arg ARG_UNUSED)
+{
+ xfree(e->name);
+ /*xfree(key->s); */ /* is same as e->name */
+ xfree(key);
+ xfree(e);
+ return ST_DELETE;
+}
+
+static int
+callout_name_table_clear(CalloutNameTable* t)
+{
+ if (IS_NOT_NULL(t)) {
+ onig_st_foreach(t, i_free_callout_name_entry, 0);
+ }
+ return 0;
+}
+
+static int
+global_callout_name_table_free(void)
+{
+ if (IS_NOT_NULL(GlobalCalloutNameTable)) {
+ int r = callout_name_table_clear(GlobalCalloutNameTable);
+ if (r != 0) return r;
+
+ onig_st_free_table(GlobalCalloutNameTable);
+ GlobalCalloutNameTable = 0;
+ CalloutNameIDCounter = 0;
+ }
+
+ return 0;
+}
+
+static CalloutNameEntry*
+callout_name_find(OnigEncoding enc, int is_not_single,
+ const UChar* name, const UChar* name_end)
+{
+ int r;
+ CalloutNameEntry* e;
+ CalloutNameTable* t = GlobalCalloutNameTable;
+
+ e = (CalloutNameEntry* )NULL;
+ if (IS_NOT_NULL(t)) {
+ r = onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end,
+ (HashDataType* )((void* )(&e)));
+ if (r == 0) { /* not found */
+ if (enc != ONIG_ENCODING_ASCII &&
+ ONIGENC_IS_ASCII_COMPATIBLE_ENCODING(enc)) {
+ enc = ONIG_ENCODING_ASCII;
+ onig_st_lookup_callout_name_table(t, enc, is_not_single, name, name_end,
+ (HashDataType* )((void* )(&e)));
+ }
+ }
+ }
+ return e;
+}
+
+#else
+
+static int
+callout_name_table_clear(CalloutNameTable* t)
+{
+ int i;
+ CalloutNameEntry* e;
+
+ if (IS_NOT_NULL(t)) {
+ for (i = 0; i < t->num; i++) {
+ e = &(t->e[i]);
+ if (IS_NOT_NULL(e->name)) {
+ xfree(e->name);
+ e->name = NULL;
+ e->name_len = 0;
+ e->id = 0;
+ e->func = 0;
+ }
+ }
+ if (IS_NOT_NULL(t->e)) {
+ xfree(t->e);
+ t->e = NULL;
+ }
+ t->num = 0;
+ }
+ return 0;
+}
+
+static int
+global_callout_name_table_free(void)
+{
+ if (IS_NOT_NULL(GlobalCalloutNameTable)) {
+ int r = callout_name_table_clear(GlobalCalloutNameTable);
+ if (r != 0) return r;
+
+ xfree(GlobalCalloutNameTable);
+ GlobalCalloutNameTable = 0;
+ CalloutNameIDCounter = 0;
+ }
+ return 0;
+}
+
+static CalloutNameEntry*
+callout_name_find(UChar* name, UChar* name_end)
+{
+ int i, len;
+ CalloutNameEntry* e;
+ CalloutNameTable* t = Calloutnames;
+
+ if (IS_NOT_NULL(t)) {
+ len = name_end - name;
+ for (i = 0; i < t->num; i++) {
+ e = &(t->e[i]);
+ if (len == e->name_len && onig_strncmp(name, e->name, len) == 0)
+ return e;
+ }
+ }
+ return (CalloutNameEntry* )NULL;
+}
+
+#endif
+
+/* name string must be single byte char string. */
+static int
+callout_name_entry(CalloutNameEntry** rentry, OnigEncoding enc,
+ int is_not_single, UChar* name, UChar* name_end)
+{
+ int r;
+ CalloutNameEntry* e;
+ CalloutNameTable* t = GlobalCalloutNameTable;
+
+ *rentry = 0;
+ if (name_end - name <= 0)
+ return ONIGERR_INVALID_CALLOUT_NAME;
+
+ e = callout_name_find(enc, is_not_single, name, name_end);
+ if (IS_NULL(e)) {
+#ifdef USE_ST_LIBRARY
+ if (IS_NULL(t)) {
+ t = onig_st_init_callout_name_table_with_size(INIT_NAMES_ALLOC_NUM);
+ GlobalCalloutNameTable = t;
+ }
+ e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry));
+ CHECK_NULL_RETURN_MEMERR(e);
+
+ e->name = onigenc_strdup(enc, name, name_end);
+ if (IS_NULL(e->name)) {
+ xfree(e); return ONIGERR_MEMORY;
+ }
+
+ r = st_insert_callout_name_table(t, enc, is_not_single,
+ e->name, (e->name + (name_end - name)),
+ (HashDataType )e);
+ if (r < 0) return r;
+
+#else
+
+ int alloc;
+
+ if (IS_NULL(t)) {
+ alloc = INIT_NAMES_ALLOC_NUM;
+ t = (CalloutNameTable* )xmalloc(sizeof(CalloutNameTable));
+ CHECK_NULL_RETURN_MEMERR(t);
+ t->e = NULL;
+ t->alloc = 0;
+ t->num = 0;
+
+ t->e = (CalloutNameEntry* )xmalloc(sizeof(CalloutNameEntry) * alloc);
+ if (IS_NULL(t->e)) {
+ xfree(t);
+ return ONIGERR_MEMORY;
+ }
+ t->alloc = alloc;
+ GlobalCalloutNameTable = t;
+ goto clear;
+ }
+ else if (t->num == t->alloc) {
+ int i;
+
+ alloc = t->alloc * 2;
+ t->e = (CalloutNameEntry* )xrealloc(t->e, sizeof(CalloutNameEntry) * alloc);
+ CHECK_NULL_RETURN_MEMERR(t->e);
+ t->alloc = alloc;
+
+ clear:
+ for (i = t->num; i < t->alloc; i++) {
+ t->e[i].name = NULL;
+ t->e[i].name_len = 0;
+ t->e[i].id = 0;
+ }
+ }
+ e = &(t->e[t->num]);
+ t->num++;
+ e->name = onigenc_strdup(enc, name, name_end);
+ if (IS_NULL(e->name)) return ONIGERR_MEMORY;
+#endif
+
+ CalloutNameIDCounter++;
+ e->id = CalloutNameIDCounter;
+ e->name_len = (int )(name_end - name);
+ }
+
+ *rentry = e;
+ return e->id;
+}
+
+static int
+is_allowed_callout_name(OnigEncoding enc, UChar* name, UChar* name_end)
+{
+ UChar* p;
+ OnigCodePoint c;
+
+ if (name >= name_end) return 0;
+
+ p = name;
+ while (p < name_end) {
+ c = ONIGENC_MBC_TO_CODE(enc, p, name_end);
+ if (! IS_ALLOWED_CODE_IN_CALLOUT_NAME(c))
+ return 0;
+
+ if (p == name) {
+ if (c >= '0' && c <= '9') return 0;
+ }
+
+ p += ONIGENC_MBC_ENC_LEN(enc, p);
+ }
+
+ return 1;
+}
+
+static int
+is_allowed_callout_tag_name(OnigEncoding enc, UChar* name, UChar* name_end)
+{
+ UChar* p;
+ OnigCodePoint c;
+
+ if (name >= name_end) return 0;
+
+ p = name;
+ while (p < name_end) {
+ c = ONIGENC_MBC_TO_CODE(enc, p, name_end);
+ if (! IS_ALLOWED_CODE_IN_CALLOUT_TAG_NAME(c))
+ return 0;
+
+ if (p == name) {
+ if (c >= '0' && c <= '9') return 0;
+ }
+
+ p += ONIGENC_MBC_ENC_LEN(enc, p);
+ }
+
+ return 1;
+}
extern int
-onig_name_to_group_numbers(regex_t* reg, const UChar* name,
- const UChar* name_end, int** nums)
+onig_set_callout_of_name(OnigEncoding enc, OnigCalloutType callout_type,
+ UChar* name, UChar* name_end, int in,
+ OnigCalloutFunc start_func,
+ OnigCalloutFunc end_func,
+ int arg_num, unsigned int arg_types[],
+ int opt_arg_num, OnigValue opt_defaults[])
+{
+ int r;
+ int i;
+ int j;
+ int id;
+ int is_not_single;
+ CalloutNameEntry* e;
+ CalloutNameListEntry* fe;
+
+ if (callout_type != ONIG_CALLOUT_TYPE_SINGLE)
+ return ONIGERR_INVALID_ARGUMENT;
+
+ if (arg_num < 0 || arg_num > ONIG_CALLOUT_MAX_ARGS_NUM)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ if (opt_arg_num < 0 || opt_arg_num > arg_num)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ if (start_func == 0 && end_func == 0)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ if ((in & ONIG_CALLOUT_IN_PROGRESS) == 0 && (in & ONIG_CALLOUT_IN_RETRACTION) == 0)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ for (i = 0; i < arg_num; i++) {
+ unsigned int t = arg_types[i];
+ if (t == ONIG_TYPE_VOID)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+ else {
+ if (i >= arg_num - opt_arg_num) {
+ if (t != ONIG_TYPE_LONG && t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING &&
+ t != ONIG_TYPE_TAG)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+ }
+ else {
+ if (t != ONIG_TYPE_LONG) {
+ t = t & ~ONIG_TYPE_LONG;
+ if (t != ONIG_TYPE_CHAR && t != ONIG_TYPE_STRING && t != ONIG_TYPE_TAG)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+ }
+ }
+ }
+ }
+
+ if (! is_allowed_callout_name(enc, name, name_end)) {
+ return ONIGERR_INVALID_CALLOUT_NAME;
+ }
+
+ is_not_single = (callout_type != ONIG_CALLOUT_TYPE_SINGLE);
+ id = callout_name_entry(&e, enc, is_not_single, name, name_end);
+ if (id < 0) return id;
+
+ r = ONIG_NORMAL;
+ if (IS_NULL(GlobalCalloutNameList)) {
+ r = make_callout_func_list(&GlobalCalloutNameList, 10);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ while (id >= GlobalCalloutNameList->n) {
+ int rid;
+ r = callout_func_list_add(GlobalCalloutNameList, &rid);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ fe = GlobalCalloutNameList->v + id;
+ fe->type = callout_type;
+ fe->in = in;
+ fe->start_func = start_func;
+ fe->end_func = end_func;
+ fe->arg_num = arg_num;
+ fe->opt_arg_num = opt_arg_num;
+ fe->name = e->name;
+
+ for (i = 0; i < arg_num; i++) {
+ fe->arg_types[i] = arg_types[i];
+ }
+ for (i = arg_num - opt_arg_num, j = 0; i < arg_num; i++, j++) {
+ if (fe->arg_types[i] == ONIG_TYPE_STRING) {
+ OnigValue* val = opt_defaults + j;
+ UChar* ds = onigenc_strdup(enc, val->s.start, val->s.end);
+ CHECK_NULL_RETURN_MEMERR(ds);
+
+ fe->opt_defaults[i].s.start = ds;
+ fe->opt_defaults[i].s.end = ds + (val->s.end - val->s.start);
+ }
+ else {
+ fe->opt_defaults[i] = opt_defaults[j];
+ }
+ }
+
+ r = id;
+ return r;
+}
+
+static int
+get_callout_name_id_by_name(OnigEncoding enc, int is_not_single,
+ UChar* name, UChar* name_end, int* rid)
{
- return ONIG_NO_SUPPORT_CONFIG;
+ int r;
+ CalloutNameEntry* e;
+
+ if (! is_allowed_callout_name(enc, name, name_end)) {
+ return ONIGERR_INVALID_CALLOUT_NAME;
+ }
+
+ e = callout_name_find(enc, is_not_single, name, name_end);
+ if (IS_NULL(e)) {
+ return ONIGERR_UNDEFINED_CALLOUT_NAME;
+ }
+
+ r = ONIG_NORMAL;
+ *rid = e->id;
+
+ return r;
+}
+
+extern OnigCalloutFunc
+onig_get_callout_start_func(regex_t* reg, int callout_num)
+{
+ /* If used for callouts of contents, return 0. */
+ CalloutListEntry* e;
+
+ e = onig_reg_callout_list_at(reg, callout_num);
+ return e->start_func;
+}
+
+extern const UChar*
+onig_get_callout_tag_start(regex_t* reg, int callout_num)
+{
+ CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num);
+ return e->tag_start;
+}
+
+extern const UChar*
+onig_get_callout_tag_end(regex_t* reg, int callout_num)
+{
+ CalloutListEntry* e = onig_reg_callout_list_at(reg, callout_num);
+ return e->tag_end;
+}
+
+
+extern OnigCalloutType
+onig_get_callout_type_by_name_id(int name_id)
+{
+ if (name_id < 0 || name_id >= GlobalCalloutNameList->n)
+ return 0;
+
+ return GlobalCalloutNameList->v[name_id].type;
+}
+
+extern OnigCalloutFunc
+onig_get_callout_start_func_by_name_id(int name_id)
+{
+ if (name_id < 0 || name_id >= GlobalCalloutNameList->n)
+ return 0;
+
+ return GlobalCalloutNameList->v[name_id].start_func;
+}
+
+extern OnigCalloutFunc
+onig_get_callout_end_func_by_name_id(int name_id)
+{
+ if (name_id < 0 || name_id >= GlobalCalloutNameList->n)
+ return 0;
+
+ return GlobalCalloutNameList->v[name_id].end_func;
}
extern int
-onig_name_to_backref_number(regex_t* reg, const UChar* name,
- const UChar* name_end, OnigRegion* region)
+onig_get_callout_in_by_name_id(int name_id)
+{
+ if (name_id < 0 || name_id >= GlobalCalloutNameList->n)
+ return 0;
+
+ return GlobalCalloutNameList->v[name_id].in;
+}
+
+static int
+get_callout_arg_num_by_name_id(int name_id)
+{
+ return GlobalCalloutNameList->v[name_id].arg_num;
+}
+
+static int
+get_callout_opt_arg_num_by_name_id(int name_id)
+{
+ return GlobalCalloutNameList->v[name_id].opt_arg_num;
+}
+
+static unsigned int
+get_callout_arg_type_by_name_id(int name_id, int index)
+{
+ return GlobalCalloutNameList->v[name_id].arg_types[index];
+}
+
+static OnigValue
+get_callout_opt_default_by_name_id(int name_id, int index)
{
- return ONIG_NO_SUPPORT_CONFIG;
+ return GlobalCalloutNameList->v[name_id].opt_defaults[index];
+}
+
+extern UChar*
+onig_get_callout_name_by_name_id(int name_id)
+{
+ if (name_id < 0 || name_id >= GlobalCalloutNameList->n)
+ return 0;
+
+ return GlobalCalloutNameList->v[name_id].name;
}
extern int
-onig_foreach_name(regex_t* reg,
- int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)
+onig_global_callout_names_free(void)
{
- return ONIG_NO_SUPPORT_CONFIG;
+ free_callout_func_list(GlobalCalloutNameList);
+ GlobalCalloutNameList = 0;
+
+ global_callout_name_table_free();
+ return ONIG_NORMAL;
+}
+
+
+typedef st_table CalloutTagTable;
+typedef intptr_t CalloutTagVal;
+
+#define CALLOUT_TAG_LIST_FLAG_TAG_EXIST (1<<0)
+
+static int
+i_callout_callout_list_set(UChar* key, CalloutTagVal e, void* arg)
+{
+ int num;
+ RegexExt* ext = (RegexExt* )arg;
+
+ num = (int )e - 1;
+ ext->callout_list[num].flag |= CALLOUT_TAG_LIST_FLAG_TAG_EXIST;
+ return ST_CONTINUE;
+}
+
+static int
+setup_ext_callout_list_values(regex_t* reg)
+{
+ int i, j;
+ RegexExt* ext;
+
+ ext = REG_EXTP(reg);
+ if (IS_NOT_NULL(ext->tag_table)) {
+ onig_st_foreach((CalloutTagTable *)ext->tag_table, i_callout_callout_list_set,
+ (st_data_t )ext);
+ }
+
+ for (i = 0; i < ext->callout_num; i++) {
+ CalloutListEntry* e = ext->callout_list + i;
+ if (e->of == ONIG_CALLOUT_OF_NAME) {
+ for (j = 0; j < e->u.arg.num; j++) {
+ if (e->u.arg.types[j] == ONIG_TYPE_TAG) {
+ UChar* start;
+ UChar* end;
+ int num;
+ start = e->u.arg.vals[j].s.start;
+ end = e->u.arg.vals[j].s.end;
+ num = onig_get_callout_num_by_tag(reg, start, end);
+ if (num < 0) return num;
+ e->u.arg.vals[j].tag = num;
+ }
+ }
+ }
+ }
+
+ return ONIG_NORMAL;
}
extern int
-onig_number_of_names(regex_t* reg)
+onig_callout_tag_is_exist_at_callout_num(regex_t* reg, int callout_num)
+{
+ RegexExt* ext = REG_EXTP(reg);
+
+ if (IS_NULL(ext) || IS_NULL(ext->callout_list)) return 0;
+ if (callout_num > ext->callout_num) return 0;
+
+ return (ext->callout_list[callout_num].flag &
+ CALLOUT_TAG_LIST_FLAG_TAG_EXIST) != 0 ? 1 : 0;
+}
+
+static int
+i_free_callout_tag_entry(UChar* key, CalloutTagVal e, void* arg ARG_UNUSED)
{
+ xfree(key);
+ return ST_DELETE;
+}
+
+static int
+callout_tag_table_clear(CalloutTagTable* t)
+{
+ if (IS_NOT_NULL(t)) {
+ onig_st_foreach(t, i_free_callout_tag_entry, 0);
+ }
return 0;
}
-#endif /* else USE_NAMED_GROUP */
extern int
-onig_noname_group_capture_is_active(regex_t* reg)
+onig_callout_tag_table_free(void* table)
{
- if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
- return 0;
+ CalloutTagTable* t = (CalloutTagTable* )table;
-#ifdef USE_NAMED_GROUP
- if (onig_number_of_names(reg) > 0 &&
- IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&
- !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {
- return 0;
+ if (IS_NOT_NULL(t)) {
+ int r = callout_tag_table_clear(t);
+ if (r != 0) return r;
+
+ onig_st_free_table(t);
}
-#endif
- return 1;
+ return 0;
}
+extern int
+onig_get_callout_num_by_tag(regex_t* reg,
+ const UChar* tag, const UChar* tag_end)
+{
+ int r;
+ RegexExt* ext;
+ CalloutTagVal e;
-#define INIT_SCANENV_MEMNODES_ALLOC_SIZE 16
+ ext = REG_EXTP(reg);
+ if (IS_NULL(ext) || IS_NULL(ext->tag_table))
+ return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ r = onig_st_lookup_strend(ext->tag_table, tag, tag_end,
+ (HashDataType* )((void* )(&e)));
+ if (r == 0) return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+ return (int )e;
+}
+
+static CalloutTagVal
+callout_tag_find(CalloutTagTable* t, const UChar* name, const UChar* name_end)
+{
+ CalloutTagVal e;
+
+ e = -1;
+ if (IS_NOT_NULL(t)) {
+ onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e)));
+ }
+ return e;
+}
+
+static int
+callout_tag_table_new(CalloutTagTable** rt)
+{
+ CalloutTagTable* t;
+
+ *rt = 0;
+ t = onig_st_init_strend_table_with_size(INIT_TAG_NAMES_ALLOC_NUM);
+ CHECK_NULL_RETURN_MEMERR(t);
+
+ *rt = t;
+ return ONIG_NORMAL;
+}
+
+static int
+callout_tag_entry_raw(CalloutTagTable* t, UChar* name, UChar* name_end,
+ CalloutTagVal entry_val)
+{
+ int r;
+ CalloutTagVal val;
+
+ if (name_end - name <= 0)
+ return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ val = callout_tag_find(t, name, name_end);
+ if (val >= 0)
+ return ONIGERR_MULTIPLEX_DEFINED_NAME;
+
+ r = onig_st_insert_strend(t, name, name_end, (HashDataType )entry_val);
+ if (r < 0) return r;
+
+ return ONIG_NORMAL;
+}
+
+static int
+ext_ensure_tag_table(regex_t* reg)
+{
+ int r;
+ RegexExt* ext;
+ CalloutTagTable* t;
+
+ ext = onig_get_regex_ext(reg);
+ CHECK_NULL_RETURN_MEMERR(ext);
+
+ if (IS_NULL(ext->tag_table)) {
+ r = callout_tag_table_new(&t);
+ if (r != ONIG_NORMAL) return r;
+
+ ext->tag_table = t;
+ }
+
+ return ONIG_NORMAL;
+}
+
+static int
+callout_tag_entry(regex_t* reg, UChar* name, UChar* name_end,
+ CalloutTagVal entry_val)
+{
+ int r;
+ RegexExt* ext;
+ CalloutListEntry* e;
+
+ r = ext_ensure_tag_table(reg);
+ if (r != ONIG_NORMAL) return r;
+
+ ext = onig_get_regex_ext(reg);
+ r = callout_tag_entry_raw(ext->tag_table, name, name_end, entry_val);
+
+ e = onig_reg_callout_list_at(reg, (int )entry_val);
+ e->tag_start = name;
+ e->tag_end = name_end;
+
+ return r;
+}
+
+#endif /* USE_CALLOUT */
+
+
+#define INIT_SCANENV_MEMENV_ALLOC_SIZE 16
static void
scan_env_clear(ScanEnv* env)
{
- int i;
-
- BIT_STATUS_CLEAR(env->capture_history);
- BIT_STATUS_CLEAR(env->bt_mem_start);
- BIT_STATUS_CLEAR(env->bt_mem_end);
- BIT_STATUS_CLEAR(env->backrefed_mem);
+ MEM_STATUS_CLEAR(env->capture_history);
+ MEM_STATUS_CLEAR(env->bt_mem_start);
+ MEM_STATUS_CLEAR(env->bt_mem_end);
+ MEM_STATUS_CLEAR(env->backrefed_mem);
env->error = (UChar* )NULL;
env->error_end = (UChar* )NULL;
env->num_call = 0;
+
+#ifdef USE_CALL
+ env->unset_addr_list = NULL;
+ env->has_call_zero = 0;
+#endif
+
env->num_mem = 0;
-#ifdef USE_NAMED_GROUP
env->num_named = 0;
-#endif
- env->mem_alloc = 0;
- env->mem_nodes_dynamic = (Node** )NULL;
+ env->mem_alloc = 0;
+ env->mem_env_dynamic = (MemEnv* )NULL;
- for (i = 0; i < SCANENV_MEMNODES_SIZE; i++)
- env->mem_nodes_static[i] = NULL_NODE;
+ xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static));
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- env->num_comb_exp_check = 0;
- env->comb_exp_max_regnum = 0;
- env->curr_max_regnum = 0;
- env->has_recursion = 0;
-#endif
env->parse_depth = 0;
+ env->keep_num = 0;
+ env->save_num = 0;
+ env->save_alloc_num = 0;
+ env->saves = 0;
}
static int
scan_env_add_mem_entry(ScanEnv* env)
{
int i, need, alloc;
- Node** p;
+ MemEnv* p;
need = env->num_mem + 1;
if (need > MaxCaptureNum && MaxCaptureNum != 0)
return ONIGERR_TOO_MANY_CAPTURES;
- if (need >= SCANENV_MEMNODES_SIZE) {
+ if (need >= SCANENV_MEMENV_SIZE) {
if (env->mem_alloc <= need) {
- if (IS_NULL(env->mem_nodes_dynamic)) {
- alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE;
- p = (Node** )xmalloc(sizeof(Node*) * alloc);
- xmemcpy(p, env->mem_nodes_static,
- sizeof(Node*) * SCANENV_MEMNODES_SIZE);
+ if (IS_NULL(env->mem_env_dynamic)) {
+ alloc = INIT_SCANENV_MEMENV_ALLOC_SIZE;
+ p = (MemEnv* )xmalloc(sizeof(MemEnv) * alloc);
+ CHECK_NULL_RETURN_MEMERR(p);
+ xmemcpy(p, env->mem_env_static, sizeof(env->mem_env_static));
}
else {
alloc = env->mem_alloc * 2;
- p = (Node** )xrealloc(env->mem_nodes_dynamic, sizeof(Node*) * alloc);
+ p = (MemEnv* )xrealloc(env->mem_env_dynamic, sizeof(MemEnv) * alloc);
+ CHECK_NULL_RETURN_MEMERR(p);
}
- CHECK_NULL_RETURN_MEMERR(p);
- for (i = env->num_mem + 1; i < alloc; i++)
- p[i] = NULL_NODE;
+ for (i = env->num_mem + 1; i < alloc; i++) {
+ p[i].node = NULL_NODE;
+#if 0
+ p[i].in = 0;
+ p[i].recursion = 0;
+#endif
+ }
- env->mem_nodes_dynamic = p;
+ env->mem_env_dynamic = p;
env->mem_alloc = alloc;
}
}
@@ -1038,7 +1993,7 @@ static int
scan_env_set_mem_node(ScanEnv* env, int num, Node* node)
{
if (env->num_mem >= num)
- SCANENV_MEM_NODES(env)[num] = node;
+ SCANENV_MEMENV(env)[num].node = node;
else
return ONIGERR_PARSER_BUG;
return 0;
@@ -1054,19 +2009,19 @@ onig_node_free(Node* node)
fprintf(stderr, "onig_node_free: %p\n", node);
#endif
- switch (NTYPE(node)) {
- case NT_STR:
- if (NSTR(node)->capa != 0 &&
- IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) {
- xfree(NSTR(node)->s);
+ switch (NODE_TYPE(node)) {
+ case NODE_STRING:
+ if (STR_(node)->capa != 0 &&
+ IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) {
+ xfree(STR_(node)->s);
}
break;
- case NT_LIST:
- case NT_ALT:
- onig_node_free(NCAR(node));
+ case NODE_LIST:
+ case NODE_ALT:
+ onig_node_free(NODE_CAR(node));
{
- Node* next_node = NCDR(node);
+ Node* next_node = NODE_CDR(node);
xfree(node);
node = next_node;
@@ -1074,47 +2029,64 @@ onig_node_free(Node* node)
}
break;
- case NT_CCLASS:
+ case NODE_CCLASS:
{
- CClassNode* cc = NCCLASS(node);
+ CClassNode* cc = CCLASS_(node);
- if (IS_NCCLASS_SHARE(cc)) return ;
if (cc->mbuf)
bbuf_free(cc->mbuf);
}
break;
- case NT_QTFR:
- if (NQTFR(node)->target)
- onig_node_free(NQTFR(node)->target);
+ case NODE_BACKREF:
+ if (IS_NOT_NULL(BACKREF_(node)->back_dynamic))
+ xfree(BACKREF_(node)->back_dynamic);
break;
- case NT_ENCLOSE:
- if (NENCLOSE(node)->target)
- onig_node_free(NENCLOSE(node)->target);
+ case NODE_ENCLOSURE:
+ if (NODE_BODY(node))
+ onig_node_free(NODE_BODY(node));
+
+ {
+ EnclosureNode* en = ENCLOSURE_(node);
+ if (en->type == ENCLOSURE_IF_ELSE) {
+ onig_node_free(en->te.Then);
+ onig_node_free(en->te.Else);
+ }
+ }
break;
- case NT_BREF:
- if (IS_NOT_NULL(NBREF(node)->back_dynamic))
- xfree(NBREF(node)->back_dynamic);
+ case NODE_QUANT:
+ case NODE_ANCHOR:
+ if (NODE_BODY(node))
+ onig_node_free(NODE_BODY(node));
break;
- case NT_ANCHOR:
- if (NANCHOR(node)->target)
- onig_node_free(NANCHOR(node)->target);
+ case NODE_CTYPE:
+ case NODE_CALL:
+ case NODE_GIMMICK:
break;
}
xfree(node);
}
+static void
+cons_node_free_alone(Node* node)
+{
+ NODE_CAR(node) = 0;
+ NODE_CDR(node) = 0;
+ onig_node_free(node);
+}
+
static Node*
node_new(void)
{
Node* node;
node = (Node* )xmalloc(sizeof(Node));
- /* xmemset(node, 0, sizeof(Node)); */
+ xmemset(node, 0, sizeof(*node));
+
#ifdef DEBUG_NODE_FREE
fprintf(stderr, "node_new: %p\n", node);
#endif
@@ -1126,7 +2098,6 @@ static void
initialize_cclass(CClassNode* cc)
{
BITSET_CLEAR(cc->bs);
- /* cc->base.flags = 0; */
cc->flags = 0;
cc->mbuf = NULL;
}
@@ -1137,42 +2108,76 @@ node_new_cclass(void)
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_CCLASS);
- initialize_cclass(NCCLASS(node));
+ NODE_SET_TYPE(node, NODE_CCLASS);
+ initialize_cclass(CCLASS_(node));
return node;
}
static Node*
-node_new_ctype(int type, int not)
+node_new_ctype(int type, int not, OnigOptionType options)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_CTYPE);
- NCTYPE(node)->ctype = type;
- NCTYPE(node)->not = not;
+ NODE_SET_TYPE(node, NODE_CTYPE);
+ CTYPE_(node)->ctype = type;
+ CTYPE_(node)->not = not;
+ CTYPE_(node)->options = options;
+ CTYPE_(node)->ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(type, options);
return node;
}
static Node*
node_new_anychar(void)
{
- Node* node = node_new();
- CHECK_NULL_RETURN(node);
+ Node* node = node_new_ctype(CTYPE_ANYCHAR, 0, ONIG_OPTION_NONE);
+ return node;
+}
+
+static Node*
+node_new_anychar_with_fixed_option(OnigOptionType option)
+{
+ CtypeNode* ct;
+ Node* node;
- SET_NTYPE(node, NT_CANY);
+ node = node_new_anychar();
+ ct = CTYPE_(node);
+ ct->options = option;
+ NODE_STATUS_ADD(node, FIXED_OPTION);
return node;
}
+static int
+node_new_no_newline(Node** node, ScanEnv* env)
+{
+ Node* n;
+
+ n = node_new_anychar_with_fixed_option(ONIG_OPTION_NONE);
+ CHECK_NULL_RETURN_MEMERR(n);
+ *node = n;
+ return 0;
+}
+
+static int
+node_new_true_anychar(Node** node, ScanEnv* env)
+{
+ Node* n;
+
+ n = node_new_anychar_with_fixed_option(ONIG_OPTION_MULTILINE);
+ CHECK_NULL_RETURN_MEMERR(n);
+ *node = n;
+ return 0;
+}
+
static Node*
node_new_list(Node* left, Node* right)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_LIST);
- NCAR(node) = left;
- NCDR(node) = right;
+ NODE_SET_TYPE(node, NODE_LIST);
+ NODE_CAR(node) = left;
+ NODE_CDR(node) = right;
return node;
}
@@ -1191,10 +2196,10 @@ onig_node_list_add(Node* list, Node* x)
if (IS_NULL(n)) return NULL_NODE;
if (IS_NOT_NULL(list)) {
- while (IS_NOT_NULL(NCDR(list)))
- list = NCDR(list);
+ while (IS_NOT_NULL(NODE_CDR(list)))
+ list = NODE_CDR(list);
- NCDR(list) = n;
+ NODE_CDR(list) = n;
}
return n;
@@ -1206,62 +2211,107 @@ onig_node_new_alt(Node* left, Node* right)
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_ALT);
- NCAR(node) = left;
- NCDR(node) = right;
+ NODE_SET_TYPE(node, NODE_ALT);
+ NODE_CAR(node) = left;
+ NODE_CDR(node) = right;
return node;
}
+static Node*
+make_list_or_alt(NodeType type, int n, Node* ns[])
+{
+ Node* r;
+
+ if (n <= 0) return NULL_NODE;
+
+ if (n == 1) {
+ r = node_new();
+ CHECK_NULL_RETURN(r);
+ NODE_SET_TYPE(r, type);
+ NODE_CAR(r) = ns[0];
+ NODE_CDR(r) = NULL_NODE;
+ }
+ else {
+ Node* right;
+
+ r = node_new();
+ CHECK_NULL_RETURN(r);
+
+ right = make_list_or_alt(type, n - 1, ns + 1);
+ if (IS_NULL(right)) {
+ onig_node_free(r);
+ return NULL_NODE;
+ }
+
+ NODE_SET_TYPE(r, type);
+ NODE_CAR(r) = ns[0];
+ NODE_CDR(r) = right;
+ }
+
+ return r;
+}
+
+static Node*
+make_list(int n, Node* ns[])
+{
+ return make_list_or_alt(NODE_LIST, n, ns);
+}
+
+static Node*
+make_alt(int n, Node* ns[])
+{
+ return make_list_or_alt(NODE_ALT, n, ns);
+}
+
extern Node*
-onig_node_new_anchor(int type)
+onig_node_new_anchor(int type, int ascii_mode)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_ANCHOR);
- NANCHOR(node)->type = type;
- NANCHOR(node)->target = NULL;
- NANCHOR(node)->char_len = -1;
+ NODE_SET_TYPE(node, NODE_ANCHOR);
+ ANCHOR_(node)->type = type;
+ ANCHOR_(node)->char_len = -1;
+ ANCHOR_(node)->ascii_mode = ascii_mode;
return node;
}
static Node*
node_new_backref(int back_num, int* backrefs, int by_name,
#ifdef USE_BACKREF_WITH_LEVEL
- int exist_level, int nest_level,
+ int exist_level, int nest_level,
#endif
- ScanEnv* env)
+ ScanEnv* env)
{
int i;
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_BREF);
- NBREF(node)->state = 0;
- NBREF(node)->back_num = back_num;
- NBREF(node)->back_dynamic = (int* )NULL;
+ NODE_SET_TYPE(node, NODE_BACKREF);
+ BACKREF_(node)->back_num = back_num;
+ BACKREF_(node)->back_dynamic = (int* )NULL;
if (by_name != 0)
- NBREF(node)->state |= NST_NAME_REF;
+ NODE_STATUS_ADD(node, BY_NAME);
#ifdef USE_BACKREF_WITH_LEVEL
if (exist_level != 0) {
- NBREF(node)->state |= NST_NEST_LEVEL;
- NBREF(node)->nest_level = nest_level;
+ NODE_STATUS_ADD(node, NEST_LEVEL);
+ BACKREF_(node)->nest_level = nest_level;
}
#endif
for (i = 0; i < back_num; i++) {
if (backrefs[i] <= env->num_mem &&
- IS_NULL(SCANENV_MEM_NODES(env)[backrefs[i]])) {
- NBREF(node)->state |= NST_RECURSION; /* /...(\1).../ */
+ IS_NULL(SCANENV_MEMENV(env)[backrefs[i]].node)) {
+ NODE_STATUS_ADD(node, RECURSION); /* /...(\1).../ */
break;
}
}
if (back_num <= NODE_BACKREFS_SIZE) {
for (i = 0; i < back_num; i++)
- NBREF(node)->back_static[i] = backrefs[i];
+ BACKREF_(node)->back_static[i] = backrefs[i];
}
else {
int* p = (int* )xmalloc(sizeof(int) * back_num);
@@ -1269,26 +2319,46 @@ node_new_backref(int back_num, int* backrefs, int by_name,
onig_node_free(node);
return NULL;
}
- NBREF(node)->back_dynamic = p;
+ BACKREF_(node)->back_dynamic = p;
for (i = 0; i < back_num; i++)
p[i] = backrefs[i];
}
return node;
}
-#ifdef USE_SUBEXP_CALL
static Node*
-node_new_call(UChar* name, UChar* name_end, int gnum)
+node_new_backref_checker(int back_num, int* backrefs, int by_name,
+#ifdef USE_BACKREF_WITH_LEVEL
+ int exist_level, int nest_level,
+#endif
+ ScanEnv* env)
+{
+ Node* node;
+
+ node = node_new_backref(back_num, backrefs, by_name,
+#ifdef USE_BACKREF_WITH_LEVEL
+ exist_level, nest_level,
+#endif
+ env);
+ CHECK_NULL_RETURN(node);
+
+ NODE_STATUS_ADD(node, CHECKER);
+ return node;
+}
+
+#ifdef USE_CALL
+static Node*
+node_new_call(UChar* name, UChar* name_end, int gnum, int by_number)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_CALL);
- NCALL(node)->state = 0;
- NCALL(node)->target = NULL_NODE;
- NCALL(node)->name = name;
- NCALL(node)->name_end = name_end;
- NCALL(node)->group_num = gnum; /* call by number if gnum != 0 */
+ NODE_SET_TYPE(node, NODE_CALL);
+ CALL_(node)->by_number = by_number;
+ CALL_(node)->name = name;
+ CALL_(node)->name_end = name_end;
+ CALL_(node)->group_num = gnum;
+ CALL_(node)->entry_count = 1;
return node;
}
#endif
@@ -1299,103 +2369,740 @@ node_new_quantifier(int lower, int upper, int by_number)
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_QTFR);
- NQTFR(node)->state = 0;
- NQTFR(node)->target = NULL;
- NQTFR(node)->lower = lower;
- NQTFR(node)->upper = upper;
- NQTFR(node)->greedy = 1;
- NQTFR(node)->target_empty_info = NQ_TARGET_ISNOT_EMPTY;
- NQTFR(node)->head_exact = NULL_NODE;
- NQTFR(node)->next_head_exact = NULL_NODE;
- NQTFR(node)->is_refered = 0;
+ NODE_SET_TYPE(node, NODE_QUANT);
+ QUANT_(node)->lower = lower;
+ QUANT_(node)->upper = upper;
+ QUANT_(node)->greedy = 1;
+ QUANT_(node)->body_empty_info = QUANT_BODY_IS_NOT_EMPTY;
+ QUANT_(node)->head_exact = NULL_NODE;
+ QUANT_(node)->next_head_exact = NULL_NODE;
+ QUANT_(node)->is_refered = 0;
if (by_number != 0)
- NQTFR(node)->state |= NST_BY_NUMBER;
-
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- NQTFR(node)->comb_exp_check_num = 0;
-#endif
+ NODE_STATUS_ADD(node, BY_NUMBER);
return node;
}
static Node*
-node_new_enclose(int type)
+node_new_enclosure(enum EnclosureType type)
{
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_ENCLOSE);
- NENCLOSE(node)->type = type;
- NENCLOSE(node)->state = 0;
- NENCLOSE(node)->regnum = 0;
- NENCLOSE(node)->option = 0;
- NENCLOSE(node)->target = NULL;
- NENCLOSE(node)->call_addr = -1;
- NENCLOSE(node)->opt_count = 0;
+ NODE_SET_TYPE(node, NODE_ENCLOSURE);
+ ENCLOSURE_(node)->type = type;
+
+ switch (type) {
+ case ENCLOSURE_MEMORY:
+ ENCLOSURE_(node)->m.regnum = 0;
+ ENCLOSURE_(node)->m.called_addr = -1;
+ ENCLOSURE_(node)->m.entry_count = 1;
+ ENCLOSURE_(node)->m.called_state = 0;
+ break;
+
+ case ENCLOSURE_OPTION:
+ ENCLOSURE_(node)->o.options = 0;
+ break;
+
+ case ENCLOSURE_STOP_BACKTRACK:
+ break;
+
+ case ENCLOSURE_IF_ELSE:
+ ENCLOSURE_(node)->te.Then = 0;
+ ENCLOSURE_(node)->te.Else = 0;
+ break;
+ }
+
+ ENCLOSURE_(node)->opt_count = 0;
return node;
}
extern Node*
-onig_node_new_enclose(int type)
+onig_node_new_enclosure(int type)
{
- return node_new_enclose(type);
+ return node_new_enclosure(type);
+}
+
+static Node*
+node_new_enclosure_if_else(Node* cond, Node* Then, Node* Else)
+{
+ Node* n;
+ n = node_new_enclosure(ENCLOSURE_IF_ELSE);
+ CHECK_NULL_RETURN(n);
+
+ NODE_BODY(n) = cond;
+ ENCLOSURE_(n)->te.Then = Then;
+ ENCLOSURE_(n)->te.Else = Else;
+ return n;
}
static Node*
-node_new_enclose_memory(OnigOptionType option, int is_named)
+node_new_memory(int is_named)
{
- Node* node = node_new_enclose(ENCLOSE_MEMORY);
+ Node* node = node_new_enclosure(ENCLOSURE_MEMORY);
CHECK_NULL_RETURN(node);
if (is_named != 0)
- SET_ENCLOSE_STATUS(node, NST_NAMED_GROUP);
+ NODE_STATUS_ADD(node, NAMED_GROUP);
-#ifdef USE_SUBEXP_CALL
- NENCLOSE(node)->option = option;
-#endif
return node;
}
static Node*
node_new_option(OnigOptionType option)
{
- Node* node = node_new_enclose(ENCLOSE_OPTION);
+ Node* node = node_new_enclosure(ENCLOSURE_OPTION);
CHECK_NULL_RETURN(node);
- NENCLOSE(node)->option = option;
+ ENCLOSURE_(node)->o.options = option;
return node;
}
+static int
+node_new_fail(Node** node, ScanEnv* env)
+{
+ *node = node_new();
+ CHECK_NULL_RETURN_MEMERR(*node);
+
+ NODE_SET_TYPE(*node, NODE_GIMMICK);
+ GIMMICK_(*node)->type = GIMMICK_FAIL;
+ return ONIG_NORMAL;
+}
+
+static int
+node_new_save_gimmick(Node** node, enum SaveType save_type, ScanEnv* env)
+{
+ int id;
+ int r;
+
+ r = save_entry(env, save_type, &id);
+ if (r != ONIG_NORMAL) return r;
+
+ *node = node_new();
+ CHECK_NULL_RETURN_MEMERR(*node);
+
+ NODE_SET_TYPE(*node, NODE_GIMMICK);
+ GIMMICK_(*node)->id = id;
+ GIMMICK_(*node)->type = GIMMICK_SAVE;
+ GIMMICK_(*node)->detail_type = (int )save_type;
+
+ return ONIG_NORMAL;
+}
+
+static int
+node_new_update_var_gimmick(Node** node, enum UpdateVarType update_var_type,
+ int id, ScanEnv* env)
+{
+ *node = node_new();
+ CHECK_NULL_RETURN_MEMERR(*node);
+
+ NODE_SET_TYPE(*node, NODE_GIMMICK);
+ GIMMICK_(*node)->id = id;
+ GIMMICK_(*node)->type = GIMMICK_UPDATE_VAR;
+ GIMMICK_(*node)->detail_type = (int )update_var_type;
+
+ return ONIG_NORMAL;
+}
+
+static int
+node_new_keep(Node** node, ScanEnv* env)
+{
+ int r;
+
+ r = node_new_save_gimmick(node, SAVE_KEEP, env);
+ if (r != 0) return r;
+
+ env->keep_num++;
+ return ONIG_NORMAL;
+}
+
+#ifdef USE_CALLOUT
+
+extern void
+onig_free_reg_callout_list(int n, CalloutListEntry* list)
+{
+ int i;
+ int j;
+
+ if (IS_NULL(list)) return ;
+
+ for (i = 0; i < n; i++) {
+ if (list[i].of == ONIG_CALLOUT_OF_NAME) {
+ for (j = 0; j < list[i].u.arg.passed_num; j++) {
+ if (list[i].u.arg.types[j] == ONIG_TYPE_STRING) {
+ if (IS_NOT_NULL(list[i].u.arg.vals[j].s.start))
+ xfree(list[i].u.arg.vals[j].s.start);
+ }
+ }
+ }
+ else { /* ONIG_CALLOUT_OF_CONTENTS */
+ if (IS_NOT_NULL(list[i].u.content.start)) {
+ xfree((void* )list[i].u.content.start);
+ }
+ }
+ }
+
+ xfree(list);
+}
+
+extern CalloutListEntry*
+onig_reg_callout_list_at(regex_t* reg, int num)
+{
+ RegexExt* ext = REG_EXTP(reg);
+ CHECK_NULL_RETURN(ext);
+
+ if (num <= 0 || num > ext->callout_num)
+ return 0;
+
+ num--;
+ return ext->callout_list + num;
+}
+
+static int
+reg_callout_list_entry(ScanEnv* env, int* rnum)
+{
+#define INIT_CALLOUT_LIST_NUM 3
+
+ int num;
+ CalloutListEntry* list;
+ CalloutListEntry* e;
+ RegexExt* ext;
+
+ ext = onig_get_regex_ext(env->reg);
+ CHECK_NULL_RETURN_MEMERR(ext);
+
+ if (IS_NULL(ext->callout_list)) {
+ list = (CalloutListEntry* )xmalloc(sizeof(*list) * INIT_CALLOUT_LIST_NUM);
+ CHECK_NULL_RETURN_MEMERR(list);
+
+ ext->callout_list = list;
+ ext->callout_list_alloc = INIT_CALLOUT_LIST_NUM;
+ ext->callout_num = 0;
+ }
+
+ num = ext->callout_num + 1;
+ if (num > ext->callout_list_alloc) {
+ int alloc = ext->callout_list_alloc * 2;
+ list = (CalloutListEntry* )xrealloc(ext->callout_list,
+ sizeof(CalloutListEntry) * alloc);
+ CHECK_NULL_RETURN_MEMERR(list);
+
+ ext->callout_list = list;
+ ext->callout_list_alloc = alloc;
+ }
+
+ e = ext->callout_list + (num - 1);
+
+ e->flag = 0;
+ e->of = 0;
+ e->in = ONIG_CALLOUT_OF_CONTENTS;
+ e->type = 0;
+ e->tag_start = 0;
+ e->tag_end = 0;
+ e->start_func = 0;
+ e->end_func = 0;
+ e->u.arg.num = 0;
+ e->u.arg.passed_num = 0;
+
+ ext->callout_num = num;
+ *rnum = num;
+ return ONIG_NORMAL;
+}
+
+static int
+node_new_callout(Node** node, OnigCalloutOf callout_of, int num, int id,
+ ScanEnv* env)
+{
+ *node = node_new();
+ CHECK_NULL_RETURN_MEMERR(*node);
+
+ NODE_SET_TYPE(*node, NODE_GIMMICK);
+ GIMMICK_(*node)->id = id;
+ GIMMICK_(*node)->num = num;
+ GIMMICK_(*node)->type = GIMMICK_CALLOUT;
+ GIMMICK_(*node)->detail_type = (int )callout_of;
+
+ return ONIG_NORMAL;
+}
+#endif
+
+static int
+make_extended_grapheme_cluster(Node** node, ScanEnv* env)
+{
+ int r;
+ int i;
+ Node* x;
+ Node* ns[2];
+
+ /* \X == (?>\O(?:\Y\O)*) */
+
+ ns[1] = NULL_NODE;
+
+ r = ONIGERR_MEMORY;
+ ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0);
+ if (IS_NULL(ns[0])) goto err;
+
+ r = node_new_true_anychar(&ns[1], env);
+ if (r != 0) goto err1;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err;
+ ns[0] = x;
+ ns[1] = NULL_NODE;
+
+ x = node_new_quantifier(0, REPEAT_INFINITE, 1);
+ if (IS_NULL(x)) goto err;
+
+ NODE_BODY(x) = ns[0];
+ ns[0] = NULL_NODE;
+ ns[1] = x;
+
+ r = node_new_true_anychar(&ns[0], env);
+ if (r != 0) goto err1;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err;
+
+ ns[0] = x;
+ ns[1] = NULL_NODE;
+
+ x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ if (IS_NULL(x)) goto err;
+
+ NODE_BODY(x) = ns[0];
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err:
+ r = ONIGERR_MEMORY;
+ err1:
+ for (i = 0; i < 2; i++) onig_node_free(ns[i]);
+ return r;
+}
+
+static int
+make_absent_engine(Node** node, int pre_save_right_id, Node* absent,
+ Node* step_one, int lower, int upper, int possessive,
+ int is_range_cutter, ScanEnv* env)
+{
+ int r;
+ int i;
+ int id;
+ Node* x;
+ Node* ns[4];
+
+ for (i = 0; i < 4; i++) ns[i] = NULL_NODE;
+
+ ns[1] = absent;
+ ns[3] = step_one; /* for err */
+ r = node_new_save_gimmick(&ns[0], SAVE_S, env);
+ if (r != 0) goto err;
+
+ id = GIMMICK_(ns[0])->id;
+ r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK,
+ id, env);
+ if (r != 0) goto err;
+
+ r = node_new_fail(&ns[3], env);
+ if (r != 0) goto err;
+
+ x = make_list(4, ns);
+ if (IS_NULL(x)) goto err0;
+
+ ns[0] = x;
+ ns[1] = step_one;
+ ns[2] = ns[3] = NULL_NODE;
+
+ x = make_alt(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ ns[0] = x;
+
+ x = node_new_quantifier(lower, upper, 0);
+ if (IS_NULL(x)) goto err0;
+
+ NODE_BODY(x) = ns[0];
+ ns[0] = x;
+
+ if (possessive != 0) {
+ x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
+ if (IS_NULL(x)) goto err0;
+
+ NODE_BODY(x) = ns[0];
+ ns[0] = x;
+ }
+
+ r = node_new_update_var_gimmick(&ns[1], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ pre_save_right_id, env);
+ if (r != 0) goto err;
+
+ r = node_new_fail(&ns[2], env);
+ if (r != 0) goto err;
+
+ x = make_list(2, ns + 1);
+ if (IS_NULL(x)) goto err0;
+
+ ns[1] = x; ns[2] = NULL_NODE;
+
+ x = make_alt(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ if (is_range_cutter != 0)
+ NODE_STATUS_ADD(x, SUPER);
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ for (i = 0; i < 4; i++) onig_node_free(ns[i]);
+ return r;
+}
+
+static int
+make_absent_tail(Node** node1, Node** node2, int pre_save_right_id,
+ ScanEnv* env)
+{
+ int r;
+ int id;
+ Node* save;
+ Node* x;
+ Node* ns[2];
+
+ *node1 = *node2 = NULL_NODE;
+ save = ns[0] = ns[1] = NULL_NODE;
+
+ r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env);
+ if (r != 0) goto err;
+
+ id = GIMMICK_(save)->id;
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ id, env);
+ if (r != 0) goto err;
+
+ r = node_new_fail(&ns[1], env);
+ if (r != 0) goto err;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ ns[0] = NULL_NODE; ns[1] = x;
+
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ pre_save_right_id, env);
+ if (r != 0) goto err;
+
+ x = make_alt(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ *node1 = save;
+ *node2 = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ onig_node_free(save);
+ onig_node_free(ns[0]);
+ onig_node_free(ns[1]);
+ return r;
+}
+
+static int
+make_range_clear(Node** node, ScanEnv* env)
+{
+ int r;
+ int id;
+ Node* save;
+ Node* x;
+ Node* ns[2];
+
+ *node = NULL_NODE;
+ save = ns[0] = ns[1] = NULL_NODE;
+
+ r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env);
+ if (r != 0) goto err;
+
+ id = GIMMICK_(save)->id;
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ id, env);
+ if (r != 0) goto err;
+
+ r = node_new_fail(&ns[1], env);
+ if (r != 0) goto err;
+
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ ns[0] = NULL_NODE; ns[1] = x;
+
+ r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env);
+ if (r != 0) goto err;
+
+ x = make_alt(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ NODE_STATUS_ADD(x, SUPER);
+
+ ns[0] = save;
+ ns[1] = x;
+ save = NULL_NODE;
+ x = make_list(2, ns);
+ if (IS_NULL(x)) goto err0;
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ onig_node_free(save);
+ onig_node_free(ns[0]);
+ onig_node_free(ns[1]);
+ return r;
+}
+
+static int
+is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody,
+ int* is_possessive, ScanEnv* env)
+{
+ Node* quant;
+ Node* body;
+
+ *rquant = *rbody = 0;
+ *is_possessive = 0;
+
+ if (NODE_TYPE(node) == NODE_QUANT) {
+ quant = node;
+ }
+ else {
+ if (NODE_TYPE(node) == NODE_ENCLOSURE) {
+ EnclosureNode* en = ENCLOSURE_(node);
+ if (en->type == ENCLOSURE_STOP_BACKTRACK) {
+ *is_possessive = 1;
+ quant = NODE_ENCLOSURE_BODY(en);
+ if (NODE_TYPE(quant) != NODE_QUANT)
+ return 0;
+ }
+ else
+ return 0;
+ }
+ else
+ return 0;
+ }
+
+ if (QUANT_(quant)->greedy == 0)
+ return 0;
+
+ body = NODE_BODY(quant);
+ switch (NODE_TYPE(body)) {
+ case NODE_STRING:
+ {
+ int len;
+ StrNode* sn = STR_(body);
+ UChar *s = sn->s;
+
+ len = 0;
+ while (s < sn->end) {
+ s += enclen(env->enc, s);
+ len++;
+ }
+ if (len != 1)
+ return 0;
+ }
+
+ case NODE_CCLASS:
+ break;
+
+ default:
+ return 0;
+ break;
+ }
+
+ if (node != quant) {
+ NODE_BODY(node) = 0;
+ onig_node_free(node);
+ }
+ NODE_BODY(quant) = NULL_NODE;
+ *rquant = quant;
+ *rbody = body;
+ return 1;
+}
+
+static int
+make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* quant,
+ Node* body, int possessive, ScanEnv* env)
+{
+ int r;
+ int i;
+ int id1;
+ int lower, upper;
+ Node* x;
+ Node* ns[4];
+
+ *node = NULL_NODE;
+ r = ONIGERR_MEMORY;
+ ns[0] = ns[1] = NULL_NODE;
+ ns[2] = body, ns[3] = absent;
+
+ lower = QUANT_(quant)->lower;
+ upper = QUANT_(quant)->upper;
+ onig_node_free(quant);
+
+ r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env);
+ if (r != 0) goto err;
+
+ id1 = GIMMICK_(ns[0])->id;
+
+ r = make_absent_engine(&ns[1], id1, absent, body, lower, upper, possessive,
+ 0, env);
+ if (r != 0) goto err;
+
+ ns[2] = ns[3] = NULL_NODE;
+
+ r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK,
+ id1, env);
+ if (r != 0) goto err;
+
+ x = make_list(3, ns);
+ if (IS_NULL(x)) goto err0;
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ for (i = 0; i < 4; i++) onig_node_free(ns[i]);
+ return r;
+}
+
+static int
+make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter,
+ ScanEnv* env)
+{
+ int r;
+ int i;
+ int id1, id2;
+ int possessive;
+ Node* x;
+ Node* ns[7];
+
+ r = ONIGERR_MEMORY;
+ for (i = 0; i < 7; i++) ns[i] = NULL_NODE;
+ ns[4] = expr; ns[5] = absent;
+
+ if (is_range_cutter == 0) {
+ Node* quant;
+ Node* body;
+
+ if (expr == NULL_NODE) {
+ /* default expr \O* */
+ quant = node_new_quantifier(0, REPEAT_INFINITE, 0);
+ if (IS_NULL(quant)) goto err0;
+
+ r = node_new_true_anychar(&body, env);
+ if (r != 0) {
+ onig_node_free(quant);
+ goto err;
+ }
+ possessive = 0;
+ goto simple;
+ }
+ else {
+ if (is_simple_one_char_repeat(expr, &quant, &body, &possessive, env)) {
+ simple:
+ r = make_absent_tree_for_simple_one_char_repeat(node, absent, quant,
+ body, possessive, env);
+ if (r != 0) {
+ ns[4] = NULL_NODE;
+ onig_node_free(quant);
+ onig_node_free(body);
+ goto err;
+ }
+
+ return ONIG_NORMAL;
+ }
+ }
+ }
+
+ r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env);
+ if (r != 0) goto err;
+
+ id1 = GIMMICK_(ns[0])->id;
+
+ r = node_new_save_gimmick(&ns[1], SAVE_S, env);
+ if (r != 0) goto err;
+
+ id2 = GIMMICK_(ns[1])->id;
+
+ r = node_new_true_anychar(&ns[3], env);
+ if (r != 0) goto err;
+
+ possessive = 1;
+ r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, REPEAT_INFINITE,
+ possessive, is_range_cutter, env);
+ if (r != 0) goto err;
+
+ ns[3] = NULL_NODE;
+ ns[5] = NULL_NODE;
+
+ r = node_new_update_var_gimmick(&ns[3], UPDATE_VAR_S_FROM_STACK, id2, env);
+ if (r != 0) goto err;
+
+ if (is_range_cutter != 0) {
+ x = make_list(4, ns);
+ if (IS_NULL(x)) goto err0;
+ }
+ else {
+ r = make_absent_tail(&ns[5], &ns[6], id1, env);
+ if (r != 0) goto err;
+
+ x = make_list(7, ns);
+ if (IS_NULL(x)) goto err0;
+ }
+
+ *node = x;
+ return ONIG_NORMAL;
+
+ err0:
+ r = ONIGERR_MEMORY;
+ err:
+ for (i = 0; i < 7; i++) onig_node_free(ns[i]);
+ return r;
+}
+
extern int
onig_node_str_cat(Node* node, const UChar* s, const UChar* end)
{
- int addlen = end - s;
+ int addlen = (int )(end - s);
if (addlen > 0) {
- int len = NSTR(node)->end - NSTR(node)->s;
+ int len = (int )(STR_(node)->end - STR_(node)->s);
- if (NSTR(node)->capa > 0 || (len + addlen > NODE_STR_BUF_SIZE - 1)) {
+ if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) {
UChar* p;
- int capa = len + addlen + NODE_STR_MARGIN;
+ int capa = len + addlen + NODE_STRING_MARGIN;
- if (capa <= NSTR(node)->capa) {
- onig_strcpy(NSTR(node)->s + len, s, end);
+ if (capa <= STR_(node)->capa) {
+ onig_strcpy(STR_(node)->s + len, s, end);
}
else {
- if (NSTR(node)->s == NSTR(node)->buf)
- p = strcat_capa_from_static(NSTR(node)->s, NSTR(node)->end,
+ if (STR_(node)->s == STR_(node)->buf)
+ p = strcat_capa_from_static(STR_(node)->s, STR_(node)->end,
s, end, capa);
else
- p = strcat_capa(NSTR(node)->s, NSTR(node)->end, s, end, capa);
+ p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa);
CHECK_NULL_RETURN_MEMERR(p);
- NSTR(node)->s = p;
- NSTR(node)->capa = capa;
+ STR_(node)->s = p;
+ STR_(node)->capa = capa;
}
}
else {
- onig_strcpy(NSTR(node)->s + len, s, end);
+ onig_strcpy(STR_(node)->s + len, s, end);
}
- NSTR(node)->end = NSTR(node)->s + len + addlen;
+ STR_(node)->end = STR_(node)->s + len + addlen;
}
return 0;
@@ -1420,25 +3127,25 @@ node_str_cat_char(Node* node, UChar c)
extern void
onig_node_conv_to_str_node(Node* node, int flag)
{
- SET_NTYPE(node, NT_STR);
- NSTR(node)->flag = flag;
- NSTR(node)->capa = 0;
- NSTR(node)->s = NSTR(node)->buf;
- NSTR(node)->end = NSTR(node)->buf;
+ NODE_SET_TYPE(node, NODE_STRING);
+ STR_(node)->flag = flag;
+ STR_(node)->capa = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
}
extern void
onig_node_str_clear(Node* node)
{
- if (NSTR(node)->capa != 0 &&
- IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) {
- xfree(NSTR(node)->s);
+ if (STR_(node)->capa != 0 &&
+ IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) {
+ xfree(STR_(node)->s);
}
- NSTR(node)->capa = 0;
- NSTR(node)->flag = 0;
- NSTR(node)->s = NSTR(node)->buf;
- NSTR(node)->end = NSTR(node)->buf;
+ STR_(node)->capa = 0;
+ STR_(node)->flag = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
}
static Node*
@@ -1447,11 +3154,11 @@ node_new_str(const UChar* s, const UChar* end)
Node* node = node_new();
CHECK_NULL_RETURN(node);
- SET_NTYPE(node, NT_STR);
- NSTR(node)->capa = 0;
- NSTR(node)->flag = 0;
- NSTR(node)->s = NSTR(node)->buf;
- NSTR(node)->end = NSTR(node)->buf;
+ NODE_SET_TYPE(node, NODE_STRING);
+ STR_(node)->capa = 0;
+ STR_(node)->flag = 0;
+ STR_(node)->s = STR_(node)->buf;
+ STR_(node)->end = STR_(node)->buf;
if (onig_node_str_cat(node, s, end)) {
onig_node_free(node);
return NULL;
@@ -1469,7 +3176,7 @@ static Node*
node_new_str_raw(UChar* s, UChar* end)
{
Node* node = node_new_str(s, end);
- NSTRING_SET_RAW(node);
+ NODE_STRING_SET_RAW(node);
return node;
}
@@ -1489,27 +3196,31 @@ node_new_str_raw_char(UChar c)
}
static Node*
-str_node_split_last_char(StrNode* sn, OnigEncoding enc)
+str_node_split_last_char(Node* node, OnigEncoding enc)
{
const UChar *p;
- Node* n = NULL_NODE;
+ Node* rn;
+ StrNode* sn;
+ sn = STR_(node);
+ rn = NULL_NODE;
if (sn->end > sn->s) {
p = onigenc_get_prev_char_head(enc, sn->s, sn->end);
if (p && p > sn->s) { /* can be split. */
- n = node_new_str(p, sn->end);
- if ((sn->flag & NSTR_RAW) != 0)
- NSTRING_SET_RAW(n);
+ rn = node_new_str(p, sn->end);
+ if (NODE_STRING_IS_RAW(node))
+ NODE_STRING_SET_RAW(rn);
sn->end = (UChar* )p;
}
}
- return n;
+ return rn;
}
static int
-str_node_can_be_split(StrNode* sn, OnigEncoding enc)
+str_node_can_be_split(Node* node, OnigEncoding enc)
{
+ StrNode* sn = STR_(node);
if (sn->end > sn->s) {
return ((enclen(enc, sn->s) < sn->end - sn->s) ? 1 : 0);
}
@@ -1520,7 +3231,7 @@ str_node_can_be_split(StrNode* sn, OnigEncoding enc)
static int
node_str_head_pad(StrNode* sn, int num, UChar val)
{
- UChar buf[NODE_STR_BUF_SIZE];
+ UChar buf[NODE_STRING_BUF_SIZE];
int i, len;
len = sn->end - sn->s;
@@ -1543,9 +3254,9 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
PFETCH_READY;
num = 0;
- while (!PEND) {
+ while (! PEND) {
PFETCH(c);
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
val = (unsigned int )DIGITVAL(c);
if ((INT_MAX_LIMIT - val) / 10UL < num)
return -1; /* overflow */
@@ -1562,21 +3273,24 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)
}
static int
-scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
- OnigEncoding enc)
+scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int minlen,
+ int maxlen, OnigEncoding enc)
{
OnigCodePoint c;
unsigned int num, val;
+ int n;
UChar* p = *src;
PFETCH_READY;
num = 0;
- while (! PEND && maxlen-- != 0) {
+ n = 0;
+ while (! PEND && n < maxlen) {
PFETCH(c);
- if (ONIGENC_IS_CODE_XDIGIT(enc, c)) {
+ if (IS_CODE_XDIGIT_ASCII(enc, c)) {
+ n++;
val = (unsigned int )XDIGITVAL(enc,c);
if ((INT_MAX_LIMIT - val) / 16UL < num)
- return -1; /* overflow */
+ return ONIGERR_TOO_BIG_NUMBER; /* overflow */
num = (num << 4) + XDIGITVAL(enc,c);
}
@@ -1585,13 +3299,17 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,
break;
}
}
+
+ if (n < minlen)
+ return ONIGERR_INVALID_CODE_POINT_VALUE;
+
*src = p;
return num;
}
static int
scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
- OnigEncoding enc)
+ OnigEncoding enc)
{
OnigCodePoint c;
unsigned int num, val;
@@ -1599,9 +3317,9 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
PFETCH_READY;
num = 0;
- while (!PEND && maxlen-- != 0) {
+ while (! PEND && maxlen-- != 0) {
PFETCH(c);
- if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') {
+ if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') {
val = ODIGITVAL(c);
if ((INT_MAX_LIMIT - val) / 8UL < num)
return -1; /* overflow */
@@ -1618,8 +3336,8 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,
}
-#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \
- BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
+#define BB_WRITE_CODE_POINT(bbuf,pos,code) \
+ BB_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)
/* data format:
[n][from-1][to-1][from-2][to-2] ... [from-n][to-n]
@@ -1634,12 +3352,16 @@ new_code_range(BBuf** pbuf)
BBuf* bbuf;
bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf));
- CHECK_NULL_RETURN_MEMERR(*pbuf);
- r = BBUF_INIT(*pbuf, INIT_MULTI_BYTE_RANGE_SIZE);
- if (r) return r;
+ CHECK_NULL_RETURN_MEMERR(bbuf);
+ r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE);
+ if (r != 0) {
+ xfree(bbuf);
+ *pbuf = 0;
+ return r;
+ }
n = 0;
- BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+ BB_WRITE_CODE_POINT(bbuf, 0, n);
return 0;
}
@@ -1657,7 +3379,7 @@ add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)
if (IS_NULL(*pbuf)) {
r = new_code_range(pbuf);
- if (r) return r;
+ if (r != 0) return r;
bbuf = *pbuf;
n = 0;
}
@@ -1702,19 +3424,19 @@ add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)
int size = (n - high) * 2 * SIZE_CODE_POINT;
if (inc_n > 0) {
- BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
+ BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size);
}
else {
- BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
+ BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);
}
}
pos = SIZE_CODE_POINT * (1 + low * 2);
- BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
- BBUF_WRITE_CODE_POINT(bbuf, pos, from);
- BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
+ BB_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);
+ BB_WRITE_CODE_POINT(bbuf, pos, from);
+ BB_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);
n += inc_n;
- BBUF_WRITE_CODE_POINT(bbuf, 0, n);
+ BB_WRITE_CODE_POINT(bbuf, 0, n);
return 0;
}
@@ -1767,7 +3489,7 @@ not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)
return r;
}
-#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\
+#define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\
BBuf *tbuf; \
int tnot; \
tnot = not1; not1 = not2; not2 = tnot; \
@@ -1791,7 +3513,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
r = 0;
if (IS_NULL(bbuf2))
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
if (IS_NULL(bbuf1)) {
if (not1 != 0) {
@@ -1808,7 +3530,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
}
if (not1 != 0)
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
data1 = (OnigCodePoint* )(bbuf1->p);
GET_CODE_POINT(n1, data1);
@@ -1833,7 +3555,7 @@ or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,
static int
and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1,
- OnigCodePoint* data, int n)
+ OnigCodePoint* data, int n)
{
int i, r;
OnigCodePoint from2, to2;
@@ -1891,7 +3613,7 @@ and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)
}
if (not1 != 0)
- SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);
+ SWAP_BB_NOT(bbuf1, not1, bbuf2, not2);
data1 = (OnigCodePoint* )(bbuf1->p);
data2 = (OnigCodePoint* )(bbuf2->p);
@@ -1954,7 +3676,6 @@ and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
bitset_and(bsr1, bsr2);
if (bsr1 != dest->bs) {
bitset_copy(dest->bs, bsr1);
- bsr1 = dest->bs;
}
if (not1 != 0) {
bitset_invert(dest->bs);
@@ -2012,7 +3733,6 @@ or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)
bitset_or(bsr1, bsr2);
if (bsr1 != dest->bs) {
bitset_copy(dest->bs, bsr1);
- bsr1 = dest->bs;
}
if (not1 != 0) {
bitset_invert(dest->bs);
@@ -2059,7 +3779,7 @@ conv_backslash_value(OnigCodePoint c, ScanEnv* env)
case 'e': return '\033';
case 'v':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB))
- return '\v';
+ return '\v';
break;
default:
@@ -2072,27 +3792,28 @@ conv_backslash_value(OnigCodePoint c, ScanEnv* env)
static int
is_invalid_quantifier_target(Node* node)
{
- switch (NTYPE(node)) {
- case NT_ANCHOR:
+ switch (NODE_TYPE(node)) {
+ case NODE_ANCHOR:
+ case NODE_GIMMICK:
return 1;
break;
- case NT_ENCLOSE:
+ case NODE_ENCLOSURE:
/* allow enclosed elements */
- /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */
+ /* return is_invalid_quantifier_target(NODE_BODY(node)); */
break;
- case NT_LIST:
+ case NODE_LIST:
do {
- if (! is_invalid_quantifier_target(NCAR(node))) return 0;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ if (! is_invalid_quantifier_target(NODE_CAR(node))) return 0;
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
return 0;
break;
- case NT_ALT:
+ case NODE_ALT:
do {
- if (is_invalid_quantifier_target(NCAR(node))) return 1;
- } while (IS_NOT_NULL(node = NCDR(node)));
+ if (is_invalid_quantifier_target(NODE_CAR(node))) return 1;
+ } while (IS_NOT_NULL(node = NODE_CDR(node)));
break;
default:
@@ -2103,7 +3824,7 @@ is_invalid_quantifier_target(Node* node)
/* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */
static int
-popular_quantifier_num(QtfrNode* q)
+quantifier_type_num(QuantNode* q)
{
if (q->greedy) {
if (q->lower == 0) {
@@ -2150,52 +3871,116 @@ extern void
onig_reduce_nested_quantifier(Node* pnode, Node* cnode)
{
int pnum, cnum;
- QtfrNode *p, *c;
+ QuantNode *p, *c;
+
+ p = QUANT_(pnode);
+ c = QUANT_(cnode);
+ pnum = quantifier_type_num(p);
+ cnum = quantifier_type_num(c);
+ if (pnum < 0 || cnum < 0) {
+ if ((p->lower == p->upper) && ! IS_REPEAT_INFINITE(p->upper)) {
+ if ((c->lower == c->upper) && ! IS_REPEAT_INFINITE(c->upper)) {
+ int n = positive_int_multiply(p->lower, c->lower);
+ if (n >= 0) {
+ p->lower = p->upper = n;
+ NODE_BODY(pnode) = NODE_BODY(cnode);
+ goto remove_cnode;
+ }
+ }
+ }
- p = NQTFR(pnode);
- c = NQTFR(cnode);
- pnum = popular_quantifier_num(p);
- cnum = popular_quantifier_num(c);
- if (pnum < 0 || cnum < 0) return ;
+ return ;
+ }
switch(ReduceTypeTable[cnum][pnum]) {
case RQ_DEL:
*pnode = *cnode;
break;
case RQ_A:
- p->target = c->target;
+ NODE_BODY(pnode) = NODE_BODY(cnode);
p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1;
break;
case RQ_AQ:
- p->target = c->target;
+ NODE_BODY(pnode) = NODE_BODY(cnode);
p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0;
break;
case RQ_QQ:
- p->target = c->target;
+ NODE_BODY(pnode) = NODE_BODY(cnode);
p->lower = 0; p->upper = 1; p->greedy = 0;
break;
case RQ_P_QQ:
- p->target = cnode;
+ NODE_BODY(pnode) = cnode;
p->lower = 0; p->upper = 1; p->greedy = 0;
c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1;
return ;
break;
case RQ_PQ_Q:
- p->target = cnode;
+ NODE_BODY(pnode) = cnode;
p->lower = 0; p->upper = 1; p->greedy = 1;
c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0;
return ;
break;
case RQ_ASIS:
- p->target = cnode;
+ NODE_BODY(pnode) = cnode;
return ;
break;
}
- c->target = NULL_NODE;
+ remove_cnode:
+ NODE_BODY(cnode) = NULL_NODE;
onig_node_free(cnode);
}
+static int
+node_new_general_newline(Node** node, ScanEnv* env)
+{
+ int r;
+ int dlen, alen;
+ UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2];
+ Node* crnl;
+ Node* ncc;
+ Node* x;
+ CClassNode* cc;
+
+ dlen = ONIGENC_CODE_TO_MBC(env->enc, 0x0d, buf);
+ if (dlen < 0) return dlen;
+ alen = ONIGENC_CODE_TO_MBC(env->enc, 0x0a, buf + dlen);
+ if (alen < 0) return alen;
+
+ crnl = node_new_str_raw(buf, buf + dlen + alen);
+ CHECK_NULL_RETURN_MEMERR(crnl);
+
+ ncc = node_new_cclass();
+ if (IS_NULL(ncc)) goto err2;
+
+ cc = CCLASS_(ncc);
+ if (dlen == 1) {
+ bitset_set_range(cc->bs, 0x0a, 0x0d);
+ }
+ else {
+ r = add_code_range(&(cc->mbuf), env, 0x0a, 0x0d);
+ if (r != 0) {
+ err1:
+ onig_node_free(ncc);
+ err2:
+ onig_node_free(crnl);
+ return ONIGERR_MEMORY;
+ }
+ }
+
+ if (ONIGENC_IS_UNICODE_ENCODING(env->enc)) {
+ r = add_code_range(&(cc->mbuf), env, 0x85, 0x85);
+ if (r != 0) goto err1;
+ r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029);
+ if (r != 0) goto err1;
+ }
+
+ x = node_new_enclosure_if_else(crnl, 0, ncc);
+ if (IS_NULL(x)) goto err1;
+
+ *node = x;
+ return 0;
+}
enum TokenSyms {
TK_EOT = 0, /* end of token */
@@ -2217,6 +4002,12 @@ enum TokenSyms {
TK_CC_OPEN,
TK_QUOTE_OPEN,
TK_CHAR_PROPERTY, /* \p{...}, \P{...} */
+ TK_KEEP, /* \K */
+ TK_GENERAL_NEWLINE, /* \R */
+ TK_NO_NEWLINE, /* \N */
+ TK_TRUE_ANYCHAR, /* \O */
+ TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */
+
/* in cc */
TK_CC_CLOSE,
TK_CC_RANGE,
@@ -2256,6 +4047,7 @@ typedef struct {
UChar* name;
UChar* name_end;
int gnum;
+ int by_number;
} call;
struct {
int ctype;
@@ -2435,8 +4227,9 @@ static OnigCodePoint
get_name_end_code_point(OnigCodePoint start)
{
switch (start) {
- case '<': return (OnigCodePoint )'>'; break;
+ case '<': return (OnigCodePoint )'>'; break;
case '\'': return (OnigCodePoint )'\''; break;
+ case '(': return (OnigCodePoint )')'; break;
default:
break;
}
@@ -2444,19 +4237,26 @@ get_name_end_code_point(OnigCodePoint start)
return (OnigCodePoint )0;
}
-#ifdef USE_NAMED_GROUP
+enum REF_NUM {
+ IS_NOT_NUM = 0,
+ IS_ABS_NUM = 1,
+ IS_REL_NUM = 2
+};
+
#ifdef USE_BACKREF_WITH_LEVEL
/*
\k<name+n>, \k<name-n>
\k<num+n>, \k<num-n>
\k<-num+n>, \k<-num-n>
+ \k<+num+n>, \k<+num-n>
*/
static int
fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
- UChar** rname_end, ScanEnv* env,
- int* rback_num, int* rlevel)
+ UChar** rname_end, ScanEnv* env,
+ int* rback_num, int* rlevel, enum REF_NUM* num_type)
{
- int r, sign, is_num, exist_level;
+ int r, sign, exist_level;
+ int digit_count;
OnigCodePoint end_code;
OnigCodePoint c = 0;
OnigEncoding enc = env->enc;
@@ -2466,12 +4266,14 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
PFETCH_READY;
*rback_num = 0;
- is_num = exist_level = 0;
+ exist_level = 0;
+ *num_type = IS_NOT_NUM;
sign = 1;
pnum_head = *src;
end_code = get_name_end_code_point(start_code);
+ digit_count = 0;
name_end = end;
r = 0;
if (PEND) {
@@ -2482,14 +4284,20 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
if (c == end_code)
return ONIGERR_EMPTY_GROUP_NAME;
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
- is_num = 1;
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
+ *num_type = IS_ABS_NUM;
+ digit_count++;
}
else if (c == '-') {
- is_num = 2;
+ *num_type = IS_REL_NUM;
sign = -1;
pnum_head = p;
}
+ else if (c == '+') {
+ *num_type = IS_REL_NUM;
+ sign = 1;
+ pnum_head = p;
+ }
else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
}
@@ -2499,17 +4307,18 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
name_end = p;
PFETCH(c);
if (c == end_code || c == ')' || c == '+' || c == '-') {
- if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME;
+ if (*num_type != IS_NOT_NUM && digit_count == 0)
+ r = ONIGERR_INVALID_GROUP_NAME;
break;
}
- if (is_num != 0) {
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
- is_num = 1;
+ if (*num_type != IS_NOT_NUM) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
+ digit_count++;
}
else {
r = ONIGERR_INVALID_GROUP_NAME;
- is_num = 0;
+ *num_type = IS_NOT_NUM;
}
}
else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
@@ -2527,7 +4336,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
goto end;
}
PFETCH(c);
- if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err;
+ if (! IS_CODE_DIGIT_ASCII(enc, c)) goto err;
PUNFETCH;
level = onig_scan_unsigned_number(&p, end, enc);
if (level < 0) return ONIGERR_TOO_BIG_NUMBER;
@@ -2542,16 +4351,20 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
}
err:
- r = ONIGERR_INVALID_GROUP_NAME;
name_end = end;
+ err2:
+ r = ONIGERR_INVALID_GROUP_NAME;
}
end:
if (r == 0) {
- if (is_num != 0) {
+ if (*num_type != IS_NOT_NUM) {
*rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);
if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
- else if (*rback_num == 0) goto err;
+ else if (*rback_num == 0) {
+ if (*num_type == IS_REL_NUM)
+ goto err2;
+ }
*rback_num *= sign;
}
@@ -2573,9 +4386,11 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,
*/
static int
fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
- UChar** rname_end, ScanEnv* env, int* rback_num, int ref)
+ UChar** rname_end, ScanEnv* env, int* rback_num,
+ enum REF_NUM* num_type, int ref)
{
- int r, is_num, sign;
+ int r, sign;
+ int digit_count;
OnigCodePoint end_code;
OnigCodePoint c = 0;
OnigEncoding enc = env->enc;
@@ -2587,10 +4402,11 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
end_code = get_name_end_code_point(start_code);
+ digit_count = 0;
name_end = end;
pnum_head = *src;
r = 0;
- is_num = 0;
+ *num_type = IS_NOT_NUM;
sign = 1;
if (PEND) {
return ONIGERR_EMPTY_GROUP_NAME;
@@ -2600,23 +4416,32 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
if (c == end_code)
return ONIGERR_EMPTY_GROUP_NAME;
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
if (ref == 1)
- is_num = 1;
+ *num_type = IS_ABS_NUM;
else {
r = ONIGERR_INVALID_GROUP_NAME;
- is_num = 0;
}
+ digit_count++;
}
else if (c == '-') {
if (ref == 1) {
- is_num = 2;
+ *num_type = IS_REL_NUM;
sign = -1;
pnum_head = p;
}
else {
r = ONIGERR_INVALID_GROUP_NAME;
- is_num = 0;
+ }
+ }
+ else if (c == '+') {
+ if (ref == 1) {
+ *num_type = IS_REL_NUM;
+ sign = 1;
+ pnum_head = p;
+ }
+ else {
+ r = ONIGERR_INVALID_GROUP_NAME;
}
}
else if (!ONIGENC_IS_CODE_WORD(enc, c)) {
@@ -2629,20 +4454,22 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
name_end = p;
PFETCH_S(c);
if (c == end_code || c == ')') {
- if (is_num == 2) r = ONIGERR_INVALID_GROUP_NAME;
+ if (*num_type != IS_NOT_NUM && digit_count == 0)
+ r = ONIGERR_INVALID_GROUP_NAME;
break;
}
- if (is_num != 0) {
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
- is_num = 1;
+ if (*num_type != IS_NOT_NUM) {
+ if (IS_CODE_DIGIT_ASCII(enc, c)) {
+ digit_count++;
}
else {
if (!ONIGENC_IS_CODE_WORD(enc, c))
r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
else
r = ONIGERR_INVALID_GROUP_NAME;
- is_num = 0;
+
+ *num_type = IS_NOT_NUM;
}
}
else {
@@ -2654,15 +4481,17 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
if (c != end_code) {
r = ONIGERR_INVALID_GROUP_NAME;
- name_end = end;
+ goto err;
}
- if (is_num != 0) {
+ if (*num_type != IS_NOT_NUM) {
*rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);
if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
else if (*rback_num == 0) {
- r = ONIGERR_INVALID_GROUP_NAME;
- goto err;
+ if (*num_type == IS_REL_NUM) {
+ r = ONIGERR_INVALID_GROUP_NAME;
+ goto err;
+ }
}
*rback_num *= sign;
@@ -2687,84 +4516,6 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
return r;
}
}
-#else
-static int
-fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,
- UChar** rname_end, ScanEnv* env, int* rback_num, int ref)
-{
- int r, is_num, sign;
- OnigCodePoint end_code;
- OnigCodePoint c = 0;
- UChar *name_end;
- OnigEncoding enc = env->enc;
- UChar *pnum_head;
- UChar *p = *src;
- PFETCH_READY;
-
- *rback_num = 0;
-
- end_code = get_name_end_code_point(start_code);
-
- *rname_end = name_end = end;
- r = 0;
- pnum_head = *src;
- is_num = 0;
- sign = 1;
-
- if (PEND) {
- return ONIGERR_EMPTY_GROUP_NAME;
- }
- else {
- PFETCH(c);
- if (c == end_code)
- return ONIGERR_EMPTY_GROUP_NAME;
-
- if (ONIGENC_IS_CODE_DIGIT(enc, c)) {
- is_num = 1;
- }
- else if (c == '-') {
- is_num = 2;
- sign = -1;
- pnum_head = p;
- }
- else {
- r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
- }
- }
-
- while (!PEND) {
- name_end = p;
-
- PFETCH(c);
- if (c == end_code || c == ')') break;
- if (! ONIGENC_IS_CODE_DIGIT(enc, c))
- r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;
- }
- if (r == 0 && c != end_code) {
- r = ONIGERR_INVALID_GROUP_NAME;
- name_end = end;
- }
-
- if (r == 0) {
- *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);
- if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;
- else if (*rback_num == 0) {
- r = ONIGERR_INVALID_GROUP_NAME;
- goto err;
- }
- *rback_num *= sign;
-
- *rname_end = name_end;
- *src = p;
- return 0;
- }
- else {
- err:
- onig_scan_env_set_error_string(env, r, *src, name_end);
- return r;
- }
-}
-#endif /* USE_NAMED_GROUP */
static void
CC_ESC_WARN(ScanEnv* env, UChar *c)
@@ -2775,8 +4526,9 @@ CC_ESC_WARN(ScanEnv* env, UChar *c)
IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) {
UChar buf[WARN_BUFSIZE];
onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,
- env->pattern, env->pattern_end,
- (UChar* )"character class has '%s' without escape", c);
+ env->pattern, env->pattern_end,
+ (UChar* )"character class has '%s' without escape",
+ c);
(*onig_warn)((char* )buf);
}
}
@@ -2789,15 +4541,15 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c)
if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) {
UChar buf[WARN_BUFSIZE];
onig_snprintf_with_pattern(buf, WARN_BUFSIZE, (env)->enc,
- (env)->pattern, (env)->pattern_end,
- (UChar* )"regular expression has '%s' without escape", c);
+ (env)->pattern, (env)->pattern_end,
+ (UChar* )"regular expression has '%s' without escape", c);
(*onig_warn)((char* )buf);
}
}
static UChar*
find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
- UChar **next, OnigEncoding enc)
+ UChar **next, OnigEncoding enc)
{
int i;
OnigCodePoint x;
@@ -2826,7 +4578,7 @@ find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,
static int
str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,
- OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
+ OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)
{
int i, in_esc;
OnigCodePoint x;
@@ -2975,7 +4727,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
c2 = PPEEK;
- if (ONIGENC_IS_CODE_DIGIT(enc, c2))
+ if (IS_CODE_DIGIT_ASCII(enc, c2))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -2998,11 +4750,16 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
prev = p;
if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) {
PINC;
- num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);
- if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
+ num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc);
+ if (num < 0) {
+ if (num == ONIGERR_TOO_BIG_NUMBER)
+ return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
+ else
+ return num;
+ }
if (!PEND) {
c2 = PPEEK;
- if (ONIGENC_IS_CODE_XDIGIT(enc, c2))
+ if (IS_CODE_XDIGIT_ASCII(enc, c2))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -3018,8 +4775,8 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
}
}
else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) {
- num = scan_unsigned_hexadecimal_number(&p, end, 2, enc);
- if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
+ num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc);
+ if (num < 0) return num;
if (p == prev) { /* can't read nothing. */
num = 0; /* but, it's not error */
}
@@ -3034,8 +4791,8 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
prev = p;
if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) {
- num = scan_unsigned_hexadecimal_number(&p, end, 4, enc);
- if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
+ num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc);
+ if (num < 0) return num;
if (p == prev) { /* can't read nothing. */
num = 0; /* but, it's not error */
}
@@ -3232,13 +4989,25 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
case 'b':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_WORD_BOUND;
+ tok->u.anchor = ANCHOR_WORD_BOUNDARY;
break;
case 'B':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;
tok->type = TK_ANCHOR;
- tok->u.anchor = ANCHOR_NOT_WORD_BOUND;
+ tok->u.anchor = ANCHOR_NO_WORD_BOUNDARY;
+ break;
+
+ case 'y':
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_ANCHOR;
+ tok->u.anchor = ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
+ break;
+
+ case 'Y':
+ if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_ANCHOR;
+ tok->u.anchor = ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY;
break;
#ifdef USE_WORD_BEGIN_END
@@ -3297,6 +5066,31 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
tok->u.prop.not = 1;
break;
+ case 'K':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP)) break;
+ tok->type = TK_KEEP;
+ break;
+
+ case 'R':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE)) break;
+ tok->type = TK_GENERAL_NEWLINE;
+ break;
+
+ case 'N':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break;
+ tok->type = TK_NO_NEWLINE;
+ break;
+
+ case 'O':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break;
+ tok->type = TK_TRUE_ANYCHAR;
+ break;
+
+ case 'X':
+ if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break;
+ tok->type = TK_EXTENDED_GRAPHEME_CLUSTER;
+ break;
+
case 'A':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;
begin_buf:
@@ -3342,7 +5136,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
num = scan_unsigned_octal_number(&p, end, 11, enc);
if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
if (!PEND) {
- if (ONIGENC_IS_CODE_DIGIT(enc, PPEEK))
+ if (IS_CODE_DIGIT_ASCII(enc, PPEEK))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -3364,10 +5158,15 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
prev = p;
if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) {
PINC;
- num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);
- if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
+ num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc);
+ if (num < 0) {
+ if (num == ONIGERR_TOO_BIG_NUMBER)
+ return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
+ else
+ return num;
+ }
if (!PEND) {
- if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))
+ if (IS_CODE_XDIGIT_ASCII(enc, PPEEK))
return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;
}
@@ -3382,8 +5181,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
}
}
else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) {
- num = scan_unsigned_hexadecimal_number(&p, end, 2, enc);
- if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
+ num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc);
+ if (num < 0) return num;
if (p == prev) { /* can't read nothing. */
num = 0; /* but, it's not error */
}
@@ -3398,8 +5197,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
prev = p;
if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) {
- num = scan_unsigned_hexadecimal_number(&p, end, 4, enc);
- if (num < 0) return ONIGERR_TOO_BIG_NUMBER;
+ num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc);
+ if (num < 0) return num;
if (p == prev) { /* can't read nothing. */
num = 0; /* but, it's not error */
}
@@ -3421,7 +5220,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) &&
(num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */
if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {
- if (num > env->num_mem || IS_NULL(SCANENV_MEM_NODES(env)[num]))
+ if (num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[num].node))
return ONIGERR_INVALID_BACKREF;
}
@@ -3461,7 +5260,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
}
break;
-#ifdef USE_NAMED_GROUP
case 'k':
if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {
PFETCH(c);
@@ -3469,30 +5267,31 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
UChar* name_end;
int* backs;
int back_num;
+ enum REF_NUM num_type;
prev = p;
#ifdef USE_BACKREF_WITH_LEVEL
name_end = NULL_UCHARP; /* no need. escape gcc warning. */
r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end,
- env, &back_num, &tok->u.backref.level);
+ env, &back_num, &tok->u.backref.level, &num_type);
if (r == 1) tok->u.backref.exist_level = 1;
else tok->u.backref.exist_level = 0;
#else
- r = fetch_name(&p, end, &name_end, env, &back_num, 1);
+ r = fetch_name(c, &p, end, &name_end, env, &back_num, &num_type, 1);
#endif
if (r < 0) return r;
- if (back_num != 0) {
- if (back_num < 0) {
- back_num = BACKREF_REL_TO_ABS(back_num, env);
- if (back_num <= 0)
- return ONIGERR_INVALID_BACKREF;
+ if (num_type != IS_NOT_NUM) {
+ if (num_type == IS_REL_NUM) {
+ back_num = backref_rel_to_abs(back_num, env);
}
+ if (back_num <= 0)
+ return ONIGERR_INVALID_BACKREF;
if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {
if (back_num > env->num_mem ||
- IS_NULL(SCANENV_MEM_NODES(env)[back_num]))
+ IS_NULL(SCANENV_MEMENV(env)[back_num].node))
return ONIGERR_INVALID_BACKREF;
}
tok->type = TK_BACKREF;
@@ -3511,7 +5310,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
int i;
for (i = 0; i < num; i++) {
if (backs[i] > env->num_mem ||
- IS_NULL(SCANENV_MEM_NODES(env)[backs[i]]))
+ IS_NULL(SCANENV_MEMENV(env)[backs[i]].node))
return ONIGERR_INVALID_BACKREF;
}
}
@@ -3532,24 +5331,41 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
PUNFETCH;
}
break;
-#endif
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
case 'g':
if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) {
PFETCH(c);
if (c == '<' || c == '\'') {
int gnum;
UChar* name_end;
+ enum REF_NUM num_type;
prev = p;
- r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &gnum, 1);
+ r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env,
+ &gnum, &num_type, 1);
if (r < 0) return r;
+ if (num_type != IS_NOT_NUM) {
+ if (num_type == IS_REL_NUM) {
+ gnum = backref_rel_to_abs(gnum, env);
+ if (gnum < 0) {
+ onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE,
+ prev, name_end);
+ return ONIGERR_UNDEFINED_GROUP_REFERENCE;
+ }
+ }
+ tok->u.call.by_number = 1;
+ tok->u.call.gnum = gnum;
+ }
+ else {
+ tok->u.call.by_number = 0;
+ tok->u.call.gnum = 0;
+ }
+
tok->type = TK_CALL;
tok->u.call.name = prev;
tok->u.call.name_end = name_end;
- tok->u.call.gnum = gnum;
}
else
PUNFETCH;
@@ -3691,20 +5507,94 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
if (!PEND && PPEEK_IS('?') &&
IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {
PINC;
- if (!PEND && PPEEK_IS('#')) {
- PFETCH(c);
- while (1) {
- if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ if (! PEND) {
+ c = PPEEK;
+ if (c == '#') {
PFETCH(c);
- if (c == MC_ESC(syn)) {
- if (!PEND) PFETCH(c);
+ while (1) {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH(c);
+ if (c == MC_ESC(syn)) {
+ if (! PEND) PFETCH(c);
+ }
+ else {
+ if (c == ')') break;
+ }
}
- else {
- if (c == ')') break;
+ goto start;
+ }
+ else if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL)) {
+ int gnum;
+ UChar* name;
+ UChar* name_end;
+ enum REF_NUM num_type;
+
+ switch (c) {
+ case '&':
+ {
+ PINC;
+ name = p;
+ r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum,
+ &num_type, 0);
+ if (r < 0) return r;
+
+ tok->type = TK_CALL;
+ tok->u.call.by_number = 0;
+ tok->u.call.gnum = 0;
+ tok->u.call.name = name;
+ tok->u.call.name_end = name_end;
+ }
+ break;
+
+ case 'R':
+ tok->type = TK_CALL;
+ tok->u.call.by_number = 1;
+ tok->u.call.gnum = 0;
+ tok->u.call.name = p;
+ PINC;
+ if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME;
+ tok->u.call.name_end = p;
+ break;
+
+ case '-':
+ case '+':
+ goto lparen_qmark_num;
+ break;
+ default:
+ if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto lparen_qmark_end;
+
+ lparen_qmark_num:
+ {
+ name = p;
+ r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env,
+ &gnum, &num_type, 1);
+ if (r < 0) return r;
+
+ if (num_type == IS_NOT_NUM) {
+ return ONIGERR_INVALID_GROUP_NAME;
+ }
+ else {
+ if (num_type == IS_REL_NUM) {
+ gnum = backref_rel_to_abs(gnum, env);
+ if (gnum < 0) {
+ onig_scan_env_set_error_string(env,
+ ONIGERR_UNDEFINED_NAME_REFERENCE, name, name_end);
+ return ONIGERR_UNDEFINED_GROUP_REFERENCE;
+ }
+ }
+ tok->u.call.by_number = 1;
+ tok->u.call.gnum = gnum;
+ }
+
+ tok->type = TK_CALL;
+ tok->u.call.name = name;
+ tok->u.call.name_end = name_end;
+ }
+ break;
}
}
- goto start;
}
+ lparen_qmark_end:
PUNFETCH;
}
@@ -3720,15 +5610,15 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
case '^':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;
tok->type = TK_ANCHOR;
- tok->u.subtype = (IS_SINGLELINE(env->option)
- ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE);
+ tok->u.subtype = (IS_SINGLELINE(env->options)
+ ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE);
break;
case '$':
if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;
tok->type = TK_ANCHOR;
- tok->u.subtype = (IS_SINGLELINE(env->option)
- ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE);
+ tok->u.subtype = (IS_SINGLELINE(env->options)
+ ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE);
break;
case '[':
@@ -3742,7 +5632,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
break;
case '#':
- if (IS_EXTEND(env->option)) {
+ if (IS_EXTEND(env->options)) {
while (!PEND) {
PFETCH(c);
if (ONIGENC_IS_CODE_NEWLINE(enc, c))
@@ -3754,7 +5644,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
break;
case ' ': case '\t': case '\n': case '\r': case '\f':
- if (IS_EXTEND(env->option))
+ if (IS_EXTEND(env->options))
goto start;
break;
@@ -3773,8 +5663,8 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
static int
add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
- OnigEncoding enc ARG_UNUSED,
- OnigCodePoint sb_out, const OnigCodePoint mbr[])
+ OnigEncoding enc ARG_UNUSED, OnigCodePoint sb_out,
+ const OnigCodePoint mbr[])
{
int i, r;
OnigCodePoint j;
@@ -3833,33 +5723,140 @@ add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,
if (r != 0) return r;
}
prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;
+ if (prev == 0) goto end;
}
- if (prev < 0x7fffffff) {
- r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff);
+
+ r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+ if (r != 0) return r;
+ }
+
+ end:
+ return 0;
+}
+
+static int
+add_ctype_to_cc_by_range_limit(CClassNode* cc, int ctype ARG_UNUSED, int not,
+ OnigEncoding enc ARG_UNUSED,
+ OnigCodePoint sb_out,
+ const OnigCodePoint mbr[], OnigCodePoint limit)
+{
+ int i, r;
+ OnigCodePoint j;
+ OnigCodePoint from;
+ OnigCodePoint to;
+
+ int n = ONIGENC_CODE_RANGE_NUM(mbr);
+
+ if (not == 0) {
+ for (i = 0; i < n; i++) {
+ for (j = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {
+ if (j > limit) goto end;
+ if (j >= sb_out) {
+ if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) {
+ to = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (to > limit) to = limit;
+ r = add_code_range_to_buf(&(cc->mbuf), j, to);
+ if (r != 0) return r;
+ i++;
+ }
+
+ goto sb_end;
+ }
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ }
+
+ sb_end:
+ for ( ; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ to = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (from > limit) break;
+ if (to > limit) to = limit;
+ r = add_code_range_to_buf(&(cc->mbuf), from, to);
if (r != 0) return r;
}
}
+ else {
+ OnigCodePoint prev = 0;
+
+ for (i = 0; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ if (from > limit) {
+ for (j = prev; j < sb_out; j++) {
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ goto sb_end2;
+ }
+ for (j = prev; j < from; j++) {
+ if (j >= sb_out) goto sb_end2;
+ BITSET_SET_BIT(cc->bs, j);
+ }
+ prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (prev > limit) prev = limit;
+ prev++;
+ if (prev == 0) goto end;
+ }
+ for (j = prev; j < sb_out; j++) {
+ BITSET_SET_BIT(cc->bs, j);
+ }
+
+ sb_end2:
+ prev = sb_out;
+ for (i = 0; i < n; i++) {
+ from = ONIGENC_CODE_RANGE_FROM(mbr, i);
+ if (from > limit) goto last;
+
+ if (prev < from) {
+ r = add_code_range_to_buf(&(cc->mbuf), prev, from - 1);
+ if (r != 0) return r;
+ }
+ prev = ONIGENC_CODE_RANGE_TO(mbr, i);
+ if (prev > limit) prev = limit;
+ prev++;
+ if (prev == 0) goto end;
+ }
+
+ last:
+ r = add_code_range_to_buf(&(cc->mbuf), prev, MAX_CODE_POINT);
+ if (r != 0) return r;
+ }
+
+ end:
return 0;
}
static int
add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
{
+#define ASCII_LIMIT 127
+
int c, r;
+ int ascii_mode;
const OnigCodePoint *ranges;
+ OnigCodePoint limit;
OnigCodePoint sb_out;
OnigEncoding enc = env->enc;
+ ascii_mode = IS_ASCII_MODE_CTYPE_OPTION(ctype, env->options);
+
r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);
if (r == 0) {
- return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+ if (ascii_mode == 0)
+ r = add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);
+ else
+ r = add_ctype_to_cc_by_range_limit(cc, ctype, not, env->enc, sb_out,
+ ranges, ASCII_LIMIT);
+ return r;
}
else if (r != ONIG_NO_SUPPORT_CONFIG) {
return r;
}
r = 0;
+ limit = ascii_mode ? ASCII_LIMIT : SINGLE_BYTE_SIZE;
+
switch (ctype) {
case ONIGENC_CTYPE_ALPHA:
case ONIGENC_CTYPE_BLANK:
@@ -3873,14 +5870,18 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
case ONIGENC_CTYPE_ASCII:
case ONIGENC_CTYPE_ALNUM:
if (not != 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+ for (c = 0; c < (int )limit; c++) {
if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
+ for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+ BITSET_SET_BIT(cc->bs, c);
+ }
+
ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
+ for (c = 0; c < (int )limit; c++) {
if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
@@ -3889,34 +5890,25 @@ add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)
case ONIGENC_CTYPE_GRAPH:
case ONIGENC_CTYPE_PRINT:
+ case ONIGENC_CTYPE_WORD:
if (not != 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+ for (c = 0; c < (int )limit; c++) {
+ if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */
+ && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
- }
- else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
+ for (c = limit; c < SINGLE_BYTE_SIZE; c++) {
+ if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0)
BITSET_SET_BIT(cc->bs, c);
}
- ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
- }
- break;
-
- case ONIGENC_CTYPE_WORD:
- if (not == 0) {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c);
- }
- ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
else {
- for (c = 0; c < SINGLE_BYTE_SIZE; c++) {
- if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */
- && ! ONIGENC_IS_CODE_WORD(enc, c))
+ for (c = 0; c < (int )limit; c++) {
+ if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))
BITSET_SET_BIT(cc->bs, c);
}
+ if (ascii_mode == 0)
+ ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);
}
break;
@@ -4034,8 +6026,7 @@ fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env)
}
static int
-parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end,
- ScanEnv* env)
+parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, ctype;
CClassNode* cc;
@@ -4045,7 +6036,7 @@ parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end,
*np = node_new_cclass();
CHECK_NULL_RETURN_MEMERR(*np);
- cc = NCCLASS(*np);
+ cc = CCLASS_(*np);
r = add_ctype_to_cc(cc, ctype, 0, env);
if (r != 0) return r;
if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);
@@ -4069,7 +6060,7 @@ enum CCVALTYPE {
static int
next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
- enum CCSTATE* state, ScanEnv* env)
+ enum CCSTATE* state, ScanEnv* env)
{
int r;
@@ -4085,18 +6076,16 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,
}
}
- if (*state != CCS_START)
- *state = CCS_VALUE;
-
+ *state = CCS_VALUE;
*type = CCV_CLASS;
return 0;
}
static int
next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
- int* from_israw, int to_israw,
- enum CCVALTYPE intype, enum CCVALTYPE* type,
- enum CCSTATE* state, ScanEnv* env)
+ int* from_israw, int to_israw,
+ enum CCVALTYPE intype, enum CCVALTYPE* type,
+ enum CCSTATE* state, ScanEnv* env)
{
int r;
@@ -4165,7 +6154,7 @@ next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to,
static int
code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,
- ScanEnv* env)
+ ScanEnv* env)
{
int in_esc;
OnigCodePoint code;
@@ -4187,8 +6176,7 @@ code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,
}
static int
-parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
- ScanEnv* env)
+parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)
{
int r, neg, len, fetched, and_start;
OnigCodePoint v, vs;
@@ -4227,7 +6215,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
*np = node = node_new_cclass();
CHECK_NULL_RETURN_MEMERR(node);
- cc = NCCLASS(node);
+ cc = CCLASS_(node);
and_start = 0;
state = CCS_START;
@@ -4321,7 +6309,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT);
val_entry2:
r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type,
- &state, env);
+ &state, env);
if (r != 0) goto err;
break;
@@ -4340,7 +6328,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
case TK_CHAR_TYPE:
r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env);
- if (r != 0) return r;
+ if (r != 0) goto err;
next_class:
r = next_state_class(cc, &vs, &val_type, &state, env);
@@ -4349,12 +6337,13 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
case TK_CHAR_PROPERTY:
{
- int ctype;
-
- ctype = fetch_char_property_to_ctype(&p, end, env);
- if (ctype < 0) return ctype;
+ int ctype = fetch_char_property_to_ctype(&p, end, env);
+ if (ctype < 0) {
+ r = ctype;
+ goto err;
+ }
r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env);
- if (r != 0) return r;
+ if (r != 0) goto err;
goto next_class;
}
break;
@@ -4374,6 +6363,12 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
CC_ESC_WARN(env, (UChar* )"-");
goto range_end_val;
}
+
+ if (val_type == CCV_CLASS) {
+ r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS;
+ goto err;
+ }
+
state = CCS_RANGE;
}
else if (state == CCS_START) {
@@ -4403,7 +6398,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
CC_ESC_WARN(env, (UChar* )"-");
goto range_end_val;
}
-
+
if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) {
CC_ESC_WARN(env, (UChar* )"-");
goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */
@@ -4423,10 +6418,10 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
onig_node_free(anode);
goto cc_open_err;
}
- acc = NCCLASS(anode);
+ acc = CCLASS_(anode);
r = or_cclass(cc, acc, env->enc);
-
onig_node_free(anode);
+
cc_open_err:
if (r != 0) goto err;
}
@@ -4476,7 +6471,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
if (state == CCS_VALUE) {
r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type,
- &val_type, &state, env);
+ &val_type, &state, env);
if (r != 0) goto err;
}
@@ -4493,9 +6488,7 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
NCCLASS_CLEAR_NOT(cc);
if (IS_NCCLASS_NOT(cc) &&
IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) {
- int is_empty;
-
- is_empty = (IS_NULL(cc->mbuf) ? 1 : 0);
+ int is_empty = (IS_NULL(cc->mbuf) ? 1 : 0);
if (is_empty != 0)
BITSET_IS_EMPTY(cc->bs, is_empty);
@@ -4515,27 +6508,469 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,
return 0;
err:
- if (cc != NCCLASS(*np))
+ if (cc != CCLASS_(*np))
bbuf_free(cc->mbuf);
return r;
}
static int parse_subexp(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env);
+ UChar** src, UChar* end, ScanEnv* env);
+
+#ifdef USE_CALLOUT
+/* (?{...}[tag][+-]) (?{{...}}[tag][+-]) */
static int
-parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
- ScanEnv* env)
+parse_callout_of_contents(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* env)
+{
+ int r;
+ int i;
+ int in;
+ int num;
+ OnigCodePoint c;
+ UChar* code_start;
+ UChar* code_end;
+ UChar* contents;
+ UChar* tag_start;
+ UChar* tag_end;
+ int brace_nest;
+ CalloutListEntry* e;
+ RegexExt* ext;
+ OnigEncoding enc = env->enc;
+ UChar* p = *src;
+
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ brace_nest = 0;
+ while (PPEEK_IS('{')) {
+ brace_nest++;
+ PINC_S;
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+ }
+
+ in = ONIG_CALLOUT_IN_PROGRESS;
+ code_start = p;
+ while (1) {
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ code_end = p;
+ PFETCH_S(c);
+ if (c == '}') {
+ i = brace_nest;
+ while (i > 0) {
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+ PFETCH_S(c);
+ if (c == '}') i--;
+ else break;
+ }
+ if (i == 0) break;
+ }
+ }
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+
+ PFETCH_S(c);
+ if (c == '[') {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ tag_start = p;
+ while (! PEND) {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ tag_end = p;
+ PFETCH_S(c);
+ if (c == ']') break;
+ }
+ if (! is_allowed_callout_tag_name(enc, tag_start, tag_end))
+ return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+ else {
+ tag_start = tag_end = 0;
+ }
+
+ if (c == 'X') {
+ in |= ONIG_CALLOUT_IN_RETRACTION;
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+ else if (c == '<') {
+ in = ONIG_CALLOUT_IN_RETRACTION;
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+ else if (c == '>') { /* no needs (default) */
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+
+ if (c != cterm)
+ return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ r = reg_callout_list_entry(env, &num);
+ if (r != 0) return r;
+
+ ext = onig_get_regex_ext(env->reg);
+ if (IS_NULL(ext->pattern)) {
+ r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ if (tag_start != tag_end) {
+ r = callout_tag_entry(env->reg, tag_start, tag_end, num);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ contents = onigenc_strdup(enc, code_start, code_end);
+ CHECK_NULL_RETURN_MEMERR(contents);
+
+ r = node_new_callout(np, ONIG_CALLOUT_OF_CONTENTS, num, ONIG_NON_NAME_ID, env);
+ if (r != 0) {
+ xfree(contents);
+ return r;
+ }
+
+ e = onig_reg_callout_list_at(env->reg, num);
+ e->of = ONIG_CALLOUT_OF_CONTENTS;
+ e->in = in;
+ e->name_id = ONIG_NON_NAME_ID;
+ e->u.content.start = contents;
+ e->u.content.end = contents + (code_end - code_start);
+
+ *src = p;
+ return 0;
+}
+
+static long
+parse_long(OnigEncoding enc, UChar* s, UChar* end, int sign_on, long max, long* rl)
+{
+ long v;
+ long d;
+ int flag;
+ UChar* p;
+ OnigCodePoint c;
+
+ if (s >= end) return ONIGERR_INVALID_CALLOUT_ARG;
+
+ flag = 1;
+ v = 0;
+ p = s;
+ while (p < end) {
+ c = ONIGENC_MBC_TO_CODE(enc, p, end);
+ p += ONIGENC_MBC_ENC_LEN(enc, p);
+ if (c >= '0' && c <= '9') {
+ d = (long )(c - '0');
+ if (v > (max - d) / 10)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ v = v * 10 + d;
+ }
+ else if (sign_on != 0 && (c == '-' || c == '+')) {
+ if (c == '-') flag = -1;
+ }
+ else
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ sign_on = 0;
+ }
+
+ *rl = flag * v;
+ return ONIG_NORMAL;
+}
+
+static int
+parse_callout_args(int skip_mode, int cterm, UChar** src, UChar* end,
+ unsigned int types[], OnigValue vals[], ScanEnv* env)
+{
+#define MAX_CALLOUT_ARG_BYTE_LENGTH 128
+
+ int r;
+ int n;
+ int esc;
+ int cn;
+ UChar* s;
+ UChar* e;
+ UChar* eesc;
+ OnigCodePoint c;
+ UChar* bufend;
+ UChar buf[MAX_CALLOUT_ARG_BYTE_LENGTH];
+ OnigEncoding enc = env->enc;
+ UChar* p = *src;
+
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ n = 0;
+ while (n < ONIG_CALLOUT_MAX_ARGS_NUM) {
+ c = 0;
+ cn = 0;
+ esc = 0;
+ eesc = 0;
+ bufend = buf;
+ s = e = p;
+ while (1) {
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ e = p;
+ PFETCH_S(c);
+ if (esc != 0) {
+ esc = 0;
+ if (c == '\\' || c == cterm || c == ',') {
+ /* */
+ }
+ else {
+ e = eesc;
+ cn++;
+ }
+ goto add_char;
+ }
+ else {
+ if (c == '\\') {
+ esc = 1;
+ eesc = e;
+ }
+ else if (c == cterm || c == ',')
+ break;
+ else {
+ size_t clen;
+
+ add_char:
+ if (skip_mode == 0) {
+ clen = p - e;
+ if (bufend + clen > buf + MAX_CALLOUT_ARG_BYTE_LENGTH)
+ return ONIGERR_INVALID_CALLOUT_ARG; /* too long argument */
+
+ xmemcpy(bufend, e, clen);
+ bufend += clen;
+ }
+ cn++;
+ }
+ }
+ }
+
+ if (cn != 0) {
+ if (skip_mode == 0) {
+ if ((types[n] & ONIG_TYPE_LONG) != 0) {
+ int fixed = 0;
+ if (cn > 0) {
+ long rl;
+ r = parse_long(enc, buf, bufend, 1, LONG_MAX, &rl);
+ if (r == ONIG_NORMAL) {
+ vals[n].l = rl;
+ fixed = 1;
+ types[n] = ONIG_TYPE_LONG;
+ }
+ }
+
+ if (fixed == 0) {
+ types[n] = (types[n] & ~ONIG_TYPE_LONG);
+ if (types[n] == ONIG_TYPE_VOID)
+ return ONIGERR_INVALID_CALLOUT_ARG;
+ }
+ }
+
+ switch (types[n]) {
+ case ONIG_TYPE_LONG:
+ break;
+
+ case ONIG_TYPE_CHAR:
+ if (cn != 1) return ONIGERR_INVALID_CALLOUT_ARG;
+ vals[n].c = ONIGENC_MBC_TO_CODE(enc, buf, bufend);
+ break;
+
+ case ONIG_TYPE_STRING:
+ {
+ UChar* rs = onigenc_strdup(enc, buf, bufend);
+ CHECK_NULL_RETURN_MEMERR(rs);
+ vals[n].s.start = rs;
+ vals[n].s.end = rs + (e - s);
+ }
+ break;
+
+ case ONIG_TYPE_TAG:
+ if (eesc != 0 || ! is_allowed_callout_tag_name(enc, s, e))
+ return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ vals[n].s.start = s;
+ vals[n].s.end = e;
+ break;
+
+ case ONIG_TYPE_VOID:
+ case ONIG_TYPE_POINTER:
+ return ONIGERR_PARSER_BUG;
+ break;
+ }
+ }
+
+ n++;
+ }
+
+ if (c == cterm) break;
+ }
+
+ if (c != cterm) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ *src = p;
+ return n;
+}
+
+/* (*name[TAG]) (*name[TAG]{a,b,..}) */
+static int
+parse_callout_of_name(Node** np, int cterm, UChar** src, UChar* end, ScanEnv* env)
+{
+ int r;
+ int i;
+ int in;
+ int num;
+ int name_id;
+ int arg_num;
+ int max_arg_num;
+ int opt_arg_num;
+ int is_not_single;
+ OnigCodePoint c;
+ UChar* name_start;
+ UChar* name_end;
+ UChar* tag_start;
+ UChar* tag_end;
+ Node* node;
+ CalloutListEntry* e;
+ RegexExt* ext;
+ unsigned int types[ONIG_CALLOUT_MAX_ARGS_NUM];
+ OnigValue vals[ONIG_CALLOUT_MAX_ARGS_NUM];
+ OnigEncoding enc = env->enc;
+ UChar* p = *src;
+
+ /* PFETCH_READY; */
+ if (PEND) return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ node = 0;
+ name_start = p;
+ while (1) {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ name_end = p;
+ PFETCH_S(c);
+ if (c == cterm || c == '[' || c == '{') break;
+ }
+
+ if (! is_allowed_callout_name(enc, name_start, name_end))
+ return ONIGERR_INVALID_CALLOUT_NAME;
+
+ if (c == '[') {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ tag_start = p;
+ while (! PEND) {
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ tag_end = p;
+ PFETCH_S(c);
+ if (c == ']') break;
+ }
+ if (! is_allowed_callout_tag_name(enc, tag_start, tag_end))
+ return ONIGERR_INVALID_CALLOUT_TAG_NAME;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+ else {
+ tag_start = tag_end = 0;
+ }
+
+ if (c == '{') {
+ UChar* save;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+
+ /* read for single check only */
+ save = p;
+ arg_num = parse_callout_args(1, '}', &p, end, 0, 0, env);
+ if (arg_num < 0) return arg_num;
+
+ is_not_single = PPEEK_IS(cterm) ? 0 : 1;
+ p = save;
+ r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end,
+ &name_id);
+ if (r != ONIG_NORMAL) return r;
+
+ max_arg_num = get_callout_arg_num_by_name_id(name_id);
+ for (i = 0; i < max_arg_num; i++) {
+ types[i] = get_callout_arg_type_by_name_id(name_id, i);
+ }
+
+ arg_num = parse_callout_args(0, '}', &p, end, types, vals, env);
+ if (arg_num < 0) return arg_num;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH_S(c);
+ }
+ else {
+ arg_num = 0;
+
+ is_not_single = 0;
+ r = get_callout_name_id_by_name(enc, is_not_single, name_start, name_end,
+ &name_id);
+ if (r != ONIG_NORMAL) return r;
+
+ max_arg_num = get_callout_arg_num_by_name_id(name_id);
+ for (i = 0; i < max_arg_num; i++) {
+ types[i] = get_callout_arg_type_by_name_id(name_id, i);
+ }
+ }
+
+ in = onig_get_callout_in_by_name_id(name_id);
+ opt_arg_num = get_callout_opt_arg_num_by_name_id(name_id);
+ if (arg_num > max_arg_num || arg_num < (max_arg_num - opt_arg_num))
+ return ONIGERR_INVALID_CALLOUT_ARG;
+
+ if (c != cterm)
+ return ONIGERR_INVALID_CALLOUT_PATTERN;
+
+ r = reg_callout_list_entry(env, &num);
+ if (r != 0) return r;
+
+ ext = onig_get_regex_ext(env->reg);
+ if (IS_NULL(ext->pattern)) {
+ r = onig_ext_set_pattern(env->reg, env->pattern, env->pattern_end);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ if (tag_start != tag_end) {
+ r = callout_tag_entry(env->reg, tag_start, tag_end, num);
+ if (r != ONIG_NORMAL) return r;
+ }
+
+ r = node_new_callout(&node, ONIG_CALLOUT_OF_NAME, num, name_id, env);
+ if (r != ONIG_NORMAL) return r;
+
+ e = onig_reg_callout_list_at(env->reg, num);
+ e->of = ONIG_CALLOUT_OF_NAME;
+ e->in = in;
+ e->name_id = name_id;
+ e->type = onig_get_callout_type_by_name_id(name_id);
+ e->start_func = onig_get_callout_start_func_by_name_id(name_id);
+ e->end_func = onig_get_callout_end_func_by_name_id(name_id);
+ e->u.arg.num = max_arg_num;
+ e->u.arg.passed_num = arg_num;
+ for (i = 0; i < max_arg_num; i++) {
+ e->u.arg.types[i] = types[i];
+ if (i < arg_num)
+ e->u.arg.vals[i] = vals[i];
+ else
+ e->u.arg.vals[i] = get_callout_opt_default_by_name_id(name_id, i);
+ }
+
+ *np = node;
+ *src = p;
+ return 0;
+}
+#endif
+
+static int
+parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r, num;
Node *target;
OnigOptionType option;
OnigCodePoint c;
- OnigEncoding enc = env->enc;
-
-#ifdef USE_NAMED_GROUP
int list_capture;
-#endif
+ OnigEncoding enc = env->enc;
UChar* p = *src;
PFETCH_READY;
@@ -4543,9 +6978,9 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
*np = NULL;
if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
- option = env->option;
- if (PPEEK_IS('?') &&
- IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {
+ option = env->options;
+ c = PPEEK;
+ if (c == '?' && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {
PINC;
if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
@@ -4562,16 +6997,15 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
break;
case '=':
- *np = onig_node_new_anchor(ANCHOR_PREC_READ);
+ *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0);
break;
case '!': /* preceding read */
- *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT);
+ *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0);
break;
case '>': /* (?>...) stop backtrack */
- *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK);
+ *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
break;
-#ifdef USE_NAMED_GROUP
case '\'':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
goto named_group1;
@@ -4579,20 +7013,19 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
else
return ONIGERR_UNDEFINED_GROUP_OPTION;
break;
-#endif
case '<': /* look behind (?<=...), (?<!...) */
if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;
PFETCH(c);
if (c == '=')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND);
+ *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND, 0);
else if (c == '!')
- *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT);
-#ifdef USE_NAMED_GROUP
+ *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT, 0);
else {
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
UChar *name;
UChar *name_end;
+ enum REF_NUM num_type;
PUNFETCH;
c = '<';
@@ -4602,37 +7035,320 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
named_group2:
name = p;
- r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0);
+ r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num,
+ &num_type, 0);
if (r < 0) return r;
num = scan_env_add_mem_entry(env);
if (num < 0) return num;
- if (list_capture != 0 && num >= (int )BIT_STATUS_BITS_NUM)
+ if (list_capture != 0 && num >= (int )MEM_STATUS_BITS_NUM)
return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY;
r = name_add(env->reg, name, name_end, num, env);
if (r != 0) return r;
- *np = node_new_enclose_memory(env->option, 1);
+ *np = node_new_memory(1);
CHECK_NULL_RETURN_MEMERR(*np);
- NENCLOSE(*np)->regnum = num;
+ ENCLOSURE_(*np)->m.regnum = num;
if (list_capture != 0)
- BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num);
+ MEM_STATUS_ON_SIMPLE(env->capture_history, num);
env->num_named++;
}
else {
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
}
-#else
+ break;
+
+ case '~':
+ if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP)) {
+ Node* absent;
+ Node* expr;
+ int head_bar;
+ int is_range_cutter;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+
+ if (PPEEK_IS('|')) { /* (?~|generator|absent) */
+ PINC;
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+
+ head_bar = 1;
+ if (PPEEK_IS(')')) { /* (?~|) : range clear */
+ PINC;
+ r = make_range_clear(np, env);
+ if (r != 0) return r;
+ goto end;
+ }
+ }
+ else
+ head_bar = 0;
+
+ r = fetch_token(tok, &p, end, env);
+ if (r < 0) return r;
+ r = parse_subexp(&absent, tok, term, &p, end, env);
+ if (r < 0) {
+ onig_node_free(absent);
+ return r;
+ }
+
+ expr = NULL_NODE;
+ is_range_cutter = 0;
+ if (head_bar != 0) {
+ Node* top = absent;
+ if (NODE_TYPE(top) != NODE_ALT || IS_NULL(NODE_CDR(top))) {
+ expr = NULL_NODE;
+ is_range_cutter = 1;
+ /* return ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN; */
+ }
+ else {
+ absent = NODE_CAR(top);
+ expr = NODE_CDR(top);
+ NODE_CAR(top) = NULL_NODE;
+ NODE_CDR(top) = NULL_NODE;
+ onig_node_free(top);
+ if (IS_NULL(NODE_CDR(expr))) {
+ top = expr;
+ expr = NODE_CAR(top);
+ NODE_CAR(top) = NULL_NODE;
+ onig_node_free(top);
+ }
+ }
+ }
+
+ r = make_absent_tree(np, absent, expr, is_range_cutter, env);
+ if (r != 0) {
+ return r;
+ }
+ goto end;
+ }
else {
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
+ break;
+
+#ifdef USE_CALLOUT
+ case '{':
+ if (! IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS))
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+
+ r = parse_callout_of_contents(np, ')', &p, end, env);
+ if (r != 0) return r;
+
+ goto end;
+ break;
+#endif
+
+ case '(':
+ /* (?()...) */
+ if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE)) {
+ UChar *prev;
+ Node* condition;
+ int condition_is_checker;
+
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+ PFETCH(c);
+ if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;
+
+ if (IS_CODE_DIGIT_ASCII(enc, c)
+ || c == '-' || c == '+' || c == '<' || c == '\'') {
+ UChar* name_end;
+ int back_num;
+ int exist_level;
+ int level;
+ enum REF_NUM num_type;
+ int is_enclosed;
+
+ is_enclosed = (c == '<' || c == '\'') ? 1 : 0;
+ if (! is_enclosed)
+ PUNFETCH;
+ prev = p;
+ exist_level = 0;
+#ifdef USE_BACKREF_WITH_LEVEL
+ name_end = NULL_UCHARP; /* no need. escape gcc warning. */
+ r = fetch_name_with_level(
+ (OnigCodePoint )(is_enclosed != 0 ? c : '('),
+ &p, end, &name_end,
+ env, &back_num, &level, &num_type);
+ if (r == 1) exist_level = 1;
+#else
+ r = fetch_name((OnigCodePoint )(is_enclosed != 0 ? c : '('),
+ &p, end, &name_end, env, &back_num, &num_type, 1);
#endif
+ if (r < 0) {
+ if (is_enclosed == 0) {
+ goto any_condition;
+ }
+ else
+ return r;
+ }
+
+ condition_is_checker = 1;
+ if (num_type != IS_NOT_NUM) {
+ if (num_type == IS_REL_NUM) {
+ back_num = backref_rel_to_abs(back_num, env);
+ }
+ if (back_num <= 0)
+ return ONIGERR_INVALID_BACKREF;
+
+ if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) {
+ if (back_num > env->num_mem ||
+ IS_NULL(SCANENV_MEMENV(env)[back_num].node))
+ return ONIGERR_INVALID_BACKREF;
+ }
+
+ condition = node_new_backref_checker(1, &back_num, 0,
+#ifdef USE_BACKREF_WITH_LEVEL
+ exist_level, level,
+#endif
+ env);
+ }
+ else {
+ int num;
+ int* backs;
+
+ num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs);
+ if (num <= 0) {
+ onig_scan_env_set_error_string(env,
+ ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end);
+ return ONIGERR_UNDEFINED_NAME_REFERENCE;
+ }
+ if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) {
+ int i;
+ for (i = 0; i < num; i++) {
+ if (backs[i] > env->num_mem ||
+ IS_NULL(SCANENV_MEMENV(env)[backs[i]].node))
+ return ONIGERR_INVALID_BACKREF;
+ }
+ }
+
+ condition = node_new_backref_checker(num, backs, 1,
+#ifdef USE_BACKREF_WITH_LEVEL
+ exist_level, level,
+#endif
+ env);
+ }
+
+ if (is_enclosed != 0) {
+ if (PEND) goto err_if_else;
+ PFETCH(c);
+ if (c != ')') goto err_if_else;
+ }
+ }
+#ifdef USE_CALLOUT
+ else if (c == '?') {
+ if (IS_SYNTAX_OP2(env->syntax,
+ ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS)) {
+ if (! PEND && PPEEK_IS('{')) {
+ /* condition part is callouts of contents: (?(?{...})THEN|ELSE) */
+ condition_is_checker = 0;
+ PFETCH(c);
+ r = parse_callout_of_contents(&condition, ')', &p, end, env);
+ if (r != 0) return r;
+ goto end_condition;
+ }
+ }
+ goto any_condition;
+ }
+ else if (c == '*' &&
+ IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) {
+ condition_is_checker = 0;
+ r = parse_callout_of_name(&condition, ')', &p, end, env);
+ if (r != 0) return r;
+ goto end_condition;
+ }
+#endif
+ else {
+ any_condition:
+ PUNFETCH;
+ condition_is_checker = 0;
+ r = fetch_token(tok, &p, end, env);
+ if (r < 0) return r;
+ r = parse_subexp(&condition, tok, term, &p, end, env);
+ if (r < 0) {
+ onig_node_free(condition);
+ return r;
+ }
+ }
+
+ end_condition:
+ CHECK_NULL_RETURN_MEMERR(condition);
+
+ if (PEND) {
+ err_if_else:
+ onig_node_free(condition);
+ return ONIGERR_END_PATTERN_IN_GROUP;
+ }
+
+ if (PPEEK_IS(')')) { /* case: empty body: make backref checker */
+ if (condition_is_checker == 0) {
+ onig_node_free(condition);
+ return ONIGERR_INVALID_IF_ELSE_SYNTAX;
+ }
+ PFETCH(c);
+ *np = condition;
+ }
+ else { /* if-else */
+ int then_is_empty;
+ Node *Then, *Else;
+
+ if (PPEEK_IS('|')) {
+ PFETCH(c);
+ Then = 0;
+ then_is_empty = 1;
+ }
+ else
+ then_is_empty = 0;
+
+ r = fetch_token(tok, &p, end, env);
+ if (r < 0) {
+ onig_node_free(condition);
+ return r;
+ }
+ r = parse_subexp(&target, tok, term, &p, end, env);
+ if (r < 0) {
+ onig_node_free(condition);
+ onig_node_free(target);
+ return r;
+ }
+
+ if (then_is_empty != 0) {
+ Else = target;
+ }
+ else {
+ if (NODE_TYPE(target) == NODE_ALT) {
+ Then = NODE_CAR(target);
+ if (NODE_CDR(NODE_CDR(target)) == NULL_NODE) {
+ Else = NODE_CAR(NODE_CDR(target));
+ cons_node_free_alone(NODE_CDR(target));
+ }
+ else {
+ Else = NODE_CDR(target);
+ }
+ cons_node_free_alone(target);
+ }
+ else {
+ Then = target;
+ Else = 0;
+ }
+ }
+
+ *np = node_new_enclosure_if_else(condition, Then, Else);
+ if (IS_NULL(*np)) {
+ onig_node_free(condition);
+ onig_node_free(Then);
+ onig_node_free(Else);
+ return ONIGERR_MEMORY;
+ }
+ }
+ goto end;
+ }
+ else {
+ return ONIGERR_UNDEFINED_GROUP_OPTION;
+ }
break;
case '@':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {
-#ifdef USE_NAMED_GROUP
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {
PFETCH(c);
if (c == '<' || c == '\'') {
@@ -4641,18 +7357,18 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
}
PUNFETCH;
}
-#endif
- *np = node_new_enclose_memory(env->option, 0);
+
+ *np = node_new_memory(0);
CHECK_NULL_RETURN_MEMERR(*np);
num = scan_env_add_mem_entry(env);
if (num < 0) {
return num;
}
- else if (num >= (int )BIT_STATUS_BITS_NUM) {
+ else if (num >= (int )MEM_STATUS_BITS_NUM) {
return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY;
}
- NENCLOSE(*np)->regnum = num;
- BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num);
+ ENCLOSURE_(*np)->m.regnum = num;
+ MEM_STATUS_ON_SIMPLE(env->capture_history, num);
}
else {
return ONIGERR_UNDEFINED_GROUP_OPTION;
@@ -4663,6 +7379,7 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case 'p':
#endif
case '-': case 'i': case 'm': case 's': case 'x':
+ case 'W': case 'D': case 'S': case 'P':
{
int neg = 0;
@@ -4673,11 +7390,11 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
break;
case '-': neg = 1; break;
- case 'x': ONOFF(option, ONIG_OPTION_EXTEND, neg); break;
- case 'i': ONOFF(option, ONIG_OPTION_IGNORECASE, neg); break;
+ case 'x': OPTION_NEGATE(option, ONIG_OPTION_EXTEND, neg); break;
+ case 'i': OPTION_NEGATE(option, ONIG_OPTION_IGNORECASE, neg); break;
case 's':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {
- ONOFF(option, ONIG_OPTION_MULTILINE, neg);
+ OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg);
}
else
return ONIGERR_UNDEFINED_GROUP_OPTION;
@@ -4685,19 +7402,24 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
case 'm':
if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {
- ONOFF(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0));
+ OPTION_NEGATE(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0));
}
else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) {
- ONOFF(option, ONIG_OPTION_MULTILINE, neg);
+ OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg);
}
else
return ONIGERR_UNDEFINED_GROUP_OPTION;
break;
#ifdef USE_POSIXLINE_OPTION
case 'p':
- ONOFF(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);
+ OPTION_NEGATE(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);
break;
#endif
+ case 'W': OPTION_NEGATE(option, ONIG_OPTION_WORD_IS_ASCII, neg); break;
+ case 'D': OPTION_NEGATE(option, ONIG_OPTION_DIGIT_IS_ASCII, neg); break;
+ case 'S': OPTION_NEGATE(option, ONIG_OPTION_SPACE_IS_ASCII, neg); break;
+ case 'P': OPTION_NEGATE(option, ONIG_OPTION_POSIX_IS_ASCII, neg); break;
+
default:
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
@@ -4709,20 +7431,20 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
return 2; /* option only */
}
else if (c == ':') {
- OnigOptionType prev = env->option;
+ OnigOptionType prev = env->options;
- env->option = option;
+ env->options = option;
r = fetch_token(tok, &p, end, env);
if (r < 0) return r;
r = parse_subexp(&target, tok, term, &p, end, env);
- env->option = prev;
+ env->options = prev;
if (r < 0) {
onig_node_free(target);
return r;
}
*np = node_new_option(option);
CHECK_NULL_RETURN_MEMERR(*np);
- NENCLOSE(*np)->target = target;
+ NODE_BODY(*np) = target;
*src = p;
return 0;
}
@@ -4737,15 +7459,25 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
return ONIGERR_UNDEFINED_GROUP_OPTION;
}
}
+#ifdef USE_CALLOUT
+ else if (c == '*' &&
+ IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME)) {
+ PINC;
+ r = parse_callout_of_name(np, ')', &p, end, env);
+ if (r != 0) return r;
+
+ goto end;
+ }
+#endif
else {
- if (ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_DONT_CAPTURE_GROUP))
+ if (ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_DONT_CAPTURE_GROUP))
goto group;
- *np = node_new_enclose_memory(env->option, 0);
+ *np = node_new_memory(0);
CHECK_NULL_RETURN_MEMERR(*np);
num = scan_env_add_mem_entry(env);
if (num < 0) return num;
- NENCLOSE(*np)->regnum = num;
+ ENCLOSURE_(*np)->m.regnum = num;
}
CHECK_NULL_RETURN_MEMERR(*np);
@@ -4757,17 +7489,17 @@ parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
return r;
}
- if (NTYPE(*np) == NT_ANCHOR)
- NANCHOR(*np)->target = target;
- else {
- NENCLOSE(*np)->target = target;
- if (NENCLOSE(*np)->type == ENCLOSE_MEMORY) {
+ NODE_BODY(*np) = target;
+
+ if (NODE_TYPE(*np) == NODE_ENCLOSURE) {
+ if (ENCLOSURE_(*np)->type == ENCLOSURE_MEMORY) {
/* Don't move this to previous of parse_subexp() */
- r = scan_env_set_mem_node(env, NENCLOSE(*np)->regnum, *np);
+ r = scan_env_set_mem_node(env, ENCLOSURE_(*np)->m.regnum, *np);
if (r != 0) return r;
}
}
+ end:
*src = p;
return 0;
}
@@ -4783,36 +7515,34 @@ static const char* ReduceQStr[] = {
static int
set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
{
- QtfrNode* qn;
+ QuantNode* qn;
- qn = NQTFR(qnode);
- if (qn->lower == 1 && qn->upper == 1) {
+ qn = QUANT_(qnode);
+ if (qn->lower == 1 && qn->upper == 1)
return 1;
- }
- switch (NTYPE(target)) {
- case NT_STR:
+ switch (NODE_TYPE(target)) {
+ case NODE_STRING:
if (! group) {
- StrNode* sn = NSTR(target);
- if (str_node_can_be_split(sn, env->enc)) {
- Node* n = str_node_split_last_char(sn, env->enc);
+ if (str_node_can_be_split(target, env->enc)) {
+ Node* n = str_node_split_last_char(target, env->enc);
if (IS_NOT_NULL(n)) {
- qn->target = n;
+ NODE_BODY(qnode) = n;
return 2;
}
}
}
break;
- case NT_QTFR:
+ case NODE_QUANT:
{ /* check redundant double repeat. */
/* verbose warn (?:.?)? etc... but not warn (.?)? etc... */
- QtfrNode* qnt = NQTFR(target);
- int nestq_num = popular_quantifier_num(qn);
- int targetq_num = popular_quantifier_num(qnt);
+ QuantNode* qnt = QUANT_(target);
+ int nestq_num = quantifier_type_num(qn);
+ int targetq_num = quantifier_type_num(qnt);
#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR
- if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) &&
+ if (targetq_num >= 0 && nestq_num >= 0 &&
IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) {
UChar buf[WARN_BUFSIZE];
@@ -4846,18 +7576,19 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
warn_exit:
#endif
- if (targetq_num >= 0) {
- if (nestq_num >= 0) {
- onig_reduce_nested_quantifier(qnode, target);
- goto q_exit;
- }
- else if (targetq_num == 1 || targetq_num == 2) { /* * or + */
+ if (targetq_num >= 0 && nestq_num < 0) {
+ if (targetq_num == 1 || targetq_num == 2) { /* * or + */
/* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */
if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) {
qn->upper = (qn->lower == 0 ? 1 : qn->lower);
}
}
}
+ else {
+ NODE_BODY(qnode) = target;
+ onig_reduce_nested_quantifier(qnode, target);
+ goto q_exit;
+ }
}
break;
@@ -4865,7 +7596,7 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
break;
}
- qn->target = target;
+ NODE_BODY(qnode) = target;
q_exit:
return 0;
}
@@ -4904,8 +7635,7 @@ typedef struct {
} IApplyCaseFoldArg;
static int
-i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
- int to_len, void* arg)
+i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg)
{
IApplyCaseFoldArg* iarg;
ScanEnv* env;
@@ -4952,7 +7682,7 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
if (onig_is_code_in_cc(env->enc, from, cc)
#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS
- && !IS_NCCLASS_NOT(cc)
+ && !IS_NCCLASS_NOT(cc)
#endif
) {
for (i = 0; i < to_len; i++) {
@@ -4963,7 +7693,7 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
/* char-class expanded multi-char only
compare with string folded at match time. */
- NSTRING_SET_AMBIG(snode);
+ NODE_STRING_SET_AMBIG(snode);
}
else {
r = onig_node_str_cat(snode, buf, buf + len);
@@ -4976,7 +7706,7 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
*(iarg->ptail) = onig_node_new_alt(snode, NULL_NODE);
CHECK_NULL_RETURN_MEMERR(*(iarg->ptail));
- iarg->ptail = &(NCDR((*(iarg->ptail))));
+ iarg->ptail = &(NODE_CDR((*(iarg->ptail))));
}
}
@@ -4984,8 +7714,8 @@ i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],
}
static int
-parse_exp(Node** np, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r, len, group = 0;
Node* qn;
@@ -5004,23 +7734,23 @@ parse_exp(Node** np, OnigToken* tok, int term,
break;
case TK_SUBEXP_OPEN:
- r = parse_enclose(np, tok, TK_SUBEXP_CLOSE, src, end, env);
+ r = parse_enclosure(np, tok, TK_SUBEXP_CLOSE, src, end, env);
if (r < 0) return r;
if (r == 1) group = 1;
else if (r == 2) { /* option only */
Node* target;
- OnigOptionType prev = env->option;
+ OnigOptionType prev = env->options;
- env->option = NENCLOSE(*np)->option;
+ env->options = ENCLOSURE_(*np)->o.options;
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
r = parse_subexp(&target, tok, term, src, end, env);
- env->option = prev;
+ env->options = prev;
if (r < 0) {
onig_node_free(target);
return r;
}
- NENCLOSE(*np)->target = target;
+ NODE_BODY(*np) = target;
return tok->type;
}
break;
@@ -5062,9 +7792,9 @@ parse_exp(Node** np, OnigToken* tok, int term,
len = 1;
while (1) {
if (len >= ONIGENC_MBC_MINLEN(env->enc)) {
- if (len == enclen(env->enc, NSTR(*np)->s)) {//should not enclen_end()
+ if (len == enclen(env->enc, STR_(*np)->s)) {/* should not enclen_end() */
r = fetch_token(tok, src, end, env);
- NSTRING_CLEAR_RAW(*np);
+ NODE_STRING_CLEAR_RAW(*np);
goto string_end;
}
}
@@ -5077,9 +7807,9 @@ parse_exp(Node** np, OnigToken* tok, int term,
int rem;
if (len < ONIGENC_MBC_MINLEN(env->enc)) {
rem = ONIGENC_MBC_MINLEN(env->enc) - len;
- (void )node_str_head_pad(NSTR(*np), rem, (UChar )0);
- if (len + rem == enclen(env->enc, NSTR(*np)->s)) {
- NSTRING_CLEAR_RAW(*np);
+ (void )node_str_head_pad(STR_(*np), rem, (UChar )0);
+ if (len + rem == enclen(env->enc, STR_(*np)->s)) {
+ NODE_STRING_CLEAR_RAW(*np);
goto string_end;
}
}
@@ -5131,7 +7861,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
{
switch (tok->u.prop.ctype) {
case ONIGENC_CTYPE_WORD:
- *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not);
+ *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options);
CHECK_NULL_RETURN_MEMERR(*np);
break;
@@ -5143,7 +7873,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
*np = node_new_cclass();
CHECK_NULL_RETURN_MEMERR(*np);
- cc = NCCLASS(*np);
+ cc = CCLASS_(*np);
add_ctype_to_cc(cc, tok->u.prop.ctype, 0, env);
if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);
}
@@ -5168,8 +7898,8 @@ parse_exp(Node** np, OnigToken* tok, int term,
r = parse_char_class(np, tok, src, end, env);
if (r != 0) return r;
- cc = NCCLASS(*np);
- if (IS_IGNORECASE(env->option)) {
+ cc = CCLASS_(*np);
+ if (IS_IGNORECASE(env->options)) {
IApplyCaseFoldArg iarg;
iarg.env = env;
@@ -5205,7 +7935,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
CHECK_NULL_RETURN_MEMERR(*np);
qn = node_new_quantifier(0, REPEAT_INFINITE, 0);
CHECK_NULL_RETURN_MEMERR(qn);
- NQTFR(qn)->target = *np;
+ NODE_BODY(qn) = *np;
*np = qn;
break;
@@ -5215,32 +7945,35 @@ parse_exp(Node** np, OnigToken* tok, int term,
(len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)),
tok->u.backref.by_name,
#ifdef USE_BACKREF_WITH_LEVEL
- tok->u.backref.exist_level,
- tok->u.backref.level,
+ tok->u.backref.exist_level,
+ tok->u.backref.level,
#endif
- env);
+ env);
CHECK_NULL_RETURN_MEMERR(*np);
break;
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
case TK_CALL:
{
int gnum = tok->u.call.gnum;
- if (gnum < 0) {
- gnum = BACKREF_REL_TO_ABS(gnum, env);
- if (gnum <= 0)
- return ONIGERR_INVALID_BACKREF;
- }
- *np = node_new_call(tok->u.call.name, tok->u.call.name_end, gnum);
+ *np = node_new_call(tok->u.call.name, tok->u.call.name_end,
+ gnum, tok->u.call.by_number);
CHECK_NULL_RETURN_MEMERR(*np);
env->num_call++;
+ if (tok->u.call.by_number != 0 && gnum == 0) {
+ env->has_call_zero = 1;
+ }
}
break;
#endif
case TK_ANCHOR:
- *np = onig_node_new_anchor(tok->u.anchor);
+ {
+ int ascii_mode =
+ IS_WORD_ASCII(env->options) && IS_WORD_ANCHOR_TYPE(tok->u.anchor) ? 1 : 0;
+ *np = onig_node_new_anchor(tok->u.anchor, ascii_mode);
+ }
break;
case TK_OP_REPEAT:
@@ -5256,6 +7989,31 @@ parse_exp(Node** np, OnigToken* tok, int term,
}
break;
+ case TK_KEEP:
+ r = node_new_keep(np, env);
+ if (r < 0) return r;
+ break;
+
+ case TK_GENERAL_NEWLINE:
+ r = node_new_general_newline(np, env);
+ if (r < 0) return r;
+ break;
+
+ case TK_NO_NEWLINE:
+ r = node_new_no_newline(np, env);
+ if (r < 0) return r;
+ break;
+
+ case TK_TRUE_ANYCHAR:
+ r = node_new_true_anychar(np, env);
+ if (r < 0) return r;
+ break;
+
+ case TK_EXTENDED_GRAPHEME_CLUSTER:
+ r = make_extended_grapheme_cluster(np, env);
+ if (r < 0) return r;
+ break;
+
default:
return ONIGERR_PARSER_BUG;
break;
@@ -5276,7 +8034,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper,
(r == TK_INTERVAL ? 1 : 0));
CHECK_NULL_RETURN_MEMERR(qn);
- NQTFR(qn)->greedy = tok->u.repeat.greedy;
+ QUANT_(qn)->greedy = tok->u.repeat.greedy;
r = set_quantifier(qn, *targetp, group, env);
if (r < 0) {
onig_node_free(qn);
@@ -5285,12 +8043,12 @@ parse_exp(Node** np, OnigToken* tok, int term,
if (tok->u.repeat.possessive != 0) {
Node* en;
- en = node_new_enclose(ENCLOSE_STOP_BACKTRACK);
+ en = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK);
if (IS_NULL(en)) {
onig_node_free(qn);
return ONIGERR_MEMORY;
}
- NENCLOSE(en)->target = qn;
+ NODE_BODY(en) = qn;
qn = en;
}
@@ -5308,12 +8066,12 @@ parse_exp(Node** np, OnigToken* tok, int term,
onig_node_free(qn);
return ONIGERR_MEMORY;
}
- tmp = NCDR(*targetp) = node_new_list(qn, NULL);
+ tmp = NODE_CDR(*targetp) = node_new_list(qn, NULL);
if (IS_NULL(tmp)) {
onig_node_free(qn);
return ONIGERR_MEMORY;
}
- targetp = &(NCAR(tmp));
+ targetp = &(NODE_CAR(tmp));
}
goto re_entry;
}
@@ -5323,8 +8081,8 @@ parse_exp(Node** np, OnigToken* tok, int term,
}
static int
-parse_branch(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r;
Node *node, **headp;
@@ -5341,7 +8099,7 @@ parse_branch(Node** top, OnigToken* tok, int term,
}
else {
*top = node_new_list(node, NULL);
- headp = &(NCDR(*top));
+ headp = &(NODE_CDR(*top));
while (r != TK_EOT && r != term && r != TK_ALT) {
r = parse_exp(&node, tok, term, src, end, env);
if (r < 0) {
@@ -5349,14 +8107,14 @@ parse_branch(Node** top, OnigToken* tok, int term,
return r;
}
- if (NTYPE(node) == NT_LIST) {
+ if (NODE_TYPE(node) == NODE_LIST) {
*headp = node;
- while (IS_NOT_NULL(NCDR(node))) node = NCDR(node);
- headp = &(NCDR(node));
+ while (IS_NOT_NULL(NODE_CDR(node))) node = NODE_CDR(node);
+ headp = &(NODE_CDR(node));
}
else {
*headp = node_new_list(node, NULL);
- headp = &(NCDR(*headp));
+ headp = &(NODE_CDR(*headp));
}
}
}
@@ -5366,8 +8124,8 @@ parse_branch(Node** top, OnigToken* tok, int term,
/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */
static int
-parse_subexp(Node** top, OnigToken* tok, int term,
- UChar** src, UChar* end, ScanEnv* env)
+parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end,
+ ScanEnv* env)
{
int r;
Node *node, **headp;
@@ -5387,7 +8145,7 @@ parse_subexp(Node** top, OnigToken* tok, int term,
}
else if (r == TK_ALT) {
*top = onig_node_new_alt(node, NULL);
- headp = &(NCDR(*top));
+ headp = &(NODE_CDR(*top));
while (r == TK_ALT) {
r = fetch_token(tok, src, end, env);
if (r < 0) return r;
@@ -5397,7 +8155,7 @@ parse_subexp(Node** top, OnigToken* tok, int term,
return r;
}
*headp = onig_node_new_alt(node, NULL);
- headp = &(NCDR(*headp));
+ headp = &(NODE_CDR(*headp));
}
if (tok->type != (enum TokenSyms )term)
@@ -5426,22 +8184,46 @@ parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env)
if (r < 0) return r;
r = parse_subexp(top, &tok, TK_EOT, src, end, env);
if (r < 0) return r;
+
+ return 0;
+}
+
+#ifdef USE_CALL
+static int
+make_call_zero_body(Node* node, ScanEnv* env, Node** rnode)
+{
+ int r;
+
+ Node* x = node_new_memory(0 /* 0: is not named */);
+ CHECK_NULL_RETURN_MEMERR(x);
+
+ NODE_BODY(x) = node;
+ ENCLOSURE_(x)->m.regnum = 0;
+ r = scan_env_set_mem_node(env, 0, x);
+ if (r != 0) {
+ onig_node_free(x);
+ return r;
+ }
+
+ *rnode = x;
return 0;
}
+#endif
extern int
-onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end,
- regex_t* reg, ScanEnv* env)
+onig_parse_tree(Node** root, const UChar* pattern, const UChar* end,
+ regex_t* reg, ScanEnv* env)
{
int r;
UChar* p;
+#ifdef USE_CALLOUT
+ RegexExt* ext;
+#endif
-#ifdef USE_NAMED_GROUP
names_clear(reg);
-#endif
scan_env_clear(env);
- env->option = reg->options;
+ env->options = reg->options;
env->case_fold_flag = reg->case_fold_flag;
env->enc = reg->enc;
env->syntax = reg->syntax;
@@ -5456,13 +8238,34 @@ onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end,
p = (UChar* )pattern;
r = parse_regexp(root, &p, (UChar* )end, env);
+
+#ifdef USE_CALL
+ if (r != 0) return r;
+
+ if (env->has_call_zero != 0) {
+ Node* zero_node;
+ r = make_call_zero_body(*root, env, &zero_node);
+ if (r != 0) return r;
+
+ *root = zero_node;
+ }
+#endif
+
reg->num_mem = env->num_mem;
+
+#ifdef USE_CALLOUT
+ ext = REG_EXTP(reg);
+ if (IS_NOT_NULL(ext) && ext->callout_num > 0) {
+ r = setup_ext_callout_list_values(reg);
+ }
+#endif
+
return r;
}
extern void
onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED,
- UChar* arg, UChar* arg_end)
+ UChar* arg, UChar* arg_end)
{
env->error = arg;
env->error_end = arg_end;
diff --git a/ext/mbstring/oniguruma/src/regparse.h b/ext/mbstring/oniguruma/src/regparse.h
index 6fc8152aa4..2855616d82 100644
--- a/ext/mbstring/oniguruma/src/regparse.h
+++ b/ext/mbstring/oniguruma/src/regparse.h
@@ -4,7 +4,7 @@
regparse.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,172 +32,239 @@
#include "regint.h"
/* node type */
-#define NT_STR 0
-#define NT_CCLASS 1
-#define NT_CTYPE 2
-#define NT_CANY 3
-#define NT_BREF 4
-#define NT_QTFR 5
-#define NT_ENCLOSE 6
-#define NT_ANCHOR 7
-#define NT_LIST 8
-#define NT_ALT 9
-#define NT_CALL 10
+typedef enum {
+ NODE_STRING = 0,
+ NODE_CCLASS = 1,
+ NODE_CTYPE = 2,
+ NODE_BACKREF = 3,
+ NODE_QUANT = 4,
+ NODE_ENCLOSURE = 5,
+ NODE_ANCHOR = 6,
+ NODE_LIST = 7,
+ NODE_ALT = 8,
+ NODE_CALL = 9,
+ NODE_GIMMICK = 10
+} NodeType;
+
+enum GimmickType {
+ GIMMICK_FAIL = 0,
+ GIMMICK_KEEP = 1,
+ GIMMICK_SAVE = 2,
+ GIMMICK_UPDATE_VAR = 3,
+#ifdef USE_CALLOUT
+ GIMMICK_CALLOUT = 4,
+#endif
+};
+
/* node type bit */
-#define NTYPE2BIT(type) (1<<(type))
-
-#define BIT_NT_STR NTYPE2BIT(NT_STR)
-#define BIT_NT_CCLASS NTYPE2BIT(NT_CCLASS)
-#define BIT_NT_CTYPE NTYPE2BIT(NT_CTYPE)
-#define BIT_NT_CANY NTYPE2BIT(NT_CANY)
-#define BIT_NT_BREF NTYPE2BIT(NT_BREF)
-#define BIT_NT_QTFR NTYPE2BIT(NT_QTFR)
-#define BIT_NT_ENCLOSE NTYPE2BIT(NT_ENCLOSE)
-#define BIT_NT_ANCHOR NTYPE2BIT(NT_ANCHOR)
-#define BIT_NT_LIST NTYPE2BIT(NT_LIST)
-#define BIT_NT_ALT NTYPE2BIT(NT_ALT)
-#define BIT_NT_CALL NTYPE2BIT(NT_CALL)
-
-#define IS_NODE_TYPE_SIMPLE(type) \
- ((NTYPE2BIT(type) & (BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE |\
- BIT_NT_CANY | BIT_NT_BREF)) != 0)
-
-#define NTYPE(node) ((node)->u.base.type)
-#define SET_NTYPE(node, ntype) (node)->u.base.type = (ntype)
-
-#define NSTR(node) (&((node)->u.str))
-#define NCCLASS(node) (&((node)->u.cclass))
-#define NCTYPE(node) (&((node)->u.ctype))
-#define NBREF(node) (&((node)->u.bref))
-#define NQTFR(node) (&((node)->u.qtfr))
-#define NENCLOSE(node) (&((node)->u.enclose))
-#define NANCHOR(node) (&((node)->u.anchor))
-#define NCONS(node) (&((node)->u.cons))
-#define NCALL(node) (&((node)->u.call))
-
-#define NCAR(node) (NCONS(node)->car)
-#define NCDR(node) (NCONS(node)->cdr)
-
-
-
-#define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)
+#define NODE_TYPE2BIT(type) (1<<(type))
+
+#define NODE_BIT_STRING NODE_TYPE2BIT(NODE_STRING)
+#define NODE_BIT_CCLASS NODE_TYPE2BIT(NODE_CCLASS)
+#define NODE_BIT_CTYPE NODE_TYPE2BIT(NODE_CTYPE)
+#define NODE_BIT_BACKREF NODE_TYPE2BIT(NODE_BACKREF)
+#define NODE_BIT_QUANT NODE_TYPE2BIT(NODE_QUANT)
+#define NODE_BIT_ENCLOSURE NODE_TYPE2BIT(NODE_ENCLOSURE)
+#define NODE_BIT_ANCHOR NODE_TYPE2BIT(NODE_ANCHOR)
+#define NODE_BIT_LIST NODE_TYPE2BIT(NODE_LIST)
+#define NODE_BIT_ALT NODE_TYPE2BIT(NODE_ALT)
+#define NODE_BIT_CALL NODE_TYPE2BIT(NODE_CALL)
+#define NODE_BIT_GIMMICK NODE_TYPE2BIT(NODE_GIMMICK)
+
+#define NODE_IS_SIMPLE_TYPE(node) \
+ ((NODE_TYPE2BIT(NODE_TYPE(node)) & \
+ (NODE_BIT_STRING | NODE_BIT_CCLASS | NODE_BIT_CTYPE | NODE_BIT_BACKREF)) != 0)
+
+#define NODE_TYPE(node) ((node)->u.base.node_type)
+#define NODE_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype)
+
+#define STR_(node) (&((node)->u.str))
+#define CCLASS_(node) (&((node)->u.cclass))
+#define CTYPE_(node) (&((node)->u.ctype))
+#define BACKREF_(node) (&((node)->u.backref))
+#define QUANT_(node) (&((node)->u.quant))
+#define ENCLOSURE_(node) (&((node)->u.enclosure))
+#define ANCHOR_(node) (&((node)->u.anchor))
+#define CONS_(node) (&((node)->u.cons))
+#define CALL_(node) (&((node)->u.call))
+#define GIMMICK_(node) (&((node)->u.gimmick))
+
+#define NODE_CAR(node) (CONS_(node)->car)
+#define NODE_CDR(node) (CONS_(node)->cdr)
+
+#define CTYPE_ANYCHAR -1
+#define NODE_IS_ANYCHAR(node) \
+ (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR)
+
+#define CTYPE_OPTION(node, reg) \
+ (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options)
+
+
+#define ANCHOR_ANYCHAR_INF_MASK (ANCHOR_ANYCHAR_INF | ANCHOR_ANYCHAR_INF_ML)
#define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)
-#define ENCLOSE_MEMORY (1<<0)
-#define ENCLOSE_OPTION (1<<1)
-#define ENCLOSE_STOP_BACKTRACK (1<<2)
+enum EnclosureType {
+ ENCLOSURE_MEMORY = 0,
+ ENCLOSURE_OPTION = 1,
+ ENCLOSURE_STOP_BACKTRACK = 2,
+ ENCLOSURE_IF_ELSE = 3,
+};
-#define NODE_STR_MARGIN 16
-#define NODE_STR_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */
+#define NODE_STRING_MARGIN 16
+#define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */
#define NODE_BACKREFS_SIZE 6
-#define NSTR_RAW (1<<0) /* by backslashed number */
-#define NSTR_AMBIG (1<<1)
-#define NSTR_DONT_GET_OPT_INFO (1<<2)
-
-#define NSTRING_LEN(node) ((node)->u.str.end - (node)->u.str.s)
-#define NSTRING_SET_RAW(node) (node)->u.str.flag |= NSTR_RAW
-#define NSTRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NSTR_RAW
-#define NSTRING_SET_AMBIG(node) (node)->u.str.flag |= NSTR_AMBIG
-#define NSTRING_SET_DONT_GET_OPT_INFO(node) \
- (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO
-#define NSTRING_IS_RAW(node) (((node)->u.str.flag & NSTR_RAW) != 0)
-#define NSTRING_IS_AMBIG(node) (((node)->u.str.flag & NSTR_AMBIG) != 0)
-#define NSTRING_IS_DONT_GET_OPT_INFO(node) \
- (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0)
+#define NODE_STRING_RAW (1<<0) /* by backslashed number */
+#define NODE_STRING_AMBIG (1<<1)
+#define NODE_STRING_DONT_GET_OPT_INFO (1<<2)
+
+#define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s)
+#define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= NODE_STRING_RAW
+#define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~NODE_STRING_RAW
+#define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= NODE_STRING_AMBIG
+#define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \
+ (node)->u.str.flag |= NODE_STRING_DONT_GET_OPT_INFO
+#define NODE_STRING_IS_RAW(node) \
+ (((node)->u.str.flag & NODE_STRING_RAW) != 0)
+#define NODE_STRING_IS_AMBIG(node) \
+ (((node)->u.str.flag & NODE_STRING_AMBIG) != 0)
+#define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \
+ (((node)->u.str.flag & NODE_STRING_DONT_GET_OPT_INFO) != 0)
#define BACKREFS_P(br) \
- (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);
-
-#define NQ_TARGET_ISNOT_EMPTY 0
-#define NQ_TARGET_IS_EMPTY 1
-#define NQ_TARGET_IS_EMPTY_MEM 2
-#define NQ_TARGET_IS_EMPTY_REC 3
-
-/* status bits */
-#define NST_MIN_FIXED (1<<0)
-#define NST_MAX_FIXED (1<<1)
-#define NST_CLEN_FIXED (1<<2)
-#define NST_MARK1 (1<<3)
-#define NST_MARK2 (1<<4)
-#define NST_MEM_BACKREFED (1<<5)
-#define NST_STOP_BT_SIMPLE_REPEAT (1<<6)
-#define NST_RECURSION (1<<7)
-#define NST_CALLED (1<<8)
-#define NST_ADDR_FIXED (1<<9)
-#define NST_NAMED_GROUP (1<<10)
-#define NST_NAME_REF (1<<11)
-#define NST_IN_REPEAT (1<<12) /* STK_REPEAT is nested in stack. */
-#define NST_NEST_LEVEL (1<<13)
-#define NST_BY_NUMBER (1<<14) /* {n,m} */
-
-#define SET_ENCLOSE_STATUS(node,f) (node)->u.enclose.state |= (f)
-#define CLEAR_ENCLOSE_STATUS(node,f) (node)->u.enclose.state &= ~(f)
-
-#define IS_ENCLOSE_CALLED(en) (((en)->state & NST_CALLED) != 0)
-#define IS_ENCLOSE_ADDR_FIXED(en) (((en)->state & NST_ADDR_FIXED) != 0)
-#define IS_ENCLOSE_RECURSION(en) (((en)->state & NST_RECURSION) != 0)
-#define IS_ENCLOSE_MARK1(en) (((en)->state & NST_MARK1) != 0)
-#define IS_ENCLOSE_MARK2(en) (((en)->state & NST_MARK2) != 0)
-#define IS_ENCLOSE_MIN_FIXED(en) (((en)->state & NST_MIN_FIXED) != 0)
-#define IS_ENCLOSE_MAX_FIXED(en) (((en)->state & NST_MAX_FIXED) != 0)
-#define IS_ENCLOSE_CLEN_FIXED(en) (((en)->state & NST_CLEN_FIXED) != 0)
-#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(en) \
- (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0)
-#define IS_ENCLOSE_NAMED_GROUP(en) (((en)->state & NST_NAMED_GROUP) != 0)
-
-#define SET_CALL_RECURSION(node) (node)->u.call.state |= NST_RECURSION
-#define IS_CALL_RECURSION(cn) (((cn)->state & NST_RECURSION) != 0)
-#define IS_CALL_NAME_REF(cn) (((cn)->state & NST_NAME_REF) != 0)
-#define IS_BACKREF_NAME_REF(bn) (((bn)->state & NST_NAME_REF) != 0)
-#define IS_BACKREF_NEST_LEVEL(bn) (((bn)->state & NST_NEST_LEVEL) != 0)
-#define IS_QUANTIFIER_IN_REPEAT(qn) (((qn)->state & NST_IN_REPEAT) != 0)
-#define IS_QUANTIFIER_BY_NUMBER(qn) (((qn)->state & NST_BY_NUMBER) != 0)
-
-#define CALLNODE_REFNUM_UNDEF -1
+ (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static)
+
+enum QuantBodyEmpty {
+ QUANT_BODY_IS_NOT_EMPTY = 0,
+ QUANT_BODY_IS_EMPTY = 1,
+ QUANT_BODY_IS_EMPTY_MEM = 2,
+ QUANT_BODY_IS_EMPTY_REC = 3
+};
+
+/* node status bits */
+#define NODE_ST_MIN_FIXED (1<<0)
+#define NODE_ST_MAX_FIXED (1<<1)
+#define NODE_ST_CLEN_FIXED (1<<2)
+#define NODE_ST_MARK1 (1<<3)
+#define NODE_ST_MARK2 (1<<4)
+#define NODE_ST_STOP_BT_SIMPLE_REPEAT (1<<5)
+#define NODE_ST_RECURSION (1<<6)
+#define NODE_ST_CALLED (1<<7)
+#define NODE_ST_ADDR_FIXED (1<<8)
+#define NODE_ST_NAMED_GROUP (1<<9)
+#define NODE_ST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */
+#define NODE_ST_IN_ZERO_REPEAT (1<<11) /* (....){0} */
+#define NODE_ST_IN_MULTI_ENTRY (1<<12)
+#define NODE_ST_NEST_LEVEL (1<<13)
+#define NODE_ST_BY_NUMBER (1<<14) /* {n,m} */
+#define NODE_ST_BY_NAME (1<<15) /* backref by name */
+#define NODE_ST_BACKREF (1<<16)
+#define NODE_ST_CHECKER (1<<17)
+#define NODE_ST_FIXED_OPTION (1<<18)
+#define NODE_ST_PROHIBIT_RECURSION (1<<19)
+#define NODE_ST_SUPER (1<<20)
+
+
+#define NODE_STATUS(node) (((Node* )node)->u.base.status)
+#define NODE_STATUS_ADD(node,f) (NODE_STATUS(node) |= (NODE_ST_ ## f))
+#define NODE_STATUS_REMOVE(node,f) (NODE_STATUS(node) &= ~(NODE_ST_ ## f))
+
+#define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NODE_ST_BY_NUMBER) != 0)
+#define NODE_IS_IN_REAL_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_REAL_REPEAT) != 0)
+#define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NODE_ST_CALLED) != 0)
+#define NODE_IS_IN_MULTI_ENTRY(node) ((NODE_STATUS(node) & NODE_ST_IN_MULTI_ENTRY) != 0)
+#define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NODE_ST_RECURSION) != 0)
+#define NODE_IS_IN_ZERO_REPEAT(node) ((NODE_STATUS(node) & NODE_ST_IN_ZERO_REPEAT) != 0)
+#define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NODE_ST_NAMED_GROUP) != 0)
+#define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NODE_ST_ADDR_FIXED) != 0)
+#define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_CLEN_FIXED) != 0)
+#define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MIN_FIXED) != 0)
+#define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NODE_ST_MAX_FIXED) != 0)
+#define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NODE_ST_MARK1) != 0)
+#define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NODE_ST_MARK2) != 0)
+#define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NODE_ST_NEST_LEVEL) != 0)
+#define NODE_IS_BY_NAME(node) ((NODE_STATUS(node) & NODE_ST_BY_NAME) != 0)
+#define NODE_IS_BACKREF(node) ((NODE_STATUS(node) & NODE_ST_BACKREF) != 0)
+#define NODE_IS_CHECKER(node) ((NODE_STATUS(node) & NODE_ST_CHECKER) != 0)
+#define NODE_IS_FIXED_OPTION(node) ((NODE_STATUS(node) & NODE_ST_FIXED_OPTION) != 0)
+#define NODE_IS_SUPER(node) ((NODE_STATUS(node) & NODE_ST_SUPER) != 0)
+#define NODE_IS_PROHIBIT_RECURSION(node) \
+ ((NODE_STATUS(node) & NODE_ST_PROHIBIT_RECURSION) != 0)
+#define NODE_IS_STOP_BT_SIMPLE_REPEAT(node) \
+ ((NODE_STATUS(node) & NODE_ST_STOP_BT_SIMPLE_REPEAT) != 0)
+
+#define NODE_BODY(node) ((node)->u.base.body)
+#define NODE_QUANT_BODY(node) ((node)->body)
+#define NODE_ENCLOSURE_BODY(node) ((node)->body)
+#define NODE_CALL_BODY(node) ((node)->body)
+#define NODE_ANCHOR_BODY(node) ((node)->body)
+
typedef struct {
- NodeBase base;
+ NodeType node_type;
+ int status;
+
UChar* s;
UChar* end;
unsigned int flag;
int capa; /* (allocated size - 1) or 0: use buf[] */
- UChar buf[NODE_STR_BUF_SIZE];
+ UChar buf[NODE_STRING_BUF_SIZE];
} StrNode;
typedef struct {
- NodeBase base;
- int state;
- struct _Node* target;
+ NodeType node_type;
+ int status;
+
+ unsigned int flags;
+ BitSet bs;
+ BBuf* mbuf; /* multi-byte info or NULL */
+} CClassNode;
+
+typedef struct {
+ NodeType node_type;
+ int status;
+ struct _Node* body;
+
int lower;
int upper;
int greedy;
- int target_empty_info;
+ enum QuantBodyEmpty body_empty_info;
struct _Node* head_exact;
struct _Node* next_head_exact;
int is_refered; /* include called node. don't eliminate even if {0} */
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- int comb_exp_check_num; /* 1,2,3...: check, 0: no check */
-#endif
-} QtfrNode;
+} QuantNode;
typedef struct {
- NodeBase base;
- int state;
- int type;
- int regnum;
- OnigOptionType option;
- struct _Node* target;
- AbsAddrType call_addr;
+ NodeType node_type;
+ int status;
+ struct _Node* body;
+
+ enum EnclosureType type;
+ union {
+ struct {
+ int regnum;
+ AbsAddrType called_addr;
+ int entry_count;
+ int called_state;
+ } m;
+ struct {
+ OnigOptionType options;
+ } o;
+ struct {
+ /* body is condition */
+ struct _Node* Then;
+ struct _Node* Else;
+ } te;
+ };
/* for multiple call reference */
- OnigLen min_len; /* min length (byte) */
- OnigLen max_len; /* max length (byte) */
- int char_len; /* character length */
- int opt_count; /* referenced count in optimize_node_left() */
-} EncloseNode;
+ OnigLen min_len; /* min length (byte) */
+ OnigLen max_len; /* max length (byte) */
+ int char_len; /* character length */
+ int opt_count; /* referenced count in optimize_nodes() */
+} EnclosureNode;
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
typedef struct {
int offset;
@@ -211,102 +278,140 @@ typedef struct {
} UnsetAddrList;
typedef struct {
- NodeBase base;
- int state;
+ NodeType node_type;
+ int status;
+ struct _Node* body; /* to EnclosureNode : ENCLOSURE_MEMORY */
+
+ int by_number;
int group_num;
UChar* name;
UChar* name_end;
- struct _Node* target; /* EncloseNode : ENCLOSE_MEMORY */
- UnsetAddrList* unset_addr_list;
+ int entry_count;
} CallNode;
#endif
typedef struct {
- NodeBase base;
- int state;
+ NodeType node_type;
+ int status;
+
int back_num;
int back_static[NODE_BACKREFS_SIZE];
int* back_dynamic;
int nest_level;
-} BRefNode;
+} BackRefNode;
typedef struct {
- NodeBase base;
+ NodeType node_type;
+ int status;
+ struct _Node* body;
+
int type;
- struct _Node* target;
int char_len;
+ int ascii_mode;
} AnchorNode;
typedef struct {
- NodeBase base;
+ NodeType node_type;
+ int status;
+
struct _Node* car;
struct _Node* cdr;
} ConsAltNode;
typedef struct {
- NodeBase base;
+ NodeType node_type;
+ int status;
+
int ctype;
int not;
+ OnigOptionType options;
+ int ascii_mode;
} CtypeNode;
+typedef struct {
+ NodeType node_type;
+ int status;
+
+ enum GimmickType type;
+ int detail_type;
+ int num;
+ int id;
+} GimmickNode;
+
typedef struct _Node {
union {
- NodeBase base;
- StrNode str;
- CClassNode cclass;
- QtfrNode qtfr;
- EncloseNode enclose;
- BRefNode bref;
- AnchorNode anchor;
- ConsAltNode cons;
- CtypeNode ctype;
-#ifdef USE_SUBEXP_CALL
- CallNode call;
+ struct {
+ NodeType node_type;
+ int status;
+ struct _Node* body;
+ } base;
+
+ StrNode str;
+ CClassNode cclass;
+ QuantNode quant;
+ EnclosureNode enclosure;
+ BackRefNode backref;
+ AnchorNode anchor;
+ ConsAltNode cons;
+ CtypeNode ctype;
+#ifdef USE_CALL
+ CallNode call;
#endif
+ GimmickNode gimmick;
} u;
} Node;
#define NULL_NODE ((Node* )0)
-#define SCANENV_MEMNODES_SIZE 8
-#define SCANENV_MEM_NODES(senv) \
- (IS_NOT_NULL((senv)->mem_nodes_dynamic) ? \
- (senv)->mem_nodes_dynamic : (senv)->mem_nodes_static)
+#define SCANENV_MEMENV_SIZE 8
+#define SCANENV_MEMENV(senv) \
+ (IS_NOT_NULL((senv)->mem_env_dynamic) ? \
+ (senv)->mem_env_dynamic : (senv)->mem_env_static)
+
+typedef struct {
+ Node* node;
+#if 0
+ int in;
+ int recursion;
+#endif
+} MemEnv;
+
+typedef struct {
+ enum SaveType type;
+} SaveItem;
typedef struct {
- OnigOptionType option;
+ OnigOptionType options;
OnigCaseFoldType case_fold_flag;
OnigEncoding enc;
OnigSyntaxType* syntax;
- BitStatusType capture_history;
- BitStatusType bt_mem_start;
- BitStatusType bt_mem_end;
- BitStatusType backrefed_mem;
+ MemStatusType capture_history;
+ MemStatusType bt_mem_start;
+ MemStatusType bt_mem_end;
+ MemStatusType backrefed_mem;
UChar* pattern;
UChar* pattern_end;
UChar* error;
UChar* error_end;
regex_t* reg; /* for reg->names only */
int num_call;
-#ifdef USE_SUBEXP_CALL
+#ifdef USE_CALL
UnsetAddrList* unset_addr_list;
+ int has_call_zero;
#endif
int num_mem;
-#ifdef USE_NAMED_GROUP
int num_named;
-#endif
int mem_alloc;
- Node* mem_nodes_static[SCANENV_MEMNODES_SIZE];
- Node** mem_nodes_dynamic;
-#ifdef USE_COMBINATION_EXPLOSION_CHECK
- int num_comb_exp_check;
- int comb_exp_max_regnum;
- int curr_max_regnum;
- int has_recursion;
-#endif
- unsigned int parse_depth;
+ MemEnv mem_env_static[SCANENV_MEMENV_SIZE];
+ MemEnv* mem_env_dynamic;
+ unsigned int parse_depth;
+
+ int keep_num;
+ int save_num;
+ int save_alloc_num;
+ SaveItem* saves;
} ScanEnv;
@@ -314,13 +419,11 @@ typedef struct {
#define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0)
#define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0)
-#ifdef USE_NAMED_GROUP
typedef struct {
int new_val;
} GroupNumRemap;
extern int onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));
-#endif
extern int onig_strncmp P_((const UChar* s1, const UChar* s2, int n));
extern void onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));
@@ -331,22 +434,26 @@ extern void onig_node_conv_to_str_node P_((Node* node, int raw));
extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end));
extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));
extern void onig_node_free P_((Node* node));
-extern Node* onig_node_new_enclose P_((int type));
-extern Node* onig_node_new_anchor P_((int type));
+extern Node* onig_node_new_enclosure P_((int type));
+extern Node* onig_node_new_anchor P_((int type, int ascii_mode));
extern Node* onig_node_new_str P_((const UChar* s, const UChar* end));
extern Node* onig_node_new_list P_((Node* left, Node* right));
extern Node* onig_node_list_add P_((Node* list, Node* x));
extern Node* onig_node_new_alt P_((Node* left, Node* right));
extern void onig_node_str_clear P_((Node* node));
extern int onig_names_free P_((regex_t* reg));
-extern int onig_parse_make_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env));
+extern int onig_parse_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env));
extern int onig_free_shared_cclass_table P_((void));
+extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc));
+extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node);
+
+#ifdef USE_CALLOUT
+extern int onig_global_callout_names_free(void);
+#endif
#ifdef ONIG_DEBUG
-#ifdef USE_NAMED_GROUP
extern int onig_print_names(FILE*, regex_t*);
#endif
-#endif
#if (defined (__GNUC__) && __GNUC__ > 2 ) && !defined(DARWIN) && !defined(__hpux) && !defined(_AIX)
# define UNEXPECTED(condition) __builtin_expect(condition, 0)
diff --git a/ext/mbstring/oniguruma/src/regposerr.c b/ext/mbstring/oniguruma/src/regposerr.c
index fc71eee40e..2e2a8e22cf 100644
--- a/ext/mbstring/oniguruma/src/regposerr.c
+++ b/ext/mbstring/oniguruma/src/regposerr.c
@@ -2,7 +2,7 @@
regposerr.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,6 +27,13 @@
* SUCH DAMAGE.
*/
+/* Can't include regint.h etc.. for conflict of regex_t.
+ Define ONIGURUMA_EXPORT here for onigposix.h.
+ */
+#ifndef ONIGURUMA_EXPORT
+#define ONIGURUMA_EXPORT
+#endif
+
#include "config.h"
#include "onigposix.h"
diff --git a/ext/mbstring/oniguruma/src/regposix.c b/ext/mbstring/oniguruma/src/regposix.c
index bbe52dc0f1..895cf29817 100644
--- a/ext/mbstring/oniguruma/src/regposix.c
+++ b/ext/mbstring/oniguruma/src/regposix.c
@@ -2,7 +2,7 @@
regposix.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,7 +40,7 @@
if (ONIGENC_MBC_MINLEN(enc) == 1) { \
UChar* tmps = (UChar* )(s); \
while (*tmps != 0) tmps++; \
- len = tmps - (UChar* )(s); \
+ len = (int )(tmps - (UChar* )(s));\
} \
else { \
len = onigenc_str_bytelen_null(enc, (UChar* )s); \
@@ -58,8 +58,10 @@ onig2posix_error_code(int code)
static const O2PERR o2p[] = {
{ ONIG_MISMATCH, REG_NOMATCH },
{ ONIG_NO_SUPPORT_CONFIG, REG_EONIG_INTERNAL },
+ { ONIG_ABORT, REG_EONIG_INTERNAL },
{ ONIGERR_MEMORY, REG_ESPACE },
{ ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL },
+ { ONIGERR_RETRY_LIMIT_IN_MATCH_OVER, REG_EONIG_INTERNAL },
{ ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL },
{ ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL },
{ ONIGERR_STACK_BUG, REG_EONIG_INTERNAL },
@@ -114,6 +116,15 @@ onig2posix_error_code(int code)
{ ONIGERR_NEVER_ENDING_RECURSION, REG_BADPAT },
{ ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, REG_BADPAT },
{ ONIGERR_INVALID_CHAR_PROPERTY_NAME, REG_BADPAT },
+ { ONIGERR_INVALID_IF_ELSE_SYNTAX, REG_BADPAT },
+ { ONIGERR_INVALID_ABSENT_GROUP_PATTERN, REG_BADPAT },
+ { ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN, REG_BADPAT },
+ { ONIGERR_INVALID_CALLOUT_PATTERN, REG_BADPAT },
+ { ONIGERR_INVALID_CALLOUT_NAME, REG_BADPAT },
+ { ONIGERR_UNDEFINED_CALLOUT_NAME, REG_BADPAT },
+ { ONIGERR_INVALID_CALLOUT_BODY, REG_BADPAT },
+ { ONIGERR_INVALID_CALLOUT_TAG_NAME, REG_BADPAT },
+ { ONIGERR_INVALID_CALLOUT_ARG, REG_BADPAT },
{ ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION, REG_EONIG_BADARG },
{ ONIGERR_LIBRARY_IS_NOT_INITIALIZED, REG_EONIG_INTERNAL }
};
@@ -257,8 +268,7 @@ reg_set_encoding(int mb_code)
break;
}
- onig_initialize(0, 0);
- onig_initialize_encoding(enc);
+ onig_initialize(&enc, 1);
onigenc_set_default_encoding(enc);
}
diff --git a/ext/mbstring/oniguruma/src/regsyntax.c b/ext/mbstring/oniguruma/src/regsyntax.c
index e751e24f2e..aa9547923e 100644
--- a/ext/mbstring/oniguruma/src/regsyntax.c
+++ b/ext/mbstring/oniguruma/src/regsyntax.c
@@ -2,7 +2,7 @@
regsyntax.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2006 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -174,8 +174,16 @@ OnigSyntaxType OnigSyntaxPerl = {
& ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
, ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
+ ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
+ ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
+ ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
- ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT )
+ ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
+ ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
+ ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
+ ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT )
, SYN_GNU_REGEX_BV
, ONIG_OPTION_SINGLELINE
,
@@ -199,11 +207,20 @@ OnigSyntaxType OnigSyntaxPerl_NG = {
& ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )
, ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |
ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |
+ ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE |
+ ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP |
+ ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS |
+ ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME |
+ ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER |
ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |
ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |
ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP |
ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |
- ONIG_SYN_OP2_ESC_G_SUBEXP_CALL )
+ ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |
+ ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP |
+ ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE |
+ ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT |
+ ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL )
, ( SYN_GNU_REGEX_BV |
ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |
ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )
@@ -225,7 +242,7 @@ extern int
onig_set_default_syntax(OnigSyntaxType* syntax)
{
if (IS_NULL(syntax))
- syntax = ONIG_SYNTAX_RUBY;
+ syntax = ONIG_SYNTAX_ONIGURUMA;
OnigDefaultSyntax = syntax;
return 0;
diff --git a/ext/mbstring/oniguruma/src/regversion.c b/ext/mbstring/oniguruma/src/regversion.c
index 245a001b57..594a52cd96 100644
--- a/ext/mbstring/oniguruma/src/regversion.c
+++ b/ext/mbstring/oniguruma/src/regversion.c
@@ -2,7 +2,7 @@
regversion.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,7 +27,6 @@
* SUCH DAMAGE.
*/
-#include "config.h"
#include "regint.h"
#include <stdio.h>
@@ -49,7 +48,7 @@ onig_copyright(void)
static char s[58];
xsnprintf(s, sizeof(s),
- "Oniguruma %d.%d.%d : Copyright (C) 2002-2016 K.Kosako",
+ "Oniguruma %d.%d.%d : Copyright (C) 2002-2018 K.Kosako",
ONIGURUMA_VERSION_MAJOR,
ONIGURUMA_VERSION_MINOR,
ONIGURUMA_VERSION_TEENY);
diff --git a/ext/mbstring/oniguruma/src/sjis.c b/ext/mbstring/oniguruma/src/sjis.c
index 3378474827..4ffd44b071 100644
--- a/ext/mbstring/oniguruma/src/sjis.c
+++ b/ext/mbstring/oniguruma/src/sjis.c
@@ -2,7 +2,7 @@
sjis.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -156,7 +156,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf)
if (enclen(ONIG_ENCODING_SJIS, buf) != (p - buf))
return REGERR_INVALID_CODE_POINT_VALUE;
#endif
- return p - buf;
+ return (int )(p - buf);
}
static int
@@ -262,13 +262,13 @@ static int
property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
{
struct PropertyNameCtype* pc;
- int len = end - p;
+ int len = (int )(end - p);
char q[32];
if (len < sizeof(q) - 1) {
xmemcpy(q, p, (size_t )len);
q[len] = '\0';
- pc = euc_jp_lookup_property_name(q, len);
+ pc = onigenc_sjis_lookup_property_name(q, len);
if (pc != 0)
return pc->ctype;
}
@@ -321,8 +321,8 @@ get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
OnigEncodingType OnigEncodingSJIS = {
mbc_enc_len,
"Shift_JIS", /* name */
- 2, /* max byte length */
- 1, /* min byte length */
+ 2, /* max enc length */
+ 1, /* min enc length */
onigenc_is_mbc_newline_0x0a,
mbc_to_code,
code_to_mbclen,
@@ -337,5 +337,7 @@ OnigEncodingType OnigEncodingSJIS = {
is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/sjis_prop.c b/ext/mbstring/oniguruma/src/sjis_prop.c
index 83a7b45142..0d0c68f7ba 100644
--- a/ext/mbstring/oniguruma/src/sjis_prop.c
+++ b/ext/mbstring/oniguruma/src/sjis_prop.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -pt -T -L ANSI-C -N sjis_lookup_property_name --output-file sjis_prop.c sjis_prop.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -pt -T -L ANSI-C -N onigenc_sjis_lookup_property_name --output-file gperf2.tmp sjis_prop.gperf */
/* Computed positions: -k'1,3' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -26,7 +26,7 @@
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
#endif
#line 1 "sjis_prop.gperf"
@@ -49,7 +49,7 @@ inline
#endif
#endif
static unsigned int
-hash (register const char *str, register unsigned int len)
+hash (register const char *str, register size_t len)
{
static unsigned char asso_values[] =
{
@@ -80,17 +80,11 @@ hash (register const char *str, register unsigned int len)
56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56
};
- return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
+ return (unsigned int )len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
struct PropertyNameCtype *
-sjis_lookup_property_name (register const char *str, register unsigned int len)
+onigenc_sjis_lookup_property_name (register const char *str, register size_t len)
{
static struct PropertyNameCtype wordlist[] =
{
@@ -144,9 +138,9 @@ sjis_lookup_property_name (register const char *str, register unsigned int len)
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- register int key = hash (str, len);
+ register unsigned int key = hash (str, len);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
register const char *s = wordlist[key].name;
diff --git a/ext/mbstring/oniguruma/src/st.c b/ext/mbstring/oniguruma/src/st.c
index d4fe867f9e..e5fd1a15d9 100644
--- a/ext/mbstring/oniguruma/src/st.c
+++ b/ext/mbstring/oniguruma/src/st.c
@@ -108,17 +108,16 @@ new_size(size)
#if 0
for (i=3; i<31; i++) {
- if ((1<<i) > size) return 1<<i;
+ if ((1<<i) > size) return 1<<i;
}
return -1;
#else
int newsize;
for (i = 0, newsize = MINSIZE;
- i < (int )(sizeof(primes)/sizeof(primes[0]));
- i++, newsize <<= 1)
- {
- if (newsize > size) return primes[i];
+ i < (int )(sizeof(primes)/sizeof(primes[0]));
+ i++, newsize <<= 1) {
+ if (newsize > size) return primes[i];
}
/* Ran out of polynomials */
return -1; /* should raise exception */
@@ -145,82 +144,82 @@ st_init_table_with_size(type, size)
struct st_hash_type *type;
int size;
{
- st_table *tbl;
+ st_table *tbl;
#ifdef HASH_LOG
- if (init_st == 0) {
- init_st = 1;
- atexit(stat_col);
- }
+ if (init_st == 0) {
+ init_st = 1;
+ atexit(stat_col);
+ }
#endif
- size = new_size(size); /* round up to prime number */
+ size = new_size(size); /* round up to prime number */
- tbl = alloc(st_table);
- if (tbl == 0) return 0;
+ tbl = alloc(st_table);
+ if (tbl == 0) return 0;
- tbl->type = type;
- tbl->num_entries = 0;
- tbl->num_bins = size;
- tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*));
- if (tbl->bins == 0) {
- free(tbl);
- return 0;
- }
+ tbl->type = type;
+ tbl->num_entries = 0;
+ tbl->num_bins = size;
+ tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*));
+ if (tbl->bins == 0) {
+ free(tbl);
+ return 0;
+ }
- return tbl;
+ return tbl;
}
st_table*
st_init_table(type)
struct st_hash_type *type;
{
- return st_init_table_with_size(type, 0);
+ return st_init_table_with_size(type, 0);
}
st_table*
st_init_numtable(void)
{
- return st_init_table(&type_numhash);
+ return st_init_table(&type_numhash);
}
st_table*
st_init_numtable_with_size(size)
int size;
{
- return st_init_table_with_size(&type_numhash, size);
+ return st_init_table_with_size(&type_numhash, size);
}
st_table*
st_init_strtable(void)
{
- return st_init_table(&type_strhash);
+ return st_init_table(&type_strhash);
}
st_table*
st_init_strtable_with_size(size)
int size;
{
- return st_init_table_with_size(&type_strhash, size);
+ return st_init_table_with_size(&type_strhash, size);
}
void
st_free_table(table)
st_table *table;
{
- register st_table_entry *ptr, *next;
- int i;
+ register st_table_entry *ptr, *next;
+ int i;
- for(i = 0; i < table->num_bins; i++) {
- ptr = table->bins[i];
- while (ptr != 0) {
+ for(i = 0; i < table->num_bins; i++) {
+ ptr = table->bins[i];
+ while (ptr != 0) {
next = ptr->next;
free(ptr);
ptr = next;
- }
}
- free(table->bins);
- free(table);
+ }
+ free(table->bins);
+ free(table);
}
#define PTR_NOT_EQUAL(table, ptr, hash_val, key) \
@@ -236,187 +235,186 @@ st_free_table(table)
bin_pos = hash_val%(table)->num_bins;\
ptr = (table)->bins[bin_pos];\
if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\
- COLLISION;\
- while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\
- ptr = ptr->next;\
- }\
- ptr = ptr->next;\
+ COLLISION;\
+ while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\
+ ptr = ptr->next;\
+ }\
+ ptr = ptr->next;\
}\
} while (0)
int
st_lookup(table, key, value)
- st_table *table;
- register st_data_t key;
- st_data_t *value;
+ st_table *table;
+ register st_data_t key;
+ st_data_t *value;
{
- unsigned int hash_val, bin_pos;
- register st_table_entry *ptr;
+ unsigned int hash_val, bin_pos;
+ register st_table_entry *ptr;
- hash_val = do_hash(key, table);
- FIND_ENTRY(table, ptr, hash_val, bin_pos);
+ hash_val = do_hash(key, table);
+ FIND_ENTRY(table, ptr, hash_val, bin_pos);
- if (ptr == 0) {
- return 0;
- }
- else {
- if (value != 0) *value = ptr->record;
- return 1;
- }
+ if (ptr == 0) {
+ return 0;
+ }
+ else {
+ if (value != 0) *value = ptr->record;
+ return 1;
+ }
}
-#define ADD_DIRECT(table, key, value, hash_val, bin_pos)\
+#define ADD_DIRECT(table, key, value, hash_val, bin_pos, ret) \
do {\
- st_table_entry *entry;\
- if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\
- rehash(table);\
- bin_pos = hash_val % table->num_bins;\
- }\
- \
- entry = alloc(st_table_entry);\
- \
- entry->hash = hash_val;\
- entry->key = key;\
- entry->record = value;\
- entry->next = table->bins[bin_pos];\
- table->bins[bin_pos] = entry;\
- table->num_entries++;\
+ st_table_entry *entry;\
+ if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\
+ rehash(table);\
+ bin_pos = hash_val % table->num_bins;\
+ }\
+ entry = alloc(st_table_entry);\
+ if (IS_NULL(entry)) return ret;\
+ entry->hash = hash_val;\
+ entry->key = key;\
+ entry->record = value;\
+ entry->next = table->bins[bin_pos];\
+ table->bins[bin_pos] = entry;\
+ table->num_entries++;\
} while (0)
int
st_insert(table, key, value)
- register st_table *table;
- register st_data_t key;
- st_data_t value;
+ register st_table *table;
+ register st_data_t key;
+ st_data_t value;
{
- unsigned int hash_val, bin_pos;
- register st_table_entry *ptr;
+ unsigned int hash_val, bin_pos;
+ register st_table_entry *ptr;
- hash_val = do_hash(key, table);
- FIND_ENTRY(table, ptr, hash_val, bin_pos);
+ hash_val = do_hash(key, table);
+ FIND_ENTRY(table, ptr, hash_val, bin_pos);
- if (ptr == 0) {
- ADD_DIRECT(table, key, value, hash_val, bin_pos);
- return 0;
- }
- else {
- ptr->record = value;
- return 1;
- }
+ if (ptr == 0) {
+ ADD_DIRECT(table, key, value, hash_val, bin_pos, ONIGERR_MEMORY);
+ return 0;
+ }
+ else {
+ ptr->record = value;
+ return 1;
+ }
}
void
st_add_direct(table, key, value)
- st_table *table;
- st_data_t key;
- st_data_t value;
+ st_table *table;
+ st_data_t key;
+ st_data_t value;
{
- unsigned int hash_val, bin_pos;
+ unsigned int hash_val, bin_pos;
- hash_val = do_hash(key, table);
- bin_pos = hash_val % table->num_bins;
- ADD_DIRECT(table, key, value, hash_val, bin_pos);
+ hash_val = do_hash(key, table);
+ bin_pos = hash_val % table->num_bins;
+ ADD_DIRECT(table, key, value, hash_val, bin_pos,);
}
static void
rehash(table)
- register st_table *table;
+ register st_table *table;
{
- register st_table_entry *ptr, *next, **new_bins;
- int i, old_num_bins = table->num_bins, new_num_bins;
- unsigned int hash_val;
-
- new_num_bins = new_size(old_num_bins+1);
- new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*));
- if (new_bins == 0) {
- return ;
- }
-
- for(i = 0; i < old_num_bins; i++) {
- ptr = table->bins[i];
- while (ptr != 0) {
+ register st_table_entry *ptr, *next, **new_bins;
+ int i, old_num_bins = table->num_bins, new_num_bins;
+ unsigned int hash_val;
+
+ new_num_bins = new_size(old_num_bins+1);
+ new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*));
+ if (new_bins == 0) {
+ return ;
+ }
+
+ for(i = 0; i < old_num_bins; i++) {
+ ptr = table->bins[i];
+ while (ptr != 0) {
next = ptr->next;
hash_val = ptr->hash % new_num_bins;
ptr->next = new_bins[hash_val];
new_bins[hash_val] = ptr;
ptr = next;
- }
}
- free(table->bins);
- table->num_bins = new_num_bins;
- table->bins = new_bins;
+ }
+ free(table->bins);
+ table->num_bins = new_num_bins;
+ table->bins = new_bins;
}
st_table*
st_copy(old_table)
- st_table *old_table;
+ st_table *old_table;
{
- st_table *new_table;
- st_table_entry *ptr, *entry;
- int i, num_bins = old_table->num_bins;
+ st_table *new_table;
+ st_table_entry *ptr, *entry;
+ int i, num_bins = old_table->num_bins;
- new_table = alloc(st_table);
- if (new_table == 0) {
- return 0;
- }
+ new_table = alloc(st_table);
+ if (new_table == 0) {
+ return 0;
+ }
- *new_table = *old_table;
- new_table->bins = (st_table_entry**)
- Calloc((unsigned)num_bins, sizeof(st_table_entry*));
+ *new_table = *old_table;
+ new_table->bins = (st_table_entry**)
+ Calloc((unsigned)num_bins, sizeof(st_table_entry*));
- if (new_table->bins == 0) {
- free(new_table);
- return 0;
- }
+ if (new_table->bins == 0) {
+ free(new_table);
+ return 0;
+ }
- for(i = 0; i < num_bins; i++) {
- new_table->bins[i] = 0;
- ptr = old_table->bins[i];
- while (ptr != 0) {
+ for(i = 0; i < num_bins; i++) {
+ new_table->bins[i] = 0;
+ ptr = old_table->bins[i];
+ while (ptr != 0) {
entry = alloc(st_table_entry);
if (entry == 0) {
- free(new_table->bins);
- free(new_table);
- return 0;
+ free(new_table->bins);
+ free(new_table);
+ return 0;
}
*entry = *ptr;
entry->next = new_table->bins[i];
new_table->bins[i] = entry;
ptr = ptr->next;
- }
}
- return new_table;
+ }
+ return new_table;
}
int
st_delete(table, key, value)
- register st_table *table;
- register st_data_t *key;
- st_data_t *value;
+ register st_table *table;
+ register st_data_t *key;
+ st_data_t *value;
{
- unsigned int hash_val;
- st_table_entry *tmp;
- register st_table_entry *ptr;
+ unsigned int hash_val;
+ st_table_entry *tmp;
+ register st_table_entry *ptr;
- hash_val = do_hash_bin(*key, table);
- ptr = table->bins[hash_val];
+ hash_val = do_hash_bin(*key, table);
+ ptr = table->bins[hash_val];
- if (ptr == 0) {
- if (value != 0) *value = 0;
- return 0;
- }
-
- if (EQUAL(table, *key, ptr->key)) {
- table->bins[hash_val] = ptr->next;
- table->num_entries--;
- if (value != 0) *value = ptr->record;
- *key = ptr->key;
- free(ptr);
- return 1;
- }
-
- for(; ptr->next != 0; ptr = ptr->next) {
- if (EQUAL(table, ptr->next->key, *key)) {
+ if (ptr == 0) {
+ if (value != 0) *value = 0;
+ return 0;
+ }
+
+ if (EQUAL(table, *key, ptr->key)) {
+ table->bins[hash_val] = ptr->next;
+ table->num_entries--;
+ if (value != 0) *value = ptr->record;
+ *key = ptr->key;
+ free(ptr);
+ return 1;
+ }
+
+ for(; ptr->next != 0; ptr = ptr->next) {
+ if (EQUAL(table, ptr->next->key, *key)) {
tmp = ptr->next;
ptr->next = ptr->next->next;
table->num_entries--;
@@ -424,41 +422,41 @@ st_delete(table, key, value)
*key = tmp->key;
free(tmp);
return 1;
- }
}
+ }
- return 0;
+ return 0;
}
int
st_delete_safe(table, key, value, never)
- register st_table *table;
- register st_data_t *key;
- st_data_t *value;
- st_data_t never;
+ register st_table *table;
+ register st_data_t *key;
+ st_data_t *value;
+ st_data_t never;
{
- unsigned int hash_val;
- register st_table_entry *ptr;
+ unsigned int hash_val;
+ register st_table_entry *ptr;
- hash_val = do_hash_bin(*key, table);
- ptr = table->bins[hash_val];
+ hash_val = do_hash_bin(*key, table);
+ ptr = table->bins[hash_val];
- if (ptr == 0) {
- if (value != 0) *value = 0;
- return 0;
- }
+ if (ptr == 0) {
+ if (value != 0) *value = 0;
+ return 0;
+ }
- for(; ptr != 0; ptr = ptr->next) {
- if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) {
+ for(; ptr != 0; ptr = ptr->next) {
+ if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) {
table->num_entries--;
*key = ptr->key;
if (value != 0) *value = ptr->record;
ptr->key = ptr->record = never;
return 1;
- }
}
+ }
- return 0;
+ return 0;
}
static int
@@ -476,114 +474,114 @@ delete_never(key, value, never)
void
st_cleanup_safe(table, never)
- st_table *table;
- st_data_t never;
+ st_table *table;
+ st_data_t never;
{
- int num_entries = table->num_entries;
+ int num_entries = table->num_entries;
- st_foreach(table, delete_never, never);
- table->num_entries = num_entries;
+ st_foreach(table, delete_never, never);
+ table->num_entries = num_entries;
}
int
st_foreach(table, func, arg)
- st_table *table;
- int (*func)();
- st_data_t arg;
+ st_table *table;
+ int (*func)();
+ st_data_t arg;
{
- st_table_entry *ptr, *last, *tmp;
- enum st_retval retval;
- int i;
+ st_table_entry *ptr, *last, *tmp;
+ enum st_retval retval;
+ int i;
- for(i = 0; i < table->num_bins; i++) {
- last = 0;
- for(ptr = table->bins[i]; ptr != 0;) {
+ for(i = 0; i < table->num_bins; i++) {
+ last = 0;
+ for(ptr = table->bins[i]; ptr != 0;) {
retval = (*func)(ptr->key, ptr->record, arg);
switch (retval) {
case ST_CHECK: /* check if hash is modified during iteration */
- tmp = 0;
- if (i < table->num_bins) {
- for (tmp = table->bins[i]; tmp; tmp=tmp->next) {
- if (tmp == ptr) break;
- }
- }
- if (!tmp) {
- /* call func with error notice */
- return 1;
- }
- /* fall through */
+ tmp = 0;
+ if (i < table->num_bins) {
+ for (tmp = table->bins[i]; tmp; tmp=tmp->next) {
+ if (tmp == ptr) break;
+ }
+ }
+ if (!tmp) {
+ /* call func with error notice */
+ return 1;
+ }
+ /* fall through */
case ST_CONTINUE:
- last = ptr;
- ptr = ptr->next;
- break;
+ last = ptr;
+ ptr = ptr->next;
+ break;
case ST_STOP:
- return 0;
+ return 0;
case ST_DELETE:
- tmp = ptr;
- if (last == 0) {
- table->bins[i] = ptr->next;
- }
- else {
- last->next = ptr->next;
- }
- ptr = ptr->next;
- free(tmp);
- table->num_entries--;
+ tmp = ptr;
+ if (last == 0) {
+ table->bins[i] = ptr->next;
+ }
+ else {
+ last->next = ptr->next;
+ }
+ ptr = ptr->next;
+ free(tmp);
+ table->num_entries--;
}
- }
}
- return 0;
+ }
+ return 0;
}
static int
strhash(string)
- register const char *string;
+ register const char *string;
{
- register int c;
+ register int c;
#ifdef HASH_ELFHASH
- register unsigned int h = 0, g;
+ register unsigned int h = 0, g;
- while ((c = *string++) != '\0') {
- h = ( h << 4 ) + c;
- if ( g = h & 0xF0000000 )
+ while ((c = *string++) != '\0') {
+ h = ( h << 4 ) + c;
+ if ( g = h & 0xF0000000 )
h ^= g >> 24;
- h &= ~g;
- }
- return h;
+ h &= ~g;
+ }
+ return h;
#elif HASH_PERL
- register int val = 0;
+ register int val = 0;
- while ((c = *string++) != '\0') {
- val += c;
- val += (val << 10);
- val ^= (val >> 6);
- }
- val += (val << 3);
- val ^= (val >> 11);
+ while ((c = *string++) != '\0') {
+ val += c;
+ val += (val << 10);
+ val ^= (val >> 6);
+ }
+ val += (val << 3);
+ val ^= (val >> 11);
- return val + (val << 15);
+ return val + (val << 15);
#else
- register int val = 0;
+ register int val = 0;
- while ((c = *string++) != '\0') {
- val = val*997 + c;
- }
+ while ((c = *string++) != '\0') {
+ val = val*997 + c;
+ }
- return val + (val>>5);
+ return val + (val>>5);
#endif
}
static int
numcmp(x, y)
- long x, y;
+ long x, y;
{
- return x != y;
+ return x != y;
}
static int
numhash(n)
- long n;
+ long n;
{
- return n;
+ return n;
}
diff --git a/ext/mbstring/oniguruma/src/unicode.c b/ext/mbstring/oniguruma/src/unicode.c
index 8812ca2fd0..63bc65c6f7 100644
--- a/ext/mbstring/oniguruma/src/unicode.c
+++ b/ext/mbstring/oniguruma/src/unicode.c
@@ -2,7 +2,7 @@
unicode.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,6 +29,11 @@
#include "regint.h"
+struct PoolPropertyNameCtype {
+ short int name;
+ short int ctype;
+};
+
#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \
((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)
@@ -67,181 +72,10 @@ static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = {
0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
};
-#ifdef USE_UNICODE_PROPERTIES
-#include "unicode_property_data.c"
-#else
-#include "unicode_property_data_posix.c"
-#endif
-
#include "st.h"
-#define USER_DEFINED_PROPERTY_MAX_NUM 20
-
-typedef struct {
- int ctype;
- OnigCodePoint* ranges;
-} UserDefinedPropertyValue;
-
-static int UserDefinedPropertyNum;
-static UserDefinedPropertyValue
-UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM];
-static st_table* UserDefinedPropertyTable;
-
-extern int
-onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
-{
- UserDefinedPropertyValue* e;
- int i;
- int n;
- int len;
- int c;
- char* s;
-
- if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM)
- return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS;
-
- len = strlen(name);
- if (len >= PROPERTY_NAME_MAX_SIZE)
- return ONIGERR_TOO_LONG_PROPERTY_NAME;
-
- s = (char* )xmalloc(len + 1);
- if (s == 0)
- return ONIGERR_MEMORY;
-
- n = 0;
- for (i = 0; i < len; i++) {
- c = name[i];
- if (c <= 0 || c >= 0x80) {
- xfree(s);
- return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
- }
-
- if (c != ' ' && c != '-' && c != '_') {
- s[n] = c;
- n++;
- }
- }
- s[n] = '\0';
-
- if (UserDefinedPropertyTable == 0) {
- UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10);
- }
-
- e = UserDefinedPropertyRanges + UserDefinedPropertyNum;
- e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum;
- e->ranges = ranges;
- onig_st_insert_strend(UserDefinedPropertyTable,
- (const UChar* )s, (const UChar* )s + n,
- (hash_data_type )((void* )e));
-
- UserDefinedPropertyNum++;
- return 0;
-}
-
-extern int
-onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
-{
- if (
-#ifdef USE_UNICODE_PROPERTIES
- ctype <= ONIGENC_MAX_STD_CTYPE &&
-#endif
- code < 256) {
- return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);
- }
-
- if (ctype >= CODE_RANGES_NUM) {
- int index = ctype - CODE_RANGES_NUM;
- if (index < UserDefinedPropertyNum)
- return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code);
- else
- return ONIGERR_TYPE_BUG;
- }
-
- return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);
-}
-
-
-extern int
-onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[])
-{
- if (ctype >= CODE_RANGES_NUM) {
- int index = ctype - CODE_RANGES_NUM;
- if (index < UserDefinedPropertyNum) {
- *ranges = UserDefinedPropertyRanges[index].ranges;
- return 0;
- }
- else
- return ONIGERR_TYPE_BUG;
- }
-
- *ranges = CodeRanges[ctype];
- return 0;
-}
-
-extern int
-onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
- const OnigCodePoint* ranges[])
-{
- *sb_out = 0x00;
- return onigenc_unicode_ctype_code_range(ctype, ranges);
-}
-
-extern int
-onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
-{
- int len;
- UChar *p;
- OnigCodePoint code;
- const struct PropertyNameCtype* pc;
- char buf[PROPERTY_NAME_MAX_SIZE];
-
- p = name;
- len = 0;
- while (p < end) {
- code = ONIGENC_MBC_TO_CODE(enc, p, end);
- if (code >= 0x80)
- return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
-
- if (code != ' ' && code != '-' && code != '_') {
- buf[len++] = (char )code;
- if (len >= PROPERTY_NAME_MAX_SIZE)
- return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
- }
-
- p += enclen(enc, p);
- }
-
- buf[len] = 0;
-
- if (UserDefinedPropertyTable != 0) {
- UserDefinedPropertyValue* e;
- e = (UserDefinedPropertyValue* )NULL;
- onig_st_lookup_strend(UserDefinedPropertyTable,
- (const UChar* )buf, (const UChar* )buf + len,
- (hash_data_type* )((void* )(&e)));
- if (e != 0) {
- return e->ctype;
- }
- }
-
- pc = unicode_lookup_property_name(buf, len);
- if (pc != 0) {
- /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */
-#ifndef USE_UNICODE_PROPERTIES
- if (pc->ctype > ONIGENC_MAX_STD_CTYPE)
- return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
-#endif
-
- return pc->ctype;
- }
-
- return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
-}
-
-/* for use macros in unicode_fold_data.c */
#include "unicode_fold_data.c"
-
extern int
onigenc_unicode_mbc_case_fold(OnigEncoding enc,
OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end,
@@ -270,7 +104,7 @@ onigenc_unicode_mbc_case_fold(OnigEncoding enc,
}
#endif
- buk = unicode_unfold_key(code);
+ buk = onigenc_unicode_unfold_key(code);
if (buk != 0) {
if (buk->fold_len == 1) {
return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold);
@@ -387,7 +221,7 @@ apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg)
extern int
onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,
- OnigApplyAllCaseFoldFunc f, void* arg)
+ OnigApplyAllCaseFoldFunc f, void* arg)
{
int r;
@@ -482,7 +316,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
}
#endif
- buk = unicode_unfold_key(code);
+ buk = onigenc_unicode_unfold_key(code);
if (buk != 0) {
if (buk->fold_len == 1) {
int un;
@@ -501,7 +335,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
n++;
}
}
- code = items[0].code[0]; // for multi-code to unfold search.
+ code = items[0].code[0]; /* for multi-code to unfold search. */
}
else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
OnigCodePoint cs[3][4];
@@ -522,7 +356,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
for (fn = 0; fn < 2; fn++) {
int index;
cs[fn][0] = FOLDS2_FOLD(buk->index)[fn];
- index = unicode_fold1_key(&cs[fn][0]);
+ index = onigenc_unicode_fold1_key(&cs[fn][0]);
if (index >= 0) {
int m = FOLDS1_UNFOLDS_NUM(index);
for (i = 0; i < m; i++) {
@@ -559,7 +393,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
for (fn = 0; fn < 3; fn++) {
int index;
cs[fn][0] = FOLDS3_FOLD(buk->index)[fn];
- index = unicode_fold1_key(&cs[fn][0]);
+ index = onigenc_unicode_fold1_key(&cs[fn][0]);
if (index >= 0) {
int m = FOLDS1_UNFOLDS_NUM(index);
for (i = 0; i < m; i++) {
@@ -590,7 +424,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
}
}
else {
- int index = unicode_fold1_key(&code);
+ int index = onigenc_unicode_fold1_key(&code);
if (index >= 0) {
int m = FOLDS1_UNFOLDS_NUM(index);
for (i = 0; i < m; i++) {
@@ -613,7 +447,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
codes[0] = code;
code = ONIGENC_MBC_TO_CODE(enc, p, end);
- buk = unicode_unfold_key(code);
+ buk = onigenc_unicode_unfold_key(code);
if (buk != 0 && buk->fold_len == 1) {
codes[1] = *FOLDS1_FOLD(buk->index);
}
@@ -623,7 +457,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
clen = enclen(enc, p);
len += clen;
- index = unicode_fold2_key(codes);
+ index = onigenc_unicode_fold2_key(codes);
if (index >= 0) {
m = FOLDS2_UNFOLDS_NUM(index);
for (i = 0; i < m; i++) {
@@ -637,7 +471,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
p += clen;
if (p < end) {
code = ONIGENC_MBC_TO_CODE(enc, p, end);
- buk = unicode_unfold_key(code);
+ buk = onigenc_unicode_unfold_key(code);
if (buk != 0 && buk->fold_len == 1) {
codes[2] = *FOLDS1_FOLD(buk->index);
}
@@ -647,7 +481,7 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
clen = enclen(enc, p);
len += clen;
- index = unicode_fold3_key(codes);
+ index = onigenc_unicode_fold3_key(codes);
if (index >= 0) {
m = FOLDS3_UNFOLDS_NUM(index);
for (i = 0; i < m; i++) {
@@ -662,3 +496,378 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,
return n;
}
+
+#ifdef USE_UNICODE_PROPERTIES
+#include "unicode_property_data.c"
+#else
+#include "unicode_property_data_posix.c"
+#endif
+
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+
+enum EGCB_BREAK_TYPE {
+ EGCB_NOT_BREAK = 0,
+ EGCB_BREAK = 1,
+ EGCB_BREAK_UNDEF_GB11 = 2,
+ EGCB_BREAK_UNDEF_RI_RI = 3
+};
+
+enum EGCB_TYPE {
+ EGCB_Other = 0,
+ EGCB_CR = 1,
+ EGCB_LF = 2,
+ EGCB_Control = 3,
+ EGCB_Extend = 4,
+ EGCB_Prepend = 5,
+ EGCB_Regional_Indicator = 6,
+ EGCB_SpacingMark = 7,
+ EGCB_ZWJ = 8,
+#if 0
+ /* obsoleted */
+ EGCB_E_Base = 9,
+ EGCB_E_Base_GAZ = 10,
+ EGCB_E_Modifier = 11,
+ EGCB_Glue_After_Zwj = 12,
+#endif
+ EGCB_L = 13,
+ EGCB_LV = 14,
+ EGCB_LVT = 15,
+ EGCB_T = 16,
+ EGCB_V = 17
+};
+
+typedef struct {
+ OnigCodePoint start;
+ OnigCodePoint end;
+ enum EGCB_TYPE type;
+} EGCB_RANGE_TYPE;
+
+#include "unicode_egcb_data.c"
+
+static enum EGCB_TYPE
+egcb_get_type(OnigCodePoint code)
+{
+ OnigCodePoint low, high, x;
+ enum EGCB_TYPE type;
+
+ for (low = 0, high = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) {
+ x = (low + high) >> 1;
+ if (code > EGCB_RANGES[x].end)
+ low = x + 1;
+ else
+ high = x;
+ }
+
+ type = (low < (OnigCodePoint )EGCB_RANGE_NUM &&
+ code >= EGCB_RANGES[low].start) ?
+ EGCB_RANGES[low].type : EGCB_Other;
+
+ return type;
+}
+
+#define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR)
+#define IS_HANGUL(code) ((code) >= EGCB_L)
+
+/* GB1 and GB2 are outside of this function. */
+static enum EGCB_BREAK_TYPE
+unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code)
+{
+ enum EGCB_TYPE from;
+ enum EGCB_TYPE to;
+
+ from = egcb_get_type(from_code);
+ to = egcb_get_type(to_code);
+
+ /* short cut */
+ if (from == 0 && to == 0) goto GB999;
+
+ /* GB3 */
+ if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK;
+ /* GB4 */
+ if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK;
+ /* GB5 */
+ if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK;
+
+ if (IS_HANGUL(from) && IS_HANGUL(to)) {
+ /* GB6 */
+ if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK;
+ /* GB7 */
+ if ((from == EGCB_LV || from == EGCB_V)
+ && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK;
+
+ /* GB8 */
+ if ((to == EGCB_T) && (from == EGCB_LVT || from == EGCB_T))
+ return EGCB_NOT_BREAK;
+
+ goto GB999;
+ }
+
+ /* GB9 */
+ if (to == EGCB_Extend || to == EGCB_ZWJ) return EGCB_NOT_BREAK;
+
+ /* GB9a */
+ if (to == EGCB_SpacingMark) return EGCB_NOT_BREAK;
+ /* GB9b */
+ if (from == EGCB_Prepend) return EGCB_NOT_BREAK;
+
+ /* GB10 removed */
+
+ /* GB11 */
+ if (from == EGCB_ZWJ) {
+ if (onigenc_unicode_is_code_ctype(to_code, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
+ return EGCB_BREAK_UNDEF_GB11;
+
+ goto GB999;
+ }
+
+ /* GB12, GB13 */
+ if (from == EGCB_Regional_Indicator && to == EGCB_Regional_Indicator) {
+ return EGCB_BREAK_UNDEF_RI_RI;
+ }
+
+ GB999:
+ return EGCB_BREAK;
+}
+
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+
+extern int
+onigenc_egcb_is_break_position(OnigEncoding enc, UChar* p, UChar* prev,
+ const UChar* start, const UChar* end)
+{
+ OnigCodePoint from;
+ OnigCodePoint to;
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+ enum EGCB_BREAK_TYPE btype;
+ enum EGCB_TYPE type;
+#endif
+
+ /* GB1 and GB2 */
+ if (p == start) return 1;
+ if (p == end) return 1;
+
+ if (IS_NULL(prev)) {
+ prev = onigenc_get_prev_char_head(enc, start, p);
+ if (IS_NULL(prev)) return 1;
+ }
+
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ to = ONIGENC_MBC_TO_CODE(enc, p, end);
+
+#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER
+ if (! ONIGENC_IS_UNICODE_ENCODING(enc)) {
+ if (from == 0x000d && to == 0x000a) return 0;
+ else return 1;
+ }
+
+ btype = unicode_egcb_is_break_2code(from, to);
+ switch (btype) {
+ case EGCB_NOT_BREAK:
+ return 0;
+ break;
+ case EGCB_BREAK:
+ return 1;
+ break;
+
+ case EGCB_BREAK_UNDEF_GB11:
+ while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ if (onigenc_unicode_is_code_ctype(from, PROP_INDEX_EXTENDEDPICTOGRAPHIC))
+ return 0;
+
+ type = egcb_get_type(from);
+ if (type != EGCB_Extend)
+ break;
+ }
+ break;
+
+ case EGCB_BREAK_UNDEF_RI_RI:
+ {
+ int n = 0;
+ while ((prev = onigenc_get_prev_char_head(enc, start, prev)) != NULL) {
+ from = ONIGENC_MBC_TO_CODE(enc, prev, end);
+ type = egcb_get_type(from);
+ if (type != EGCB_Regional_Indicator)
+ break;
+
+ n++;
+ }
+ if ((n % 2) == 0) return 0;
+ }
+ break;
+ }
+
+ return 1;
+
+#else
+ if (from == 0x000d && to == 0x000a) return 0;
+ else return 1;
+#endif /* USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER */
+}
+
+
+#define USER_DEFINED_PROPERTY_MAX_NUM 20
+
+typedef struct {
+ int ctype;
+ OnigCodePoint* ranges;
+} UserDefinedPropertyValue;
+
+static int UserDefinedPropertyNum;
+static UserDefinedPropertyValue
+UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM];
+static st_table* UserDefinedPropertyTable;
+
+extern int
+onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)
+{
+ UserDefinedPropertyValue* e;
+ int r;
+ int i;
+ int n;
+ int len;
+ int c;
+ char* s;
+
+ if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM)
+ return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS;
+
+ len = (int )strlen(name);
+ if (len >= PROPERTY_NAME_MAX_SIZE)
+ return ONIGERR_TOO_LONG_PROPERTY_NAME;
+
+ s = (char* )xmalloc(len + 1);
+ if (s == 0)
+ return ONIGERR_MEMORY;
+
+ n = 0;
+ for (i = 0; i < len; i++) {
+ c = name[i];
+ if (c <= 0 || c >= 0x80) {
+ xfree(s);
+ return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
+ }
+
+ if (c != ' ' && c != '-' && c != '_') {
+ s[n] = c;
+ n++;
+ }
+ }
+ s[n] = '\0';
+
+ if (UserDefinedPropertyTable == 0) {
+ UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10);
+ }
+
+ e = UserDefinedPropertyRanges + UserDefinedPropertyNum;
+ e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum;
+ e->ranges = ranges;
+ r = onig_st_insert_strend(UserDefinedPropertyTable,
+ (const UChar* )s, (const UChar* )s + n,
+ (hash_data_type )((void* )e));
+ if (r < 0) return r;
+
+ UserDefinedPropertyNum++;
+ return 0;
+}
+
+extern int
+onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)
+{
+ if (
+#ifdef USE_UNICODE_PROPERTIES
+ ctype <= ONIGENC_MAX_STD_CTYPE &&
+#endif
+ code < 256) {
+ return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);
+ }
+
+ if (ctype >= CODE_RANGES_NUM) {
+ int index = ctype - CODE_RANGES_NUM;
+ if (index < UserDefinedPropertyNum)
+ return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code);
+ else
+ return ONIGERR_TYPE_BUG;
+ }
+
+ return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);
+}
+
+
+extern int
+onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[])
+{
+ if (ctype >= CODE_RANGES_NUM) {
+ int index = ctype - CODE_RANGES_NUM;
+ if (index < UserDefinedPropertyNum) {
+ *ranges = UserDefinedPropertyRanges[index].ranges;
+ return 0;
+ }
+ else
+ return ONIGERR_TYPE_BUG;
+ }
+
+ *ranges = CodeRanges[ctype];
+ return 0;
+}
+
+extern int
+onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
+ const OnigCodePoint* ranges[])
+{
+ *sb_out = 0x00;
+ return onigenc_unicode_ctype_code_range(ctype, ranges);
+}
+
+extern int
+onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
+{
+ int len;
+ UChar *p;
+ OnigCodePoint code;
+ const struct PoolPropertyNameCtype* pc;
+ char buf[PROPERTY_NAME_MAX_SIZE];
+
+ p = name;
+ len = 0;
+ while (p < end) {
+ code = ONIGENC_MBC_TO_CODE(enc, p, end);
+ if (code >= 0x80)
+ return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
+
+ if (code != ' ' && code != '-' && code != '_') {
+ buf[len++] = (char )code;
+ if (len >= PROPERTY_NAME_MAX_SIZE)
+ return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
+ }
+
+ p += enclen(enc, p);
+ }
+
+ buf[len] = 0;
+
+ if (UserDefinedPropertyTable != 0) {
+ UserDefinedPropertyValue* e;
+ e = (UserDefinedPropertyValue* )NULL;
+ onig_st_lookup_strend(UserDefinedPropertyTable,
+ (const UChar* )buf, (const UChar* )buf + len,
+ (hash_data_type* )((void* )(&e)));
+ if (e != 0) {
+ return e->ctype;
+ }
+ }
+
+ pc = unicode_lookup_property_name(buf, len);
+ if (pc != 0) {
+ /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */
+#ifndef USE_UNICODE_PROPERTIES
+ if (pc->ctype > ONIGENC_MAX_STD_CTYPE)
+ return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
+#endif
+
+ return (int )pc->ctype;
+ }
+
+ return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
+}
diff --git a/ext/mbstring/oniguruma/src/unicode_egcb_data.c b/ext/mbstring/oniguruma/src/unicode_egcb_data.c
new file mode 100644
index 0000000000..fcb2daa394
--- /dev/null
+++ b/ext/mbstring/oniguruma/src/unicode_egcb_data.c
@@ -0,0 +1,1369 @@
+/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */
+/*-
+ * Copyright (c) 2017-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#define GRAPHEME_BREAK_PROPERTY_VERSION 11_0_0
+
+/*
+CR
+Control
+Extend
+L
+LF
+LV
+LVT
+Prepend
+Regional_Indicator
+SpacingMark
+T
+V
+ZWJ
+*/
+
+static int EGCB_RANGE_NUM = 1321;
+static EGCB_RANGE_TYPE EGCB_RANGES[] = {
+ {0x000000, 0x000009, EGCB_Control },
+ {0x00000a, 0x00000a, EGCB_LF },
+ {0x00000b, 0x00000c, EGCB_Control },
+ {0x00000d, 0x00000d, EGCB_CR },
+ {0x00000e, 0x00001f, EGCB_Control },
+ {0x00007f, 0x00009f, EGCB_Control },
+ {0x0000ad, 0x0000ad, EGCB_Control },
+ {0x000300, 0x00036f, EGCB_Extend },
+ {0x000483, 0x000489, EGCB_Extend },
+ {0x000591, 0x0005bd, EGCB_Extend },
+ {0x0005bf, 0x0005bf, EGCB_Extend },
+ {0x0005c1, 0x0005c2, EGCB_Extend },
+ {0x0005c4, 0x0005c5, EGCB_Extend },
+ {0x0005c7, 0x0005c7, EGCB_Extend },
+ {0x000600, 0x000605, EGCB_Prepend },
+ {0x000610, 0x00061a, EGCB_Extend },
+ {0x00061c, 0x00061c, EGCB_Control },
+ {0x00064b, 0x00065f, EGCB_Extend },
+ {0x000670, 0x000670, EGCB_Extend },
+ {0x0006d6, 0x0006dc, EGCB_Extend },
+ {0x0006dd, 0x0006dd, EGCB_Prepend },
+ {0x0006df, 0x0006e4, EGCB_Extend },
+ {0x0006e7, 0x0006e8, EGCB_Extend },
+ {0x0006ea, 0x0006ed, EGCB_Extend },
+ {0x00070f, 0x00070f, EGCB_Prepend },
+ {0x000711, 0x000711, EGCB_Extend },
+ {0x000730, 0x00074a, EGCB_Extend },
+ {0x0007a6, 0x0007b0, EGCB_Extend },
+ {0x0007eb, 0x0007f3, EGCB_Extend },
+ {0x0007fd, 0x0007fd, EGCB_Extend },
+ {0x000816, 0x000819, EGCB_Extend },
+ {0x00081b, 0x000823, EGCB_Extend },
+ {0x000825, 0x000827, EGCB_Extend },
+ {0x000829, 0x00082d, EGCB_Extend },
+ {0x000859, 0x00085b, EGCB_Extend },
+ {0x0008d3, 0x0008e1, EGCB_Extend },
+ {0x0008e2, 0x0008e2, EGCB_Prepend },
+ {0x0008e3, 0x000902, EGCB_Extend },
+ {0x000903, 0x000903, EGCB_SpacingMark },
+ {0x00093a, 0x00093a, EGCB_Extend },
+ {0x00093b, 0x00093b, EGCB_SpacingMark },
+ {0x00093c, 0x00093c, EGCB_Extend },
+ {0x00093e, 0x000940, EGCB_SpacingMark },
+ {0x000941, 0x000948, EGCB_Extend },
+ {0x000949, 0x00094c, EGCB_SpacingMark },
+ {0x00094d, 0x00094d, EGCB_Extend },
+ {0x00094e, 0x00094f, EGCB_SpacingMark },
+ {0x000951, 0x000957, EGCB_Extend },
+ {0x000962, 0x000963, EGCB_Extend },
+ {0x000981, 0x000981, EGCB_Extend },
+ {0x000982, 0x000983, EGCB_SpacingMark },
+ {0x0009bc, 0x0009bc, EGCB_Extend },
+ {0x0009be, 0x0009be, EGCB_Extend },
+ {0x0009bf, 0x0009c0, EGCB_SpacingMark },
+ {0x0009c1, 0x0009c4, EGCB_Extend },
+ {0x0009c7, 0x0009c8, EGCB_SpacingMark },
+ {0x0009cb, 0x0009cc, EGCB_SpacingMark },
+ {0x0009cd, 0x0009cd, EGCB_Extend },
+ {0x0009d7, 0x0009d7, EGCB_Extend },
+ {0x0009e2, 0x0009e3, EGCB_Extend },
+ {0x0009fe, 0x0009fe, EGCB_Extend },
+ {0x000a01, 0x000a02, EGCB_Extend },
+ {0x000a03, 0x000a03, EGCB_SpacingMark },
+ {0x000a3c, 0x000a3c, EGCB_Extend },
+ {0x000a3e, 0x000a40, EGCB_SpacingMark },
+ {0x000a41, 0x000a42, EGCB_Extend },
+ {0x000a47, 0x000a48, EGCB_Extend },
+ {0x000a4b, 0x000a4d, EGCB_Extend },
+ {0x000a51, 0x000a51, EGCB_Extend },
+ {0x000a70, 0x000a71, EGCB_Extend },
+ {0x000a75, 0x000a75, EGCB_Extend },
+ {0x000a81, 0x000a82, EGCB_Extend },
+ {0x000a83, 0x000a83, EGCB_SpacingMark },
+ {0x000abc, 0x000abc, EGCB_Extend },
+ {0x000abe, 0x000ac0, EGCB_SpacingMark },
+ {0x000ac1, 0x000ac5, EGCB_Extend },
+ {0x000ac7, 0x000ac8, EGCB_Extend },
+ {0x000ac9, 0x000ac9, EGCB_SpacingMark },
+ {0x000acb, 0x000acc, EGCB_SpacingMark },
+ {0x000acd, 0x000acd, EGCB_Extend },
+ {0x000ae2, 0x000ae3, EGCB_Extend },
+ {0x000afa, 0x000aff, EGCB_Extend },
+ {0x000b01, 0x000b01, EGCB_Extend },
+ {0x000b02, 0x000b03, EGCB_SpacingMark },
+ {0x000b3c, 0x000b3c, EGCB_Extend },
+ {0x000b3e, 0x000b3f, EGCB_Extend },
+ {0x000b40, 0x000b40, EGCB_SpacingMark },
+ {0x000b41, 0x000b44, EGCB_Extend },
+ {0x000b47, 0x000b48, EGCB_SpacingMark },
+ {0x000b4b, 0x000b4c, EGCB_SpacingMark },
+ {0x000b4d, 0x000b4d, EGCB_Extend },
+ {0x000b56, 0x000b57, EGCB_Extend },
+ {0x000b62, 0x000b63, EGCB_Extend },
+ {0x000b82, 0x000b82, EGCB_Extend },
+ {0x000bbe, 0x000bbe, EGCB_Extend },
+ {0x000bbf, 0x000bbf, EGCB_SpacingMark },
+ {0x000bc0, 0x000bc0, EGCB_Extend },
+ {0x000bc1, 0x000bc2, EGCB_SpacingMark },
+ {0x000bc6, 0x000bc8, EGCB_SpacingMark },
+ {0x000bca, 0x000bcc, EGCB_SpacingMark },
+ {0x000bcd, 0x000bcd, EGCB_Extend },
+ {0x000bd7, 0x000bd7, EGCB_Extend },
+ {0x000c00, 0x000c00, EGCB_Extend },
+ {0x000c01, 0x000c03, EGCB_SpacingMark },
+ {0x000c04, 0x000c04, EGCB_Extend },
+ {0x000c3e, 0x000c40, EGCB_Extend },
+ {0x000c41, 0x000c44, EGCB_SpacingMark },
+ {0x000c46, 0x000c48, EGCB_Extend },
+ {0x000c4a, 0x000c4d, EGCB_Extend },
+ {0x000c55, 0x000c56, EGCB_Extend },
+ {0x000c62, 0x000c63, EGCB_Extend },
+ {0x000c81, 0x000c81, EGCB_Extend },
+ {0x000c82, 0x000c83, EGCB_SpacingMark },
+ {0x000cbc, 0x000cbc, EGCB_Extend },
+ {0x000cbe, 0x000cbe, EGCB_SpacingMark },
+ {0x000cbf, 0x000cbf, EGCB_Extend },
+ {0x000cc0, 0x000cc1, EGCB_SpacingMark },
+ {0x000cc2, 0x000cc2, EGCB_Extend },
+ {0x000cc3, 0x000cc4, EGCB_SpacingMark },
+ {0x000cc6, 0x000cc6, EGCB_Extend },
+ {0x000cc7, 0x000cc8, EGCB_SpacingMark },
+ {0x000cca, 0x000ccb, EGCB_SpacingMark },
+ {0x000ccc, 0x000ccd, EGCB_Extend },
+ {0x000cd5, 0x000cd6, EGCB_Extend },
+ {0x000ce2, 0x000ce3, EGCB_Extend },
+ {0x000d00, 0x000d01, EGCB_Extend },
+ {0x000d02, 0x000d03, EGCB_SpacingMark },
+ {0x000d3b, 0x000d3c, EGCB_Extend },
+ {0x000d3e, 0x000d3e, EGCB_Extend },
+ {0x000d3f, 0x000d40, EGCB_SpacingMark },
+ {0x000d41, 0x000d44, EGCB_Extend },
+ {0x000d46, 0x000d48, EGCB_SpacingMark },
+ {0x000d4a, 0x000d4c, EGCB_SpacingMark },
+ {0x000d4d, 0x000d4d, EGCB_Extend },
+ {0x000d4e, 0x000d4e, EGCB_Prepend },
+ {0x000d57, 0x000d57, EGCB_Extend },
+ {0x000d62, 0x000d63, EGCB_Extend },
+ {0x000d82, 0x000d83, EGCB_SpacingMark },
+ {0x000dca, 0x000dca, EGCB_Extend },
+ {0x000dcf, 0x000dcf, EGCB_Extend },
+ {0x000dd0, 0x000dd1, EGCB_SpacingMark },
+ {0x000dd2, 0x000dd4, EGCB_Extend },
+ {0x000dd6, 0x000dd6, EGCB_Extend },
+ {0x000dd8, 0x000dde, EGCB_SpacingMark },
+ {0x000ddf, 0x000ddf, EGCB_Extend },
+ {0x000df2, 0x000df3, EGCB_SpacingMark },
+ {0x000e31, 0x000e31, EGCB_Extend },
+ {0x000e33, 0x000e33, EGCB_SpacingMark },
+ {0x000e34, 0x000e3a, EGCB_Extend },
+ {0x000e47, 0x000e4e, EGCB_Extend },
+ {0x000eb1, 0x000eb1, EGCB_Extend },
+ {0x000eb3, 0x000eb3, EGCB_SpacingMark },
+ {0x000eb4, 0x000eb9, EGCB_Extend },
+ {0x000ebb, 0x000ebc, EGCB_Extend },
+ {0x000ec8, 0x000ecd, EGCB_Extend },
+ {0x000f18, 0x000f19, EGCB_Extend },
+ {0x000f35, 0x000f35, EGCB_Extend },
+ {0x000f37, 0x000f37, EGCB_Extend },
+ {0x000f39, 0x000f39, EGCB_Extend },
+ {0x000f3e, 0x000f3f, EGCB_SpacingMark },
+ {0x000f71, 0x000f7e, EGCB_Extend },
+ {0x000f7f, 0x000f7f, EGCB_SpacingMark },
+ {0x000f80, 0x000f84, EGCB_Extend },
+ {0x000f86, 0x000f87, EGCB_Extend },
+ {0x000f8d, 0x000f97, EGCB_Extend },
+ {0x000f99, 0x000fbc, EGCB_Extend },
+ {0x000fc6, 0x000fc6, EGCB_Extend },
+ {0x00102d, 0x001030, EGCB_Extend },
+ {0x001031, 0x001031, EGCB_SpacingMark },
+ {0x001032, 0x001037, EGCB_Extend },
+ {0x001039, 0x00103a, EGCB_Extend },
+ {0x00103b, 0x00103c, EGCB_SpacingMark },
+ {0x00103d, 0x00103e, EGCB_Extend },
+ {0x001056, 0x001057, EGCB_SpacingMark },
+ {0x001058, 0x001059, EGCB_Extend },
+ {0x00105e, 0x001060, EGCB_Extend },
+ {0x001071, 0x001074, EGCB_Extend },
+ {0x001082, 0x001082, EGCB_Extend },
+ {0x001084, 0x001084, EGCB_SpacingMark },
+ {0x001085, 0x001086, EGCB_Extend },
+ {0x00108d, 0x00108d, EGCB_Extend },
+ {0x00109d, 0x00109d, EGCB_Extend },
+ {0x001100, 0x00115f, EGCB_L },
+ {0x001160, 0x0011a7, EGCB_V },
+ {0x0011a8, 0x0011ff, EGCB_T },
+ {0x00135d, 0x00135f, EGCB_Extend },
+ {0x001712, 0x001714, EGCB_Extend },
+ {0x001732, 0x001734, EGCB_Extend },
+ {0x001752, 0x001753, EGCB_Extend },
+ {0x001772, 0x001773, EGCB_Extend },
+ {0x0017b4, 0x0017b5, EGCB_Extend },
+ {0x0017b6, 0x0017b6, EGCB_SpacingMark },
+ {0x0017b7, 0x0017bd, EGCB_Extend },
+ {0x0017be, 0x0017c5, EGCB_SpacingMark },
+ {0x0017c6, 0x0017c6, EGCB_Extend },
+ {0x0017c7, 0x0017c8, EGCB_SpacingMark },
+ {0x0017c9, 0x0017d3, EGCB_Extend },
+ {0x0017dd, 0x0017dd, EGCB_Extend },
+ {0x00180b, 0x00180d, EGCB_Extend },
+ {0x00180e, 0x00180e, EGCB_Control },
+ {0x001885, 0x001886, EGCB_Extend },
+ {0x0018a9, 0x0018a9, EGCB_Extend },
+ {0x001920, 0x001922, EGCB_Extend },
+ {0x001923, 0x001926, EGCB_SpacingMark },
+ {0x001927, 0x001928, EGCB_Extend },
+ {0x001929, 0x00192b, EGCB_SpacingMark },
+ {0x001930, 0x001931, EGCB_SpacingMark },
+ {0x001932, 0x001932, EGCB_Extend },
+ {0x001933, 0x001938, EGCB_SpacingMark },
+ {0x001939, 0x00193b, EGCB_Extend },
+ {0x001a17, 0x001a18, EGCB_Extend },
+ {0x001a19, 0x001a1a, EGCB_SpacingMark },
+ {0x001a1b, 0x001a1b, EGCB_Extend },
+ {0x001a55, 0x001a55, EGCB_SpacingMark },
+ {0x001a56, 0x001a56, EGCB_Extend },
+ {0x001a57, 0x001a57, EGCB_SpacingMark },
+ {0x001a58, 0x001a5e, EGCB_Extend },
+ {0x001a60, 0x001a60, EGCB_Extend },
+ {0x001a62, 0x001a62, EGCB_Extend },
+ {0x001a65, 0x001a6c, EGCB_Extend },
+ {0x001a6d, 0x001a72, EGCB_SpacingMark },
+ {0x001a73, 0x001a7c, EGCB_Extend },
+ {0x001a7f, 0x001a7f, EGCB_Extend },
+ {0x001ab0, 0x001abe, EGCB_Extend },
+ {0x001b00, 0x001b03, EGCB_Extend },
+ {0x001b04, 0x001b04, EGCB_SpacingMark },
+ {0x001b34, 0x001b34, EGCB_Extend },
+ {0x001b35, 0x001b35, EGCB_SpacingMark },
+ {0x001b36, 0x001b3a, EGCB_Extend },
+ {0x001b3b, 0x001b3b, EGCB_SpacingMark },
+ {0x001b3c, 0x001b3c, EGCB_Extend },
+ {0x001b3d, 0x001b41, EGCB_SpacingMark },
+ {0x001b42, 0x001b42, EGCB_Extend },
+ {0x001b43, 0x001b44, EGCB_SpacingMark },
+ {0x001b6b, 0x001b73, EGCB_Extend },
+ {0x001b80, 0x001b81, EGCB_Extend },
+ {0x001b82, 0x001b82, EGCB_SpacingMark },
+ {0x001ba1, 0x001ba1, EGCB_SpacingMark },
+ {0x001ba2, 0x001ba5, EGCB_Extend },
+ {0x001ba6, 0x001ba7, EGCB_SpacingMark },
+ {0x001ba8, 0x001ba9, EGCB_Extend },
+ {0x001baa, 0x001baa, EGCB_SpacingMark },
+ {0x001bab, 0x001bad, EGCB_Extend },
+ {0x001be6, 0x001be6, EGCB_Extend },
+ {0x001be7, 0x001be7, EGCB_SpacingMark },
+ {0x001be8, 0x001be9, EGCB_Extend },
+ {0x001bea, 0x001bec, EGCB_SpacingMark },
+ {0x001bed, 0x001bed, EGCB_Extend },
+ {0x001bee, 0x001bee, EGCB_SpacingMark },
+ {0x001bef, 0x001bf1, EGCB_Extend },
+ {0x001bf2, 0x001bf3, EGCB_SpacingMark },
+ {0x001c24, 0x001c2b, EGCB_SpacingMark },
+ {0x001c2c, 0x001c33, EGCB_Extend },
+ {0x001c34, 0x001c35, EGCB_SpacingMark },
+ {0x001c36, 0x001c37, EGCB_Extend },
+ {0x001cd0, 0x001cd2, EGCB_Extend },
+ {0x001cd4, 0x001ce0, EGCB_Extend },
+ {0x001ce1, 0x001ce1, EGCB_SpacingMark },
+ {0x001ce2, 0x001ce8, EGCB_Extend },
+ {0x001ced, 0x001ced, EGCB_Extend },
+ {0x001cf2, 0x001cf3, EGCB_SpacingMark },
+ {0x001cf4, 0x001cf4, EGCB_Extend },
+ {0x001cf7, 0x001cf7, EGCB_SpacingMark },
+ {0x001cf8, 0x001cf9, EGCB_Extend },
+ {0x001dc0, 0x001df9, EGCB_Extend },
+ {0x001dfb, 0x001dff, EGCB_Extend },
+ {0x00200b, 0x00200b, EGCB_Control },
+ {0x00200c, 0x00200c, EGCB_Extend },
+ {0x00200d, 0x00200d, EGCB_ZWJ },
+ {0x00200e, 0x00200f, EGCB_Control },
+ {0x002028, 0x00202e, EGCB_Control },
+ {0x002060, 0x00206f, EGCB_Control },
+ {0x0020d0, 0x0020f0, EGCB_Extend },
+ {0x002cef, 0x002cf1, EGCB_Extend },
+ {0x002d7f, 0x002d7f, EGCB_Extend },
+ {0x002de0, 0x002dff, EGCB_Extend },
+ {0x00302a, 0x00302f, EGCB_Extend },
+ {0x003099, 0x00309a, EGCB_Extend },
+ {0x00a66f, 0x00a672, EGCB_Extend },
+ {0x00a674, 0x00a67d, EGCB_Extend },
+ {0x00a69e, 0x00a69f, EGCB_Extend },
+ {0x00a6f0, 0x00a6f1, EGCB_Extend },
+ {0x00a802, 0x00a802, EGCB_Extend },
+ {0x00a806, 0x00a806, EGCB_Extend },
+ {0x00a80b, 0x00a80b, EGCB_Extend },
+ {0x00a823, 0x00a824, EGCB_SpacingMark },
+ {0x00a825, 0x00a826, EGCB_Extend },
+ {0x00a827, 0x00a827, EGCB_SpacingMark },
+ {0x00a880, 0x00a881, EGCB_SpacingMark },
+ {0x00a8b4, 0x00a8c3, EGCB_SpacingMark },
+ {0x00a8c4, 0x00a8c5, EGCB_Extend },
+ {0x00a8e0, 0x00a8f1, EGCB_Extend },
+ {0x00a8ff, 0x00a8ff, EGCB_Extend },
+ {0x00a926, 0x00a92d, EGCB_Extend },
+ {0x00a947, 0x00a951, EGCB_Extend },
+ {0x00a952, 0x00a953, EGCB_SpacingMark },
+ {0x00a960, 0x00a97c, EGCB_L },
+ {0x00a980, 0x00a982, EGCB_Extend },
+ {0x00a983, 0x00a983, EGCB_SpacingMark },
+ {0x00a9b3, 0x00a9b3, EGCB_Extend },
+ {0x00a9b4, 0x00a9b5, EGCB_SpacingMark },
+ {0x00a9b6, 0x00a9b9, EGCB_Extend },
+ {0x00a9ba, 0x00a9bb, EGCB_SpacingMark },
+ {0x00a9bc, 0x00a9bc, EGCB_Extend },
+ {0x00a9bd, 0x00a9c0, EGCB_SpacingMark },
+ {0x00a9e5, 0x00a9e5, EGCB_Extend },
+ {0x00aa29, 0x00aa2e, EGCB_Extend },
+ {0x00aa2f, 0x00aa30, EGCB_SpacingMark },
+ {0x00aa31, 0x00aa32, EGCB_Extend },
+ {0x00aa33, 0x00aa34, EGCB_SpacingMark },
+ {0x00aa35, 0x00aa36, EGCB_Extend },
+ {0x00aa43, 0x00aa43, EGCB_Extend },
+ {0x00aa4c, 0x00aa4c, EGCB_Extend },
+ {0x00aa4d, 0x00aa4d, EGCB_SpacingMark },
+ {0x00aa7c, 0x00aa7c, EGCB_Extend },
+ {0x00aab0, 0x00aab0, EGCB_Extend },
+ {0x00aab2, 0x00aab4, EGCB_Extend },
+ {0x00aab7, 0x00aab8, EGCB_Extend },
+ {0x00aabe, 0x00aabf, EGCB_Extend },
+ {0x00aac1, 0x00aac1, EGCB_Extend },
+ {0x00aaeb, 0x00aaeb, EGCB_SpacingMark },
+ {0x00aaec, 0x00aaed, EGCB_Extend },
+ {0x00aaee, 0x00aaef, EGCB_SpacingMark },
+ {0x00aaf5, 0x00aaf5, EGCB_SpacingMark },
+ {0x00aaf6, 0x00aaf6, EGCB_Extend },
+ {0x00abe3, 0x00abe4, EGCB_SpacingMark },
+ {0x00abe5, 0x00abe5, EGCB_Extend },
+ {0x00abe6, 0x00abe7, EGCB_SpacingMark },
+ {0x00abe8, 0x00abe8, EGCB_Extend },
+ {0x00abe9, 0x00abea, EGCB_SpacingMark },
+ {0x00abec, 0x00abec, EGCB_SpacingMark },
+ {0x00abed, 0x00abed, EGCB_Extend },
+ {0x00ac00, 0x00ac00, EGCB_LV },
+ {0x00ac01, 0x00ac1b, EGCB_LVT },
+ {0x00ac1c, 0x00ac1c, EGCB_LV },
+ {0x00ac1d, 0x00ac37, EGCB_LVT },
+ {0x00ac38, 0x00ac38, EGCB_LV },
+ {0x00ac39, 0x00ac53, EGCB_LVT },
+ {0x00ac54, 0x00ac54, EGCB_LV },
+ {0x00ac55, 0x00ac6f, EGCB_LVT },
+ {0x00ac70, 0x00ac70, EGCB_LV },
+ {0x00ac71, 0x00ac8b, EGCB_LVT },
+ {0x00ac8c, 0x00ac8c, EGCB_LV },
+ {0x00ac8d, 0x00aca7, EGCB_LVT },
+ {0x00aca8, 0x00aca8, EGCB_LV },
+ {0x00aca9, 0x00acc3, EGCB_LVT },
+ {0x00acc4, 0x00acc4, EGCB_LV },
+ {0x00acc5, 0x00acdf, EGCB_LVT },
+ {0x00ace0, 0x00ace0, EGCB_LV },
+ {0x00ace1, 0x00acfb, EGCB_LVT },
+ {0x00acfc, 0x00acfc, EGCB_LV },
+ {0x00acfd, 0x00ad17, EGCB_LVT },
+ {0x00ad18, 0x00ad18, EGCB_LV },
+ {0x00ad19, 0x00ad33, EGCB_LVT },
+ {0x00ad34, 0x00ad34, EGCB_LV },
+ {0x00ad35, 0x00ad4f, EGCB_LVT },
+ {0x00ad50, 0x00ad50, EGCB_LV },
+ {0x00ad51, 0x00ad6b, EGCB_LVT },
+ {0x00ad6c, 0x00ad6c, EGCB_LV },
+ {0x00ad6d, 0x00ad87, EGCB_LVT },
+ {0x00ad88, 0x00ad88, EGCB_LV },
+ {0x00ad89, 0x00ada3, EGCB_LVT },
+ {0x00ada4, 0x00ada4, EGCB_LV },
+ {0x00ada5, 0x00adbf, EGCB_LVT },
+ {0x00adc0, 0x00adc0, EGCB_LV },
+ {0x00adc1, 0x00addb, EGCB_LVT },
+ {0x00addc, 0x00addc, EGCB_LV },
+ {0x00addd, 0x00adf7, EGCB_LVT },
+ {0x00adf8, 0x00adf8, EGCB_LV },
+ {0x00adf9, 0x00ae13, EGCB_LVT },
+ {0x00ae14, 0x00ae14, EGCB_LV },
+ {0x00ae15, 0x00ae2f, EGCB_LVT },
+ {0x00ae30, 0x00ae30, EGCB_LV },
+ {0x00ae31, 0x00ae4b, EGCB_LVT },
+ {0x00ae4c, 0x00ae4c, EGCB_LV },
+ {0x00ae4d, 0x00ae67, EGCB_LVT },
+ {0x00ae68, 0x00ae68, EGCB_LV },
+ {0x00ae69, 0x00ae83, EGCB_LVT },
+ {0x00ae84, 0x00ae84, EGCB_LV },
+ {0x00ae85, 0x00ae9f, EGCB_LVT },
+ {0x00aea0, 0x00aea0, EGCB_LV },
+ {0x00aea1, 0x00aebb, EGCB_LVT },
+ {0x00aebc, 0x00aebc, EGCB_LV },
+ {0x00aebd, 0x00aed7, EGCB_LVT },
+ {0x00aed8, 0x00aed8, EGCB_LV },
+ {0x00aed9, 0x00aef3, EGCB_LVT },
+ {0x00aef4, 0x00aef4, EGCB_LV },
+ {0x00aef5, 0x00af0f, EGCB_LVT },
+ {0x00af10, 0x00af10, EGCB_LV },
+ {0x00af11, 0x00af2b, EGCB_LVT },
+ {0x00af2c, 0x00af2c, EGCB_LV },
+ {0x00af2d, 0x00af47, EGCB_LVT },
+ {0x00af48, 0x00af48, EGCB_LV },
+ {0x00af49, 0x00af63, EGCB_LVT },
+ {0x00af64, 0x00af64, EGCB_LV },
+ {0x00af65, 0x00af7f, EGCB_LVT },
+ {0x00af80, 0x00af80, EGCB_LV },
+ {0x00af81, 0x00af9b, EGCB_LVT },
+ {0x00af9c, 0x00af9c, EGCB_LV },
+ {0x00af9d, 0x00afb7, EGCB_LVT },
+ {0x00afb8, 0x00afb8, EGCB_LV },
+ {0x00afb9, 0x00afd3, EGCB_LVT },
+ {0x00afd4, 0x00afd4, EGCB_LV },
+ {0x00afd5, 0x00afef, EGCB_LVT },
+ {0x00aff0, 0x00aff0, EGCB_LV },
+ {0x00aff1, 0x00b00b, EGCB_LVT },
+ {0x00b00c, 0x00b00c, EGCB_LV },
+ {0x00b00d, 0x00b027, EGCB_LVT },
+ {0x00b028, 0x00b028, EGCB_LV },
+ {0x00b029, 0x00b043, EGCB_LVT },
+ {0x00b044, 0x00b044, EGCB_LV },
+ {0x00b045, 0x00b05f, EGCB_LVT },
+ {0x00b060, 0x00b060, EGCB_LV },
+ {0x00b061, 0x00b07b, EGCB_LVT },
+ {0x00b07c, 0x00b07c, EGCB_LV },
+ {0x00b07d, 0x00b097, EGCB_LVT },
+ {0x00b098, 0x00b098, EGCB_LV },
+ {0x00b099, 0x00b0b3, EGCB_LVT },
+ {0x00b0b4, 0x00b0b4, EGCB_LV },
+ {0x00b0b5, 0x00b0cf, EGCB_LVT },
+ {0x00b0d0, 0x00b0d0, EGCB_LV },
+ {0x00b0d1, 0x00b0eb, EGCB_LVT },
+ {0x00b0ec, 0x00b0ec, EGCB_LV },
+ {0x00b0ed, 0x00b107, EGCB_LVT },
+ {0x00b108, 0x00b108, EGCB_LV },
+ {0x00b109, 0x00b123, EGCB_LVT },
+ {0x00b124, 0x00b124, EGCB_LV },
+ {0x00b125, 0x00b13f, EGCB_LVT },
+ {0x00b140, 0x00b140, EGCB_LV },
+ {0x00b141, 0x00b15b, EGCB_LVT },
+ {0x00b15c, 0x00b15c, EGCB_LV },
+ {0x00b15d, 0x00b177, EGCB_LVT },
+ {0x00b178, 0x00b178, EGCB_LV },
+ {0x00b179, 0x00b193, EGCB_LVT },
+ {0x00b194, 0x00b194, EGCB_LV },
+ {0x00b195, 0x00b1af, EGCB_LVT },
+ {0x00b1b0, 0x00b1b0, EGCB_LV },
+ {0x00b1b1, 0x00b1cb, EGCB_LVT },
+ {0x00b1cc, 0x00b1cc, EGCB_LV },
+ {0x00b1cd, 0x00b1e7, EGCB_LVT },
+ {0x00b1e8, 0x00b1e8, EGCB_LV },
+ {0x00b1e9, 0x00b203, EGCB_LVT },
+ {0x00b204, 0x00b204, EGCB_LV },
+ {0x00b205, 0x00b21f, EGCB_LVT },
+ {0x00b220, 0x00b220, EGCB_LV },
+ {0x00b221, 0x00b23b, EGCB_LVT },
+ {0x00b23c, 0x00b23c, EGCB_LV },
+ {0x00b23d, 0x00b257, EGCB_LVT },
+ {0x00b258, 0x00b258, EGCB_LV },
+ {0x00b259, 0x00b273, EGCB_LVT },
+ {0x00b274, 0x00b274, EGCB_LV },
+ {0x00b275, 0x00b28f, EGCB_LVT },
+ {0x00b290, 0x00b290, EGCB_LV },
+ {0x00b291, 0x00b2ab, EGCB_LVT },
+ {0x00b2ac, 0x00b2ac, EGCB_LV },
+ {0x00b2ad, 0x00b2c7, EGCB_LVT },
+ {0x00b2c8, 0x00b2c8, EGCB_LV },
+ {0x00b2c9, 0x00b2e3, EGCB_LVT },
+ {0x00b2e4, 0x00b2e4, EGCB_LV },
+ {0x00b2e5, 0x00b2ff, EGCB_LVT },
+ {0x00b300, 0x00b300, EGCB_LV },
+ {0x00b301, 0x00b31b, EGCB_LVT },
+ {0x00b31c, 0x00b31c, EGCB_LV },
+ {0x00b31d, 0x00b337, EGCB_LVT },
+ {0x00b338, 0x00b338, EGCB_LV },
+ {0x00b339, 0x00b353, EGCB_LVT },
+ {0x00b354, 0x00b354, EGCB_LV },
+ {0x00b355, 0x00b36f, EGCB_LVT },
+ {0x00b370, 0x00b370, EGCB_LV },
+ {0x00b371, 0x00b38b, EGCB_LVT },
+ {0x00b38c, 0x00b38c, EGCB_LV },
+ {0x00b38d, 0x00b3a7, EGCB_LVT },
+ {0x00b3a8, 0x00b3a8, EGCB_LV },
+ {0x00b3a9, 0x00b3c3, EGCB_LVT },
+ {0x00b3c4, 0x00b3c4, EGCB_LV },
+ {0x00b3c5, 0x00b3df, EGCB_LVT },
+ {0x00b3e0, 0x00b3e0, EGCB_LV },
+ {0x00b3e1, 0x00b3fb, EGCB_LVT },
+ {0x00b3fc, 0x00b3fc, EGCB_LV },
+ {0x00b3fd, 0x00b417, EGCB_LVT },
+ {0x00b418, 0x00b418, EGCB_LV },
+ {0x00b419, 0x00b433, EGCB_LVT },
+ {0x00b434, 0x00b434, EGCB_LV },
+ {0x00b435, 0x00b44f, EGCB_LVT },
+ {0x00b450, 0x00b450, EGCB_LV },
+ {0x00b451, 0x00b46b, EGCB_LVT },
+ {0x00b46c, 0x00b46c, EGCB_LV },
+ {0x00b46d, 0x00b487, EGCB_LVT },
+ {0x00b488, 0x00b488, EGCB_LV },
+ {0x00b489, 0x00b4a3, EGCB_LVT },
+ {0x00b4a4, 0x00b4a4, EGCB_LV },
+ {0x00b4a5, 0x00b4bf, EGCB_LVT },
+ {0x00b4c0, 0x00b4c0, EGCB_LV },
+ {0x00b4c1, 0x00b4db, EGCB_LVT },
+ {0x00b4dc, 0x00b4dc, EGCB_LV },
+ {0x00b4dd, 0x00b4f7, EGCB_LVT },
+ {0x00b4f8, 0x00b4f8, EGCB_LV },
+ {0x00b4f9, 0x00b513, EGCB_LVT },
+ {0x00b514, 0x00b514, EGCB_LV },
+ {0x00b515, 0x00b52f, EGCB_LVT },
+ {0x00b530, 0x00b530, EGCB_LV },
+ {0x00b531, 0x00b54b, EGCB_LVT },
+ {0x00b54c, 0x00b54c, EGCB_LV },
+ {0x00b54d, 0x00b567, EGCB_LVT },
+ {0x00b568, 0x00b568, EGCB_LV },
+ {0x00b569, 0x00b583, EGCB_LVT },
+ {0x00b584, 0x00b584, EGCB_LV },
+ {0x00b585, 0x00b59f, EGCB_LVT },
+ {0x00b5a0, 0x00b5a0, EGCB_LV },
+ {0x00b5a1, 0x00b5bb, EGCB_LVT },
+ {0x00b5bc, 0x00b5bc, EGCB_LV },
+ {0x00b5bd, 0x00b5d7, EGCB_LVT },
+ {0x00b5d8, 0x00b5d8, EGCB_LV },
+ {0x00b5d9, 0x00b5f3, EGCB_LVT },
+ {0x00b5f4, 0x00b5f4, EGCB_LV },
+ {0x00b5f5, 0x00b60f, EGCB_LVT },
+ {0x00b610, 0x00b610, EGCB_LV },
+ {0x00b611, 0x00b62b, EGCB_LVT },
+ {0x00b62c, 0x00b62c, EGCB_LV },
+ {0x00b62d, 0x00b647, EGCB_LVT },
+ {0x00b648, 0x00b648, EGCB_LV },
+ {0x00b649, 0x00b663, EGCB_LVT },
+ {0x00b664, 0x00b664, EGCB_LV },
+ {0x00b665, 0x00b67f, EGCB_LVT },
+ {0x00b680, 0x00b680, EGCB_LV },
+ {0x00b681, 0x00b69b, EGCB_LVT },
+ {0x00b69c, 0x00b69c, EGCB_LV },
+ {0x00b69d, 0x00b6b7, EGCB_LVT },
+ {0x00b6b8, 0x00b6b8, EGCB_LV },
+ {0x00b6b9, 0x00b6d3, EGCB_LVT },
+ {0x00b6d4, 0x00b6d4, EGCB_LV },
+ {0x00b6d5, 0x00b6ef, EGCB_LVT },
+ {0x00b6f0, 0x00b6f0, EGCB_LV },
+ {0x00b6f1, 0x00b70b, EGCB_LVT },
+ {0x00b70c, 0x00b70c, EGCB_LV },
+ {0x00b70d, 0x00b727, EGCB_LVT },
+ {0x00b728, 0x00b728, EGCB_LV },
+ {0x00b729, 0x00b743, EGCB_LVT },
+ {0x00b744, 0x00b744, EGCB_LV },
+ {0x00b745, 0x00b75f, EGCB_LVT },
+ {0x00b760, 0x00b760, EGCB_LV },
+ {0x00b761, 0x00b77b, EGCB_LVT },
+ {0x00b77c, 0x00b77c, EGCB_LV },
+ {0x00b77d, 0x00b797, EGCB_LVT },
+ {0x00b798, 0x00b798, EGCB_LV },
+ {0x00b799, 0x00b7b3, EGCB_LVT },
+ {0x00b7b4, 0x00b7b4, EGCB_LV },
+ {0x00b7b5, 0x00b7cf, EGCB_LVT },
+ {0x00b7d0, 0x00b7d0, EGCB_LV },
+ {0x00b7d1, 0x00b7eb, EGCB_LVT },
+ {0x00b7ec, 0x00b7ec, EGCB_LV },
+ {0x00b7ed, 0x00b807, EGCB_LVT },
+ {0x00b808, 0x00b808, EGCB_LV },
+ {0x00b809, 0x00b823, EGCB_LVT },
+ {0x00b824, 0x00b824, EGCB_LV },
+ {0x00b825, 0x00b83f, EGCB_LVT },
+ {0x00b840, 0x00b840, EGCB_LV },
+ {0x00b841, 0x00b85b, EGCB_LVT },
+ {0x00b85c, 0x00b85c, EGCB_LV },
+ {0x00b85d, 0x00b877, EGCB_LVT },
+ {0x00b878, 0x00b878, EGCB_LV },
+ {0x00b879, 0x00b893, EGCB_LVT },
+ {0x00b894, 0x00b894, EGCB_LV },
+ {0x00b895, 0x00b8af, EGCB_LVT },
+ {0x00b8b0, 0x00b8b0, EGCB_LV },
+ {0x00b8b1, 0x00b8cb, EGCB_LVT },
+ {0x00b8cc, 0x00b8cc, EGCB_LV },
+ {0x00b8cd, 0x00b8e7, EGCB_LVT },
+ {0x00b8e8, 0x00b8e8, EGCB_LV },
+ {0x00b8e9, 0x00b903, EGCB_LVT },
+ {0x00b904, 0x00b904, EGCB_LV },
+ {0x00b905, 0x00b91f, EGCB_LVT },
+ {0x00b920, 0x00b920, EGCB_LV },
+ {0x00b921, 0x00b93b, EGCB_LVT },
+ {0x00b93c, 0x00b93c, EGCB_LV },
+ {0x00b93d, 0x00b957, EGCB_LVT },
+ {0x00b958, 0x00b958, EGCB_LV },
+ {0x00b959, 0x00b973, EGCB_LVT },
+ {0x00b974, 0x00b974, EGCB_LV },
+ {0x00b975, 0x00b98f, EGCB_LVT },
+ {0x00b990, 0x00b990, EGCB_LV },
+ {0x00b991, 0x00b9ab, EGCB_LVT },
+ {0x00b9ac, 0x00b9ac, EGCB_LV },
+ {0x00b9ad, 0x00b9c7, EGCB_LVT },
+ {0x00b9c8, 0x00b9c8, EGCB_LV },
+ {0x00b9c9, 0x00b9e3, EGCB_LVT },
+ {0x00b9e4, 0x00b9e4, EGCB_LV },
+ {0x00b9e5, 0x00b9ff, EGCB_LVT },
+ {0x00ba00, 0x00ba00, EGCB_LV },
+ {0x00ba01, 0x00ba1b, EGCB_LVT },
+ {0x00ba1c, 0x00ba1c, EGCB_LV },
+ {0x00ba1d, 0x00ba37, EGCB_LVT },
+ {0x00ba38, 0x00ba38, EGCB_LV },
+ {0x00ba39, 0x00ba53, EGCB_LVT },
+ {0x00ba54, 0x00ba54, EGCB_LV },
+ {0x00ba55, 0x00ba6f, EGCB_LVT },
+ {0x00ba70, 0x00ba70, EGCB_LV },
+ {0x00ba71, 0x00ba8b, EGCB_LVT },
+ {0x00ba8c, 0x00ba8c, EGCB_LV },
+ {0x00ba8d, 0x00baa7, EGCB_LVT },
+ {0x00baa8, 0x00baa8, EGCB_LV },
+ {0x00baa9, 0x00bac3, EGCB_LVT },
+ {0x00bac4, 0x00bac4, EGCB_LV },
+ {0x00bac5, 0x00badf, EGCB_LVT },
+ {0x00bae0, 0x00bae0, EGCB_LV },
+ {0x00bae1, 0x00bafb, EGCB_LVT },
+ {0x00bafc, 0x00bafc, EGCB_LV },
+ {0x00bafd, 0x00bb17, EGCB_LVT },
+ {0x00bb18, 0x00bb18, EGCB_LV },
+ {0x00bb19, 0x00bb33, EGCB_LVT },
+ {0x00bb34, 0x00bb34, EGCB_LV },
+ {0x00bb35, 0x00bb4f, EGCB_LVT },
+ {0x00bb50, 0x00bb50, EGCB_LV },
+ {0x00bb51, 0x00bb6b, EGCB_LVT },
+ {0x00bb6c, 0x00bb6c, EGCB_LV },
+ {0x00bb6d, 0x00bb87, EGCB_LVT },
+ {0x00bb88, 0x00bb88, EGCB_LV },
+ {0x00bb89, 0x00bba3, EGCB_LVT },
+ {0x00bba4, 0x00bba4, EGCB_LV },
+ {0x00bba5, 0x00bbbf, EGCB_LVT },
+ {0x00bbc0, 0x00bbc0, EGCB_LV },
+ {0x00bbc1, 0x00bbdb, EGCB_LVT },
+ {0x00bbdc, 0x00bbdc, EGCB_LV },
+ {0x00bbdd, 0x00bbf7, EGCB_LVT },
+ {0x00bbf8, 0x00bbf8, EGCB_LV },
+ {0x00bbf9, 0x00bc13, EGCB_LVT },
+ {0x00bc14, 0x00bc14, EGCB_LV },
+ {0x00bc15, 0x00bc2f, EGCB_LVT },
+ {0x00bc30, 0x00bc30, EGCB_LV },
+ {0x00bc31, 0x00bc4b, EGCB_LVT },
+ {0x00bc4c, 0x00bc4c, EGCB_LV },
+ {0x00bc4d, 0x00bc67, EGCB_LVT },
+ {0x00bc68, 0x00bc68, EGCB_LV },
+ {0x00bc69, 0x00bc83, EGCB_LVT },
+ {0x00bc84, 0x00bc84, EGCB_LV },
+ {0x00bc85, 0x00bc9f, EGCB_LVT },
+ {0x00bca0, 0x00bca0, EGCB_LV },
+ {0x00bca1, 0x00bcbb, EGCB_LVT },
+ {0x00bcbc, 0x00bcbc, EGCB_LV },
+ {0x00bcbd, 0x00bcd7, EGCB_LVT },
+ {0x00bcd8, 0x00bcd8, EGCB_LV },
+ {0x00bcd9, 0x00bcf3, EGCB_LVT },
+ {0x00bcf4, 0x00bcf4, EGCB_LV },
+ {0x00bcf5, 0x00bd0f, EGCB_LVT },
+ {0x00bd10, 0x00bd10, EGCB_LV },
+ {0x00bd11, 0x00bd2b, EGCB_LVT },
+ {0x00bd2c, 0x00bd2c, EGCB_LV },
+ {0x00bd2d, 0x00bd47, EGCB_LVT },
+ {0x00bd48, 0x00bd48, EGCB_LV },
+ {0x00bd49, 0x00bd63, EGCB_LVT },
+ {0x00bd64, 0x00bd64, EGCB_LV },
+ {0x00bd65, 0x00bd7f, EGCB_LVT },
+ {0x00bd80, 0x00bd80, EGCB_LV },
+ {0x00bd81, 0x00bd9b, EGCB_LVT },
+ {0x00bd9c, 0x00bd9c, EGCB_LV },
+ {0x00bd9d, 0x00bdb7, EGCB_LVT },
+ {0x00bdb8, 0x00bdb8, EGCB_LV },
+ {0x00bdb9, 0x00bdd3, EGCB_LVT },
+ {0x00bdd4, 0x00bdd4, EGCB_LV },
+ {0x00bdd5, 0x00bdef, EGCB_LVT },
+ {0x00bdf0, 0x00bdf0, EGCB_LV },
+ {0x00bdf1, 0x00be0b, EGCB_LVT },
+ {0x00be0c, 0x00be0c, EGCB_LV },
+ {0x00be0d, 0x00be27, EGCB_LVT },
+ {0x00be28, 0x00be28, EGCB_LV },
+ {0x00be29, 0x00be43, EGCB_LVT },
+ {0x00be44, 0x00be44, EGCB_LV },
+ {0x00be45, 0x00be5f, EGCB_LVT },
+ {0x00be60, 0x00be60, EGCB_LV },
+ {0x00be61, 0x00be7b, EGCB_LVT },
+ {0x00be7c, 0x00be7c, EGCB_LV },
+ {0x00be7d, 0x00be97, EGCB_LVT },
+ {0x00be98, 0x00be98, EGCB_LV },
+ {0x00be99, 0x00beb3, EGCB_LVT },
+ {0x00beb4, 0x00beb4, EGCB_LV },
+ {0x00beb5, 0x00becf, EGCB_LVT },
+ {0x00bed0, 0x00bed0, EGCB_LV },
+ {0x00bed1, 0x00beeb, EGCB_LVT },
+ {0x00beec, 0x00beec, EGCB_LV },
+ {0x00beed, 0x00bf07, EGCB_LVT },
+ {0x00bf08, 0x00bf08, EGCB_LV },
+ {0x00bf09, 0x00bf23, EGCB_LVT },
+ {0x00bf24, 0x00bf24, EGCB_LV },
+ {0x00bf25, 0x00bf3f, EGCB_LVT },
+ {0x00bf40, 0x00bf40, EGCB_LV },
+ {0x00bf41, 0x00bf5b, EGCB_LVT },
+ {0x00bf5c, 0x00bf5c, EGCB_LV },
+ {0x00bf5d, 0x00bf77, EGCB_LVT },
+ {0x00bf78, 0x00bf78, EGCB_LV },
+ {0x00bf79, 0x00bf93, EGCB_LVT },
+ {0x00bf94, 0x00bf94, EGCB_LV },
+ {0x00bf95, 0x00bfaf, EGCB_LVT },
+ {0x00bfb0, 0x00bfb0, EGCB_LV },
+ {0x00bfb1, 0x00bfcb, EGCB_LVT },
+ {0x00bfcc, 0x00bfcc, EGCB_LV },
+ {0x00bfcd, 0x00bfe7, EGCB_LVT },
+ {0x00bfe8, 0x00bfe8, EGCB_LV },
+ {0x00bfe9, 0x00c003, EGCB_LVT },
+ {0x00c004, 0x00c004, EGCB_LV },
+ {0x00c005, 0x00c01f, EGCB_LVT },
+ {0x00c020, 0x00c020, EGCB_LV },
+ {0x00c021, 0x00c03b, EGCB_LVT },
+ {0x00c03c, 0x00c03c, EGCB_LV },
+ {0x00c03d, 0x00c057, EGCB_LVT },
+ {0x00c058, 0x00c058, EGCB_LV },
+ {0x00c059, 0x00c073, EGCB_LVT },
+ {0x00c074, 0x00c074, EGCB_LV },
+ {0x00c075, 0x00c08f, EGCB_LVT },
+ {0x00c090, 0x00c090, EGCB_LV },
+ {0x00c091, 0x00c0ab, EGCB_LVT },
+ {0x00c0ac, 0x00c0ac, EGCB_LV },
+ {0x00c0ad, 0x00c0c7, EGCB_LVT },
+ {0x00c0c8, 0x00c0c8, EGCB_LV },
+ {0x00c0c9, 0x00c0e3, EGCB_LVT },
+ {0x00c0e4, 0x00c0e4, EGCB_LV },
+ {0x00c0e5, 0x00c0ff, EGCB_LVT },
+ {0x00c100, 0x00c100, EGCB_LV },
+ {0x00c101, 0x00c11b, EGCB_LVT },
+ {0x00c11c, 0x00c11c, EGCB_LV },
+ {0x00c11d, 0x00c137, EGCB_LVT },
+ {0x00c138, 0x00c138, EGCB_LV },
+ {0x00c139, 0x00c153, EGCB_LVT },
+ {0x00c154, 0x00c154, EGCB_LV },
+ {0x00c155, 0x00c16f, EGCB_LVT },
+ {0x00c170, 0x00c170, EGCB_LV },
+ {0x00c171, 0x00c18b, EGCB_LVT },
+ {0x00c18c, 0x00c18c, EGCB_LV },
+ {0x00c18d, 0x00c1a7, EGCB_LVT },
+ {0x00c1a8, 0x00c1a8, EGCB_LV },
+ {0x00c1a9, 0x00c1c3, EGCB_LVT },
+ {0x00c1c4, 0x00c1c4, EGCB_LV },
+ {0x00c1c5, 0x00c1df, EGCB_LVT },
+ {0x00c1e0, 0x00c1e0, EGCB_LV },
+ {0x00c1e1, 0x00c1fb, EGCB_LVT },
+ {0x00c1fc, 0x00c1fc, EGCB_LV },
+ {0x00c1fd, 0x00c217, EGCB_LVT },
+ {0x00c218, 0x00c218, EGCB_LV },
+ {0x00c219, 0x00c233, EGCB_LVT },
+ {0x00c234, 0x00c234, EGCB_LV },
+ {0x00c235, 0x00c24f, EGCB_LVT },
+ {0x00c250, 0x00c250, EGCB_LV },
+ {0x00c251, 0x00c26b, EGCB_LVT },
+ {0x00c26c, 0x00c26c, EGCB_LV },
+ {0x00c26d, 0x00c287, EGCB_LVT },
+ {0x00c288, 0x00c288, EGCB_LV },
+ {0x00c289, 0x00c2a3, EGCB_LVT },
+ {0x00c2a4, 0x00c2a4, EGCB_LV },
+ {0x00c2a5, 0x00c2bf, EGCB_LVT },
+ {0x00c2c0, 0x00c2c0, EGCB_LV },
+ {0x00c2c1, 0x00c2db, EGCB_LVT },
+ {0x00c2dc, 0x00c2dc, EGCB_LV },
+ {0x00c2dd, 0x00c2f7, EGCB_LVT },
+ {0x00c2f8, 0x00c2f8, EGCB_LV },
+ {0x00c2f9, 0x00c313, EGCB_LVT },
+ {0x00c314, 0x00c314, EGCB_LV },
+ {0x00c315, 0x00c32f, EGCB_LVT },
+ {0x00c330, 0x00c330, EGCB_LV },
+ {0x00c331, 0x00c34b, EGCB_LVT },
+ {0x00c34c, 0x00c34c, EGCB_LV },
+ {0x00c34d, 0x00c367, EGCB_LVT },
+ {0x00c368, 0x00c368, EGCB_LV },
+ {0x00c369, 0x00c383, EGCB_LVT },
+ {0x00c384, 0x00c384, EGCB_LV },
+ {0x00c385, 0x00c39f, EGCB_LVT },
+ {0x00c3a0, 0x00c3a0, EGCB_LV },
+ {0x00c3a1, 0x00c3bb, EGCB_LVT },
+ {0x00c3bc, 0x00c3bc, EGCB_LV },
+ {0x00c3bd, 0x00c3d7, EGCB_LVT },
+ {0x00c3d8, 0x00c3d8, EGCB_LV },
+ {0x00c3d9, 0x00c3f3, EGCB_LVT },
+ {0x00c3f4, 0x00c3f4, EGCB_LV },
+ {0x00c3f5, 0x00c40f, EGCB_LVT },
+ {0x00c410, 0x00c410, EGCB_LV },
+ {0x00c411, 0x00c42b, EGCB_LVT },
+ {0x00c42c, 0x00c42c, EGCB_LV },
+ {0x00c42d, 0x00c447, EGCB_LVT },
+ {0x00c448, 0x00c448, EGCB_LV },
+ {0x00c449, 0x00c463, EGCB_LVT },
+ {0x00c464, 0x00c464, EGCB_LV },
+ {0x00c465, 0x00c47f, EGCB_LVT },
+ {0x00c480, 0x00c480, EGCB_LV },
+ {0x00c481, 0x00c49b, EGCB_LVT },
+ {0x00c49c, 0x00c49c, EGCB_LV },
+ {0x00c49d, 0x00c4b7, EGCB_LVT },
+ {0x00c4b8, 0x00c4b8, EGCB_LV },
+ {0x00c4b9, 0x00c4d3, EGCB_LVT },
+ {0x00c4d4, 0x00c4d4, EGCB_LV },
+ {0x00c4d5, 0x00c4ef, EGCB_LVT },
+ {0x00c4f0, 0x00c4f0, EGCB_LV },
+ {0x00c4f1, 0x00c50b, EGCB_LVT },
+ {0x00c50c, 0x00c50c, EGCB_LV },
+ {0x00c50d, 0x00c527, EGCB_LVT },
+ {0x00c528, 0x00c528, EGCB_LV },
+ {0x00c529, 0x00c543, EGCB_LVT },
+ {0x00c544, 0x00c544, EGCB_LV },
+ {0x00c545, 0x00c55f, EGCB_LVT },
+ {0x00c560, 0x00c560, EGCB_LV },
+ {0x00c561, 0x00c57b, EGCB_LVT },
+ {0x00c57c, 0x00c57c, EGCB_LV },
+ {0x00c57d, 0x00c597, EGCB_LVT },
+ {0x00c598, 0x00c598, EGCB_LV },
+ {0x00c599, 0x00c5b3, EGCB_LVT },
+ {0x00c5b4, 0x00c5b4, EGCB_LV },
+ {0x00c5b5, 0x00c5cf, EGCB_LVT },
+ {0x00c5d0, 0x00c5d0, EGCB_LV },
+ {0x00c5d1, 0x00c5eb, EGCB_LVT },
+ {0x00c5ec, 0x00c5ec, EGCB_LV },
+ {0x00c5ed, 0x00c607, EGCB_LVT },
+ {0x00c608, 0x00c608, EGCB_LV },
+ {0x00c609, 0x00c623, EGCB_LVT },
+ {0x00c624, 0x00c624, EGCB_LV },
+ {0x00c625, 0x00c63f, EGCB_LVT },
+ {0x00c640, 0x00c640, EGCB_LV },
+ {0x00c641, 0x00c65b, EGCB_LVT },
+ {0x00c65c, 0x00c65c, EGCB_LV },
+ {0x00c65d, 0x00c677, EGCB_LVT },
+ {0x00c678, 0x00c678, EGCB_LV },
+ {0x00c679, 0x00c693, EGCB_LVT },
+ {0x00c694, 0x00c694, EGCB_LV },
+ {0x00c695, 0x00c6af, EGCB_LVT },
+ {0x00c6b0, 0x00c6b0, EGCB_LV },
+ {0x00c6b1, 0x00c6cb, EGCB_LVT },
+ {0x00c6cc, 0x00c6cc, EGCB_LV },
+ {0x00c6cd, 0x00c6e7, EGCB_LVT },
+ {0x00c6e8, 0x00c6e8, EGCB_LV },
+ {0x00c6e9, 0x00c703, EGCB_LVT },
+ {0x00c704, 0x00c704, EGCB_LV },
+ {0x00c705, 0x00c71f, EGCB_LVT },
+ {0x00c720, 0x00c720, EGCB_LV },
+ {0x00c721, 0x00c73b, EGCB_LVT },
+ {0x00c73c, 0x00c73c, EGCB_LV },
+ {0x00c73d, 0x00c757, EGCB_LVT },
+ {0x00c758, 0x00c758, EGCB_LV },
+ {0x00c759, 0x00c773, EGCB_LVT },
+ {0x00c774, 0x00c774, EGCB_LV },
+ {0x00c775, 0x00c78f, EGCB_LVT },
+ {0x00c790, 0x00c790, EGCB_LV },
+ {0x00c791, 0x00c7ab, EGCB_LVT },
+ {0x00c7ac, 0x00c7ac, EGCB_LV },
+ {0x00c7ad, 0x00c7c7, EGCB_LVT },
+ {0x00c7c8, 0x00c7c8, EGCB_LV },
+ {0x00c7c9, 0x00c7e3, EGCB_LVT },
+ {0x00c7e4, 0x00c7e4, EGCB_LV },
+ {0x00c7e5, 0x00c7ff, EGCB_LVT },
+ {0x00c800, 0x00c800, EGCB_LV },
+ {0x00c801, 0x00c81b, EGCB_LVT },
+ {0x00c81c, 0x00c81c, EGCB_LV },
+ {0x00c81d, 0x00c837, EGCB_LVT },
+ {0x00c838, 0x00c838, EGCB_LV },
+ {0x00c839, 0x00c853, EGCB_LVT },
+ {0x00c854, 0x00c854, EGCB_LV },
+ {0x00c855, 0x00c86f, EGCB_LVT },
+ {0x00c870, 0x00c870, EGCB_LV },
+ {0x00c871, 0x00c88b, EGCB_LVT },
+ {0x00c88c, 0x00c88c, EGCB_LV },
+ {0x00c88d, 0x00c8a7, EGCB_LVT },
+ {0x00c8a8, 0x00c8a8, EGCB_LV },
+ {0x00c8a9, 0x00c8c3, EGCB_LVT },
+ {0x00c8c4, 0x00c8c4, EGCB_LV },
+ {0x00c8c5, 0x00c8df, EGCB_LVT },
+ {0x00c8e0, 0x00c8e0, EGCB_LV },
+ {0x00c8e1, 0x00c8fb, EGCB_LVT },
+ {0x00c8fc, 0x00c8fc, EGCB_LV },
+ {0x00c8fd, 0x00c917, EGCB_LVT },
+ {0x00c918, 0x00c918, EGCB_LV },
+ {0x00c919, 0x00c933, EGCB_LVT },
+ {0x00c934, 0x00c934, EGCB_LV },
+ {0x00c935, 0x00c94f, EGCB_LVT },
+ {0x00c950, 0x00c950, EGCB_LV },
+ {0x00c951, 0x00c96b, EGCB_LVT },
+ {0x00c96c, 0x00c96c, EGCB_LV },
+ {0x00c96d, 0x00c987, EGCB_LVT },
+ {0x00c988, 0x00c988, EGCB_LV },
+ {0x00c989, 0x00c9a3, EGCB_LVT },
+ {0x00c9a4, 0x00c9a4, EGCB_LV },
+ {0x00c9a5, 0x00c9bf, EGCB_LVT },
+ {0x00c9c0, 0x00c9c0, EGCB_LV },
+ {0x00c9c1, 0x00c9db, EGCB_LVT },
+ {0x00c9dc, 0x00c9dc, EGCB_LV },
+ {0x00c9dd, 0x00c9f7, EGCB_LVT },
+ {0x00c9f8, 0x00c9f8, EGCB_LV },
+ {0x00c9f9, 0x00ca13, EGCB_LVT },
+ {0x00ca14, 0x00ca14, EGCB_LV },
+ {0x00ca15, 0x00ca2f, EGCB_LVT },
+ {0x00ca30, 0x00ca30, EGCB_LV },
+ {0x00ca31, 0x00ca4b, EGCB_LVT },
+ {0x00ca4c, 0x00ca4c, EGCB_LV },
+ {0x00ca4d, 0x00ca67, EGCB_LVT },
+ {0x00ca68, 0x00ca68, EGCB_LV },
+ {0x00ca69, 0x00ca83, EGCB_LVT },
+ {0x00ca84, 0x00ca84, EGCB_LV },
+ {0x00ca85, 0x00ca9f, EGCB_LVT },
+ {0x00caa0, 0x00caa0, EGCB_LV },
+ {0x00caa1, 0x00cabb, EGCB_LVT },
+ {0x00cabc, 0x00cabc, EGCB_LV },
+ {0x00cabd, 0x00cad7, EGCB_LVT },
+ {0x00cad8, 0x00cad8, EGCB_LV },
+ {0x00cad9, 0x00caf3, EGCB_LVT },
+ {0x00caf4, 0x00caf4, EGCB_LV },
+ {0x00caf5, 0x00cb0f, EGCB_LVT },
+ {0x00cb10, 0x00cb10, EGCB_LV },
+ {0x00cb11, 0x00cb2b, EGCB_LVT },
+ {0x00cb2c, 0x00cb2c, EGCB_LV },
+ {0x00cb2d, 0x00cb47, EGCB_LVT },
+ {0x00cb48, 0x00cb48, EGCB_LV },
+ {0x00cb49, 0x00cb63, EGCB_LVT },
+ {0x00cb64, 0x00cb64, EGCB_LV },
+ {0x00cb65, 0x00cb7f, EGCB_LVT },
+ {0x00cb80, 0x00cb80, EGCB_LV },
+ {0x00cb81, 0x00cb9b, EGCB_LVT },
+ {0x00cb9c, 0x00cb9c, EGCB_LV },
+ {0x00cb9d, 0x00cbb7, EGCB_LVT },
+ {0x00cbb8, 0x00cbb8, EGCB_LV },
+ {0x00cbb9, 0x00cbd3, EGCB_LVT },
+ {0x00cbd4, 0x00cbd4, EGCB_LV },
+ {0x00cbd5, 0x00cbef, EGCB_LVT },
+ {0x00cbf0, 0x00cbf0, EGCB_LV },
+ {0x00cbf1, 0x00cc0b, EGCB_LVT },
+ {0x00cc0c, 0x00cc0c, EGCB_LV },
+ {0x00cc0d, 0x00cc27, EGCB_LVT },
+ {0x00cc28, 0x00cc28, EGCB_LV },
+ {0x00cc29, 0x00cc43, EGCB_LVT },
+ {0x00cc44, 0x00cc44, EGCB_LV },
+ {0x00cc45, 0x00cc5f, EGCB_LVT },
+ {0x00cc60, 0x00cc60, EGCB_LV },
+ {0x00cc61, 0x00cc7b, EGCB_LVT },
+ {0x00cc7c, 0x00cc7c, EGCB_LV },
+ {0x00cc7d, 0x00cc97, EGCB_LVT },
+ {0x00cc98, 0x00cc98, EGCB_LV },
+ {0x00cc99, 0x00ccb3, EGCB_LVT },
+ {0x00ccb4, 0x00ccb4, EGCB_LV },
+ {0x00ccb5, 0x00cccf, EGCB_LVT },
+ {0x00ccd0, 0x00ccd0, EGCB_LV },
+ {0x00ccd1, 0x00cceb, EGCB_LVT },
+ {0x00ccec, 0x00ccec, EGCB_LV },
+ {0x00cced, 0x00cd07, EGCB_LVT },
+ {0x00cd08, 0x00cd08, EGCB_LV },
+ {0x00cd09, 0x00cd23, EGCB_LVT },
+ {0x00cd24, 0x00cd24, EGCB_LV },
+ {0x00cd25, 0x00cd3f, EGCB_LVT },
+ {0x00cd40, 0x00cd40, EGCB_LV },
+ {0x00cd41, 0x00cd5b, EGCB_LVT },
+ {0x00cd5c, 0x00cd5c, EGCB_LV },
+ {0x00cd5d, 0x00cd77, EGCB_LVT },
+ {0x00cd78, 0x00cd78, EGCB_LV },
+ {0x00cd79, 0x00cd93, EGCB_LVT },
+ {0x00cd94, 0x00cd94, EGCB_LV },
+ {0x00cd95, 0x00cdaf, EGCB_LVT },
+ {0x00cdb0, 0x00cdb0, EGCB_LV },
+ {0x00cdb1, 0x00cdcb, EGCB_LVT },
+ {0x00cdcc, 0x00cdcc, EGCB_LV },
+ {0x00cdcd, 0x00cde7, EGCB_LVT },
+ {0x00cde8, 0x00cde8, EGCB_LV },
+ {0x00cde9, 0x00ce03, EGCB_LVT },
+ {0x00ce04, 0x00ce04, EGCB_LV },
+ {0x00ce05, 0x00ce1f, EGCB_LVT },
+ {0x00ce20, 0x00ce20, EGCB_LV },
+ {0x00ce21, 0x00ce3b, EGCB_LVT },
+ {0x00ce3c, 0x00ce3c, EGCB_LV },
+ {0x00ce3d, 0x00ce57, EGCB_LVT },
+ {0x00ce58, 0x00ce58, EGCB_LV },
+ {0x00ce59, 0x00ce73, EGCB_LVT },
+ {0x00ce74, 0x00ce74, EGCB_LV },
+ {0x00ce75, 0x00ce8f, EGCB_LVT },
+ {0x00ce90, 0x00ce90, EGCB_LV },
+ {0x00ce91, 0x00ceab, EGCB_LVT },
+ {0x00ceac, 0x00ceac, EGCB_LV },
+ {0x00cead, 0x00cec7, EGCB_LVT },
+ {0x00cec8, 0x00cec8, EGCB_LV },
+ {0x00cec9, 0x00cee3, EGCB_LVT },
+ {0x00cee4, 0x00cee4, EGCB_LV },
+ {0x00cee5, 0x00ceff, EGCB_LVT },
+ {0x00cf00, 0x00cf00, EGCB_LV },
+ {0x00cf01, 0x00cf1b, EGCB_LVT },
+ {0x00cf1c, 0x00cf1c, EGCB_LV },
+ {0x00cf1d, 0x00cf37, EGCB_LVT },
+ {0x00cf38, 0x00cf38, EGCB_LV },
+ {0x00cf39, 0x00cf53, EGCB_LVT },
+ {0x00cf54, 0x00cf54, EGCB_LV },
+ {0x00cf55, 0x00cf6f, EGCB_LVT },
+ {0x00cf70, 0x00cf70, EGCB_LV },
+ {0x00cf71, 0x00cf8b, EGCB_LVT },
+ {0x00cf8c, 0x00cf8c, EGCB_LV },
+ {0x00cf8d, 0x00cfa7, EGCB_LVT },
+ {0x00cfa8, 0x00cfa8, EGCB_LV },
+ {0x00cfa9, 0x00cfc3, EGCB_LVT },
+ {0x00cfc4, 0x00cfc4, EGCB_LV },
+ {0x00cfc5, 0x00cfdf, EGCB_LVT },
+ {0x00cfe0, 0x00cfe0, EGCB_LV },
+ {0x00cfe1, 0x00cffb, EGCB_LVT },
+ {0x00cffc, 0x00cffc, EGCB_LV },
+ {0x00cffd, 0x00d017, EGCB_LVT },
+ {0x00d018, 0x00d018, EGCB_LV },
+ {0x00d019, 0x00d033, EGCB_LVT },
+ {0x00d034, 0x00d034, EGCB_LV },
+ {0x00d035, 0x00d04f, EGCB_LVT },
+ {0x00d050, 0x00d050, EGCB_LV },
+ {0x00d051, 0x00d06b, EGCB_LVT },
+ {0x00d06c, 0x00d06c, EGCB_LV },
+ {0x00d06d, 0x00d087, EGCB_LVT },
+ {0x00d088, 0x00d088, EGCB_LV },
+ {0x00d089, 0x00d0a3, EGCB_LVT },
+ {0x00d0a4, 0x00d0a4, EGCB_LV },
+ {0x00d0a5, 0x00d0bf, EGCB_LVT },
+ {0x00d0c0, 0x00d0c0, EGCB_LV },
+ {0x00d0c1, 0x00d0db, EGCB_LVT },
+ {0x00d0dc, 0x00d0dc, EGCB_LV },
+ {0x00d0dd, 0x00d0f7, EGCB_LVT },
+ {0x00d0f8, 0x00d0f8, EGCB_LV },
+ {0x00d0f9, 0x00d113, EGCB_LVT },
+ {0x00d114, 0x00d114, EGCB_LV },
+ {0x00d115, 0x00d12f, EGCB_LVT },
+ {0x00d130, 0x00d130, EGCB_LV },
+ {0x00d131, 0x00d14b, EGCB_LVT },
+ {0x00d14c, 0x00d14c, EGCB_LV },
+ {0x00d14d, 0x00d167, EGCB_LVT },
+ {0x00d168, 0x00d168, EGCB_LV },
+ {0x00d169, 0x00d183, EGCB_LVT },
+ {0x00d184, 0x00d184, EGCB_LV },
+ {0x00d185, 0x00d19f, EGCB_LVT },
+ {0x00d1a0, 0x00d1a0, EGCB_LV },
+ {0x00d1a1, 0x00d1bb, EGCB_LVT },
+ {0x00d1bc, 0x00d1bc, EGCB_LV },
+ {0x00d1bd, 0x00d1d7, EGCB_LVT },
+ {0x00d1d8, 0x00d1d8, EGCB_LV },
+ {0x00d1d9, 0x00d1f3, EGCB_LVT },
+ {0x00d1f4, 0x00d1f4, EGCB_LV },
+ {0x00d1f5, 0x00d20f, EGCB_LVT },
+ {0x00d210, 0x00d210, EGCB_LV },
+ {0x00d211, 0x00d22b, EGCB_LVT },
+ {0x00d22c, 0x00d22c, EGCB_LV },
+ {0x00d22d, 0x00d247, EGCB_LVT },
+ {0x00d248, 0x00d248, EGCB_LV },
+ {0x00d249, 0x00d263, EGCB_LVT },
+ {0x00d264, 0x00d264, EGCB_LV },
+ {0x00d265, 0x00d27f, EGCB_LVT },
+ {0x00d280, 0x00d280, EGCB_LV },
+ {0x00d281, 0x00d29b, EGCB_LVT },
+ {0x00d29c, 0x00d29c, EGCB_LV },
+ {0x00d29d, 0x00d2b7, EGCB_LVT },
+ {0x00d2b8, 0x00d2b8, EGCB_LV },
+ {0x00d2b9, 0x00d2d3, EGCB_LVT },
+ {0x00d2d4, 0x00d2d4, EGCB_LV },
+ {0x00d2d5, 0x00d2ef, EGCB_LVT },
+ {0x00d2f0, 0x00d2f0, EGCB_LV },
+ {0x00d2f1, 0x00d30b, EGCB_LVT },
+ {0x00d30c, 0x00d30c, EGCB_LV },
+ {0x00d30d, 0x00d327, EGCB_LVT },
+ {0x00d328, 0x00d328, EGCB_LV },
+ {0x00d329, 0x00d343, EGCB_LVT },
+ {0x00d344, 0x00d344, EGCB_LV },
+ {0x00d345, 0x00d35f, EGCB_LVT },
+ {0x00d360, 0x00d360, EGCB_LV },
+ {0x00d361, 0x00d37b, EGCB_LVT },
+ {0x00d37c, 0x00d37c, EGCB_LV },
+ {0x00d37d, 0x00d397, EGCB_LVT },
+ {0x00d398, 0x00d398, EGCB_LV },
+ {0x00d399, 0x00d3b3, EGCB_LVT },
+ {0x00d3b4, 0x00d3b4, EGCB_LV },
+ {0x00d3b5, 0x00d3cf, EGCB_LVT },
+ {0x00d3d0, 0x00d3d0, EGCB_LV },
+ {0x00d3d1, 0x00d3eb, EGCB_LVT },
+ {0x00d3ec, 0x00d3ec, EGCB_LV },
+ {0x00d3ed, 0x00d407, EGCB_LVT },
+ {0x00d408, 0x00d408, EGCB_LV },
+ {0x00d409, 0x00d423, EGCB_LVT },
+ {0x00d424, 0x00d424, EGCB_LV },
+ {0x00d425, 0x00d43f, EGCB_LVT },
+ {0x00d440, 0x00d440, EGCB_LV },
+ {0x00d441, 0x00d45b, EGCB_LVT },
+ {0x00d45c, 0x00d45c, EGCB_LV },
+ {0x00d45d, 0x00d477, EGCB_LVT },
+ {0x00d478, 0x00d478, EGCB_LV },
+ {0x00d479, 0x00d493, EGCB_LVT },
+ {0x00d494, 0x00d494, EGCB_LV },
+ {0x00d495, 0x00d4af, EGCB_LVT },
+ {0x00d4b0, 0x00d4b0, EGCB_LV },
+ {0x00d4b1, 0x00d4cb, EGCB_LVT },
+ {0x00d4cc, 0x00d4cc, EGCB_LV },
+ {0x00d4cd, 0x00d4e7, EGCB_LVT },
+ {0x00d4e8, 0x00d4e8, EGCB_LV },
+ {0x00d4e9, 0x00d503, EGCB_LVT },
+ {0x00d504, 0x00d504, EGCB_LV },
+ {0x00d505, 0x00d51f, EGCB_LVT },
+ {0x00d520, 0x00d520, EGCB_LV },
+ {0x00d521, 0x00d53b, EGCB_LVT },
+ {0x00d53c, 0x00d53c, EGCB_LV },
+ {0x00d53d, 0x00d557, EGCB_LVT },
+ {0x00d558, 0x00d558, EGCB_LV },
+ {0x00d559, 0x00d573, EGCB_LVT },
+ {0x00d574, 0x00d574, EGCB_LV },
+ {0x00d575, 0x00d58f, EGCB_LVT },
+ {0x00d590, 0x00d590, EGCB_LV },
+ {0x00d591, 0x00d5ab, EGCB_LVT },
+ {0x00d5ac, 0x00d5ac, EGCB_LV },
+ {0x00d5ad, 0x00d5c7, EGCB_LVT },
+ {0x00d5c8, 0x00d5c8, EGCB_LV },
+ {0x00d5c9, 0x00d5e3, EGCB_LVT },
+ {0x00d5e4, 0x00d5e4, EGCB_LV },
+ {0x00d5e5, 0x00d5ff, EGCB_LVT },
+ {0x00d600, 0x00d600, EGCB_LV },
+ {0x00d601, 0x00d61b, EGCB_LVT },
+ {0x00d61c, 0x00d61c, EGCB_LV },
+ {0x00d61d, 0x00d637, EGCB_LVT },
+ {0x00d638, 0x00d638, EGCB_LV },
+ {0x00d639, 0x00d653, EGCB_LVT },
+ {0x00d654, 0x00d654, EGCB_LV },
+ {0x00d655, 0x00d66f, EGCB_LVT },
+ {0x00d670, 0x00d670, EGCB_LV },
+ {0x00d671, 0x00d68b, EGCB_LVT },
+ {0x00d68c, 0x00d68c, EGCB_LV },
+ {0x00d68d, 0x00d6a7, EGCB_LVT },
+ {0x00d6a8, 0x00d6a8, EGCB_LV },
+ {0x00d6a9, 0x00d6c3, EGCB_LVT },
+ {0x00d6c4, 0x00d6c4, EGCB_LV },
+ {0x00d6c5, 0x00d6df, EGCB_LVT },
+ {0x00d6e0, 0x00d6e0, EGCB_LV },
+ {0x00d6e1, 0x00d6fb, EGCB_LVT },
+ {0x00d6fc, 0x00d6fc, EGCB_LV },
+ {0x00d6fd, 0x00d717, EGCB_LVT },
+ {0x00d718, 0x00d718, EGCB_LV },
+ {0x00d719, 0x00d733, EGCB_LVT },
+ {0x00d734, 0x00d734, EGCB_LV },
+ {0x00d735, 0x00d74f, EGCB_LVT },
+ {0x00d750, 0x00d750, EGCB_LV },
+ {0x00d751, 0x00d76b, EGCB_LVT },
+ {0x00d76c, 0x00d76c, EGCB_LV },
+ {0x00d76d, 0x00d787, EGCB_LVT },
+ {0x00d788, 0x00d788, EGCB_LV },
+ {0x00d789, 0x00d7a3, EGCB_LVT },
+ {0x00d7b0, 0x00d7c6, EGCB_V },
+ {0x00d7cb, 0x00d7fb, EGCB_T },
+ {0x00d800, 0x00dfff, EGCB_Control },
+ {0x00fb1e, 0x00fb1e, EGCB_Extend },
+ {0x00fe00, 0x00fe0f, EGCB_Extend },
+ {0x00fe20, 0x00fe2f, EGCB_Extend },
+ {0x00feff, 0x00feff, EGCB_Control },
+ {0x00ff9e, 0x00ff9f, EGCB_Extend },
+ {0x00fff0, 0x00fffb, EGCB_Control },
+ {0x0101fd, 0x0101fd, EGCB_Extend },
+ {0x0102e0, 0x0102e0, EGCB_Extend },
+ {0x010376, 0x01037a, EGCB_Extend },
+ {0x010a01, 0x010a03, EGCB_Extend },
+ {0x010a05, 0x010a06, EGCB_Extend },
+ {0x010a0c, 0x010a0f, EGCB_Extend },
+ {0x010a38, 0x010a3a, EGCB_Extend },
+ {0x010a3f, 0x010a3f, EGCB_Extend },
+ {0x010ae5, 0x010ae6, EGCB_Extend },
+ {0x010d24, 0x010d27, EGCB_Extend },
+ {0x010f46, 0x010f50, EGCB_Extend },
+ {0x011000, 0x011000, EGCB_SpacingMark },
+ {0x011001, 0x011001, EGCB_Extend },
+ {0x011002, 0x011002, EGCB_SpacingMark },
+ {0x011038, 0x011046, EGCB_Extend },
+ {0x01107f, 0x011081, EGCB_Extend },
+ {0x011082, 0x011082, EGCB_SpacingMark },
+ {0x0110b0, 0x0110b2, EGCB_SpacingMark },
+ {0x0110b3, 0x0110b6, EGCB_Extend },
+ {0x0110b7, 0x0110b8, EGCB_SpacingMark },
+ {0x0110b9, 0x0110ba, EGCB_Extend },
+ {0x0110bd, 0x0110bd, EGCB_Prepend },
+ {0x0110cd, 0x0110cd, EGCB_Prepend },
+ {0x011100, 0x011102, EGCB_Extend },
+ {0x011127, 0x01112b, EGCB_Extend },
+ {0x01112c, 0x01112c, EGCB_SpacingMark },
+ {0x01112d, 0x011134, EGCB_Extend },
+ {0x011145, 0x011146, EGCB_SpacingMark },
+ {0x011173, 0x011173, EGCB_Extend },
+ {0x011180, 0x011181, EGCB_Extend },
+ {0x011182, 0x011182, EGCB_SpacingMark },
+ {0x0111b3, 0x0111b5, EGCB_SpacingMark },
+ {0x0111b6, 0x0111be, EGCB_Extend },
+ {0x0111bf, 0x0111c0, EGCB_SpacingMark },
+ {0x0111c2, 0x0111c3, EGCB_Prepend },
+ {0x0111c9, 0x0111cc, EGCB_Extend },
+ {0x01122c, 0x01122e, EGCB_SpacingMark },
+ {0x01122f, 0x011231, EGCB_Extend },
+ {0x011232, 0x011233, EGCB_SpacingMark },
+ {0x011234, 0x011234, EGCB_Extend },
+ {0x011235, 0x011235, EGCB_SpacingMark },
+ {0x011236, 0x011237, EGCB_Extend },
+ {0x01123e, 0x01123e, EGCB_Extend },
+ {0x0112df, 0x0112df, EGCB_Extend },
+ {0x0112e0, 0x0112e2, EGCB_SpacingMark },
+ {0x0112e3, 0x0112ea, EGCB_Extend },
+ {0x011300, 0x011301, EGCB_Extend },
+ {0x011302, 0x011303, EGCB_SpacingMark },
+ {0x01133b, 0x01133c, EGCB_Extend },
+ {0x01133e, 0x01133e, EGCB_Extend },
+ {0x01133f, 0x01133f, EGCB_SpacingMark },
+ {0x011340, 0x011340, EGCB_Extend },
+ {0x011341, 0x011344, EGCB_SpacingMark },
+ {0x011347, 0x011348, EGCB_SpacingMark },
+ {0x01134b, 0x01134d, EGCB_SpacingMark },
+ {0x011357, 0x011357, EGCB_Extend },
+ {0x011362, 0x011363, EGCB_SpacingMark },
+ {0x011366, 0x01136c, EGCB_Extend },
+ {0x011370, 0x011374, EGCB_Extend },
+ {0x011435, 0x011437, EGCB_SpacingMark },
+ {0x011438, 0x01143f, EGCB_Extend },
+ {0x011440, 0x011441, EGCB_SpacingMark },
+ {0x011442, 0x011444, EGCB_Extend },
+ {0x011445, 0x011445, EGCB_SpacingMark },
+ {0x011446, 0x011446, EGCB_Extend },
+ {0x01145e, 0x01145e, EGCB_Extend },
+ {0x0114b0, 0x0114b0, EGCB_Extend },
+ {0x0114b1, 0x0114b2, EGCB_SpacingMark },
+ {0x0114b3, 0x0114b8, EGCB_Extend },
+ {0x0114b9, 0x0114b9, EGCB_SpacingMark },
+ {0x0114ba, 0x0114ba, EGCB_Extend },
+ {0x0114bb, 0x0114bc, EGCB_SpacingMark },
+ {0x0114bd, 0x0114bd, EGCB_Extend },
+ {0x0114be, 0x0114be, EGCB_SpacingMark },
+ {0x0114bf, 0x0114c0, EGCB_Extend },
+ {0x0114c1, 0x0114c1, EGCB_SpacingMark },
+ {0x0114c2, 0x0114c3, EGCB_Extend },
+ {0x0115af, 0x0115af, EGCB_Extend },
+ {0x0115b0, 0x0115b1, EGCB_SpacingMark },
+ {0x0115b2, 0x0115b5, EGCB_Extend },
+ {0x0115b8, 0x0115bb, EGCB_SpacingMark },
+ {0x0115bc, 0x0115bd, EGCB_Extend },
+ {0x0115be, 0x0115be, EGCB_SpacingMark },
+ {0x0115bf, 0x0115c0, EGCB_Extend },
+ {0x0115dc, 0x0115dd, EGCB_Extend },
+ {0x011630, 0x011632, EGCB_SpacingMark },
+ {0x011633, 0x01163a, EGCB_Extend },
+ {0x01163b, 0x01163c, EGCB_SpacingMark },
+ {0x01163d, 0x01163d, EGCB_Extend },
+ {0x01163e, 0x01163e, EGCB_SpacingMark },
+ {0x01163f, 0x011640, EGCB_Extend },
+ {0x0116ab, 0x0116ab, EGCB_Extend },
+ {0x0116ac, 0x0116ac, EGCB_SpacingMark },
+ {0x0116ad, 0x0116ad, EGCB_Extend },
+ {0x0116ae, 0x0116af, EGCB_SpacingMark },
+ {0x0116b0, 0x0116b5, EGCB_Extend },
+ {0x0116b6, 0x0116b6, EGCB_SpacingMark },
+ {0x0116b7, 0x0116b7, EGCB_Extend },
+ {0x01171d, 0x01171f, EGCB_Extend },
+ {0x011720, 0x011721, EGCB_SpacingMark },
+ {0x011722, 0x011725, EGCB_Extend },
+ {0x011726, 0x011726, EGCB_SpacingMark },
+ {0x011727, 0x01172b, EGCB_Extend },
+ {0x01182c, 0x01182e, EGCB_SpacingMark },
+ {0x01182f, 0x011837, EGCB_Extend },
+ {0x011838, 0x011838, EGCB_SpacingMark },
+ {0x011839, 0x01183a, EGCB_Extend },
+ {0x011a01, 0x011a0a, EGCB_Extend },
+ {0x011a33, 0x011a38, EGCB_Extend },
+ {0x011a39, 0x011a39, EGCB_SpacingMark },
+ {0x011a3a, 0x011a3a, EGCB_Prepend },
+ {0x011a3b, 0x011a3e, EGCB_Extend },
+ {0x011a47, 0x011a47, EGCB_Extend },
+ {0x011a51, 0x011a56, EGCB_Extend },
+ {0x011a57, 0x011a58, EGCB_SpacingMark },
+ {0x011a59, 0x011a5b, EGCB_Extend },
+ {0x011a86, 0x011a89, EGCB_Prepend },
+ {0x011a8a, 0x011a96, EGCB_Extend },
+ {0x011a97, 0x011a97, EGCB_SpacingMark },
+ {0x011a98, 0x011a99, EGCB_Extend },
+ {0x011c2f, 0x011c2f, EGCB_SpacingMark },
+ {0x011c30, 0x011c36, EGCB_Extend },
+ {0x011c38, 0x011c3d, EGCB_Extend },
+ {0x011c3e, 0x011c3e, EGCB_SpacingMark },
+ {0x011c3f, 0x011c3f, EGCB_Extend },
+ {0x011c92, 0x011ca7, EGCB_Extend },
+ {0x011ca9, 0x011ca9, EGCB_SpacingMark },
+ {0x011caa, 0x011cb0, EGCB_Extend },
+ {0x011cb1, 0x011cb1, EGCB_SpacingMark },
+ {0x011cb2, 0x011cb3, EGCB_Extend },
+ {0x011cb4, 0x011cb4, EGCB_SpacingMark },
+ {0x011cb5, 0x011cb6, EGCB_Extend },
+ {0x011d31, 0x011d36, EGCB_Extend },
+ {0x011d3a, 0x011d3a, EGCB_Extend },
+ {0x011d3c, 0x011d3d, EGCB_Extend },
+ {0x011d3f, 0x011d45, EGCB_Extend },
+ {0x011d46, 0x011d46, EGCB_Prepend },
+ {0x011d47, 0x011d47, EGCB_Extend },
+ {0x011d8a, 0x011d8e, EGCB_SpacingMark },
+ {0x011d90, 0x011d91, EGCB_Extend },
+ {0x011d93, 0x011d94, EGCB_SpacingMark },
+ {0x011d95, 0x011d95, EGCB_Extend },
+ {0x011d96, 0x011d96, EGCB_SpacingMark },
+ {0x011d97, 0x011d97, EGCB_Extend },
+ {0x011ef3, 0x011ef4, EGCB_Extend },
+ {0x011ef5, 0x011ef6, EGCB_SpacingMark },
+ {0x016af0, 0x016af4, EGCB_Extend },
+ {0x016b30, 0x016b36, EGCB_Extend },
+ {0x016f51, 0x016f7e, EGCB_SpacingMark },
+ {0x016f8f, 0x016f92, EGCB_Extend },
+ {0x01bc9d, 0x01bc9e, EGCB_Extend },
+ {0x01bca0, 0x01bca3, EGCB_Control },
+ {0x01d165, 0x01d165, EGCB_Extend },
+ {0x01d166, 0x01d166, EGCB_SpacingMark },
+ {0x01d167, 0x01d169, EGCB_Extend },
+ {0x01d16d, 0x01d16d, EGCB_SpacingMark },
+ {0x01d16e, 0x01d172, EGCB_Extend },
+ {0x01d173, 0x01d17a, EGCB_Control },
+ {0x01d17b, 0x01d182, EGCB_Extend },
+ {0x01d185, 0x01d18b, EGCB_Extend },
+ {0x01d1aa, 0x01d1ad, EGCB_Extend },
+ {0x01d242, 0x01d244, EGCB_Extend },
+ {0x01da00, 0x01da36, EGCB_Extend },
+ {0x01da3b, 0x01da6c, EGCB_Extend },
+ {0x01da75, 0x01da75, EGCB_Extend },
+ {0x01da84, 0x01da84, EGCB_Extend },
+ {0x01da9b, 0x01da9f, EGCB_Extend },
+ {0x01daa1, 0x01daaf, EGCB_Extend },
+ {0x01e000, 0x01e006, EGCB_Extend },
+ {0x01e008, 0x01e018, EGCB_Extend },
+ {0x01e01b, 0x01e021, EGCB_Extend },
+ {0x01e023, 0x01e024, EGCB_Extend },
+ {0x01e026, 0x01e02a, EGCB_Extend },
+ {0x01e8d0, 0x01e8d6, EGCB_Extend },
+ {0x01e944, 0x01e94a, EGCB_Extend },
+ {0x01f1e6, 0x01f1ff, EGCB_Regional_Indicator },
+ {0x01f3fb, 0x01f3ff, EGCB_Extend },
+ {0x0e0000, 0x0e001f, EGCB_Control },
+ {0x0e0020, 0x0e007f, EGCB_Extend },
+ {0x0e0080, 0x0e00ff, EGCB_Control },
+ {0x0e0100, 0x0e01ef, EGCB_Extend },
+ {0x0e01f0, 0x0e0fff, EGCB_Control }
+};
diff --git a/ext/mbstring/oniguruma/src/unicode_fold1_key.c b/ext/mbstring/oniguruma/src/unicode_fold1_key.c
index 21512118e6..0f4712addb 100644
--- a/ext/mbstring/oniguruma/src/unicode_fold1_key.c
+++ b/ext/mbstring/oniguruma/src/unicode_fold1_key.c
@@ -1,21 +1,47 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold1_key unicode_fold1_key.gperf */
/* Computed positions: -k'1-3' */
/* This gperf source file was generated by make_unicode_fold_data.py */
+
+/*-
+ * Copyright (c) 2017-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
#include <string.h>
#include "regenc.h"
-#define TOTAL_KEYWORDS 1196
+#define TOTAL_KEYWORDS 1346
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
-#define MIN_HASH_VALUE 6
-#define MAX_HASH_VALUE 1304
-/* maximum key range = 1299, duplicates = 0 */
+#define MIN_HASH_VALUE 3
+#define MAX_HASH_VALUE 1765
+/* maximum key range = 1763, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -30,2517 +56,2929 @@ hash(OnigCodePoint codes[])
{
static const unsigned short asso_values[] =
{
- 7, 5, 93, 4, 1, 16, 893, 1162, 891, 1085,
- 889, 380, 8, 376, 1101, 332, 1100, 329, 1099, 3,
- 874, 943, 870, 914, 87, 322, 1095, 317, 1093, 579,
- 2, 11, 1054, 13, 956, 902, 31, 775, 632, 343,
- 619, 330, 611, 323, 0, 27, 850, 311, 599, 309,
- 849, 1240, 862, 1226, 445, 1220, 591, 888, 583, 1253,
- 1091, 1217, 1087, 1079, 1074, 419, 858, 845, 441, 304,
- 400, 842, 394, 1067, 389, 1053, 383, 1211, 218, 1206,
- 202, 436, 194, 1202, 181, 1183, 153, 1177, 376, 1166,
- 166, 56, 323, 0, 571, 112, 834, 877, 1035, 609,
- 123, 901, 145, 684, 115, 933, 364, 1163, 345, 603,
- 311, 144, 573, 162, 563, 1188, 260, 964, 240, 1174,
- 476, 1034, 453, 814, 669, 454, 815, 799, 656, 1242,
- 963, 113, 806, 270, 561, 304, 795, 268, 1031, 581,
- 1157, 182, 44, 467, 1154, 1305, 1042, 1305, 1028, 387,
- 869, 1305, 362, 1305, 1142, 1305, 639, 234, 1060, 1305,
- 1131, 381, 190, 194, 780, 185, 140, 34, 209, 173,
- 1021, 369, 1017, 145, 1150, 834, 788, 820, 1011, 116,
- 773, 658, 1004, 1241, 767, 64, 762, 648, 756, 510,
- 999, 487, 750, 254, 740, 625, 733, 662, 728, 992,
- 720, 713, 533, 986, 515, 169, 427, 702, 266, 693,
- 687, 644, 337, 963, 556, 954, 524, 947, 329, 942,
- 288, 931, 229, 925, 104, 1143, 80, 908, 48, 1138,
- 71, 1133, 59, 1131, 295, 605, 276, 525, 547, 1107,
- 540, 406, 504, 156, 920, 93, 493, 84, 676, 34,
- 247, 4, 1128, 14, 18, 32, 220, 2, 131
+ 4, 2, 147, 16, 1, 13, 1233, 682, 1225, 643,
+ 1208, 95, 9, 89, 1391, 82, 8, 80, 1383, 6,
+ 1201, 638, 1191, 602, 151, 75, 1377, 68, 1374, 464,
+ 0, 11, 1369, 3, 1352, 278, 23, 424, 660, 320,
+ 640, 20, 635, 34, 5, 29, 860, 27, 630, 0,
+ 854, 1352, 870, 1336, 470, 1322, 623, 1319, 610, 230,
+ 1184, 1309, 1159, 779, 1042, 980, 836, 844, 456, 597,
+ 285, 158, 590, 477, 583, 42, 576, 1442, 447, 1119,
+ 440, 922, 426, 1434, 400, 1433, 327, 1428, 567, 1417,
+ 386, 1443, 458, 856, 704, 1435, 1010, 66, 232, 413,
+ 204, 1417, 226, 1412, 190, 1095, 379, 1253, 198, 1211,
+ 175, 209, 561, 362, 528, 1296, 257, 1169, 240, 1291,
+ 508, 1163, 484, 1228, 699, 735, 831, 488, 679, 513,
+ 420, 639, 1148, 83, 683, 806, 1152, 77, 1170, 537,
+ 1213, 3, 1285, 166, 1410, 1766, 1394, 1766, 1206, 460,
+ 757, 1766, 367, 1766, 1339, 1766, 908, 57, 1321, 1766,
+ 384, 345, 686, 52, 1145, 40, 218, 180, 1135, 33,
+ 1292, 276, 1282, 14, 1408, 719, 1128, 701, 1275, 129,
+ 1116, 610, 1255, 1343, 1109, 874, 1097, 448, 823, 346,
+ 877, 181, 1089, 0, 1077, 786, 1080, 768, 1068, 1180,
+ 1060, 1056, 1048, 798, 811, 177, 1045, 1022, 1030, 993,
+ 1020, 789, 353, 990, 548, 982, 517, 970, 334, 765,
+ 166, 753, 138, 743, 100, 963, 87, 720, 49, 957,
+ 75, 951, 62, 411, 126, 945, 113, 1266, 317, 935,
+ 304, 925, 293, 1244, 714, 912, 275, 490, 263, 469,
+ 395, 1297, 896, 208, 887, 80, 542, 11, 246
};
return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
int
-unicode_fold1_key(OnigCodePoint codes[])
+onigenc_unicode_fold1_key(OnigCodePoint codes[])
{
- static const int wordlist[] =
+ static const short int wordlist[] =
{
- -1, -1, -1, -1, -1, -1,
-
- 3240,
-
- 2547,
-
- 1016,
+ -1, -1, -1,
- 1772,
+ 3408,
- 1712,
+ 1900,
- 1751,
+ 1861,
- 231,
+ 210,
171,
- 210,
+ 3393,
- 884,
+ 1921,
- 165,
+ 1687,
- 1724,
+ 231,
- 147,
+ 1879,
+
+ 1873,
- 2085,
+ 189,
183,
- 2106,
+ 2234,
- 2082,
+ 1312,
- 1322,
+ 1273,
- 1262,
+ 165,
- 1301,
+ 789,
- 1253,
+ 2255,
- 2073,
+ 1333,
- 153,
+ 1591,
- 887,
+ 1627,
- 493,
+ 1291,
- 1274,
+ 1285,
- 156,
+ 1909,
- 3243,
+ 2237,
- 2088,
+ 219,
- 2748,
+ 3402,
- 2826,
+ 2231,
- 2793,
+ 3396,
- 2745,
+ 2975,
- 3234,
+ 2897,
- 1760,
+ 2291,
- 2985,
+ 2984,
- 2772,
+ 3390,
- 219,
+ 2276,
- 1460,
+ 2942,
- 2829,
+ 1321,
- 159,
+ 2933,
- 2835,
+ 2921,
- 144,
+ 1615,
- 2127,
+ 2978,
- 2751,
+ 3486,
- 2601,
+ 2900,
- 1085,
+ 971,
- 1920,
+ 273,
- 1310,
+ 2894,
- 2730,
+ 1603,
- 1214,
+ 2642,
- 2034,
+ 3537,
- 1643,
+ 2183,
- 854,
+ 1225,
459,
- 3456,
+ 2993,
80,
- 2541,
+ 2879,
- 1010,
+ 1792,
- 2844,
+ 3717,
- 2283,
+ 1510,
- 1220,
+ 1597,
- 2040,
+ 378,
- 1655,
+ 2432,
- 860,
+ 3549,
+
+ 2189,
+
+ 1231,
465,
- 3468,
+ 857,
92,
- 1514,
+ 1038,
- 756,
+ 1804,
- 405,
+ 3729,
- 2286,
+ 1522,
- 2733,
+ 2708,
- 1217,
+ 2543,
- 2037,
+ 2435,
- 1649,
+ 3543,
- 857,
+ 2186,
+
+ 1228,
462,
- 3462,
+ 863,
86,
- 2394,
+ 2882,
- 2727,
+ 1798,
- 1211,
+ 3723,
- 2031,
+ 1516,
- 1637,
+ 159,
- 851,
+ 2555,
+
+ 3531,
+
+ 2180,
+
+ 1222,
456,
- 3450,
+ 1456,
- 1700,
+ 860,
- 3228,
+ 2876,
- 1742,
+ 1786,
- 2406,
+ 3711,
- 138,
+ 1504,
- 201,
+ 1444,
- 559,
+ 2966,
- 502,
+ 2549,
+
+ 3525,
+
+ 2177,
+
+ 1219,
+
+ 453,
+
+ 854,
+
+ 2960,
+
+ 2873,
+
+ 1780,
+
+ 3705,
+
+ 1498,
+
+ 2936,
+
+ 2537,
+
+ 2930,
+
+ 3561,
+
+ 2195,
+
+ 1237,
+
+ 471,
+
+ 851,
+
+ 105,
+
+ 2924,
+
+ 1816,
+
+ 3741,
+
+ 1534,
+
+ 3333,
+
+ 2531,
+
+ 2918,
+
+ 3555,
+
+ 2192,
+
+ 1234,
+
+ 468,
+
+ 869,
+
+ 99,
+
+ 399,
+
+ 1810,
+
+ 3735,
+
+ 1528,
+
+ 1645,
+
+ 2567,
+
+ 3519,
+
+ 2174,
+
+ 1216,
+
+ 2417,
+ -1,
+
+ 866,
+
+ 2870,
+
+ 1774,
+
+ 3699,
+
+ 1492,
541,
- 1694,
+ 502,
- 878,
+ 2561,
+
+ 694,
- 2121,
+ 1891,
- 3507,
+ 559,
- 132,
+ 201,
+
+ 848,
+
+ 520,
514,
- 2400,
+ 3474,
+ -1,
- 1292,
+ 959,
- 2724,
+ 267,
- 1208,
+ 2525,
- 2028,
+ 2270,
- 1631,
+ 2630,
- 848,
+ 1303,
- 453,
+ 3513,
- 3444,
+ 2171,
- 2388,
+ 1213,
- 2553,
+ 366,
- 1022,
+ 2333,
+ -1,
- 2808,
+ 2867,
- 2565,
+ 1768,
- 1040,
+ 3693,
- 1863,
+ 1486,
- 354,
+ 2021,
- 1496,
+ 1060,
+
+ 324,
+
+ 1189,
+
+ 27,
+
+ 2957,
+ -1,
+
+ 845,
+
+ 1723,
+
+ 3648,
+
+ 3135,
+
+ 1609,
+
+ 1681,
+
+ 1375,
+
+ 2519,
+
+ 2012,
+
+ 1051,
315,
- 399,
+ 827,
12,
- 2562,
+ 2714,
+ -1,
- 1034,
+ 782,
- 1856,
+ 2018,
- 2217,
+ 1057,
- 2268,
+ 321,
- 309,
+ 2366,
- 1427,
+ 4065,
- 0,
+ 1357,
- 1346,
+ 2005,
- 1259,
+ 1044,
- 2079,
+ 309,
- 2205,
+ 3612,
- 2382,
+ 0,
- 499,
+ 2711,
+ -1,
- 694,
+ 1369,
- 168,
+ 153,
+
+ 31,
- 1334,
+ 2726,
- 2637,
+ 2354,
- 1121,
+ 1585,
- 1941,
+ 1345,
- 1457,
+ 2090,
- 2577,
+ 1132,
387,
+ -1,
- 1037,
+ 1378,
- 1860,
+ 2786,
- 1478,
+ 1606,
+ -1,
- 3072,
+ 2009,
+
+ 1047,
312,
- 31,
+ 3438,
6,
- 2526,
+ 919,
- 995,
+ 2002,
- 1835,
+ 1041,
- 2211,
+ 306,
- 3066,
+ 2594,
- 288,
+ 3864,
- 1688,
+ 2360,
- 1367,
+ 3321,
- 1340,
+ 1351,
- 3501,
+ 2033,
- 126,
+ 1072,
- 2193,
+ 336,
- 3603,
+ 2450,
- 2538,
+ 52,
- 1007,
+ 2729,
- 1841,
+ 2228,
- 37,
+ 1270,
- 1178,
+ 499,
- 294,
+ 3858,
- 1574,
+ 168,
- 824,
+ 2384,
+ -1,
- 3138,
+ 1399,
- 3387,
+ 1594,
+ -1,
- 1466,
+ 715,
- 2199,
+ 2030,
- 1373,
+ 1069,
- 3069,
+ 333,
- 532,
+ 2444,
- 2520,
+ 46,
- 989,
+ 3597,
- 1832,
+ 2213,
- 2949,
+ 1255,
- 3213,
+ 487,
+ -1,
- 285,
+ 141,
- 3045,
+ 2378,
- 1454,
+ 1852,
- 3597,
+ 1393,
- 2631,
+ 1570,
+ -1,
- 1115,
+ 712,
- 2190,
+ 3591,
- 3354,
+ 2210,
- 2514,
+ 1252,
- 983,
+ 483,
- 1829,
+ 393,
- 1448,
+ 135,
- 3225,
+ 2891,
- 282,
+ 1846,
- 3051,
+ 1621,
- 3348,
+ 1564,
- 2508,
+ 3471,
- 977,
+ 1960,
- 1826,
+ 956,
- 631,
+ 3852,
+ -1,
- 676,
+ 2273,
- 279,
+ 2627,
- 643,
+ 884,
- 2640,
+ 3579,
- 1124,
+ 2204,
- 1944,
+ 1246,
- 1463,
+ 480,
- 3207,
+ 2330,
- 390,
+ 123,
- 3042,
+ 532,
- 637,
+ 1834,
- 3342,
+ 3759,
- 2502,
+ 1552,
+ -1,
- 971,
+ 3573,
- 1823,
+ 2201,
- 1256,
+ 1243,
- 2076,
+ 477,
- 276,
+ 2990,
- 3132,
+ 117,
- 496,
+ 878,
- 3201,
+ 1828,
- 162,
+ 3753,
- 3039,
+ 1546,
- 2721,
+ 700,
+ -1,
- 1205,
+ 3846,
- 2025,
+ 3567,
- 1625,
+ 2198,
- 845,
+ 1240,
- 3195,
+ 474,
- 3438,
+ 875,
- 3036,
+ 111,
658,
- 640,
+ 1822,
- 378,
+ 3747,
- 2580,
+ 1540,
- 1061,
+ 3801,
- 1884,
+ 1984,
- 3141,
+ 1005,
- 712,
+ 288,
+ -1,
- 336,
+ 2285,
- 613,
+ 2675,
- 52,
+ 872,
- 1247,
+ 2168,
- 2067,
+ 1210,
+ -1,
- 3189,
+ 643,
- 2235,
+ 2342,
- 3033,
+ 2864,
- 2301,
+ 1762,
- 3540,
+ 3687,
- 2919,
+ 1480,
+ -1, -1,
- 1388,
+ 652,
- 1538,
+ 3261,
- 786,
+ 381,
- 622,
+ 3900,
- 2376,
+ 3002,
- 1058,
+ 842,
- 1881,
+ 637,
- 2913,
+ 1675,
- 709,
+ 2159,
- 333,
+ 1201,
- 2700,
+ 3231,
- 46,
+ 661,
- 2004,
+ 2513,
- 1583,
+ 2855,
- 833,
+ 1744,
- 2229,
+ 3669,
- 3396,
+ 1462,
- 2295,
+ 775,
- 607,
+ 3882,
- 691,
+ 2426,
- 1382,
+ 3318,
- 1226,
+ 37,
- 2046,
+ 2084,
- 1667,
+ 1111,
- 866,
+ 372,
- 471,
+ 3222,
- 3480,
+ 3894,
- 105,
+ 2765,
- 1445,
+ 640,
+ -1,
- 2916,
+ 1384,
- 1433,
+ 2495,
- 601,
+ 3870,
- 2718,
+ 3228,
- 1202,
+ 2015,
- 2022,
+ 1054,
- 1619,
+ 318,
- 842,
+ 3903,
- 2892,
+ 18,
- 3432,
+ 3216,
- 598,
+ 1123,
- 1223,
+ 1990,
- 2043,
+ 1017,
- 1661,
+ 294,
- 863,
+ 2777,
- 468,
+ 2372,
- 3474,
+ 2687,
- 99,
+ 1363,
- 3315,
+ 3078,
- 2475,
+ 3603,
- 944,
+ 2216,
- 2898,
+ 1258,
- 2418,
+ 2348,
- 3255,
+ 3288,
- 264,
+ 3876,
- 3249,
+ 1981,
- 595,
+ 999,
- 1049,
+ 285,
- 1872,
+ 1576,
- 3591,
+ 667,
- 2178,
+ 2669,
- 324,
+ 3219,
- 2340,
+ 3366,
- 27,
+ 3069,
- 2370,
+ 3999,
- 1439,
+ 3552,
- 2889,
+ 2339,
- 3237,
+ 3213,
- 2544,
+ 3924,
- 1013,
+ 3984,
- 1844,
+ 96,
- 2412,
+ 3075,
- 1364,
+ 1807,
- 297,
+ 3732,
- 2715,
+ 1525,
- 1199,
+ 2051,
- 2019,
+ 1090,
- 1613,
+ 3063,
- 839,
+ 2486,
- 2886,
+ 2351,
- 3426,
+ 3507,
- 3162,
+ 1978,
- 2706,
+ 993,
- 1190,
+ 282,
- 2010,
+ 3975,
- 1595,
+ 3918,
- 2142,
+ 2663,
+ -1,
- 2883,
+ 1435,
- 3408,
+ 2558,
- 2817,
+ 2279,
- 3081,
+ 3993,
+ -1,
- 1046,
+ 3987,
- 1869,
+ 3501,
- 2277,
+ 1975,
- 2811,
+ 987,
- 321,
+ 279,
- 3549,
+ 3981,
- 3606,
+ 3066,
- 664,
+ 2657,
- 2136,
+ 3495,
- 3231,
+ 1972,
- 2787,
+ 981,
- 3054,
+ 276,
- 2880,
+ 3060,
+ -1,
- 2781,
+ 2651,
- 2364,
+ 2996,
- 1358,
+ 1669,
- 2616,
+ 3465,
- 1100,
+ 1957,
- 1935,
+ 947,
- 1043,
+ 1993,
- 1866,
+ 1023,
- 372,
+ 297,
- 2346,
+ 2621,
- 318,
+ 369,
- 2853,
+ 2693,
- 18,
+ 765,
- 1472,
+ 3171,
- 3585,
+ 3378,
- 393,
+ 2324,
- 2223,
+ 3600,
- 2532,
+ 3423,
- 1001,
+ 1936,
- 1838,
+ 903,
- 3078,
+ 243,
- 1352,
+ 144,
- 291,
+ 613,
- 3336,
+ 2579,
+
+ 3480,
- 2496,
+ 1573,
965,
- 1820,
+ 270,
- 381,
+ 3360,
- 2196,
+ 2306,
- 3330,
+ 2636,
- 2490,
+ 3840,
- 959,
+ 2039,
- 1817,
+ 1078,
- 369,
+ 342,
- 3324,
+ 2462,
- 2484,
+ 65,
- 953,
+ 3594,
- 1814,
+ 348,
- 586,
+ 2477,
- 3075,
+ 709,
- 3318,
+ 2972,
- 2478,
+ 138,
- 947,
+ 2396,
- 1811,
+ 1849,
- 2775,
+ 1411,
- 655,
+ 1567,
- 2187,
+ 2411,
- 2739,
+ 718,
- 2769,
+ 1426,
- 3219,
+ 3822,
- 1682,
+ 3017,
- 3048,
+ 724,
+ -1,
- 2181,
+ 3354,
- 3495,
+ 3195,
- 120,
+ 2036,
- 3579,
+ 1075,
- 3183,
+ 339,
- 625,
+ 2456,
- 3030,
+ 59,
+ -1, -1,
- 3303,
+ 351,
- 2463,
+ 2483,
- 932,
+ 2165,
- 3177,
+ 1207,
- 3561,
+ 2390,
- 3027,
-
- 258,
- -1,
+ 3348,
- 3171,
+ 1405,
- 2697,
+ 2861,
- 3024,
+ 1756,
- 2001,
+ 3681,
- 1577,
+ 1474,
- 827,
+ 1432,
- 3165,
+ 3342,
- 3390,
+ 2027,
- 3021,
+ 1066,
- 3351,
+ 330,
- 2511,
+ 706,
- 980,
+ 40,
- 652,
+ 622,
-1,
+ 3909,
+
3312,
+ -1,
- 2472,
+ 3384,
- 941,
+ 363,
- 1808,
+ 2507,
- 3270,
+ 1387,
- 2430,
+ 2225,
- 899,
+ 1267,
+
+ 496,
+
+ 3042,
+
+ 162,
+
+ 607,
- 1787,
+ 2162,
+
+ 1204,
+
+ 1588,
-1,
- 2289,
+ 3888,
- 243,
+ 2858,
+
+ 1750,
+
+ 3675,
- 2928,
+ 1468,
- 2175,
+ 3327,
-1,
- 1067,
+ 3225,
- 1890,
+ 634,
- 2157,
+ 2024,
- 715,
+ 1063,
- 342,
+ 327,
- 345,
+ 3279,
- 65,
+ 34,
- 74,
+ 3201,
+
+ 1987,
+
+ 1011,
+
+ 291,
-1,
- 2901,
+ 2501,
- 2247,
+ 2681,
- 2256,
+ 601,
- 2313,
+ 1381,
- 2322,
+ 3489,
- 3198,
+ 1969,
- 1400,
+ 974,
- 1409,
+ 2345,
-1,
- 366,
+ 3192,
- 3159,
+ 2645,
- 706,
+ 3483,
- 3018,
+ 1966,
- 592,
+ 968,
- 1064,
+ 3114,
- 1887,
+ 3867,
- 2997,
+ 598,
- 700,
+ 2639,
- 339,
+ 3477,
- 589,
+ 1963,
- 59,
+ 962,
-1,
- 2925,
- -1,
+ 3960,
- 2241,
+ 595,
- 3090,
+ 2633,
- 2307,
+ 3468,
- 1532,
+ 3072,
- 779,
+ 951,
- 1394,
+ 264,
- 2742,
+ 3246,
- 1241,
+ 2336,
- 2061,
+ 2624,
- 1697,
+ 3309,
- 881,
+ 3048,
- 483,
+ 625,
+
+ 3189,
+
+ 703,
+
+ 2327,
+
+ 3435,
+
+ 1942,
+
+ 916,
+
+ 249,
+
+ 2267,
-1,
- 135,
+ 2591,
- 3111,
+ 1651,
+
+ 574,
- 2964,
+ 3039,
-1,
- 2922,
+ 3186,
- 1235,
+ 2318,
- 2055,
+ 3429,
- 1685,
+ 1939,
- 875,
+ 910,
- 480,
+ 246,
- 3498,
+ 745,
- 123,
+ 3183,
- 3543,
+ 2585,
- 1526,
+ 3405,
- 772,
+ 1927,
- 2694,
+ 2954,
- 2895,
+ 237,
+ -1,
- 1998,
+ 2312,
- 1571,
+ 1918,
- 820,
+ 3168,
- 421,
+ 228,
- 3384,
+ 3204,
- 3156,
+ 4029,
- 2877,
+ 1915,
- 2712,
+ 354,
- 1196,
+ 225,
- 2016,
+ 1339,
- 1607,
+ 3036,
+ -1,
- 1670,
+ 2294,
- 2874,
+ 3372,
- 3420,
+ 1330,
- 3483,
+ 2261,
- 108,
+ 3147,
- 2691,
+ 2288,
- 2871,
+ 1438,
- 1995,
+ 1327,
- 1565,
+ 2249,
- 814,
+ 673,
- 574,
+ 3336,
- 3378,
+ 3936,
- 2868,
+ 3033,
- 1232,
+ 3011,
- 2052,
+ 1912,
- 1679,
+ 3951,
- 872,
+ 222,
- 477,
+ 3330,
- 3492,
+ 3008,
- 117,
+ 3029,
- 1229,
+ 3834,
- 2049,
+ 2948,
- 1673,
+ 3243,
- 869,
+ 3005,
- 474,
+ 3324,
- 3486,
+ 2282,
- 111,
+ 2912,
- 2358,
+ 1324,
- 2709,
+ 3014,
- 1193,
+ 664,
- 2013,
+ 3051,
- 1601,
+ 3315,
+ -1,
- 697,
+ 2048,
- 2589,
+ 1087,
- 3414,
+ 3930,
- 1908,
+ 2480,
- 1055,
+ 2057,
- 1878,
+ 688,
357,
- -1,
- 330,
+ 3957,
- 670,
+ 1126,
- 40,
+ 2738,
- 2550,
+ 2999,
- 1019,
+ 2414,
- 1847,
+ 2780,
- 1052,
+ 1429,
- 1875,
+ 2243,
- 300,
+ 4062,
- 1436,
+ 727,
- 327,
+ 1447,
- 1376,
+ 3828,
+ -1,
- 34,
+ 2042,
- 2865,
+ 1081,
- 3282,
+ 3912,
- 2442,
+ 2468,
- 911,
+ 71,
- 1793,
+ 1996,
- 363,
+ 1029,
- 2352,
+ 300,
- 249,
+ 1639,
- 1370,
+ 3237,
- 3276,
+ 2699,
- 2436,
+ 2402,
- 905,
+ 2906,
- 1790,
+ 1417,
- 2169,
+ 3585,
- 3102,
+ 2207,
- 246,
+ 1249,
+ -1,
- 3087,
+ 736,
- 3252,
- -1,
+ 129,
- 3537,
+ 3534,
- 1778,
+ 1840,
- 2163,
+ 3765,
- 2574,
+ 1558,
- 237,
+ 592,
- 3057,
+ 77,
- 2823,
+ 1633,
- 3084,
+ 1789,
- 1664,
+ 3714,
- 3573,
+ 1507,
- 24,
+ 3969,
- 3477,
+ 589,
- 102,
+ 2429,
+ -1, -1,
- 1769,
+ 3906,
+
+ 730,
-1,
- 1328,
+ 345,
- 228,
+ 2471,
- 3003,
+ 74,
+ -1,
- 3531,
+ 3234,
- 1361,
+ 3522,
- 2202,
+ 2540,
- 1766,
+ 586,
- 2145,
- -1,
+ 450,
- 225,
+ 2405,
- 3000,
+ 3198,
- 2862,
+ 1420,
- 1319,
+ 1777,
- 1544,
+ 3702,
- 792,
+ 1495,
- 2139,
+ 3516,
+ -1, -1,
- 3357,
- -1,
+ 447,
- 2991,
+ 3180,
- 1763,
+ 2081,
- 1316,
+ 1108,
- 2415,
+ 1771,
- 222,
+ 3696,
- 2859,
+ 1489,
- 2622,
+ 2762,
- 1106,
+ 3177,
- 3567,
+ 3510,
-1,
- 2133,
+ 2528,
- 375,
+ 444,
+ -1,
- 2982,
+ 1177,
- 2856,
+ 3174,
- 1592,
+ 1765,
- 1313,
+ 3690,
- 432,
+ 1483,
- 3405,
+ 1699,
- 1520,
+ 3624,
- 762,
+ 2522,
+
+ 565,
+
+ 3450,
- 2979,
+ 3081,
+
+ 931,
+
+ 255,
+
+ 556,
+ -1,
+
+ 2606,
+
+ 3045,
679,
- 2274,
+ 553,
- 661,
+ 2516,
+ -1,
- 1076,
+ 3153,
- 1899,
+ 432,
- 2850,
+ 1693,
- 724,
+ 3618,
- 1502,
+ 3026,
- 742,
+ 1741,
- 1166,
+ 3666,
- 628,
+ 1459,
+ -1,
- 1550,
+ 1186,
- 2976,
+ 2423,
- 2265,
+ 3023,
- 3363,
+ 795,
- 2331,
+ 3150,
- 1070,
+ 1717,
- 1893,
+ 3642,
+ -1,
- 1418,
+ 550,
- 3123,
+ 3020,
- 685,
+ 2489,
- 2343,
+ 3141,
- 71,
+ 2147,
- 1244,
+ 2492,
- 2064,
+ 421,
- 1703,
+ 820,
- 2253,
+ 3132,
- 487,
+ 2843,
- 2319,
+ 1720,
- 141,
- -1,
+ 3645,
- 1406,
- -1,
+ 1450,
- 2703,
+ 3129,
+ -1, -1,
- 1187,
+ 2123,
- 2007,
+ 1165,
- 1589,
+ 408,
- 9,
+ 676,
- 565,
+ 823,
- 3402,
+ 2819,
- 1184,
+ 1672,
- 2214,
+ 682,
- 1586,
+ 2045,
- 836,
+ 1084,
- 429,
+ 3963,
- 3399,
+ 2474,
- 1343,
+ 3459,
- 2937,
+ 1954,
- 634,
+ 941,
+ -1,
- 1181,
+ 770,
- 556,
+ 3126,
- 1580,
+ 2615,
- 830,
+ 2408,
- 425,
+ 3462,
- 3393,
+ 1423,
+
+ 944,
+
+ 261,
+
+ 721,
-1,
- 3510,
+ 2618,
+ -1,
+
+ 628,
- 2904,
+ 3954,
- 553,
+ 3411,
+
+ 1930,
+
+ 2321,
- 2931,
+ 240,
- 1172,
+ 1026,
-1,
- 1562,
+ 3399,
- 810,
+ 1924,
- 417,
+ 2696,
- 3375,
+ 234,
- 2688,
+ 3252,
-1,
- 1992,
+ 4056,
- 1559,
+ 3282,
- 807,
+ 1342,
+ -1,
- 550,
+ 3417,
- 3372,
+ 1933,
+
+ 896,
+
+ 3942,
+
+ 1336,
-1,
- 2685,
+ 2573,
- 3558,
+ 405,
- 1989,
+ 2126,
- 1553,
+ 1168,
- 800,
+ 4014,
- 2682,
+ 1663,
- 3366,
+ 2300,
- 1986,
+ 2822,
- 1547,
+ 1678,
- 796,
+ 3207,
-1,
- 3360,
+ 3615,
- 2679,
+ 2222,
- 1163,
+ 1264,
- 1983,
+ 493,
- 1541,
+ 759,
- 789,
+ 156,
- 414,
- -1,
+ 3855,
- 3516,
+ 779,
-1,
- 673,
+ 3609,
- 2676,
+ 2219,
- 1160,
+ 1261,
- 1980,
+ 490,
+ -1,
- 1535,
+ 150,
- 783,
+ 3087,
- 411,
+ 3849,
- 2670,
+ 890,
- 1154,
+ 1582,
+ -1, -1, -1,
- 1974,
+ 3945,
- 1523,
+ 1117,
- 767,
+ 375,
- 408,
+ 3588,
+ -1,
- 2667,
+ 2771,
- 1151,
+ 3843,
- 1971,
+ 3240,
- 1517,
+ 132,
- 759,
+ 3777,
- 2664,
+ 1843,
- 1148,
+ 3768,
- 1968,
+ 1561,
- 1511,
+ 3504,
- 752,
+ 3054,
- 3555,
+ 990,
- 2658,
+ 3576,
- 1142,
+ 2438,
- 1962,
+ 577,
- 1499,
+ 2660,
- 739,
+ 881,
- 3552,
+ 120,
- 2970,
+ 2888,
- 2634,
+ 1831,
- 1118,
+ 3756,
- 1938,
+ 1549,
- 1451,
+ 3570,
- 2271,
+ 3771,
- 384,
+ 3387,
- 2130,
+ 3267,
- 3546,
+ 3819,
- 2652,
+ 114,
- 1136,
+ 2885,
- 1956,
+ 1825,
- 1487,
+ 3750,
- 730,
+ 1543,
- 396,
+ 3558,
+ -1, -1,
+
+ 3795,
-1,
- 2592,
+ 102,
- 3153,
+ 3546,
- 1911,
+ 1813,
- 3528,
+ 3738,
+
+ 1531,
-1,
- 360,
+ 89,
- 3150,
+ 3540,
- 2847,
+ 1801,
- 721,
+ 3726,
- 348,
+ 1519,
- 3525,
+ 3798,
+
+ 83,
- 2586,
+ 3528,
+
+ 1795,
+
+ 3720,
+
+ 1513,
+ -1, -1,
- 1082,
+ 2564,
- 1905,
+ 1783,
+
+ 3708,
+
+ 1501,
+
+ 441,
-1,
- 2262,
+ 2552,
+
+ 3111,
- 1442,
+ 1759,
- 2328,
+ 3684,
- 3519,
+ 1477,
- 3135,
+ 3456,
+
+ 2546,
- 1415,
+ 937,
- 1073,
+ 258,
- 1896,
+ 580,
- 3513,
+ 438,
- 718,
+ 2612,
+
+ 2534,
-1,
- 68,
+ 1753,
- 1430,
+ 3678,
- 1490,
+ 1471,
- 733,
+ 583,
- 2250,
+ 435,
- 2259,
+ 2510,
- 2316,
+ 1195,
- 2325,
+ 429,
- 3105,
+ 1747,
- 1403,
+ 3672,
- 1412,
- -1,
+ 1465,
- 3093,
+ 1735,
- 2556,
+ 3660,
- 1025,
+ 568,
- 1850,
+ 3351,
- 1484,
+ 3306,
- 727,
+ 3948,
- 303,
+ 2504,
- 3099,
+ 4059,
- 3321,
+ 562,
+ -1,
- 2481,
+ 839,
- 950,
+ 1999,
- 3309,
+ 1035,
- 2469,
+ 303,
- 938,
+ 2498,
+ -1,
- 267,
+ 2705,
- 3258,
+ 3165,
- 3246,
+ 571,
+ -1,
- 261,
+ 4026,
- 1781,
+ 2156,
- 1775,
+ 1198,
+ -1,
- 2184,
+ 1192,
- 240,
+ 425,
- 234,
+ 2852,
- 2172,
+ 1738,
- 3306,
+ 3663,
- 2466,
+ 1729,
- 935,
+ 3654,
- 1805,
+ 2153,
+ -1,
- 3264,
+ 4020,
+ -1,
- 2424,
+ 3144,
- 893,
+ 2849,
- 1784,
+ 1732,
- 1331,
+ 3657,
- 1325,
- -1,
+ 833,
- 3060,
+ 3996,
- 2613,
+ 3138,
- 1097,
+ 3453,
- 1932,
+ 1951,
- 1739,
+ 934,
- 2151,
+ 3978,
- 3168,
+ 2150,
- 198,
+ 836,
- 1736,
+ 2609,
- 2559,
+ 2144,
- 1028,
+ 3972,
- 195,
- -1,
+ 2846,
- 2115,
- -1,
+ 1726,
- 2994,
+ 3651,
- 2988,
+ 2840,
- 2109,
+ 1714,
- 1289,
+ 3639,
+ -1,
- 3279,
+ 1183,
- 2439,
+ 417,
+ -1,
- 908,
+ 2141,
- 1286,
+ 830,
- 1721,
+ 1711,
- 3015,
+ 3636,
- 1718,
+ 817,
- 180,
+ 2837,
- 1715,
+ 1708,
- 177,
+ 3633,
- 2802,
+ 2138,
- 174,
+ 3966,
+ -1, -1,
- 2166,
+ 813,
- 2103,
+ 2834,
- 2796,
+ 1702,
- 2097,
+ 3627,
- 3117,
+ 810,
+
+ 2132,
+
+ 1174,
- 2091,
+ 414,
- 1271,
+ 2135,
-1,
- 1268,
+ 2828,
- 3,
+ 1690,
- 1265,
- -1,
+ 803,
- 1640,
+ 2831,
- 2208,
+ 1696,
- 2124,
+ 3621,
- 3453,
+ 3273,
- 77,
+ 2129,
- 2766,
+ 1171,
- 1337,
+ 411,
+ -1,
+
+ 792,
- 2760,
+ 2825,
- 2280,
+ 1684,
- 2754,
+ 799,
- 1238,
+ 2120,
- 2058,
+ 1162,
- 1691,
+ 15,
+
+ 2717,
-1,
- 2118,
+ 2816,
- 3504,
+ 1666,
+ -1,
- 129,
+ 786,
- 1628,
+ 2369,
+ -1,
- 2841,
+ 1360,
- 450,
+ 2117,
- 3441,
+ 1159,
-1,
- 2568,
+ 3861,
- 1622,
+ 762,
- 2940,
+ 2813,
- 447,
+ 1660,
- 3435,
+ 2111,
- 583,
+ 1153,
- 2391,
+ 3498,
- 15,
+ 3837,
- 2805,
+ 984,
- 568,
+ 2807,
- 562,
+ 1648,
+ -1,
- 2220,
+ 2654,
- 1616,
+ 755,
- 2934,
+ 3120,
- 444,
+ 2420,
- 3429,
+ 2105,
- 1349,
+ 1147,
- 1610,
+ 396,
- 580,
+ 3831,
- 441,
+ 742,
- 3423,
+ 2801,
- 2112,
+ 1636,
- 571,
+ 2093,
- 2379,
+ 1135,
- 1604,
+ 390,
+ -1,
- 1757,
+ 3825,
- 438,
+ 2789,
- 3417,
+ 1612,
- 216,
+ 3813,
- 2373,
+ 1858,
- 529,
+ 733,
- 1079,
+ 2087,
- 1902,
+ 1129,
- 1598,
+ 384,
- 526,
+ 2054,
- 435,
+ 1093,
- 3411,
+ 2783,
- 2799,
+ 1600,
- 49,
+ 2060,
- 1307,
+ 2735,
- 2367,
+ 360,
+ -1, -1,
- 2907,
+ 2741,
- 2232,
+ 3447,
- 2337,
+ 1948,
- 2298,
+ 928,
- 2361,
+ 1441,
+ -1,
- 1424,
+ 1855,
- 1385,
- -1,
+ 2603,
- 511,
+ 1453,
- 2838,
+ 2459,
- 508,
+ 62,
- 2355,
+ 2732,
- 505,
+ 3816,
- 1175,
- -1,
+ 2063,
- 1568,
+ 3807,
- 817,
- -1,
+ 2447,
- 3381,
+ 49,
- 1169,
+ 2393,
- 2349,
+ 2744,
- 1556,
+ 1408,
+ -1, -1,
- 804,
+ 3810,
- 3096,
+ 2381,
- 3369,
+ 1180,
- 2673,
+ 1396,
+
+ 3441,
- 1157,
+ 1945,
- 1977,
+ 922,
- 1529,
+ 1705,
- 776,
+ 3630,
- 2661,
+ 4041,
- 1145,
+ 2597,
- 1965,
+ 3210,
- 1505,
+ 1888,
+ -1,
- 746,
+ 198,
- 2961,
+ 3804,
+ -1,
- 3594,
+ 807,
- 2655,
+ 3792,
+ -1,
- 1139,
+ 3345,
+ -1,
- 1959,
+ 1885,
- 1493,
+ 2264,
- 736,
+ 195,
- 3588,
+ 1300,
- 2646,
+ 3789,
- 1130,
+ 2078,
- 1950,
+ 1105,
- 1475,
+ 1870,
- 2643,
+ 3786,
- 1127,
+ 180,
- 1947,
+ 2759,
- 1469,
- -1,
+ 2258,
- 646,
+ 2066,
- 3582,
+ 1297,
- 2610,
+ 24,
- 1094,
+ 2723,
- 1929,
+ 3780,
- 2595,
+ 2747,
- 3576,
+ 2252,
- 1914,
+ 2951,
- 2583,
+ 1282,
+
+ 3162,
-1,
- 1031,
+ 1372,
- 1853,
+ 1867,
-1,
- 3570,
+ 177,
- 306,
+ 3057,
- 62,
+ 3774,
- 2607,
+ 2945,
- 1091,
+ 2465,
- 1926,
+ 68,
- 2244,
+ 1864,
-1,
- 2310,
+ 174,
- 3564,
+ 2246,
- 547,
+ 2915,
- 1397,
+ 1279,
- 3147,
+ 2399,
+ -1,
- 3333,
+ 1414,
- 2493,
+ 646,
- 962,
+ 3582,
- 3144,
+ 2240,
- 1754,
+ 4050,
- 667,
+ 1276,
+ -1,
- 273,
+ 126,
+ -1,
- 213,
+ 1837,
- 2625,
+ 3762,
- 1109,
+ 1555,
- 3114,
- -1, -1,
+ 4053,
- 3108,
+ 2909,
- 3327,
+ 2114,
- 2487,
+ 1156,
- 956,
+ 21,
- 3063,
+ 2720,
+ -1,
- 1304,
+ 2810,
- 3534,
+ 1654,
- 270,
+ 2903,
- 3300,
+ 4002,
+ -1,
- 2460,
+ 3564,
- 929,
+ 1366,
+ -1,
- 1802,
+ 3885,
- 3522,
+ 3990,
- 3297,
+ 108,
- 2457,
+ 749,
- 926,
+ 1819,
- 2832,
- -1, -1,
+ 3744,
- 255,
+ 1537,
- 3180,
+ 2108,
- 3294,
+ 1150,
- 2454,
+ 3303,
+ -1,
- 923,
+ 4008,
- 1799,
+ 2804,
- 3288,
+ 1642,
- 2448,
+ 2099,
- 917,
+ 1141,
+ -1,
- 1796,
+ 2069,
- 3126,
+ 1096,
- 1748,
+ 2795,
- 2100,
+ 1624,
- 1745,
+ 3300,
- 207,
+ 2750,
- 3174,
+ 739,
- 204,
+ 2096,
- 1733,
+ 1138,
- 1730,
+ 2453,
- 1727,
+ 56,
- 192,
+ 3606,
- 189,
+ 2792,
- 186,
+ 1618,
- 2736,
+ 2441,
- 3012,
+ 43,
- 1298,
+ 147,
- 1676,
+ 2387,
+ -1,
- 1295,
+ 1402,
- 2763,
+ 1579,
+ -1,
- 3489,
+ 2375,
- 114,
+ 3444,
- 1283,
+ 1390,
- 1280,
+ 925,
- 1277,
- -1, -1,
+ 252,
+ -1,
- 2820,
+ 887,
- 3009,
+ 2600,
- 2814,
- -1,
+ 3291,
- 682,
+ 670,
- 3006,
+ 685,
- 2790,
+ 3432,
+ -1,
- 2784,
+ 913,
- 2778,
+ 3426,
- 1250,
+ 1120,
- 2070,
+ 906,
- 2628,
+ 2588,
- 1112,
+ 3285,
- 490,
+ 2774,
- 1658,
+ 2582,
- 150,
+ 3249,
- 1652,
+ 3783,
- 3471,
+ 2315,
+ -1,
- 96,
+ 3255,
- 3465,
+ 2309,
+ -1,
- 89,
+ 3420,
- 1646,
+ 3933,
- 2619,
+ 899,
- 1103,
+ 529,
- 3459,
+ 3159,
- 83,
+ 1114,
- 1634,
+ 2576,
- 544,
+ 3921,
-1,
- 3447,
+ 2768,
- 2649,
+ 402,
+ -1,
- 1133,
+ 2303,
- 1953,
+ 526,
- 1481,
+ 1657,
- 2604,
+ 3258,
- 1088,
+ 3414,
- 1923,
+ 1906,
- 2598,
+ 893,
+
+ 216,
+
+ 511,
-1,
- 1917,
+ 2570,
+
+ 655,
+
+ 752,
+
+ 691,
-1, -1,
- 2409,
+ 2297,
- 2571,
+ 3156,
- 2403,
+ 1318,
- 3129,
+ 3084,
+ -1, -1,
- 2535,
+ 1903,
- 1004,
+ 3090,
- 2958,
+ 213,
- 2397,
+ 508,
+ -1,
- 21,
+ 1897,
+ -1,
- 2943,
+ 207,
- 577,
+ 1894,
+ -1,
- 2094,
+ 204,
- 2385,
+ 505,
- 2910,
+ 2987,
- 3120,
+ 1315,
- 2529,
+ 1882,
- 998,
+ 3897,
- 1355,
- -1,
+ 192,
- 56,
+ 3264,
- 2955,
+ 1309,
- 2523,
+ 3093,
- 992,
+ 4047,
- 2238,
+ 1306,
- 538,
+ 1876,
+ -1,
- 2304,
+ 186,
- 535,
+ 2075,
- 2757,
+ 1102,
- 1391,
+ 1294,
-1,
- 523,
+ 2981,
- 520,
+ 2756,
- 517,
+ 649,
- 43,
- -1, -1,
+ 3939,
+ -1,
- 3222,
+ 2969,
+
+ 1288,
+ -1,
- 2226,
+ 2963,
+ -1,
- 2973,
+ 2102,
- 2292,
+ 1144,
- 2517,
+ 2072,
- 986,
+ 1099,
- 1379,
+ 2939,
- 3345,
+ 2798,
- 2505,
+ 1630,
- 974,
+ 2753,
+
+ 9,
-1,
- 3216,
+ 1014,
+ -1,
- 3339,
+ 2927,
- 2499,
+ 3,
- 968,
- -1, -1,
+ 2684,
- 3210,
+ 2363,
- 3291,
+ 3108,
- 2451,
+ 1354,
- 920,
+ 3891,
+ -1,
- 3273,
+ 2357,
- 2433,
+ 1008,
- 902,
+ 1348,
- 252,
+ 3096,
+
+ 697,
+
+ 2678,
+
+ 1002,
+
+ 996,
+
+ 1032,
-1,
- 703,
+ 2672,
- 3267,
+ 2666,
- 2427,
+ 2702,
- 896,
+ 3492,
+ -1,
- 3600,
+ 977,
+
+ 1020,
-1, -1,
- 2160,
+ 2648,
+
+ 2690,
-1, -1,
- 3204,
+ 4044,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
- 1709,
+ 3297,
-1,
- 2154,
-
- 3192,
+ 3927,
+ -1, -1, -1, -1,
- 3261,
+ 3915,
+ -1, -1,
- 2421,
+ 3294,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
- 890,
+ 3375,
-1,
- 3186,
+ 547,
+ -1,
- 1508,
+ 3276,
+ -1,
- 749,
+ 3099,
+ -1, -1, -1, -1,
- 402,
+ 3369,
+ -1, -1, -1, -1,
- 351,
+ 3363,
- 1706,
+ 3357,
-1,
- 688,
+ 544,
+ -1, -1,
- 2148,
+ 3270,
+ -1,
- 3285,
+ 538,
- 2445,
+ 3339,
- 914,
+ 3381,
- 2334,
+ 535,
+ -1, -1, -1, -1, -1,
- 649,
+ 523,
+ -1, -1, -1, -1, -1, -1,
-1,
- 1421,
+ 517,
+
+ 3123,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
+
+ 3117,
+ -1, -1, -1, -1, -1, -1,
619,
+ -1, -1, -1,
+
+ 4038,
-1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1,
616,
- -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
610,
- -1, -1, -1, -1, -1,
- 2967,
+ 604,
+
+ 631,
+ -1, -1,
+
+ 3879,
+ -1, -1, -1, -1,
+
+ 3873,
+ -1, -1,
+
+ 4032,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+
+ 3105,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
+
+ 3102,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1,
- 2952,
+ 4035,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
- 604,
+ 4023,
+ -1, -1,
+
+ 4017,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
-1,
- 2946
+ 4011,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1,
+ -1, -1, -1,
+
+ 4005
};
if (0 == 0)
{
int key = hash(codes);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
int index = wordlist[key];
diff --git a/ext/mbstring/oniguruma/src/unicode_fold2_key.c b/ext/mbstring/oniguruma/src/unicode_fold2_key.c
index 07cfa4ec5e..1469a4677b 100644
--- a/ext/mbstring/oniguruma/src/unicode_fold2_key.c
+++ b/ext/mbstring/oniguruma/src/unicode_fold2_key.c
@@ -1,12 +1,38 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold2_key unicode_fold2_key.gperf */
/* Computed positions: -k'3,6' */
/* This gperf source file was generated by make_unicode_fold_data.py */
+
+/*-
+ * Copyright (c) 2017-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
#include <string.h>
#include "regenc.h"
@@ -60,16 +86,10 @@ hash(OnigCodePoint codes[])
return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
int
-unicode_fold2_key(OnigCodePoint codes[])
+onigenc_unicode_fold2_key(OnigCodePoint codes[])
{
- static const int wordlist[] =
+ static const short int wordlist[] =
{
101,
@@ -195,7 +215,7 @@ unicode_fold2_key(OnigCodePoint codes[])
{
int key = hash(codes);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
int index = wordlist[key];
diff --git a/ext/mbstring/oniguruma/src/unicode_fold3_key.c b/ext/mbstring/oniguruma/src/unicode_fold3_key.c
index 1b4d9d41b7..70e70c8e21 100644
--- a/ext/mbstring/oniguruma/src/unicode_fold3_key.c
+++ b/ext/mbstring/oniguruma/src/unicode_fold3_key.c
@@ -1,12 +1,38 @@
/* This file was converted by gperf_fold_key_conv.py
from gperf output file. */
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N onigenc_unicode_fold3_key unicode_fold3_key.gperf */
/* Computed positions: -k'3,6,9' */
/* This gperf source file was generated by make_unicode_fold_data.py */
+
+/*-
+ * Copyright (c) 2017-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
#include <string.h>
#include "regenc.h"
@@ -60,16 +86,10 @@ hash(OnigCodePoint codes[])
return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
int
-unicode_fold3_key(OnigCodePoint codes[])
+onigenc_unicode_fold3_key(OnigCodePoint codes[])
{
- static const int wordlist[] =
+ static const short int wordlist[] =
{
62,
@@ -105,7 +125,7 @@ unicode_fold3_key(OnigCodePoint codes[])
{
int key = hash(codes);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
int index = wordlist[key];
diff --git a/ext/mbstring/oniguruma/src/unicode_fold_data.c b/ext/mbstring/oniguruma/src/unicode_fold_data.c
index 1f2266968e..7f7e24e17f 100644
--- a/ext/mbstring/oniguruma/src/unicode_fold_data.c
+++ b/ext/mbstring/oniguruma/src/unicode_fold_data.c
@@ -1,7 +1,7 @@
/* This file was generated by make_unicode_fold_data.py. */
#include "regenc.h"
-#define CASEFOLD_VERSION 8_0_0
+#define UNICODE_CASEFOLD_VERSION 11_0_0
OnigCodePoint OnigUnicodeFolds1[] = {
@@ -221,989 +221,1139 @@ OnigCodePoint OnigUnicodeFolds1[] = {
/* 646*/ 0x0266, 1, 0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */
/* 649*/ 0x0268, 1, 0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */
/* 652*/ 0x0269, 1, 0x0196, /* LATIN CAPITAL LETTER IOTA */
- /* 655*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */
- /* 658*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */
- /* 661*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */
- /* 664*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */
- /* 667*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */
- /* 670*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */
- /* 673*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */
- /* 676*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */
- /* 679*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */
- /* 682*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */
- /* 685*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */
- /* 688*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */
- /* 691*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */
- /* 694*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */
- /* 697*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */
- /* 700*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */
- /* 703*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */
- /* 706*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */
- /* 709*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */
- /* 712*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */
- /* 715*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */
- /* 718*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */
- /* 721*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */
- /* 724*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */
- /* 727*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */
- /* 730*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /* 733*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */
- /* 736*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */
- /* 739*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */
- /* 742*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */
- /* 746*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */
- /* 749*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */
- /* 752*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */
- /* 756*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */
- /* 759*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */
- /* 762*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */
- /* 767*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */
- /* 772*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */
- /* 776*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */
- /* 779*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */
- /* 783*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */
- /* 786*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */
- /* 789*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */
- /* 792*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */
- /* 796*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */
- /* 800*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */
- /* 804*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */
- /* 807*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */
- /* 810*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */
- /* 814*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */
- /* 817*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */
- /* 820*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */
- /* 824*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */
- /* 827*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /* 830*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /* 833*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /* 836*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */
- /* 839*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */
- /* 842*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */
- /* 845*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */
- /* 848*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */
- /* 851*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */
- /* 854*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */
- /* 857*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */
- /* 860*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */
- /* 863*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */
- /* 866*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */
- /* 869*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */
- /* 872*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */
- /* 875*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */
- /* 878*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */
- /* 881*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */
- /* 884*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */
- /* 887*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */
- /* 890*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */
- /* 893*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */
- /* 896*/ 0x0432, 1, 0x0412, /* CYRILLIC CAPITAL LETTER VE */
- /* 899*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */
- /* 902*/ 0x0434, 1, 0x0414, /* CYRILLIC CAPITAL LETTER DE */
- /* 905*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */
- /* 908*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
- /* 911*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */
- /* 914*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */
- /* 917*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
- /* 920*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */
- /* 923*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */
- /* 926*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */
- /* 929*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */
- /* 932*/ 0x043e, 1, 0x041e, /* CYRILLIC CAPITAL LETTER O */
- /* 935*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */
- /* 938*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */
- /* 941*/ 0x0441, 1, 0x0421, /* CYRILLIC CAPITAL LETTER ES */
- /* 944*/ 0x0442, 1, 0x0422, /* CYRILLIC CAPITAL LETTER TE */
- /* 947*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */
- /* 950*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */
- /* 953*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
- /* 956*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */
- /* 959*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
- /* 962*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
- /* 965*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */
- /* 968*/ 0x044a, 1, 0x042a, /* CYRILLIC CAPITAL LETTER HARD SIGN */
- /* 971*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */
- /* 974*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
- /* 977*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */
- /* 980*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */
- /* 983*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */
- /* 986*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */
- /* 989*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */
- /* 992*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */
- /* 995*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */
- /* 998*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */
- /*1001*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */
- /*1004*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */
- /*1007*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
- /*1010*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */
- /*1013*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */
- /*1016*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */
- /*1019*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */
- /*1022*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */
- /*1025*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */
- /*1028*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */
- /*1031*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */
- /*1034*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */
- /*1037*/ 0x0463, 1, 0x0462, /* CYRILLIC CAPITAL LETTER YAT */
- /*1040*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */
- /*1043*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */
- /*1046*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*1049*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */
- /*1052*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*1055*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */
- /*1058*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */
- /*1061*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */
- /*1064*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */
- /*1067*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */
- /*1070*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */
- /*1073*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */
- /*1076*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */
- /*1079*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */
- /*1082*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */
- /*1085*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */
- /*1088*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */
- /*1091*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */
- /*1094*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1097*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1100*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1103*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1106*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
- /*1109*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */
- /*1112*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */
- /*1115*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */
- /*1118*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */
- /*1121*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */
- /*1124*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */
- /*1127*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */
- /*1130*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1133*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */
- /*1136*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */
- /*1139*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */
- /*1142*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */
- /*1145*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */
- /*1148*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */
- /*1151*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1154*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1157*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */
- /*1160*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1163*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1166*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1169*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */
- /*1172*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */
- /*1175*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */
- /*1178*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */
- /*1181*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */
- /*1184*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */
- /*1187*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */
- /*1190*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */
- /*1193*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */
- /*1196*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */
- /*1199*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */
- /*1202*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */
- /*1205*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */
- /*1208*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
- /*1211*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
- /*1214*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
- /*1217*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */
- /*1220*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */
- /*1223*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */
- /*1226*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */
- /*1229*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */
- /*1232*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */
- /*1235*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */
- /*1238*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */
- /*1241*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */
- /*1244*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
- /*1247*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1250*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
- /*1253*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
- /*1256*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */
- /*1259*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */
- /*1262*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */
- /*1265*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */
- /*1268*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */
- /*1271*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */
- /*1274*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */
- /*1277*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */
- /*1280*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */
- /*1283*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */
- /*1286*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*1289*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */
- /*1292*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */
- /*1295*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */
- /*1298*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */
- /*1301*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */
- /*1304*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */
- /*1307*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */
- /*1310*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */
- /*1313*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */
- /*1316*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */
- /*1319*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */
- /*1322*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */
- /*1325*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */
- /*1328*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */
- /*1331*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */
- /*1334*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */
- /*1337*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */
- /*1340*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */
- /*1343*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */
- /*1346*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */
- /*1349*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */
- /*1352*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */
- /*1355*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */
- /*1358*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */
- /*1361*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */
- /*1364*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */
- /*1367*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */
- /*1370*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */
- /*1373*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */
- /*1376*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */
- /*1379*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */
- /*1382*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */
- /*1385*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */
- /*1388*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */
- /*1391*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */
- /*1394*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */
- /*1397*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */
- /*1400*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */
- /*1403*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */
- /*1406*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */
- /*1409*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */
- /*1412*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */
- /*1415*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */
- /*1418*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */
- /*1421*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */
- /*1424*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */
- /*1427*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */
- /*1430*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */
- /*1433*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */
- /*1436*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */
- /*1439*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */
- /*1442*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */
- /*1445*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */
- /*1448*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */
- /*1451*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */
- /*1454*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */
- /*1457*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */
- /*1460*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */
- /*1463*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */
- /*1466*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */
- /*1469*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */
- /*1472*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */
- /*1475*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */
- /*1478*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */
- /*1481*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */
- /*1484*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */
- /*1487*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */
- /*1490*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */
- /*1493*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */
- /*1496*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */
- /*1499*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */
- /*1502*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */
- /*1505*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */
- /*1508*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */
- /*1511*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */
- /*1514*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */
- /*1517*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */
- /*1520*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */
- /*1523*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */
- /*1526*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */
- /*1529*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */
- /*1532*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */
- /*1535*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */
- /*1538*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */
- /*1541*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */
- /*1544*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */
- /*1547*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */
- /*1550*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */
- /*1553*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */
- /*1556*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */
- /*1559*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */
- /*1562*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */
- /*1565*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */
- /*1568*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */
- /*1571*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */
- /*1574*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */
- /*1577*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */
- /*1580*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */
- /*1583*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */
- /*1586*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */
- /*1589*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */
- /*1592*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */
- /*1595*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */
- /*1598*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */
- /*1601*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */
- /*1604*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */
- /*1607*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */
- /*1610*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */
- /*1613*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */
- /*1616*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */
- /*1619*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */
- /*1622*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */
- /*1625*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */
- /*1628*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */
- /*1631*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */
- /*1634*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */
- /*1637*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */
- /*1640*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */
- /*1643*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */
- /*1646*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */
- /*1649*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */
- /*1652*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */
- /*1655*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */
- /*1658*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */
- /*1661*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */
- /*1664*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */
- /*1667*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */
- /*1670*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */
- /*1673*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */
- /*1676*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */
- /*1679*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */
- /*1682*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */
- /*1685*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */
- /*1688*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */
- /*1691*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */
- /*1694*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */
- /*1697*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */
- /*1700*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */
- /*1703*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */
- /*1706*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */
- /*1709*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */
- /*1712*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */
- /*1715*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */
- /*1718*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */
- /*1721*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */
- /*1724*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
- /*1727*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */
- /*1730*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */
- /*1733*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */
- /*1736*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */
- /*1739*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */
- /*1742*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */
- /*1745*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */
- /*1748*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1751*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */
- /*1754*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
- /*1757*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */
- /*1760*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */
- /*1763*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */
- /*1766*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */
- /*1769*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */
- /*1772*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */
- /*1775*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */
- /*1778*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */
- /*1781*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */
- /*1784*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */
- /*1787*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */
- /*1790*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */
- /*1793*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */
- /*1796*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */
- /*1799*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */
- /*1802*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */
- /*1805*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */
- /*1808*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */
- /*1811*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */
- /*1814*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */
- /*1817*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */
- /*1820*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */
- /*1823*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */
- /*1826*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
- /*1829*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */
- /*1832*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */
- /*1835*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */
- /*1838*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */
- /*1841*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */
- /*1844*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */
- /*1847*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */
- /*1850*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */
- /*1853*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */
- /*1856*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */
- /*1860*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */
- /*1863*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */
- /*1866*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */
- /*1869*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */
- /*1872*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */
- /*1875*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */
- /*1878*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */
- /*1881*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */
- /*1884*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */
- /*1887*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */
- /*1890*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
- /*1893*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */
- /*1896*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */
- /*1899*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */
- /*1902*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */
- /*1905*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */
- /*1908*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */
- /*1911*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */
- /*1914*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */
- /*1917*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */
- /*1920*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */
- /*1923*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */
- /*1926*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */
- /*1929*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */
- /*1932*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */
- /*1935*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */
- /*1938*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */
- /*1941*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */
- /*1944*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*1947*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*1950*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*1953*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*1956*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
- /*1959*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*1962*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*1965*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*1968*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*1971*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */
- /*1974*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */
- /*1977*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */
- /*1980*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */
- /*1983*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1986*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1989*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1992*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1995*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
- /*1998*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */
- /*2001*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */
- /*2004*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */
- /*2007*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */
- /*2010*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2013*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2016*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2019*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2022*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
- /*2025*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2028*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2031*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2034*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2037*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */
- /*2040*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */
- /*2043*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */
- /*2046*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2049*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2052*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2055*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2058*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */
- /*2061*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */
- /*2064*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */
- /*2067*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */
- /*2070*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */
- /*2073*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
- /*2076*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
- /*2079*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */
- /*2082*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2085*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2088*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2091*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2094*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2097*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2100*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
- /*2103*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
- /*2106*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2109*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2112*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2115*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2118*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2121*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2124*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2127*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2130*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2133*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2136*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2139*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2142*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
- /*2145*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
- /*2148*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2151*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2154*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2157*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2160*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2163*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2166*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
- /*2169*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
- /*2172*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2175*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2178*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2181*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2184*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2187*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2190*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2193*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2196*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2199*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2202*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2205*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2208*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2211*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2214*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2217*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2220*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
- /*2223*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
- /*2226*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
- /*2229*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */
- /*2232*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2235*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */
- /*2238*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */
- /*2241*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */
- /*2244*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */
- /*2247*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */
- /*2250*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2253*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */
- /*2256*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2259*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2262*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */
- /*2265*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */
- /*2268*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
- /*2271*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */
- /*2274*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */
- /*2277*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */
- /*2280*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2283*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */
- /*2286*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */
- /*2289*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */
- /*2292*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */
- /*2295*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */
- /*2298*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */
- /*2301*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */
- /*2304*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */
- /*2307*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */
- /*2310*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */
- /*2313*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */
- /*2316*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */
- /*2319*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */
- /*2322*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */
- /*2325*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */
- /*2328*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */
- /*2331*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */
- /*2334*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */
- /*2337*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */
- /*2340*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */
- /*2343*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */
- /*2346*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */
- /*2349*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */
- /*2352*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */
- /*2355*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */
- /*2358*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */
- /*2361*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */
- /*2364*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */
- /*2367*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */
- /*2370*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */
- /*2373*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */
- /*2376*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */
- /*2379*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */
- /*2382*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */
- /*2385*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */
- /*2388*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */
- /*2391*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */
- /*2394*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */
- /*2397*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */
- /*2400*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */
- /*2403*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */
- /*2406*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */
- /*2409*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */
- /*2412*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */
- /*2415*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */
- /*2418*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */
- /*2421*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */
- /*2424*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */
- /*2427*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */
- /*2430*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */
- /*2433*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */
- /*2436*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */
- /*2439*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */
- /*2442*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */
- /*2445*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */
- /*2448*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */
- /*2451*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */
- /*2454*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */
- /*2457*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */
- /*2460*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */
- /*2463*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */
- /*2466*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */
- /*2469*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */
- /*2472*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */
- /*2475*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */
- /*2478*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */
- /*2481*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */
- /*2484*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */
- /*2487*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */
- /*2490*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */
- /*2493*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */
- /*2496*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */
- /*2499*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */
- /*2502*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */
- /*2505*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */
- /*2508*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */
- /*2511*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */
- /*2514*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */
- /*2517*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */
- /*2520*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */
- /*2523*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */
- /*2526*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */
- /*2529*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
- /*2532*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
- /*2535*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */
- /*2538*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
- /*2541*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */
- /*2544*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
- /*2547*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */
- /*2550*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */
- /*2553*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */
- /*2556*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */
- /*2559*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */
- /*2562*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */
- /*2565*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */
- /*2568*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */
- /*2571*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */
- /*2574*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */
- /*2577*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */
- /*2580*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */
- /*2583*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */
- /*2586*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */
- /*2589*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */
- /*2592*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */
- /*2595*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */
- /*2598*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */
- /*2601*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */
- /*2604*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */
- /*2607*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */
- /*2610*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */
- /*2613*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */
- /*2616*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */
- /*2619*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */
- /*2622*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */
- /*2625*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */
- /*2628*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */
- /*2631*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */
- /*2634*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */
- /*2637*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */
- /*2640*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */
- /*2643*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */
- /*2646*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */
- /*2649*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */
- /*2652*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */
- /*2655*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */
- /*2658*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */
- /*2661*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */
- /*2664*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2667*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2670*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */
- /*2673*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */
- /*2676*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2679*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2682*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */
- /*2685*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */
- /*2688*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2691*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2694*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */
- /*2697*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */
- /*2700*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2703*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2706*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */
- /*2709*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2712*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2715*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2718*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2721*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
- /*2724*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2727*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2730*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2733*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
- /*2736*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2739*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
- /*2742*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */
- /*2745*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */
- /*2748*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */
- /*2751*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */
- /*2754*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */
- /*2757*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */
- /*2760*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */
- /*2763*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */
- /*2766*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */
- /*2769*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */
- /*2772*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */
- /*2775*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */
- /*2778*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */
- /*2781*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */
- /*2784*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */
- /*2787*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */
- /*2790*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */
- /*2793*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */
- /*2796*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */
- /*2799*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */
- /*2802*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */
- /*2805*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */
- /*2808*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */
- /*2811*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */
- /*2814*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */
- /*2817*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */
- /*2820*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */
- /*2823*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */
- /*2826*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */
- /*2829*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */
- /*2832*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */
- /*2835*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */
- /*2838*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */
- /*2841*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */
- /*2844*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */
- /*2847*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */
- /*2850*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */
- /*2853*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */
- /*2856*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */
- /*2859*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */
- /*2862*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */
- /*2865*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */
- /*2868*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */
- /*2871*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*2874*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */
- /*2877*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */
- /*2880*/ 0xa64b, 1, 0xa64a, /* CYRILLIC CAPITAL LETTER MONOGRAPH.. */
- /*2883*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */
- /*2886*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */
- /*2889*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
- /*2892*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*2895*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*2898*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */
- /*2901*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */
- /*2904*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */
- /*2907*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
- /*2910*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */
- /*2913*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */
- /*2916*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */
- /*2919*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */
- /*2922*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */
- /*2925*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */
- /*2928*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */
- /*2931*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */
- /*2934*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */
- /*2937*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */
- /*2940*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */
- /*2943*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */
- /*2946*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */
- /*2949*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */
- /*2952*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */
- /*2955*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */
- /*2958*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */
- /*2961*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */
- /*2964*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */
- /*2967*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */
- /*2970*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */
- /*2973*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */
- /*2976*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
- /*2979*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
- /*2982*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */
- /*2985*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */
- /*2988*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */
- /*2991*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */
- /*2994*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */
- /*2997*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */
- /*3000*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */
- /*3003*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */
- /*3006*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */
- /*3009*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */
- /*3012*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */
- /*3015*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */
- /*3018*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */
- /*3021*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */
- /*3024*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */
- /*3027*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */
- /*3030*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */
- /*3033*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */
- /*3036*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */
- /*3039*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */
- /*3042*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */
- /*3045*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */
- /*3048*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */
- /*3051*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */
- /*3054*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */
- /*3057*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */
- /*3060*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */
- /*3063*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */
- /*3066*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */
- /*3069*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */
- /*3072*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */
- /*3075*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */
- /*3078*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */
- /*3081*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */
- /*3084*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */
- /*3087*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */
- /*3090*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */
- /*3093*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */
- /*3096*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */
- /*3099*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */
- /*3102*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */
- /*3105*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */
- /*3108*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */
- /*3111*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */
- /*3114*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */
- /*3117*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */
- /*3120*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */
- /*3123*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */
- /*3126*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */
- /*3129*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */
- /*3132*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */
- /*3135*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */
- /*3138*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */
- /*3141*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */
- /*3144*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */
- /*3147*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */
- /*3150*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */
- /*3153*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */
- /*3156*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */
- /*3159*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */
- /*3162*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */
- /*3165*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */
- /*3168*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */
- /*3171*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */
- /*3174*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */
- /*3177*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */
- /*3180*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */
- /*3183*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */
- /*3186*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */
- /*3189*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */
- /*3192*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */
- /*3195*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */
- /*3198*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */
- /*3201*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */
- /*3204*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */
- /*3207*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */
- /*3210*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */
- /*3213*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */
- /*3216*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */
- /*3219*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */
- /*3222*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */
- /*3225*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */
- /*3228*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */
- /*3231*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */
- /*3234*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */
- /*3237*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */
- /*3240*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */
- /*3243*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */
- /*3246*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */
- /*3249*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */
- /*3252*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */
- /*3255*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */
- /*3258*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */
- /*3261*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */
- /*3264*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */
- /*3267*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */
- /*3270*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */
- /*3273*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */
- /*3276*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */
- /*3279*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */
- /*3282*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */
- /*3285*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */
- /*3288*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */
- /*3291*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */
- /*3294*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */
- /*3297*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */
- /*3300*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */
- /*3303*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */
- /*3306*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */
- /*3309*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */
- /*3312*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */
- /*3315*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */
- /*3318*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */
- /*3321*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */
- /*3324*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */
- /*3327*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */
- /*3330*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */
- /*3333*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */
- /*3336*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */
- /*3339*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */
- /*3342*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */
- /*3345*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */
- /*3348*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */
- /*3351*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */
- /*3354*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */
- /*3357*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */
- /*3360*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */
- /*3363*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */
- /*3366*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */
- /*3369*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */
- /*3372*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */
- /*3375*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */
- /*3378*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */
- /*3381*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */
- /*3384*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */
- /*3387*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */
- /*3390*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */
- /*3393*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */
- /*3396*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */
- /*3399*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */
- /*3402*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */
- /*3405*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */
- /*3408*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */
- /*3411*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */
- /*3414*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */
- /*3417*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */
- /*3420*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */
- /*3423*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */
- /*3426*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */
- /*3429*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */
- /*3432*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */
- /*3435*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */
- /*3438*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */
- /*3441*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */
- /*3444*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
- /*3447*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
- /*3450*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */
- /*3453*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */
- /*3456*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */
- /*3459*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */
- /*3462*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */
- /*3465*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */
- /*3468*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */
- /*3471*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */
- /*3474*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */
- /*3477*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */
- /*3480*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */
- /*3483*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */
- /*3486*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */
- /*3489*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
- /*3492*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
- /*3495*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */
- /*3498*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */
- /*3501*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */
- /*3504*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */
- /*3507*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */
- /*3510*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */
- /*3513*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */
- /*3516*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */
- /*3519*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */
- /*3522*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */
- /*3525*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */
- /*3528*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */
- /*3531*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */
- /*3534*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */
- /*3537*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */
- /*3540*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */
- /*3543*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */
- /*3546*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */
- /*3549*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */
- /*3552*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */
- /*3555*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */
- /*3558*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */
- /*3561*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */
- /*3564*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */
- /*3567*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */
- /*3570*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */
- /*3573*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */
- /*3576*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */
- /*3579*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */
- /*3582*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */
- /*3585*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */
- /*3588*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */
- /*3591*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */
- /*3594*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */
- /*3597*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */
- /*3600*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */
- /*3603*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */
-#define FOLDS1_NORMAL_END_INDEX 3606
+ /* 655*/ 0x026a, 1, 0xa7ae, /* LATIN CAPITAL LETTER SMALL CAPITA.. */
+ /* 658*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */
+ /* 661*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */
+ /* 664*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */
+ /* 667*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */
+ /* 670*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */
+ /* 673*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */
+ /* 676*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */
+ /* 679*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */
+ /* 682*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */
+ /* 685*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */
+ /* 688*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */
+ /* 691*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */
+ /* 694*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */
+ /* 697*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */
+ /* 700*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */
+ /* 703*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */
+ /* 706*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */
+ /* 709*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */
+ /* 712*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */
+ /* 715*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */
+ /* 718*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */
+ /* 721*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */
+ /* 724*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */
+ /* 727*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */
+ /* 730*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */
+ /* 733*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /* 736*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */
+ /* 739*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */
+ /* 742*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */
+ /* 745*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */
+ /* 749*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */
+ /* 752*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */
+ /* 755*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */
+ /* 759*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */
+ /* 762*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */
+ /* 765*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */
+ /* 770*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */
+ /* 775*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */
+ /* 779*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */
+ /* 782*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */
+ /* 786*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */
+ /* 789*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */
+ /* 792*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */
+ /* 795*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */
+ /* 799*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */
+ /* 803*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */
+ /* 807*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */
+ /* 810*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */
+ /* 813*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */
+ /* 817*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */
+ /* 820*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */
+ /* 823*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */
+ /* 827*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */
+ /* 830*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 833*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /* 836*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /* 839*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */
+ /* 842*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */
+ /* 845*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */
+ /* 848*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */
+ /* 851*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */
+ /* 854*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */
+ /* 857*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */
+ /* 860*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */
+ /* 863*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */
+ /* 866*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */
+ /* 869*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */
+ /* 872*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */
+ /* 875*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */
+ /* 878*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */
+ /* 881*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */
+ /* 884*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */
+ /* 887*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */
+ /* 890*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */
+ /* 893*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */
+ /* 896*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */
+ /* 899*/ 0x0432, 2, 0x0412, 0x1c80, /* CYRILLIC CAPITAL LETTER VE */
+ /* 903*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */
+ /* 906*/ 0x0434, 2, 0x0414, 0x1c81, /* CYRILLIC CAPITAL LETTER DE */
+ /* 910*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */
+ /* 913*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */
+ /* 916*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */
+ /* 919*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */
+ /* 922*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */
+ /* 925*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */
+ /* 928*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */
+ /* 931*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */
+ /* 934*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */
+ /* 937*/ 0x043e, 2, 0x041e, 0x1c82, /* CYRILLIC CAPITAL LETTER O */
+ /* 941*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */
+ /* 944*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */
+ /* 947*/ 0x0441, 2, 0x0421, 0x1c83, /* CYRILLIC CAPITAL LETTER ES */
+ /* 951*/ 0x0442, 3, 0x0422, 0x1c84, 0x1c85, /* CYRILLIC CAPITAL LETTER TE */
+ /* 956*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */
+ /* 959*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */
+ /* 962*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */
+ /* 965*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */
+ /* 968*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */
+ /* 971*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */
+ /* 974*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */
+ /* 977*/ 0x044a, 2, 0x042a, 0x1c86, /* CYRILLIC CAPITAL LETTER HARD SIGN */
+ /* 981*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */
+ /* 984*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */
+ /* 987*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */
+ /* 990*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */
+ /* 993*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */
+ /* 996*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */
+ /* 999*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */
+ /*1002*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */
+ /*1005*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */
+ /*1008*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */
+ /*1011*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */
+ /*1014*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */
+ /*1017*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */
+ /*1020*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */
+ /*1023*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */
+ /*1026*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */
+ /*1029*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */
+ /*1032*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */
+ /*1035*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */
+ /*1038*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */
+ /*1041*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */
+ /*1044*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */
+ /*1047*/ 0x0463, 2, 0x0462, 0x1c87, /* CYRILLIC CAPITAL LETTER YAT */
+ /*1051*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */
+ /*1054*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */
+ /*1057*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1060*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */
+ /*1063*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*1066*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */
+ /*1069*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */
+ /*1072*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */
+ /*1075*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */
+ /*1078*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */
+ /*1081*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */
+ /*1084*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */
+ /*1087*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */
+ /*1090*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */
+ /*1093*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */
+ /*1096*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */
+ /*1099*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */
+ /*1102*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */
+ /*1105*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1108*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1111*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1114*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1117*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1120*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */
+ /*1123*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */
+ /*1126*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */
+ /*1129*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */
+ /*1132*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */
+ /*1135*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */
+ /*1138*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */
+ /*1141*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1144*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */
+ /*1147*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */
+ /*1150*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */
+ /*1153*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */
+ /*1156*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */
+ /*1159*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */
+ /*1162*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1165*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1168*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */
+ /*1171*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1174*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1177*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1180*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */
+ /*1183*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */
+ /*1186*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */
+ /*1189*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */
+ /*1192*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */
+ /*1195*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */
+ /*1198*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */
+ /*1201*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */
+ /*1204*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */
+ /*1207*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */
+ /*1210*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */
+ /*1213*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */
+ /*1216*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */
+ /*1219*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */
+ /*1222*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */
+ /*1225*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */
+ /*1228*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */
+ /*1231*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */
+ /*1234*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */
+ /*1237*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */
+ /*1240*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */
+ /*1243*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */
+ /*1246*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */
+ /*1249*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */
+ /*1252*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */
+ /*1255*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */
+ /*1258*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1261*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*1264*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */
+ /*1267*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */
+ /*1270*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */
+ /*1273*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */
+ /*1276*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */
+ /*1279*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */
+ /*1282*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */
+ /*1285*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */
+ /*1288*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */
+ /*1291*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */
+ /*1294*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */
+ /*1297*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*1300*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */
+ /*1303*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */
+ /*1306*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */
+ /*1309*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */
+ /*1312*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */
+ /*1315*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */
+ /*1318*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */
+ /*1321*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */
+ /*1324*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */
+ /*1327*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */
+ /*1330*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */
+ /*1333*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */
+ /*1336*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */
+ /*1339*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */
+ /*1342*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */
+ /*1345*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */
+ /*1348*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */
+ /*1351*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */
+ /*1354*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */
+ /*1357*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */
+ /*1360*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */
+ /*1363*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */
+ /*1366*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */
+ /*1369*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */
+ /*1372*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */
+ /*1375*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */
+ /*1378*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */
+ /*1381*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */
+ /*1384*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */
+ /*1387*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */
+ /*1390*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */
+ /*1393*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */
+ /*1396*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */
+ /*1399*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */
+ /*1402*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */
+ /*1405*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */
+ /*1408*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */
+ /*1411*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */
+ /*1414*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */
+ /*1417*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */
+ /*1420*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */
+ /*1423*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */
+ /*1426*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */
+ /*1429*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */
+ /*1432*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */
+ /*1435*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */
+ /*1438*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */
+ /*1441*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */
+ /*1444*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */
+ /*1447*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */
+ /*1450*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */
+ /*1453*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */
+ /*1456*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */
+ /*1459*/ 0x10d0, 1, 0x1c90, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1462*/ 0x10d1, 1, 0x1c91, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1465*/ 0x10d2, 1, 0x1c92, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1468*/ 0x10d3, 1, 0x1c93, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1471*/ 0x10d4, 1, 0x1c94, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1474*/ 0x10d5, 1, 0x1c95, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1477*/ 0x10d6, 1, 0x1c96, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1480*/ 0x10d7, 1, 0x1c97, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1483*/ 0x10d8, 1, 0x1c98, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1486*/ 0x10d9, 1, 0x1c99, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1489*/ 0x10da, 1, 0x1c9a, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1492*/ 0x10db, 1, 0x1c9b, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1495*/ 0x10dc, 1, 0x1c9c, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1498*/ 0x10dd, 1, 0x1c9d, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1501*/ 0x10de, 1, 0x1c9e, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1504*/ 0x10df, 1, 0x1c9f, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1507*/ 0x10e0, 1, 0x1ca0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1510*/ 0x10e1, 1, 0x1ca1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1513*/ 0x10e2, 1, 0x1ca2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1516*/ 0x10e3, 1, 0x1ca3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1519*/ 0x10e4, 1, 0x1ca4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1522*/ 0x10e5, 1, 0x1ca5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1525*/ 0x10e6, 1, 0x1ca6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1528*/ 0x10e7, 1, 0x1ca7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1531*/ 0x10e8, 1, 0x1ca8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1534*/ 0x10e9, 1, 0x1ca9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1537*/ 0x10ea, 1, 0x1caa, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1540*/ 0x10eb, 1, 0x1cab, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1543*/ 0x10ec, 1, 0x1cac, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1546*/ 0x10ed, 1, 0x1cad, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1549*/ 0x10ee, 1, 0x1cae, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1552*/ 0x10ef, 1, 0x1caf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1555*/ 0x10f0, 1, 0x1cb0, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1558*/ 0x10f1, 1, 0x1cb1, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1561*/ 0x10f2, 1, 0x1cb2, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1564*/ 0x10f3, 1, 0x1cb3, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1567*/ 0x10f4, 1, 0x1cb4, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1570*/ 0x10f5, 1, 0x1cb5, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1573*/ 0x10f6, 1, 0x1cb6, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1576*/ 0x10f7, 1, 0x1cb7, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1579*/ 0x10f8, 1, 0x1cb8, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1582*/ 0x10f9, 1, 0x1cb9, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1585*/ 0x10fa, 1, 0x1cba, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1588*/ 0x10fd, 1, 0x1cbd, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1591*/ 0x10fe, 1, 0x1cbe, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1594*/ 0x10ff, 1, 0x1cbf, /* GEORGIAN MTAVRULI CAPITAL LETTER .. */
+ /*1597*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */
+ /*1600*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */
+ /*1603*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */
+ /*1606*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */
+ /*1609*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */
+ /*1612*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */
+ /*1615*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */
+ /*1618*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */
+ /*1621*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */
+ /*1624*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */
+ /*1627*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */
+ /*1630*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */
+ /*1633*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */
+ /*1636*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */
+ /*1639*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */
+ /*1642*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */
+ /*1645*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */
+ /*1648*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */
+ /*1651*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */
+ /*1654*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */
+ /*1657*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */
+ /*1660*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */
+ /*1663*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */
+ /*1666*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */
+ /*1669*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */
+ /*1672*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */
+ /*1675*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */
+ /*1678*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */
+ /*1681*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */
+ /*1684*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */
+ /*1687*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */
+ /*1690*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */
+ /*1693*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */
+ /*1696*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */
+ /*1699*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */
+ /*1702*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */
+ /*1705*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */
+ /*1708*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */
+ /*1711*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */
+ /*1714*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */
+ /*1717*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */
+ /*1720*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */
+ /*1723*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */
+ /*1726*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */
+ /*1729*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */
+ /*1732*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */
+ /*1735*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */
+ /*1738*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */
+ /*1741*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */
+ /*1744*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */
+ /*1747*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */
+ /*1750*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */
+ /*1753*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */
+ /*1756*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */
+ /*1759*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */
+ /*1762*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */
+ /*1765*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */
+ /*1768*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */
+ /*1771*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */
+ /*1774*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */
+ /*1777*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */
+ /*1780*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */
+ /*1783*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */
+ /*1786*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */
+ /*1789*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */
+ /*1792*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */
+ /*1795*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */
+ /*1798*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */
+ /*1801*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */
+ /*1804*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */
+ /*1807*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */
+ /*1810*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */
+ /*1813*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */
+ /*1816*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */
+ /*1819*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */
+ /*1822*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */
+ /*1825*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */
+ /*1828*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */
+ /*1831*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */
+ /*1834*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */
+ /*1837*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */
+ /*1840*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */
+ /*1843*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */
+ /*1846*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */
+ /*1849*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */
+ /*1852*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */
+ /*1855*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */
+ /*1858*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */
+ /*1861*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */
+ /*1864*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */
+ /*1867*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */
+ /*1870*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */
+ /*1873*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */
+ /*1876*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */
+ /*1879*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */
+ /*1882*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */
+ /*1885*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */
+ /*1888*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */
+ /*1891*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1894*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */
+ /*1897*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*1900*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */
+ /*1903*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */
+ /*1906*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */
+ /*1909*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */
+ /*1912*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */
+ /*1915*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */
+ /*1918*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */
+ /*1921*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */
+ /*1924*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */
+ /*1927*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */
+ /*1930*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */
+ /*1933*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */
+ /*1936*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */
+ /*1939*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */
+ /*1942*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1945*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */
+ /*1948*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */
+ /*1951*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */
+ /*1954*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */
+ /*1957*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */
+ /*1960*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */
+ /*1963*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */
+ /*1966*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */
+ /*1969*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */
+ /*1972*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */
+ /*1975*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1978*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */
+ /*1981*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1984*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */
+ /*1987*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */
+ /*1990*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */
+ /*1993*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */
+ /*1996*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*1999*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */
+ /*2002*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */
+ /*2005*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */
+ /*2009*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*2012*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */
+ /*2015*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */
+ /*2018*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */
+ /*2021*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */
+ /*2024*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */
+ /*2027*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */
+ /*2030*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */
+ /*2033*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */
+ /*2036*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*2039*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */
+ /*2042*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */
+ /*2045*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */
+ /*2048*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */
+ /*2051*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */
+ /*2054*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */
+ /*2057*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */
+ /*2060*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */
+ /*2063*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */
+ /*2066*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */
+ /*2069*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */
+ /*2072*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */
+ /*2075*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */
+ /*2078*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */
+ /*2081*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */
+ /*2084*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */
+ /*2087*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */
+ /*2090*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */
+ /*2093*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2096*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2099*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2102*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2105*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */
+ /*2108*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2111*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2114*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2117*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2120*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */
+ /*2123*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */
+ /*2126*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */
+ /*2129*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */
+ /*2132*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2135*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2138*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2141*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2144*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */
+ /*2147*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */
+ /*2150*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */
+ /*2153*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */
+ /*2156*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */
+ /*2159*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2162*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2165*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2168*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2171*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */
+ /*2174*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2177*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2180*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2183*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2186*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */
+ /*2189*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */
+ /*2192*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */
+ /*2195*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2198*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2201*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2204*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2207*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */
+ /*2210*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */
+ /*2213*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */
+ /*2216*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */
+ /*2219*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */
+ /*2222*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2225*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */
+ /*2228*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */
+ /*2231*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2234*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2237*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2240*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2243*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2246*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2249*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */
+ /*2252*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */
+ /*2255*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2258*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2261*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2264*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2267*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2270*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2273*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2276*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2279*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2282*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2285*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2288*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2291*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */
+ /*2294*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */
+ /*2297*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2300*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2303*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2306*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2309*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2312*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2315*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */
+ /*2318*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */
+ /*2321*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2324*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2327*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2330*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2333*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2336*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2339*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2342*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2345*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2348*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2351*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2354*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2357*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2360*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2363*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2366*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2369*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */
+ /*2372*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */
+ /*2375*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2378*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */
+ /*2381*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2384*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */
+ /*2387*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */
+ /*2390*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */
+ /*2393*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */
+ /*2396*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */
+ /*2399*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2402*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */
+ /*2405*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2408*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2411*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */
+ /*2414*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */
+ /*2417*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */
+ /*2420*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */
+ /*2423*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */
+ /*2426*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */
+ /*2429*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2432*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */
+ /*2435*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */
+ /*2438*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */
+ /*2441*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */
+ /*2444*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */
+ /*2447*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */
+ /*2450*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */
+ /*2453*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */
+ /*2456*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */
+ /*2459*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */
+ /*2462*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */
+ /*2465*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */
+ /*2468*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */
+ /*2471*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */
+ /*2474*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */
+ /*2477*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */
+ /*2480*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */
+ /*2483*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */
+ /*2486*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */
+ /*2489*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */
+ /*2492*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */
+ /*2495*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */
+ /*2498*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */
+ /*2501*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */
+ /*2504*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */
+ /*2507*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */
+ /*2510*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */
+ /*2513*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */
+ /*2516*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */
+ /*2519*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */
+ /*2522*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */
+ /*2525*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */
+ /*2528*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */
+ /*2531*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */
+ /*2534*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */
+ /*2537*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */
+ /*2540*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */
+ /*2543*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */
+ /*2546*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */
+ /*2549*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */
+ /*2552*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */
+ /*2555*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */
+ /*2558*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */
+ /*2561*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */
+ /*2564*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */
+ /*2567*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */
+ /*2570*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */
+ /*2573*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */
+ /*2576*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */
+ /*2579*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */
+ /*2582*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */
+ /*2585*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */
+ /*2588*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */
+ /*2591*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */
+ /*2594*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */
+ /*2597*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */
+ /*2600*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */
+ /*2603*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */
+ /*2606*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */
+ /*2609*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */
+ /*2612*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */
+ /*2615*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */
+ /*2618*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */
+ /*2621*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */
+ /*2624*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */
+ /*2627*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */
+ /*2630*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */
+ /*2633*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */
+ /*2636*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */
+ /*2639*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */
+ /*2642*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */
+ /*2645*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */
+ /*2648*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */
+ /*2651*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */
+ /*2654*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */
+ /*2657*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */
+ /*2660*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */
+ /*2663*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */
+ /*2666*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */
+ /*2669*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */
+ /*2672*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */
+ /*2675*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */
+ /*2678*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2681*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */
+ /*2684*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */
+ /*2687*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2690*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */
+ /*2693*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */
+ /*2696*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */
+ /*2699*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */
+ /*2702*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */
+ /*2705*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */
+ /*2708*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */
+ /*2711*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */
+ /*2714*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */
+ /*2717*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */
+ /*2720*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */
+ /*2723*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */
+ /*2726*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */
+ /*2729*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */
+ /*2732*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */
+ /*2735*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */
+ /*2738*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */
+ /*2741*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */
+ /*2744*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */
+ /*2747*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */
+ /*2750*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */
+ /*2753*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */
+ /*2756*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */
+ /*2759*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */
+ /*2762*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */
+ /*2765*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */
+ /*2768*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */
+ /*2771*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */
+ /*2774*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */
+ /*2777*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */
+ /*2780*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */
+ /*2783*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */
+ /*2786*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */
+ /*2789*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */
+ /*2792*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */
+ /*2795*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */
+ /*2798*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */
+ /*2801*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */
+ /*2804*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */
+ /*2807*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */
+ /*2810*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */
+ /*2813*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2816*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2819*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */
+ /*2822*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */
+ /*2825*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2828*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2831*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */
+ /*2834*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */
+ /*2837*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2840*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2843*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */
+ /*2846*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */
+ /*2849*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2852*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2855*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */
+ /*2858*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2861*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2864*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2867*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2870*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */
+ /*2873*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2876*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2879*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2882*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */
+ /*2885*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2888*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */
+ /*2891*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */
+ /*2894*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */
+ /*2897*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */
+ /*2900*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */
+ /*2903*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */
+ /*2906*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */
+ /*2909*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */
+ /*2912*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */
+ /*2915*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */
+ /*2918*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */
+ /*2921*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */
+ /*2924*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */
+ /*2927*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */
+ /*2930*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */
+ /*2933*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */
+ /*2936*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */
+ /*2939*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */
+ /*2942*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */
+ /*2945*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */
+ /*2948*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */
+ /*2951*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */
+ /*2954*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */
+ /*2957*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */
+ /*2960*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */
+ /*2963*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */
+ /*2966*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */
+ /*2969*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */
+ /*2972*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */
+ /*2975*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */
+ /*2978*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */
+ /*2981*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */
+ /*2984*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */
+ /*2987*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */
+ /*2990*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */
+ /*2993*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */
+ /*2996*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */
+ /*2999*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */
+ /*3002*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */
+ /*3005*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */
+ /*3008*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */
+ /*3011*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */
+ /*3014*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */
+ /*3017*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */
+ /*3020*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3023*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */
+ /*3026*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */
+ /*3029*/ 0xa64b, 2, 0x1c88, 0xa64a, /* CYRILLIC SMALL LETTER UNBLENDED UK */
+ /*3033*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */
+ /*3036*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */
+ /*3039*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */
+ /*3042*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*3045*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3048*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */
+ /*3051*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */
+ /*3054*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */
+ /*3057*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */
+ /*3060*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */
+ /*3063*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */
+ /*3066*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */
+ /*3069*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */
+ /*3072*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */
+ /*3075*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */
+ /*3078*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */
+ /*3081*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */
+ /*3084*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */
+ /*3087*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */
+ /*3090*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */
+ /*3093*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */
+ /*3096*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */
+ /*3099*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */
+ /*3102*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */
+ /*3105*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */
+ /*3108*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */
+ /*3111*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */
+ /*3114*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */
+ /*3117*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */
+ /*3120*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */
+ /*3123*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */
+ /*3126*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*3129*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */
+ /*3132*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */
+ /*3135*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */
+ /*3138*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */
+ /*3141*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */
+ /*3144*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */
+ /*3147*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */
+ /*3150*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */
+ /*3153*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */
+ /*3156*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */
+ /*3159*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */
+ /*3162*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */
+ /*3165*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */
+ /*3168*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */
+ /*3171*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */
+ /*3174*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */
+ /*3177*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */
+ /*3180*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */
+ /*3183*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */
+ /*3186*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */
+ /*3189*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */
+ /*3192*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */
+ /*3195*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */
+ /*3198*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */
+ /*3201*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */
+ /*3204*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */
+ /*3207*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */
+ /*3210*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */
+ /*3213*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */
+ /*3216*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */
+ /*3219*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */
+ /*3222*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3225*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */
+ /*3228*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */
+ /*3231*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */
+ /*3234*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */
+ /*3237*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */
+ /*3240*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */
+ /*3243*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */
+ /*3246*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */
+ /*3249*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */
+ /*3252*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */
+ /*3255*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */
+ /*3258*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */
+ /*3261*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */
+ /*3264*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */
+ /*3267*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */
+ /*3270*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */
+ /*3273*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */
+ /*3276*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */
+ /*3279*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */
+ /*3282*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */
+ /*3285*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */
+ /*3288*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */
+ /*3291*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */
+ /*3294*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */
+ /*3297*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */
+ /*3300*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */
+ /*3303*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */
+ /*3306*/ 0xa7b9, 1, 0xa7b8, /* LATIN CAPITAL LETTER U WITH STROKE */
+ /*3309*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */
+ /*3312*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */
+ /*3315*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */
+ /*3318*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */
+ /*3321*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */
+ /*3324*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */
+ /*3327*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */
+ /*3330*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */
+ /*3333*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */
+ /*3336*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */
+ /*3339*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */
+ /*3342*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */
+ /*3345*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */
+ /*3348*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */
+ /*3351*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */
+ /*3354*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */
+ /*3357*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */
+ /*3360*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */
+ /*3363*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */
+ /*3366*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */
+ /*3369*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */
+ /*3372*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */
+ /*3375*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */
+ /*3378*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */
+ /*3381*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */
+ /*3384*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */
+ /*3387*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */
+ /*3390*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */
+ /*3393*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */
+ /*3396*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */
+ /*3399*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */
+ /*3402*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */
+ /*3405*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */
+ /*3408*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */
+ /*3411*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */
+ /*3414*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */
+ /*3417*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */
+ /*3420*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */
+ /*3423*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */
+ /*3426*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */
+ /*3429*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */
+ /*3432*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */
+ /*3435*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */
+ /*3438*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */
+ /*3441*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */
+ /*3444*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */
+ /*3447*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */
+ /*3450*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */
+ /*3453*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */
+ /*3456*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */
+ /*3459*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */
+ /*3462*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */
+ /*3465*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */
+ /*3468*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */
+ /*3471*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */
+ /*3474*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */
+ /*3477*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */
+ /*3480*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */
+ /*3483*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */
+ /*3486*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */
+ /*3489*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */
+ /*3492*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */
+ /*3495*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */
+ /*3498*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */
+ /*3501*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */
+ /*3504*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */
+ /*3507*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */
+ /*3510*/ 0x0104d8, 1, 0x0104b0, /* OSAGE CAPITAL LETTER A */
+ /*3513*/ 0x0104d9, 1, 0x0104b1, /* OSAGE CAPITAL LETTER AI */
+ /*3516*/ 0x0104da, 1, 0x0104b2, /* OSAGE CAPITAL LETTER AIN */
+ /*3519*/ 0x0104db, 1, 0x0104b3, /* OSAGE CAPITAL LETTER AH */
+ /*3522*/ 0x0104dc, 1, 0x0104b4, /* OSAGE CAPITAL LETTER BRA */
+ /*3525*/ 0x0104dd, 1, 0x0104b5, /* OSAGE CAPITAL LETTER CHA */
+ /*3528*/ 0x0104de, 1, 0x0104b6, /* OSAGE CAPITAL LETTER EHCHA */
+ /*3531*/ 0x0104df, 1, 0x0104b7, /* OSAGE CAPITAL LETTER E */
+ /*3534*/ 0x0104e0, 1, 0x0104b8, /* OSAGE CAPITAL LETTER EIN */
+ /*3537*/ 0x0104e1, 1, 0x0104b9, /* OSAGE CAPITAL LETTER HA */
+ /*3540*/ 0x0104e2, 1, 0x0104ba, /* OSAGE CAPITAL LETTER HYA */
+ /*3543*/ 0x0104e3, 1, 0x0104bb, /* OSAGE CAPITAL LETTER I */
+ /*3546*/ 0x0104e4, 1, 0x0104bc, /* OSAGE CAPITAL LETTER KA */
+ /*3549*/ 0x0104e5, 1, 0x0104bd, /* OSAGE CAPITAL LETTER EHKA */
+ /*3552*/ 0x0104e6, 1, 0x0104be, /* OSAGE CAPITAL LETTER KYA */
+ /*3555*/ 0x0104e7, 1, 0x0104bf, /* OSAGE CAPITAL LETTER LA */
+ /*3558*/ 0x0104e8, 1, 0x0104c0, /* OSAGE CAPITAL LETTER MA */
+ /*3561*/ 0x0104e9, 1, 0x0104c1, /* OSAGE CAPITAL LETTER NA */
+ /*3564*/ 0x0104ea, 1, 0x0104c2, /* OSAGE CAPITAL LETTER O */
+ /*3567*/ 0x0104eb, 1, 0x0104c3, /* OSAGE CAPITAL LETTER OIN */
+ /*3570*/ 0x0104ec, 1, 0x0104c4, /* OSAGE CAPITAL LETTER PA */
+ /*3573*/ 0x0104ed, 1, 0x0104c5, /* OSAGE CAPITAL LETTER EHPA */
+ /*3576*/ 0x0104ee, 1, 0x0104c6, /* OSAGE CAPITAL LETTER SA */
+ /*3579*/ 0x0104ef, 1, 0x0104c7, /* OSAGE CAPITAL LETTER SHA */
+ /*3582*/ 0x0104f0, 1, 0x0104c8, /* OSAGE CAPITAL LETTER TA */
+ /*3585*/ 0x0104f1, 1, 0x0104c9, /* OSAGE CAPITAL LETTER EHTA */
+ /*3588*/ 0x0104f2, 1, 0x0104ca, /* OSAGE CAPITAL LETTER TSA */
+ /*3591*/ 0x0104f3, 1, 0x0104cb, /* OSAGE CAPITAL LETTER EHTSA */
+ /*3594*/ 0x0104f4, 1, 0x0104cc, /* OSAGE CAPITAL LETTER TSHA */
+ /*3597*/ 0x0104f5, 1, 0x0104cd, /* OSAGE CAPITAL LETTER DHA */
+ /*3600*/ 0x0104f6, 1, 0x0104ce, /* OSAGE CAPITAL LETTER U */
+ /*3603*/ 0x0104f7, 1, 0x0104cf, /* OSAGE CAPITAL LETTER WA */
+ /*3606*/ 0x0104f8, 1, 0x0104d0, /* OSAGE CAPITAL LETTER KHA */
+ /*3609*/ 0x0104f9, 1, 0x0104d1, /* OSAGE CAPITAL LETTER GHA */
+ /*3612*/ 0x0104fa, 1, 0x0104d2, /* OSAGE CAPITAL LETTER ZA */
+ /*3615*/ 0x0104fb, 1, 0x0104d3, /* OSAGE CAPITAL LETTER ZHA */
+ /*3618*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */
+ /*3621*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */
+ /*3624*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */
+ /*3627*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */
+ /*3630*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */
+ /*3633*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */
+ /*3636*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */
+ /*3639*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */
+ /*3642*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */
+ /*3645*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */
+ /*3648*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */
+ /*3651*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */
+ /*3654*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */
+ /*3657*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */
+ /*3660*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */
+ /*3663*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */
+ /*3666*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */
+ /*3669*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */
+ /*3672*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */
+ /*3675*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */
+ /*3678*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */
+ /*3681*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */
+ /*3684*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */
+ /*3687*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */
+ /*3690*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */
+ /*3693*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */
+ /*3696*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */
+ /*3699*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */
+ /*3702*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */
+ /*3705*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3708*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3711*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */
+ /*3714*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */
+ /*3717*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */
+ /*3720*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */
+ /*3723*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */
+ /*3726*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */
+ /*3729*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */
+ /*3732*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */
+ /*3735*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */
+ /*3738*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */
+ /*3741*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */
+ /*3744*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */
+ /*3747*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */
+ /*3750*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */
+ /*3753*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */
+ /*3756*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */
+ /*3759*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */
+ /*3762*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */
+ /*3765*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */
+ /*3768*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */
+ /*3771*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */
+ /*3774*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */
+ /*3777*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */
+ /*3780*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */
+ /*3783*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */
+ /*3786*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */
+ /*3789*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */
+ /*3792*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */
+ /*3795*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */
+ /*3798*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */
+ /*3801*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */
+ /*3804*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */
+ /*3807*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */
+ /*3810*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */
+ /*3813*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */
+ /*3816*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */
+ /*3819*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */
+ /*3822*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */
+ /*3825*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */
+ /*3828*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */
+ /*3831*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */
+ /*3834*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */
+ /*3837*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */
+ /*3840*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */
+ /*3843*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */
+ /*3846*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */
+ /*3849*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */
+ /*3852*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */
+ /*3855*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */
+ /*3858*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */
+ /*3861*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */
+ /*3864*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */
+ /*3867*/ 0x016e60, 1, 0x016e40, /* MEDEFAIDRIN CAPITAL LETTER M */
+ /*3870*/ 0x016e61, 1, 0x016e41, /* MEDEFAIDRIN CAPITAL LETTER S */
+ /*3873*/ 0x016e62, 1, 0x016e42, /* MEDEFAIDRIN CAPITAL LETTER V */
+ /*3876*/ 0x016e63, 1, 0x016e43, /* MEDEFAIDRIN CAPITAL LETTER W */
+ /*3879*/ 0x016e64, 1, 0x016e44, /* MEDEFAIDRIN CAPITAL LETTER ATIU */
+ /*3882*/ 0x016e65, 1, 0x016e45, /* MEDEFAIDRIN CAPITAL LETTER Z */
+ /*3885*/ 0x016e66, 1, 0x016e46, /* MEDEFAIDRIN CAPITAL LETTER KP */
+ /*3888*/ 0x016e67, 1, 0x016e47, /* MEDEFAIDRIN CAPITAL LETTER P */
+ /*3891*/ 0x016e68, 1, 0x016e48, /* MEDEFAIDRIN CAPITAL LETTER T */
+ /*3894*/ 0x016e69, 1, 0x016e49, /* MEDEFAIDRIN CAPITAL LETTER G */
+ /*3897*/ 0x016e6a, 1, 0x016e4a, /* MEDEFAIDRIN CAPITAL LETTER F */
+ /*3900*/ 0x016e6b, 1, 0x016e4b, /* MEDEFAIDRIN CAPITAL LETTER I */
+ /*3903*/ 0x016e6c, 1, 0x016e4c, /* MEDEFAIDRIN CAPITAL LETTER K */
+ /*3906*/ 0x016e6d, 1, 0x016e4d, /* MEDEFAIDRIN CAPITAL LETTER A */
+ /*3909*/ 0x016e6e, 1, 0x016e4e, /* MEDEFAIDRIN CAPITAL LETTER J */
+ /*3912*/ 0x016e6f, 1, 0x016e4f, /* MEDEFAIDRIN CAPITAL LETTER E */
+ /*3915*/ 0x016e70, 1, 0x016e50, /* MEDEFAIDRIN CAPITAL LETTER B */
+ /*3918*/ 0x016e71, 1, 0x016e51, /* MEDEFAIDRIN CAPITAL LETTER C */
+ /*3921*/ 0x016e72, 1, 0x016e52, /* MEDEFAIDRIN CAPITAL LETTER U */
+ /*3924*/ 0x016e73, 1, 0x016e53, /* MEDEFAIDRIN CAPITAL LETTER YU */
+ /*3927*/ 0x016e74, 1, 0x016e54, /* MEDEFAIDRIN CAPITAL LETTER L */
+ /*3930*/ 0x016e75, 1, 0x016e55, /* MEDEFAIDRIN CAPITAL LETTER Q */
+ /*3933*/ 0x016e76, 1, 0x016e56, /* MEDEFAIDRIN CAPITAL LETTER HP */
+ /*3936*/ 0x016e77, 1, 0x016e57, /* MEDEFAIDRIN CAPITAL LETTER NY */
+ /*3939*/ 0x016e78, 1, 0x016e58, /* MEDEFAIDRIN CAPITAL LETTER X */
+ /*3942*/ 0x016e79, 1, 0x016e59, /* MEDEFAIDRIN CAPITAL LETTER D */
+ /*3945*/ 0x016e7a, 1, 0x016e5a, /* MEDEFAIDRIN CAPITAL LETTER OE */
+ /*3948*/ 0x016e7b, 1, 0x016e5b, /* MEDEFAIDRIN CAPITAL LETTER N */
+ /*3951*/ 0x016e7c, 1, 0x016e5c, /* MEDEFAIDRIN CAPITAL LETTER R */
+ /*3954*/ 0x016e7d, 1, 0x016e5d, /* MEDEFAIDRIN CAPITAL LETTER O */
+ /*3957*/ 0x016e7e, 1, 0x016e5e, /* MEDEFAIDRIN CAPITAL LETTER AI */
+ /*3960*/ 0x016e7f, 1, 0x016e5f, /* MEDEFAIDRIN CAPITAL LETTER Y */
+ /*3963*/ 0x01e922, 1, 0x01e900, /* ADLAM CAPITAL LETTER ALIF */
+ /*3966*/ 0x01e923, 1, 0x01e901, /* ADLAM CAPITAL LETTER DAALI */
+ /*3969*/ 0x01e924, 1, 0x01e902, /* ADLAM CAPITAL LETTER LAAM */
+ /*3972*/ 0x01e925, 1, 0x01e903, /* ADLAM CAPITAL LETTER MIIM */
+ /*3975*/ 0x01e926, 1, 0x01e904, /* ADLAM CAPITAL LETTER BA */
+ /*3978*/ 0x01e927, 1, 0x01e905, /* ADLAM CAPITAL LETTER SINNYIIYHE */
+ /*3981*/ 0x01e928, 1, 0x01e906, /* ADLAM CAPITAL LETTER PE */
+ /*3984*/ 0x01e929, 1, 0x01e907, /* ADLAM CAPITAL LETTER BHE */
+ /*3987*/ 0x01e92a, 1, 0x01e908, /* ADLAM CAPITAL LETTER RA */
+ /*3990*/ 0x01e92b, 1, 0x01e909, /* ADLAM CAPITAL LETTER E */
+ /*3993*/ 0x01e92c, 1, 0x01e90a, /* ADLAM CAPITAL LETTER FA */
+ /*3996*/ 0x01e92d, 1, 0x01e90b, /* ADLAM CAPITAL LETTER I */
+ /*3999*/ 0x01e92e, 1, 0x01e90c, /* ADLAM CAPITAL LETTER O */
+ /*4002*/ 0x01e92f, 1, 0x01e90d, /* ADLAM CAPITAL LETTER DHA */
+ /*4005*/ 0x01e930, 1, 0x01e90e, /* ADLAM CAPITAL LETTER YHE */
+ /*4008*/ 0x01e931, 1, 0x01e90f, /* ADLAM CAPITAL LETTER WAW */
+ /*4011*/ 0x01e932, 1, 0x01e910, /* ADLAM CAPITAL LETTER NUN */
+ /*4014*/ 0x01e933, 1, 0x01e911, /* ADLAM CAPITAL LETTER KAF */
+ /*4017*/ 0x01e934, 1, 0x01e912, /* ADLAM CAPITAL LETTER YA */
+ /*4020*/ 0x01e935, 1, 0x01e913, /* ADLAM CAPITAL LETTER U */
+ /*4023*/ 0x01e936, 1, 0x01e914, /* ADLAM CAPITAL LETTER JIIM */
+ /*4026*/ 0x01e937, 1, 0x01e915, /* ADLAM CAPITAL LETTER CHI */
+ /*4029*/ 0x01e938, 1, 0x01e916, /* ADLAM CAPITAL LETTER HA */
+ /*4032*/ 0x01e939, 1, 0x01e917, /* ADLAM CAPITAL LETTER QAAF */
+ /*4035*/ 0x01e93a, 1, 0x01e918, /* ADLAM CAPITAL LETTER GA */
+ /*4038*/ 0x01e93b, 1, 0x01e919, /* ADLAM CAPITAL LETTER NYA */
+ /*4041*/ 0x01e93c, 1, 0x01e91a, /* ADLAM CAPITAL LETTER TU */
+ /*4044*/ 0x01e93d, 1, 0x01e91b, /* ADLAM CAPITAL LETTER NHA */
+ /*4047*/ 0x01e93e, 1, 0x01e91c, /* ADLAM CAPITAL LETTER VA */
+ /*4050*/ 0x01e93f, 1, 0x01e91d, /* ADLAM CAPITAL LETTER KHA */
+ /*4053*/ 0x01e940, 1, 0x01e91e, /* ADLAM CAPITAL LETTER GBE */
+ /*4056*/ 0x01e941, 1, 0x01e91f, /* ADLAM CAPITAL LETTER ZAL */
+ /*4059*/ 0x01e942, 1, 0x01e920, /* ADLAM CAPITAL LETTER KPO */
+ /*4062*/ 0x01e943, 1, 0x01e921, /* ADLAM CAPITAL LETTER SHA */
+#define FOLDS1_NORMAL_END_INDEX 4065
/* ----- LOCALE ----- */
- /*3606*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */
-#define FOLDS1_END_INDEX 3609
+ /*4065*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */
+#define FOLDS1_END_INDEX 4068
};
OnigCodePoint OnigUnicodeFolds2[] = {
diff --git a/ext/mbstring/oniguruma/src/unicode_property_data.c b/ext/mbstring/oniguruma/src/unicode_property_data.c
index 4ca438fea6..7cfc87ed96 100644
--- a/ext/mbstring/oniguruma/src/unicode_property_data.c
+++ b/ext/mbstring/oniguruma/src/unicode_property_data.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf1.tmp unicode_property_data.gperf */
/* Computed positions: -k'1-3,5-6,12,16,$' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -26,7 +26,7 @@
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
#endif
@@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1,
/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */
static const OnigCodePoint
-CR_Alpha[] = { 617,
+CR_Alpha[] = { 676,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -69,14 +69,14 @@ CR_Alpha[] = { 617,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0657,
0x0659, 0x065f,
@@ -94,7 +94,10 @@ CR_Alpha[] = { 617,
0x0800, 0x0817,
0x081a, 0x082c,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d4, 0x08df,
0x08e3, 0x08e9,
0x08f0, 0x093b,
0x093d, 0x094c,
@@ -115,6 +118,7 @@ CR_Alpha[] = { 617,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09f0, 0x09f1,
+0x09fc, 0x09fc,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -142,7 +146,7 @@ CR_Alpha[] = { 617,
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
-0x0af9, 0x0af9,
+0x0af9, 0x0afc,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -183,7 +187,7 @@ CR_Alpha[] = { 617,
0x0c55, 0x0c56,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -196,7 +200,7 @@ CR_Alpha[] = { 617,
0x0cde, 0x0cde,
0x0ce0, 0x0ce3,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
0x0d12, 0x0d3a,
@@ -204,7 +208,7 @@ CR_Alpha[] = { 617,
0x0d46, 0x0d48,
0x0d4a, 0x0d4c,
0x0d4e, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d7a, 0x0d7f,
0x0d82, 0x0d83,
@@ -291,7 +295,7 @@ CR_Alpha[] = { 617,
0x17b6, 0x17c8,
0x17d7, 0x17d7,
0x17dc, 0x17dc,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -315,6 +319,9 @@ CR_Alpha[] = { 617,
0x1c00, 0x1c35,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
@@ -386,12 +393,12 @@ CR_Alpha[] = { 617,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -402,17 +409,17 @@ CR_Alpha[] = { 617,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
+0xa8c5, 0xa8c5,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa90a, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
@@ -478,13 +485,15 @@ CR_Alpha[] = { 617,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
0x103c8, 0x103cf,
0x103d1, 0x103d5,
0x10400, 0x1049d,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -508,7 +517,7 @@ CR_Alpha[] = { 617,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -520,10 +529,15 @@ CR_Alpha[] = { 617,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11000, 0x11045,
0x11082, 0x110b8,
0x110d0, 0x110e8,
0x11100, 0x11132,
+0x11144, 0x11146,
0x11150, 0x11172,
0x11176, 0x11176,
0x11180, 0x111bf,
@@ -533,6 +547,7 @@ CR_Alpha[] = { 617,
0x11200, 0x11211,
0x11213, 0x11234,
0x11237, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -552,6 +567,9 @@ CR_Alpha[] = { 617,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135d, 0x11363,
+0x11400, 0x11441,
+0x11443, 0x11445,
+0x11447, 0x1144a,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -562,11 +580,39 @@ CR_Alpha[] = { 617,
0x11640, 0x11640,
0x11644, 0x11644,
0x11680, 0x116b5,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172a,
+0x11800, 0x11838,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x11a00, 0x11a32,
+0x11a35, 0x11a3e,
+0x11a50, 0x11a83,
+0x11a86, 0x11a97,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c3e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d41,
+0x11d43, 0x11d43,
+0x11d46, 0x11d47,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d96,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -579,10 +625,15 @@ CR_Alpha[] = { 617,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -618,7 +669,14 @@ CR_Alpha[] = { 617,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
+0x1e947, 0x1e947,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -659,6 +717,7 @@ CR_Alpha[] = { 617,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_Alpha */
@@ -684,7 +743,7 @@ CR_Cntrl[] = { 2,
/* PROPERTY: 'Digit': POSIX [[:Digit:]] */
static const OnigCodePoint
-CR_Digit[] = { 51,
+CR_Digit[] = { 57,
0x0030, 0x0039,
0x0660, 0x0669,
0x06f0, 0x06f9,
@@ -723,24 +782,30 @@ CR_Digit[] = { 51,
0xabf0, 0xabf9,
0xff10, 0xff19,
0x104a0, 0x104a9,
+0x10d30, 0x10d39,
0x11066, 0x1106f,
0x110f0, 0x110f9,
0x11136, 0x1113f,
0x111d0, 0x111d9,
0x112f0, 0x112f9,
+0x11450, 0x11459,
0x114d0, 0x114d9,
0x11650, 0x11659,
0x116c0, 0x116c9,
0x11730, 0x11739,
0x118e0, 0x118e9,
+0x11c50, 0x11c59,
+0x11d50, 0x11d59,
+0x11da0, 0x11da9,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
0x1d7ce, 0x1d7ff,
+0x1e950, 0x1e959,
}; /* END of CR_Digit */
/* PROPERTY: 'Graph': POSIX [[:Graph:]] */
static const OnigCodePoint
-CR_Graph[] = { 618,
+CR_Graph[] = { 663,
0x0021, 0x007e,
0x00a1, 0x0377,
0x037a, 0x037f,
@@ -749,24 +814,24 @@ CR_Graph[] = { 618,
0x038e, 0x03a1,
0x03a3, 0x052f,
0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
+0x0559, 0x058a,
0x058d, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f4,
+0x05ef, 0x05f4,
0x0600, 0x061c,
0x061e, 0x070d,
0x070f, 0x074a,
0x074d, 0x07b1,
0x07c0, 0x07fa,
-0x0800, 0x082d,
+0x07fd, 0x082d,
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
+0x0860, 0x086a,
0x08a0, 0x08b4,
-0x08e3, 0x0983,
+0x08b6, 0x08bd,
+0x08d3, 0x0983,
0x0985, 0x098c,
0x098f, 0x0990,
0x0993, 0x09a8,
@@ -779,7 +844,7 @@ CR_Graph[] = { 618,
0x09d7, 0x09d7,
0x09dc, 0x09dd,
0x09df, 0x09e3,
-0x09e6, 0x09fb,
+0x09e6, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -795,7 +860,7 @@ CR_Graph[] = { 618,
0x0a51, 0x0a51,
0x0a59, 0x0a5c,
0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
+0x0a66, 0x0a76,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -809,7 +874,7 @@ CR_Graph[] = { 618,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -840,8 +905,7 @@ CR_Graph[] = { 618,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -852,9 +916,7 @@ CR_Graph[] = { 618,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
+0x0c78, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -867,17 +929,14 @@ CR_Graph[] = { 618,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
0x0d82, 0x0d83,
0x0d85, 0x0d96,
0x0d9a, 0x0db1,
@@ -954,7 +1013,7 @@ CR_Graph[] = { 618,
0x17f0, 0x17f9,
0x1800, 0x180e,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -978,12 +1037,12 @@ CR_Graph[] = { 618,
0x1b80, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd0, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd0, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -1006,18 +1065,15 @@ CR_Graph[] = { 618,
0x2066, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x20d0, 0x20f0,
0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
+0x2190, 0x2426,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
@@ -1035,7 +1091,7 @@ CR_Graph[] = { 618,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e42,
+0x2de0, 0x2e4e,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -1043,27 +1099,25 @@ CR_Graph[] = { 618,
0x3001, 0x303f,
0x3041, 0x3096,
0x3099, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa700, 0xa7b9,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8ce, 0xa8d9,
-0xa8e0, 0xa8fd,
-0xa900, 0xa953,
+0xa8e0, 0xa953,
0xa95f, 0xa97c,
0xa980, 0xa9cd,
0xa9cf, 0xa9d9,
@@ -1122,7 +1176,7 @@ CR_Graph[] = { 618,
0x10080, 0x100fa,
0x10100, 0x10102,
0x10107, 0x10133,
-0x10137, 0x1018c,
+0x10137, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fd,
@@ -1130,13 +1184,15 @@ CR_Graph[] = { 618,
0x102a0, 0x102d0,
0x102e0, 0x102fb,
0x10300, 0x10323,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x1039f, 0x103c3,
0x103c8, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x1056f, 0x1056f,
@@ -1162,9 +1218,9 @@ CR_Graph[] = { 618,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
+0x10a3f, 0x10a48,
0x10a50, 0x10a58,
0x10a60, 0x10a9f,
0x10ac0, 0x10ae6,
@@ -1178,21 +1234,25 @@ CR_Graph[] = { 618,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
+0x10cfa, 0x10d27,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f59,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
+0x110cd, 0x110cd,
0x110d0, 0x110e8,
0x110f0, 0x110f9,
0x11100, 0x11134,
-0x11136, 0x11143,
+0x11136, 0x11146,
0x11150, 0x11176,
0x11180, 0x111cd,
0x111d0, 0x111df,
0x111e1, 0x111f4,
0x11200, 0x11211,
-0x11213, 0x1123d,
+0x11213, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -1207,7 +1267,7 @@ CR_Graph[] = { 618,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -1215,20 +1275,49 @@ CR_Graph[] = { 618,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
0x115b8, 0x115dd,
0x11600, 0x11644,
0x11650, 0x11659,
+0x11660, 0x1166c,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x1173f,
+0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x11a00, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef8,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
@@ -1246,10 +1335,15 @@ CR_Graph[] = { 618,
0x16b5b, 0x16b61,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -1259,8 +1353,9 @@ CR_Graph[] = { 618,
0x1d100, 0x1d126,
0x1d129, 0x1d1e8,
0x1d200, 0x1d245,
+0x1d2e0, 0x1d2f3,
0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+0x1d360, 0x1d378,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -1284,8 +1379,17 @@ CR_Graph[] = { 618,
0x1d7ce, 0x1da8b,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -1327,32 +1431,38 @@ CR_Graph[] = { 618,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -1363,7 +1473,7 @@ CR_Graph[] = { 618,
/* PROPERTY: 'Lower': POSIX [[:Lower:]] */
static const OnigCodePoint
-CR_Lower[] = { 637,
+CR_Lower[] = { 645,
0x0061, 0x007a,
0x00aa, 0x00aa,
0x00b5, 0x00b5,
@@ -1638,8 +1748,11 @@ CR_Lower[] = { 637,
0x052b, 0x052b,
0x052d, 0x052d,
0x052f, 0x052f,
-0x0561, 0x0587,
+0x0560, 0x0588,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
0x13f8, 0x13fd,
+0x1c80, 0x1c88,
0x1d00, 0x1dbf,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -1961,8 +2074,10 @@ CR_Lower[] = { 637,
0xa7a5, 0xa7a5,
0xa7a7, 0xa7a7,
0xa7a9, 0xa7a9,
+0xa7af, 0xa7af,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
+0xa7b9, 0xa7b9,
0xa7f8, 0xa7fa,
0xab30, 0xab5a,
0xab5c, 0xab65,
@@ -1971,8 +2086,10 @@ CR_Lower[] = { 637,
0xfb13, 0xfb17,
0xff41, 0xff5a,
0x10428, 0x1044f,
+0x104d8, 0x104fb,
0x10cc0, 0x10cf2,
0x118c0, 0x118df,
+0x16e60, 0x16e7f,
0x1d41a, 0x1d433,
0x1d44e, 0x1d454,
0x1d456, 0x1d467,
@@ -2001,11 +2118,12 @@ CR_Lower[] = { 637,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7c9,
0x1d7cb, 0x1d7cb,
+0x1e922, 0x1e943,
}; /* END of CR_Lower */
/* PROPERTY: 'Print': POSIX [[:Print:]] */
static const OnigCodePoint
-CR_Print[] = { 615,
+CR_Print[] = { 660,
0x0020, 0x007e,
0x00a0, 0x0377,
0x037a, 0x037f,
@@ -2014,24 +2132,24 @@ CR_Print[] = { 615,
0x038e, 0x03a1,
0x03a3, 0x052f,
0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
+0x0559, 0x058a,
0x058d, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f4,
+0x05ef, 0x05f4,
0x0600, 0x061c,
0x061e, 0x070d,
0x070f, 0x074a,
0x074d, 0x07b1,
0x07c0, 0x07fa,
-0x0800, 0x082d,
+0x07fd, 0x082d,
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
+0x0860, 0x086a,
0x08a0, 0x08b4,
-0x08e3, 0x0983,
+0x08b6, 0x08bd,
+0x08d3, 0x0983,
0x0985, 0x098c,
0x098f, 0x0990,
0x0993, 0x09a8,
@@ -2044,7 +2162,7 @@ CR_Print[] = { 615,
0x09d7, 0x09d7,
0x09dc, 0x09dd,
0x09df, 0x09e3,
-0x09e6, 0x09fb,
+0x09e6, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -2060,7 +2178,7 @@ CR_Print[] = { 615,
0x0a51, 0x0a51,
0x0a59, 0x0a5c,
0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
+0x0a66, 0x0a76,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -2074,7 +2192,7 @@ CR_Print[] = { 615,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -2105,8 +2223,7 @@ CR_Print[] = { 615,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -2117,9 +2234,7 @@ CR_Print[] = { 615,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
+0x0c78, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -2132,17 +2247,14 @@ CR_Print[] = { 615,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
0x0d82, 0x0d83,
0x0d85, 0x0d96,
0x0d9a, 0x0db1,
@@ -2218,7 +2330,7 @@ CR_Print[] = { 615,
0x17f0, 0x17f9,
0x1800, 0x180e,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -2242,12 +2354,12 @@ CR_Print[] = { 615,
0x1b80, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd0, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd0, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -2268,18 +2380,15 @@ CR_Print[] = { 615,
0x2066, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x20d0, 0x20f0,
0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
+0x2190, 0x2426,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
@@ -2297,7 +2406,7 @@ CR_Print[] = { 615,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e42,
+0x2de0, 0x2e4e,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -2305,27 +2414,25 @@ CR_Print[] = { 615,
0x3000, 0x303f,
0x3041, 0x3096,
0x3099, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa700, 0xa7b9,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8ce, 0xa8d9,
-0xa8e0, 0xa8fd,
-0xa900, 0xa953,
+0xa8e0, 0xa953,
0xa95f, 0xa97c,
0xa980, 0xa9cd,
0xa9cf, 0xa9d9,
@@ -2384,7 +2491,7 @@ CR_Print[] = { 615,
0x10080, 0x100fa,
0x10100, 0x10102,
0x10107, 0x10133,
-0x10137, 0x1018c,
+0x10137, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fd,
@@ -2392,13 +2499,15 @@ CR_Print[] = { 615,
0x102a0, 0x102d0,
0x102e0, 0x102fb,
0x10300, 0x10323,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x1039f, 0x103c3,
0x103c8, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x1056f, 0x1056f,
@@ -2424,9 +2533,9 @@ CR_Print[] = { 615,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
+0x10a3f, 0x10a48,
0x10a50, 0x10a58,
0x10a60, 0x10a9f,
0x10ac0, 0x10ae6,
@@ -2440,21 +2549,25 @@ CR_Print[] = { 615,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
+0x10cfa, 0x10d27,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f59,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
+0x110cd, 0x110cd,
0x110d0, 0x110e8,
0x110f0, 0x110f9,
0x11100, 0x11134,
-0x11136, 0x11143,
+0x11136, 0x11146,
0x11150, 0x11176,
0x11180, 0x111cd,
0x111d0, 0x111df,
0x111e1, 0x111f4,
0x11200, 0x11211,
-0x11213, 0x1123d,
+0x11213, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -2469,7 +2582,7 @@ CR_Print[] = { 615,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -2477,20 +2590,49 @@ CR_Print[] = { 615,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
0x115b8, 0x115dd,
0x11600, 0x11644,
0x11650, 0x11659,
+0x11660, 0x1166c,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x1173f,
+0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x11a00, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef8,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
@@ -2508,10 +2650,15 @@ CR_Print[] = { 615,
0x16b5b, 0x16b61,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -2521,8 +2668,9 @@ CR_Print[] = { 615,
0x1d100, 0x1d126,
0x1d129, 0x1d1e8,
0x1d200, 0x1d245,
+0x1d2e0, 0x1d2f3,
0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+0x1d360, 0x1d378,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -2546,8 +2694,17 @@ CR_Print[] = { 615,
0x1d7ce, 0x1da8b,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -2589,32 +2746,38 @@ CR_Print[] = { 615,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -2625,7 +2788,7 @@ CR_Print[] = { 615,
/* PROPERTY: 'Punct': POSIX [[:Punct:]] */
static const OnigCodePoint
-CR_Punct[] = { 161,
+CR_Punct[] = { 178,
0x0021, 0x0023,
0x0025, 0x002a,
0x002c, 0x002f,
@@ -2662,7 +2825,10 @@ CR_Punct[] = { 161,
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
+0x09fd, 0x09fd,
+0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
@@ -2711,7 +2877,7 @@ CR_Punct[] = { 161,
0x2cfe, 0x2cff,
0x2d70, 0x2d70,
0x2e00, 0x2e2e,
-0x2e30, 0x2e42,
+0x2e30, 0x2e4e,
0x3001, 0x3003,
0x3008, 0x3011,
0x3014, 0x301f,
@@ -2765,28 +2931,42 @@ CR_Punct[] = { 161,
0x10af0, 0x10af6,
0x10b39, 0x10b3f,
0x10b99, 0x10b9c,
+0x10f55, 0x10f59,
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
0x11140, 0x11143,
0x11174, 0x11175,
-0x111c5, 0x111c9,
+0x111c5, 0x111c8,
0x111cd, 0x111cd,
0x111db, 0x111db,
0x111dd, 0x111df,
0x11238, 0x1123d,
0x112a9, 0x112a9,
+0x1144b, 0x1144f,
+0x1145b, 0x1145b,
+0x1145d, 0x1145d,
0x114c6, 0x114c6,
0x115c1, 0x115d7,
0x11641, 0x11643,
+0x11660, 0x1166c,
0x1173c, 0x1173e,
+0x1183b, 0x1183b,
+0x11a3f, 0x11a46,
+0x11a9a, 0x11a9c,
+0x11a9e, 0x11aa2,
+0x11c41, 0x11c45,
+0x11c70, 0x11c71,
+0x11ef7, 0x11ef8,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
+0x16e97, 0x16e9a,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
+0x1e95e, 0x1e95f,
}; /* END of CR_Punct */
/* PROPERTY: 'Space': POSIX [[:Space:]] */
@@ -2806,7 +2986,7 @@ CR_Space[] = { 10,
/* PROPERTY: 'Upper': POSIX [[:Upper:]] */
static const OnigCodePoint
-CR_Upper[] = { 630,
+CR_Upper[] = { 636,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -3083,6 +3263,8 @@ CR_Upper[] = { 630,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
0x13a0, 0x13f5,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -3396,13 +3578,16 @@ CR_Upper[] = { 630,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
+0xa7aa, 0xa7ae,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
+0xa7b8, 0xa7b8,
0xff21, 0xff3a,
0x10400, 0x10427,
+0x104b0, 0x104d3,
0x10c80, 0x10cb2,
0x118a0, 0x118bf,
+0x16e40, 0x16e5f,
0x1d400, 0x1d419,
0x1d434, 0x1d44d,
0x1d468, 0x1d481,
@@ -3434,6 +3619,7 @@ CR_Upper[] = { 630,
0x1d756, 0x1d76e,
0x1d790, 0x1d7a8,
0x1d7ca, 0x1d7ca,
+0x1e900, 0x1e921,
0x1f130, 0x1f149,
0x1f150, 0x1f169,
0x1f170, 0x1f189,
@@ -3449,7 +3635,7 @@ CR_XDigit[] = { 3,
/* PROPERTY: 'Word': POSIX [[:Word:]] */
static const OnigCodePoint
-CR_Word[] = { 654,
+CR_Word[] = { 710,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -3477,14 +3663,14 @@ CR_Word[] = { 654,
0x0483, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x0591, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0669,
0x066e, 0x06d3,
@@ -3496,9 +3682,13 @@ CR_Word[] = { 654,
0x074d, 0x07b1,
0x07c0, 0x07f5,
0x07fa, 0x07fa,
+0x07fd, 0x07fd,
0x0800, 0x082d,
0x0840, 0x085b,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d3, 0x08e1,
0x08e3, 0x0963,
0x0966, 0x096f,
0x0971, 0x0983,
@@ -3515,6 +3705,8 @@ CR_Word[] = { 654,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09e6, 0x09f1,
+0x09fc, 0x09fc,
+0x09fe, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -3544,7 +3736,7 @@ CR_Word[] = { 654,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -3576,8 +3768,7 @@ CR_Word[] = { 654,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -3588,7 +3779,7 @@ CR_Word[] = { 654,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -3602,14 +3793,13 @@ CR_Word[] = { 654,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d66, 0x0d6f,
0x0d7a, 0x0d7f,
@@ -3702,7 +3892,7 @@ CR_Word[] = { 654,
0x17e0, 0x17e9,
0x180b, 0x180d,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -3727,11 +3917,13 @@ CR_Word[] = { 654,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1cd4, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -3800,12 +3992,12 @@ CR_Word[] = { 654,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -3815,16 +4007,14 @@ CR_Word[] = { 654,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa827,
0xa840, 0xa873,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8e0, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
+0xa8fd, 0xa92d,
0xa930, 0xa953,
0xa960, 0xa97c,
0xa980, 0xa9c0,
@@ -3894,7 +4084,7 @@ CR_Word[] = { 654,
0x102a0, 0x102d0,
0x102e0, 0x102e0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
@@ -3902,6 +4092,8 @@ CR_Word[] = { 654,
0x103d1, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -3925,7 +4117,7 @@ CR_Word[] = { 654,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
0x10a3f, 0x10a3f,
0x10a60, 0x10a7c,
@@ -3939,6 +4131,11 @@ CR_Word[] = { 654,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f50,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -3946,14 +4143,16 @@ CR_Word[] = { 654,
0x110f0, 0x110f9,
0x11100, 0x11134,
0x11136, 0x1113f,
+0x11144, 0x11146,
0x11150, 0x11173,
0x11176, 0x11176,
0x11180, 0x111c4,
-0x111ca, 0x111cc,
+0x111c9, 0x111cc,
0x111d0, 0x111da,
0x111dc, 0x111dc,
0x11200, 0x11211,
0x11213, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -3968,7 +4167,7 @@ CR_Word[] = { 654,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -3976,6 +4175,9 @@ CR_Word[] = { 654,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x1144a,
+0x11450, 0x11459,
+0x1145e, 0x1145e,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -3987,12 +4189,39 @@ CR_Word[] = { 654,
0x11650, 0x11659,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x11739,
+0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x11a00, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11a99,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -4008,10 +4237,15 @@ CR_Word[] = { 654,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -4060,8 +4294,15 @@ CR_Word[] = { 654,
0x1da84, 0x1da84,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -4102,13 +4343,14 @@ CR_Word[] = { 654,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
}; /* END of CR_Word */
/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */
static const OnigCodePoint
-CR_Alnum[] = { 648,
+CR_Alnum[] = { 713,
0x0030, 0x0039,
0x0041, 0x005a,
0x0061, 0x007a,
@@ -4136,14 +4378,14 @@ CR_Alnum[] = { 648,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0657,
0x0659, 0x0669,
@@ -4160,7 +4402,10 @@ CR_Alnum[] = { 648,
0x0800, 0x0817,
0x081a, 0x082c,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d4, 0x08df,
0x08e3, 0x08e9,
0x08f0, 0x093b,
0x093d, 0x094c,
@@ -4182,6 +4427,7 @@ CR_Alnum[] = { 648,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09e6, 0x09f1,
+0x09fc, 0x09fc,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -4210,7 +4456,7 @@ CR_Alnum[] = { 648,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
+0x0af9, 0x0afc,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4254,7 +4500,7 @@ CR_Alnum[] = { 648,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -4268,7 +4514,7 @@ CR_Alnum[] = { 648,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
0x0d12, 0x0d3a,
@@ -4276,7 +4522,7 @@ CR_Alnum[] = { 648,
0x0d46, 0x0d48,
0x0d4a, 0x0d4c,
0x0d4e, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d66, 0x0d6f,
0x0d7a, 0x0d7f,
@@ -4371,7 +4617,7 @@ CR_Alnum[] = { 648,
0x17dc, 0x17dc,
0x17e0, 0x17e9,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -4398,6 +4644,9 @@ CR_Alnum[] = { 648,
0x1c00, 0x1c35,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
@@ -4469,12 +4718,12 @@ CR_Alnum[] = { 648,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -4484,18 +4733,18 @@ CR_Alnum[] = { 648,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
+0xa8c5, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa900, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
@@ -4563,7 +4812,7 @@ CR_Alnum[] = { 648,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
@@ -4571,6 +4820,8 @@ CR_Alnum[] = { 648,
0x103d1, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -4594,7 +4845,7 @@ CR_Alnum[] = { 648,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -4606,6 +4857,11 @@ CR_Alnum[] = { 648,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11000, 0x11045,
0x11066, 0x1106f,
0x11082, 0x110b8,
@@ -4613,6 +4869,7 @@ CR_Alnum[] = { 648,
0x110f0, 0x110f9,
0x11100, 0x11132,
0x11136, 0x1113f,
+0x11144, 0x11146,
0x11150, 0x11172,
0x11176, 0x11176,
0x11180, 0x111bf,
@@ -4622,6 +4879,7 @@ CR_Alnum[] = { 648,
0x11200, 0x11211,
0x11213, 0x11234,
0x11237, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -4642,6 +4900,10 @@ CR_Alnum[] = { 648,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135d, 0x11363,
+0x11400, 0x11441,
+0x11443, 0x11445,
+0x11447, 0x1144a,
+0x11450, 0x11459,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -4655,12 +4917,43 @@ CR_Alnum[] = { 648,
0x11650, 0x11659,
0x11680, 0x116b5,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172a,
0x11730, 0x11739,
+0x11800, 0x11838,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x11a00, 0x11a32,
+0x11a35, 0x11a3e,
+0x11a50, 0x11a83,
+0x11a86, 0x11a97,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c3e,
+0x11c40, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d41,
+0x11d43, 0x11d43,
+0x11d46, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d96,
+0x11d98, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -4675,10 +4968,15 @@ CR_Alnum[] = { 648,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -4715,7 +5013,15 @@ CR_Alnum[] = { 648,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
+0x1e947, 0x1e947,
+0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -4756,6 +5062,7 @@ CR_Alnum[] = { 648,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_Alnum */
@@ -4766,15 +5073,115 @@ CR_ASCII[] = { 1,
}; /* END of CR_ASCII */
+/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
+#define CR_ASCII_Hex_Digit CR_XDigit
+
+/* PROPERTY: 'Adlam': Script */
+static const OnigCodePoint
+CR_Adlam[] = { 3,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+}; /* END of CR_Adlam */
+
+/* PROPERTY: 'Ahom': Script */
+static const OnigCodePoint
+CR_Ahom[] = { 3,
+0x11700, 0x1171a,
+0x1171d, 0x1172b,
+0x11730, 0x1173f,
+}; /* END of CR_Ahom */
+
+/* PROPERTY: 'Alphabetic': Derived Property */
+#define CR_Alphabetic CR_Alpha
+
+/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Anatolian_Hieroglyphs[] = { 1,
+0x14400, 0x14646,
+}; /* END of CR_Anatolian_Hieroglyphs */
+
/* PROPERTY: 'Any': - */
static const OnigCodePoint
CR_Any[] = { 1,
0x0000, 0x10ffff,
}; /* END of CR_Any */
+/* PROPERTY: 'Arabic': Script */
+static const OnigCodePoint
+CR_Arabic[] = { 57,
+0x0600, 0x0604,
+0x0606, 0x060b,
+0x060d, 0x061a,
+0x061c, 0x061c,
+0x061e, 0x061e,
+0x0620, 0x063f,
+0x0641, 0x064a,
+0x0656, 0x066f,
+0x0671, 0x06dc,
+0x06de, 0x06ff,
+0x0750, 0x077f,
+0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d3, 0x08e1,
+0x08e3, 0x08ff,
+0xfb50, 0xfbc1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfd,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0x10e60, 0x10e7e,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Arabic */
+
+/* PROPERTY: 'Armenian': Script */
+static const OnigCodePoint
+CR_Armenian[] = { 5,
+0x0531, 0x0556,
+0x0559, 0x0588,
+0x058a, 0x058a,
+0x058d, 0x058f,
+0xfb13, 0xfb17,
+}; /* END of CR_Armenian */
+
/* PROPERTY: 'Assigned': - */
static const OnigCodePoint
-CR_Assigned[] = { 613,
+CR_Assigned[] = { 658,
0x0000, 0x0377,
0x037a, 0x037f,
0x0384, 0x038a,
@@ -4782,24 +5189,24 @@ CR_Assigned[] = { 613,
0x038e, 0x03a1,
0x03a3, 0x052f,
0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
+0x0559, 0x058a,
0x058d, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f4,
+0x05ef, 0x05f4,
0x0600, 0x061c,
0x061e, 0x070d,
0x070f, 0x074a,
0x074d, 0x07b1,
0x07c0, 0x07fa,
-0x0800, 0x082d,
+0x07fd, 0x082d,
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
+0x0860, 0x086a,
0x08a0, 0x08b4,
-0x08e3, 0x0983,
+0x08b6, 0x08bd,
+0x08d3, 0x0983,
0x0985, 0x098c,
0x098f, 0x0990,
0x0993, 0x09a8,
@@ -4812,7 +5219,7 @@ CR_Assigned[] = { 613,
0x09d7, 0x09d7,
0x09dc, 0x09dd,
0x09df, 0x09e3,
-0x09e6, 0x09fb,
+0x09e6, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -4828,7 +5235,7 @@ CR_Assigned[] = { 613,
0x0a51, 0x0a51,
0x0a59, 0x0a5c,
0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
+0x0a66, 0x0a76,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -4842,7 +5249,7 @@ CR_Assigned[] = { 613,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4873,8 +5280,7 @@ CR_Assigned[] = { 613,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -4885,9 +5291,7 @@ CR_Assigned[] = { 613,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
+0x0c78, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -4900,17 +5304,14 @@ CR_Assigned[] = { 613,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
0x0d82, 0x0d83,
0x0d85, 0x0d96,
0x0d9a, 0x0db1,
@@ -4986,7 +5387,7 @@ CR_Assigned[] = { 613,
0x17f0, 0x17f9,
0x1800, 0x180e,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -5010,12 +5411,12 @@ CR_Assigned[] = { 613,
0x1b80, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd0, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd0, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -5035,18 +5436,15 @@ CR_Assigned[] = { 613,
0x2066, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x20d0, 0x20f0,
0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
+0x2190, 0x2426,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
@@ -5064,7 +5462,7 @@ CR_Assigned[] = { 613,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e42,
+0x2de0, 0x2e4e,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -5072,27 +5470,25 @@ CR_Assigned[] = { 613,
0x3000, 0x303f,
0x3041, 0x3096,
0x3099, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa700, 0xa7b9,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8ce, 0xa8d9,
-0xa8e0, 0xa8fd,
-0xa900, 0xa953,
+0xa8e0, 0xa953,
0xa95f, 0xa97c,
0xa980, 0xa9cd,
0xa9cf, 0xa9d9,
@@ -5151,7 +5547,7 @@ CR_Assigned[] = { 613,
0x10080, 0x100fa,
0x10100, 0x10102,
0x10107, 0x10133,
-0x10137, 0x1018c,
+0x10137, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fd,
@@ -5159,13 +5555,15 @@ CR_Assigned[] = { 613,
0x102a0, 0x102d0,
0x102e0, 0x102fb,
0x10300, 0x10323,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x1039f, 0x103c3,
0x103c8, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x1056f, 0x1056f,
@@ -5191,9 +5589,9 @@ CR_Assigned[] = { 613,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
+0x10a3f, 0x10a48,
0x10a50, 0x10a58,
0x10a60, 0x10a9f,
0x10ac0, 0x10ae6,
@@ -5207,21 +5605,25 @@ CR_Assigned[] = { 613,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
+0x10cfa, 0x10d27,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f59,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
+0x110cd, 0x110cd,
0x110d0, 0x110e8,
0x110f0, 0x110f9,
0x11100, 0x11134,
-0x11136, 0x11143,
+0x11136, 0x11146,
0x11150, 0x11176,
0x11180, 0x111cd,
0x111d0, 0x111df,
0x111e1, 0x111f4,
0x11200, 0x11211,
-0x11213, 0x1123d,
+0x11213, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -5236,7 +5638,7 @@ CR_Assigned[] = { 613,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -5244,20 +5646,49 @@ CR_Assigned[] = { 613,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
0x115b8, 0x115dd,
0x11600, 0x11644,
0x11650, 0x11659,
+0x11660, 0x1166c,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x1173f,
+0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x11a00, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef8,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
@@ -5275,10 +5706,15 @@ CR_Assigned[] = { 613,
0x16b5b, 0x16b61,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -5288,8 +5724,9 @@ CR_Assigned[] = { 613,
0x1d100, 0x1d126,
0x1d129, 0x1d1e8,
0x1d200, 0x1d245,
+0x1d2e0, 0x1d2f3,
0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+0x1d360, 0x1d378,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -5313,8 +5750,17 @@ CR_Assigned[] = { 613,
0x1d7ce, 0x1da8b,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -5356,32 +5802,38 @@ CR_Assigned[] = { 613,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -5390,9 +5842,116 @@ CR_Assigned[] = { 613,
0x100000, 0x10fffd,
}; /* END of CR_Assigned */
+/* PROPERTY: 'Avestan': Script */
+static const OnigCodePoint
+CR_Avestan[] = { 2,
+0x10b00, 0x10b35,
+0x10b39, 0x10b3f,
+}; /* END of CR_Avestan */
+
+/* PROPERTY: 'Balinese': Script */
+static const OnigCodePoint
+CR_Balinese[] = { 2,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b7c,
+}; /* END of CR_Balinese */
+
+/* PROPERTY: 'Bamum': Script */
+static const OnigCodePoint
+CR_Bamum[] = { 2,
+0xa6a0, 0xa6f7,
+0x16800, 0x16a38,
+}; /* END of CR_Bamum */
+
+/* PROPERTY: 'Bassa_Vah': Script */
+static const OnigCodePoint
+CR_Bassa_Vah[] = { 2,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af5,
+}; /* END of CR_Bassa_Vah */
+
+/* PROPERTY: 'Batak': Script */
+static const OnigCodePoint
+CR_Batak[] = { 2,
+0x1bc0, 0x1bf3,
+0x1bfc, 0x1bff,
+}; /* END of CR_Batak */
+
+/* PROPERTY: 'Bengali': Script */
+static const OnigCodePoint
+CR_Bengali[] = { 14,
+0x0980, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09fe,
+}; /* END of CR_Bengali */
+
+/* PROPERTY: 'Bhaiksuki': Script */
+static const OnigCodePoint
+CR_Bhaiksuki[] = { 4,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+}; /* END of CR_Bhaiksuki */
+
+/* PROPERTY: 'Bidi_Control': Binary Property */
+static const OnigCodePoint
+CR_Bidi_Control[] = { 4,
+0x061c, 0x061c,
+0x200e, 0x200f,
+0x202a, 0x202e,
+0x2066, 0x2069,
+}; /* END of CR_Bidi_Control */
+
+/* PROPERTY: 'Bopomofo': Script */
+static const OnigCodePoint
+CR_Bopomofo[] = { 3,
+0x02ea, 0x02eb,
+0x3105, 0x312f,
+0x31a0, 0x31ba,
+}; /* END of CR_Bopomofo */
+
+/* PROPERTY: 'Brahmi': Script */
+static const OnigCodePoint
+CR_Brahmi[] = { 3,
+0x11000, 0x1104d,
+0x11052, 0x1106f,
+0x1107f, 0x1107f,
+}; /* END of CR_Brahmi */
+
+/* PROPERTY: 'Braille': Script */
+static const OnigCodePoint
+CR_Braille[] = { 1,
+0x2800, 0x28ff,
+}; /* END of CR_Braille */
+
+/* PROPERTY: 'Buginese': Script */
+static const OnigCodePoint
+CR_Buginese[] = { 2,
+0x1a00, 0x1a1b,
+0x1a1e, 0x1a1f,
+}; /* END of CR_Buginese */
+
+/* PROPERTY: 'Buhid': Script */
+static const OnigCodePoint
+CR_Buhid[] = { 1,
+0x1740, 0x1753,
+}; /* END of CR_Buhid */
+
/* PROPERTY: 'C': Major Category */
static const OnigCodePoint
-CR_C[] = { 616,
+CR_C[] = { 661,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
@@ -5403,24 +5962,25 @@ CR_C[] = { 616,
0x03a2, 0x03a2,
0x0530, 0x0530,
0x0557, 0x0558,
-0x0560, 0x0560,
-0x0588, 0x0588,
0x058b, 0x058c,
0x0590, 0x0590,
0x05c8, 0x05cf,
-0x05eb, 0x05ef,
+0x05eb, 0x05ee,
0x05f5, 0x0605,
0x061c, 0x061d,
0x06dd, 0x06dd,
0x070e, 0x070f,
0x074b, 0x074c,
0x07b2, 0x07bf,
-0x07fb, 0x07ff,
+0x07fb, 0x07fc,
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
-0x085f, 0x089f,
-0x08b5, 0x08e2,
+0x085f, 0x085f,
+0x086b, 0x089f,
+0x08b5, 0x08b5,
+0x08be, 0x08d2,
+0x08e2, 0x08e2,
0x0984, 0x0984,
0x098d, 0x098e,
0x0991, 0x0992,
@@ -5434,7 +5994,7 @@ CR_C[] = { 616,
0x09d8, 0x09db,
0x09de, 0x09de,
0x09e4, 0x09e5,
-0x09fc, 0x0a00,
+0x09ff, 0x0a00,
0x0a04, 0x0a04,
0x0a0b, 0x0a0e,
0x0a11, 0x0a12,
@@ -5450,7 +6010,7 @@ CR_C[] = { 616,
0x0a52, 0x0a58,
0x0a5d, 0x0a5d,
0x0a5f, 0x0a65,
-0x0a76, 0x0a80,
+0x0a77, 0x0a80,
0x0a84, 0x0a84,
0x0a8e, 0x0a8e,
0x0a92, 0x0a92,
@@ -5464,7 +6024,7 @@ CR_C[] = { 616,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
0x0af2, 0x0af8,
-0x0afa, 0x0b00,
+0x0b00, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
0x0b11, 0x0b12,
@@ -5495,7 +6055,6 @@ CR_C[] = { 616,
0x0bd1, 0x0bd6,
0x0bd8, 0x0be5,
0x0bfb, 0x0bff,
-0x0c04, 0x0c04,
0x0c0d, 0x0c0d,
0x0c11, 0x0c11,
0x0c29, 0x0c29,
@@ -5507,8 +6066,6 @@ CR_C[] = { 616,
0x0c5b, 0x0c5f,
0x0c64, 0x0c65,
0x0c70, 0x0c77,
-0x0c80, 0x0c80,
-0x0c84, 0x0c84,
0x0c8d, 0x0c8d,
0x0c91, 0x0c91,
0x0ca9, 0x0ca9,
@@ -5521,17 +6078,14 @@ CR_C[] = { 616,
0x0cdf, 0x0cdf,
0x0ce4, 0x0ce5,
0x0cf0, 0x0cf0,
-0x0cf3, 0x0d00,
+0x0cf3, 0x0cff,
0x0d04, 0x0d04,
0x0d0d, 0x0d0d,
0x0d11, 0x0d11,
-0x0d3b, 0x0d3c,
0x0d45, 0x0d45,
0x0d49, 0x0d49,
-0x0d4f, 0x0d56,
-0x0d58, 0x0d5e,
+0x0d50, 0x0d53,
0x0d64, 0x0d65,
-0x0d76, 0x0d78,
0x0d80, 0x0d81,
0x0d84, 0x0d84,
0x0d97, 0x0d99,
@@ -5608,7 +6162,7 @@ CR_C[] = { 616,
0x17fa, 0x17ff,
0x180e, 0x180f,
0x181a, 0x181f,
-0x1878, 0x187f,
+0x1879, 0x187f,
0x18ab, 0x18af,
0x18f6, 0x18ff,
0x191f, 0x191f,
@@ -5632,11 +6186,11 @@ CR_C[] = { 616,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
-0x1c80, 0x1cbf,
+0x1c89, 0x1c8f,
+0x1cbb, 0x1cbc,
0x1cc8, 0x1ccf,
-0x1cf7, 0x1cf7,
0x1cfa, 0x1cff,
-0x1df6, 0x1dfb,
+0x1dfa, 0x1dfa,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
0x1f46, 0x1f47,
@@ -5659,18 +6213,15 @@ CR_C[] = { 616,
0x2072, 0x2073,
0x208f, 0x208f,
0x209d, 0x209f,
-0x20bf, 0x20cf,
+0x20c0, 0x20cf,
0x20f1, 0x20ff,
0x218c, 0x218f,
-0x23fb, 0x23ff,
0x2427, 0x243f,
0x244b, 0x245f,
0x2b74, 0x2b75,
0x2b96, 0x2b97,
-0x2bba, 0x2bbc,
0x2bc9, 0x2bc9,
-0x2bd2, 0x2beb,
-0x2bf0, 0x2bff,
+0x2bff, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
0x2cf4, 0x2cf8,
@@ -5688,7 +6239,7 @@ CR_C[] = { 616,
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
-0x2e43, 0x2e7f,
+0x2e4f, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -5696,26 +6247,24 @@ CR_C[] = { 616,
0x3040, 0x3040,
0x3097, 0x3098,
0x3100, 0x3104,
-0x312e, 0x3130,
+0x3130, 0x3130,
0x318f, 0x318f,
0x31bb, 0x31bf,
0x31e4, 0x31ef,
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
-0x9fd6, 0x9fff,
+0x9ff0, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
0xa6f8, 0xa6ff,
-0xa7ae, 0xa7af,
-0xa7b8, 0xa7f6,
+0xa7ba, 0xa7f6,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
-0xa8c5, 0xa8cd,
+0xa8c6, 0xa8cd,
0xa8da, 0xa8df,
-0xa8fe, 0xa8ff,
0xa954, 0xa95e,
0xa97d, 0xa97f,
0xa9ce, 0xa9ce,
@@ -5774,21 +6323,23 @@ CR_C[] = { 616,
0x100fb, 0x100ff,
0x10103, 0x10106,
0x10134, 0x10136,
-0x1018d, 0x1018f,
+0x1018f, 0x1018f,
0x1019c, 0x1019f,
0x101a1, 0x101cf,
0x101fe, 0x1027f,
0x1029d, 0x1029f,
0x102d1, 0x102df,
0x102fc, 0x102ff,
-0x10324, 0x1032f,
+0x10324, 0x1032c,
0x1034b, 0x1034f,
0x1037b, 0x1037f,
0x1039e, 0x1039e,
0x103c4, 0x103c7,
0x103d6, 0x103ff,
0x1049e, 0x1049f,
-0x104aa, 0x104ff,
+0x104aa, 0x104af,
+0x104d4, 0x104d7,
+0x104fc, 0x104ff,
0x10528, 0x1052f,
0x10564, 0x1056e,
0x10570, 0x105ff,
@@ -5814,9 +6365,9 @@ CR_C[] = { 616,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
0x10a18, 0x10a18,
-0x10a34, 0x10a37,
+0x10a36, 0x10a37,
0x10a3b, 0x10a3e,
-0x10a48, 0x10a4f,
+0x10a49, 0x10a4f,
0x10a59, 0x10a5f,
0x10aa0, 0x10abf,
0x10ae7, 0x10aea,
@@ -5830,8 +6381,11 @@ CR_C[] = { 616,
0x10c49, 0x10c7f,
0x10cb3, 0x10cbf,
0x10cf3, 0x10cf9,
-0x10d00, 0x10e5f,
-0x10e7f, 0x10fff,
+0x10d28, 0x10d2f,
+0x10d3a, 0x10e5f,
+0x10e7f, 0x10eff,
+0x10f28, 0x10f2f,
+0x10f5a, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107e,
0x110bd, 0x110bd,
@@ -5839,13 +6393,13 @@ CR_C[] = { 616,
0x110e9, 0x110ef,
0x110fa, 0x110ff,
0x11135, 0x11135,
-0x11144, 0x1114f,
+0x11147, 0x1114f,
0x11177, 0x1117f,
0x111ce, 0x111cf,
0x111e0, 0x111e0,
0x111f5, 0x111ff,
0x11212, 0x11212,
-0x1123e, 0x1127f,
+0x1123f, 0x1127f,
0x11287, 0x11287,
0x11289, 0x11289,
0x1128e, 0x1128e,
@@ -5859,7 +6413,7 @@ CR_C[] = { 616,
0x11329, 0x11329,
0x11331, 0x11331,
0x11334, 0x11334,
-0x1133a, 0x1133b,
+0x1133a, 0x1133a,
0x11345, 0x11346,
0x11349, 0x1134a,
0x1134e, 0x1134f,
@@ -5867,21 +6421,50 @@ CR_C[] = { 616,
0x11358, 0x1135c,
0x11364, 0x11365,
0x1136d, 0x1136f,
-0x11375, 0x1147f,
+0x11375, 0x113ff,
+0x1145a, 0x1145a,
+0x1145c, 0x1145c,
+0x1145f, 0x1147f,
0x114c8, 0x114cf,
0x114da, 0x1157f,
0x115b6, 0x115b7,
0x115de, 0x115ff,
0x11645, 0x1164f,
-0x1165a, 0x1167f,
+0x1165a, 0x1165f,
+0x1166d, 0x1167f,
0x116b8, 0x116bf,
0x116ca, 0x116ff,
-0x1171a, 0x1171c,
+0x1171b, 0x1171c,
0x1172c, 0x1172f,
-0x11740, 0x1189f,
+0x11740, 0x117ff,
+0x1183c, 0x1189f,
0x118f3, 0x118fe,
-0x11900, 0x11abf,
-0x11af9, 0x11fff,
+0x11900, 0x119ff,
+0x11a48, 0x11a4f,
+0x11a84, 0x11a85,
+0x11aa3, 0x11abf,
+0x11af9, 0x11bff,
+0x11c09, 0x11c09,
+0x11c37, 0x11c37,
+0x11c46, 0x11c4f,
+0x11c6d, 0x11c6f,
+0x11c90, 0x11c91,
+0x11ca8, 0x11ca8,
+0x11cb7, 0x11cff,
+0x11d07, 0x11d07,
+0x11d0a, 0x11d0a,
+0x11d37, 0x11d39,
+0x11d3b, 0x11d3b,
+0x11d3e, 0x11d3e,
+0x11d48, 0x11d4f,
+0x11d5a, 0x11d5f,
+0x11d66, 0x11d66,
+0x11d69, 0x11d69,
+0x11d8f, 0x11d8f,
+0x11d92, 0x11d92,
+0x11d99, 0x11d9f,
+0x11daa, 0x11edf,
+0x11ef9, 0x11fff,
0x1239a, 0x123ff,
0x1246f, 0x1246f,
0x12475, 0x1247f,
@@ -5898,11 +6481,16 @@ CR_C[] = { 616,
0x16b5a, 0x16b5a,
0x16b62, 0x16b62,
0x16b78, 0x16b7c,
-0x16b90, 0x16eff,
+0x16b90, 0x16e3f,
+0x16e9b, 0x16eff,
0x16f45, 0x16f4f,
0x16f7f, 0x16f8e,
-0x16fa0, 0x1afff,
-0x1b002, 0x1bbff,
+0x16fa0, 0x16fdf,
+0x16fe2, 0x16fff,
+0x187f2, 0x187ff,
+0x18af3, 0x1afff,
+0x1b11f, 0x1b16f,
+0x1b2fc, 0x1bbff,
0x1bc6b, 0x1bc6f,
0x1bc7d, 0x1bc7f,
0x1bc89, 0x1bc8f,
@@ -5912,9 +6500,10 @@ CR_C[] = { 616,
0x1d127, 0x1d128,
0x1d173, 0x1d17a,
0x1d1e9, 0x1d1ff,
-0x1d246, 0x1d2ff,
+0x1d246, 0x1d2df,
+0x1d2f4, 0x1d2ff,
0x1d357, 0x1d35f,
-0x1d372, 0x1d3ff,
+0x1d379, 0x1d3ff,
0x1d455, 0x1d455,
0x1d49d, 0x1d49d,
0x1d4a0, 0x1d4a1,
@@ -5937,9 +6526,18 @@ CR_C[] = { 616,
0x1d7cc, 0x1d7cd,
0x1da8c, 0x1da9a,
0x1daa0, 0x1daa0,
-0x1dab0, 0x1e7ff,
+0x1dab0, 0x1dfff,
+0x1e007, 0x1e007,
+0x1e019, 0x1e01a,
+0x1e022, 0x1e022,
+0x1e025, 0x1e025,
+0x1e02b, 0x1e7ff,
0x1e8c5, 0x1e8c6,
-0x1e8d7, 0x1edff,
+0x1e8d7, 0x1e8ff,
+0x1e94b, 0x1e94f,
+0x1e95a, 0x1e95d,
+0x1e960, 0x1ec70,
+0x1ecb5, 0x1edff,
0x1ee04, 0x1ee04,
0x1ee20, 0x1ee20,
0x1ee23, 0x1ee23,
@@ -5981,47 +6579,617 @@ CR_C[] = { 616,
0x1f0d0, 0x1f0d0,
0x1f0f6, 0x1f0ff,
0x1f10d, 0x1f10f,
-0x1f12f, 0x1f12f,
0x1f16c, 0x1f16f,
-0x1f19b, 0x1f1e5,
+0x1f1ad, 0x1f1e5,
0x1f203, 0x1f20f,
-0x1f23b, 0x1f23f,
+0x1f23c, 0x1f23f,
0x1f249, 0x1f24f,
-0x1f252, 0x1f2ff,
-0x1f57a, 0x1f57a,
-0x1f5a4, 0x1f5a4,
-0x1f6d1, 0x1f6df,
+0x1f252, 0x1f25f,
+0x1f266, 0x1f2ff,
+0x1f6d5, 0x1f6df,
0x1f6ed, 0x1f6ef,
-0x1f6f4, 0x1f6ff,
+0x1f6fa, 0x1f6ff,
0x1f774, 0x1f77f,
-0x1f7d5, 0x1f7ff,
+0x1f7d9, 0x1f7ff,
0x1f80c, 0x1f80f,
0x1f848, 0x1f84f,
0x1f85a, 0x1f85f,
0x1f888, 0x1f88f,
-0x1f8ae, 0x1f90f,
-0x1f919, 0x1f97f,
-0x1f985, 0x1f9bf,
-0x1f9c1, 0x1ffff,
+0x1f8ae, 0x1f8ff,
+0x1f90c, 0x1f90f,
+0x1f93f, 0x1f93f,
+0x1f971, 0x1f972,
+0x1f977, 0x1f979,
+0x1f97b, 0x1f97b,
+0x1f9a3, 0x1f9af,
+0x1f9ba, 0x1f9bf,
+0x1f9c3, 0x1f9cf,
+0x1fa00, 0x1fa5f,
+0x1fa6e, 0x1ffff,
0x2a6d7, 0x2a6ff,
0x2b735, 0x2b73f,
0x2b81e, 0x2b81f,
-0x2cea2, 0x2f7ff,
+0x2cea2, 0x2ceaf,
+0x2ebe1, 0x2f7ff,
0x2fa1e, 0xe00ff,
0xe01f0, 0x10ffff,
}; /* END of CR_C */
+/* PROPERTY: 'Canadian_Aboriginal': Script */
+static const OnigCodePoint
+CR_Canadian_Aboriginal[] = { 2,
+0x1400, 0x167f,
+0x18b0, 0x18f5,
+}; /* END of CR_Canadian_Aboriginal */
+
+/* PROPERTY: 'Carian': Script */
+static const OnigCodePoint
+CR_Carian[] = { 1,
+0x102a0, 0x102d0,
+}; /* END of CR_Carian */
+
+/* PROPERTY: 'Case_Ignorable': Derived Property */
+static const OnigCodePoint
+CR_Case_Ignorable[] = { 394,
+0x0027, 0x0027,
+0x002e, 0x002e,
+0x003a, 0x003a,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00ad, 0x00ad,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x036f,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0387, 0x0387,
+0x0483, 0x0489,
+0x0559, 0x0559,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05f4, 0x05f4,
+0x0600, 0x0605,
+0x0610, 0x061a,
+0x061c, 0x061c,
+0x0640, 0x0640,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dd,
+0x06df, 0x06e8,
+0x06ea, 0x06ed,
+0x070f, 0x070f,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x07fa, 0x07fa,
+0x07fd, 0x07fd,
+0x0816, 0x082d,
+0x0859, 0x085b,
+0x08d3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0971, 0x0971,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09e2, 0x09e3,
+0x09fe, 0x09fe,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0afa, 0x0aff,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3f, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b56,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0c00, 0x0c00,
+0x0c04, 0x0c04,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0ce2, 0x0ce3,
+0x0d00, 0x0d01,
+0x0d3b, 0x0d3c,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e46, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x10fc, 0x10fc,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17d7, 0x17d7,
+0x17dd, 0x17dd,
+0x180b, 0x180e,
+0x1843, 0x1843,
+0x1885, 0x1886,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1df9,
+0x1dfb, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x200b, 0x200f,
+0x2018, 0x2019,
+0x2024, 0x2024,
+0x2027, 0x2027,
+0x202a, 0x202e,
+0x2060, 0x2064,
+0x2066, 0x206f,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20f0,
+0x2c7c, 0x2c7d,
+0x2cef, 0x2cf1,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x2e2f, 0x2e2f,
+0x3005, 0x3005,
+0x302a, 0x302d,
+0x3031, 0x3035,
+0x303b, 0x303b,
+0x3099, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa4f8, 0xa4fd,
+0xa60c, 0xa60c,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa700, 0xa721,
+0xa770, 0xa770,
+0xa788, 0xa78a,
+0xa7f8, 0xa7f9,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c5,
+0xa8e0, 0xa8f1,
+0xa8ff, 0xa8ff,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9cf, 0xa9cf,
+0xa9e5, 0xa9e6,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa70, 0xaa70,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaadd, 0xaadd,
+0xaaec, 0xaaed,
+0xaaf3, 0xaaf4,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfbb2, 0xfbc1,
+0xfe00, 0xfe0f,
+0xfe13, 0xfe13,
+0xfe20, 0xfe2f,
+0xfe52, 0xfe52,
+0xfe55, 0xfe55,
+0xfeff, 0xfeff,
+0xff07, 0xff07,
+0xff0e, 0xff0e,
+0xff1a, 0xff1a,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0xfff9, 0xfffb,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x10d24, 0x10d27,
+0x10f46, 0x10f50,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x110bd, 0x110bd,
+0x110cd, 0x110cd,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111c9, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x1123e, 0x1123e,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133b, 0x1133c,
+0x11340, 0x11340,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11438, 0x1143f,
+0x11442, 0x11444,
+0x11446, 0x11446,
+0x1145e, 0x1145e,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x1182f, 0x11837,
+0x11839, 0x1183a,
+0x11a01, 0x11a0a,
+0x11a33, 0x11a38,
+0x11a3b, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a51, 0x11a56,
+0x11a59, 0x11a5b,
+0x11a8a, 0x11a96,
+0x11a98, 0x11a99,
+0x11c30, 0x11c36,
+0x11c38, 0x11c3d,
+0x11c3f, 0x11c3f,
+0x11c92, 0x11ca7,
+0x11caa, 0x11cb0,
+0x11cb2, 0x11cb3,
+0x11cb5, 0x11cb6,
+0x11d31, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d45,
+0x11d47, 0x11d47,
+0x11d90, 0x11d91,
+0x11d95, 0x11d95,
+0x11d97, 0x11d97,
+0x11ef3, 0x11ef4,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16b40, 0x16b43,
+0x16f8f, 0x16f9f,
+0x16fe0, 0x16fe1,
+0x1bc9d, 0x1bc9e,
+0x1bca0, 0x1bca3,
+0x1d167, 0x1d169,
+0x1d173, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
+0x1e8d0, 0x1e8d6,
+0x1e944, 0x1e94a,
+0x1f3fb, 0x1f3ff,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Case_Ignorable */
+
+/* PROPERTY: 'Cased': Derived Property */
+static const OnigCodePoint
+CR_Cased[] = { 139,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x01ba,
+0x01bc, 0x01bf,
+0x01c4, 0x0293,
+0x0295, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0560, 0x0588,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x212d,
+0x212f, 0x2134,
+0x2139, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69d,
+0xa722, 0xa787,
+0xa78b, 0xa78e,
+0xa790, 0xa7b9,
+0xa7f8, 0xa7fa,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
+0x16e40, 0x16e7f,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1e900, 0x1e943,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Cased */
+
+/* PROPERTY: 'Caucasian_Albanian': Script */
+static const OnigCodePoint
+CR_Caucasian_Albanian[] = { 2,
+0x10530, 0x10563,
+0x1056f, 0x1056f,
+}; /* END of CR_Caucasian_Albanian */
+
/* PROPERTY: 'Cc': General Category */
#define CR_Cc CR_Cntrl
/* PROPERTY: 'Cf': General Category */
static const OnigCodePoint
-CR_Cf[] = { 17,
+CR_Cf[] = { 19,
0x00ad, 0x00ad,
0x0600, 0x0605,
0x061c, 0x061c,
0x06dd, 0x06dd,
0x070f, 0x070f,
+0x08e2, 0x08e2,
0x180e, 0x180e,
0x200b, 0x200f,
0x202a, 0x202e,
@@ -6030,15 +7198,2608 @@ CR_Cf[] = { 17,
0xfeff, 0xfeff,
0xfff9, 0xfffb,
0x110bd, 0x110bd,
+0x110cd, 0x110cd,
0x1bca0, 0x1bca3,
0x1d173, 0x1d17a,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
}; /* END of CR_Cf */
+/* PROPERTY: 'Chakma': Script */
+static const OnigCodePoint
+CR_Chakma[] = { 2,
+0x11100, 0x11134,
+0x11136, 0x11146,
+}; /* END of CR_Chakma */
+
+/* PROPERTY: 'Cham': Script */
+static const OnigCodePoint
+CR_Cham[] = { 4,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa5f,
+}; /* END of CR_Cham */
+
+/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casefolded[] = { 607,
+0x0041, 0x005a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00df,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x0149, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x017f, 0x017f,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c5,
+0x01c7, 0x01c8,
+0x01ca, 0x01cb,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f2,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0345, 0x0345,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03c2, 0x03c2,
+0x03cf, 0x03d1,
+0x03d5, 0x03d6,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f0, 0x03f1,
+0x03f4, 0x03f5,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x0587, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9a, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1f80, 0x1faf,
+0x1fb2, 0x1fb4,
+0x1fb7, 0x1fbc,
+0x1fc2, 0x1fc4,
+0x1fc7, 0x1fcc,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff7, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x2160, 0x216f,
+0x2183, 0x2183,
+0x24b6, 0x24cf,
+0x2c00, 0x2c2e,
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ae,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xa7b8, 0xa7b8,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x104b0, 0x104d3,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+0x16e40, 0x16e5f,
+0x1e900, 0x1e921,
+}; /* END of CR_Changes_When_Casefolded */
+
+/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Casemapped[] = { 121,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x0137,
+0x0139, 0x018c,
+0x018e, 0x019a,
+0x019c, 0x01a9,
+0x01ac, 0x01b9,
+0x01bc, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x0220,
+0x0222, 0x0233,
+0x023a, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0370, 0x0373,
+0x0376, 0x0377,
+0x037b, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03d1,
+0x03d5, 0x03f5,
+0x03f7, 0x03fb,
+0x03fd, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0561, 0x0587,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e00, 0x1e9b,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x217f,
+0x2183, 0x2184,
+0x24b6, 0x24e9,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2c70,
+0x2c72, 0x2c73,
+0x2c75, 0x2c76,
+0x2c7e, 0x2ce3,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa640, 0xa66d,
+0xa680, 0xa69b,
+0xa722, 0xa72f,
+0xa732, 0xa76f,
+0xa779, 0xa787,
+0xa78b, 0xa78d,
+0xa790, 0xa793,
+0xa796, 0xa7ae,
+0xa7b0, 0xa7b9,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0x10400, 0x1044f,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x118a0, 0x118df,
+0x16e40, 0x16e7f,
+0x1e900, 0x1e943,
+}; /* END of CR_Changes_When_Casemapped */
+
+/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Lowercased[] = { 594,
+0x0041, 0x005a,
+0x00c0, 0x00d6,
+0x00d8, 0x00de,
+0x0100, 0x0100,
+0x0102, 0x0102,
+0x0104, 0x0104,
+0x0106, 0x0106,
+0x0108, 0x0108,
+0x010a, 0x010a,
+0x010c, 0x010c,
+0x010e, 0x010e,
+0x0110, 0x0110,
+0x0112, 0x0112,
+0x0114, 0x0114,
+0x0116, 0x0116,
+0x0118, 0x0118,
+0x011a, 0x011a,
+0x011c, 0x011c,
+0x011e, 0x011e,
+0x0120, 0x0120,
+0x0122, 0x0122,
+0x0124, 0x0124,
+0x0126, 0x0126,
+0x0128, 0x0128,
+0x012a, 0x012a,
+0x012c, 0x012c,
+0x012e, 0x012e,
+0x0130, 0x0130,
+0x0132, 0x0132,
+0x0134, 0x0134,
+0x0136, 0x0136,
+0x0139, 0x0139,
+0x013b, 0x013b,
+0x013d, 0x013d,
+0x013f, 0x013f,
+0x0141, 0x0141,
+0x0143, 0x0143,
+0x0145, 0x0145,
+0x0147, 0x0147,
+0x014a, 0x014a,
+0x014c, 0x014c,
+0x014e, 0x014e,
+0x0150, 0x0150,
+0x0152, 0x0152,
+0x0154, 0x0154,
+0x0156, 0x0156,
+0x0158, 0x0158,
+0x015a, 0x015a,
+0x015c, 0x015c,
+0x015e, 0x015e,
+0x0160, 0x0160,
+0x0162, 0x0162,
+0x0164, 0x0164,
+0x0166, 0x0166,
+0x0168, 0x0168,
+0x016a, 0x016a,
+0x016c, 0x016c,
+0x016e, 0x016e,
+0x0170, 0x0170,
+0x0172, 0x0172,
+0x0174, 0x0174,
+0x0176, 0x0176,
+0x0178, 0x0179,
+0x017b, 0x017b,
+0x017d, 0x017d,
+0x0181, 0x0182,
+0x0184, 0x0184,
+0x0186, 0x0187,
+0x0189, 0x018b,
+0x018e, 0x0191,
+0x0193, 0x0194,
+0x0196, 0x0198,
+0x019c, 0x019d,
+0x019f, 0x01a0,
+0x01a2, 0x01a2,
+0x01a4, 0x01a4,
+0x01a6, 0x01a7,
+0x01a9, 0x01a9,
+0x01ac, 0x01ac,
+0x01ae, 0x01af,
+0x01b1, 0x01b3,
+0x01b5, 0x01b5,
+0x01b7, 0x01b8,
+0x01bc, 0x01bc,
+0x01c4, 0x01c5,
+0x01c7, 0x01c8,
+0x01ca, 0x01cb,
+0x01cd, 0x01cd,
+0x01cf, 0x01cf,
+0x01d1, 0x01d1,
+0x01d3, 0x01d3,
+0x01d5, 0x01d5,
+0x01d7, 0x01d7,
+0x01d9, 0x01d9,
+0x01db, 0x01db,
+0x01de, 0x01de,
+0x01e0, 0x01e0,
+0x01e2, 0x01e2,
+0x01e4, 0x01e4,
+0x01e6, 0x01e6,
+0x01e8, 0x01e8,
+0x01ea, 0x01ea,
+0x01ec, 0x01ec,
+0x01ee, 0x01ee,
+0x01f1, 0x01f2,
+0x01f4, 0x01f4,
+0x01f6, 0x01f8,
+0x01fa, 0x01fa,
+0x01fc, 0x01fc,
+0x01fe, 0x01fe,
+0x0200, 0x0200,
+0x0202, 0x0202,
+0x0204, 0x0204,
+0x0206, 0x0206,
+0x0208, 0x0208,
+0x020a, 0x020a,
+0x020c, 0x020c,
+0x020e, 0x020e,
+0x0210, 0x0210,
+0x0212, 0x0212,
+0x0214, 0x0214,
+0x0216, 0x0216,
+0x0218, 0x0218,
+0x021a, 0x021a,
+0x021c, 0x021c,
+0x021e, 0x021e,
+0x0220, 0x0220,
+0x0222, 0x0222,
+0x0224, 0x0224,
+0x0226, 0x0226,
+0x0228, 0x0228,
+0x022a, 0x022a,
+0x022c, 0x022c,
+0x022e, 0x022e,
+0x0230, 0x0230,
+0x0232, 0x0232,
+0x023a, 0x023b,
+0x023d, 0x023e,
+0x0241, 0x0241,
+0x0243, 0x0246,
+0x0248, 0x0248,
+0x024a, 0x024a,
+0x024c, 0x024c,
+0x024e, 0x024e,
+0x0370, 0x0370,
+0x0372, 0x0372,
+0x0376, 0x0376,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x038f,
+0x0391, 0x03a1,
+0x03a3, 0x03ab,
+0x03cf, 0x03cf,
+0x03d8, 0x03d8,
+0x03da, 0x03da,
+0x03dc, 0x03dc,
+0x03de, 0x03de,
+0x03e0, 0x03e0,
+0x03e2, 0x03e2,
+0x03e4, 0x03e4,
+0x03e6, 0x03e6,
+0x03e8, 0x03e8,
+0x03ea, 0x03ea,
+0x03ec, 0x03ec,
+0x03ee, 0x03ee,
+0x03f4, 0x03f4,
+0x03f7, 0x03f7,
+0x03f9, 0x03fa,
+0x03fd, 0x042f,
+0x0460, 0x0460,
+0x0462, 0x0462,
+0x0464, 0x0464,
+0x0466, 0x0466,
+0x0468, 0x0468,
+0x046a, 0x046a,
+0x046c, 0x046c,
+0x046e, 0x046e,
+0x0470, 0x0470,
+0x0472, 0x0472,
+0x0474, 0x0474,
+0x0476, 0x0476,
+0x0478, 0x0478,
+0x047a, 0x047a,
+0x047c, 0x047c,
+0x047e, 0x047e,
+0x0480, 0x0480,
+0x048a, 0x048a,
+0x048c, 0x048c,
+0x048e, 0x048e,
+0x0490, 0x0490,
+0x0492, 0x0492,
+0x0494, 0x0494,
+0x0496, 0x0496,
+0x0498, 0x0498,
+0x049a, 0x049a,
+0x049c, 0x049c,
+0x049e, 0x049e,
+0x04a0, 0x04a0,
+0x04a2, 0x04a2,
+0x04a4, 0x04a4,
+0x04a6, 0x04a6,
+0x04a8, 0x04a8,
+0x04aa, 0x04aa,
+0x04ac, 0x04ac,
+0x04ae, 0x04ae,
+0x04b0, 0x04b0,
+0x04b2, 0x04b2,
+0x04b4, 0x04b4,
+0x04b6, 0x04b6,
+0x04b8, 0x04b8,
+0x04ba, 0x04ba,
+0x04bc, 0x04bc,
+0x04be, 0x04be,
+0x04c0, 0x04c1,
+0x04c3, 0x04c3,
+0x04c5, 0x04c5,
+0x04c7, 0x04c7,
+0x04c9, 0x04c9,
+0x04cb, 0x04cb,
+0x04cd, 0x04cd,
+0x04d0, 0x04d0,
+0x04d2, 0x04d2,
+0x04d4, 0x04d4,
+0x04d6, 0x04d6,
+0x04d8, 0x04d8,
+0x04da, 0x04da,
+0x04dc, 0x04dc,
+0x04de, 0x04de,
+0x04e0, 0x04e0,
+0x04e2, 0x04e2,
+0x04e4, 0x04e4,
+0x04e6, 0x04e6,
+0x04e8, 0x04e8,
+0x04ea, 0x04ea,
+0x04ec, 0x04ec,
+0x04ee, 0x04ee,
+0x04f0, 0x04f0,
+0x04f2, 0x04f2,
+0x04f4, 0x04f4,
+0x04f6, 0x04f6,
+0x04f8, 0x04f8,
+0x04fa, 0x04fa,
+0x04fc, 0x04fc,
+0x04fe, 0x04fe,
+0x0500, 0x0500,
+0x0502, 0x0502,
+0x0504, 0x0504,
+0x0506, 0x0506,
+0x0508, 0x0508,
+0x050a, 0x050a,
+0x050c, 0x050c,
+0x050e, 0x050e,
+0x0510, 0x0510,
+0x0512, 0x0512,
+0x0514, 0x0514,
+0x0516, 0x0516,
+0x0518, 0x0518,
+0x051a, 0x051a,
+0x051c, 0x051c,
+0x051e, 0x051e,
+0x0520, 0x0520,
+0x0522, 0x0522,
+0x0524, 0x0524,
+0x0526, 0x0526,
+0x0528, 0x0528,
+0x052a, 0x052a,
+0x052c, 0x052c,
+0x052e, 0x052e,
+0x0531, 0x0556,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x13a0, 0x13f5,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1e00, 0x1e00,
+0x1e02, 0x1e02,
+0x1e04, 0x1e04,
+0x1e06, 0x1e06,
+0x1e08, 0x1e08,
+0x1e0a, 0x1e0a,
+0x1e0c, 0x1e0c,
+0x1e0e, 0x1e0e,
+0x1e10, 0x1e10,
+0x1e12, 0x1e12,
+0x1e14, 0x1e14,
+0x1e16, 0x1e16,
+0x1e18, 0x1e18,
+0x1e1a, 0x1e1a,
+0x1e1c, 0x1e1c,
+0x1e1e, 0x1e1e,
+0x1e20, 0x1e20,
+0x1e22, 0x1e22,
+0x1e24, 0x1e24,
+0x1e26, 0x1e26,
+0x1e28, 0x1e28,
+0x1e2a, 0x1e2a,
+0x1e2c, 0x1e2c,
+0x1e2e, 0x1e2e,
+0x1e30, 0x1e30,
+0x1e32, 0x1e32,
+0x1e34, 0x1e34,
+0x1e36, 0x1e36,
+0x1e38, 0x1e38,
+0x1e3a, 0x1e3a,
+0x1e3c, 0x1e3c,
+0x1e3e, 0x1e3e,
+0x1e40, 0x1e40,
+0x1e42, 0x1e42,
+0x1e44, 0x1e44,
+0x1e46, 0x1e46,
+0x1e48, 0x1e48,
+0x1e4a, 0x1e4a,
+0x1e4c, 0x1e4c,
+0x1e4e, 0x1e4e,
+0x1e50, 0x1e50,
+0x1e52, 0x1e52,
+0x1e54, 0x1e54,
+0x1e56, 0x1e56,
+0x1e58, 0x1e58,
+0x1e5a, 0x1e5a,
+0x1e5c, 0x1e5c,
+0x1e5e, 0x1e5e,
+0x1e60, 0x1e60,
+0x1e62, 0x1e62,
+0x1e64, 0x1e64,
+0x1e66, 0x1e66,
+0x1e68, 0x1e68,
+0x1e6a, 0x1e6a,
+0x1e6c, 0x1e6c,
+0x1e6e, 0x1e6e,
+0x1e70, 0x1e70,
+0x1e72, 0x1e72,
+0x1e74, 0x1e74,
+0x1e76, 0x1e76,
+0x1e78, 0x1e78,
+0x1e7a, 0x1e7a,
+0x1e7c, 0x1e7c,
+0x1e7e, 0x1e7e,
+0x1e80, 0x1e80,
+0x1e82, 0x1e82,
+0x1e84, 0x1e84,
+0x1e86, 0x1e86,
+0x1e88, 0x1e88,
+0x1e8a, 0x1e8a,
+0x1e8c, 0x1e8c,
+0x1e8e, 0x1e8e,
+0x1e90, 0x1e90,
+0x1e92, 0x1e92,
+0x1e94, 0x1e94,
+0x1e9e, 0x1e9e,
+0x1ea0, 0x1ea0,
+0x1ea2, 0x1ea2,
+0x1ea4, 0x1ea4,
+0x1ea6, 0x1ea6,
+0x1ea8, 0x1ea8,
+0x1eaa, 0x1eaa,
+0x1eac, 0x1eac,
+0x1eae, 0x1eae,
+0x1eb0, 0x1eb0,
+0x1eb2, 0x1eb2,
+0x1eb4, 0x1eb4,
+0x1eb6, 0x1eb6,
+0x1eb8, 0x1eb8,
+0x1eba, 0x1eba,
+0x1ebc, 0x1ebc,
+0x1ebe, 0x1ebe,
+0x1ec0, 0x1ec0,
+0x1ec2, 0x1ec2,
+0x1ec4, 0x1ec4,
+0x1ec6, 0x1ec6,
+0x1ec8, 0x1ec8,
+0x1eca, 0x1eca,
+0x1ecc, 0x1ecc,
+0x1ece, 0x1ece,
+0x1ed0, 0x1ed0,
+0x1ed2, 0x1ed2,
+0x1ed4, 0x1ed4,
+0x1ed6, 0x1ed6,
+0x1ed8, 0x1ed8,
+0x1eda, 0x1eda,
+0x1edc, 0x1edc,
+0x1ede, 0x1ede,
+0x1ee0, 0x1ee0,
+0x1ee2, 0x1ee2,
+0x1ee4, 0x1ee4,
+0x1ee6, 0x1ee6,
+0x1ee8, 0x1ee8,
+0x1eea, 0x1eea,
+0x1eec, 0x1eec,
+0x1eee, 0x1eee,
+0x1ef0, 0x1ef0,
+0x1ef2, 0x1ef2,
+0x1ef4, 0x1ef4,
+0x1ef6, 0x1ef6,
+0x1ef8, 0x1ef8,
+0x1efa, 0x1efa,
+0x1efc, 0x1efc,
+0x1efe, 0x1efe,
+0x1f08, 0x1f0f,
+0x1f18, 0x1f1d,
+0x1f28, 0x1f2f,
+0x1f38, 0x1f3f,
+0x1f48, 0x1f4d,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f5f,
+0x1f68, 0x1f6f,
+0x1f88, 0x1f8f,
+0x1f98, 0x1f9f,
+0x1fa8, 0x1faf,
+0x1fb8, 0x1fbc,
+0x1fc8, 0x1fcc,
+0x1fd8, 0x1fdb,
+0x1fe8, 0x1fec,
+0x1ff8, 0x1ffc,
+0x2126, 0x2126,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x2160, 0x216f,
+0x2183, 0x2183,
+0x24b6, 0x24cf,
+0x2c00, 0x2c2e,
+0x2c60, 0x2c60,
+0x2c62, 0x2c64,
+0x2c67, 0x2c67,
+0x2c69, 0x2c69,
+0x2c6b, 0x2c6b,
+0x2c6d, 0x2c70,
+0x2c72, 0x2c72,
+0x2c75, 0x2c75,
+0x2c7e, 0x2c80,
+0x2c82, 0x2c82,
+0x2c84, 0x2c84,
+0x2c86, 0x2c86,
+0x2c88, 0x2c88,
+0x2c8a, 0x2c8a,
+0x2c8c, 0x2c8c,
+0x2c8e, 0x2c8e,
+0x2c90, 0x2c90,
+0x2c92, 0x2c92,
+0x2c94, 0x2c94,
+0x2c96, 0x2c96,
+0x2c98, 0x2c98,
+0x2c9a, 0x2c9a,
+0x2c9c, 0x2c9c,
+0x2c9e, 0x2c9e,
+0x2ca0, 0x2ca0,
+0x2ca2, 0x2ca2,
+0x2ca4, 0x2ca4,
+0x2ca6, 0x2ca6,
+0x2ca8, 0x2ca8,
+0x2caa, 0x2caa,
+0x2cac, 0x2cac,
+0x2cae, 0x2cae,
+0x2cb0, 0x2cb0,
+0x2cb2, 0x2cb2,
+0x2cb4, 0x2cb4,
+0x2cb6, 0x2cb6,
+0x2cb8, 0x2cb8,
+0x2cba, 0x2cba,
+0x2cbc, 0x2cbc,
+0x2cbe, 0x2cbe,
+0x2cc0, 0x2cc0,
+0x2cc2, 0x2cc2,
+0x2cc4, 0x2cc4,
+0x2cc6, 0x2cc6,
+0x2cc8, 0x2cc8,
+0x2cca, 0x2cca,
+0x2ccc, 0x2ccc,
+0x2cce, 0x2cce,
+0x2cd0, 0x2cd0,
+0x2cd2, 0x2cd2,
+0x2cd4, 0x2cd4,
+0x2cd6, 0x2cd6,
+0x2cd8, 0x2cd8,
+0x2cda, 0x2cda,
+0x2cdc, 0x2cdc,
+0x2cde, 0x2cde,
+0x2ce0, 0x2ce0,
+0x2ce2, 0x2ce2,
+0x2ceb, 0x2ceb,
+0x2ced, 0x2ced,
+0x2cf2, 0x2cf2,
+0xa640, 0xa640,
+0xa642, 0xa642,
+0xa644, 0xa644,
+0xa646, 0xa646,
+0xa648, 0xa648,
+0xa64a, 0xa64a,
+0xa64c, 0xa64c,
+0xa64e, 0xa64e,
+0xa650, 0xa650,
+0xa652, 0xa652,
+0xa654, 0xa654,
+0xa656, 0xa656,
+0xa658, 0xa658,
+0xa65a, 0xa65a,
+0xa65c, 0xa65c,
+0xa65e, 0xa65e,
+0xa660, 0xa660,
+0xa662, 0xa662,
+0xa664, 0xa664,
+0xa666, 0xa666,
+0xa668, 0xa668,
+0xa66a, 0xa66a,
+0xa66c, 0xa66c,
+0xa680, 0xa680,
+0xa682, 0xa682,
+0xa684, 0xa684,
+0xa686, 0xa686,
+0xa688, 0xa688,
+0xa68a, 0xa68a,
+0xa68c, 0xa68c,
+0xa68e, 0xa68e,
+0xa690, 0xa690,
+0xa692, 0xa692,
+0xa694, 0xa694,
+0xa696, 0xa696,
+0xa698, 0xa698,
+0xa69a, 0xa69a,
+0xa722, 0xa722,
+0xa724, 0xa724,
+0xa726, 0xa726,
+0xa728, 0xa728,
+0xa72a, 0xa72a,
+0xa72c, 0xa72c,
+0xa72e, 0xa72e,
+0xa732, 0xa732,
+0xa734, 0xa734,
+0xa736, 0xa736,
+0xa738, 0xa738,
+0xa73a, 0xa73a,
+0xa73c, 0xa73c,
+0xa73e, 0xa73e,
+0xa740, 0xa740,
+0xa742, 0xa742,
+0xa744, 0xa744,
+0xa746, 0xa746,
+0xa748, 0xa748,
+0xa74a, 0xa74a,
+0xa74c, 0xa74c,
+0xa74e, 0xa74e,
+0xa750, 0xa750,
+0xa752, 0xa752,
+0xa754, 0xa754,
+0xa756, 0xa756,
+0xa758, 0xa758,
+0xa75a, 0xa75a,
+0xa75c, 0xa75c,
+0xa75e, 0xa75e,
+0xa760, 0xa760,
+0xa762, 0xa762,
+0xa764, 0xa764,
+0xa766, 0xa766,
+0xa768, 0xa768,
+0xa76a, 0xa76a,
+0xa76c, 0xa76c,
+0xa76e, 0xa76e,
+0xa779, 0xa779,
+0xa77b, 0xa77b,
+0xa77d, 0xa77e,
+0xa780, 0xa780,
+0xa782, 0xa782,
+0xa784, 0xa784,
+0xa786, 0xa786,
+0xa78b, 0xa78b,
+0xa78d, 0xa78d,
+0xa790, 0xa790,
+0xa792, 0xa792,
+0xa796, 0xa796,
+0xa798, 0xa798,
+0xa79a, 0xa79a,
+0xa79c, 0xa79c,
+0xa79e, 0xa79e,
+0xa7a0, 0xa7a0,
+0xa7a2, 0xa7a2,
+0xa7a4, 0xa7a4,
+0xa7a6, 0xa7a6,
+0xa7a8, 0xa7a8,
+0xa7aa, 0xa7ae,
+0xa7b0, 0xa7b4,
+0xa7b6, 0xa7b6,
+0xa7b8, 0xa7b8,
+0xff21, 0xff3a,
+0x10400, 0x10427,
+0x104b0, 0x104d3,
+0x10c80, 0x10cb2,
+0x118a0, 0x118bf,
+0x16e40, 0x16e5f,
+0x1e900, 0x1e921,
+}; /* END of CR_Changes_When_Lowercased */
+
+/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Titlecased[] = { 610,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c4, 0x01c4,
+0x01c6, 0x01c7,
+0x01c9, 0x01ca,
+0x01cc, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f1,
+0x01f3, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1f87,
+0x1f90, 0x1f97,
+0x1fa0, 0x1fa7,
+0x1fb0, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xa7b9, 0xa7b9,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x104d8, 0x104fb,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+0x16e60, 0x16e7f,
+0x1e922, 0x1e943,
+}; /* END of CR_Changes_When_Titlecased */
+
+/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
+static const OnigCodePoint
+CR_Changes_When_Uppercased[] = { 611,
+0x0061, 0x007a,
+0x00b5, 0x00b5,
+0x00df, 0x00f6,
+0x00f8, 0x00ff,
+0x0101, 0x0101,
+0x0103, 0x0103,
+0x0105, 0x0105,
+0x0107, 0x0107,
+0x0109, 0x0109,
+0x010b, 0x010b,
+0x010d, 0x010d,
+0x010f, 0x010f,
+0x0111, 0x0111,
+0x0113, 0x0113,
+0x0115, 0x0115,
+0x0117, 0x0117,
+0x0119, 0x0119,
+0x011b, 0x011b,
+0x011d, 0x011d,
+0x011f, 0x011f,
+0x0121, 0x0121,
+0x0123, 0x0123,
+0x0125, 0x0125,
+0x0127, 0x0127,
+0x0129, 0x0129,
+0x012b, 0x012b,
+0x012d, 0x012d,
+0x012f, 0x012f,
+0x0131, 0x0131,
+0x0133, 0x0133,
+0x0135, 0x0135,
+0x0137, 0x0137,
+0x013a, 0x013a,
+0x013c, 0x013c,
+0x013e, 0x013e,
+0x0140, 0x0140,
+0x0142, 0x0142,
+0x0144, 0x0144,
+0x0146, 0x0146,
+0x0148, 0x0149,
+0x014b, 0x014b,
+0x014d, 0x014d,
+0x014f, 0x014f,
+0x0151, 0x0151,
+0x0153, 0x0153,
+0x0155, 0x0155,
+0x0157, 0x0157,
+0x0159, 0x0159,
+0x015b, 0x015b,
+0x015d, 0x015d,
+0x015f, 0x015f,
+0x0161, 0x0161,
+0x0163, 0x0163,
+0x0165, 0x0165,
+0x0167, 0x0167,
+0x0169, 0x0169,
+0x016b, 0x016b,
+0x016d, 0x016d,
+0x016f, 0x016f,
+0x0171, 0x0171,
+0x0173, 0x0173,
+0x0175, 0x0175,
+0x0177, 0x0177,
+0x017a, 0x017a,
+0x017c, 0x017c,
+0x017e, 0x0180,
+0x0183, 0x0183,
+0x0185, 0x0185,
+0x0188, 0x0188,
+0x018c, 0x018c,
+0x0192, 0x0192,
+0x0195, 0x0195,
+0x0199, 0x019a,
+0x019e, 0x019e,
+0x01a1, 0x01a1,
+0x01a3, 0x01a3,
+0x01a5, 0x01a5,
+0x01a8, 0x01a8,
+0x01ad, 0x01ad,
+0x01b0, 0x01b0,
+0x01b4, 0x01b4,
+0x01b6, 0x01b6,
+0x01b9, 0x01b9,
+0x01bd, 0x01bd,
+0x01bf, 0x01bf,
+0x01c5, 0x01c6,
+0x01c8, 0x01c9,
+0x01cb, 0x01cc,
+0x01ce, 0x01ce,
+0x01d0, 0x01d0,
+0x01d2, 0x01d2,
+0x01d4, 0x01d4,
+0x01d6, 0x01d6,
+0x01d8, 0x01d8,
+0x01da, 0x01da,
+0x01dc, 0x01dd,
+0x01df, 0x01df,
+0x01e1, 0x01e1,
+0x01e3, 0x01e3,
+0x01e5, 0x01e5,
+0x01e7, 0x01e7,
+0x01e9, 0x01e9,
+0x01eb, 0x01eb,
+0x01ed, 0x01ed,
+0x01ef, 0x01f0,
+0x01f2, 0x01f3,
+0x01f5, 0x01f5,
+0x01f9, 0x01f9,
+0x01fb, 0x01fb,
+0x01fd, 0x01fd,
+0x01ff, 0x01ff,
+0x0201, 0x0201,
+0x0203, 0x0203,
+0x0205, 0x0205,
+0x0207, 0x0207,
+0x0209, 0x0209,
+0x020b, 0x020b,
+0x020d, 0x020d,
+0x020f, 0x020f,
+0x0211, 0x0211,
+0x0213, 0x0213,
+0x0215, 0x0215,
+0x0217, 0x0217,
+0x0219, 0x0219,
+0x021b, 0x021b,
+0x021d, 0x021d,
+0x021f, 0x021f,
+0x0223, 0x0223,
+0x0225, 0x0225,
+0x0227, 0x0227,
+0x0229, 0x0229,
+0x022b, 0x022b,
+0x022d, 0x022d,
+0x022f, 0x022f,
+0x0231, 0x0231,
+0x0233, 0x0233,
+0x023c, 0x023c,
+0x023f, 0x0240,
+0x0242, 0x0242,
+0x0247, 0x0247,
+0x0249, 0x0249,
+0x024b, 0x024b,
+0x024d, 0x024d,
+0x024f, 0x0254,
+0x0256, 0x0257,
+0x0259, 0x0259,
+0x025b, 0x025c,
+0x0260, 0x0261,
+0x0263, 0x0263,
+0x0265, 0x0266,
+0x0268, 0x026c,
+0x026f, 0x026f,
+0x0271, 0x0272,
+0x0275, 0x0275,
+0x027d, 0x027d,
+0x0280, 0x0280,
+0x0283, 0x0283,
+0x0287, 0x028c,
+0x0292, 0x0292,
+0x029d, 0x029e,
+0x0345, 0x0345,
+0x0371, 0x0371,
+0x0373, 0x0373,
+0x0377, 0x0377,
+0x037b, 0x037d,
+0x0390, 0x0390,
+0x03ac, 0x03ce,
+0x03d0, 0x03d1,
+0x03d5, 0x03d7,
+0x03d9, 0x03d9,
+0x03db, 0x03db,
+0x03dd, 0x03dd,
+0x03df, 0x03df,
+0x03e1, 0x03e1,
+0x03e3, 0x03e3,
+0x03e5, 0x03e5,
+0x03e7, 0x03e7,
+0x03e9, 0x03e9,
+0x03eb, 0x03eb,
+0x03ed, 0x03ed,
+0x03ef, 0x03f3,
+0x03f5, 0x03f5,
+0x03f8, 0x03f8,
+0x03fb, 0x03fb,
+0x0430, 0x045f,
+0x0461, 0x0461,
+0x0463, 0x0463,
+0x0465, 0x0465,
+0x0467, 0x0467,
+0x0469, 0x0469,
+0x046b, 0x046b,
+0x046d, 0x046d,
+0x046f, 0x046f,
+0x0471, 0x0471,
+0x0473, 0x0473,
+0x0475, 0x0475,
+0x0477, 0x0477,
+0x0479, 0x0479,
+0x047b, 0x047b,
+0x047d, 0x047d,
+0x047f, 0x047f,
+0x0481, 0x0481,
+0x048b, 0x048b,
+0x048d, 0x048d,
+0x048f, 0x048f,
+0x0491, 0x0491,
+0x0493, 0x0493,
+0x0495, 0x0495,
+0x0497, 0x0497,
+0x0499, 0x0499,
+0x049b, 0x049b,
+0x049d, 0x049d,
+0x049f, 0x049f,
+0x04a1, 0x04a1,
+0x04a3, 0x04a3,
+0x04a5, 0x04a5,
+0x04a7, 0x04a7,
+0x04a9, 0x04a9,
+0x04ab, 0x04ab,
+0x04ad, 0x04ad,
+0x04af, 0x04af,
+0x04b1, 0x04b1,
+0x04b3, 0x04b3,
+0x04b5, 0x04b5,
+0x04b7, 0x04b7,
+0x04b9, 0x04b9,
+0x04bb, 0x04bb,
+0x04bd, 0x04bd,
+0x04bf, 0x04bf,
+0x04c2, 0x04c2,
+0x04c4, 0x04c4,
+0x04c6, 0x04c6,
+0x04c8, 0x04c8,
+0x04ca, 0x04ca,
+0x04cc, 0x04cc,
+0x04ce, 0x04cf,
+0x04d1, 0x04d1,
+0x04d3, 0x04d3,
+0x04d5, 0x04d5,
+0x04d7, 0x04d7,
+0x04d9, 0x04d9,
+0x04db, 0x04db,
+0x04dd, 0x04dd,
+0x04df, 0x04df,
+0x04e1, 0x04e1,
+0x04e3, 0x04e3,
+0x04e5, 0x04e5,
+0x04e7, 0x04e7,
+0x04e9, 0x04e9,
+0x04eb, 0x04eb,
+0x04ed, 0x04ed,
+0x04ef, 0x04ef,
+0x04f1, 0x04f1,
+0x04f3, 0x04f3,
+0x04f5, 0x04f5,
+0x04f7, 0x04f7,
+0x04f9, 0x04f9,
+0x04fb, 0x04fb,
+0x04fd, 0x04fd,
+0x04ff, 0x04ff,
+0x0501, 0x0501,
+0x0503, 0x0503,
+0x0505, 0x0505,
+0x0507, 0x0507,
+0x0509, 0x0509,
+0x050b, 0x050b,
+0x050d, 0x050d,
+0x050f, 0x050f,
+0x0511, 0x0511,
+0x0513, 0x0513,
+0x0515, 0x0515,
+0x0517, 0x0517,
+0x0519, 0x0519,
+0x051b, 0x051b,
+0x051d, 0x051d,
+0x051f, 0x051f,
+0x0521, 0x0521,
+0x0523, 0x0523,
+0x0525, 0x0525,
+0x0527, 0x0527,
+0x0529, 0x0529,
+0x052b, 0x052b,
+0x052d, 0x052d,
+0x052f, 0x052f,
+0x0561, 0x0587,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
+0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1d79, 0x1d79,
+0x1d7d, 0x1d7d,
+0x1e01, 0x1e01,
+0x1e03, 0x1e03,
+0x1e05, 0x1e05,
+0x1e07, 0x1e07,
+0x1e09, 0x1e09,
+0x1e0b, 0x1e0b,
+0x1e0d, 0x1e0d,
+0x1e0f, 0x1e0f,
+0x1e11, 0x1e11,
+0x1e13, 0x1e13,
+0x1e15, 0x1e15,
+0x1e17, 0x1e17,
+0x1e19, 0x1e19,
+0x1e1b, 0x1e1b,
+0x1e1d, 0x1e1d,
+0x1e1f, 0x1e1f,
+0x1e21, 0x1e21,
+0x1e23, 0x1e23,
+0x1e25, 0x1e25,
+0x1e27, 0x1e27,
+0x1e29, 0x1e29,
+0x1e2b, 0x1e2b,
+0x1e2d, 0x1e2d,
+0x1e2f, 0x1e2f,
+0x1e31, 0x1e31,
+0x1e33, 0x1e33,
+0x1e35, 0x1e35,
+0x1e37, 0x1e37,
+0x1e39, 0x1e39,
+0x1e3b, 0x1e3b,
+0x1e3d, 0x1e3d,
+0x1e3f, 0x1e3f,
+0x1e41, 0x1e41,
+0x1e43, 0x1e43,
+0x1e45, 0x1e45,
+0x1e47, 0x1e47,
+0x1e49, 0x1e49,
+0x1e4b, 0x1e4b,
+0x1e4d, 0x1e4d,
+0x1e4f, 0x1e4f,
+0x1e51, 0x1e51,
+0x1e53, 0x1e53,
+0x1e55, 0x1e55,
+0x1e57, 0x1e57,
+0x1e59, 0x1e59,
+0x1e5b, 0x1e5b,
+0x1e5d, 0x1e5d,
+0x1e5f, 0x1e5f,
+0x1e61, 0x1e61,
+0x1e63, 0x1e63,
+0x1e65, 0x1e65,
+0x1e67, 0x1e67,
+0x1e69, 0x1e69,
+0x1e6b, 0x1e6b,
+0x1e6d, 0x1e6d,
+0x1e6f, 0x1e6f,
+0x1e71, 0x1e71,
+0x1e73, 0x1e73,
+0x1e75, 0x1e75,
+0x1e77, 0x1e77,
+0x1e79, 0x1e79,
+0x1e7b, 0x1e7b,
+0x1e7d, 0x1e7d,
+0x1e7f, 0x1e7f,
+0x1e81, 0x1e81,
+0x1e83, 0x1e83,
+0x1e85, 0x1e85,
+0x1e87, 0x1e87,
+0x1e89, 0x1e89,
+0x1e8b, 0x1e8b,
+0x1e8d, 0x1e8d,
+0x1e8f, 0x1e8f,
+0x1e91, 0x1e91,
+0x1e93, 0x1e93,
+0x1e95, 0x1e9b,
+0x1ea1, 0x1ea1,
+0x1ea3, 0x1ea3,
+0x1ea5, 0x1ea5,
+0x1ea7, 0x1ea7,
+0x1ea9, 0x1ea9,
+0x1eab, 0x1eab,
+0x1ead, 0x1ead,
+0x1eaf, 0x1eaf,
+0x1eb1, 0x1eb1,
+0x1eb3, 0x1eb3,
+0x1eb5, 0x1eb5,
+0x1eb7, 0x1eb7,
+0x1eb9, 0x1eb9,
+0x1ebb, 0x1ebb,
+0x1ebd, 0x1ebd,
+0x1ebf, 0x1ebf,
+0x1ec1, 0x1ec1,
+0x1ec3, 0x1ec3,
+0x1ec5, 0x1ec5,
+0x1ec7, 0x1ec7,
+0x1ec9, 0x1ec9,
+0x1ecb, 0x1ecb,
+0x1ecd, 0x1ecd,
+0x1ecf, 0x1ecf,
+0x1ed1, 0x1ed1,
+0x1ed3, 0x1ed3,
+0x1ed5, 0x1ed5,
+0x1ed7, 0x1ed7,
+0x1ed9, 0x1ed9,
+0x1edb, 0x1edb,
+0x1edd, 0x1edd,
+0x1edf, 0x1edf,
+0x1ee1, 0x1ee1,
+0x1ee3, 0x1ee3,
+0x1ee5, 0x1ee5,
+0x1ee7, 0x1ee7,
+0x1ee9, 0x1ee9,
+0x1eeb, 0x1eeb,
+0x1eed, 0x1eed,
+0x1eef, 0x1eef,
+0x1ef1, 0x1ef1,
+0x1ef3, 0x1ef3,
+0x1ef5, 0x1ef5,
+0x1ef7, 0x1ef7,
+0x1ef9, 0x1ef9,
+0x1efb, 0x1efb,
+0x1efd, 0x1efd,
+0x1eff, 0x1f07,
+0x1f10, 0x1f15,
+0x1f20, 0x1f27,
+0x1f30, 0x1f37,
+0x1f40, 0x1f45,
+0x1f50, 0x1f57,
+0x1f60, 0x1f67,
+0x1f70, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fb7,
+0x1fbc, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fc7,
+0x1fcc, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fd7,
+0x1fe0, 0x1fe7,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ff7,
+0x1ffc, 0x1ffc,
+0x214e, 0x214e,
+0x2170, 0x217f,
+0x2184, 0x2184,
+0x24d0, 0x24e9,
+0x2c30, 0x2c5e,
+0x2c61, 0x2c61,
+0x2c65, 0x2c66,
+0x2c68, 0x2c68,
+0x2c6a, 0x2c6a,
+0x2c6c, 0x2c6c,
+0x2c73, 0x2c73,
+0x2c76, 0x2c76,
+0x2c81, 0x2c81,
+0x2c83, 0x2c83,
+0x2c85, 0x2c85,
+0x2c87, 0x2c87,
+0x2c89, 0x2c89,
+0x2c8b, 0x2c8b,
+0x2c8d, 0x2c8d,
+0x2c8f, 0x2c8f,
+0x2c91, 0x2c91,
+0x2c93, 0x2c93,
+0x2c95, 0x2c95,
+0x2c97, 0x2c97,
+0x2c99, 0x2c99,
+0x2c9b, 0x2c9b,
+0x2c9d, 0x2c9d,
+0x2c9f, 0x2c9f,
+0x2ca1, 0x2ca1,
+0x2ca3, 0x2ca3,
+0x2ca5, 0x2ca5,
+0x2ca7, 0x2ca7,
+0x2ca9, 0x2ca9,
+0x2cab, 0x2cab,
+0x2cad, 0x2cad,
+0x2caf, 0x2caf,
+0x2cb1, 0x2cb1,
+0x2cb3, 0x2cb3,
+0x2cb5, 0x2cb5,
+0x2cb7, 0x2cb7,
+0x2cb9, 0x2cb9,
+0x2cbb, 0x2cbb,
+0x2cbd, 0x2cbd,
+0x2cbf, 0x2cbf,
+0x2cc1, 0x2cc1,
+0x2cc3, 0x2cc3,
+0x2cc5, 0x2cc5,
+0x2cc7, 0x2cc7,
+0x2cc9, 0x2cc9,
+0x2ccb, 0x2ccb,
+0x2ccd, 0x2ccd,
+0x2ccf, 0x2ccf,
+0x2cd1, 0x2cd1,
+0x2cd3, 0x2cd3,
+0x2cd5, 0x2cd5,
+0x2cd7, 0x2cd7,
+0x2cd9, 0x2cd9,
+0x2cdb, 0x2cdb,
+0x2cdd, 0x2cdd,
+0x2cdf, 0x2cdf,
+0x2ce1, 0x2ce1,
+0x2ce3, 0x2ce3,
+0x2cec, 0x2cec,
+0x2cee, 0x2cee,
+0x2cf3, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0xa641, 0xa641,
+0xa643, 0xa643,
+0xa645, 0xa645,
+0xa647, 0xa647,
+0xa649, 0xa649,
+0xa64b, 0xa64b,
+0xa64d, 0xa64d,
+0xa64f, 0xa64f,
+0xa651, 0xa651,
+0xa653, 0xa653,
+0xa655, 0xa655,
+0xa657, 0xa657,
+0xa659, 0xa659,
+0xa65b, 0xa65b,
+0xa65d, 0xa65d,
+0xa65f, 0xa65f,
+0xa661, 0xa661,
+0xa663, 0xa663,
+0xa665, 0xa665,
+0xa667, 0xa667,
+0xa669, 0xa669,
+0xa66b, 0xa66b,
+0xa66d, 0xa66d,
+0xa681, 0xa681,
+0xa683, 0xa683,
+0xa685, 0xa685,
+0xa687, 0xa687,
+0xa689, 0xa689,
+0xa68b, 0xa68b,
+0xa68d, 0xa68d,
+0xa68f, 0xa68f,
+0xa691, 0xa691,
+0xa693, 0xa693,
+0xa695, 0xa695,
+0xa697, 0xa697,
+0xa699, 0xa699,
+0xa69b, 0xa69b,
+0xa723, 0xa723,
+0xa725, 0xa725,
+0xa727, 0xa727,
+0xa729, 0xa729,
+0xa72b, 0xa72b,
+0xa72d, 0xa72d,
+0xa72f, 0xa72f,
+0xa733, 0xa733,
+0xa735, 0xa735,
+0xa737, 0xa737,
+0xa739, 0xa739,
+0xa73b, 0xa73b,
+0xa73d, 0xa73d,
+0xa73f, 0xa73f,
+0xa741, 0xa741,
+0xa743, 0xa743,
+0xa745, 0xa745,
+0xa747, 0xa747,
+0xa749, 0xa749,
+0xa74b, 0xa74b,
+0xa74d, 0xa74d,
+0xa74f, 0xa74f,
+0xa751, 0xa751,
+0xa753, 0xa753,
+0xa755, 0xa755,
+0xa757, 0xa757,
+0xa759, 0xa759,
+0xa75b, 0xa75b,
+0xa75d, 0xa75d,
+0xa75f, 0xa75f,
+0xa761, 0xa761,
+0xa763, 0xa763,
+0xa765, 0xa765,
+0xa767, 0xa767,
+0xa769, 0xa769,
+0xa76b, 0xa76b,
+0xa76d, 0xa76d,
+0xa76f, 0xa76f,
+0xa77a, 0xa77a,
+0xa77c, 0xa77c,
+0xa77f, 0xa77f,
+0xa781, 0xa781,
+0xa783, 0xa783,
+0xa785, 0xa785,
+0xa787, 0xa787,
+0xa78c, 0xa78c,
+0xa791, 0xa791,
+0xa793, 0xa793,
+0xa797, 0xa797,
+0xa799, 0xa799,
+0xa79b, 0xa79b,
+0xa79d, 0xa79d,
+0xa79f, 0xa79f,
+0xa7a1, 0xa7a1,
+0xa7a3, 0xa7a3,
+0xa7a5, 0xa7a5,
+0xa7a7, 0xa7a7,
+0xa7a9, 0xa7a9,
+0xa7b5, 0xa7b5,
+0xa7b7, 0xa7b7,
+0xa7b9, 0xa7b9,
+0xab53, 0xab53,
+0xab70, 0xabbf,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xff41, 0xff5a,
+0x10428, 0x1044f,
+0x104d8, 0x104fb,
+0x10cc0, 0x10cf2,
+0x118c0, 0x118df,
+0x16e60, 0x16e7f,
+0x1e922, 0x1e943,
+}; /* END of CR_Changes_When_Uppercased */
+
+/* PROPERTY: 'Cherokee': Script */
+static const OnigCodePoint
+CR_Cherokee[] = { 3,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0xab70, 0xabbf,
+}; /* END of CR_Cherokee */
+
/* PROPERTY: 'Cn': General Category */
static const OnigCodePoint
-CR_Cn[] = { 613,
+CR_Cn[] = { 658,
0x0378, 0x0379,
0x0380, 0x0383,
0x038b, 0x038b,
@@ -6046,23 +9807,23 @@ CR_Cn[] = { 613,
0x03a2, 0x03a2,
0x0530, 0x0530,
0x0557, 0x0558,
-0x0560, 0x0560,
-0x0588, 0x0588,
0x058b, 0x058c,
0x0590, 0x0590,
0x05c8, 0x05cf,
-0x05eb, 0x05ef,
+0x05eb, 0x05ee,
0x05f5, 0x05ff,
0x061d, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
0x07b2, 0x07bf,
-0x07fb, 0x07ff,
+0x07fb, 0x07fc,
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
-0x085f, 0x089f,
-0x08b5, 0x08e2,
+0x085f, 0x085f,
+0x086b, 0x089f,
+0x08b5, 0x08b5,
+0x08be, 0x08d2,
0x0984, 0x0984,
0x098d, 0x098e,
0x0991, 0x0992,
@@ -6076,7 +9837,7 @@ CR_Cn[] = { 613,
0x09d8, 0x09db,
0x09de, 0x09de,
0x09e4, 0x09e5,
-0x09fc, 0x0a00,
+0x09ff, 0x0a00,
0x0a04, 0x0a04,
0x0a0b, 0x0a0e,
0x0a11, 0x0a12,
@@ -6092,7 +9853,7 @@ CR_Cn[] = { 613,
0x0a52, 0x0a58,
0x0a5d, 0x0a5d,
0x0a5f, 0x0a65,
-0x0a76, 0x0a80,
+0x0a77, 0x0a80,
0x0a84, 0x0a84,
0x0a8e, 0x0a8e,
0x0a92, 0x0a92,
@@ -6106,7 +9867,7 @@ CR_Cn[] = { 613,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
0x0af2, 0x0af8,
-0x0afa, 0x0b00,
+0x0b00, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
0x0b11, 0x0b12,
@@ -6137,7 +9898,6 @@ CR_Cn[] = { 613,
0x0bd1, 0x0bd6,
0x0bd8, 0x0be5,
0x0bfb, 0x0bff,
-0x0c04, 0x0c04,
0x0c0d, 0x0c0d,
0x0c11, 0x0c11,
0x0c29, 0x0c29,
@@ -6149,8 +9909,6 @@ CR_Cn[] = { 613,
0x0c5b, 0x0c5f,
0x0c64, 0x0c65,
0x0c70, 0x0c77,
-0x0c80, 0x0c80,
-0x0c84, 0x0c84,
0x0c8d, 0x0c8d,
0x0c91, 0x0c91,
0x0ca9, 0x0ca9,
@@ -6163,17 +9921,14 @@ CR_Cn[] = { 613,
0x0cdf, 0x0cdf,
0x0ce4, 0x0ce5,
0x0cf0, 0x0cf0,
-0x0cf3, 0x0d00,
+0x0cf3, 0x0cff,
0x0d04, 0x0d04,
0x0d0d, 0x0d0d,
0x0d11, 0x0d11,
-0x0d3b, 0x0d3c,
0x0d45, 0x0d45,
0x0d49, 0x0d49,
-0x0d4f, 0x0d56,
-0x0d58, 0x0d5e,
+0x0d50, 0x0d53,
0x0d64, 0x0d65,
-0x0d76, 0x0d78,
0x0d80, 0x0d81,
0x0d84, 0x0d84,
0x0d97, 0x0d99,
@@ -6250,7 +10005,7 @@ CR_Cn[] = { 613,
0x17fa, 0x17ff,
0x180f, 0x180f,
0x181a, 0x181f,
-0x1878, 0x187f,
+0x1879, 0x187f,
0x18ab, 0x18af,
0x18f6, 0x18ff,
0x191f, 0x191f,
@@ -6274,11 +10029,11 @@ CR_Cn[] = { 613,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
-0x1c80, 0x1cbf,
+0x1c89, 0x1c8f,
+0x1cbb, 0x1cbc,
0x1cc8, 0x1ccf,
-0x1cf7, 0x1cf7,
0x1cfa, 0x1cff,
-0x1df6, 0x1dfb,
+0x1dfa, 0x1dfa,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
0x1f46, 0x1f47,
@@ -6299,18 +10054,15 @@ CR_Cn[] = { 613,
0x2072, 0x2073,
0x208f, 0x208f,
0x209d, 0x209f,
-0x20bf, 0x20cf,
+0x20c0, 0x20cf,
0x20f1, 0x20ff,
0x218c, 0x218f,
-0x23fb, 0x23ff,
0x2427, 0x243f,
0x244b, 0x245f,
0x2b74, 0x2b75,
0x2b96, 0x2b97,
-0x2bba, 0x2bbc,
0x2bc9, 0x2bc9,
-0x2bd2, 0x2beb,
-0x2bf0, 0x2bff,
+0x2bff, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
0x2cf4, 0x2cf8,
@@ -6328,7 +10080,7 @@ CR_Cn[] = { 613,
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
-0x2e43, 0x2e7f,
+0x2e4f, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -6336,26 +10088,24 @@ CR_Cn[] = { 613,
0x3040, 0x3040,
0x3097, 0x3098,
0x3100, 0x3104,
-0x312e, 0x3130,
+0x3130, 0x3130,
0x318f, 0x318f,
0x31bb, 0x31bf,
0x31e4, 0x31ef,
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
-0x9fd6, 0x9fff,
+0x9ff0, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
0xa6f8, 0xa6ff,
-0xa7ae, 0xa7af,
-0xa7b8, 0xa7f6,
+0xa7ba, 0xa7f6,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
-0xa8c5, 0xa8cd,
+0xa8c6, 0xa8cd,
0xa8da, 0xa8df,
-0xa8fe, 0xa8ff,
0xa954, 0xa95e,
0xa97d, 0xa97f,
0xa9ce, 0xa9ce,
@@ -6415,21 +10165,23 @@ CR_Cn[] = { 613,
0x100fb, 0x100ff,
0x10103, 0x10106,
0x10134, 0x10136,
-0x1018d, 0x1018f,
+0x1018f, 0x1018f,
0x1019c, 0x1019f,
0x101a1, 0x101cf,
0x101fe, 0x1027f,
0x1029d, 0x1029f,
0x102d1, 0x102df,
0x102fc, 0x102ff,
-0x10324, 0x1032f,
+0x10324, 0x1032c,
0x1034b, 0x1034f,
0x1037b, 0x1037f,
0x1039e, 0x1039e,
0x103c4, 0x103c7,
0x103d6, 0x103ff,
0x1049e, 0x1049f,
-0x104aa, 0x104ff,
+0x104aa, 0x104af,
+0x104d4, 0x104d7,
+0x104fc, 0x104ff,
0x10528, 0x1052f,
0x10564, 0x1056e,
0x10570, 0x105ff,
@@ -6455,9 +10207,9 @@ CR_Cn[] = { 613,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
0x10a18, 0x10a18,
-0x10a34, 0x10a37,
+0x10a36, 0x10a37,
0x10a3b, 0x10a3e,
-0x10a48, 0x10a4f,
+0x10a49, 0x10a4f,
0x10a59, 0x10a5f,
0x10aa0, 0x10abf,
0x10ae7, 0x10aea,
@@ -6471,21 +10223,25 @@ CR_Cn[] = { 613,
0x10c49, 0x10c7f,
0x10cb3, 0x10cbf,
0x10cf3, 0x10cf9,
-0x10d00, 0x10e5f,
-0x10e7f, 0x10fff,
+0x10d28, 0x10d2f,
+0x10d3a, 0x10e5f,
+0x10e7f, 0x10eff,
+0x10f28, 0x10f2f,
+0x10f5a, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107e,
-0x110c2, 0x110cf,
+0x110c2, 0x110cc,
+0x110ce, 0x110cf,
0x110e9, 0x110ef,
0x110fa, 0x110ff,
0x11135, 0x11135,
-0x11144, 0x1114f,
+0x11147, 0x1114f,
0x11177, 0x1117f,
0x111ce, 0x111cf,
0x111e0, 0x111e0,
0x111f5, 0x111ff,
0x11212, 0x11212,
-0x1123e, 0x1127f,
+0x1123f, 0x1127f,
0x11287, 0x11287,
0x11289, 0x11289,
0x1128e, 0x1128e,
@@ -6499,7 +10255,7 @@ CR_Cn[] = { 613,
0x11329, 0x11329,
0x11331, 0x11331,
0x11334, 0x11334,
-0x1133a, 0x1133b,
+0x1133a, 0x1133a,
0x11345, 0x11346,
0x11349, 0x1134a,
0x1134e, 0x1134f,
@@ -6507,21 +10263,50 @@ CR_Cn[] = { 613,
0x11358, 0x1135c,
0x11364, 0x11365,
0x1136d, 0x1136f,
-0x11375, 0x1147f,
+0x11375, 0x113ff,
+0x1145a, 0x1145a,
+0x1145c, 0x1145c,
+0x1145f, 0x1147f,
0x114c8, 0x114cf,
0x114da, 0x1157f,
0x115b6, 0x115b7,
0x115de, 0x115ff,
0x11645, 0x1164f,
-0x1165a, 0x1167f,
+0x1165a, 0x1165f,
+0x1166d, 0x1167f,
0x116b8, 0x116bf,
0x116ca, 0x116ff,
-0x1171a, 0x1171c,
+0x1171b, 0x1171c,
0x1172c, 0x1172f,
-0x11740, 0x1189f,
+0x11740, 0x117ff,
+0x1183c, 0x1189f,
0x118f3, 0x118fe,
-0x11900, 0x11abf,
-0x11af9, 0x11fff,
+0x11900, 0x119ff,
+0x11a48, 0x11a4f,
+0x11a84, 0x11a85,
+0x11aa3, 0x11abf,
+0x11af9, 0x11bff,
+0x11c09, 0x11c09,
+0x11c37, 0x11c37,
+0x11c46, 0x11c4f,
+0x11c6d, 0x11c6f,
+0x11c90, 0x11c91,
+0x11ca8, 0x11ca8,
+0x11cb7, 0x11cff,
+0x11d07, 0x11d07,
+0x11d0a, 0x11d0a,
+0x11d37, 0x11d39,
+0x11d3b, 0x11d3b,
+0x11d3e, 0x11d3e,
+0x11d48, 0x11d4f,
+0x11d5a, 0x11d5f,
+0x11d66, 0x11d66,
+0x11d69, 0x11d69,
+0x11d8f, 0x11d8f,
+0x11d92, 0x11d92,
+0x11d99, 0x11d9f,
+0x11daa, 0x11edf,
+0x11ef9, 0x11fff,
0x1239a, 0x123ff,
0x1246f, 0x1246f,
0x12475, 0x1247f,
@@ -6538,11 +10323,16 @@ CR_Cn[] = { 613,
0x16b5a, 0x16b5a,
0x16b62, 0x16b62,
0x16b78, 0x16b7c,
-0x16b90, 0x16eff,
+0x16b90, 0x16e3f,
+0x16e9b, 0x16eff,
0x16f45, 0x16f4f,
0x16f7f, 0x16f8e,
-0x16fa0, 0x1afff,
-0x1b002, 0x1bbff,
+0x16fa0, 0x16fdf,
+0x16fe2, 0x16fff,
+0x187f2, 0x187ff,
+0x18af3, 0x1afff,
+0x1b11f, 0x1b16f,
+0x1b2fc, 0x1bbff,
0x1bc6b, 0x1bc6f,
0x1bc7d, 0x1bc7f,
0x1bc89, 0x1bc8f,
@@ -6551,9 +10341,10 @@ CR_Cn[] = { 613,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
0x1d1e9, 0x1d1ff,
-0x1d246, 0x1d2ff,
+0x1d246, 0x1d2df,
+0x1d2f4, 0x1d2ff,
0x1d357, 0x1d35f,
-0x1d372, 0x1d3ff,
+0x1d379, 0x1d3ff,
0x1d455, 0x1d455,
0x1d49d, 0x1d49d,
0x1d4a0, 0x1d4a1,
@@ -6576,9 +10367,18 @@ CR_Cn[] = { 613,
0x1d7cc, 0x1d7cd,
0x1da8c, 0x1da9a,
0x1daa0, 0x1daa0,
-0x1dab0, 0x1e7ff,
+0x1dab0, 0x1dfff,
+0x1e007, 0x1e007,
+0x1e019, 0x1e01a,
+0x1e022, 0x1e022,
+0x1e025, 0x1e025,
+0x1e02b, 0x1e7ff,
0x1e8c5, 0x1e8c6,
-0x1e8d7, 0x1edff,
+0x1e8d7, 0x1e8ff,
+0x1e94b, 0x1e94f,
+0x1e95a, 0x1e95d,
+0x1e960, 0x1ec70,
+0x1ecb5, 0x1edff,
0x1ee04, 0x1ee04,
0x1ee20, 0x1ee20,
0x1ee23, 0x1ee23,
@@ -6620,32 +10420,38 @@ CR_Cn[] = { 613,
0x1f0d0, 0x1f0d0,
0x1f0f6, 0x1f0ff,
0x1f10d, 0x1f10f,
-0x1f12f, 0x1f12f,
0x1f16c, 0x1f16f,
-0x1f19b, 0x1f1e5,
+0x1f1ad, 0x1f1e5,
0x1f203, 0x1f20f,
-0x1f23b, 0x1f23f,
+0x1f23c, 0x1f23f,
0x1f249, 0x1f24f,
-0x1f252, 0x1f2ff,
-0x1f57a, 0x1f57a,
-0x1f5a4, 0x1f5a4,
-0x1f6d1, 0x1f6df,
+0x1f252, 0x1f25f,
+0x1f266, 0x1f2ff,
+0x1f6d5, 0x1f6df,
0x1f6ed, 0x1f6ef,
-0x1f6f4, 0x1f6ff,
+0x1f6fa, 0x1f6ff,
0x1f774, 0x1f77f,
-0x1f7d5, 0x1f7ff,
+0x1f7d9, 0x1f7ff,
0x1f80c, 0x1f80f,
0x1f848, 0x1f84f,
0x1f85a, 0x1f85f,
0x1f888, 0x1f88f,
-0x1f8ae, 0x1f90f,
-0x1f919, 0x1f97f,
-0x1f985, 0x1f9bf,
-0x1f9c1, 0x1ffff,
+0x1f8ae, 0x1f8ff,
+0x1f90c, 0x1f90f,
+0x1f93f, 0x1f93f,
+0x1f971, 0x1f972,
+0x1f977, 0x1f979,
+0x1f97b, 0x1f97b,
+0x1f9a3, 0x1f9af,
+0x1f9ba, 0x1f9bf,
+0x1f9c3, 0x1f9cf,
+0x1fa00, 0x1fa5f,
+0x1fa6e, 0x1ffff,
0x2a6d7, 0x2a6ff,
0x2b735, 0x2b73f,
0x2b81e, 0x2b81f,
-0x2cea2, 0x2f7ff,
+0x2cea2, 0x2ceaf,
+0x2ebe1, 0x2f7ff,
0x2fa1e, 0xe0000,
0xe0002, 0xe001f,
0xe0080, 0xe00ff,
@@ -6662,15 +10468,3903 @@ CR_Co[] = { 3,
0x100000, 0x10fffd,
}; /* END of CR_Co */
+/* PROPERTY: 'Common': Script */
+static const OnigCodePoint
+CR_Common[] = { 166,
+0x0000, 0x0040,
+0x005b, 0x0060,
+0x007b, 0x00a9,
+0x00ab, 0x00b9,
+0x00bb, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x02b9, 0x02df,
+0x02e5, 0x02e9,
+0x02ec, 0x02ff,
+0x0374, 0x0374,
+0x037e, 0x037e,
+0x0385, 0x0385,
+0x0387, 0x0387,
+0x0589, 0x0589,
+0x0605, 0x0605,
+0x060c, 0x060c,
+0x061b, 0x061b,
+0x061f, 0x061f,
+0x0640, 0x0640,
+0x06dd, 0x06dd,
+0x08e2, 0x08e2,
+0x0964, 0x0965,
+0x0e3f, 0x0e3f,
+0x0fd5, 0x0fd8,
+0x10fb, 0x10fb,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x1802, 0x1803,
+0x1805, 0x1805,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf3,
+0x1cf5, 0x1cf7,
+0x2000, 0x200b,
+0x200e, 0x2064,
+0x2066, 0x2070,
+0x2074, 0x207e,
+0x2080, 0x208e,
+0x20a0, 0x20bf,
+0x2100, 0x2125,
+0x2127, 0x2129,
+0x212c, 0x2131,
+0x2133, 0x214d,
+0x214f, 0x215f,
+0x2189, 0x218b,
+0x2190, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x27ff,
+0x2900, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
+0x2e00, 0x2e4e,
+0x2ff0, 0x2ffb,
+0x3000, 0x3004,
+0x3006, 0x3006,
+0x3008, 0x3020,
+0x3030, 0x3037,
+0x303c, 0x303f,
+0x309b, 0x309c,
+0x30a0, 0x30a0,
+0x30fb, 0x30fc,
+0x3190, 0x319f,
+0x31c0, 0x31e3,
+0x3220, 0x325f,
+0x327f, 0x32cf,
+0x3358, 0x33ff,
+0x4dc0, 0x4dff,
+0xa700, 0xa721,
+0xa788, 0xa78a,
+0xa830, 0xa839,
+0xa92e, 0xa92e,
+0xa9cf, 0xa9cf,
+0xab5b, 0xab5b,
+0xfd3e, 0xfd3f,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
+0xfeff, 0xfeff,
+0xff01, 0xff20,
+0xff3b, 0xff40,
+0xff5b, 0xff65,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfff9, 0xfffd,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1013f,
+0x10190, 0x1019b,
+0x101d0, 0x101fc,
+0x102e1, 0x102fb,
+0x1bca0, 0x1bca3,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d166,
+0x1d16a, 0x1d17a,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d2e0, 0x1d2f3,
+0x1d300, 0x1d356,
+0x1d360, 0x1d378,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ec71, 0x1ecb4,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
+0x1f1e6, 0x1f1ff,
+0x1f201, 0x1f202,
+0x1f210, 0x1f23b,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f9,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d8,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
+0xe0001, 0xe0001,
+0xe0020, 0xe007f,
+}; /* END of CR_Common */
+
+/* PROPERTY: 'Coptic': Script */
+static const OnigCodePoint
+CR_Coptic[] = { 3,
+0x03e2, 0x03ef,
+0x2c80, 0x2cf3,
+0x2cf9, 0x2cff,
+}; /* END of CR_Coptic */
+
/* PROPERTY: 'Cs': General Category */
static const OnigCodePoint
CR_Cs[] = { 1,
0xd800, 0xdfff,
}; /* END of CR_Cs */
+/* PROPERTY: 'Cuneiform': Script */
+static const OnigCodePoint
+CR_Cuneiform[] = { 4,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12470, 0x12474,
+0x12480, 0x12543,
+}; /* END of CR_Cuneiform */
+
+/* PROPERTY: 'Cypriot': Script */
+static const OnigCodePoint
+CR_Cypriot[] = { 6,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x1083f,
+}; /* END of CR_Cypriot */
+
+/* PROPERTY: 'Cyrillic': Script */
+static const OnigCodePoint
+CR_Cyrillic[] = { 8,
+0x0400, 0x0484,
+0x0487, 0x052f,
+0x1c80, 0x1c88,
+0x1d2b, 0x1d2b,
+0x1d78, 0x1d78,
+0x2de0, 0x2dff,
+0xa640, 0xa69f,
+0xfe2e, 0xfe2f,
+}; /* END of CR_Cyrillic */
+
+/* PROPERTY: 'Dash': Binary Property */
+static const OnigCodePoint
+CR_Dash[] = { 21,
+0x002d, 0x002d,
+0x058a, 0x058a,
+0x05be, 0x05be,
+0x1400, 0x1400,
+0x1806, 0x1806,
+0x2010, 0x2015,
+0x2053, 0x2053,
+0x207b, 0x207b,
+0x208b, 0x208b,
+0x2212, 0x2212,
+0x2e17, 0x2e17,
+0x2e1a, 0x2e1a,
+0x2e3a, 0x2e3b,
+0x2e40, 0x2e40,
+0x301c, 0x301c,
+0x3030, 0x3030,
+0x30a0, 0x30a0,
+0xfe31, 0xfe32,
+0xfe58, 0xfe58,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+}; /* END of CR_Dash */
+
+/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
+static const OnigCodePoint
+CR_Default_Ignorable_Code_Point[] = { 17,
+0x00ad, 0x00ad,
+0x034f, 0x034f,
+0x061c, 0x061c,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x180b, 0x180e,
+0x200b, 0x200f,
+0x202a, 0x202e,
+0x2060, 0x206f,
+0x3164, 0x3164,
+0xfe00, 0xfe0f,
+0xfeff, 0xfeff,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0x1bca0, 0x1bca3,
+0x1d173, 0x1d17a,
+0xe0000, 0xe0fff,
+}; /* END of CR_Default_Ignorable_Code_Point */
+
+/* PROPERTY: 'Deprecated': Binary Property */
+static const OnigCodePoint
+CR_Deprecated[] = { 8,
+0x0149, 0x0149,
+0x0673, 0x0673,
+0x0f77, 0x0f77,
+0x0f79, 0x0f79,
+0x17a3, 0x17a4,
+0x206a, 0x206f,
+0x2329, 0x232a,
+0xe0001, 0xe0001,
+}; /* END of CR_Deprecated */
+
+/* PROPERTY: 'Deseret': Script */
+static const OnigCodePoint
+CR_Deseret[] = { 1,
+0x10400, 0x1044f,
+}; /* END of CR_Deseret */
+
+/* PROPERTY: 'Devanagari': Script */
+static const OnigCodePoint
+CR_Devanagari[] = { 4,
+0x0900, 0x0950,
+0x0953, 0x0963,
+0x0966, 0x097f,
+0xa8e0, 0xa8ff,
+}; /* END of CR_Devanagari */
+
+/* PROPERTY: 'Diacritic': Binary Property */
+static const OnigCodePoint
+CR_Diacritic[] = { 163,
+0x005e, 0x005e,
+0x0060, 0x0060,
+0x00a8, 0x00a8,
+0x00af, 0x00af,
+0x00b4, 0x00b4,
+0x00b7, 0x00b8,
+0x02b0, 0x034e,
+0x0350, 0x0357,
+0x035d, 0x0362,
+0x0374, 0x0375,
+0x037a, 0x037a,
+0x0384, 0x0385,
+0x0483, 0x0487,
+0x0559, 0x0559,
+0x0591, 0x05a1,
+0x05a3, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c4,
+0x064b, 0x0652,
+0x0657, 0x0658,
+0x06df, 0x06e0,
+0x06e5, 0x06e6,
+0x06ea, 0x06ec,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f5,
+0x0818, 0x0819,
+0x08e3, 0x08fe,
+0x093c, 0x093c,
+0x094d, 0x094d,
+0x0951, 0x0954,
+0x0971, 0x0971,
+0x09bc, 0x09bc,
+0x09cd, 0x09cd,
+0x0a3c, 0x0a3c,
+0x0a4d, 0x0a4d,
+0x0abc, 0x0abc,
+0x0acd, 0x0acd,
+0x0afd, 0x0aff,
+0x0b3c, 0x0b3c,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0cbc, 0x0cbc,
+0x0ccd, 0x0ccd,
+0x0d3b, 0x0d3c,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e47, 0x0e4c,
+0x0e4e, 0x0e4e,
+0x0ec8, 0x0ecc,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f3f,
+0x0f82, 0x0f84,
+0x0f86, 0x0f87,
+0x0fc6, 0x0fc6,
+0x1037, 0x1037,
+0x1039, 0x103a,
+0x1087, 0x108d,
+0x108f, 0x108f,
+0x109a, 0x109b,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x1939, 0x193b,
+0x1a75, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abd,
+0x1b34, 0x1b34,
+0x1b44, 0x1b44,
+0x1b6b, 0x1b73,
+0x1baa, 0x1bab,
+0x1c36, 0x1c37,
+0x1c78, 0x1c7d,
+0x1cd0, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf7, 0x1cf9,
+0x1d2c, 0x1d6a,
+0x1dc4, 0x1dcf,
+0x1df5, 0x1df9,
+0x1dfd, 0x1dff,
+0x1fbd, 0x1fbd,
+0x1fbf, 0x1fc1,
+0x1fcd, 0x1fcf,
+0x1fdd, 0x1fdf,
+0x1fed, 0x1fef,
+0x1ffd, 0x1ffe,
+0x2cef, 0x2cf1,
+0x2e2f, 0x2e2f,
+0x302a, 0x302f,
+0x3099, 0x309c,
+0x30fc, 0x30fc,
+0xa66f, 0xa66f,
+0xa67c, 0xa67d,
+0xa67f, 0xa67f,
+0xa69c, 0xa69d,
+0xa6f0, 0xa6f1,
+0xa717, 0xa721,
+0xa788, 0xa788,
+0xa7f8, 0xa7f9,
+0xa8c4, 0xa8c4,
+0xa8e0, 0xa8f1,
+0xa92b, 0xa92e,
+0xa953, 0xa953,
+0xa9b3, 0xa9b3,
+0xa9c0, 0xa9c0,
+0xa9e5, 0xa9e5,
+0xaa7b, 0xaa7d,
+0xaabf, 0xaac2,
+0xaaf6, 0xaaf6,
+0xab5b, 0xab5f,
+0xabec, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe20, 0xfe2f,
+0xff3e, 0xff3e,
+0xff40, 0xff40,
+0xff70, 0xff70,
+0xff9e, 0xff9f,
+0xffe3, 0xffe3,
+0x102e0, 0x102e0,
+0x10ae5, 0x10ae6,
+0x10d22, 0x10d27,
+0x10f46, 0x10f50,
+0x110b9, 0x110ba,
+0x11133, 0x11134,
+0x11173, 0x11173,
+0x111c0, 0x111c0,
+0x111ca, 0x111cc,
+0x11235, 0x11236,
+0x112e9, 0x112ea,
+0x1133c, 0x1133c,
+0x1134d, 0x1134d,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11442, 0x11442,
+0x11446, 0x11446,
+0x114c2, 0x114c3,
+0x115bf, 0x115c0,
+0x1163f, 0x1163f,
+0x116b6, 0x116b7,
+0x1172b, 0x1172b,
+0x11839, 0x1183a,
+0x11a34, 0x11a34,
+0x11a47, 0x11a47,
+0x11a99, 0x11a99,
+0x11c3f, 0x11c3f,
+0x11d42, 0x11d42,
+0x11d44, 0x11d45,
+0x11d97, 0x11d97,
+0x16af0, 0x16af4,
+0x16f8f, 0x16f9f,
+0x1d167, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1e8d0, 0x1e8d6,
+0x1e944, 0x1e946,
+0x1e948, 0x1e94a,
+}; /* END of CR_Diacritic */
+
+/* PROPERTY: 'Dogra': Script */
+static const OnigCodePoint
+CR_Dogra[] = { 1,
+0x11800, 0x1183b,
+}; /* END of CR_Dogra */
+
+/* PROPERTY: 'Duployan': Script */
+static const OnigCodePoint
+CR_Duployan[] = { 5,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9f,
+}; /* END of CR_Duployan */
+
+/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Egyptian_Hieroglyphs[] = { 1,
+0x13000, 0x1342e,
+}; /* END of CR_Egyptian_Hieroglyphs */
+
+/* PROPERTY: 'Elbasan': Script */
+static const OnigCodePoint
+CR_Elbasan[] = { 1,
+0x10500, 0x10527,
+}; /* END of CR_Elbasan */
+
+/* PROPERTY: 'Emoji': Emoji Property */
+static const OnigCodePoint
+CR_Emoji[] = { 147,
+0x0023, 0x0023,
+0x002a, 0x002a,
+0x0030, 0x0039,
+0x00a9, 0x00a9,
+0x00ae, 0x00ae,
+0x203c, 0x203c,
+0x2049, 0x2049,
+0x2122, 0x2122,
+0x2139, 0x2139,
+0x2194, 0x2199,
+0x21a9, 0x21aa,
+0x231a, 0x231b,
+0x2328, 0x2328,
+0x23cf, 0x23cf,
+0x23e9, 0x23f3,
+0x23f8, 0x23fa,
+0x24c2, 0x24c2,
+0x25aa, 0x25ab,
+0x25b6, 0x25b6,
+0x25c0, 0x25c0,
+0x25fb, 0x25fe,
+0x2600, 0x2604,
+0x260e, 0x260e,
+0x2611, 0x2611,
+0x2614, 0x2615,
+0x2618, 0x2618,
+0x261d, 0x261d,
+0x2620, 0x2620,
+0x2622, 0x2623,
+0x2626, 0x2626,
+0x262a, 0x262a,
+0x262e, 0x262f,
+0x2638, 0x263a,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2648, 0x2653,
+0x265f, 0x2660,
+0x2663, 0x2663,
+0x2665, 0x2666,
+0x2668, 0x2668,
+0x267b, 0x267b,
+0x267e, 0x267f,
+0x2692, 0x2697,
+0x2699, 0x2699,
+0x269b, 0x269c,
+0x26a0, 0x26a1,
+0x26aa, 0x26ab,
+0x26b0, 0x26b1,
+0x26bd, 0x26be,
+0x26c4, 0x26c5,
+0x26c8, 0x26c8,
+0x26ce, 0x26cf,
+0x26d1, 0x26d1,
+0x26d3, 0x26d4,
+0x26e9, 0x26ea,
+0x26f0, 0x26f5,
+0x26f7, 0x26fa,
+0x26fd, 0x26fd,
+0x2702, 0x2702,
+0x2705, 0x2705,
+0x2708, 0x270d,
+0x270f, 0x270f,
+0x2712, 0x2712,
+0x2714, 0x2714,
+0x2716, 0x2716,
+0x271d, 0x271d,
+0x2721, 0x2721,
+0x2728, 0x2728,
+0x2733, 0x2734,
+0x2744, 0x2744,
+0x2747, 0x2747,
+0x274c, 0x274c,
+0x274e, 0x274e,
+0x2753, 0x2755,
+0x2757, 0x2757,
+0x2763, 0x2764,
+0x2795, 0x2797,
+0x27a1, 0x27a1,
+0x27b0, 0x27b0,
+0x27bf, 0x27bf,
+0x2934, 0x2935,
+0x2b05, 0x2b07,
+0x2b1b, 0x2b1c,
+0x2b50, 0x2b50,
+0x2b55, 0x2b55,
+0x3030, 0x3030,
+0x303d, 0x303d,
+0x3297, 0x3297,
+0x3299, 0x3299,
+0x1f004, 0x1f004,
+0x1f0cf, 0x1f0cf,
+0x1f170, 0x1f171,
+0x1f17e, 0x1f17f,
+0x1f18e, 0x1f18e,
+0x1f191, 0x1f19a,
+0x1f1e6, 0x1f1ff,
+0x1f201, 0x1f202,
+0x1f21a, 0x1f21a,
+0x1f22f, 0x1f22f,
+0x1f232, 0x1f23a,
+0x1f250, 0x1f251,
+0x1f300, 0x1f321,
+0x1f324, 0x1f393,
+0x1f396, 0x1f397,
+0x1f399, 0x1f39b,
+0x1f39e, 0x1f3f0,
+0x1f3f3, 0x1f3f5,
+0x1f3f7, 0x1f4fd,
+0x1f4ff, 0x1f53d,
+0x1f549, 0x1f54e,
+0x1f550, 0x1f567,
+0x1f56f, 0x1f570,
+0x1f573, 0x1f57a,
+0x1f587, 0x1f587,
+0x1f58a, 0x1f58d,
+0x1f590, 0x1f590,
+0x1f595, 0x1f596,
+0x1f5a4, 0x1f5a5,
+0x1f5a8, 0x1f5a8,
+0x1f5b1, 0x1f5b2,
+0x1f5bc, 0x1f5bc,
+0x1f5c2, 0x1f5c4,
+0x1f5d1, 0x1f5d3,
+0x1f5dc, 0x1f5de,
+0x1f5e1, 0x1f5e1,
+0x1f5e3, 0x1f5e3,
+0x1f5e8, 0x1f5e8,
+0x1f5ef, 0x1f5ef,
+0x1f5f3, 0x1f5f3,
+0x1f5fa, 0x1f64f,
+0x1f680, 0x1f6c5,
+0x1f6cb, 0x1f6d2,
+0x1f6e0, 0x1f6e5,
+0x1f6e9, 0x1f6e9,
+0x1f6eb, 0x1f6ec,
+0x1f6f0, 0x1f6f0,
+0x1f6f3, 0x1f6f9,
+0x1f910, 0x1f93a,
+0x1f93c, 0x1f93e,
+0x1f940, 0x1f945,
+0x1f947, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+}; /* END of CR_Emoji */
+
+/* PROPERTY: 'Emoji_Component': Emoji Property */
+static const OnigCodePoint
+CR_Emoji_Component[] = { 10,
+0x0023, 0x0023,
+0x002a, 0x002a,
+0x0030, 0x0039,
+0x200d, 0x200d,
+0x20e3, 0x20e3,
+0xfe0f, 0xfe0f,
+0x1f1e6, 0x1f1ff,
+0x1f3fb, 0x1f3ff,
+0x1f9b0, 0x1f9b3,
+0xe0020, 0xe007f,
+}; /* END of CR_Emoji_Component */
+
+/* PROPERTY: 'Emoji_Modifier': Emoji Property */
+static const OnigCodePoint
+CR_Emoji_Modifier[] = { 1,
+0x1f3fb, 0x1f3ff,
+}; /* END of CR_Emoji_Modifier */
+
+/* PROPERTY: 'Emoji_Modifier_Base': Emoji Property */
+static const OnigCodePoint
+CR_Emoji_Modifier_Base[] = { 34,
+0x261d, 0x261d,
+0x26f9, 0x26f9,
+0x270a, 0x270d,
+0x1f385, 0x1f385,
+0x1f3c2, 0x1f3c4,
+0x1f3c7, 0x1f3c7,
+0x1f3ca, 0x1f3cc,
+0x1f442, 0x1f443,
+0x1f446, 0x1f450,
+0x1f466, 0x1f469,
+0x1f46e, 0x1f46e,
+0x1f470, 0x1f478,
+0x1f47c, 0x1f47c,
+0x1f481, 0x1f483,
+0x1f485, 0x1f487,
+0x1f4aa, 0x1f4aa,
+0x1f574, 0x1f575,
+0x1f57a, 0x1f57a,
+0x1f590, 0x1f590,
+0x1f595, 0x1f596,
+0x1f645, 0x1f647,
+0x1f64b, 0x1f64f,
+0x1f6a3, 0x1f6a3,
+0x1f6b4, 0x1f6b6,
+0x1f6c0, 0x1f6c0,
+0x1f6cc, 0x1f6cc,
+0x1f918, 0x1f91c,
+0x1f91e, 0x1f91f,
+0x1f926, 0x1f926,
+0x1f930, 0x1f939,
+0x1f93d, 0x1f93e,
+0x1f9b5, 0x1f9b6,
+0x1f9b8, 0x1f9b9,
+0x1f9d1, 0x1f9dd,
+}; /* END of CR_Emoji_Modifier_Base */
+
+/* PROPERTY: 'Emoji_Presentation': Emoji Property */
+static const OnigCodePoint
+CR_Emoji_Presentation[] = { 77,
+0x231a, 0x231b,
+0x23e9, 0x23ec,
+0x23f0, 0x23f0,
+0x23f3, 0x23f3,
+0x25fd, 0x25fe,
+0x2614, 0x2615,
+0x2648, 0x2653,
+0x267f, 0x267f,
+0x2693, 0x2693,
+0x26a1, 0x26a1,
+0x26aa, 0x26ab,
+0x26bd, 0x26be,
+0x26c4, 0x26c5,
+0x26ce, 0x26ce,
+0x26d4, 0x26d4,
+0x26ea, 0x26ea,
+0x26f2, 0x26f3,
+0x26f5, 0x26f5,
+0x26fa, 0x26fa,
+0x26fd, 0x26fd,
+0x2705, 0x2705,
+0x270a, 0x270b,
+0x2728, 0x2728,
+0x274c, 0x274c,
+0x274e, 0x274e,
+0x2753, 0x2755,
+0x2757, 0x2757,
+0x2795, 0x2797,
+0x27b0, 0x27b0,
+0x27bf, 0x27bf,
+0x2b1b, 0x2b1c,
+0x2b50, 0x2b50,
+0x2b55, 0x2b55,
+0x1f004, 0x1f004,
+0x1f0cf, 0x1f0cf,
+0x1f18e, 0x1f18e,
+0x1f191, 0x1f19a,
+0x1f1e6, 0x1f1ff,
+0x1f201, 0x1f201,
+0x1f21a, 0x1f21a,
+0x1f22f, 0x1f22f,
+0x1f232, 0x1f236,
+0x1f238, 0x1f23a,
+0x1f250, 0x1f251,
+0x1f300, 0x1f320,
+0x1f32d, 0x1f335,
+0x1f337, 0x1f37c,
+0x1f37e, 0x1f393,
+0x1f3a0, 0x1f3ca,
+0x1f3cf, 0x1f3d3,
+0x1f3e0, 0x1f3f0,
+0x1f3f4, 0x1f3f4,
+0x1f3f8, 0x1f43e,
+0x1f440, 0x1f440,
+0x1f442, 0x1f4fc,
+0x1f4ff, 0x1f53d,
+0x1f54b, 0x1f54e,
+0x1f550, 0x1f567,
+0x1f57a, 0x1f57a,
+0x1f595, 0x1f596,
+0x1f5a4, 0x1f5a4,
+0x1f5fb, 0x1f64f,
+0x1f680, 0x1f6c5,
+0x1f6cc, 0x1f6cc,
+0x1f6d0, 0x1f6d2,
+0x1f6eb, 0x1f6ec,
+0x1f6f4, 0x1f6f9,
+0x1f910, 0x1f93a,
+0x1f93c, 0x1f93e,
+0x1f940, 0x1f945,
+0x1f947, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+}; /* END of CR_Emoji_Presentation */
+
+/* PROPERTY: 'Ethiopic': Script */
+static const OnigCodePoint
+CR_Ethiopic[] = { 32,
+0x1200, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x137c,
+0x1380, 0x1399,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+}; /* END of CR_Ethiopic */
+
+/* PROPERTY: 'Extended_Pictographic': Emoji Property */
+static const OnigCodePoint
+CR_Extended_Pictographic[] = { 77,
+0x00a9, 0x00a9,
+0x00ae, 0x00ae,
+0x203c, 0x203c,
+0x2049, 0x2049,
+0x2122, 0x2122,
+0x2139, 0x2139,
+0x2194, 0x2199,
+0x21a9, 0x21aa,
+0x231a, 0x231b,
+0x2328, 0x2328,
+0x2388, 0x2388,
+0x23cf, 0x23cf,
+0x23e9, 0x23f3,
+0x23f8, 0x23fa,
+0x24c2, 0x24c2,
+0x25aa, 0x25ab,
+0x25b6, 0x25b6,
+0x25c0, 0x25c0,
+0x25fb, 0x25fe,
+0x2600, 0x2605,
+0x2607, 0x2612,
+0x2614, 0x2685,
+0x2690, 0x2705,
+0x2708, 0x2712,
+0x2714, 0x2714,
+0x2716, 0x2716,
+0x271d, 0x271d,
+0x2721, 0x2721,
+0x2728, 0x2728,
+0x2733, 0x2734,
+0x2744, 0x2744,
+0x2747, 0x2747,
+0x274c, 0x274c,
+0x274e, 0x274e,
+0x2753, 0x2755,
+0x2757, 0x2757,
+0x2763, 0x2767,
+0x2795, 0x2797,
+0x27a1, 0x27a1,
+0x27b0, 0x27b0,
+0x27bf, 0x27bf,
+0x2934, 0x2935,
+0x2b05, 0x2b07,
+0x2b1b, 0x2b1c,
+0x2b50, 0x2b50,
+0x2b55, 0x2b55,
+0x3030, 0x3030,
+0x303d, 0x303d,
+0x3297, 0x3297,
+0x3299, 0x3299,
+0x1f000, 0x1f0ff,
+0x1f10d, 0x1f10f,
+0x1f12f, 0x1f12f,
+0x1f16c, 0x1f171,
+0x1f17e, 0x1f17f,
+0x1f18e, 0x1f18e,
+0x1f191, 0x1f19a,
+0x1f1ad, 0x1f1e5,
+0x1f201, 0x1f20f,
+0x1f21a, 0x1f21a,
+0x1f22f, 0x1f22f,
+0x1f232, 0x1f23a,
+0x1f23c, 0x1f23f,
+0x1f249, 0x1f3fa,
+0x1f400, 0x1f53d,
+0x1f546, 0x1f64f,
+0x1f680, 0x1f6ff,
+0x1f774, 0x1f77f,
+0x1f7d5, 0x1f7ff,
+0x1f80c, 0x1f80f,
+0x1f848, 0x1f84f,
+0x1f85a, 0x1f85f,
+0x1f888, 0x1f88f,
+0x1f8ae, 0x1f8ff,
+0x1f90c, 0x1f93a,
+0x1f93c, 0x1f945,
+0x1f947, 0x1fffd,
+}; /* END of CR_Extended_Pictographic */
+
+/* PROPERTY: 'Extender': Binary Property */
+static const OnigCodePoint
+CR_Extender[] = { 29,
+0x00b7, 0x00b7,
+0x02d0, 0x02d1,
+0x0640, 0x0640,
+0x07fa, 0x07fa,
+0x0e46, 0x0e46,
+0x0ec6, 0x0ec6,
+0x180a, 0x180a,
+0x1843, 0x1843,
+0x1aa7, 0x1aa7,
+0x1c36, 0x1c36,
+0x1c7b, 0x1c7b,
+0x3005, 0x3005,
+0x3031, 0x3035,
+0x309d, 0x309e,
+0x30fc, 0x30fe,
+0xa015, 0xa015,
+0xa60c, 0xa60c,
+0xa9cf, 0xa9cf,
+0xa9e6, 0xa9e6,
+0xaa70, 0xaa70,
+0xaadd, 0xaadd,
+0xaaf3, 0xaaf4,
+0xff70, 0xff70,
+0x1135d, 0x1135d,
+0x115c6, 0x115c8,
+0x11a98, 0x11a98,
+0x16b42, 0x16b43,
+0x16fe0, 0x16fe1,
+0x1e944, 0x1e946,
+}; /* END of CR_Extender */
+
+/* PROPERTY: 'Georgian': Script */
+static const OnigCodePoint
+CR_Georgian[] = { 10,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x10ff,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+}; /* END of CR_Georgian */
+
+/* PROPERTY: 'Glagolitic': Script */
+static const OnigCodePoint
+CR_Glagolitic[] = { 7,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
+}; /* END of CR_Glagolitic */
+
+/* PROPERTY: 'Gothic': Script */
+static const OnigCodePoint
+CR_Gothic[] = { 1,
+0x10330, 0x1034a,
+}; /* END of CR_Gothic */
+
+/* PROPERTY: 'Grantha': Script */
+static const OnigCodePoint
+CR_Grantha[] = { 15,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133c, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+}; /* END of CR_Grantha */
+
+/* PROPERTY: 'Grapheme_Base': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Base[] = { 806,
+0x0020, 0x007e,
+0x00a0, 0x00ac,
+0x00ae, 0x02ff,
+0x0370, 0x0377,
+0x037a, 0x037f,
+0x0384, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x0482,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x058a,
+0x058d, 0x058f,
+0x05be, 0x05be,
+0x05c0, 0x05c0,
+0x05c3, 0x05c3,
+0x05c6, 0x05c6,
+0x05d0, 0x05ea,
+0x05ef, 0x05f4,
+0x0606, 0x060f,
+0x061b, 0x061b,
+0x061e, 0x064a,
+0x0660, 0x066f,
+0x0671, 0x06d5,
+0x06de, 0x06de,
+0x06e5, 0x06e6,
+0x06e9, 0x06e9,
+0x06ee, 0x070d,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07c0, 0x07ea,
+0x07f4, 0x07fa,
+0x07fe, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0830, 0x083e,
+0x0840, 0x0858,
+0x085e, 0x085e,
+0x0860, 0x086a,
+0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x0903, 0x0939,
+0x093b, 0x093b,
+0x093d, 0x0940,
+0x0949, 0x094c,
+0x094e, 0x0950,
+0x0958, 0x0961,
+0x0964, 0x0980,
+0x0982, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bd, 0x09bd,
+0x09bf, 0x09c0,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09ce, 0x09ce,
+0x09dc, 0x09dd,
+0x09df, 0x09e1,
+0x09e6, 0x09fd,
+0x0a03, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3e, 0x0a40,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a6f,
+0x0a72, 0x0a74,
+0x0a76, 0x0a76,
+0x0a83, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abd, 0x0ac0,
+0x0ac9, 0x0ac9,
+0x0acb, 0x0acc,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae1,
+0x0ae6, 0x0af1,
+0x0af9, 0x0af9,
+0x0b02, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
+0x0b40, 0x0b40,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b61,
+0x0b66, 0x0b77,
+0x0b83, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbf, 0x0bbf,
+0x0bc1, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd0, 0x0bd0,
+0x0be6, 0x0bfa,
+0x0c01, 0x0c03,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c3d,
+0x0c41, 0x0c44,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c61,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c80,
+0x0c82, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbd, 0x0cbe,
+0x0cc0, 0x0cc1,
+0x0cc3, 0x0cc4,
+0x0cc7, 0x0cc8,
+0x0cca, 0x0ccb,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce1,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+0x0d02, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d3d,
+0x0d3f, 0x0d40,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d4e, 0x0d4f,
+0x0d54, 0x0d56,
+0x0d58, 0x0d61,
+0x0d66, 0x0d7f,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dd0, 0x0dd1,
+0x0dd8, 0x0dde,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e3f, 0x0e46,
+0x0e4f, 0x0e5b,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+0x0f00, 0x0f17,
+0x0f1a, 0x0f34,
+0x0f36, 0x0f36,
+0x0f38, 0x0f38,
+0x0f3a, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f7f, 0x0f7f,
+0x0f85, 0x0f85,
+0x0f88, 0x0f8c,
+0x0fbe, 0x0fc5,
+0x0fc7, 0x0fcc,
+0x0fce, 0x0fda,
+0x1000, 0x102c,
+0x1031, 0x1031,
+0x1038, 0x1038,
+0x103b, 0x103c,
+0x103f, 0x1057,
+0x105a, 0x105d,
+0x1061, 0x1070,
+0x1075, 0x1081,
+0x1083, 0x1084,
+0x1087, 0x108c,
+0x108e, 0x109c,
+0x109e, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1360, 0x137c,
+0x1380, 0x1399,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1400, 0x169c,
+0x16a0, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1735, 0x1736,
+0x1740, 0x1751,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1780, 0x17b3,
+0x17b6, 0x17b6,
+0x17be, 0x17c5,
+0x17c7, 0x17c8,
+0x17d4, 0x17dc,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x1800, 0x180a,
+0x1810, 0x1819,
+0x1820, 0x1878,
+0x1880, 0x1884,
+0x1887, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1923, 0x1926,
+0x1929, 0x192b,
+0x1930, 0x1931,
+0x1933, 0x1938,
+0x1940, 0x1940,
+0x1944, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x19de, 0x1a16,
+0x1a19, 0x1a1a,
+0x1a1e, 0x1a55,
+0x1a57, 0x1a57,
+0x1a61, 0x1a61,
+0x1a63, 0x1a64,
+0x1a6d, 0x1a72,
+0x1a80, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+0x1b04, 0x1b33,
+0x1b35, 0x1b35,
+0x1b3b, 0x1b3b,
+0x1b3d, 0x1b41,
+0x1b43, 0x1b4b,
+0x1b50, 0x1b6a,
+0x1b74, 0x1b7c,
+0x1b82, 0x1ba1,
+0x1ba6, 0x1ba7,
+0x1baa, 0x1baa,
+0x1bae, 0x1be5,
+0x1be7, 0x1be7,
+0x1bea, 0x1bec,
+0x1bee, 0x1bee,
+0x1bf2, 0x1bf3,
+0x1bfc, 0x1c2b,
+0x1c34, 0x1c35,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd3, 0x1cd3,
+0x1ce1, 0x1ce1,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf3,
+0x1cf5, 0x1cf7,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fdd, 0x1fef,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffe,
+0x2000, 0x200a,
+0x2010, 0x2027,
+0x202f, 0x205f,
+0x2070, 0x2071,
+0x2074, 0x208e,
+0x2090, 0x209c,
+0x20a0, 0x20bf,
+0x2100, 0x218b,
+0x2190, 0x2426,
+0x2440, 0x244a,
+0x2460, 0x2b73,
+0x2b76, 0x2b95,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2cf9, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d70,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x2e00, 0x2e4e,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x2ff0, 0x2ffb,
+0x3000, 0x3029,
+0x3030, 0x303f,
+0x3041, 0x3096,
+0x309b, 0x30ff,
+0x3105, 0x312f,
+0x3131, 0x318e,
+0x3190, 0x31ba,
+0x31c0, 0x31e3,
+0x31f0, 0x321e,
+0x3220, 0x32fe,
+0x3300, 0x4db5,
+0x4dc0, 0x9fef,
+0xa000, 0xa48c,
+0xa490, 0xa4c6,
+0xa4d0, 0xa62b,
+0xa640, 0xa66e,
+0xa673, 0xa673,
+0xa67e, 0xa69d,
+0xa6a0, 0xa6ef,
+0xa6f2, 0xa6f7,
+0xa700, 0xa7b9,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa824,
+0xa827, 0xa82b,
+0xa830, 0xa839,
+0xa840, 0xa877,
+0xa880, 0xa8c3,
+0xa8ce, 0xa8d9,
+0xa8f2, 0xa8fe,
+0xa900, 0xa925,
+0xa92e, 0xa946,
+0xa952, 0xa953,
+0xa95f, 0xa97c,
+0xa983, 0xa9b2,
+0xa9b4, 0xa9b5,
+0xa9ba, 0xa9bb,
+0xa9bd, 0xa9cd,
+0xa9cf, 0xa9d9,
+0xa9de, 0xa9e4,
+0xa9e6, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa2f, 0xaa30,
+0xaa33, 0xaa34,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa4d, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa5c, 0xaa7b,
+0xaa7d, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaaeb,
+0xaaee, 0xaaf5,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab65,
+0xab70, 0xabe4,
+0xabe6, 0xabe7,
+0xabe9, 0xabec,
+0xabf0, 0xabf9,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbc1,
+0xfbd3, 0xfd3f,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfd,
+0xfe10, 0xfe19,
+0xfe30, 0xfe52,
+0xfe54, 0xfe66,
+0xfe68, 0xfe6b,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff01, 0xff9d,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0xffe0, 0xffe6,
+0xffe8, 0xffee,
+0xfffc, 0xfffd,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10100, 0x10102,
+0x10107, 0x10133,
+0x10137, 0x1018e,
+0x10190, 0x1019b,
+0x101a0, 0x101a0,
+0x101d0, 0x101fc,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x102e1, 0x102fb,
+0x10300, 0x10323,
+0x1032d, 0x1034a,
+0x10350, 0x10375,
+0x10380, 0x1039d,
+0x1039f, 0x103c3,
+0x103c8, 0x103d5,
+0x10400, 0x1049d,
+0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x1056f, 0x1056f,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10857, 0x1089e,
+0x108a7, 0x108af,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x108fb, 0x1091b,
+0x1091f, 0x10939,
+0x1093f, 0x1093f,
+0x10980, 0x109b7,
+0x109bc, 0x109cf,
+0x109d2, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a35,
+0x10a40, 0x10a48,
+0x10a50, 0x10a58,
+0x10a60, 0x10a9f,
+0x10ac0, 0x10ae4,
+0x10aeb, 0x10af6,
+0x10b00, 0x10b35,
+0x10b39, 0x10b55,
+0x10b58, 0x10b72,
+0x10b78, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10cfa, 0x10d23,
+0x10d30, 0x10d39,
+0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f45,
+0x10f51, 0x10f59,
+0x11000, 0x11000,
+0x11002, 0x11037,
+0x11047, 0x1104d,
+0x11052, 0x1106f,
+0x11082, 0x110b2,
+0x110b7, 0x110b8,
+0x110bb, 0x110bc,
+0x110be, 0x110c1,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+0x11103, 0x11126,
+0x1112c, 0x1112c,
+0x11136, 0x11146,
+0x11150, 0x11172,
+0x11174, 0x11176,
+0x11182, 0x111b5,
+0x111bf, 0x111c8,
+0x111cd, 0x111cd,
+0x111d0, 0x111df,
+0x111e1, 0x111f4,
+0x11200, 0x11211,
+0x11213, 0x1122e,
+0x11232, 0x11233,
+0x11235, 0x11235,
+0x11238, 0x1123d,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a9,
+0x112b0, 0x112de,
+0x112e0, 0x112e2,
+0x112f0, 0x112f9,
+0x11302, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x1133f, 0x1133f,
+0x11341, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x1135d, 0x11363,
+0x11400, 0x11437,
+0x11440, 0x11441,
+0x11445, 0x11445,
+0x11447, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145d,
+0x11480, 0x114af,
+0x114b1, 0x114b2,
+0x114b9, 0x114b9,
+0x114bb, 0x114bc,
+0x114be, 0x114be,
+0x114c1, 0x114c1,
+0x114c4, 0x114c7,
+0x114d0, 0x114d9,
+0x11580, 0x115ae,
+0x115b0, 0x115b1,
+0x115b8, 0x115bb,
+0x115be, 0x115be,
+0x115c1, 0x115db,
+0x11600, 0x11632,
+0x1163b, 0x1163c,
+0x1163e, 0x1163e,
+0x11641, 0x11644,
+0x11650, 0x11659,
+0x11660, 0x1166c,
+0x11680, 0x116aa,
+0x116ac, 0x116ac,
+0x116ae, 0x116af,
+0x116b6, 0x116b6,
+0x116c0, 0x116c9,
+0x11700, 0x1171a,
+0x11720, 0x11721,
+0x11726, 0x11726,
+0x11730, 0x1173f,
+0x11800, 0x1182e,
+0x11838, 0x11838,
+0x1183b, 0x1183b,
+0x118a0, 0x118f2,
+0x118ff, 0x118ff,
+0x11a00, 0x11a00,
+0x11a0b, 0x11a32,
+0x11a39, 0x11a3a,
+0x11a3f, 0x11a46,
+0x11a50, 0x11a50,
+0x11a57, 0x11a58,
+0x11a5c, 0x11a83,
+0x11a86, 0x11a89,
+0x11a97, 0x11a97,
+0x11a9a, 0x11aa2,
+0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c2f,
+0x11c3e, 0x11c3e,
+0x11c40, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11ca9, 0x11ca9,
+0x11cb1, 0x11cb1,
+0x11cb4, 0x11cb4,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d30,
+0x11d46, 0x11d46,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d93, 0x11d94,
+0x11d96, 0x11d96,
+0x11d98, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef2,
+0x11ef5, 0x11ef8,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12470, 0x12474,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
+0x16ad0, 0x16aed,
+0x16af5, 0x16af5,
+0x16b00, 0x16b2f,
+0x16b37, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f93, 0x16f9f,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9c, 0x1bc9c,
+0x1bc9f, 0x1bc9f,
+0x1d000, 0x1d0f5,
+0x1d100, 0x1d126,
+0x1d129, 0x1d164,
+0x1d166, 0x1d166,
+0x1d16a, 0x1d16d,
+0x1d183, 0x1d184,
+0x1d18c, 0x1d1a9,
+0x1d1ae, 0x1d1e8,
+0x1d200, 0x1d241,
+0x1d245, 0x1d245,
+0x1d2e0, 0x1d2f3,
+0x1d300, 0x1d356,
+0x1d360, 0x1d378,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d9ff,
+0x1da37, 0x1da3a,
+0x1da6d, 0x1da74,
+0x1da76, 0x1da83,
+0x1da85, 0x1da8b,
+0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8cf,
+0x1e900, 0x1e943,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+0x1f000, 0x1f02b,
+0x1f030, 0x1f093,
+0x1f0a0, 0x1f0ae,
+0x1f0b1, 0x1f0bf,
+0x1f0c1, 0x1f0cf,
+0x1f0d1, 0x1f0f5,
+0x1f100, 0x1f10c,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
+0x1f1e6, 0x1f202,
+0x1f210, 0x1f23b,
+0x1f240, 0x1f248,
+0x1f250, 0x1f251,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
+0x1f6e0, 0x1f6ec,
+0x1f6f0, 0x1f6f9,
+0x1f700, 0x1f773,
+0x1f780, 0x1f7d8,
+0x1f800, 0x1f80b,
+0x1f810, 0x1f847,
+0x1f850, 0x1f859,
+0x1f860, 0x1f887,
+0x1f890, 0x1f8ad,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Grapheme_Base */
+
+/* PROPERTY: 'Grapheme_Extend': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Extend[] = { 331,
+0x0300, 0x036f,
+0x0483, 0x0489,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06df, 0x06e4,
+0x06e7, 0x06e8,
+0x06ea, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x074a,
+0x07a6, 0x07b0,
+0x07eb, 0x07f3,
+0x07fd, 0x07fd,
+0x0816, 0x0819,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082d,
+0x0859, 0x085b,
+0x08d3, 0x08e1,
+0x08e3, 0x0902,
+0x093a, 0x093a,
+0x093c, 0x093c,
+0x0941, 0x0948,
+0x094d, 0x094d,
+0x0951, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0981,
+0x09bc, 0x09bc,
+0x09be, 0x09be,
+0x09c1, 0x09c4,
+0x09cd, 0x09cd,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x09fe, 0x09fe,
+0x0a01, 0x0a02,
+0x0a3c, 0x0a3c,
+0x0a41, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a82,
+0x0abc, 0x0abc,
+0x0ac1, 0x0ac5,
+0x0ac7, 0x0ac8,
+0x0acd, 0x0acd,
+0x0ae2, 0x0ae3,
+0x0afa, 0x0aff,
+0x0b01, 0x0b01,
+0x0b3c, 0x0b3c,
+0x0b3e, 0x0b3f,
+0x0b41, 0x0b44,
+0x0b4d, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bbe,
+0x0bc0, 0x0bc0,
+0x0bcd, 0x0bcd,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c00,
+0x0c04, 0x0c04,
+0x0c3e, 0x0c40,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c81,
+0x0cbc, 0x0cbc,
+0x0cbf, 0x0cbf,
+0x0cc2, 0x0cc2,
+0x0cc6, 0x0cc6,
+0x0ccc, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d00, 0x0d01,
+0x0d3b, 0x0d3c,
+0x0d3e, 0x0d3e,
+0x0d41, 0x0d44,
+0x0d4d, 0x0d4d,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dcf,
+0x0dd2, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0ddf, 0x0ddf,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e47, 0x0e4e,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ec8, 0x0ecd,
+0x0f18, 0x0f19,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f71, 0x0f7e,
+0x0f80, 0x0f84,
+0x0f86, 0x0f87,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x102d, 0x1030,
+0x1032, 0x1037,
+0x1039, 0x103a,
+0x103d, 0x103e,
+0x1058, 0x1059,
+0x105e, 0x1060,
+0x1071, 0x1074,
+0x1082, 0x1082,
+0x1085, 0x1086,
+0x108d, 0x108d,
+0x109d, 0x109d,
+0x135d, 0x135f,
+0x1712, 0x1714,
+0x1732, 0x1734,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b4, 0x17b5,
+0x17b7, 0x17bd,
+0x17c6, 0x17c6,
+0x17c9, 0x17d3,
+0x17dd, 0x17dd,
+0x180b, 0x180d,
+0x1885, 0x1886,
+0x18a9, 0x18a9,
+0x1920, 0x1922,
+0x1927, 0x1928,
+0x1932, 0x1932,
+0x1939, 0x193b,
+0x1a17, 0x1a18,
+0x1a1b, 0x1a1b,
+0x1a56, 0x1a56,
+0x1a58, 0x1a5e,
+0x1a60, 0x1a60,
+0x1a62, 0x1a62,
+0x1a65, 0x1a6c,
+0x1a73, 0x1a7c,
+0x1a7f, 0x1a7f,
+0x1ab0, 0x1abe,
+0x1b00, 0x1b03,
+0x1b34, 0x1b34,
+0x1b36, 0x1b3a,
+0x1b3c, 0x1b3c,
+0x1b42, 0x1b42,
+0x1b6b, 0x1b73,
+0x1b80, 0x1b81,
+0x1ba2, 0x1ba5,
+0x1ba8, 0x1ba9,
+0x1bab, 0x1bad,
+0x1be6, 0x1be6,
+0x1be8, 0x1be9,
+0x1bed, 0x1bed,
+0x1bef, 0x1bf1,
+0x1c2c, 0x1c33,
+0x1c36, 0x1c37,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df9,
+0x1dfb, 0x1dff,
+0x200c, 0x200c,
+0x20d0, 0x20f0,
+0x2cef, 0x2cf1,
+0x2d7f, 0x2d7f,
+0x2de0, 0x2dff,
+0x302a, 0x302f,
+0x3099, 0x309a,
+0xa66f, 0xa672,
+0xa674, 0xa67d,
+0xa69e, 0xa69f,
+0xa6f0, 0xa6f1,
+0xa802, 0xa802,
+0xa806, 0xa806,
+0xa80b, 0xa80b,
+0xa825, 0xa826,
+0xa8c4, 0xa8c5,
+0xa8e0, 0xa8f1,
+0xa8ff, 0xa8ff,
+0xa926, 0xa92d,
+0xa947, 0xa951,
+0xa980, 0xa982,
+0xa9b3, 0xa9b3,
+0xa9b6, 0xa9b9,
+0xa9bc, 0xa9bc,
+0xa9e5, 0xa9e5,
+0xaa29, 0xaa2e,
+0xaa31, 0xaa32,
+0xaa35, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4c,
+0xaa7c, 0xaa7c,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabf,
+0xaac1, 0xaac1,
+0xaaec, 0xaaed,
+0xaaf6, 0xaaf6,
+0xabe5, 0xabe5,
+0xabe8, 0xabe8,
+0xabed, 0xabed,
+0xfb1e, 0xfb1e,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xff9e, 0xff9f,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10ae5, 0x10ae6,
+0x10d24, 0x10d27,
+0x10f46, 0x10f50,
+0x11001, 0x11001,
+0x11038, 0x11046,
+0x1107f, 0x11081,
+0x110b3, 0x110b6,
+0x110b9, 0x110ba,
+0x11100, 0x11102,
+0x11127, 0x1112b,
+0x1112d, 0x11134,
+0x11173, 0x11173,
+0x11180, 0x11181,
+0x111b6, 0x111be,
+0x111c9, 0x111cc,
+0x1122f, 0x11231,
+0x11234, 0x11234,
+0x11236, 0x11237,
+0x1123e, 0x1123e,
+0x112df, 0x112df,
+0x112e3, 0x112ea,
+0x11300, 0x11301,
+0x1133b, 0x1133c,
+0x1133e, 0x1133e,
+0x11340, 0x11340,
+0x11357, 0x11357,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11438, 0x1143f,
+0x11442, 0x11444,
+0x11446, 0x11446,
+0x1145e, 0x1145e,
+0x114b0, 0x114b0,
+0x114b3, 0x114b8,
+0x114ba, 0x114ba,
+0x114bd, 0x114bd,
+0x114bf, 0x114c0,
+0x114c2, 0x114c3,
+0x115af, 0x115af,
+0x115b2, 0x115b5,
+0x115bc, 0x115bd,
+0x115bf, 0x115c0,
+0x115dc, 0x115dd,
+0x11633, 0x1163a,
+0x1163d, 0x1163d,
+0x1163f, 0x11640,
+0x116ab, 0x116ab,
+0x116ad, 0x116ad,
+0x116b0, 0x116b5,
+0x116b7, 0x116b7,
+0x1171d, 0x1171f,
+0x11722, 0x11725,
+0x11727, 0x1172b,
+0x1182f, 0x11837,
+0x11839, 0x1183a,
+0x11a01, 0x11a0a,
+0x11a33, 0x11a38,
+0x11a3b, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a51, 0x11a56,
+0x11a59, 0x11a5b,
+0x11a8a, 0x11a96,
+0x11a98, 0x11a99,
+0x11c30, 0x11c36,
+0x11c38, 0x11c3d,
+0x11c3f, 0x11c3f,
+0x11c92, 0x11ca7,
+0x11caa, 0x11cb0,
+0x11cb2, 0x11cb3,
+0x11cb5, 0x11cb6,
+0x11d31, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d45,
+0x11d47, 0x11d47,
+0x11d90, 0x11d91,
+0x11d95, 0x11d95,
+0x11d97, 0x11d97,
+0x11ef3, 0x11ef4,
+0x16af0, 0x16af4,
+0x16b30, 0x16b36,
+0x16f8f, 0x16f92,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d165,
+0x1d167, 0x1d169,
+0x1d16e, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
+0x1e8d0, 0x1e8d6,
+0x1e944, 0x1e94a,
+0xe0020, 0xe007f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Grapheme_Extend */
+
+/* PROPERTY: 'Grapheme_Link': Derived Property */
+static const OnigCodePoint
+CR_Grapheme_Link[] = { 50,
+0x094d, 0x094d,
+0x09cd, 0x09cd,
+0x0a4d, 0x0a4d,
+0x0acd, 0x0acd,
+0x0b4d, 0x0b4d,
+0x0bcd, 0x0bcd,
+0x0c4d, 0x0c4d,
+0x0ccd, 0x0ccd,
+0x0d3b, 0x0d3c,
+0x0d4d, 0x0d4d,
+0x0dca, 0x0dca,
+0x0e3a, 0x0e3a,
+0x0f84, 0x0f84,
+0x1039, 0x103a,
+0x1714, 0x1714,
+0x1734, 0x1734,
+0x17d2, 0x17d2,
+0x1a60, 0x1a60,
+0x1b44, 0x1b44,
+0x1baa, 0x1bab,
+0x1bf2, 0x1bf3,
+0x2d7f, 0x2d7f,
+0xa806, 0xa806,
+0xa8c4, 0xa8c4,
+0xa953, 0xa953,
+0xa9c0, 0xa9c0,
+0xaaf6, 0xaaf6,
+0xabed, 0xabed,
+0x10a3f, 0x10a3f,
+0x11046, 0x11046,
+0x1107f, 0x1107f,
+0x110b9, 0x110b9,
+0x11133, 0x11134,
+0x111c0, 0x111c0,
+0x11235, 0x11235,
+0x112ea, 0x112ea,
+0x1134d, 0x1134d,
+0x11442, 0x11442,
+0x114c2, 0x114c2,
+0x115bf, 0x115bf,
+0x1163f, 0x1163f,
+0x116b6, 0x116b6,
+0x1172b, 0x1172b,
+0x11839, 0x11839,
+0x11a34, 0x11a34,
+0x11a47, 0x11a47,
+0x11a99, 0x11a99,
+0x11c3f, 0x11c3f,
+0x11d44, 0x11d45,
+0x11d97, 0x11d97,
+}; /* END of CR_Grapheme_Link */
+
+/* PROPERTY: 'Greek': Script */
+static const OnigCodePoint
+CR_Greek[] = { 36,
+0x0370, 0x0373,
+0x0375, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0384, 0x0384,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03e1,
+0x03f0, 0x03ff,
+0x1d26, 0x1d2a,
+0x1d5d, 0x1d61,
+0x1d66, 0x1d6a,
+0x1dbf, 0x1dbf,
+0x1f00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fc4,
+0x1fc6, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fdd, 0x1fef,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffe,
+0x2126, 0x2126,
+0xab65, 0xab65,
+0x10140, 0x1018e,
+0x101a0, 0x101a0,
+0x1d200, 0x1d245,
+}; /* END of CR_Greek */
+
+/* PROPERTY: 'Gujarati': Script */
+static const OnigCodePoint
+CR_Gujarati[] = { 14,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0af1,
+0x0af9, 0x0aff,
+}; /* END of CR_Gujarati */
+
+/* PROPERTY: 'Gunjala_Gondi': Script */
+static const OnigCodePoint
+CR_Gunjala_Gondi[] = { 6,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+}; /* END of CR_Gunjala_Gondi */
+
+/* PROPERTY: 'Gurmukhi': Script */
+static const OnigCodePoint
+CR_Gurmukhi[] = { 16,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a76,
+}; /* END of CR_Gurmukhi */
+
+/* PROPERTY: 'Han': Script */
+static const OnigCodePoint
+CR_Han[] = { 17,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+0x3005, 0x3005,
+0x3007, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303b,
+0x3400, 0x4db5,
+0x4e00, 0x9fef,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Han */
+
+/* PROPERTY: 'Hangul': Script */
+static const OnigCodePoint
+CR_Hangul[] = { 14,
+0x1100, 0x11ff,
+0x302e, 0x302f,
+0x3131, 0x318e,
+0x3200, 0x321e,
+0x3260, 0x327e,
+0xa960, 0xa97c,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xffa0, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+}; /* END of CR_Hangul */
+
+/* PROPERTY: 'Hanifi_Rohingya': Script */
+static const OnigCodePoint
+CR_Hanifi_Rohingya[] = { 2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+}; /* END of CR_Hanifi_Rohingya */
+
+/* PROPERTY: 'Hanunoo': Script */
+static const OnigCodePoint
+CR_Hanunoo[] = { 1,
+0x1720, 0x1734,
+}; /* END of CR_Hanunoo */
+
+/* PROPERTY: 'Hatran': Script */
+static const OnigCodePoint
+CR_Hatran[] = { 3,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x108fb, 0x108ff,
+}; /* END of CR_Hatran */
+
+/* PROPERTY: 'Hebrew': Script */
+static const OnigCodePoint
+CR_Hebrew[] = { 9,
+0x0591, 0x05c7,
+0x05d0, 0x05ea,
+0x05ef, 0x05f4,
+0xfb1d, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfb4f,
+}; /* END of CR_Hebrew */
+
+/* PROPERTY: 'Hex_Digit': Binary Property */
+static const OnigCodePoint
+CR_Hex_Digit[] = { 6,
+0x0030, 0x0039,
+0x0041, 0x0046,
+0x0061, 0x0066,
+0xff10, 0xff19,
+0xff21, 0xff26,
+0xff41, 0xff46,
+}; /* END of CR_Hex_Digit */
+
+/* PROPERTY: 'Hiragana': Script */
+static const OnigCodePoint
+CR_Hiragana[] = { 4,
+0x3041, 0x3096,
+0x309d, 0x309f,
+0x1b001, 0x1b11e,
+0x1f200, 0x1f200,
+}; /* END of CR_Hiragana */
+
+/* PROPERTY: 'Hyphen': Binary Property */
+static const OnigCodePoint
+CR_Hyphen[] = { 10,
+0x002d, 0x002d,
+0x00ad, 0x00ad,
+0x058a, 0x058a,
+0x1806, 0x1806,
+0x2010, 0x2011,
+0x2e17, 0x2e17,
+0x30fb, 0x30fb,
+0xfe63, 0xfe63,
+0xff0d, 0xff0d,
+0xff65, 0xff65,
+}; /* END of CR_Hyphen */
+
+/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
+static const OnigCodePoint
+CR_IDS_Binary_Operator[] = { 2,
+0x2ff0, 0x2ff1,
+0x2ff4, 0x2ffb,
+}; /* END of CR_IDS_Binary_Operator */
+
+/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
+static const OnigCodePoint
+CR_IDS_Trinary_Operator[] = { 1,
+0x2ff2, 0x2ff3,
+}; /* END of CR_IDS_Trinary_Operator */
+
+/* PROPERTY: 'ID_Continue': Derived Property */
+static const OnigCodePoint
+CR_ID_Continue[] = { 707,
+0x0030, 0x0039,
+0x0041, 0x005a,
+0x005f, 0x005f,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00b7, 0x00b7,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0300, 0x0374,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x0483, 0x0487,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0560, 0x0588,
+0x0591, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x05d0, 0x05ea,
+0x05ef, 0x05f2,
+0x0610, 0x061a,
+0x0620, 0x0669,
+0x066e, 0x06d3,
+0x06d5, 0x06dc,
+0x06df, 0x06e8,
+0x06ea, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x074a,
+0x074d, 0x07b1,
+0x07c0, 0x07f5,
+0x07fa, 0x07fa,
+0x07fd, 0x07fd,
+0x0800, 0x082d,
+0x0840, 0x085b,
+0x0860, 0x086a,
+0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d3, 0x08e1,
+0x08e3, 0x0963,
+0x0966, 0x096f,
+0x0971, 0x0983,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bc, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09ce,
+0x09d7, 0x09d7,
+0x09dc, 0x09dd,
+0x09df, 0x09e3,
+0x09e6, 0x09f1,
+0x09fc, 0x09fc,
+0x09fe, 0x09fe,
+0x0a01, 0x0a03,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a3c, 0x0a3c,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4d,
+0x0a51, 0x0a51,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a66, 0x0a75,
+0x0a81, 0x0a83,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abc, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae3,
+0x0ae6, 0x0aef,
+0x0af9, 0x0aff,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b6f,
+0x0b71, 0x0b71,
+0x0b82, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
+0x0bd0, 0x0bd0,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bef,
+0x0c00, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c80, 0x0c83,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+0x0d00, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4e,
+0x0d54, 0x0d57,
+0x0d5f, 0x0d63,
+0x0d66, 0x0d6f,
+0x0d7a, 0x0d7f,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df3,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e4e,
+0x0e50, 0x0e59,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f18, 0x0f19,
+0x0f20, 0x0f29,
+0x0f35, 0x0f35,
+0x0f37, 0x0f37,
+0x0f39, 0x0f39,
+0x0f3e, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f71, 0x0f84,
+0x0f86, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fc6, 0x0fc6,
+0x1000, 0x1049,
+0x1050, 0x109d,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x135d, 0x135f,
+0x1369, 0x1371,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1714,
+0x1720, 0x1734,
+0x1740, 0x1753,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1772, 0x1773,
+0x1780, 0x17d3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dd,
+0x17e0, 0x17e9,
+0x180b, 0x180d,
+0x1810, 0x1819,
+0x1820, 0x1878,
+0x1880, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1946, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x1a00, 0x1a1b,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa7, 0x1aa7,
+0x1ab0, 0x1abd,
+0x1b00, 0x1b4b,
+0x1b50, 0x1b59,
+0x1b6b, 0x1b73,
+0x1b80, 0x1bf3,
+0x1c00, 0x1c37,
+0x1c40, 0x1c49,
+0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x203f, 0x2040,
+0x2054, 0x2054,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20f0,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d7f, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x2de0, 0x2dff,
+0x3005, 0x3007,
+0x3021, 0x302f,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x3099, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312f,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fef,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa62b,
+0xa640, 0xa66f,
+0xa674, 0xa67d,
+0xa67f, 0xa6f1,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7b9,
+0xa7f7, 0xa827,
+0xa840, 0xa873,
+0xa880, 0xa8c5,
+0xa8d0, 0xa8d9,
+0xa8e0, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa92d,
+0xa930, 0xa953,
+0xa960, 0xa97c,
+0xa980, 0xa9c0,
+0xa9cf, 0xa9d9,
+0xa9e0, 0xa9fe,
+0xaa00, 0xaa36,
+0xaa40, 0xaa4d,
+0xaa50, 0xaa59,
+0xaa60, 0xaa76,
+0xaa7a, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaef,
+0xaaf2, 0xaaf6,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabea,
+0xabec, 0xabed,
+0xabf0, 0xabf9,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfb,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2f,
+0xfe33, 0xfe34,
+0xfe4d, 0xfe4f,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff10, 0xff19,
+0xff21, 0xff3a,
+0xff3f, 0xff3f,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x101fd, 0x101fd,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x102e0, 0x102e0,
+0x10300, 0x1031f,
+0x1032d, 0x1034a,
+0x10350, 0x1037a,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a35,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a3f,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae6,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f50,
+0x11000, 0x11046,
+0x11066, 0x1106f,
+0x1107f, 0x110ba,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+0x11100, 0x11134,
+0x11136, 0x1113f,
+0x11144, 0x11146,
+0x11150, 0x11173,
+0x11176, 0x11176,
+0x11180, 0x111c4,
+0x111c9, 0x111cc,
+0x111d0, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x11237,
+0x1123e, 0x1123e,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+0x11300, 0x11303,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133b, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134d,
+0x11350, 0x11350,
+0x11357, 0x11357,
+0x1135d, 0x11363,
+0x11366, 0x1136c,
+0x11370, 0x11374,
+0x11400, 0x1144a,
+0x11450, 0x11459,
+0x1145e, 0x1145e,
+0x11480, 0x114c5,
+0x114c7, 0x114c7,
+0x114d0, 0x114d9,
+0x11580, 0x115b5,
+0x115b8, 0x115c0,
+0x115d8, 0x115dd,
+0x11600, 0x11640,
+0x11644, 0x11644,
+0x11650, 0x11659,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+0x11700, 0x1171a,
+0x1171d, 0x1172b,
+0x11730, 0x11739,
+0x11800, 0x1183a,
+0x118a0, 0x118e9,
+0x118ff, 0x118ff,
+0x11a00, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11a99,
+0x11a9d, 0x11a9d,
+0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16ad0, 0x16aed,
+0x16af0, 0x16af4,
+0x16b00, 0x16b36,
+0x16b40, 0x16b43,
+0x16b50, 0x16b59,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1bc9d, 0x1bc9e,
+0x1d165, 0x1d169,
+0x1d16d, 0x1d172,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0x1d242, 0x1d244,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1da00, 0x1da36,
+0x1da3b, 0x1da6c,
+0x1da75, 0x1da75,
+0x1da84, 0x1da84,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
+0x1e800, 0x1e8c4,
+0x1e8d0, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
+0x2f800, 0x2fa1d,
+0xe0100, 0xe01ef,
+}; /* END of CR_ID_Continue */
+
+/* PROPERTY: 'ID_Start': Derived Property */
+static const OnigCodePoint
+CR_ID_Start[] = { 599,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00b5, 0x00b5,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02c1,
+0x02c6, 0x02d1,
+0x02e0, 0x02e4,
+0x02ec, 0x02ec,
+0x02ee, 0x02ee,
+0x0370, 0x0374,
+0x0376, 0x0377,
+0x037a, 0x037d,
+0x037f, 0x037f,
+0x0386, 0x0386,
+0x0388, 0x038a,
+0x038c, 0x038c,
+0x038e, 0x03a1,
+0x03a3, 0x03f5,
+0x03f7, 0x0481,
+0x048a, 0x052f,
+0x0531, 0x0556,
+0x0559, 0x0559,
+0x0560, 0x0588,
+0x05d0, 0x05ea,
+0x05ef, 0x05f2,
+0x0620, 0x064a,
+0x066e, 0x066f,
+0x0671, 0x06d3,
+0x06d5, 0x06d5,
+0x06e5, 0x06e6,
+0x06ee, 0x06ef,
+0x06fa, 0x06fc,
+0x06ff, 0x06ff,
+0x0710, 0x0710,
+0x0712, 0x072f,
+0x074d, 0x07a5,
+0x07b1, 0x07b1,
+0x07ca, 0x07ea,
+0x07f4, 0x07f5,
+0x07fa, 0x07fa,
+0x0800, 0x0815,
+0x081a, 0x081a,
+0x0824, 0x0824,
+0x0828, 0x0828,
+0x0840, 0x0858,
+0x0860, 0x086a,
+0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x0904, 0x0939,
+0x093d, 0x093d,
+0x0950, 0x0950,
+0x0958, 0x0961,
+0x0971, 0x0980,
+0x0985, 0x098c,
+0x098f, 0x0990,
+0x0993, 0x09a8,
+0x09aa, 0x09b0,
+0x09b2, 0x09b2,
+0x09b6, 0x09b9,
+0x09bd, 0x09bd,
+0x09ce, 0x09ce,
+0x09dc, 0x09dd,
+0x09df, 0x09e1,
+0x09f0, 0x09f1,
+0x09fc, 0x09fc,
+0x0a05, 0x0a0a,
+0x0a0f, 0x0a10,
+0x0a13, 0x0a28,
+0x0a2a, 0x0a30,
+0x0a32, 0x0a33,
+0x0a35, 0x0a36,
+0x0a38, 0x0a39,
+0x0a59, 0x0a5c,
+0x0a5e, 0x0a5e,
+0x0a72, 0x0a74,
+0x0a85, 0x0a8d,
+0x0a8f, 0x0a91,
+0x0a93, 0x0aa8,
+0x0aaa, 0x0ab0,
+0x0ab2, 0x0ab3,
+0x0ab5, 0x0ab9,
+0x0abd, 0x0abd,
+0x0ad0, 0x0ad0,
+0x0ae0, 0x0ae1,
+0x0af9, 0x0af9,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3d, 0x0b3d,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b61,
+0x0b71, 0x0b71,
+0x0b83, 0x0b83,
+0x0b85, 0x0b8a,
+0x0b8e, 0x0b90,
+0x0b92, 0x0b95,
+0x0b99, 0x0b9a,
+0x0b9c, 0x0b9c,
+0x0b9e, 0x0b9f,
+0x0ba3, 0x0ba4,
+0x0ba8, 0x0baa,
+0x0bae, 0x0bb9,
+0x0bd0, 0x0bd0,
+0x0c05, 0x0c0c,
+0x0c0e, 0x0c10,
+0x0c12, 0x0c28,
+0x0c2a, 0x0c39,
+0x0c3d, 0x0c3d,
+0x0c58, 0x0c5a,
+0x0c60, 0x0c61,
+0x0c80, 0x0c80,
+0x0c85, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbd, 0x0cbd,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce1,
+0x0cf1, 0x0cf2,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d3a,
+0x0d3d, 0x0d3d,
+0x0d4e, 0x0d4e,
+0x0d54, 0x0d56,
+0x0d5f, 0x0d61,
+0x0d7a, 0x0d7f,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0e01, 0x0e30,
+0x0e32, 0x0e33,
+0x0e40, 0x0e46,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb0,
+0x0eb2, 0x0eb3,
+0x0ebd, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0edc, 0x0edf,
+0x0f00, 0x0f00,
+0x0f40, 0x0f47,
+0x0f49, 0x0f6c,
+0x0f88, 0x0f8c,
+0x1000, 0x102a,
+0x103f, 0x103f,
+0x1050, 0x1055,
+0x105a, 0x105d,
+0x1061, 0x1061,
+0x1065, 0x1066,
+0x106e, 0x1070,
+0x1075, 0x1081,
+0x108e, 0x108e,
+0x10a0, 0x10c5,
+0x10c7, 0x10c7,
+0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fc, 0x1248,
+0x124a, 0x124d,
+0x1250, 0x1256,
+0x1258, 0x1258,
+0x125a, 0x125d,
+0x1260, 0x1288,
+0x128a, 0x128d,
+0x1290, 0x12b0,
+0x12b2, 0x12b5,
+0x12b8, 0x12be,
+0x12c0, 0x12c0,
+0x12c2, 0x12c5,
+0x12c8, 0x12d6,
+0x12d8, 0x1310,
+0x1312, 0x1315,
+0x1318, 0x135a,
+0x1380, 0x138f,
+0x13a0, 0x13f5,
+0x13f8, 0x13fd,
+0x1401, 0x166c,
+0x166f, 0x167f,
+0x1681, 0x169a,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+0x1700, 0x170c,
+0x170e, 0x1711,
+0x1720, 0x1731,
+0x1740, 0x1751,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1780, 0x17b3,
+0x17d7, 0x17d7,
+0x17dc, 0x17dc,
+0x1820, 0x1878,
+0x1880, 0x18a8,
+0x18aa, 0x18aa,
+0x18b0, 0x18f5,
+0x1900, 0x191e,
+0x1950, 0x196d,
+0x1970, 0x1974,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x1a00, 0x1a16,
+0x1a20, 0x1a54,
+0x1aa7, 0x1aa7,
+0x1b05, 0x1b33,
+0x1b45, 0x1b4b,
+0x1b83, 0x1ba0,
+0x1bae, 0x1baf,
+0x1bba, 0x1be5,
+0x1c00, 0x1c23,
+0x1c4d, 0x1c4f,
+0x1c5a, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
+0x1ce9, 0x1cec,
+0x1cee, 0x1cf1,
+0x1cf5, 0x1cf6,
+0x1d00, 0x1dbf,
+0x1e00, 0x1f15,
+0x1f18, 0x1f1d,
+0x1f20, 0x1f45,
+0x1f48, 0x1f4d,
+0x1f50, 0x1f57,
+0x1f59, 0x1f59,
+0x1f5b, 0x1f5b,
+0x1f5d, 0x1f5d,
+0x1f5f, 0x1f7d,
+0x1f80, 0x1fb4,
+0x1fb6, 0x1fbc,
+0x1fbe, 0x1fbe,
+0x1fc2, 0x1fc4,
+0x1fc6, 0x1fcc,
+0x1fd0, 0x1fd3,
+0x1fd6, 0x1fdb,
+0x1fe0, 0x1fec,
+0x1ff2, 0x1ff4,
+0x1ff6, 0x1ffc,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2126, 0x2126,
+0x2128, 0x2128,
+0x212a, 0x2139,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c00, 0x2c2e,
+0x2c30, 0x2c5e,
+0x2c60, 0x2ce4,
+0x2ceb, 0x2cee,
+0x2cf2, 0x2cf3,
+0x2d00, 0x2d25,
+0x2d27, 0x2d27,
+0x2d2d, 0x2d2d,
+0x2d30, 0x2d67,
+0x2d6f, 0x2d6f,
+0x2d80, 0x2d96,
+0x2da0, 0x2da6,
+0x2da8, 0x2dae,
+0x2db0, 0x2db6,
+0x2db8, 0x2dbe,
+0x2dc0, 0x2dc6,
+0x2dc8, 0x2dce,
+0x2dd0, 0x2dd6,
+0x2dd8, 0x2dde,
+0x3005, 0x3007,
+0x3021, 0x3029,
+0x3031, 0x3035,
+0x3038, 0x303c,
+0x3041, 0x3096,
+0x309b, 0x309f,
+0x30a1, 0x30fa,
+0x30fc, 0x30ff,
+0x3105, 0x312f,
+0x3131, 0x318e,
+0x31a0, 0x31ba,
+0x31f0, 0x31ff,
+0x3400, 0x4db5,
+0x4e00, 0x9fef,
+0xa000, 0xa48c,
+0xa4d0, 0xa4fd,
+0xa500, 0xa60c,
+0xa610, 0xa61f,
+0xa62a, 0xa62b,
+0xa640, 0xa66e,
+0xa67f, 0xa69d,
+0xa6a0, 0xa6ef,
+0xa717, 0xa71f,
+0xa722, 0xa788,
+0xa78b, 0xa7b9,
+0xa7f7, 0xa801,
+0xa803, 0xa805,
+0xa807, 0xa80a,
+0xa80c, 0xa822,
+0xa840, 0xa873,
+0xa882, 0xa8b3,
+0xa8f2, 0xa8f7,
+0xa8fb, 0xa8fb,
+0xa8fd, 0xa8fe,
+0xa90a, 0xa925,
+0xa930, 0xa946,
+0xa960, 0xa97c,
+0xa984, 0xa9b2,
+0xa9cf, 0xa9cf,
+0xa9e0, 0xa9e4,
+0xa9e6, 0xa9ef,
+0xa9fa, 0xa9fe,
+0xaa00, 0xaa28,
+0xaa40, 0xaa42,
+0xaa44, 0xaa4b,
+0xaa60, 0xaa76,
+0xaa7a, 0xaa7a,
+0xaa7e, 0xaaaf,
+0xaab1, 0xaab1,
+0xaab5, 0xaab6,
+0xaab9, 0xaabd,
+0xaac0, 0xaac0,
+0xaac2, 0xaac2,
+0xaadb, 0xaadd,
+0xaae0, 0xaaea,
+0xaaf2, 0xaaf4,
+0xab01, 0xab06,
+0xab09, 0xab0e,
+0xab11, 0xab16,
+0xab20, 0xab26,
+0xab28, 0xab2e,
+0xab30, 0xab5a,
+0xab5c, 0xab65,
+0xab70, 0xabe2,
+0xac00, 0xd7a3,
+0xd7b0, 0xd7c6,
+0xd7cb, 0xd7fb,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0xfb00, 0xfb06,
+0xfb13, 0xfb17,
+0xfb1d, 0xfb1d,
+0xfb1f, 0xfb28,
+0xfb2a, 0xfb36,
+0xfb38, 0xfb3c,
+0xfb3e, 0xfb3e,
+0xfb40, 0xfb41,
+0xfb43, 0xfb44,
+0xfb46, 0xfbb1,
+0xfbd3, 0xfd3d,
+0xfd50, 0xfd8f,
+0xfd92, 0xfdc7,
+0xfdf0, 0xfdfb,
+0xfe70, 0xfe74,
+0xfe76, 0xfefc,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+0xff66, 0xffbe,
+0xffc2, 0xffc7,
+0xffca, 0xffcf,
+0xffd2, 0xffd7,
+0xffda, 0xffdc,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+0x10140, 0x10174,
+0x10280, 0x1029c,
+0x102a0, 0x102d0,
+0x10300, 0x1031f,
+0x1032d, 0x1034a,
+0x10350, 0x10375,
+0x10380, 0x1039d,
+0x103a0, 0x103c3,
+0x103c8, 0x103cf,
+0x103d1, 0x103d5,
+0x10400, 0x1049d,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+0x10500, 0x10527,
+0x10530, 0x10563,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+0x10800, 0x10805,
+0x10808, 0x10808,
+0x1080a, 0x10835,
+0x10837, 0x10838,
+0x1083c, 0x1083c,
+0x1083f, 0x10855,
+0x10860, 0x10876,
+0x10880, 0x1089e,
+0x108e0, 0x108f2,
+0x108f4, 0x108f5,
+0x10900, 0x10915,
+0x10920, 0x10939,
+0x10980, 0x109b7,
+0x109be, 0x109bf,
+0x10a00, 0x10a00,
+0x10a10, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a35,
+0x10a60, 0x10a7c,
+0x10a80, 0x10a9c,
+0x10ac0, 0x10ac7,
+0x10ac9, 0x10ae4,
+0x10b00, 0x10b35,
+0x10b40, 0x10b55,
+0x10b60, 0x10b72,
+0x10b80, 0x10b91,
+0x10c00, 0x10c48,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10d00, 0x10d23,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
+0x11003, 0x11037,
+0x11083, 0x110af,
+0x110d0, 0x110e8,
+0x11103, 0x11126,
+0x11144, 0x11144,
+0x11150, 0x11172,
+0x11176, 0x11176,
+0x11183, 0x111b2,
+0x111c1, 0x111c4,
+0x111da, 0x111da,
+0x111dc, 0x111dc,
+0x11200, 0x11211,
+0x11213, 0x1122b,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a8,
+0x112b0, 0x112de,
+0x11305, 0x1130c,
+0x1130f, 0x11310,
+0x11313, 0x11328,
+0x1132a, 0x11330,
+0x11332, 0x11333,
+0x11335, 0x11339,
+0x1133d, 0x1133d,
+0x11350, 0x11350,
+0x1135d, 0x11361,
+0x11400, 0x11434,
+0x11447, 0x1144a,
+0x11480, 0x114af,
+0x114c4, 0x114c5,
+0x114c7, 0x114c7,
+0x11580, 0x115ae,
+0x115d8, 0x115db,
+0x11600, 0x1162f,
+0x11644, 0x11644,
+0x11680, 0x116aa,
+0x11700, 0x1171a,
+0x11800, 0x1182b,
+0x118a0, 0x118df,
+0x118ff, 0x118ff,
+0x11a00, 0x11a00,
+0x11a0b, 0x11a32,
+0x11a3a, 0x11a3a,
+0x11a50, 0x11a50,
+0x11a5c, 0x11a83,
+0x11a86, 0x11a89,
+0x11a9d, 0x11a9d,
+0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c2e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d30,
+0x11d46, 0x11d46,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d89,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef2,
+0x12000, 0x12399,
+0x12400, 0x1246e,
+0x12480, 0x12543,
+0x13000, 0x1342e,
+0x14400, 0x14646,
+0x16800, 0x16a38,
+0x16a40, 0x16a5e,
+0x16ad0, 0x16aed,
+0x16b00, 0x16b2f,
+0x16b40, 0x16b43,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
+0x16f00, 0x16f44,
+0x16f50, 0x16f50,
+0x16f93, 0x16f9f,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
+0x1bc00, 0x1bc6a,
+0x1bc70, 0x1bc7c,
+0x1bc80, 0x1bc88,
+0x1bc90, 0x1bc99,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
+0x2f800, 0x2fa1d,
+}; /* END of CR_ID_Start */
+
+/* PROPERTY: 'Ideographic': Binary Property */
+static const OnigCodePoint
+CR_Ideographic[] = { 16,
+0x3006, 0x3007,
+0x3021, 0x3029,
+0x3038, 0x303a,
+0x3400, 0x4db5,
+0x4e00, 0x9fef,
+0xf900, 0xfa6d,
+0xfa70, 0xfad9,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b170, 0x1b2fb,
+0x20000, 0x2a6d6,
+0x2a700, 0x2b734,
+0x2b740, 0x2b81d,
+0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
+0x2f800, 0x2fa1d,
+}; /* END of CR_Ideographic */
+
+/* PROPERTY: 'Imperial_Aramaic': Script */
+static const OnigCodePoint
+CR_Imperial_Aramaic[] = { 2,
+0x10840, 0x10855,
+0x10857, 0x1085f,
+}; /* END of CR_Imperial_Aramaic */
+
+/* PROPERTY: 'Inherited': Script */
+static const OnigCodePoint
+CR_Inherited[] = { 28,
+0x0300, 0x036f,
+0x0485, 0x0486,
+0x064b, 0x0655,
+0x0670, 0x0670,
+0x0951, 0x0952,
+0x1ab0, 0x1abe,
+0x1cd0, 0x1cd2,
+0x1cd4, 0x1ce0,
+0x1ce2, 0x1ce8,
+0x1ced, 0x1ced,
+0x1cf4, 0x1cf4,
+0x1cf8, 0x1cf9,
+0x1dc0, 0x1df9,
+0x1dfb, 0x1dff,
+0x200c, 0x200d,
+0x20d0, 0x20f0,
+0x302a, 0x302d,
+0x3099, 0x309a,
+0xfe00, 0xfe0f,
+0xfe20, 0xfe2d,
+0x101fd, 0x101fd,
+0x102e0, 0x102e0,
+0x1133b, 0x1133b,
+0x1d167, 0x1d169,
+0x1d17b, 0x1d182,
+0x1d185, 0x1d18b,
+0x1d1aa, 0x1d1ad,
+0xe0100, 0xe01ef,
+}; /* END of CR_Inherited */
+
+/* PROPERTY: 'Inscriptional_Pahlavi': Script */
+static const OnigCodePoint
+CR_Inscriptional_Pahlavi[] = { 2,
+0x10b60, 0x10b72,
+0x10b78, 0x10b7f,
+}; /* END of CR_Inscriptional_Pahlavi */
+
+/* PROPERTY: 'Inscriptional_Parthian': Script */
+static const OnigCodePoint
+CR_Inscriptional_Parthian[] = { 2,
+0x10b40, 0x10b55,
+0x10b58, 0x10b5f,
+}; /* END of CR_Inscriptional_Parthian */
+
+/* PROPERTY: 'Javanese': Script */
+static const OnigCodePoint
+CR_Javanese[] = { 3,
+0xa980, 0xa9cd,
+0xa9d0, 0xa9d9,
+0xa9de, 0xa9df,
+}; /* END of CR_Javanese */
+
+/* PROPERTY: 'Join_Control': Binary Property */
+static const OnigCodePoint
+CR_Join_Control[] = { 1,
+0x200c, 0x200d,
+}; /* END of CR_Join_Control */
+
+/* PROPERTY: 'Kaithi': Script */
+static const OnigCodePoint
+CR_Kaithi[] = { 2,
+0x11080, 0x110c1,
+0x110cd, 0x110cd,
+}; /* END of CR_Kaithi */
+
+/* PROPERTY: 'Kannada': Script */
+static const OnigCodePoint
+CR_Kannada[] = { 13,
+0x0c80, 0x0c8c,
+0x0c8e, 0x0c90,
+0x0c92, 0x0ca8,
+0x0caa, 0x0cb3,
+0x0cb5, 0x0cb9,
+0x0cbc, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccd,
+0x0cd5, 0x0cd6,
+0x0cde, 0x0cde,
+0x0ce0, 0x0ce3,
+0x0ce6, 0x0cef,
+0x0cf1, 0x0cf2,
+}; /* END of CR_Kannada */
+
+/* PROPERTY: 'Katakana': Script */
+static const OnigCodePoint
+CR_Katakana[] = { 8,
+0x30a1, 0x30fa,
+0x30fd, 0x30ff,
+0x31f0, 0x31ff,
+0x32d0, 0x32fe,
+0x3300, 0x3357,
+0xff66, 0xff6f,
+0xff71, 0xff9d,
+0x1b000, 0x1b000,
+}; /* END of CR_Katakana */
+
+/* PROPERTY: 'Kayah_Li': Script */
+static const OnigCodePoint
+CR_Kayah_Li[] = { 2,
+0xa900, 0xa92d,
+0xa92f, 0xa92f,
+}; /* END of CR_Kayah_Li */
+
+/* PROPERTY: 'Kharoshthi': Script */
+static const OnigCodePoint
+CR_Kharoshthi[] = { 8,
+0x10a00, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a13,
+0x10a15, 0x10a17,
+0x10a19, 0x10a35,
+0x10a38, 0x10a3a,
+0x10a3f, 0x10a48,
+0x10a50, 0x10a58,
+}; /* END of CR_Kharoshthi */
+
+/* PROPERTY: 'Khmer': Script */
+static const OnigCodePoint
+CR_Khmer[] = { 4,
+0x1780, 0x17dd,
+0x17e0, 0x17e9,
+0x17f0, 0x17f9,
+0x19e0, 0x19ff,
+}; /* END of CR_Khmer */
+
+/* PROPERTY: 'Khojki': Script */
+static const OnigCodePoint
+CR_Khojki[] = { 2,
+0x11200, 0x11211,
+0x11213, 0x1123e,
+}; /* END of CR_Khojki */
+
+/* PROPERTY: 'Khudawadi': Script */
+static const OnigCodePoint
+CR_Khudawadi[] = { 2,
+0x112b0, 0x112ea,
+0x112f0, 0x112f9,
+}; /* END of CR_Khudawadi */
+
/* PROPERTY: 'L': Major Category */
static const OnigCodePoint
-CR_L[] = { 554,
+CR_L[] = { 599,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -6696,9 +14390,9 @@ CR_L[] = { 554,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0620, 0x064a,
0x066e, 0x066f,
0x0671, 0x06d3,
@@ -6719,7 +14413,9 @@ CR_L[] = { 554,
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -6736,6 +14432,7 @@ CR_L[] = { 554,
0x09dc, 0x09dd,
0x09df, 0x09e1,
0x09f0, 0x09f1,
+0x09fc, 0x09fc,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
0x0a13, 0x0a28,
@@ -6784,6 +14481,7 @@ CR_L[] = { 554,
0x0c3d, 0x0c3d,
0x0c58, 0x0c5a,
0x0c60, 0x0c61,
+0x0c80, 0x0c80,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -6798,6 +14496,7 @@ CR_L[] = { 554,
0x0d12, 0x0d3a,
0x0d3d, 0x0d3d,
0x0d4e, 0x0d4e,
+0x0d54, 0x0d56,
0x0d5f, 0x0d61,
0x0d7a, 0x0d7f,
0x0d85, 0x0d96,
@@ -6875,8 +14574,9 @@ CR_L[] = { 554,
0x1780, 0x17b3,
0x17d7, 0x17d7,
0x17dc, 0x17dc,
-0x1820, 0x1877,
-0x1880, 0x18a8,
+0x1820, 0x1878,
+0x1880, 0x1884,
+0x1887, 0x18a8,
0x18aa, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -6895,6 +14595,9 @@ CR_L[] = { 554,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
0x1cf5, 0x1cf6,
@@ -6962,12 +14665,12 @@ CR_L[] = { 554,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -6978,8 +14681,7 @@ CR_L[] = { 554,
0xa6a0, 0xa6e5,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -6988,7 +14690,7 @@ CR_L[] = { 554,
0xa882, 0xa8b3,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa90a, 0xa925,
0xa930, 0xa946,
0xa960, 0xa97c,
@@ -7057,13 +14759,15 @@ CR_L[] = { 554,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x10340,
+0x1032d, 0x10340,
0x10342, 0x10349,
0x10350, 0x10375,
0x10380, 0x1039d,
0x103a0, 0x103c3,
0x103c8, 0x103cf,
0x10400, 0x1049d,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -7086,7 +14790,7 @@ CR_L[] = { 554,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -7098,10 +14802,15 @@ CR_L[] = { 554,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d23,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
0x11103, 0x11126,
+0x11144, 0x11144,
0x11150, 0x11172,
0x11176, 0x11176,
0x11183, 0x111b2,
@@ -7125,6 +14834,8 @@ CR_L[] = { 554,
0x1133d, 0x1133d,
0x11350, 0x11350,
0x1135d, 0x11361,
+0x11400, 0x11434,
+0x11447, 0x1144a,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -7133,10 +14844,31 @@ CR_L[] = { 554,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
-0x11700, 0x11719,
+0x11700, 0x1171a,
+0x11800, 0x1182b,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x11a00, 0x11a00,
+0x11a0b, 0x11a32,
+0x11a3a, 0x11a3a,
+0x11a50, 0x11a50,
+0x11a5c, 0x11a83,
+0x11a86, 0x11a89,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c2e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d30,
+0x11d46, 0x11d46,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d89,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef2,
0x12000, 0x12399,
0x12480, 0x12543,
0x13000, 0x1342e,
@@ -7148,10 +14880,15 @@ CR_L[] = { 554,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f50,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -7187,6 +14924,7 @@ CR_L[] = { 554,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -7224,12 +14962,13 @@ CR_L[] = { 554,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_L */
/* PROPERTY: 'LC': General Category */
static const OnigCodePoint
-CR_LC[] = { 122,
+CR_LC[] = { 130,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -7251,12 +14990,17 @@ CR_LC[] = { 122,
0x03f7, 0x0481,
0x048a, 0x052f,
0x0531, 0x0556,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x10a0, 0x10c5,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
0x13a0, 0x13f5,
0x13f8, 0x13fd,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1d00, 0x1d2b,
0x1d6b, 0x1d77,
0x1d79, 0x1d9a,
@@ -7308,8 +15052,7 @@ CR_LC[] = { 122,
0xa722, 0xa76f,
0xa771, 0xa787,
0xa78b, 0xa78e,
-0xa790, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa790, 0xa7b9,
0xa7fa, 0xa7fa,
0xab30, 0xab5a,
0xab60, 0xab65,
@@ -7319,9 +15062,12 @@ CR_LC[] = { 122,
0xff21, 0xff3a,
0xff41, 0xff5a,
0x10400, 0x1044f,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
0x118a0, 0x118df,
+0x16e40, 0x16e7f,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -7352,11 +15098,114 @@ CR_LC[] = { 122,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e900, 0x1e943,
}; /* END of CR_LC */
+/* PROPERTY: 'Lao': Script */
+static const OnigCodePoint
+CR_Lao[] = { 18,
+0x0e81, 0x0e82,
+0x0e84, 0x0e84,
+0x0e87, 0x0e88,
+0x0e8a, 0x0e8a,
+0x0e8d, 0x0e8d,
+0x0e94, 0x0e97,
+0x0e99, 0x0e9f,
+0x0ea1, 0x0ea3,
+0x0ea5, 0x0ea5,
+0x0ea7, 0x0ea7,
+0x0eaa, 0x0eab,
+0x0ead, 0x0eb9,
+0x0ebb, 0x0ebd,
+0x0ec0, 0x0ec4,
+0x0ec6, 0x0ec6,
+0x0ec8, 0x0ecd,
+0x0ed0, 0x0ed9,
+0x0edc, 0x0edf,
+}; /* END of CR_Lao */
+
+/* PROPERTY: 'Latin': Script */
+static const OnigCodePoint
+CR_Latin[] = { 30,
+0x0041, 0x005a,
+0x0061, 0x007a,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x00c0, 0x00d6,
+0x00d8, 0x00f6,
+0x00f8, 0x02b8,
+0x02e0, 0x02e4,
+0x1d00, 0x1d25,
+0x1d2c, 0x1d5c,
+0x1d62, 0x1d65,
+0x1d6b, 0x1d77,
+0x1d79, 0x1dbe,
+0x1e00, 0x1eff,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x212a, 0x212b,
+0x2132, 0x2132,
+0x214e, 0x214e,
+0x2160, 0x2188,
+0x2c60, 0x2c7f,
+0xa722, 0xa787,
+0xa78b, 0xa7b9,
+0xa7f7, 0xa7ff,
+0xab30, 0xab5a,
+0xab5c, 0xab64,
+0xfb00, 0xfb06,
+0xff21, 0xff3a,
+0xff41, 0xff5a,
+}; /* END of CR_Latin */
+
+/* PROPERTY: 'Lepcha': Script */
+static const OnigCodePoint
+CR_Lepcha[] = { 3,
+0x1c00, 0x1c37,
+0x1c3b, 0x1c49,
+0x1c4d, 0x1c4f,
+}; /* END of CR_Lepcha */
+
+/* PROPERTY: 'Limbu': Script */
+static const OnigCodePoint
+CR_Limbu[] = { 5,
+0x1900, 0x191e,
+0x1920, 0x192b,
+0x1930, 0x193b,
+0x1940, 0x1940,
+0x1944, 0x194f,
+}; /* END of CR_Limbu */
+
+/* PROPERTY: 'Linear_A': Script */
+static const OnigCodePoint
+CR_Linear_A[] = { 3,
+0x10600, 0x10736,
+0x10740, 0x10755,
+0x10760, 0x10767,
+}; /* END of CR_Linear_A */
+
+/* PROPERTY: 'Linear_B': Script */
+static const OnigCodePoint
+CR_Linear_B[] = { 7,
+0x10000, 0x1000b,
+0x1000d, 0x10026,
+0x10028, 0x1003a,
+0x1003c, 0x1003d,
+0x1003f, 0x1004d,
+0x10050, 0x1005d,
+0x10080, 0x100fa,
+}; /* END of CR_Linear_B */
+
+/* PROPERTY: 'Lisu': Script */
+static const OnigCodePoint
+CR_Lisu[] = { 1,
+0xa4d0, 0xa4ff,
+}; /* END of CR_Lisu */
+
/* PROPERTY: 'Ll': General Category */
static const OnigCodePoint
-CR_Ll[] = { 630,
+CR_Ll[] = { 638,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -7626,8 +15475,11 @@ CR_Ll[] = { 630,
0x052b, 0x052b,
0x052d, 0x052d,
0x052f, 0x052f,
-0x0561, 0x0587,
+0x0560, 0x0588,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
0x13f8, 0x13fd,
+0x1c80, 0x1c88,
0x1d00, 0x1d2b,
0x1d6b, 0x1d77,
0x1d79, 0x1d9a,
@@ -7947,8 +15799,10 @@ CR_Ll[] = { 630,
0xa7a5, 0xa7a5,
0xa7a7, 0xa7a7,
0xa7a9, 0xa7a9,
+0xa7af, 0xa7af,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
+0xa7b9, 0xa7b9,
0xa7fa, 0xa7fa,
0xab30, 0xab5a,
0xab60, 0xab65,
@@ -7957,8 +15811,10 @@ CR_Ll[] = { 630,
0xfb13, 0xfb17,
0xff41, 0xff5a,
0x10428, 0x1044f,
+0x104d8, 0x104fb,
0x10cc0, 0x10cf2,
0x118c0, 0x118df,
+0x16e60, 0x16e7f,
0x1d41a, 0x1d433,
0x1d44e, 0x1d454,
0x1d456, 0x1d467,
@@ -7987,11 +15843,12 @@ CR_Ll[] = { 630,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7c9,
0x1d7cb, 0x1d7cb,
+0x1e922, 0x1e943,
}; /* END of CR_Ll */
/* PROPERTY: 'Lm': General Category */
static const OnigCodePoint
-CR_Lm[] = { 56,
+CR_Lm[] = { 57,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -8048,18 +15905,19 @@ CR_Lm[] = { 56,
0xff9e, 0xff9f,
0x16b40, 0x16b43,
0x16f93, 0x16f9f,
+0x16fe0, 0x16fe1,
}; /* END of CR_Lm */
/* PROPERTY: 'Lo': General Category */
static const OnigCodePoint
-CR_Lo[] = { 433,
+CR_Lo[] = { 470,
0x00aa, 0x00aa,
0x00ba, 0x00ba,
0x01bb, 0x01bb,
0x01c0, 0x01c3,
0x0294, 0x0294,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0620, 0x063f,
0x0641, 0x064a,
0x066e, 0x066f,
@@ -8075,7 +15933,9 @@ CR_Lo[] = { 433,
0x07ca, 0x07ea,
0x0800, 0x0815,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -8092,6 +15952,7 @@ CR_Lo[] = { 433,
0x09dc, 0x09dd,
0x09df, 0x09e1,
0x09f0, 0x09f1,
+0x09fc, 0x09fc,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
0x0a13, 0x0a28,
@@ -8140,6 +16001,7 @@ CR_Lo[] = { 433,
0x0c3d, 0x0c3d,
0x0c58, 0x0c5a,
0x0c60, 0x0c61,
+0x0c80, 0x0c80,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -8154,6 +16016,7 @@ CR_Lo[] = { 433,
0x0d12, 0x0d3a,
0x0d3d, 0x0d3d,
0x0d4e, 0x0d4e,
+0x0d54, 0x0d56,
0x0d5f, 0x0d61,
0x0d7a, 0x0d7f,
0x0d85, 0x0d96,
@@ -8193,8 +16056,7 @@ CR_Lo[] = { 433,
0x106e, 0x1070,
0x1075, 0x1081,
0x108e, 0x108e,
-0x10d0, 0x10fa,
-0x10fd, 0x1248,
+0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -8225,8 +16087,9 @@ CR_Lo[] = { 433,
0x1780, 0x17b3,
0x17dc, 0x17dc,
0x1820, 0x1842,
-0x1844, 0x1877,
-0x1880, 0x18a8,
+0x1844, 0x1878,
+0x1880, 0x1884,
+0x1887, 0x18a8,
0x18aa, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -8264,12 +16127,12 @@ CR_Lo[] = { 433,
0x309f, 0x309f,
0x30a1, 0x30fa,
0x30ff, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa014,
0xa016, 0xa48c,
0xa4d0, 0xa4f7,
@@ -8288,7 +16151,7 @@ CR_Lo[] = { 433,
0xa882, 0xa8b3,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa90a, 0xa925,
0xa930, 0xa946,
0xa960, 0xa97c,
@@ -8353,7 +16216,7 @@ CR_Lo[] = { 433,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x10340,
+0x1032d, 0x10340,
0x10342, 0x10349,
0x10350, 0x10375,
0x10380, 0x1039d,
@@ -8382,7 +16245,7 @@ CR_Lo[] = { 433,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -8392,10 +16255,15 @@ CR_Lo[] = { 433,
0x10b60, 0x10b72,
0x10b80, 0x10b91,
0x10c00, 0x10c48,
+0x10d00, 0x10d23,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
0x11103, 0x11126,
+0x11144, 0x11144,
0x11150, 0x11172,
0x11176, 0x11176,
0x11183, 0x111b2,
@@ -8419,6 +16287,8 @@ CR_Lo[] = { 433,
0x1133d, 0x1133d,
0x11350, 0x11350,
0x1135d, 0x11361,
+0x11400, 0x11434,
+0x11447, 0x1144a,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -8427,9 +16297,30 @@ CR_Lo[] = { 433,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
-0x11700, 0x11719,
+0x11700, 0x1171a,
+0x11800, 0x1182b,
0x118ff, 0x118ff,
+0x11a00, 0x11a00,
+0x11a0b, 0x11a32,
+0x11a3a, 0x11a3a,
+0x11a50, 0x11a50,
+0x11a5c, 0x11a83,
+0x11a86, 0x11a89,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c2e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d30,
+0x11d46, 0x11d46,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d89,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef2,
0x12000, 0x12399,
0x12480, 0x12543,
0x13000, 0x1342e,
@@ -8442,7 +16333,10 @@ CR_Lo[] = { 433,
0x16b7d, 0x16b8f,
0x16f00, 0x16f44,
0x16f50, 0x16f50,
-0x1b000, 0x1b001,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -8485,9 +16379,25 @@ CR_Lo[] = { 433,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_Lo */
+/* PROPERTY: 'Logical_Order_Exception': Binary Property */
+static const OnigCodePoint
+CR_Logical_Order_Exception[] = { 7,
+0x0e40, 0x0e44,
+0x0ec0, 0x0ec4,
+0x19b5, 0x19b7,
+0x19ba, 0x19ba,
+0xaab5, 0xaab6,
+0xaab9, 0xaab9,
+0xaabb, 0xaabc,
+}; /* END of CR_Logical_Order_Exception */
+
+/* PROPERTY: 'Lowercase': Derived Property */
+#define CR_Lowercase CR_Lower
+
/* PROPERTY: 'Lt': General Category */
static const OnigCodePoint
CR_Lt[] = { 10,
@@ -8505,7 +16415,7 @@ CR_Lt[] = { 10,
/* PROPERTY: 'Lu': General Category */
static const OnigCodePoint
-CR_Lu[] = { 625,
+CR_Lu[] = { 631,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -8782,6 +16692,8 @@ CR_Lu[] = { 625,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
0x13a0, 0x13f5,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -9093,13 +17005,16 @@ CR_Lu[] = { 625,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
+0xa7aa, 0xa7ae,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
+0xa7b8, 0xa7b8,
0xff21, 0xff3a,
0x10400, 0x10427,
+0x104b0, 0x104d3,
0x10c80, 0x10cb2,
0x118a0, 0x118bf,
+0x16e40, 0x16e5f,
0x1d400, 0x1d419,
0x1d434, 0x1d44d,
0x1d468, 0x1d481,
@@ -9131,11 +17046,25 @@ CR_Lu[] = { 625,
0x1d756, 0x1d76e,
0x1d790, 0x1d7a8,
0x1d7ca, 0x1d7ca,
+0x1e900, 0x1e921,
}; /* END of CR_Lu */
+/* PROPERTY: 'Lycian': Script */
+static const OnigCodePoint
+CR_Lycian[] = { 1,
+0x10280, 0x1029c,
+}; /* END of CR_Lycian */
+
+/* PROPERTY: 'Lydian': Script */
+static const OnigCodePoint
+CR_Lydian[] = { 2,
+0x10920, 0x10939,
+0x1093f, 0x1093f,
+}; /* END of CR_Lydian */
+
/* PROPERTY: 'M': Major Category */
static const OnigCodePoint
-CR_M[] = { 236,
+CR_M[] = { 275,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -9154,11 +17083,13 @@ CR_M[] = { 236,
0x0730, 0x074a,
0x07a6, 0x07b0,
0x07eb, 0x07f3,
+0x07fd, 0x07fd,
0x0816, 0x0819,
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
+0x08d3, 0x08e1,
0x08e3, 0x0903,
0x093a, 0x093c,
0x093e, 0x094f,
@@ -9171,6 +17102,7 @@ CR_M[] = { 236,
0x09cb, 0x09cd,
0x09d7, 0x09d7,
0x09e2, 0x09e3,
+0x09fe, 0x09fe,
0x0a01, 0x0a03,
0x0a3c, 0x0a3c,
0x0a3e, 0x0a42,
@@ -9185,6 +17117,7 @@ CR_M[] = { 236,
0x0ac7, 0x0ac9,
0x0acb, 0x0acd,
0x0ae2, 0x0ae3,
+0x0afa, 0x0aff,
0x0b01, 0x0b03,
0x0b3c, 0x0b3c,
0x0b3e, 0x0b44,
@@ -9197,7 +17130,7 @@ CR_M[] = { 236,
0x0bc6, 0x0bc8,
0x0bca, 0x0bcd,
0x0bd7, 0x0bd7,
-0x0c00, 0x0c03,
+0x0c00, 0x0c04,
0x0c3e, 0x0c44,
0x0c46, 0x0c48,
0x0c4a, 0x0c4d,
@@ -9210,7 +17143,8 @@ CR_M[] = { 236,
0x0cca, 0x0ccd,
0x0cd5, 0x0cd6,
0x0ce2, 0x0ce3,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
+0x0d3b, 0x0d3c,
0x0d3e, 0x0d44,
0x0d46, 0x0d48,
0x0d4a, 0x0d4d,
@@ -9256,6 +17190,7 @@ CR_M[] = { 236,
0x17b4, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
+0x1885, 0x1886,
0x18a9, 0x18a9,
0x1920, 0x192b,
0x1930, 0x193b,
@@ -9275,9 +17210,9 @@ CR_M[] = { 236,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
0x1cf2, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
+0x1cf7, 0x1cf9,
+0x1dc0, 0x1df9,
+0x1dfb, 0x1dff,
0x20d0, 0x20f0,
0x2cef, 0x2cf1,
0x2d7f, 0x2d7f,
@@ -9293,8 +17228,9 @@ CR_M[] = { 236,
0xa80b, 0xa80b,
0xa823, 0xa827,
0xa880, 0xa881,
-0xa8b4, 0xa8c4,
+0xa8b4, 0xa8c5,
0xa8e0, 0xa8f1,
+0xa8ff, 0xa8ff,
0xa926, 0xa92d,
0xa947, 0xa953,
0xa980, 0xa983,
@@ -9325,20 +17261,24 @@ CR_M[] = { 236,
0x10a38, 0x10a3a,
0x10a3f, 0x10a3f,
0x10ae5, 0x10ae6,
+0x10d24, 0x10d27,
+0x10f46, 0x10f50,
0x11000, 0x11002,
0x11038, 0x11046,
0x1107f, 0x11082,
0x110b0, 0x110ba,
0x11100, 0x11102,
0x11127, 0x11134,
+0x11145, 0x11146,
0x11173, 0x11173,
0x11180, 0x11182,
0x111b3, 0x111c0,
-0x111ca, 0x111cc,
+0x111c9, 0x111cc,
0x1122c, 0x11237,
+0x1123e, 0x1123e,
0x112df, 0x112ea,
0x11300, 0x11303,
-0x1133c, 0x1133c,
+0x1133b, 0x1133c,
0x1133e, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
@@ -9346,6 +17286,8 @@ CR_M[] = { 236,
0x11362, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11435, 0x11446,
+0x1145e, 0x1145e,
0x114b0, 0x114c3,
0x115af, 0x115b5,
0x115b8, 0x115c0,
@@ -9353,6 +17295,26 @@ CR_M[] = { 236,
0x11630, 0x11640,
0x116ab, 0x116b7,
0x1171d, 0x1172b,
+0x1182c, 0x1183a,
+0x11a01, 0x11a0a,
+0x11a33, 0x11a39,
+0x11a3b, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a51, 0x11a5b,
+0x11a8a, 0x11a99,
+0x11c2f, 0x11c36,
+0x11c38, 0x11c3f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d31, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d45,
+0x11d47, 0x11d47,
+0x11d8a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d97,
+0x11ef3, 0x11ef6,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
0x16f51, 0x16f7e,
@@ -9370,13 +17332,221 @@ CR_M[] = { 236,
0x1da84, 0x1da84,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e8d0, 0x1e8d6,
+0x1e944, 0x1e94a,
0xe0100, 0xe01ef,
}; /* END of CR_M */
+/* PROPERTY: 'Mahajani': Script */
+static const OnigCodePoint
+CR_Mahajani[] = { 1,
+0x11150, 0x11176,
+}; /* END of CR_Mahajani */
+
+/* PROPERTY: 'Makasar': Script */
+static const OnigCodePoint
+CR_Makasar[] = { 1,
+0x11ee0, 0x11ef8,
+}; /* END of CR_Makasar */
+
+/* PROPERTY: 'Malayalam': Script */
+static const OnigCodePoint
+CR_Malayalam[] = { 8,
+0x0d00, 0x0d03,
+0x0d05, 0x0d0c,
+0x0d0e, 0x0d10,
+0x0d12, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
+}; /* END of CR_Malayalam */
+
+/* PROPERTY: 'Mandaic': Script */
+static const OnigCodePoint
+CR_Mandaic[] = { 2,
+0x0840, 0x085b,
+0x085e, 0x085e,
+}; /* END of CR_Mandaic */
+
+/* PROPERTY: 'Manichaean': Script */
+static const OnigCodePoint
+CR_Manichaean[] = { 2,
+0x10ac0, 0x10ae6,
+0x10aeb, 0x10af6,
+}; /* END of CR_Manichaean */
+
+/* PROPERTY: 'Marchen': Script */
+static const OnigCodePoint
+CR_Marchen[] = { 3,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+}; /* END of CR_Marchen */
+
+/* PROPERTY: 'Masaram_Gondi': Script */
+static const OnigCodePoint
+CR_Masaram_Gondi[] = { 7,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+}; /* END of CR_Masaram_Gondi */
+
+/* PROPERTY: 'Math': Derived Property */
+static const OnigCodePoint
+CR_Math[] = { 138,
+0x002b, 0x002b,
+0x003c, 0x003e,
+0x005e, 0x005e,
+0x007c, 0x007c,
+0x007e, 0x007e,
+0x00ac, 0x00ac,
+0x00b1, 0x00b1,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x03d0, 0x03d2,
+0x03d5, 0x03d5,
+0x03f0, 0x03f1,
+0x03f4, 0x03f6,
+0x0606, 0x0608,
+0x2016, 0x2016,
+0x2032, 0x2034,
+0x2040, 0x2040,
+0x2044, 0x2044,
+0x2052, 0x2052,
+0x2061, 0x2064,
+0x207a, 0x207e,
+0x208a, 0x208e,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20e6,
+0x20eb, 0x20ef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2118, 0x211d,
+0x2124, 0x2124,
+0x2128, 0x2129,
+0x212c, 0x212d,
+0x212f, 0x2131,
+0x2133, 0x2138,
+0x213c, 0x2149,
+0x214b, 0x214b,
+0x2190, 0x21a7,
+0x21a9, 0x21ae,
+0x21b0, 0x21b1,
+0x21b6, 0x21b7,
+0x21bc, 0x21db,
+0x21dd, 0x21dd,
+0x21e4, 0x21e5,
+0x21f4, 0x22ff,
+0x2308, 0x230b,
+0x2320, 0x2321,
+0x237c, 0x237c,
+0x239b, 0x23b5,
+0x23b7, 0x23b7,
+0x23d0, 0x23d0,
+0x23dc, 0x23e2,
+0x25a0, 0x25a1,
+0x25ae, 0x25b7,
+0x25bc, 0x25c1,
+0x25c6, 0x25c7,
+0x25ca, 0x25cb,
+0x25cf, 0x25d3,
+0x25e2, 0x25e2,
+0x25e4, 0x25e4,
+0x25e7, 0x25ec,
+0x25f8, 0x25ff,
+0x2605, 0x2606,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2660, 0x2663,
+0x266d, 0x266f,
+0x27c0, 0x27ff,
+0x2900, 0x2aff,
+0x2b30, 0x2b44,
+0x2b47, 0x2b4c,
+0xfb29, 0xfb29,
+0xfe61, 0xfe66,
+0xfe68, 0xfe68,
+0xff0b, 0xff0b,
+0xff1c, 0xff1e,
+0xff3c, 0xff3c,
+0xff3e, 0xff3e,
+0xff5c, 0xff5c,
+0xff5e, 0xff5e,
+0xffe2, 0xffe2,
+0xffe9, 0xffec,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+0x1eef0, 0x1eef1,
+}; /* END of CR_Math */
+
/* PROPERTY: 'Mc': General Category */
static const OnigCodePoint
-CR_Mc[] = { 147,
+CR_Mc[] = { 166,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -9464,6 +17634,7 @@ CR_Mc[] = { 147,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
0x1cf2, 0x1cf3,
+0x1cf7, 0x1cf7,
0x302e, 0x302f,
0xa823, 0xa824,
0xa827, 0xa827,
@@ -9492,6 +17663,7 @@ CR_Mc[] = { 147,
0x110b0, 0x110b2,
0x110b7, 0x110b8,
0x1112c, 0x1112c,
+0x11145, 0x11146,
0x11182, 0x11182,
0x111b3, 0x111b5,
0x111bf, 0x111c0,
@@ -9506,6 +17678,9 @@ CR_Mc[] = { 147,
0x1134b, 0x1134d,
0x11357, 0x11357,
0x11362, 0x11363,
+0x11435, 0x11437,
+0x11440, 0x11441,
+0x11445, 0x11445,
0x114b0, 0x114b2,
0x114b9, 0x114b9,
0x114bb, 0x114be,
@@ -9521,6 +17696,20 @@ CR_Mc[] = { 147,
0x116b6, 0x116b6,
0x11720, 0x11721,
0x11726, 0x11726,
+0x1182c, 0x1182e,
+0x11838, 0x11838,
+0x11a39, 0x11a39,
+0x11a57, 0x11a58,
+0x11a97, 0x11a97,
+0x11c2f, 0x11c2f,
+0x11c3e, 0x11c3e,
+0x11ca9, 0x11ca9,
+0x11cb1, 0x11cb1,
+0x11cb4, 0x11cb4,
+0x11d8a, 0x11d8e,
+0x11d93, 0x11d94,
+0x11d96, 0x11d96,
+0x11ef5, 0x11ef6,
0x16f51, 0x16f7e,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
@@ -9536,9 +17725,52 @@ CR_Me[] = { 5,
0xa670, 0xa672,
}; /* END of CR_Me */
+/* PROPERTY: 'Medefaidrin': Script */
+static const OnigCodePoint
+CR_Medefaidrin[] = { 1,
+0x16e40, 0x16e9a,
+}; /* END of CR_Medefaidrin */
+
+/* PROPERTY: 'Meetei_Mayek': Script */
+static const OnigCodePoint
+CR_Meetei_Mayek[] = { 3,
+0xaae0, 0xaaf6,
+0xabc0, 0xabed,
+0xabf0, 0xabf9,
+}; /* END of CR_Meetei_Mayek */
+
+/* PROPERTY: 'Mende_Kikakui': Script */
+static const OnigCodePoint
+CR_Mende_Kikakui[] = { 2,
+0x1e800, 0x1e8c4,
+0x1e8c7, 0x1e8d6,
+}; /* END of CR_Mende_Kikakui */
+
+/* PROPERTY: 'Meroitic_Cursive': Script */
+static const OnigCodePoint
+CR_Meroitic_Cursive[] = { 3,
+0x109a0, 0x109b7,
+0x109bc, 0x109cf,
+0x109d2, 0x109ff,
+}; /* END of CR_Meroitic_Cursive */
+
+/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
+static const OnigCodePoint
+CR_Meroitic_Hieroglyphs[] = { 1,
+0x10980, 0x1099f,
+}; /* END of CR_Meroitic_Hieroglyphs */
+
+/* PROPERTY: 'Miao': Script */
+static const OnigCodePoint
+CR_Miao[] = { 3,
+0x16f00, 0x16f44,
+0x16f50, 0x16f7e,
+0x16f8f, 0x16f9f,
+}; /* END of CR_Miao */
+
/* PROPERTY: 'Mn': General Category */
static const OnigCodePoint
-CR_Mn[] = { 266,
+CR_Mn[] = { 313,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -9557,11 +17789,13 @@ CR_Mn[] = { 266,
0x0730, 0x074a,
0x07a6, 0x07b0,
0x07eb, 0x07f3,
+0x07fd, 0x07fd,
0x0816, 0x0819,
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
+0x08d3, 0x08e1,
0x08e3, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -9574,6 +17808,7 @@ CR_Mn[] = { 266,
0x09c1, 0x09c4,
0x09cd, 0x09cd,
0x09e2, 0x09e3,
+0x09fe, 0x09fe,
0x0a01, 0x0a02,
0x0a3c, 0x0a3c,
0x0a41, 0x0a42,
@@ -9588,6 +17823,7 @@ CR_Mn[] = { 266,
0x0ac7, 0x0ac8,
0x0acd, 0x0acd,
0x0ae2, 0x0ae3,
+0x0afa, 0x0aff,
0x0b01, 0x0b01,
0x0b3c, 0x0b3c,
0x0b3f, 0x0b3f,
@@ -9599,6 +17835,7 @@ CR_Mn[] = { 266,
0x0bc0, 0x0bc0,
0x0bcd, 0x0bcd,
0x0c00, 0x0c00,
+0x0c04, 0x0c04,
0x0c3e, 0x0c40,
0x0c46, 0x0c48,
0x0c4a, 0x0c4d,
@@ -9610,7 +17847,8 @@ CR_Mn[] = { 266,
0x0cc6, 0x0cc6,
0x0ccc, 0x0ccd,
0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
+0x0d00, 0x0d01,
+0x0d3b, 0x0d3c,
0x0d41, 0x0d44,
0x0d4d, 0x0d4d,
0x0d62, 0x0d63,
@@ -9656,6 +17894,7 @@ CR_Mn[] = { 266,
0x17c9, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
+0x1885, 0x1886,
0x18a9, 0x18a9,
0x1920, 0x1922,
0x1927, 0x1928,
@@ -9693,8 +17932,8 @@ CR_Mn[] = { 266,
0x1ced, 0x1ced,
0x1cf4, 0x1cf4,
0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
+0x1dc0, 0x1df9,
+0x1dfb, 0x1dff,
0x20d0, 0x20dc,
0x20e1, 0x20e1,
0x20e5, 0x20f0,
@@ -9711,8 +17950,9 @@ CR_Mn[] = { 266,
0xa806, 0xa806,
0xa80b, 0xa80b,
0xa825, 0xa826,
-0xa8c4, 0xa8c4,
+0xa8c4, 0xa8c5,
0xa8e0, 0xa8f1,
+0xa8ff, 0xa8ff,
0xa926, 0xa92d,
0xa947, 0xa951,
0xa980, 0xa982,
@@ -9748,6 +17988,8 @@ CR_Mn[] = { 266,
0x10a38, 0x10a3a,
0x10a3f, 0x10a3f,
0x10ae5, 0x10ae6,
+0x10d24, 0x10d27,
+0x10f46, 0x10f50,
0x11001, 0x11001,
0x11038, 0x11046,
0x1107f, 0x11081,
@@ -9759,17 +18001,22 @@ CR_Mn[] = { 266,
0x11173, 0x11173,
0x11180, 0x11181,
0x111b6, 0x111be,
-0x111ca, 0x111cc,
+0x111c9, 0x111cc,
0x1122f, 0x11231,
0x11234, 0x11234,
0x11236, 0x11237,
+0x1123e, 0x1123e,
0x112df, 0x112df,
0x112e3, 0x112ea,
0x11300, 0x11301,
-0x1133c, 0x1133c,
+0x1133b, 0x1133c,
0x11340, 0x11340,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11438, 0x1143f,
+0x11442, 0x11444,
+0x11446, 0x11446,
+0x1145e, 0x1145e,
0x114b3, 0x114b8,
0x114ba, 0x114ba,
0x114bf, 0x114c0,
@@ -9788,6 +18035,32 @@ CR_Mn[] = { 266,
0x1171d, 0x1171f,
0x11722, 0x11725,
0x11727, 0x1172b,
+0x1182f, 0x11837,
+0x11839, 0x1183a,
+0x11a01, 0x11a0a,
+0x11a33, 0x11a38,
+0x11a3b, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a51, 0x11a56,
+0x11a59, 0x11a5b,
+0x11a8a, 0x11a96,
+0x11a98, 0x11a99,
+0x11c30, 0x11c36,
+0x11c38, 0x11c3d,
+0x11c3f, 0x11c3f,
+0x11c92, 0x11ca7,
+0x11caa, 0x11cb0,
+0x11cb2, 0x11cb3,
+0x11cb5, 0x11cb6,
+0x11d31, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d45,
+0x11d47, 0x11d47,
+0x11d90, 0x11d91,
+0x11d95, 0x11d95,
+0x11d97, 0x11d97,
+0x11ef3, 0x11ef4,
0x16af0, 0x16af4,
0x16b30, 0x16b36,
0x16f8f, 0x16f92,
@@ -9803,13 +18076,64 @@ CR_Mn[] = { 266,
0x1da84, 0x1da84,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e8d0, 0x1e8d6,
+0x1e944, 0x1e94a,
0xe0100, 0xe01ef,
}; /* END of CR_Mn */
+/* PROPERTY: 'Modi': Script */
+static const OnigCodePoint
+CR_Modi[] = { 2,
+0x11600, 0x11644,
+0x11650, 0x11659,
+}; /* END of CR_Modi */
+
+/* PROPERTY: 'Mongolian': Script */
+static const OnigCodePoint
+CR_Mongolian[] = { 7,
+0x1800, 0x1801,
+0x1804, 0x1804,
+0x1806, 0x180e,
+0x1810, 0x1819,
+0x1820, 0x1878,
+0x1880, 0x18aa,
+0x11660, 0x1166c,
+}; /* END of CR_Mongolian */
+
+/* PROPERTY: 'Mro': Script */
+static const OnigCodePoint
+CR_Mro[] = { 3,
+0x16a40, 0x16a5e,
+0x16a60, 0x16a69,
+0x16a6e, 0x16a6f,
+}; /* END of CR_Mro */
+
+/* PROPERTY: 'Multani': Script */
+static const OnigCodePoint
+CR_Multani[] = { 5,
+0x11280, 0x11286,
+0x11288, 0x11288,
+0x1128a, 0x1128d,
+0x1128f, 0x1129d,
+0x1129f, 0x112a9,
+}; /* END of CR_Multani */
+
+/* PROPERTY: 'Myanmar': Script */
+static const OnigCodePoint
+CR_Myanmar[] = { 3,
+0x1000, 0x109f,
+0xa9e0, 0xa9fe,
+0xaa60, 0xaa7f,
+}; /* END of CR_Myanmar */
+
/* PROPERTY: 'N': Major Category */
static const OnigCodePoint
-CR_N[] = { 111,
+CR_N[] = { 125,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -9828,7 +18152,8 @@ CR_N[] = { 111,
0x0c66, 0x0c6f,
0x0c78, 0x0c7e,
0x0ce6, 0x0cef,
-0x0d66, 0x0d75,
+0x0d58, 0x0d5e,
+0x0d66, 0x0d78,
0x0de6, 0x0def,
0x0e50, 0x0e59,
0x0ed0, 0x0ed9,
@@ -9893,7 +18218,7 @@ CR_N[] = { 111,
0x109bc, 0x109bd,
0x109c0, 0x109cf,
0x109d2, 0x109ff,
-0x10a40, 0x10a47,
+0x10a40, 0x10a48,
0x10a7d, 0x10a7e,
0x10a9d, 0x10a9f,
0x10aeb, 0x10aef,
@@ -9901,31 +18226,75 @@ CR_N[] = { 111,
0x10b78, 0x10b7f,
0x10ba9, 0x10baf,
0x10cfa, 0x10cff,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f1d, 0x10f26,
+0x10f51, 0x10f54,
0x11052, 0x1106f,
0x110f0, 0x110f9,
0x11136, 0x1113f,
0x111d0, 0x111d9,
0x111e1, 0x111f4,
0x112f0, 0x112f9,
+0x11450, 0x11459,
0x114d0, 0x114d9,
0x11650, 0x11659,
0x116c0, 0x116c9,
0x11730, 0x1173b,
0x118e0, 0x118f2,
+0x11c50, 0x11c6c,
+0x11d50, 0x11d59,
+0x11da0, 0x11da9,
0x12400, 0x1246e,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
0x16b5b, 0x16b61,
-0x1d360, 0x1d371,
+0x16e80, 0x16e96,
+0x1d2e0, 0x1d2f3,
+0x1d360, 0x1d378,
0x1d7ce, 0x1d7ff,
0x1e8c7, 0x1e8cf,
+0x1e950, 0x1e959,
+0x1ec71, 0x1ecab,
+0x1ecad, 0x1ecaf,
+0x1ecb1, 0x1ecb4,
0x1f100, 0x1f10c,
}; /* END of CR_N */
+/* PROPERTY: 'Nabataean': Script */
+static const OnigCodePoint
+CR_Nabataean[] = { 2,
+0x10880, 0x1089e,
+0x108a7, 0x108af,
+}; /* END of CR_Nabataean */
+
/* PROPERTY: 'Nd': General Category */
#define CR_Nd CR_Digit
+/* PROPERTY: 'New_Tai_Lue': Script */
+static const OnigCodePoint
+CR_New_Tai_Lue[] = { 4,
+0x1980, 0x19ab,
+0x19b0, 0x19c9,
+0x19d0, 0x19da,
+0x19de, 0x19df,
+}; /* END of CR_New_Tai_Lue */
+
+/* PROPERTY: 'Newa': Script */
+static const OnigCodePoint
+CR_Newa[] = { 3,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
+}; /* END of CR_Newa */
+
+/* PROPERTY: 'Nko': Script */
+static const OnigCodePoint
+CR_Nko[] = { 2,
+0x07c0, 0x07fa,
+0x07fd, 0x07ff,
+}; /* END of CR_Nko */
+
/* PROPERTY: 'Nl': General Category */
static const OnigCodePoint
CR_Nl[] = { 12,
@@ -9945,7 +18314,7 @@ CR_Nl[] = { 12,
/* PROPERTY: 'No': General Category */
static const OnigCodePoint
-CR_No[] = { 58,
+CR_No[] = { 67,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -9953,7 +18322,8 @@ CR_No[] = { 58,
0x0b72, 0x0b77,
0x0bf0, 0x0bf2,
0x0c78, 0x0c7e,
-0x0d70, 0x0d75,
+0x0d58, 0x0d5e,
+0x0d70, 0x0d78,
0x0f2a, 0x0f33,
0x1369, 0x137c,
0x17f0, 0x17f9,
@@ -9987,7 +18357,7 @@ CR_No[] = { 58,
0x109bc, 0x109bd,
0x109c0, 0x109cf,
0x109d2, 0x109ff,
-0x10a40, 0x10a47,
+0x10a40, 0x10a48,
0x10a7d, 0x10a7e,
0x10a9d, 0x10a9f,
0x10aeb, 0x10aef,
@@ -9996,19 +18366,673 @@ CR_No[] = { 58,
0x10ba9, 0x10baf,
0x10cfa, 0x10cff,
0x10e60, 0x10e7e,
+0x10f1d, 0x10f26,
+0x10f51, 0x10f54,
0x11052, 0x11065,
0x111e1, 0x111f4,
0x1173a, 0x1173b,
0x118ea, 0x118f2,
+0x11c5a, 0x11c6c,
0x16b5b, 0x16b61,
-0x1d360, 0x1d371,
+0x16e80, 0x16e96,
+0x1d2e0, 0x1d2f3,
+0x1d360, 0x1d378,
0x1e8c7, 0x1e8cf,
+0x1ec71, 0x1ecab,
+0x1ecad, 0x1ecaf,
+0x1ecb1, 0x1ecb4,
0x1f100, 0x1f10c,
}; /* END of CR_No */
+/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
+static const OnigCodePoint
+CR_Noncharacter_Code_Point[] = { 18,
+0xfdd0, 0xfdef,
+0xfffe, 0xffff,
+0x1fffe, 0x1ffff,
+0x2fffe, 0x2ffff,
+0x3fffe, 0x3ffff,
+0x4fffe, 0x4ffff,
+0x5fffe, 0x5ffff,
+0x6fffe, 0x6ffff,
+0x7fffe, 0x7ffff,
+0x8fffe, 0x8ffff,
+0x9fffe, 0x9ffff,
+0xafffe, 0xaffff,
+0xbfffe, 0xbffff,
+0xcfffe, 0xcffff,
+0xdfffe, 0xdffff,
+0xefffe, 0xeffff,
+0xffffe, 0xfffff,
+0x10fffe, 0x10ffff,
+}; /* END of CR_Noncharacter_Code_Point */
+
+/* PROPERTY: 'Nushu': Script */
+static const OnigCodePoint
+CR_Nushu[] = { 2,
+0x16fe1, 0x16fe1,
+0x1b170, 0x1b2fb,
+}; /* END of CR_Nushu */
+
+/* PROPERTY: 'Ogham': Script */
+static const OnigCodePoint
+CR_Ogham[] = { 1,
+0x1680, 0x169c,
+}; /* END of CR_Ogham */
+
+/* PROPERTY: 'Ol_Chiki': Script */
+static const OnigCodePoint
+CR_Ol_Chiki[] = { 1,
+0x1c50, 0x1c7f,
+}; /* END of CR_Ol_Chiki */
+
+/* PROPERTY: 'Old_Hungarian': Script */
+static const OnigCodePoint
+CR_Old_Hungarian[] = { 3,
+0x10c80, 0x10cb2,
+0x10cc0, 0x10cf2,
+0x10cfa, 0x10cff,
+}; /* END of CR_Old_Hungarian */
+
+/* PROPERTY: 'Old_Italic': Script */
+static const OnigCodePoint
+CR_Old_Italic[] = { 2,
+0x10300, 0x10323,
+0x1032d, 0x1032f,
+}; /* END of CR_Old_Italic */
+
+/* PROPERTY: 'Old_North_Arabian': Script */
+static const OnigCodePoint
+CR_Old_North_Arabian[] = { 1,
+0x10a80, 0x10a9f,
+}; /* END of CR_Old_North_Arabian */
+
+/* PROPERTY: 'Old_Permic': Script */
+static const OnigCodePoint
+CR_Old_Permic[] = { 1,
+0x10350, 0x1037a,
+}; /* END of CR_Old_Permic */
+
+/* PROPERTY: 'Old_Persian': Script */
+static const OnigCodePoint
+CR_Old_Persian[] = { 2,
+0x103a0, 0x103c3,
+0x103c8, 0x103d5,
+}; /* END of CR_Old_Persian */
+
+/* PROPERTY: 'Old_Sogdian': Script */
+static const OnigCodePoint
+CR_Old_Sogdian[] = { 1,
+0x10f00, 0x10f27,
+}; /* END of CR_Old_Sogdian */
+
+/* PROPERTY: 'Old_South_Arabian': Script */
+static const OnigCodePoint
+CR_Old_South_Arabian[] = { 1,
+0x10a60, 0x10a7f,
+}; /* END of CR_Old_South_Arabian */
+
+/* PROPERTY: 'Old_Turkic': Script */
+static const OnigCodePoint
+CR_Old_Turkic[] = { 1,
+0x10c00, 0x10c48,
+}; /* END of CR_Old_Turkic */
+
+/* PROPERTY: 'Oriya': Script */
+static const OnigCodePoint
+CR_Oriya[] = { 14,
+0x0b01, 0x0b03,
+0x0b05, 0x0b0c,
+0x0b0f, 0x0b10,
+0x0b13, 0x0b28,
+0x0b2a, 0x0b30,
+0x0b32, 0x0b33,
+0x0b35, 0x0b39,
+0x0b3c, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4d,
+0x0b56, 0x0b57,
+0x0b5c, 0x0b5d,
+0x0b5f, 0x0b63,
+0x0b66, 0x0b77,
+}; /* END of CR_Oriya */
+
+/* PROPERTY: 'Osage': Script */
+static const OnigCodePoint
+CR_Osage[] = { 2,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
+}; /* END of CR_Osage */
+
+/* PROPERTY: 'Osmanya': Script */
+static const OnigCodePoint
+CR_Osmanya[] = { 2,
+0x10480, 0x1049d,
+0x104a0, 0x104a9,
+}; /* END of CR_Osmanya */
+
+/* PROPERTY: 'Other_Alphabetic': Binary Property */
+static const OnigCodePoint
+CR_Other_Alphabetic[] = { 213,
+0x0345, 0x0345,
+0x05b0, 0x05bd,
+0x05bf, 0x05bf,
+0x05c1, 0x05c2,
+0x05c4, 0x05c5,
+0x05c7, 0x05c7,
+0x0610, 0x061a,
+0x064b, 0x0657,
+0x0659, 0x065f,
+0x0670, 0x0670,
+0x06d6, 0x06dc,
+0x06e1, 0x06e4,
+0x06e7, 0x06e8,
+0x06ed, 0x06ed,
+0x0711, 0x0711,
+0x0730, 0x073f,
+0x07a6, 0x07b0,
+0x0816, 0x0817,
+0x081b, 0x0823,
+0x0825, 0x0827,
+0x0829, 0x082c,
+0x08d4, 0x08df,
+0x08e3, 0x08e9,
+0x08f0, 0x0903,
+0x093a, 0x093b,
+0x093e, 0x094c,
+0x094e, 0x094f,
+0x0955, 0x0957,
+0x0962, 0x0963,
+0x0981, 0x0983,
+0x09be, 0x09c4,
+0x09c7, 0x09c8,
+0x09cb, 0x09cc,
+0x09d7, 0x09d7,
+0x09e2, 0x09e3,
+0x0a01, 0x0a03,
+0x0a3e, 0x0a42,
+0x0a47, 0x0a48,
+0x0a4b, 0x0a4c,
+0x0a51, 0x0a51,
+0x0a70, 0x0a71,
+0x0a75, 0x0a75,
+0x0a81, 0x0a83,
+0x0abe, 0x0ac5,
+0x0ac7, 0x0ac9,
+0x0acb, 0x0acc,
+0x0ae2, 0x0ae3,
+0x0afa, 0x0afc,
+0x0b01, 0x0b03,
+0x0b3e, 0x0b44,
+0x0b47, 0x0b48,
+0x0b4b, 0x0b4c,
+0x0b56, 0x0b57,
+0x0b62, 0x0b63,
+0x0b82, 0x0b82,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcc,
+0x0bd7, 0x0bd7,
+0x0c00, 0x0c03,
+0x0c3e, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4c,
+0x0c55, 0x0c56,
+0x0c62, 0x0c63,
+0x0c81, 0x0c83,
+0x0cbe, 0x0cc4,
+0x0cc6, 0x0cc8,
+0x0cca, 0x0ccc,
+0x0cd5, 0x0cd6,
+0x0ce2, 0x0ce3,
+0x0d00, 0x0d03,
+0x0d3e, 0x0d44,
+0x0d46, 0x0d48,
+0x0d4a, 0x0d4c,
+0x0d57, 0x0d57,
+0x0d62, 0x0d63,
+0x0d82, 0x0d83,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0df2, 0x0df3,
+0x0e31, 0x0e31,
+0x0e34, 0x0e3a,
+0x0e4d, 0x0e4d,
+0x0eb1, 0x0eb1,
+0x0eb4, 0x0eb9,
+0x0ebb, 0x0ebc,
+0x0ecd, 0x0ecd,
+0x0f71, 0x0f81,
+0x0f8d, 0x0f97,
+0x0f99, 0x0fbc,
+0x102b, 0x1036,
+0x1038, 0x1038,
+0x103b, 0x103e,
+0x1056, 0x1059,
+0x105e, 0x1060,
+0x1062, 0x1062,
+0x1067, 0x1068,
+0x1071, 0x1074,
+0x1082, 0x1086,
+0x109c, 0x109d,
+0x135f, 0x135f,
+0x1712, 0x1713,
+0x1732, 0x1733,
+0x1752, 0x1753,
+0x1772, 0x1773,
+0x17b6, 0x17c8,
+0x1885, 0x1886,
+0x18a9, 0x18a9,
+0x1920, 0x192b,
+0x1930, 0x1938,
+0x1a17, 0x1a1b,
+0x1a55, 0x1a5e,
+0x1a61, 0x1a74,
+0x1b00, 0x1b04,
+0x1b35, 0x1b43,
+0x1b80, 0x1b82,
+0x1ba1, 0x1ba9,
+0x1bac, 0x1bad,
+0x1be7, 0x1bf1,
+0x1c24, 0x1c35,
+0x1cf2, 0x1cf3,
+0x1de7, 0x1df4,
+0x24b6, 0x24e9,
+0x2de0, 0x2dff,
+0xa674, 0xa67b,
+0xa69e, 0xa69f,
+0xa823, 0xa827,
+0xa880, 0xa881,
+0xa8b4, 0xa8c3,
+0xa8c5, 0xa8c5,
+0xa926, 0xa92a,
+0xa947, 0xa952,
+0xa980, 0xa983,
+0xa9b4, 0xa9bf,
+0xaa29, 0xaa36,
+0xaa43, 0xaa43,
+0xaa4c, 0xaa4d,
+0xaab0, 0xaab0,
+0xaab2, 0xaab4,
+0xaab7, 0xaab8,
+0xaabe, 0xaabe,
+0xaaeb, 0xaaef,
+0xaaf5, 0xaaf5,
+0xabe3, 0xabea,
+0xfb1e, 0xfb1e,
+0x10376, 0x1037a,
+0x10a01, 0x10a03,
+0x10a05, 0x10a06,
+0x10a0c, 0x10a0f,
+0x10d24, 0x10d27,
+0x11000, 0x11002,
+0x11038, 0x11045,
+0x11082, 0x11082,
+0x110b0, 0x110b8,
+0x11100, 0x11102,
+0x11127, 0x11132,
+0x11145, 0x11146,
+0x11180, 0x11182,
+0x111b3, 0x111bf,
+0x1122c, 0x11234,
+0x11237, 0x11237,
+0x1123e, 0x1123e,
+0x112df, 0x112e8,
+0x11300, 0x11303,
+0x1133e, 0x11344,
+0x11347, 0x11348,
+0x1134b, 0x1134c,
+0x11357, 0x11357,
+0x11362, 0x11363,
+0x11435, 0x11441,
+0x11443, 0x11445,
+0x114b0, 0x114c1,
+0x115af, 0x115b5,
+0x115b8, 0x115be,
+0x115dc, 0x115dd,
+0x11630, 0x1163e,
+0x11640, 0x11640,
+0x116ab, 0x116b5,
+0x1171d, 0x1172a,
+0x1182c, 0x11838,
+0x11a01, 0x11a0a,
+0x11a35, 0x11a39,
+0x11a3b, 0x11a3e,
+0x11a51, 0x11a5b,
+0x11a8a, 0x11a97,
+0x11c2f, 0x11c36,
+0x11c38, 0x11c3e,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d31, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d41,
+0x11d43, 0x11d43,
+0x11d47, 0x11d47,
+0x11d8a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d96,
+0x11ef3, 0x11ef6,
+0x16b30, 0x16b36,
+0x16f51, 0x16f7e,
+0x1bc9e, 0x1bc9e,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
+0x1e947, 0x1e947,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Alphabetic */
+
+/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
+static const OnigCodePoint
+CR_Other_Default_Ignorable_Code_Point[] = { 11,
+0x034f, 0x034f,
+0x115f, 0x1160,
+0x17b4, 0x17b5,
+0x2065, 0x2065,
+0x3164, 0x3164,
+0xffa0, 0xffa0,
+0xfff0, 0xfff8,
+0xe0000, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0xe0fff,
+}; /* END of CR_Other_Default_Ignorable_Code_Point */
+
+/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
+static const OnigCodePoint
+CR_Other_Grapheme_Extend[] = { 23,
+0x09be, 0x09be,
+0x09d7, 0x09d7,
+0x0b3e, 0x0b3e,
+0x0b57, 0x0b57,
+0x0bbe, 0x0bbe,
+0x0bd7, 0x0bd7,
+0x0cc2, 0x0cc2,
+0x0cd5, 0x0cd6,
+0x0d3e, 0x0d3e,
+0x0d57, 0x0d57,
+0x0dcf, 0x0dcf,
+0x0ddf, 0x0ddf,
+0x200c, 0x200c,
+0x302e, 0x302f,
+0xff9e, 0xff9f,
+0x1133e, 0x1133e,
+0x11357, 0x11357,
+0x114b0, 0x114b0,
+0x114bd, 0x114bd,
+0x115af, 0x115af,
+0x1d165, 0x1d165,
+0x1d16e, 0x1d172,
+0xe0020, 0xe007f,
+}; /* END of CR_Other_Grapheme_Extend */
+
+/* PROPERTY: 'Other_ID_Continue': Binary Property */
+static const OnigCodePoint
+CR_Other_ID_Continue[] = { 4,
+0x00b7, 0x00b7,
+0x0387, 0x0387,
+0x1369, 0x1371,
+0x19da, 0x19da,
+}; /* END of CR_Other_ID_Continue */
+
+/* PROPERTY: 'Other_ID_Start': Binary Property */
+static const OnigCodePoint
+CR_Other_ID_Start[] = { 4,
+0x1885, 0x1886,
+0x2118, 0x2118,
+0x212e, 0x212e,
+0x309b, 0x309c,
+}; /* END of CR_Other_ID_Start */
+
+/* PROPERTY: 'Other_Lowercase': Binary Property */
+static const OnigCodePoint
+CR_Other_Lowercase[] = { 20,
+0x00aa, 0x00aa,
+0x00ba, 0x00ba,
+0x02b0, 0x02b8,
+0x02c0, 0x02c1,
+0x02e0, 0x02e4,
+0x0345, 0x0345,
+0x037a, 0x037a,
+0x1d2c, 0x1d6a,
+0x1d78, 0x1d78,
+0x1d9b, 0x1dbf,
+0x2071, 0x2071,
+0x207f, 0x207f,
+0x2090, 0x209c,
+0x2170, 0x217f,
+0x24d0, 0x24e9,
+0x2c7c, 0x2c7d,
+0xa69c, 0xa69d,
+0xa770, 0xa770,
+0xa7f8, 0xa7f9,
+0xab5c, 0xab5f,
+}; /* END of CR_Other_Lowercase */
+
+/* PROPERTY: 'Other_Math': Binary Property */
+static const OnigCodePoint
+CR_Other_Math[] = { 134,
+0x005e, 0x005e,
+0x03d0, 0x03d2,
+0x03d5, 0x03d5,
+0x03f0, 0x03f1,
+0x03f4, 0x03f5,
+0x2016, 0x2016,
+0x2032, 0x2034,
+0x2040, 0x2040,
+0x2061, 0x2064,
+0x207d, 0x207e,
+0x208d, 0x208e,
+0x20d0, 0x20dc,
+0x20e1, 0x20e1,
+0x20e5, 0x20e6,
+0x20eb, 0x20ef,
+0x2102, 0x2102,
+0x2107, 0x2107,
+0x210a, 0x2113,
+0x2115, 0x2115,
+0x2119, 0x211d,
+0x2124, 0x2124,
+0x2128, 0x2129,
+0x212c, 0x212d,
+0x212f, 0x2131,
+0x2133, 0x2138,
+0x213c, 0x213f,
+0x2145, 0x2149,
+0x2195, 0x2199,
+0x219c, 0x219f,
+0x21a1, 0x21a2,
+0x21a4, 0x21a5,
+0x21a7, 0x21a7,
+0x21a9, 0x21ad,
+0x21b0, 0x21b1,
+0x21b6, 0x21b7,
+0x21bc, 0x21cd,
+0x21d0, 0x21d1,
+0x21d3, 0x21d3,
+0x21d5, 0x21db,
+0x21dd, 0x21dd,
+0x21e4, 0x21e5,
+0x2308, 0x230b,
+0x23b4, 0x23b5,
+0x23b7, 0x23b7,
+0x23d0, 0x23d0,
+0x23e2, 0x23e2,
+0x25a0, 0x25a1,
+0x25ae, 0x25b6,
+0x25bc, 0x25c0,
+0x25c6, 0x25c7,
+0x25ca, 0x25cb,
+0x25cf, 0x25d3,
+0x25e2, 0x25e2,
+0x25e4, 0x25e4,
+0x25e7, 0x25ec,
+0x2605, 0x2606,
+0x2640, 0x2640,
+0x2642, 0x2642,
+0x2660, 0x2663,
+0x266d, 0x266e,
+0x27c5, 0x27c6,
+0x27e6, 0x27ef,
+0x2983, 0x2998,
+0x29d8, 0x29db,
+0x29fc, 0x29fd,
+0xfe61, 0xfe61,
+0xfe63, 0xfe63,
+0xfe68, 0xfe68,
+0xff3c, 0xff3c,
+0xff3e, 0xff3e,
+0x1d400, 0x1d454,
+0x1d456, 0x1d49c,
+0x1d49e, 0x1d49f,
+0x1d4a2, 0x1d4a2,
+0x1d4a5, 0x1d4a6,
+0x1d4a9, 0x1d4ac,
+0x1d4ae, 0x1d4b9,
+0x1d4bb, 0x1d4bb,
+0x1d4bd, 0x1d4c3,
+0x1d4c5, 0x1d505,
+0x1d507, 0x1d50a,
+0x1d50d, 0x1d514,
+0x1d516, 0x1d51c,
+0x1d51e, 0x1d539,
+0x1d53b, 0x1d53e,
+0x1d540, 0x1d544,
+0x1d546, 0x1d546,
+0x1d54a, 0x1d550,
+0x1d552, 0x1d6a5,
+0x1d6a8, 0x1d6c0,
+0x1d6c2, 0x1d6da,
+0x1d6dc, 0x1d6fa,
+0x1d6fc, 0x1d714,
+0x1d716, 0x1d734,
+0x1d736, 0x1d74e,
+0x1d750, 0x1d76e,
+0x1d770, 0x1d788,
+0x1d78a, 0x1d7a8,
+0x1d7aa, 0x1d7c2,
+0x1d7c4, 0x1d7cb,
+0x1d7ce, 0x1d7ff,
+0x1ee00, 0x1ee03,
+0x1ee05, 0x1ee1f,
+0x1ee21, 0x1ee22,
+0x1ee24, 0x1ee24,
+0x1ee27, 0x1ee27,
+0x1ee29, 0x1ee32,
+0x1ee34, 0x1ee37,
+0x1ee39, 0x1ee39,
+0x1ee3b, 0x1ee3b,
+0x1ee42, 0x1ee42,
+0x1ee47, 0x1ee47,
+0x1ee49, 0x1ee49,
+0x1ee4b, 0x1ee4b,
+0x1ee4d, 0x1ee4f,
+0x1ee51, 0x1ee52,
+0x1ee54, 0x1ee54,
+0x1ee57, 0x1ee57,
+0x1ee59, 0x1ee59,
+0x1ee5b, 0x1ee5b,
+0x1ee5d, 0x1ee5d,
+0x1ee5f, 0x1ee5f,
+0x1ee61, 0x1ee62,
+0x1ee64, 0x1ee64,
+0x1ee67, 0x1ee6a,
+0x1ee6c, 0x1ee72,
+0x1ee74, 0x1ee77,
+0x1ee79, 0x1ee7c,
+0x1ee7e, 0x1ee7e,
+0x1ee80, 0x1ee89,
+0x1ee8b, 0x1ee9b,
+0x1eea1, 0x1eea3,
+0x1eea5, 0x1eea9,
+0x1eeab, 0x1eebb,
+}; /* END of CR_Other_Math */
+
+/* PROPERTY: 'Other_Uppercase': Binary Property */
+static const OnigCodePoint
+CR_Other_Uppercase[] = { 5,
+0x2160, 0x216f,
+0x24b6, 0x24cf,
+0x1f130, 0x1f149,
+0x1f150, 0x1f169,
+0x1f170, 0x1f189,
+}; /* END of CR_Other_Uppercase */
+
/* PROPERTY: 'P': Major Category */
#define CR_P CR_Punct
+/* PROPERTY: 'Pahawh_Hmong': Script */
+static const OnigCodePoint
+CR_Pahawh_Hmong[] = { 5,
+0x16b00, 0x16b45,
+0x16b50, 0x16b59,
+0x16b5b, 0x16b61,
+0x16b63, 0x16b77,
+0x16b7d, 0x16b8f,
+}; /* END of CR_Pahawh_Hmong */
+
+/* PROPERTY: 'Palmyrene': Script */
+static const OnigCodePoint
+CR_Palmyrene[] = { 1,
+0x10860, 0x1087f,
+}; /* END of CR_Palmyrene */
+
+/* PROPERTY: 'Pattern_Syntax': Binary Property */
+static const OnigCodePoint
+CR_Pattern_Syntax[] = { 28,
+0x0021, 0x002f,
+0x003a, 0x0040,
+0x005b, 0x005e,
+0x0060, 0x0060,
+0x007b, 0x007e,
+0x00a1, 0x00a7,
+0x00a9, 0x00a9,
+0x00ab, 0x00ac,
+0x00ae, 0x00ae,
+0x00b0, 0x00b1,
+0x00b6, 0x00b6,
+0x00bb, 0x00bb,
+0x00bf, 0x00bf,
+0x00d7, 0x00d7,
+0x00f7, 0x00f7,
+0x2010, 0x2027,
+0x2030, 0x203e,
+0x2041, 0x2053,
+0x2055, 0x205e,
+0x2190, 0x245f,
+0x2500, 0x2775,
+0x2794, 0x2bff,
+0x2e00, 0x2e7f,
+0x3001, 0x3003,
+0x3008, 0x3020,
+0x3030, 0x3030,
+0xfd3e, 0xfd3f,
+0xfe45, 0xfe46,
+}; /* END of CR_Pattern_Syntax */
+
+/* PROPERTY: 'Pattern_White_Space': Binary Property */
+static const OnigCodePoint
+CR_Pattern_White_Space[] = { 5,
+0x0009, 0x000d,
+0x0020, 0x0020,
+0x0085, 0x0085,
+0x200e, 0x200f,
+0x2028, 0x2029,
+}; /* END of CR_Pattern_White_Space */
+
+/* PROPERTY: 'Pau_Cin_Hau': Script */
+static const OnigCodePoint
+CR_Pau_Cin_Hau[] = { 1,
+0x11ac0, 0x11af8,
+}; /* END of CR_Pau_Cin_Hau */
+
/* PROPERTY: 'Pc': General Category */
static const OnigCodePoint
CR_Pc[] = { 6,
@@ -10134,6 +19158,19 @@ CR_Pf[] = { 10,
0x2e21, 0x2e21,
}; /* END of CR_Pf */
+/* PROPERTY: 'Phags_Pa': Script */
+static const OnigCodePoint
+CR_Phags_Pa[] = { 1,
+0xa840, 0xa877,
+}; /* END of CR_Phags_Pa */
+
+/* PROPERTY: 'Phoenician': Script */
+static const OnigCodePoint
+CR_Phoenician[] = { 2,
+0x10900, 0x1091b,
+0x1091f, 0x1091f,
+}; /* END of CR_Phoenician */
+
/* PROPERTY: 'Pi': General Category */
static const OnigCodePoint
CR_Pi[] = { 11,
@@ -10152,7 +19189,7 @@ CR_Pi[] = { 11,
/* PROPERTY: 'Po': General Category */
static const OnigCodePoint
-CR_Po[] = { 157,
+CR_Po[] = { 175,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -10185,7 +19222,10 @@ CR_Po[] = { 157,
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
+0x09fd, 0x09fd,
+0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
@@ -10236,6 +19276,7 @@ CR_Po[] = { 157,
0x2e30, 0x2e39,
0x2e3c, 0x2e3f,
0x2e41, 0x2e41,
+0x2e43, 0x2e4e,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -10288,30 +19329,55 @@ CR_Po[] = { 157,
0x10af0, 0x10af6,
0x10b39, 0x10b3f,
0x10b99, 0x10b9c,
+0x10f55, 0x10f59,
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
0x11140, 0x11143,
0x11174, 0x11175,
-0x111c5, 0x111c9,
+0x111c5, 0x111c8,
0x111cd, 0x111cd,
0x111db, 0x111db,
0x111dd, 0x111df,
0x11238, 0x1123d,
0x112a9, 0x112a9,
+0x1144b, 0x1144f,
+0x1145b, 0x1145b,
+0x1145d, 0x1145d,
0x114c6, 0x114c6,
0x115c1, 0x115d7,
0x11641, 0x11643,
+0x11660, 0x1166c,
0x1173c, 0x1173e,
+0x1183b, 0x1183b,
+0x11a3f, 0x11a46,
+0x11a9a, 0x11a9c,
+0x11a9e, 0x11aa2,
+0x11c41, 0x11c45,
+0x11c70, 0x11c71,
+0x11ef7, 0x11ef8,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
+0x16e97, 0x16e9a,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
+0x1e95e, 0x1e95f,
}; /* END of CR_Po */
+/* PROPERTY: 'Prepended_Concatenation_Mark': Binary Property */
+static const OnigCodePoint
+CR_Prepended_Concatenation_Mark[] = { 6,
+0x0600, 0x0605,
+0x06dd, 0x06dd,
+0x070f, 0x070f,
+0x08e2, 0x08e2,
+0x110bd, 0x110bd,
+0x110cd, 0x110cd,
+}; /* END of CR_Prepended_Concatenation_Mark */
+
/* PROPERTY: 'Ps': General Category */
static const OnigCodePoint
CR_Ps[] = { 75,
@@ -10392,9 +19458,63 @@ CR_Ps[] = { 75,
0xff62, 0xff62,
}; /* END of CR_Ps */
+/* PROPERTY: 'Psalter_Pahlavi': Script */
+static const OnigCodePoint
+CR_Psalter_Pahlavi[] = { 3,
+0x10b80, 0x10b91,
+0x10b99, 0x10b9c,
+0x10ba9, 0x10baf,
+}; /* END of CR_Psalter_Pahlavi */
+
+/* PROPERTY: 'Quotation_Mark': Binary Property */
+static const OnigCodePoint
+CR_Quotation_Mark[] = { 13,
+0x0022, 0x0022,
+0x0027, 0x0027,
+0x00ab, 0x00ab,
+0x00bb, 0x00bb,
+0x2018, 0x201f,
+0x2039, 0x203a,
+0x2e42, 0x2e42,
+0x300c, 0x300f,
+0x301d, 0x301f,
+0xfe41, 0xfe44,
+0xff02, 0xff02,
+0xff07, 0xff07,
+0xff62, 0xff63,
+}; /* END of CR_Quotation_Mark */
+
+/* PROPERTY: 'Radical': Binary Property */
+static const OnigCodePoint
+CR_Radical[] = { 3,
+0x2e80, 0x2e99,
+0x2e9b, 0x2ef3,
+0x2f00, 0x2fd5,
+}; /* END of CR_Radical */
+
+/* PROPERTY: 'Regional_Indicator': Binary Property */
+static const OnigCodePoint
+CR_Regional_Indicator[] = { 1,
+0x1f1e6, 0x1f1ff,
+}; /* END of CR_Regional_Indicator */
+
+/* PROPERTY: 'Rejang': Script */
+static const OnigCodePoint
+CR_Rejang[] = { 2,
+0xa930, 0xa953,
+0xa95f, 0xa95f,
+}; /* END of CR_Rejang */
+
+/* PROPERTY: 'Runic': Script */
+static const OnigCodePoint
+CR_Runic[] = { 2,
+0x16a0, 0x16ea,
+0x16ee, 0x16f8,
+}; /* END of CR_Runic */
+
/* PROPERTY: 'S': Major Category */
static const OnigCodePoint
-CR_S[] = { 214,
+CR_S[] = { 220,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -10427,12 +19547,14 @@ CR_S[] = { 214,
0x06e9, 0x06e9,
0x06fd, 0x06fe,
0x07f6, 0x07f6,
+0x07fe, 0x07ff,
0x09f2, 0x09f3,
0x09fa, 0x09fb,
0x0af1, 0x0af1,
0x0b70, 0x0b70,
0x0bf3, 0x0bfa,
0x0c7f, 0x0c7f,
+0x0d4f, 0x0d4f,
0x0d79, 0x0d79,
0x0e3f, 0x0e3f,
0x0f01, 0x0f03,
@@ -10463,7 +19585,7 @@ CR_S[] = { 214,
0x2052, 0x2052,
0x207a, 0x207c,
0x208a, 0x208c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x2100, 0x2101,
0x2103, 0x2106,
0x2108, 0x2109,
@@ -10481,8 +19603,7 @@ CR_S[] = { 214,
0x218a, 0x218b,
0x2190, 0x2307,
0x230c, 0x2328,
-0x232b, 0x23fa,
-0x2400, 0x2426,
+0x232b, 0x2426,
0x2440, 0x244a,
0x249c, 0x24e9,
0x2500, 0x2767,
@@ -10493,10 +19614,8 @@ CR_S[] = { 214,
0x29dc, 0x29fb,
0x29fe, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2ce5, 0x2cea,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
@@ -10545,7 +19664,7 @@ CR_S[] = { 214,
0xfffc, 0xfffd,
0x10137, 0x1013f,
0x10179, 0x10189,
-0x1018c, 0x1018c,
+0x1018c, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fc,
@@ -10580,6 +19699,8 @@ CR_S[] = { 214,
0x1da6d, 0x1da74,
0x1da76, 0x1da83,
0x1da85, 0x1da86,
+0x1ecac, 0x1ecac,
+0x1ecb0, 0x1ecb0,
0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
@@ -10587,52 +19708,198 @@ CR_S[] = { 214,
0x1f0b1, 0x1f0bf,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
}; /* END of CR_S */
+/* PROPERTY: 'Samaritan': Script */
+static const OnigCodePoint
+CR_Samaritan[] = { 2,
+0x0800, 0x082d,
+0x0830, 0x083e,
+}; /* END of CR_Samaritan */
+
+/* PROPERTY: 'Saurashtra': Script */
+static const OnigCodePoint
+CR_Saurashtra[] = { 2,
+0xa880, 0xa8c5,
+0xa8ce, 0xa8d9,
+}; /* END of CR_Saurashtra */
+
/* PROPERTY: 'Sc': General Category */
static const OnigCodePoint
-CR_Sc[] = { 17,
+CR_Sc[] = { 19,
0x0024, 0x0024,
0x00a2, 0x00a5,
0x058f, 0x058f,
0x060b, 0x060b,
+0x07fe, 0x07ff,
0x09f2, 0x09f3,
0x09fb, 0x09fb,
0x0af1, 0x0af1,
0x0bf9, 0x0bf9,
0x0e3f, 0x0e3f,
0x17db, 0x17db,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0xa838, 0xa838,
0xfdfc, 0xfdfc,
0xfe69, 0xfe69,
0xff04, 0xff04,
0xffe0, 0xffe1,
0xffe5, 0xffe6,
+0x1ecb0, 0x1ecb0,
}; /* END of CR_Sc */
+/* PROPERTY: 'Sentence_Terminal': Binary Property */
+static const OnigCodePoint
+CR_Sentence_Terminal[] = { 74,
+0x0021, 0x0021,
+0x002e, 0x002e,
+0x003f, 0x003f,
+0x0589, 0x0589,
+0x061e, 0x061f,
+0x06d4, 0x06d4,
+0x0700, 0x0702,
+0x07f9, 0x07f9,
+0x0837, 0x0837,
+0x0839, 0x0839,
+0x083d, 0x083e,
+0x0964, 0x0965,
+0x104a, 0x104b,
+0x1362, 0x1362,
+0x1367, 0x1368,
+0x166e, 0x166e,
+0x1735, 0x1736,
+0x1803, 0x1803,
+0x1809, 0x1809,
+0x1944, 0x1945,
+0x1aa8, 0x1aab,
+0x1b5a, 0x1b5b,
+0x1b5e, 0x1b5f,
+0x1c3b, 0x1c3c,
+0x1c7e, 0x1c7f,
+0x203c, 0x203d,
+0x2047, 0x2049,
+0x2e2e, 0x2e2e,
+0x2e3c, 0x2e3c,
+0x3002, 0x3002,
+0xa4ff, 0xa4ff,
+0xa60e, 0xa60f,
+0xa6f3, 0xa6f3,
+0xa6f7, 0xa6f7,
+0xa876, 0xa877,
+0xa8ce, 0xa8cf,
+0xa92f, 0xa92f,
+0xa9c8, 0xa9c9,
+0xaa5d, 0xaa5f,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe52, 0xfe52,
+0xfe56, 0xfe57,
+0xff01, 0xff01,
+0xff0e, 0xff0e,
+0xff1f, 0xff1f,
+0xff61, 0xff61,
+0x10a56, 0x10a57,
+0x10f55, 0x10f59,
+0x11047, 0x11048,
+0x110be, 0x110c1,
+0x11141, 0x11143,
+0x111c5, 0x111c6,
+0x111cd, 0x111cd,
+0x111de, 0x111df,
+0x11238, 0x11239,
+0x1123b, 0x1123c,
+0x112a9, 0x112a9,
+0x1144b, 0x1144c,
+0x115c2, 0x115c3,
+0x115c9, 0x115d7,
+0x11641, 0x11642,
+0x1173c, 0x1173e,
+0x11a42, 0x11a43,
+0x11a9b, 0x11a9c,
+0x11c41, 0x11c42,
+0x11ef7, 0x11ef8,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b38,
+0x16b44, 0x16b44,
+0x16e98, 0x16e98,
+0x1bc9f, 0x1bc9f,
+0x1da88, 0x1da88,
+}; /* END of CR_Sentence_Terminal */
+
+/* PROPERTY: 'Sharada': Script */
+static const OnigCodePoint
+CR_Sharada[] = { 2,
+0x11180, 0x111cd,
+0x111d0, 0x111df,
+}; /* END of CR_Sharada */
+
+/* PROPERTY: 'Shavian': Script */
+static const OnigCodePoint
+CR_Shavian[] = { 1,
+0x10450, 0x1047f,
+}; /* END of CR_Shavian */
+
+/* PROPERTY: 'Siddham': Script */
+static const OnigCodePoint
+CR_Siddham[] = { 2,
+0x11580, 0x115b5,
+0x115b8, 0x115dd,
+}; /* END of CR_Siddham */
+
+/* PROPERTY: 'SignWriting': Script */
+static const OnigCodePoint
+CR_SignWriting[] = { 3,
+0x1d800, 0x1da8b,
+0x1da9b, 0x1da9f,
+0x1daa1, 0x1daaf,
+}; /* END of CR_SignWriting */
+
+/* PROPERTY: 'Sinhala': Script */
+static const OnigCodePoint
+CR_Sinhala[] = { 13,
+0x0d82, 0x0d83,
+0x0d85, 0x0d96,
+0x0d9a, 0x0db1,
+0x0db3, 0x0dbb,
+0x0dbd, 0x0dbd,
+0x0dc0, 0x0dc6,
+0x0dca, 0x0dca,
+0x0dcf, 0x0dd4,
+0x0dd6, 0x0dd6,
+0x0dd8, 0x0ddf,
+0x0de6, 0x0def,
+0x0df2, 0x0df4,
+0x111e1, 0x111f4,
+}; /* END of CR_Sinhala */
+
/* PROPERTY: 'Sk': General Category */
static const OnigCodePoint
CR_Sk[] = { 29,
@@ -10738,7 +20005,7 @@ CR_Sm[] = { 64,
/* PROPERTY: 'So': General Category */
static const OnigCodePoint
-CR_So[] = { 170,
+CR_So[] = { 174,
0x00a6, 0x00a6,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
@@ -10755,6 +20022,7 @@ CR_So[] = { 170,
0x0bf3, 0x0bf8,
0x0bfa, 0x0bfa,
0x0c7f, 0x0c7f,
+0x0d4f, 0x0d4f,
0x0d79, 0x0d79,
0x0f01, 0x0f03,
0x0f13, 0x0f13,
@@ -10803,8 +20071,7 @@ CR_So[] = { 170,
0x232b, 0x237b,
0x237d, 0x239a,
0x23b4, 0x23db,
-0x23e2, 0x23fa,
-0x2400, 0x2426,
+0x23e2, 0x2426,
0x2440, 0x244a,
0x249c, 0x24e9,
0x2500, 0x25b6,
@@ -10818,10 +20085,8 @@ CR_So[] = { 170,
0x2b45, 0x2b46,
0x2b4d, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2ce5, 0x2cea,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
@@ -10855,7 +20120,7 @@ CR_So[] = { 170,
0xfffc, 0xfffd,
0x10137, 0x1013f,
0x10179, 0x10189,
-0x1018c, 0x1018c,
+0x1018c, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fc,
@@ -10880,3349 +20145,171 @@ CR_So[] = { 170,
0x1da6d, 0x1da74,
0x1da76, 0x1da83,
0x1da85, 0x1da86,
+0x1ecac, 0x1ecac,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
0x1f0b1, 0x1f0bf,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
+0x1f260, 0x1f265,
0x1f300, 0x1f3fa,
-0x1f400, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f400, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
}; /* END of CR_So */
-/* PROPERTY: 'Z': Major Category */
+/* PROPERTY: 'Soft_Dotted': Binary Property */
static const OnigCodePoint
-CR_Z[] = { 8,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x2028, 0x2029,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Z */
+CR_Soft_Dotted[] = { 31,
+0x0069, 0x006a,
+0x012f, 0x012f,
+0x0249, 0x0249,
+0x0268, 0x0268,
+0x029d, 0x029d,
+0x02b2, 0x02b2,
+0x03f3, 0x03f3,
+0x0456, 0x0456,
+0x0458, 0x0458,
+0x1d62, 0x1d62,
+0x1d96, 0x1d96,
+0x1da4, 0x1da4,
+0x1da8, 0x1da8,
+0x1e2d, 0x1e2d,
+0x1ecb, 0x1ecb,
+0x2071, 0x2071,
+0x2148, 0x2149,
+0x2c7c, 0x2c7c,
+0x1d422, 0x1d423,
+0x1d456, 0x1d457,
+0x1d48a, 0x1d48b,
+0x1d4be, 0x1d4bf,
+0x1d4f2, 0x1d4f3,
+0x1d526, 0x1d527,
+0x1d55a, 0x1d55b,
+0x1d58e, 0x1d58f,
+0x1d5c2, 0x1d5c3,
+0x1d5f6, 0x1d5f7,
+0x1d62a, 0x1d62b,
+0x1d65e, 0x1d65f,
+0x1d692, 0x1d693,
+}; /* END of CR_Soft_Dotted */
-/* PROPERTY: 'Zl': General Category */
+/* PROPERTY: 'Sogdian': Script */
static const OnigCodePoint
-CR_Zl[] = { 1,
-0x2028, 0x2028,
-}; /* END of CR_Zl */
+CR_Sogdian[] = { 1,
+0x10f30, 0x10f59,
+}; /* END of CR_Sogdian */
-/* PROPERTY: 'Zp': General Category */
+/* PROPERTY: 'Sora_Sompeng': Script */
static const OnigCodePoint
-CR_Zp[] = { 1,
-0x2029, 0x2029,
-}; /* END of CR_Zp */
+CR_Sora_Sompeng[] = { 2,
+0x110d0, 0x110e8,
+0x110f0, 0x110f9,
+}; /* END of CR_Sora_Sompeng */
-/* PROPERTY: 'Zs': General Category */
+/* PROPERTY: 'Soyombo': Script */
static const OnigCodePoint
-CR_Zs[] = { 7,
-0x0020, 0x0020,
-0x00a0, 0x00a0,
-0x1680, 0x1680,
-0x2000, 0x200a,
-0x202f, 0x202f,
-0x205f, 0x205f,
-0x3000, 0x3000,
-}; /* END of CR_Zs */
+CR_Soyombo[] = { 2,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
+}; /* END of CR_Soyombo */
-/* PROPERTY: 'Math': Derived Property */
+/* PROPERTY: 'Sundanese': Script */
static const OnigCodePoint
-CR_Math[] = { 138,
-0x002b, 0x002b,
-0x003c, 0x003e,
-0x005e, 0x005e,
-0x007c, 0x007c,
-0x007e, 0x007e,
-0x00ac, 0x00ac,
-0x00b1, 0x00b1,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x03d0, 0x03d2,
-0x03d5, 0x03d5,
-0x03f0, 0x03f1,
-0x03f4, 0x03f6,
-0x0606, 0x0608,
-0x2016, 0x2016,
-0x2032, 0x2034,
-0x2040, 0x2040,
-0x2044, 0x2044,
-0x2052, 0x2052,
-0x2061, 0x2064,
-0x207a, 0x207e,
-0x208a, 0x208e,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20e6,
-0x20eb, 0x20ef,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2128, 0x2129,
-0x212c, 0x212d,
-0x212f, 0x2131,
-0x2133, 0x2138,
-0x213c, 0x2149,
-0x214b, 0x214b,
-0x2190, 0x21a7,
-0x21a9, 0x21ae,
-0x21b0, 0x21b1,
-0x21b6, 0x21b7,
-0x21bc, 0x21db,
-0x21dd, 0x21dd,
-0x21e4, 0x21e5,
-0x21f4, 0x22ff,
-0x2308, 0x230b,
-0x2320, 0x2321,
-0x237c, 0x237c,
-0x239b, 0x23b5,
-0x23b7, 0x23b7,
-0x23d0, 0x23d0,
-0x23dc, 0x23e2,
-0x25a0, 0x25a1,
-0x25ae, 0x25b7,
-0x25bc, 0x25c1,
-0x25c6, 0x25c7,
-0x25ca, 0x25cb,
-0x25cf, 0x25d3,
-0x25e2, 0x25e2,
-0x25e4, 0x25e4,
-0x25e7, 0x25ec,
-0x25f8, 0x25ff,
-0x2605, 0x2606,
-0x2640, 0x2640,
-0x2642, 0x2642,
-0x2660, 0x2663,
-0x266d, 0x266f,
-0x27c0, 0x27ff,
-0x2900, 0x2aff,
-0x2b30, 0x2b44,
-0x2b47, 0x2b4c,
-0xfb29, 0xfb29,
-0xfe61, 0xfe66,
-0xfe68, 0xfe68,
-0xff0b, 0xff0b,
-0xff1c, 0xff1e,
-0xff3c, 0xff3c,
-0xff3e, 0xff3e,
-0xff5c, 0xff5c,
-0xff5e, 0xff5e,
-0xffe2, 0xffe2,
-0xffe9, 0xffec,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Math */
-
-/* PROPERTY: 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
-
-/* PROPERTY: 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
+CR_Sundanese[] = { 2,
+0x1b80, 0x1bbf,
+0x1cc0, 0x1cc7,
+}; /* END of CR_Sundanese */
-/* PROPERTY: 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+/* PROPERTY: 'Syloti_Nagri': Script */
+static const OnigCodePoint
+CR_Syloti_Nagri[] = { 1,
+0xa800, 0xa82b,
+}; /* END of CR_Syloti_Nagri */
-/* PROPERTY: 'Cased': Derived Property */
+/* PROPERTY: 'Syriac': Script */
static const OnigCodePoint
-CR_Cased[] = { 131,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x01ba,
-0x01bc, 0x01bf,
-0x01c4, 0x0293,
-0x0295, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x212d,
-0x212f, 0x2134,
-0x2139, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69d,
-0xa722, 0xa787,
-0xa78b, 0xa78e,
-0xa790, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f8, 0xa7fa,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Cased */
+CR_Syriac[] = { 4,
+0x0700, 0x070d,
+0x070f, 0x074a,
+0x074d, 0x074f,
+0x0860, 0x086a,
+}; /* END of CR_Syriac */
-/* PROPERTY: 'Case_Ignorable': Derived Property */
+/* PROPERTY: 'Tagalog': Script */
static const OnigCodePoint
-CR_Case_Ignorable[] = { 346,
-0x0027, 0x0027,
-0x002e, 0x002e,
-0x003a, 0x003a,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00ad, 0x00ad,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x036f,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0387, 0x0387,
-0x0483, 0x0489,
-0x0559, 0x0559,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05f4, 0x05f4,
-0x0600, 0x0605,
-0x0610, 0x061a,
-0x061c, 0x061c,
-0x0640, 0x0640,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dd,
-0x06df, 0x06e8,
-0x06ea, 0x06ed,
-0x070f, 0x070f,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x07fa, 0x07fa,
-0x0816, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0971, 0x0971,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3f, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b56,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e46, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x10fc, 0x10fc,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17d7, 0x17d7,
-0x17dd, 0x17dd,
-0x180b, 0x180e,
-0x1843, 0x1843,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1df5,
-0x1dfc, 0x1dff,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x200b, 0x200f,
-0x2018, 0x2019,
-0x2024, 0x2024,
-0x2027, 0x2027,
-0x202a, 0x202e,
-0x2060, 0x2064,
-0x2066, 0x206f,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20f0,
-0x2c7c, 0x2c7d,
-0x2cef, 0x2cf1,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x2e2f, 0x2e2f,
-0x3005, 0x3005,
-0x302a, 0x302d,
-0x3031, 0x3035,
-0x303b, 0x303b,
-0x3099, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa4f8, 0xa4fd,
-0xa60c, 0xa60c,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa700, 0xa721,
-0xa770, 0xa770,
-0xa788, 0xa78a,
-0xa7f8, 0xa7f9,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9cf, 0xa9cf,
-0xa9e5, 0xa9e6,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa70, 0xaa70,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaadd, 0xaadd,
-0xaaec, 0xaaed,
-0xaaf3, 0xaaf4,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfbb2, 0xfbc1,
-0xfe00, 0xfe0f,
-0xfe13, 0xfe13,
-0xfe20, 0xfe2f,
-0xfe52, 0xfe52,
-0xfe55, 0xfe55,
-0xfeff, 0xfeff,
-0xff07, 0xff07,
-0xff0e, 0xff0e,
-0xff1a, 0xff1a,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0xfff9, 0xfffb,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x110bd, 0x110bd,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x11340, 0x11340,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16b40, 0x16b43,
-0x16f8f, 0x16f9f,
-0x1bc9d, 0x1bc9e,
-0x1bca0, 0x1bca3,
-0x1d167, 0x1d169,
-0x1d173, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0x1f3fb, 0x1f3ff,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Case_Ignorable */
+CR_Tagalog[] = { 2,
+0x1700, 0x170c,
+0x170e, 0x1714,
+}; /* END of CR_Tagalog */
-/* PROPERTY: 'Changes_When_Lowercased': Derived Property */
+/* PROPERTY: 'Tagbanwa': Script */
static const OnigCodePoint
-CR_Changes_When_Lowercased[] = { 588,
-0x0041, 0x005a,
-0x00c0, 0x00d6,
-0x00d8, 0x00de,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x014a, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c5,
-0x01c7, 0x01c8,
-0x01ca, 0x01cb,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f2,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03cf, 0x03cf,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f4, 0x03f4,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1f88, 0x1f8f,
-0x1f98, 0x1f9f,
-0x1fa8, 0x1faf,
-0x1fb8, 0x1fbc,
-0x1fc8, 0x1fcc,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff8, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x2160, 0x216f,
-0x2183, 0x2183,
-0x24b6, 0x24cf,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Lowercased */
+CR_Tagbanwa[] = { 3,
+0x1760, 0x176c,
+0x176e, 0x1770,
+0x1772, 0x1773,
+}; /* END of CR_Tagbanwa */
-/* PROPERTY: 'Changes_When_Uppercased': Derived Property */
+/* PROPERTY: 'Tai_Le': Script */
static const OnigCodePoint
-CR_Changes_When_Uppercased[] = { 605,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c5, 0x01c6,
-0x01c8, 0x01c9,
-0x01cb, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f0,
-0x01f2, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbc, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fcc, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x1ffc, 0x1ffc,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Uppercased */
+CR_Tai_Le[] = { 2,
+0x1950, 0x196d,
+0x1970, 0x1974,
+}; /* END of CR_Tai_Le */
-/* PROPERTY: 'Changes_When_Titlecased': Derived Property */
+/* PROPERTY: 'Tai_Tham': Script */
static const OnigCodePoint
-CR_Changes_When_Titlecased[] = { 606,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00df, 0x00f6,
-0x00f8, 0x00ff,
-0x0101, 0x0101,
-0x0103, 0x0103,
-0x0105, 0x0105,
-0x0107, 0x0107,
-0x0109, 0x0109,
-0x010b, 0x010b,
-0x010d, 0x010d,
-0x010f, 0x010f,
-0x0111, 0x0111,
-0x0113, 0x0113,
-0x0115, 0x0115,
-0x0117, 0x0117,
-0x0119, 0x0119,
-0x011b, 0x011b,
-0x011d, 0x011d,
-0x011f, 0x011f,
-0x0121, 0x0121,
-0x0123, 0x0123,
-0x0125, 0x0125,
-0x0127, 0x0127,
-0x0129, 0x0129,
-0x012b, 0x012b,
-0x012d, 0x012d,
-0x012f, 0x012f,
-0x0131, 0x0131,
-0x0133, 0x0133,
-0x0135, 0x0135,
-0x0137, 0x0137,
-0x013a, 0x013a,
-0x013c, 0x013c,
-0x013e, 0x013e,
-0x0140, 0x0140,
-0x0142, 0x0142,
-0x0144, 0x0144,
-0x0146, 0x0146,
-0x0148, 0x0149,
-0x014b, 0x014b,
-0x014d, 0x014d,
-0x014f, 0x014f,
-0x0151, 0x0151,
-0x0153, 0x0153,
-0x0155, 0x0155,
-0x0157, 0x0157,
-0x0159, 0x0159,
-0x015b, 0x015b,
-0x015d, 0x015d,
-0x015f, 0x015f,
-0x0161, 0x0161,
-0x0163, 0x0163,
-0x0165, 0x0165,
-0x0167, 0x0167,
-0x0169, 0x0169,
-0x016b, 0x016b,
-0x016d, 0x016d,
-0x016f, 0x016f,
-0x0171, 0x0171,
-0x0173, 0x0173,
-0x0175, 0x0175,
-0x0177, 0x0177,
-0x017a, 0x017a,
-0x017c, 0x017c,
-0x017e, 0x0180,
-0x0183, 0x0183,
-0x0185, 0x0185,
-0x0188, 0x0188,
-0x018c, 0x018c,
-0x0192, 0x0192,
-0x0195, 0x0195,
-0x0199, 0x019a,
-0x019e, 0x019e,
-0x01a1, 0x01a1,
-0x01a3, 0x01a3,
-0x01a5, 0x01a5,
-0x01a8, 0x01a8,
-0x01ad, 0x01ad,
-0x01b0, 0x01b0,
-0x01b4, 0x01b4,
-0x01b6, 0x01b6,
-0x01b9, 0x01b9,
-0x01bd, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x01c4,
-0x01c6, 0x01c7,
-0x01c9, 0x01ca,
-0x01cc, 0x01cc,
-0x01ce, 0x01ce,
-0x01d0, 0x01d0,
-0x01d2, 0x01d2,
-0x01d4, 0x01d4,
-0x01d6, 0x01d6,
-0x01d8, 0x01d8,
-0x01da, 0x01da,
-0x01dc, 0x01dd,
-0x01df, 0x01df,
-0x01e1, 0x01e1,
-0x01e3, 0x01e3,
-0x01e5, 0x01e5,
-0x01e7, 0x01e7,
-0x01e9, 0x01e9,
-0x01eb, 0x01eb,
-0x01ed, 0x01ed,
-0x01ef, 0x01f1,
-0x01f3, 0x01f3,
-0x01f5, 0x01f5,
-0x01f9, 0x01f9,
-0x01fb, 0x01fb,
-0x01fd, 0x01fd,
-0x01ff, 0x01ff,
-0x0201, 0x0201,
-0x0203, 0x0203,
-0x0205, 0x0205,
-0x0207, 0x0207,
-0x0209, 0x0209,
-0x020b, 0x020b,
-0x020d, 0x020d,
-0x020f, 0x020f,
-0x0211, 0x0211,
-0x0213, 0x0213,
-0x0215, 0x0215,
-0x0217, 0x0217,
-0x0219, 0x0219,
-0x021b, 0x021b,
-0x021d, 0x021d,
-0x021f, 0x021f,
-0x0223, 0x0223,
-0x0225, 0x0225,
-0x0227, 0x0227,
-0x0229, 0x0229,
-0x022b, 0x022b,
-0x022d, 0x022d,
-0x022f, 0x022f,
-0x0231, 0x0231,
-0x0233, 0x0233,
-0x023c, 0x023c,
-0x023f, 0x0240,
-0x0242, 0x0242,
-0x0247, 0x0247,
-0x0249, 0x0249,
-0x024b, 0x024b,
-0x024d, 0x024d,
-0x024f, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0371, 0x0371,
-0x0373, 0x0373,
-0x0377, 0x0377,
-0x037b, 0x037d,
-0x0390, 0x0390,
-0x03ac, 0x03ce,
-0x03d0, 0x03d1,
-0x03d5, 0x03d7,
-0x03d9, 0x03d9,
-0x03db, 0x03db,
-0x03dd, 0x03dd,
-0x03df, 0x03df,
-0x03e1, 0x03e1,
-0x03e3, 0x03e3,
-0x03e5, 0x03e5,
-0x03e7, 0x03e7,
-0x03e9, 0x03e9,
-0x03eb, 0x03eb,
-0x03ed, 0x03ed,
-0x03ef, 0x03f3,
-0x03f5, 0x03f5,
-0x03f8, 0x03f8,
-0x03fb, 0x03fb,
-0x0430, 0x045f,
-0x0461, 0x0461,
-0x0463, 0x0463,
-0x0465, 0x0465,
-0x0467, 0x0467,
-0x0469, 0x0469,
-0x046b, 0x046b,
-0x046d, 0x046d,
-0x046f, 0x046f,
-0x0471, 0x0471,
-0x0473, 0x0473,
-0x0475, 0x0475,
-0x0477, 0x0477,
-0x0479, 0x0479,
-0x047b, 0x047b,
-0x047d, 0x047d,
-0x047f, 0x047f,
-0x0481, 0x0481,
-0x048b, 0x048b,
-0x048d, 0x048d,
-0x048f, 0x048f,
-0x0491, 0x0491,
-0x0493, 0x0493,
-0x0495, 0x0495,
-0x0497, 0x0497,
-0x0499, 0x0499,
-0x049b, 0x049b,
-0x049d, 0x049d,
-0x049f, 0x049f,
-0x04a1, 0x04a1,
-0x04a3, 0x04a3,
-0x04a5, 0x04a5,
-0x04a7, 0x04a7,
-0x04a9, 0x04a9,
-0x04ab, 0x04ab,
-0x04ad, 0x04ad,
-0x04af, 0x04af,
-0x04b1, 0x04b1,
-0x04b3, 0x04b3,
-0x04b5, 0x04b5,
-0x04b7, 0x04b7,
-0x04b9, 0x04b9,
-0x04bb, 0x04bb,
-0x04bd, 0x04bd,
-0x04bf, 0x04bf,
-0x04c2, 0x04c2,
-0x04c4, 0x04c4,
-0x04c6, 0x04c6,
-0x04c8, 0x04c8,
-0x04ca, 0x04ca,
-0x04cc, 0x04cc,
-0x04ce, 0x04cf,
-0x04d1, 0x04d1,
-0x04d3, 0x04d3,
-0x04d5, 0x04d5,
-0x04d7, 0x04d7,
-0x04d9, 0x04d9,
-0x04db, 0x04db,
-0x04dd, 0x04dd,
-0x04df, 0x04df,
-0x04e1, 0x04e1,
-0x04e3, 0x04e3,
-0x04e5, 0x04e5,
-0x04e7, 0x04e7,
-0x04e9, 0x04e9,
-0x04eb, 0x04eb,
-0x04ed, 0x04ed,
-0x04ef, 0x04ef,
-0x04f1, 0x04f1,
-0x04f3, 0x04f3,
-0x04f5, 0x04f5,
-0x04f7, 0x04f7,
-0x04f9, 0x04f9,
-0x04fb, 0x04fb,
-0x04fd, 0x04fd,
-0x04ff, 0x04ff,
-0x0501, 0x0501,
-0x0503, 0x0503,
-0x0505, 0x0505,
-0x0507, 0x0507,
-0x0509, 0x0509,
-0x050b, 0x050b,
-0x050d, 0x050d,
-0x050f, 0x050f,
-0x0511, 0x0511,
-0x0513, 0x0513,
-0x0515, 0x0515,
-0x0517, 0x0517,
-0x0519, 0x0519,
-0x051b, 0x051b,
-0x051d, 0x051d,
-0x051f, 0x051f,
-0x0521, 0x0521,
-0x0523, 0x0523,
-0x0525, 0x0525,
-0x0527, 0x0527,
-0x0529, 0x0529,
-0x052b, 0x052b,
-0x052d, 0x052d,
-0x052f, 0x052f,
-0x0561, 0x0587,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e01, 0x1e01,
-0x1e03, 0x1e03,
-0x1e05, 0x1e05,
-0x1e07, 0x1e07,
-0x1e09, 0x1e09,
-0x1e0b, 0x1e0b,
-0x1e0d, 0x1e0d,
-0x1e0f, 0x1e0f,
-0x1e11, 0x1e11,
-0x1e13, 0x1e13,
-0x1e15, 0x1e15,
-0x1e17, 0x1e17,
-0x1e19, 0x1e19,
-0x1e1b, 0x1e1b,
-0x1e1d, 0x1e1d,
-0x1e1f, 0x1e1f,
-0x1e21, 0x1e21,
-0x1e23, 0x1e23,
-0x1e25, 0x1e25,
-0x1e27, 0x1e27,
-0x1e29, 0x1e29,
-0x1e2b, 0x1e2b,
-0x1e2d, 0x1e2d,
-0x1e2f, 0x1e2f,
-0x1e31, 0x1e31,
-0x1e33, 0x1e33,
-0x1e35, 0x1e35,
-0x1e37, 0x1e37,
-0x1e39, 0x1e39,
-0x1e3b, 0x1e3b,
-0x1e3d, 0x1e3d,
-0x1e3f, 0x1e3f,
-0x1e41, 0x1e41,
-0x1e43, 0x1e43,
-0x1e45, 0x1e45,
-0x1e47, 0x1e47,
-0x1e49, 0x1e49,
-0x1e4b, 0x1e4b,
-0x1e4d, 0x1e4d,
-0x1e4f, 0x1e4f,
-0x1e51, 0x1e51,
-0x1e53, 0x1e53,
-0x1e55, 0x1e55,
-0x1e57, 0x1e57,
-0x1e59, 0x1e59,
-0x1e5b, 0x1e5b,
-0x1e5d, 0x1e5d,
-0x1e5f, 0x1e5f,
-0x1e61, 0x1e61,
-0x1e63, 0x1e63,
-0x1e65, 0x1e65,
-0x1e67, 0x1e67,
-0x1e69, 0x1e69,
-0x1e6b, 0x1e6b,
-0x1e6d, 0x1e6d,
-0x1e6f, 0x1e6f,
-0x1e71, 0x1e71,
-0x1e73, 0x1e73,
-0x1e75, 0x1e75,
-0x1e77, 0x1e77,
-0x1e79, 0x1e79,
-0x1e7b, 0x1e7b,
-0x1e7d, 0x1e7d,
-0x1e7f, 0x1e7f,
-0x1e81, 0x1e81,
-0x1e83, 0x1e83,
-0x1e85, 0x1e85,
-0x1e87, 0x1e87,
-0x1e89, 0x1e89,
-0x1e8b, 0x1e8b,
-0x1e8d, 0x1e8d,
-0x1e8f, 0x1e8f,
-0x1e91, 0x1e91,
-0x1e93, 0x1e93,
-0x1e95, 0x1e9b,
-0x1ea1, 0x1ea1,
-0x1ea3, 0x1ea3,
-0x1ea5, 0x1ea5,
-0x1ea7, 0x1ea7,
-0x1ea9, 0x1ea9,
-0x1eab, 0x1eab,
-0x1ead, 0x1ead,
-0x1eaf, 0x1eaf,
-0x1eb1, 0x1eb1,
-0x1eb3, 0x1eb3,
-0x1eb5, 0x1eb5,
-0x1eb7, 0x1eb7,
-0x1eb9, 0x1eb9,
-0x1ebb, 0x1ebb,
-0x1ebd, 0x1ebd,
-0x1ebf, 0x1ebf,
-0x1ec1, 0x1ec1,
-0x1ec3, 0x1ec3,
-0x1ec5, 0x1ec5,
-0x1ec7, 0x1ec7,
-0x1ec9, 0x1ec9,
-0x1ecb, 0x1ecb,
-0x1ecd, 0x1ecd,
-0x1ecf, 0x1ecf,
-0x1ed1, 0x1ed1,
-0x1ed3, 0x1ed3,
-0x1ed5, 0x1ed5,
-0x1ed7, 0x1ed7,
-0x1ed9, 0x1ed9,
-0x1edb, 0x1edb,
-0x1edd, 0x1edd,
-0x1edf, 0x1edf,
-0x1ee1, 0x1ee1,
-0x1ee3, 0x1ee3,
-0x1ee5, 0x1ee5,
-0x1ee7, 0x1ee7,
-0x1ee9, 0x1ee9,
-0x1eeb, 0x1eeb,
-0x1eed, 0x1eed,
-0x1eef, 0x1eef,
-0x1ef1, 0x1ef1,
-0x1ef3, 0x1ef3,
-0x1ef5, 0x1ef5,
-0x1ef7, 0x1ef7,
-0x1ef9, 0x1ef9,
-0x1efb, 0x1efb,
-0x1efd, 0x1efd,
-0x1eff, 0x1f07,
-0x1f10, 0x1f15,
-0x1f20, 0x1f27,
-0x1f30, 0x1f37,
-0x1f40, 0x1f45,
-0x1f50, 0x1f57,
-0x1f60, 0x1f67,
-0x1f70, 0x1f7d,
-0x1f80, 0x1f87,
-0x1f90, 0x1f97,
-0x1fa0, 0x1fa7,
-0x1fb0, 0x1fb4,
-0x1fb6, 0x1fb7,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fc7,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fd7,
-0x1fe0, 0x1fe7,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ff7,
-0x214e, 0x214e,
-0x2170, 0x217f,
-0x2184, 0x2184,
-0x24d0, 0x24e9,
-0x2c30, 0x2c5e,
-0x2c61, 0x2c61,
-0x2c65, 0x2c66,
-0x2c68, 0x2c68,
-0x2c6a, 0x2c6a,
-0x2c6c, 0x2c6c,
-0x2c73, 0x2c73,
-0x2c76, 0x2c76,
-0x2c81, 0x2c81,
-0x2c83, 0x2c83,
-0x2c85, 0x2c85,
-0x2c87, 0x2c87,
-0x2c89, 0x2c89,
-0x2c8b, 0x2c8b,
-0x2c8d, 0x2c8d,
-0x2c8f, 0x2c8f,
-0x2c91, 0x2c91,
-0x2c93, 0x2c93,
-0x2c95, 0x2c95,
-0x2c97, 0x2c97,
-0x2c99, 0x2c99,
-0x2c9b, 0x2c9b,
-0x2c9d, 0x2c9d,
-0x2c9f, 0x2c9f,
-0x2ca1, 0x2ca1,
-0x2ca3, 0x2ca3,
-0x2ca5, 0x2ca5,
-0x2ca7, 0x2ca7,
-0x2ca9, 0x2ca9,
-0x2cab, 0x2cab,
-0x2cad, 0x2cad,
-0x2caf, 0x2caf,
-0x2cb1, 0x2cb1,
-0x2cb3, 0x2cb3,
-0x2cb5, 0x2cb5,
-0x2cb7, 0x2cb7,
-0x2cb9, 0x2cb9,
-0x2cbb, 0x2cbb,
-0x2cbd, 0x2cbd,
-0x2cbf, 0x2cbf,
-0x2cc1, 0x2cc1,
-0x2cc3, 0x2cc3,
-0x2cc5, 0x2cc5,
-0x2cc7, 0x2cc7,
-0x2cc9, 0x2cc9,
-0x2ccb, 0x2ccb,
-0x2ccd, 0x2ccd,
-0x2ccf, 0x2ccf,
-0x2cd1, 0x2cd1,
-0x2cd3, 0x2cd3,
-0x2cd5, 0x2cd5,
-0x2cd7, 0x2cd7,
-0x2cd9, 0x2cd9,
-0x2cdb, 0x2cdb,
-0x2cdd, 0x2cdd,
-0x2cdf, 0x2cdf,
-0x2ce1, 0x2ce1,
-0x2ce3, 0x2ce3,
-0x2cec, 0x2cec,
-0x2cee, 0x2cee,
-0x2cf3, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa641, 0xa641,
-0xa643, 0xa643,
-0xa645, 0xa645,
-0xa647, 0xa647,
-0xa649, 0xa649,
-0xa64b, 0xa64b,
-0xa64d, 0xa64d,
-0xa64f, 0xa64f,
-0xa651, 0xa651,
-0xa653, 0xa653,
-0xa655, 0xa655,
-0xa657, 0xa657,
-0xa659, 0xa659,
-0xa65b, 0xa65b,
-0xa65d, 0xa65d,
-0xa65f, 0xa65f,
-0xa661, 0xa661,
-0xa663, 0xa663,
-0xa665, 0xa665,
-0xa667, 0xa667,
-0xa669, 0xa669,
-0xa66b, 0xa66b,
-0xa66d, 0xa66d,
-0xa681, 0xa681,
-0xa683, 0xa683,
-0xa685, 0xa685,
-0xa687, 0xa687,
-0xa689, 0xa689,
-0xa68b, 0xa68b,
-0xa68d, 0xa68d,
-0xa68f, 0xa68f,
-0xa691, 0xa691,
-0xa693, 0xa693,
-0xa695, 0xa695,
-0xa697, 0xa697,
-0xa699, 0xa699,
-0xa69b, 0xa69b,
-0xa723, 0xa723,
-0xa725, 0xa725,
-0xa727, 0xa727,
-0xa729, 0xa729,
-0xa72b, 0xa72b,
-0xa72d, 0xa72d,
-0xa72f, 0xa72f,
-0xa733, 0xa733,
-0xa735, 0xa735,
-0xa737, 0xa737,
-0xa739, 0xa739,
-0xa73b, 0xa73b,
-0xa73d, 0xa73d,
-0xa73f, 0xa73f,
-0xa741, 0xa741,
-0xa743, 0xa743,
-0xa745, 0xa745,
-0xa747, 0xa747,
-0xa749, 0xa749,
-0xa74b, 0xa74b,
-0xa74d, 0xa74d,
-0xa74f, 0xa74f,
-0xa751, 0xa751,
-0xa753, 0xa753,
-0xa755, 0xa755,
-0xa757, 0xa757,
-0xa759, 0xa759,
-0xa75b, 0xa75b,
-0xa75d, 0xa75d,
-0xa75f, 0xa75f,
-0xa761, 0xa761,
-0xa763, 0xa763,
-0xa765, 0xa765,
-0xa767, 0xa767,
-0xa769, 0xa769,
-0xa76b, 0xa76b,
-0xa76d, 0xa76d,
-0xa76f, 0xa76f,
-0xa77a, 0xa77a,
-0xa77c, 0xa77c,
-0xa77f, 0xa77f,
-0xa781, 0xa781,
-0xa783, 0xa783,
-0xa785, 0xa785,
-0xa787, 0xa787,
-0xa78c, 0xa78c,
-0xa791, 0xa791,
-0xa793, 0xa793,
-0xa797, 0xa797,
-0xa799, 0xa799,
-0xa79b, 0xa79b,
-0xa79d, 0xa79d,
-0xa79f, 0xa79f,
-0xa7a1, 0xa7a1,
-0xa7a3, 0xa7a3,
-0xa7a5, 0xa7a5,
-0xa7a7, 0xa7a7,
-0xa7a9, 0xa7a9,
-0xa7b5, 0xa7b5,
-0xa7b7, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff41, 0xff5a,
-0x10428, 0x1044f,
-0x10cc0, 0x10cf2,
-0x118c0, 0x118df,
-}; /* END of CR_Changes_When_Titlecased */
+CR_Tai_Tham[] = { 5,
+0x1a20, 0x1a5e,
+0x1a60, 0x1a7c,
+0x1a7f, 0x1a89,
+0x1a90, 0x1a99,
+0x1aa0, 0x1aad,
+}; /* END of CR_Tai_Tham */
-/* PROPERTY: 'Changes_When_Casefolded': Derived Property */
+/* PROPERTY: 'Tai_Viet': Script */
static const OnigCodePoint
-CR_Changes_When_Casefolded[] = { 600,
-0x0041, 0x005a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00df,
-0x0100, 0x0100,
-0x0102, 0x0102,
-0x0104, 0x0104,
-0x0106, 0x0106,
-0x0108, 0x0108,
-0x010a, 0x010a,
-0x010c, 0x010c,
-0x010e, 0x010e,
-0x0110, 0x0110,
-0x0112, 0x0112,
-0x0114, 0x0114,
-0x0116, 0x0116,
-0x0118, 0x0118,
-0x011a, 0x011a,
-0x011c, 0x011c,
-0x011e, 0x011e,
-0x0120, 0x0120,
-0x0122, 0x0122,
-0x0124, 0x0124,
-0x0126, 0x0126,
-0x0128, 0x0128,
-0x012a, 0x012a,
-0x012c, 0x012c,
-0x012e, 0x012e,
-0x0130, 0x0130,
-0x0132, 0x0132,
-0x0134, 0x0134,
-0x0136, 0x0136,
-0x0139, 0x0139,
-0x013b, 0x013b,
-0x013d, 0x013d,
-0x013f, 0x013f,
-0x0141, 0x0141,
-0x0143, 0x0143,
-0x0145, 0x0145,
-0x0147, 0x0147,
-0x0149, 0x014a,
-0x014c, 0x014c,
-0x014e, 0x014e,
-0x0150, 0x0150,
-0x0152, 0x0152,
-0x0154, 0x0154,
-0x0156, 0x0156,
-0x0158, 0x0158,
-0x015a, 0x015a,
-0x015c, 0x015c,
-0x015e, 0x015e,
-0x0160, 0x0160,
-0x0162, 0x0162,
-0x0164, 0x0164,
-0x0166, 0x0166,
-0x0168, 0x0168,
-0x016a, 0x016a,
-0x016c, 0x016c,
-0x016e, 0x016e,
-0x0170, 0x0170,
-0x0172, 0x0172,
-0x0174, 0x0174,
-0x0176, 0x0176,
-0x0178, 0x0179,
-0x017b, 0x017b,
-0x017d, 0x017d,
-0x017f, 0x017f,
-0x0181, 0x0182,
-0x0184, 0x0184,
-0x0186, 0x0187,
-0x0189, 0x018b,
-0x018e, 0x0191,
-0x0193, 0x0194,
-0x0196, 0x0198,
-0x019c, 0x019d,
-0x019f, 0x01a0,
-0x01a2, 0x01a2,
-0x01a4, 0x01a4,
-0x01a6, 0x01a7,
-0x01a9, 0x01a9,
-0x01ac, 0x01ac,
-0x01ae, 0x01af,
-0x01b1, 0x01b3,
-0x01b5, 0x01b5,
-0x01b7, 0x01b8,
-0x01bc, 0x01bc,
-0x01c4, 0x01c5,
-0x01c7, 0x01c8,
-0x01ca, 0x01cb,
-0x01cd, 0x01cd,
-0x01cf, 0x01cf,
-0x01d1, 0x01d1,
-0x01d3, 0x01d3,
-0x01d5, 0x01d5,
-0x01d7, 0x01d7,
-0x01d9, 0x01d9,
-0x01db, 0x01db,
-0x01de, 0x01de,
-0x01e0, 0x01e0,
-0x01e2, 0x01e2,
-0x01e4, 0x01e4,
-0x01e6, 0x01e6,
-0x01e8, 0x01e8,
-0x01ea, 0x01ea,
-0x01ec, 0x01ec,
-0x01ee, 0x01ee,
-0x01f1, 0x01f2,
-0x01f4, 0x01f4,
-0x01f6, 0x01f8,
-0x01fa, 0x01fa,
-0x01fc, 0x01fc,
-0x01fe, 0x01fe,
-0x0200, 0x0200,
-0x0202, 0x0202,
-0x0204, 0x0204,
-0x0206, 0x0206,
-0x0208, 0x0208,
-0x020a, 0x020a,
-0x020c, 0x020c,
-0x020e, 0x020e,
-0x0210, 0x0210,
-0x0212, 0x0212,
-0x0214, 0x0214,
-0x0216, 0x0216,
-0x0218, 0x0218,
-0x021a, 0x021a,
-0x021c, 0x021c,
-0x021e, 0x021e,
-0x0220, 0x0220,
-0x0222, 0x0222,
-0x0224, 0x0224,
-0x0226, 0x0226,
-0x0228, 0x0228,
-0x022a, 0x022a,
-0x022c, 0x022c,
-0x022e, 0x022e,
-0x0230, 0x0230,
-0x0232, 0x0232,
-0x023a, 0x023b,
-0x023d, 0x023e,
-0x0241, 0x0241,
-0x0243, 0x0246,
-0x0248, 0x0248,
-0x024a, 0x024a,
-0x024c, 0x024c,
-0x024e, 0x024e,
-0x0345, 0x0345,
-0x0370, 0x0370,
-0x0372, 0x0372,
-0x0376, 0x0376,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x038f,
-0x0391, 0x03a1,
-0x03a3, 0x03ab,
-0x03c2, 0x03c2,
-0x03cf, 0x03d1,
-0x03d5, 0x03d6,
-0x03d8, 0x03d8,
-0x03da, 0x03da,
-0x03dc, 0x03dc,
-0x03de, 0x03de,
-0x03e0, 0x03e0,
-0x03e2, 0x03e2,
-0x03e4, 0x03e4,
-0x03e6, 0x03e6,
-0x03e8, 0x03e8,
-0x03ea, 0x03ea,
-0x03ec, 0x03ec,
-0x03ee, 0x03ee,
-0x03f0, 0x03f1,
-0x03f4, 0x03f5,
-0x03f7, 0x03f7,
-0x03f9, 0x03fa,
-0x03fd, 0x042f,
-0x0460, 0x0460,
-0x0462, 0x0462,
-0x0464, 0x0464,
-0x0466, 0x0466,
-0x0468, 0x0468,
-0x046a, 0x046a,
-0x046c, 0x046c,
-0x046e, 0x046e,
-0x0470, 0x0470,
-0x0472, 0x0472,
-0x0474, 0x0474,
-0x0476, 0x0476,
-0x0478, 0x0478,
-0x047a, 0x047a,
-0x047c, 0x047c,
-0x047e, 0x047e,
-0x0480, 0x0480,
-0x048a, 0x048a,
-0x048c, 0x048c,
-0x048e, 0x048e,
-0x0490, 0x0490,
-0x0492, 0x0492,
-0x0494, 0x0494,
-0x0496, 0x0496,
-0x0498, 0x0498,
-0x049a, 0x049a,
-0x049c, 0x049c,
-0x049e, 0x049e,
-0x04a0, 0x04a0,
-0x04a2, 0x04a2,
-0x04a4, 0x04a4,
-0x04a6, 0x04a6,
-0x04a8, 0x04a8,
-0x04aa, 0x04aa,
-0x04ac, 0x04ac,
-0x04ae, 0x04ae,
-0x04b0, 0x04b0,
-0x04b2, 0x04b2,
-0x04b4, 0x04b4,
-0x04b6, 0x04b6,
-0x04b8, 0x04b8,
-0x04ba, 0x04ba,
-0x04bc, 0x04bc,
-0x04be, 0x04be,
-0x04c0, 0x04c1,
-0x04c3, 0x04c3,
-0x04c5, 0x04c5,
-0x04c7, 0x04c7,
-0x04c9, 0x04c9,
-0x04cb, 0x04cb,
-0x04cd, 0x04cd,
-0x04d0, 0x04d0,
-0x04d2, 0x04d2,
-0x04d4, 0x04d4,
-0x04d6, 0x04d6,
-0x04d8, 0x04d8,
-0x04da, 0x04da,
-0x04dc, 0x04dc,
-0x04de, 0x04de,
-0x04e0, 0x04e0,
-0x04e2, 0x04e2,
-0x04e4, 0x04e4,
-0x04e6, 0x04e6,
-0x04e8, 0x04e8,
-0x04ea, 0x04ea,
-0x04ec, 0x04ec,
-0x04ee, 0x04ee,
-0x04f0, 0x04f0,
-0x04f2, 0x04f2,
-0x04f4, 0x04f4,
-0x04f6, 0x04f6,
-0x04f8, 0x04f8,
-0x04fa, 0x04fa,
-0x04fc, 0x04fc,
-0x04fe, 0x04fe,
-0x0500, 0x0500,
-0x0502, 0x0502,
-0x0504, 0x0504,
-0x0506, 0x0506,
-0x0508, 0x0508,
-0x050a, 0x050a,
-0x050c, 0x050c,
-0x050e, 0x050e,
-0x0510, 0x0510,
-0x0512, 0x0512,
-0x0514, 0x0514,
-0x0516, 0x0516,
-0x0518, 0x0518,
-0x051a, 0x051a,
-0x051c, 0x051c,
-0x051e, 0x051e,
-0x0520, 0x0520,
-0x0522, 0x0522,
-0x0524, 0x0524,
-0x0526, 0x0526,
-0x0528, 0x0528,
-0x052a, 0x052a,
-0x052c, 0x052c,
-0x052e, 0x052e,
-0x0531, 0x0556,
-0x0587, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13f8, 0x13fd,
-0x1e00, 0x1e00,
-0x1e02, 0x1e02,
-0x1e04, 0x1e04,
-0x1e06, 0x1e06,
-0x1e08, 0x1e08,
-0x1e0a, 0x1e0a,
-0x1e0c, 0x1e0c,
-0x1e0e, 0x1e0e,
-0x1e10, 0x1e10,
-0x1e12, 0x1e12,
-0x1e14, 0x1e14,
-0x1e16, 0x1e16,
-0x1e18, 0x1e18,
-0x1e1a, 0x1e1a,
-0x1e1c, 0x1e1c,
-0x1e1e, 0x1e1e,
-0x1e20, 0x1e20,
-0x1e22, 0x1e22,
-0x1e24, 0x1e24,
-0x1e26, 0x1e26,
-0x1e28, 0x1e28,
-0x1e2a, 0x1e2a,
-0x1e2c, 0x1e2c,
-0x1e2e, 0x1e2e,
-0x1e30, 0x1e30,
-0x1e32, 0x1e32,
-0x1e34, 0x1e34,
-0x1e36, 0x1e36,
-0x1e38, 0x1e38,
-0x1e3a, 0x1e3a,
-0x1e3c, 0x1e3c,
-0x1e3e, 0x1e3e,
-0x1e40, 0x1e40,
-0x1e42, 0x1e42,
-0x1e44, 0x1e44,
-0x1e46, 0x1e46,
-0x1e48, 0x1e48,
-0x1e4a, 0x1e4a,
-0x1e4c, 0x1e4c,
-0x1e4e, 0x1e4e,
-0x1e50, 0x1e50,
-0x1e52, 0x1e52,
-0x1e54, 0x1e54,
-0x1e56, 0x1e56,
-0x1e58, 0x1e58,
-0x1e5a, 0x1e5a,
-0x1e5c, 0x1e5c,
-0x1e5e, 0x1e5e,
-0x1e60, 0x1e60,
-0x1e62, 0x1e62,
-0x1e64, 0x1e64,
-0x1e66, 0x1e66,
-0x1e68, 0x1e68,
-0x1e6a, 0x1e6a,
-0x1e6c, 0x1e6c,
-0x1e6e, 0x1e6e,
-0x1e70, 0x1e70,
-0x1e72, 0x1e72,
-0x1e74, 0x1e74,
-0x1e76, 0x1e76,
-0x1e78, 0x1e78,
-0x1e7a, 0x1e7a,
-0x1e7c, 0x1e7c,
-0x1e7e, 0x1e7e,
-0x1e80, 0x1e80,
-0x1e82, 0x1e82,
-0x1e84, 0x1e84,
-0x1e86, 0x1e86,
-0x1e88, 0x1e88,
-0x1e8a, 0x1e8a,
-0x1e8c, 0x1e8c,
-0x1e8e, 0x1e8e,
-0x1e90, 0x1e90,
-0x1e92, 0x1e92,
-0x1e94, 0x1e94,
-0x1e9a, 0x1e9b,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1ea0,
-0x1ea2, 0x1ea2,
-0x1ea4, 0x1ea4,
-0x1ea6, 0x1ea6,
-0x1ea8, 0x1ea8,
-0x1eaa, 0x1eaa,
-0x1eac, 0x1eac,
-0x1eae, 0x1eae,
-0x1eb0, 0x1eb0,
-0x1eb2, 0x1eb2,
-0x1eb4, 0x1eb4,
-0x1eb6, 0x1eb6,
-0x1eb8, 0x1eb8,
-0x1eba, 0x1eba,
-0x1ebc, 0x1ebc,
-0x1ebe, 0x1ebe,
-0x1ec0, 0x1ec0,
-0x1ec2, 0x1ec2,
-0x1ec4, 0x1ec4,
-0x1ec6, 0x1ec6,
-0x1ec8, 0x1ec8,
-0x1eca, 0x1eca,
-0x1ecc, 0x1ecc,
-0x1ece, 0x1ece,
-0x1ed0, 0x1ed0,
-0x1ed2, 0x1ed2,
-0x1ed4, 0x1ed4,
-0x1ed6, 0x1ed6,
-0x1ed8, 0x1ed8,
-0x1eda, 0x1eda,
-0x1edc, 0x1edc,
-0x1ede, 0x1ede,
-0x1ee0, 0x1ee0,
-0x1ee2, 0x1ee2,
-0x1ee4, 0x1ee4,
-0x1ee6, 0x1ee6,
-0x1ee8, 0x1ee8,
-0x1eea, 0x1eea,
-0x1eec, 0x1eec,
-0x1eee, 0x1eee,
-0x1ef0, 0x1ef0,
-0x1ef2, 0x1ef2,
-0x1ef4, 0x1ef4,
-0x1ef6, 0x1ef6,
-0x1ef8, 0x1ef8,
-0x1efa, 0x1efa,
-0x1efc, 0x1efc,
-0x1efe, 0x1efe,
-0x1f08, 0x1f0f,
-0x1f18, 0x1f1d,
-0x1f28, 0x1f2f,
-0x1f38, 0x1f3f,
-0x1f48, 0x1f4d,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f5f,
-0x1f68, 0x1f6f,
-0x1f80, 0x1faf,
-0x1fb2, 0x1fb4,
-0x1fb7, 0x1fbc,
-0x1fc2, 0x1fc4,
-0x1fc7, 0x1fcc,
-0x1fd8, 0x1fdb,
-0x1fe8, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff7, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x2160, 0x216f,
-0x2183, 0x2183,
-0x24b6, 0x24cf,
-0x2c00, 0x2c2e,
-0x2c60, 0x2c60,
-0x2c62, 0x2c64,
-0x2c67, 0x2c67,
-0x2c69, 0x2c69,
-0x2c6b, 0x2c6b,
-0x2c6d, 0x2c70,
-0x2c72, 0x2c72,
-0x2c75, 0x2c75,
-0x2c7e, 0x2c80,
-0x2c82, 0x2c82,
-0x2c84, 0x2c84,
-0x2c86, 0x2c86,
-0x2c88, 0x2c88,
-0x2c8a, 0x2c8a,
-0x2c8c, 0x2c8c,
-0x2c8e, 0x2c8e,
-0x2c90, 0x2c90,
-0x2c92, 0x2c92,
-0x2c94, 0x2c94,
-0x2c96, 0x2c96,
-0x2c98, 0x2c98,
-0x2c9a, 0x2c9a,
-0x2c9c, 0x2c9c,
-0x2c9e, 0x2c9e,
-0x2ca0, 0x2ca0,
-0x2ca2, 0x2ca2,
-0x2ca4, 0x2ca4,
-0x2ca6, 0x2ca6,
-0x2ca8, 0x2ca8,
-0x2caa, 0x2caa,
-0x2cac, 0x2cac,
-0x2cae, 0x2cae,
-0x2cb0, 0x2cb0,
-0x2cb2, 0x2cb2,
-0x2cb4, 0x2cb4,
-0x2cb6, 0x2cb6,
-0x2cb8, 0x2cb8,
-0x2cba, 0x2cba,
-0x2cbc, 0x2cbc,
-0x2cbe, 0x2cbe,
-0x2cc0, 0x2cc0,
-0x2cc2, 0x2cc2,
-0x2cc4, 0x2cc4,
-0x2cc6, 0x2cc6,
-0x2cc8, 0x2cc8,
-0x2cca, 0x2cca,
-0x2ccc, 0x2ccc,
-0x2cce, 0x2cce,
-0x2cd0, 0x2cd0,
-0x2cd2, 0x2cd2,
-0x2cd4, 0x2cd4,
-0x2cd6, 0x2cd6,
-0x2cd8, 0x2cd8,
-0x2cda, 0x2cda,
-0x2cdc, 0x2cdc,
-0x2cde, 0x2cde,
-0x2ce0, 0x2ce0,
-0x2ce2, 0x2ce2,
-0x2ceb, 0x2ceb,
-0x2ced, 0x2ced,
-0x2cf2, 0x2cf2,
-0xa640, 0xa640,
-0xa642, 0xa642,
-0xa644, 0xa644,
-0xa646, 0xa646,
-0xa648, 0xa648,
-0xa64a, 0xa64a,
-0xa64c, 0xa64c,
-0xa64e, 0xa64e,
-0xa650, 0xa650,
-0xa652, 0xa652,
-0xa654, 0xa654,
-0xa656, 0xa656,
-0xa658, 0xa658,
-0xa65a, 0xa65a,
-0xa65c, 0xa65c,
-0xa65e, 0xa65e,
-0xa660, 0xa660,
-0xa662, 0xa662,
-0xa664, 0xa664,
-0xa666, 0xa666,
-0xa668, 0xa668,
-0xa66a, 0xa66a,
-0xa66c, 0xa66c,
-0xa680, 0xa680,
-0xa682, 0xa682,
-0xa684, 0xa684,
-0xa686, 0xa686,
-0xa688, 0xa688,
-0xa68a, 0xa68a,
-0xa68c, 0xa68c,
-0xa68e, 0xa68e,
-0xa690, 0xa690,
-0xa692, 0xa692,
-0xa694, 0xa694,
-0xa696, 0xa696,
-0xa698, 0xa698,
-0xa69a, 0xa69a,
-0xa722, 0xa722,
-0xa724, 0xa724,
-0xa726, 0xa726,
-0xa728, 0xa728,
-0xa72a, 0xa72a,
-0xa72c, 0xa72c,
-0xa72e, 0xa72e,
-0xa732, 0xa732,
-0xa734, 0xa734,
-0xa736, 0xa736,
-0xa738, 0xa738,
-0xa73a, 0xa73a,
-0xa73c, 0xa73c,
-0xa73e, 0xa73e,
-0xa740, 0xa740,
-0xa742, 0xa742,
-0xa744, 0xa744,
-0xa746, 0xa746,
-0xa748, 0xa748,
-0xa74a, 0xa74a,
-0xa74c, 0xa74c,
-0xa74e, 0xa74e,
-0xa750, 0xa750,
-0xa752, 0xa752,
-0xa754, 0xa754,
-0xa756, 0xa756,
-0xa758, 0xa758,
-0xa75a, 0xa75a,
-0xa75c, 0xa75c,
-0xa75e, 0xa75e,
-0xa760, 0xa760,
-0xa762, 0xa762,
-0xa764, 0xa764,
-0xa766, 0xa766,
-0xa768, 0xa768,
-0xa76a, 0xa76a,
-0xa76c, 0xa76c,
-0xa76e, 0xa76e,
-0xa779, 0xa779,
-0xa77b, 0xa77b,
-0xa77d, 0xa77e,
-0xa780, 0xa780,
-0xa782, 0xa782,
-0xa784, 0xa784,
-0xa786, 0xa786,
-0xa78b, 0xa78b,
-0xa78d, 0xa78d,
-0xa790, 0xa790,
-0xa792, 0xa792,
-0xa796, 0xa796,
-0xa798, 0xa798,
-0xa79a, 0xa79a,
-0xa79c, 0xa79c,
-0xa79e, 0xa79e,
-0xa7a0, 0xa7a0,
-0xa7a2, 0xa7a2,
-0xa7a4, 0xa7a4,
-0xa7a6, 0xa7a6,
-0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
-0xa7b0, 0xa7b4,
-0xa7b6, 0xa7b6,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0x10400, 0x10427,
-0x10c80, 0x10cb2,
-0x118a0, 0x118bf,
-}; /* END of CR_Changes_When_Casefolded */
+CR_Tai_Viet[] = { 2,
+0xaa80, 0xaac2,
+0xaadb, 0xaadf,
+}; /* END of CR_Tai_Viet */
-/* PROPERTY: 'Changes_When_Casemapped': Derived Property */
+/* PROPERTY: 'Takri': Script */
static const OnigCodePoint
-CR_Changes_When_Casemapped[] = { 113,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00b5, 0x00b5,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x0137,
-0x0139, 0x018c,
-0x018e, 0x019a,
-0x019c, 0x01a9,
-0x01ac, 0x01b9,
-0x01bc, 0x01bd,
-0x01bf, 0x01bf,
-0x01c4, 0x0220,
-0x0222, 0x0233,
-0x023a, 0x0254,
-0x0256, 0x0257,
-0x0259, 0x0259,
-0x025b, 0x025c,
-0x0260, 0x0261,
-0x0263, 0x0263,
-0x0265, 0x0266,
-0x0268, 0x0269,
-0x026b, 0x026c,
-0x026f, 0x026f,
-0x0271, 0x0272,
-0x0275, 0x0275,
-0x027d, 0x027d,
-0x0280, 0x0280,
-0x0283, 0x0283,
-0x0287, 0x028c,
-0x0292, 0x0292,
-0x029d, 0x029e,
-0x0345, 0x0345,
-0x0370, 0x0373,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03d1,
-0x03d5, 0x03f5,
-0x03f7, 0x03fb,
-0x03fd, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0561, 0x0587,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1d79, 0x1d79,
-0x1d7d, 0x1d7d,
-0x1e00, 0x1e9b,
-0x1e9e, 0x1e9e,
-0x1ea0, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2126, 0x2126,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x217f,
-0x2183, 0x2184,
-0x24b6, 0x24e9,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2c70,
-0x2c72, 0x2c73,
-0x2c75, 0x2c76,
-0x2c7e, 0x2ce3,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0xa640, 0xa66d,
-0xa680, 0xa69b,
-0xa722, 0xa72f,
-0xa732, 0xa76f,
-0xa779, 0xa787,
-0xa78b, 0xa78d,
-0xa790, 0xa793,
-0xa796, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xab53, 0xab53,
-0xab70, 0xabbf,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0x10400, 0x1044f,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x118a0, 0x118df,
-}; /* END of CR_Changes_When_Casemapped */
+CR_Takri[] = { 2,
+0x11680, 0x116b7,
+0x116c0, 0x116c9,
+}; /* END of CR_Takri */
-/* PROPERTY: 'ID_Start': Derived Property */
+/* PROPERTY: 'Tamil': Script */
static const OnigCodePoint
-CR_ID_Start[] = { 555,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0370, 0x0374,
-0x0376, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0620, 0x064a,
-0x066e, 0x066f,
-0x0671, 0x06d3,
-0x06d5, 0x06d5,
-0x06e5, 0x06e6,
-0x06ee, 0x06ef,
-0x06fa, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07ca, 0x07ea,
-0x07f4, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0840, 0x0858,
-0x08a0, 0x08b4,
-0x0904, 0x0939,
-0x093d, 0x093d,
-0x0950, 0x0950,
-0x0958, 0x0961,
-0x0971, 0x0980,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09f0, 0x09f1,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a72, 0x0a74,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0abd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0af9, 0x0af9,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b71, 0x0b71,
-0x0b83, 0x0b83,
+CR_Tamil[] = { 16,
+0x0b82, 0x0b83,
0x0b85, 0x0b8a,
0x0b8e, 0x0b90,
0x0b92, 0x0b95,
@@ -14232,461 +20319,903 @@ CR_ID_Start[] = { 555,
0x0ba3, 0x0ba4,
0x0ba8, 0x0baa,
0x0bae, 0x0bb9,
+0x0bbe, 0x0bc2,
+0x0bc6, 0x0bc8,
+0x0bca, 0x0bcd,
0x0bd0, 0x0bd0,
-0x0c05, 0x0c0c,
+0x0bd7, 0x0bd7,
+0x0be6, 0x0bfa,
+}; /* END of CR_Tamil */
+
+/* PROPERTY: 'Tangut': Script */
+static const OnigCodePoint
+CR_Tangut[] = { 3,
+0x16fe0, 0x16fe0,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+}; /* END of CR_Tangut */
+
+/* PROPERTY: 'Telugu': Script */
+static const OnigCodePoint
+CR_Telugu[] = { 12,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
+0x0c3d, 0x0c44,
+0x0c46, 0x0c48,
+0x0c4a, 0x0c4d,
+0x0c55, 0x0c56,
0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbd,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0cf1, 0x0cf2,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d7a, 0x0d7f,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e40, 0x0e46,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f40, 0x0f47,
+0x0c60, 0x0c63,
+0x0c66, 0x0c6f,
+0x0c78, 0x0c7f,
+}; /* END of CR_Telugu */
+
+/* PROPERTY: 'Terminal_Punctuation': Binary Property */
+static const OnigCodePoint
+CR_Terminal_Punctuation[] = { 102,
+0x0021, 0x0021,
+0x002c, 0x002c,
+0x002e, 0x002e,
+0x003a, 0x003b,
+0x003f, 0x003f,
+0x037e, 0x037e,
+0x0387, 0x0387,
+0x0589, 0x0589,
+0x05c3, 0x05c3,
+0x060c, 0x060c,
+0x061b, 0x061b,
+0x061e, 0x061f,
+0x06d4, 0x06d4,
+0x0700, 0x070a,
+0x070c, 0x070c,
+0x07f8, 0x07f9,
+0x0830, 0x083e,
+0x085e, 0x085e,
+0x0964, 0x0965,
+0x0e5a, 0x0e5b,
+0x0f08, 0x0f08,
+0x0f0d, 0x0f12,
+0x104a, 0x104b,
+0x1361, 0x1368,
+0x166d, 0x166e,
+0x16eb, 0x16ed,
+0x1735, 0x1736,
+0x17d4, 0x17d6,
+0x17da, 0x17da,
+0x1802, 0x1805,
+0x1808, 0x1809,
+0x1944, 0x1945,
+0x1aa8, 0x1aab,
+0x1b5a, 0x1b5b,
+0x1b5d, 0x1b5f,
+0x1c3b, 0x1c3f,
+0x1c7e, 0x1c7f,
+0x203c, 0x203d,
+0x2047, 0x2049,
+0x2e2e, 0x2e2e,
+0x2e3c, 0x2e3c,
+0x2e41, 0x2e41,
+0x2e4c, 0x2e4c,
+0x2e4e, 0x2e4e,
+0x3001, 0x3002,
+0xa4fe, 0xa4ff,
+0xa60d, 0xa60f,
+0xa6f3, 0xa6f7,
+0xa876, 0xa877,
+0xa8ce, 0xa8cf,
+0xa92f, 0xa92f,
+0xa9c7, 0xa9c9,
+0xaa5d, 0xaa5f,
+0xaadf, 0xaadf,
+0xaaf0, 0xaaf1,
+0xabeb, 0xabeb,
+0xfe50, 0xfe52,
+0xfe54, 0xfe57,
+0xff01, 0xff01,
+0xff0c, 0xff0c,
+0xff0e, 0xff0e,
+0xff1a, 0xff1b,
+0xff1f, 0xff1f,
+0xff61, 0xff61,
+0xff64, 0xff64,
+0x1039f, 0x1039f,
+0x103d0, 0x103d0,
+0x10857, 0x10857,
+0x1091f, 0x1091f,
+0x10a56, 0x10a57,
+0x10af0, 0x10af5,
+0x10b3a, 0x10b3f,
+0x10b99, 0x10b9c,
+0x10f55, 0x10f59,
+0x11047, 0x1104d,
+0x110be, 0x110c1,
+0x11141, 0x11143,
+0x111c5, 0x111c6,
+0x111cd, 0x111cd,
+0x111de, 0x111df,
+0x11238, 0x1123c,
+0x112a9, 0x112a9,
+0x1144b, 0x1144d,
+0x1145b, 0x1145b,
+0x115c2, 0x115c5,
+0x115c9, 0x115d7,
+0x11641, 0x11642,
+0x1173c, 0x1173e,
+0x11a42, 0x11a43,
+0x11a9b, 0x11a9c,
+0x11aa1, 0x11aa2,
+0x11c41, 0x11c43,
+0x11c71, 0x11c71,
+0x11ef7, 0x11ef8,
+0x12470, 0x12474,
+0x16a6e, 0x16a6f,
+0x16af5, 0x16af5,
+0x16b37, 0x16b39,
+0x16b44, 0x16b44,
+0x16e97, 0x16e98,
+0x1bc9f, 0x1bc9f,
+0x1da87, 0x1da8a,
+}; /* END of CR_Terminal_Punctuation */
+
+/* PROPERTY: 'Thaana': Script */
+static const OnigCodePoint
+CR_Thaana[] = { 1,
+0x0780, 0x07b1,
+}; /* END of CR_Thaana */
+
+/* PROPERTY: 'Thai': Script */
+static const OnigCodePoint
+CR_Thai[] = { 2,
+0x0e01, 0x0e3a,
+0x0e40, 0x0e5b,
+}; /* END of CR_Thai */
+
+/* PROPERTY: 'Tibetan': Script */
+static const OnigCodePoint
+CR_Tibetan[] = { 7,
+0x0f00, 0x0f47,
0x0f49, 0x0f6c,
-0x0f88, 0x0f8c,
-0x1000, 0x102a,
-0x103f, 0x103f,
-0x1050, 0x1055,
-0x105a, 0x105d,
-0x1061, 0x1061,
-0x1065, 0x1066,
-0x106e, 0x1070,
-0x1075, 0x1081,
-0x108e, 0x108e,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dc,
-0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1950, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x1a00, 0x1a16,
-0x1a20, 0x1a54,
-0x1aa7, 0x1aa7,
-0x1b05, 0x1b33,
-0x1b45, 0x1b4b,
-0x1b83, 0x1ba0,
-0x1bae, 0x1baf,
-0x1bba, 0x1be5,
-0x1c00, 0x1c23,
-0x1c4d, 0x1c4f,
-0x1c5a, 0x1c7d,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf1,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
+0x0f71, 0x0f97,
+0x0f99, 0x0fbc,
+0x0fbe, 0x0fcc,
+0x0fce, 0x0fd4,
+0x0fd9, 0x0fda,
+}; /* END of CR_Tibetan */
+
+/* PROPERTY: 'Tifinagh': Script */
+static const OnigCodePoint
+CR_Tifinagh[] = { 3,
0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x3005, 0x3007,
-0x3021, 0x3029,
-0x3031, 0x3035,
-0x3038, 0x303c,
-0x3041, 0x3096,
-0x309b, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa61f,
-0xa62a, 0xa62b,
-0xa640, 0xa66e,
-0xa67f, 0xa69d,
-0xa6a0, 0xa6ef,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa822,
-0xa840, 0xa873,
-0xa882, 0xa8b3,
-0xa8f2, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa90a, 0xa925,
-0xa930, 0xa946,
-0xa960, 0xa97c,
-0xa984, 0xa9b2,
-0xa9cf, 0xa9cf,
-0xa9e0, 0xa9e4,
-0xa9e6, 0xa9ef,
-0xa9fa, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa60, 0xaa76,
-0xaa7a, 0xaa7a,
-0xaa7e, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaea,
-0xaaf2, 0xaaf4,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabe2,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10140, 0x10174,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x10300, 0x1031f,
-0x10330, 0x1034a,
-0x10350, 0x10375,
+0x2d6f, 0x2d70,
+0x2d7f, 0x2d7f,
+}; /* END of CR_Tifinagh */
+
+/* PROPERTY: 'Tirhuta': Script */
+static const OnigCodePoint
+CR_Tirhuta[] = { 2,
+0x11480, 0x114c7,
+0x114d0, 0x114d9,
+}; /* END of CR_Tirhuta */
+
+/* PROPERTY: 'Ugaritic': Script */
+static const OnigCodePoint
+CR_Ugaritic[] = { 2,
0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
-0x10400, 0x1049d,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae4,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11003, 0x11037,
-0x11083, 0x110af,
-0x110d0, 0x110e8,
-0x11103, 0x11126,
-0x11150, 0x11172,
-0x11176, 0x11176,
-0x11183, 0x111b2,
-0x111c1, 0x111c4,
-0x111da, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x1122b,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112de,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x11350, 0x11350,
-0x1135d, 0x11361,
-0x11480, 0x114af,
-0x114c4, 0x114c5,
-0x114c7, 0x114c7,
-0x11580, 0x115ae,
-0x115d8, 0x115db,
-0x11600, 0x1162f,
-0x11644, 0x11644,
-0x11680, 0x116aa,
-0x11700, 0x11719,
-0x118a0, 0x118df,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16ad0, 0x16aed,
-0x16b00, 0x16b2f,
-0x16b40, 0x16b43,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f50,
-0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1e800, 0x1e8c4,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
+0x1039f, 0x1039f,
+}; /* END of CR_Ugaritic */
+
+/* PROPERTY: 'Unified_Ideograph': Binary Property */
+static const OnigCodePoint
+CR_Unified_Ideograph[] = { 14,
+0x3400, 0x4db5,
+0x4e00, 0x9fef,
+0xfa0e, 0xfa0f,
+0xfa11, 0xfa11,
+0xfa13, 0xfa14,
+0xfa1f, 0xfa1f,
+0xfa21, 0xfa21,
+0xfa23, 0xfa24,
+0xfa27, 0xfa29,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_ID_Start */
+0x2ceb0, 0x2ebe0,
+}; /* END of CR_Unified_Ideograph */
-/* PROPERTY: 'ID_Continue': Derived Property */
+/* PROPERTY: 'Unknown': Script */
static const OnigCodePoint
-CR_ID_Continue[] = { 651,
+CR_Unknown[] = { 656,
+0x0378, 0x0379,
+0x0380, 0x0383,
+0x038b, 0x038b,
+0x038d, 0x038d,
+0x03a2, 0x03a2,
+0x0530, 0x0530,
+0x0557, 0x0558,
+0x058b, 0x058c,
+0x0590, 0x0590,
+0x05c8, 0x05cf,
+0x05eb, 0x05ee,
+0x05f5, 0x05ff,
+0x061d, 0x061d,
+0x070e, 0x070e,
+0x074b, 0x074c,
+0x07b2, 0x07bf,
+0x07fb, 0x07fc,
+0x082e, 0x082f,
+0x083f, 0x083f,
+0x085c, 0x085d,
+0x085f, 0x085f,
+0x086b, 0x089f,
+0x08b5, 0x08b5,
+0x08be, 0x08d2,
+0x0984, 0x0984,
+0x098d, 0x098e,
+0x0991, 0x0992,
+0x09a9, 0x09a9,
+0x09b1, 0x09b1,
+0x09b3, 0x09b5,
+0x09ba, 0x09bb,
+0x09c5, 0x09c6,
+0x09c9, 0x09ca,
+0x09cf, 0x09d6,
+0x09d8, 0x09db,
+0x09de, 0x09de,
+0x09e4, 0x09e5,
+0x09ff, 0x0a00,
+0x0a04, 0x0a04,
+0x0a0b, 0x0a0e,
+0x0a11, 0x0a12,
+0x0a29, 0x0a29,
+0x0a31, 0x0a31,
+0x0a34, 0x0a34,
+0x0a37, 0x0a37,
+0x0a3a, 0x0a3b,
+0x0a3d, 0x0a3d,
+0x0a43, 0x0a46,
+0x0a49, 0x0a4a,
+0x0a4e, 0x0a50,
+0x0a52, 0x0a58,
+0x0a5d, 0x0a5d,
+0x0a5f, 0x0a65,
+0x0a77, 0x0a80,
+0x0a84, 0x0a84,
+0x0a8e, 0x0a8e,
+0x0a92, 0x0a92,
+0x0aa9, 0x0aa9,
+0x0ab1, 0x0ab1,
+0x0ab4, 0x0ab4,
+0x0aba, 0x0abb,
+0x0ac6, 0x0ac6,
+0x0aca, 0x0aca,
+0x0ace, 0x0acf,
+0x0ad1, 0x0adf,
+0x0ae4, 0x0ae5,
+0x0af2, 0x0af8,
+0x0b00, 0x0b00,
+0x0b04, 0x0b04,
+0x0b0d, 0x0b0e,
+0x0b11, 0x0b12,
+0x0b29, 0x0b29,
+0x0b31, 0x0b31,
+0x0b34, 0x0b34,
+0x0b3a, 0x0b3b,
+0x0b45, 0x0b46,
+0x0b49, 0x0b4a,
+0x0b4e, 0x0b55,
+0x0b58, 0x0b5b,
+0x0b5e, 0x0b5e,
+0x0b64, 0x0b65,
+0x0b78, 0x0b81,
+0x0b84, 0x0b84,
+0x0b8b, 0x0b8d,
+0x0b91, 0x0b91,
+0x0b96, 0x0b98,
+0x0b9b, 0x0b9b,
+0x0b9d, 0x0b9d,
+0x0ba0, 0x0ba2,
+0x0ba5, 0x0ba7,
+0x0bab, 0x0bad,
+0x0bba, 0x0bbd,
+0x0bc3, 0x0bc5,
+0x0bc9, 0x0bc9,
+0x0bce, 0x0bcf,
+0x0bd1, 0x0bd6,
+0x0bd8, 0x0be5,
+0x0bfb, 0x0bff,
+0x0c0d, 0x0c0d,
+0x0c11, 0x0c11,
+0x0c29, 0x0c29,
+0x0c3a, 0x0c3c,
+0x0c45, 0x0c45,
+0x0c49, 0x0c49,
+0x0c4e, 0x0c54,
+0x0c57, 0x0c57,
+0x0c5b, 0x0c5f,
+0x0c64, 0x0c65,
+0x0c70, 0x0c77,
+0x0c8d, 0x0c8d,
+0x0c91, 0x0c91,
+0x0ca9, 0x0ca9,
+0x0cb4, 0x0cb4,
+0x0cba, 0x0cbb,
+0x0cc5, 0x0cc5,
+0x0cc9, 0x0cc9,
+0x0cce, 0x0cd4,
+0x0cd7, 0x0cdd,
+0x0cdf, 0x0cdf,
+0x0ce4, 0x0ce5,
+0x0cf0, 0x0cf0,
+0x0cf3, 0x0cff,
+0x0d04, 0x0d04,
+0x0d0d, 0x0d0d,
+0x0d11, 0x0d11,
+0x0d45, 0x0d45,
+0x0d49, 0x0d49,
+0x0d50, 0x0d53,
+0x0d64, 0x0d65,
+0x0d80, 0x0d81,
+0x0d84, 0x0d84,
+0x0d97, 0x0d99,
+0x0db2, 0x0db2,
+0x0dbc, 0x0dbc,
+0x0dbe, 0x0dbf,
+0x0dc7, 0x0dc9,
+0x0dcb, 0x0dce,
+0x0dd5, 0x0dd5,
+0x0dd7, 0x0dd7,
+0x0de0, 0x0de5,
+0x0df0, 0x0df1,
+0x0df5, 0x0e00,
+0x0e3b, 0x0e3e,
+0x0e5c, 0x0e80,
+0x0e83, 0x0e83,
+0x0e85, 0x0e86,
+0x0e89, 0x0e89,
+0x0e8b, 0x0e8c,
+0x0e8e, 0x0e93,
+0x0e98, 0x0e98,
+0x0ea0, 0x0ea0,
+0x0ea4, 0x0ea4,
+0x0ea6, 0x0ea6,
+0x0ea8, 0x0ea9,
+0x0eac, 0x0eac,
+0x0eba, 0x0eba,
+0x0ebe, 0x0ebf,
+0x0ec5, 0x0ec5,
+0x0ec7, 0x0ec7,
+0x0ece, 0x0ecf,
+0x0eda, 0x0edb,
+0x0ee0, 0x0eff,
+0x0f48, 0x0f48,
+0x0f6d, 0x0f70,
+0x0f98, 0x0f98,
+0x0fbd, 0x0fbd,
+0x0fcd, 0x0fcd,
+0x0fdb, 0x0fff,
+0x10c6, 0x10c6,
+0x10c8, 0x10cc,
+0x10ce, 0x10cf,
+0x1249, 0x1249,
+0x124e, 0x124f,
+0x1257, 0x1257,
+0x1259, 0x1259,
+0x125e, 0x125f,
+0x1289, 0x1289,
+0x128e, 0x128f,
+0x12b1, 0x12b1,
+0x12b6, 0x12b7,
+0x12bf, 0x12bf,
+0x12c1, 0x12c1,
+0x12c6, 0x12c7,
+0x12d7, 0x12d7,
+0x1311, 0x1311,
+0x1316, 0x1317,
+0x135b, 0x135c,
+0x137d, 0x137f,
+0x139a, 0x139f,
+0x13f6, 0x13f7,
+0x13fe, 0x13ff,
+0x169d, 0x169f,
+0x16f9, 0x16ff,
+0x170d, 0x170d,
+0x1715, 0x171f,
+0x1737, 0x173f,
+0x1754, 0x175f,
+0x176d, 0x176d,
+0x1771, 0x1771,
+0x1774, 0x177f,
+0x17de, 0x17df,
+0x17ea, 0x17ef,
+0x17fa, 0x17ff,
+0x180f, 0x180f,
+0x181a, 0x181f,
+0x1879, 0x187f,
+0x18ab, 0x18af,
+0x18f6, 0x18ff,
+0x191f, 0x191f,
+0x192c, 0x192f,
+0x193c, 0x193f,
+0x1941, 0x1943,
+0x196e, 0x196f,
+0x1975, 0x197f,
+0x19ac, 0x19af,
+0x19ca, 0x19cf,
+0x19db, 0x19dd,
+0x1a1c, 0x1a1d,
+0x1a5f, 0x1a5f,
+0x1a7d, 0x1a7e,
+0x1a8a, 0x1a8f,
+0x1a9a, 0x1a9f,
+0x1aae, 0x1aaf,
+0x1abf, 0x1aff,
+0x1b4c, 0x1b4f,
+0x1b7d, 0x1b7f,
+0x1bf4, 0x1bfb,
+0x1c38, 0x1c3a,
+0x1c4a, 0x1c4c,
+0x1c89, 0x1c8f,
+0x1cbb, 0x1cbc,
+0x1cc8, 0x1ccf,
+0x1cfa, 0x1cff,
+0x1dfa, 0x1dfa,
+0x1f16, 0x1f17,
+0x1f1e, 0x1f1f,
+0x1f46, 0x1f47,
+0x1f4e, 0x1f4f,
+0x1f58, 0x1f58,
+0x1f5a, 0x1f5a,
+0x1f5c, 0x1f5c,
+0x1f5e, 0x1f5e,
+0x1f7e, 0x1f7f,
+0x1fb5, 0x1fb5,
+0x1fc5, 0x1fc5,
+0x1fd4, 0x1fd5,
+0x1fdc, 0x1fdc,
+0x1ff0, 0x1ff1,
+0x1ff5, 0x1ff5,
+0x1fff, 0x1fff,
+0x2065, 0x2065,
+0x2072, 0x2073,
+0x208f, 0x208f,
+0x209d, 0x209f,
+0x20c0, 0x20cf,
+0x20f1, 0x20ff,
+0x218c, 0x218f,
+0x2427, 0x243f,
+0x244b, 0x245f,
+0x2b74, 0x2b75,
+0x2b96, 0x2b97,
+0x2bc9, 0x2bc9,
+0x2bff, 0x2bff,
+0x2c2f, 0x2c2f,
+0x2c5f, 0x2c5f,
+0x2cf4, 0x2cf8,
+0x2d26, 0x2d26,
+0x2d28, 0x2d2c,
+0x2d2e, 0x2d2f,
+0x2d68, 0x2d6e,
+0x2d71, 0x2d7e,
+0x2d97, 0x2d9f,
+0x2da7, 0x2da7,
+0x2daf, 0x2daf,
+0x2db7, 0x2db7,
+0x2dbf, 0x2dbf,
+0x2dc7, 0x2dc7,
+0x2dcf, 0x2dcf,
+0x2dd7, 0x2dd7,
+0x2ddf, 0x2ddf,
+0x2e4f, 0x2e7f,
+0x2e9a, 0x2e9a,
+0x2ef4, 0x2eff,
+0x2fd6, 0x2fef,
+0x2ffc, 0x2fff,
+0x3040, 0x3040,
+0x3097, 0x3098,
+0x3100, 0x3104,
+0x3130, 0x3130,
+0x318f, 0x318f,
+0x31bb, 0x31bf,
+0x31e4, 0x31ef,
+0x321f, 0x321f,
+0x32ff, 0x32ff,
+0x4db6, 0x4dbf,
+0x9ff0, 0x9fff,
+0xa48d, 0xa48f,
+0xa4c7, 0xa4cf,
+0xa62c, 0xa63f,
+0xa6f8, 0xa6ff,
+0xa7ba, 0xa7f6,
+0xa82c, 0xa82f,
+0xa83a, 0xa83f,
+0xa878, 0xa87f,
+0xa8c6, 0xa8cd,
+0xa8da, 0xa8df,
+0xa954, 0xa95e,
+0xa97d, 0xa97f,
+0xa9ce, 0xa9ce,
+0xa9da, 0xa9dd,
+0xa9ff, 0xa9ff,
+0xaa37, 0xaa3f,
+0xaa4e, 0xaa4f,
+0xaa5a, 0xaa5b,
+0xaac3, 0xaada,
+0xaaf7, 0xab00,
+0xab07, 0xab08,
+0xab0f, 0xab10,
+0xab17, 0xab1f,
+0xab27, 0xab27,
+0xab2f, 0xab2f,
+0xab66, 0xab6f,
+0xabee, 0xabef,
+0xabfa, 0xabff,
+0xd7a4, 0xd7af,
+0xd7c7, 0xd7ca,
+0xd7fc, 0xf8ff,
+0xfa6e, 0xfa6f,
+0xfada, 0xfaff,
+0xfb07, 0xfb12,
+0xfb18, 0xfb1c,
+0xfb37, 0xfb37,
+0xfb3d, 0xfb3d,
+0xfb3f, 0xfb3f,
+0xfb42, 0xfb42,
+0xfb45, 0xfb45,
+0xfbc2, 0xfbd2,
+0xfd40, 0xfd4f,
+0xfd90, 0xfd91,
+0xfdc8, 0xfdef,
+0xfdfe, 0xfdff,
+0xfe1a, 0xfe1f,
+0xfe53, 0xfe53,
+0xfe67, 0xfe67,
+0xfe6c, 0xfe6f,
+0xfe75, 0xfe75,
+0xfefd, 0xfefe,
+0xff00, 0xff00,
+0xffbf, 0xffc1,
+0xffc8, 0xffc9,
+0xffd0, 0xffd1,
+0xffd8, 0xffd9,
+0xffdd, 0xffdf,
+0xffe7, 0xffe7,
+0xffef, 0xfff8,
+0xfffe, 0xffff,
+0x1000c, 0x1000c,
+0x10027, 0x10027,
+0x1003b, 0x1003b,
+0x1003e, 0x1003e,
+0x1004e, 0x1004f,
+0x1005e, 0x1007f,
+0x100fb, 0x100ff,
+0x10103, 0x10106,
+0x10134, 0x10136,
+0x1018f, 0x1018f,
+0x1019c, 0x1019f,
+0x101a1, 0x101cf,
+0x101fe, 0x1027f,
+0x1029d, 0x1029f,
+0x102d1, 0x102df,
+0x102fc, 0x102ff,
+0x10324, 0x1032c,
+0x1034b, 0x1034f,
+0x1037b, 0x1037f,
+0x1039e, 0x1039e,
+0x103c4, 0x103c7,
+0x103d6, 0x103ff,
+0x1049e, 0x1049f,
+0x104aa, 0x104af,
+0x104d4, 0x104d7,
+0x104fc, 0x104ff,
+0x10528, 0x1052f,
+0x10564, 0x1056e,
+0x10570, 0x105ff,
+0x10737, 0x1073f,
+0x10756, 0x1075f,
+0x10768, 0x107ff,
+0x10806, 0x10807,
+0x10809, 0x10809,
+0x10836, 0x10836,
+0x10839, 0x1083b,
+0x1083d, 0x1083e,
+0x10856, 0x10856,
+0x1089f, 0x108a6,
+0x108b0, 0x108df,
+0x108f3, 0x108f3,
+0x108f6, 0x108fa,
+0x1091c, 0x1091e,
+0x1093a, 0x1093e,
+0x10940, 0x1097f,
+0x109b8, 0x109bb,
+0x109d0, 0x109d1,
+0x10a04, 0x10a04,
+0x10a07, 0x10a0b,
+0x10a14, 0x10a14,
+0x10a18, 0x10a18,
+0x10a36, 0x10a37,
+0x10a3b, 0x10a3e,
+0x10a49, 0x10a4f,
+0x10a59, 0x10a5f,
+0x10aa0, 0x10abf,
+0x10ae7, 0x10aea,
+0x10af7, 0x10aff,
+0x10b36, 0x10b38,
+0x10b56, 0x10b57,
+0x10b73, 0x10b77,
+0x10b92, 0x10b98,
+0x10b9d, 0x10ba8,
+0x10bb0, 0x10bff,
+0x10c49, 0x10c7f,
+0x10cb3, 0x10cbf,
+0x10cf3, 0x10cf9,
+0x10d28, 0x10d2f,
+0x10d3a, 0x10e5f,
+0x10e7f, 0x10eff,
+0x10f28, 0x10f2f,
+0x10f5a, 0x10fff,
+0x1104e, 0x11051,
+0x11070, 0x1107e,
+0x110c2, 0x110cc,
+0x110ce, 0x110cf,
+0x110e9, 0x110ef,
+0x110fa, 0x110ff,
+0x11135, 0x11135,
+0x11147, 0x1114f,
+0x11177, 0x1117f,
+0x111ce, 0x111cf,
+0x111e0, 0x111e0,
+0x111f5, 0x111ff,
+0x11212, 0x11212,
+0x1123f, 0x1127f,
+0x11287, 0x11287,
+0x11289, 0x11289,
+0x1128e, 0x1128e,
+0x1129e, 0x1129e,
+0x112aa, 0x112af,
+0x112eb, 0x112ef,
+0x112fa, 0x112ff,
+0x11304, 0x11304,
+0x1130d, 0x1130e,
+0x11311, 0x11312,
+0x11329, 0x11329,
+0x11331, 0x11331,
+0x11334, 0x11334,
+0x1133a, 0x1133a,
+0x11345, 0x11346,
+0x11349, 0x1134a,
+0x1134e, 0x1134f,
+0x11351, 0x11356,
+0x11358, 0x1135c,
+0x11364, 0x11365,
+0x1136d, 0x1136f,
+0x11375, 0x113ff,
+0x1145a, 0x1145a,
+0x1145c, 0x1145c,
+0x1145f, 0x1147f,
+0x114c8, 0x114cf,
+0x114da, 0x1157f,
+0x115b6, 0x115b7,
+0x115de, 0x115ff,
+0x11645, 0x1164f,
+0x1165a, 0x1165f,
+0x1166d, 0x1167f,
+0x116b8, 0x116bf,
+0x116ca, 0x116ff,
+0x1171b, 0x1171c,
+0x1172c, 0x1172f,
+0x11740, 0x117ff,
+0x1183c, 0x1189f,
+0x118f3, 0x118fe,
+0x11900, 0x119ff,
+0x11a48, 0x11a4f,
+0x11a84, 0x11a85,
+0x11aa3, 0x11abf,
+0x11af9, 0x11bff,
+0x11c09, 0x11c09,
+0x11c37, 0x11c37,
+0x11c46, 0x11c4f,
+0x11c6d, 0x11c6f,
+0x11c90, 0x11c91,
+0x11ca8, 0x11ca8,
+0x11cb7, 0x11cff,
+0x11d07, 0x11d07,
+0x11d0a, 0x11d0a,
+0x11d37, 0x11d39,
+0x11d3b, 0x11d3b,
+0x11d3e, 0x11d3e,
+0x11d48, 0x11d4f,
+0x11d5a, 0x11d5f,
+0x11d66, 0x11d66,
+0x11d69, 0x11d69,
+0x11d8f, 0x11d8f,
+0x11d92, 0x11d92,
+0x11d99, 0x11d9f,
+0x11daa, 0x11edf,
+0x11ef9, 0x11fff,
+0x1239a, 0x123ff,
+0x1246f, 0x1246f,
+0x12475, 0x1247f,
+0x12544, 0x12fff,
+0x1342f, 0x143ff,
+0x14647, 0x167ff,
+0x16a39, 0x16a3f,
+0x16a5f, 0x16a5f,
+0x16a6a, 0x16a6d,
+0x16a70, 0x16acf,
+0x16aee, 0x16aef,
+0x16af6, 0x16aff,
+0x16b46, 0x16b4f,
+0x16b5a, 0x16b5a,
+0x16b62, 0x16b62,
+0x16b78, 0x16b7c,
+0x16b90, 0x16e3f,
+0x16e9b, 0x16eff,
+0x16f45, 0x16f4f,
+0x16f7f, 0x16f8e,
+0x16fa0, 0x16fdf,
+0x16fe2, 0x16fff,
+0x187f2, 0x187ff,
+0x18af3, 0x1afff,
+0x1b11f, 0x1b16f,
+0x1b2fc, 0x1bbff,
+0x1bc6b, 0x1bc6f,
+0x1bc7d, 0x1bc7f,
+0x1bc89, 0x1bc8f,
+0x1bc9a, 0x1bc9b,
+0x1bca4, 0x1cfff,
+0x1d0f6, 0x1d0ff,
+0x1d127, 0x1d128,
+0x1d1e9, 0x1d1ff,
+0x1d246, 0x1d2df,
+0x1d2f4, 0x1d2ff,
+0x1d357, 0x1d35f,
+0x1d379, 0x1d3ff,
+0x1d455, 0x1d455,
+0x1d49d, 0x1d49d,
+0x1d4a0, 0x1d4a1,
+0x1d4a3, 0x1d4a4,
+0x1d4a7, 0x1d4a8,
+0x1d4ad, 0x1d4ad,
+0x1d4ba, 0x1d4ba,
+0x1d4bc, 0x1d4bc,
+0x1d4c4, 0x1d4c4,
+0x1d506, 0x1d506,
+0x1d50b, 0x1d50c,
+0x1d515, 0x1d515,
+0x1d51d, 0x1d51d,
+0x1d53a, 0x1d53a,
+0x1d53f, 0x1d53f,
+0x1d545, 0x1d545,
+0x1d547, 0x1d549,
+0x1d551, 0x1d551,
+0x1d6a6, 0x1d6a7,
+0x1d7cc, 0x1d7cd,
+0x1da8c, 0x1da9a,
+0x1daa0, 0x1daa0,
+0x1dab0, 0x1dfff,
+0x1e007, 0x1e007,
+0x1e019, 0x1e01a,
+0x1e022, 0x1e022,
+0x1e025, 0x1e025,
+0x1e02b, 0x1e7ff,
+0x1e8c5, 0x1e8c6,
+0x1e8d7, 0x1e8ff,
+0x1e94b, 0x1e94f,
+0x1e95a, 0x1e95d,
+0x1e960, 0x1ec70,
+0x1ecb5, 0x1edff,
+0x1ee04, 0x1ee04,
+0x1ee20, 0x1ee20,
+0x1ee23, 0x1ee23,
+0x1ee25, 0x1ee26,
+0x1ee28, 0x1ee28,
+0x1ee33, 0x1ee33,
+0x1ee38, 0x1ee38,
+0x1ee3a, 0x1ee3a,
+0x1ee3c, 0x1ee41,
+0x1ee43, 0x1ee46,
+0x1ee48, 0x1ee48,
+0x1ee4a, 0x1ee4a,
+0x1ee4c, 0x1ee4c,
+0x1ee50, 0x1ee50,
+0x1ee53, 0x1ee53,
+0x1ee55, 0x1ee56,
+0x1ee58, 0x1ee58,
+0x1ee5a, 0x1ee5a,
+0x1ee5c, 0x1ee5c,
+0x1ee5e, 0x1ee5e,
+0x1ee60, 0x1ee60,
+0x1ee63, 0x1ee63,
+0x1ee65, 0x1ee66,
+0x1ee6b, 0x1ee6b,
+0x1ee73, 0x1ee73,
+0x1ee78, 0x1ee78,
+0x1ee7d, 0x1ee7d,
+0x1ee7f, 0x1ee7f,
+0x1ee8a, 0x1ee8a,
+0x1ee9c, 0x1eea0,
+0x1eea4, 0x1eea4,
+0x1eeaa, 0x1eeaa,
+0x1eebc, 0x1eeef,
+0x1eef2, 0x1efff,
+0x1f02c, 0x1f02f,
+0x1f094, 0x1f09f,
+0x1f0af, 0x1f0b0,
+0x1f0c0, 0x1f0c0,
+0x1f0d0, 0x1f0d0,
+0x1f0f6, 0x1f0ff,
+0x1f10d, 0x1f10f,
+0x1f16c, 0x1f16f,
+0x1f1ad, 0x1f1e5,
+0x1f203, 0x1f20f,
+0x1f23c, 0x1f23f,
+0x1f249, 0x1f24f,
+0x1f252, 0x1f25f,
+0x1f266, 0x1f2ff,
+0x1f6d5, 0x1f6df,
+0x1f6ed, 0x1f6ef,
+0x1f6fa, 0x1f6ff,
+0x1f774, 0x1f77f,
+0x1f7d9, 0x1f7ff,
+0x1f80c, 0x1f80f,
+0x1f848, 0x1f84f,
+0x1f85a, 0x1f85f,
+0x1f888, 0x1f88f,
+0x1f8ae, 0x1f8ff,
+0x1f90c, 0x1f90f,
+0x1f93f, 0x1f93f,
+0x1f971, 0x1f972,
+0x1f977, 0x1f979,
+0x1f97b, 0x1f97b,
+0x1f9a3, 0x1f9af,
+0x1f9ba, 0x1f9bf,
+0x1f9c3, 0x1f9cf,
+0x1fa00, 0x1fa5f,
+0x1fa6e, 0x1ffff,
+0x2a6d7, 0x2a6ff,
+0x2b735, 0x2b73f,
+0x2b81e, 0x2b81f,
+0x2cea2, 0x2ceaf,
+0x2ebe1, 0x2f7ff,
+0x2fa1e, 0xe0000,
+0xe0002, 0xe001f,
+0xe0080, 0xe00ff,
+0xe01f0, 0x10ffff,
+}; /* END of CR_Unknown */
+
+/* PROPERTY: 'Uppercase': Derived Property */
+#define CR_Uppercase CR_Upper
+
+/* PROPERTY: 'Vai': Script */
+static const OnigCodePoint
+CR_Vai[] = { 1,
+0xa500, 0xa62b,
+}; /* END of CR_Vai */
+
+/* PROPERTY: 'Variation_Selector': Binary Property */
+static const OnigCodePoint
+CR_Variation_Selector[] = { 3,
+0x180b, 0x180d,
+0xfe00, 0xfe0f,
+0xe0100, 0xe01ef,
+}; /* END of CR_Variation_Selector */
+
+/* PROPERTY: 'Warang_Citi': Script */
+static const OnigCodePoint
+CR_Warang_Citi[] = { 2,
+0x118a0, 0x118f2,
+0x118ff, 0x118ff,
+}; /* END of CR_Warang_Citi */
+
+/* PROPERTY: 'White_Space': Binary Property */
+#define CR_White_Space CR_Space
+
+/* PROPERTY: 'XID_Continue': Derived Property */
+static const OnigCodePoint
+CR_XID_Continue[] = { 714,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14704,7 +21233,7 @@ CR_ID_Continue[] = { 651,
0x02ee, 0x02ee,
0x0300, 0x0374,
0x0376, 0x0377,
-0x037a, 0x037d,
+0x037b, 0x037d,
0x037f, 0x037f,
0x0386, 0x038a,
0x038c, 0x038c,
@@ -14715,14 +21244,14 @@ CR_ID_Continue[] = { 651,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x0591, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0669,
0x066e, 0x06d3,
@@ -14734,9 +21263,13 @@ CR_ID_Continue[] = { 651,
0x074d, 0x07b1,
0x07c0, 0x07f5,
0x07fa, 0x07fa,
+0x07fd, 0x07fd,
0x0800, 0x082d,
0x0840, 0x085b,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d3, 0x08e1,
0x08e3, 0x0963,
0x0966, 0x096f,
0x0971, 0x0983,
@@ -14753,6 +21286,8 @@ CR_ID_Continue[] = { 651,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09e6, 0x09f1,
+0x09fc, 0x09fc,
+0x09fe, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -14782,7 +21317,7 @@ CR_ID_Continue[] = { 651,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -14814,8 +21349,7 @@ CR_ID_Continue[] = { 651,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -14826,7 +21360,7 @@ CR_ID_Continue[] = { 651,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -14840,14 +21374,13 @@ CR_ID_Continue[] = { 651,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d66, 0x0d6f,
0x0d7a, 0x0d7f,
@@ -14941,7 +21474,7 @@ CR_ID_Continue[] = { 651,
0x17e0, 0x17e9,
0x180b, 0x180d,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -14966,11 +21499,13 @@ CR_ID_Continue[] = { 651,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1cd4, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -15034,15 +21569,16 @@ CR_ID_Continue[] = { 651,
0x3031, 0x3035,
0x3038, 0x303c,
0x3041, 0x3096,
-0x3099, 0x309f,
+0x3099, 0x309a,
+0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -15052,16 +21588,14 @@ CR_ID_Continue[] = { 651,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa827,
0xa840, 0xa873,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8e0, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
+0xa8fd, 0xa92d,
0xa930, 0xa953,
0xa960, 0xa97c,
0xa980, 0xa9c0,
@@ -15099,16 +21633,22 @@ CR_ID_Continue[] = { 651,
0xfb40, 0xfb41,
0xfb43, 0xfb44,
0xfb46, 0xfbb1,
-0xfbd3, 0xfd3d,
+0xfbd3, 0xfc5d,
+0xfc64, 0xfd3d,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
-0xfdf0, 0xfdfb,
+0xfdf0, 0xfdf9,
0xfe00, 0xfe0f,
0xfe20, 0xfe2f,
0xfe33, 0xfe34,
0xfe4d, 0xfe4f,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
+0xfe71, 0xfe71,
+0xfe73, 0xfe73,
+0xfe77, 0xfe77,
+0xfe79, 0xfe79,
+0xfe7b, 0xfe7b,
+0xfe7d, 0xfe7d,
+0xfe7f, 0xfefc,
0xff10, 0xff19,
0xff21, 0xff3a,
0xff3f, 0xff3f,
@@ -15131,7 +21671,7 @@ CR_ID_Continue[] = { 651,
0x102a0, 0x102d0,
0x102e0, 0x102e0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
@@ -15139,6 +21679,8 @@ CR_ID_Continue[] = { 651,
0x103d1, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -15162,7 +21704,7 @@ CR_ID_Continue[] = { 651,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
0x10a3f, 0x10a3f,
0x10a60, 0x10a7c,
@@ -15176,6 +21718,11 @@ CR_ID_Continue[] = { 651,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f50,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -15183,14 +21730,16 @@ CR_ID_Continue[] = { 651,
0x110f0, 0x110f9,
0x11100, 0x11134,
0x11136, 0x1113f,
+0x11144, 0x11146,
0x11150, 0x11173,
0x11176, 0x11176,
0x11180, 0x111c4,
-0x111ca, 0x111cc,
+0x111c9, 0x111cc,
0x111d0, 0x111da,
0x111dc, 0x111dc,
0x11200, 0x11211,
0x11213, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -15205,7 +21754,7 @@ CR_ID_Continue[] = { 651,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -15213,6 +21762,9 @@ CR_ID_Continue[] = { 651,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x1144a,
+0x11450, 0x11459,
+0x1145e, 0x1145e,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -15224,12 +21776,39 @@ CR_ID_Continue[] = { 651,
0x11650, 0x11659,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x11739,
+0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x11a00, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11a99,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -15245,10 +21824,15 @@ CR_ID_Continue[] = { 651,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -15297,8 +21881,15 @@ CR_ID_Continue[] = { 651,
0x1da84, 0x1da84,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -15336,13 +21927,14 @@ CR_ID_Continue[] = { 651,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* END of CR_ID_Continue */
+}; /* END of CR_XID_Continue */
/* PROPERTY: 'XID_Start': Derived Property */
static const OnigCodePoint
-CR_XID_Start[] = { 562,
+CR_XID_Start[] = { 606,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -15368,9 +21960,9 @@ CR_XID_Start[] = { 562,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0620, 0x064a,
0x066e, 0x066f,
0x0671, 0x06d3,
@@ -15391,7 +21983,9 @@ CR_XID_Start[] = { 562,
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -15408,6 +22002,7 @@ CR_XID_Start[] = { 562,
0x09dc, 0x09dd,
0x09df, 0x09e1,
0x09f0, 0x09f1,
+0x09fc, 0x09fc,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
0x0a13, 0x0a28,
@@ -15456,6 +22051,7 @@ CR_XID_Start[] = { 562,
0x0c3d, 0x0c3d,
0x0c58, 0x0c5a,
0x0c60, 0x0c61,
+0x0c80, 0x0c80,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -15470,6 +22066,7 @@ CR_XID_Start[] = { 562,
0x0d12, 0x0d3a,
0x0d3d, 0x0d3d,
0x0d4e, 0x0d4e,
+0x0d54, 0x0d56,
0x0d5f, 0x0d61,
0x0d7a, 0x0d7f,
0x0d85, 0x0d96,
@@ -15547,7 +22144,7 @@ CR_XID_Start[] = { 562,
0x1780, 0x17b3,
0x17d7, 0x17d7,
0x17dc, 0x17dc,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18a8,
0x18aa, 0x18aa,
0x18b0, 0x18f5,
@@ -15567,6 +22164,9 @@ CR_XID_Start[] = { 562,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
0x1cf5, 0x1cf6,
@@ -15633,12 +22233,12 @@ CR_XID_Start[] = { 562,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -15649,8 +22249,7 @@ CR_XID_Start[] = { 562,
0xa6a0, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
@@ -15659,7 +22258,7 @@ CR_XID_Start[] = { 562,
0xa882, 0xa8b3,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa90a, 0xa925,
0xa930, 0xa946,
0xa960, 0xa97c,
@@ -15736,13 +22335,15 @@ CR_XID_Start[] = { 562,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x10375,
0x10380, 0x1039d,
0x103a0, 0x103c3,
0x103c8, 0x103cf,
0x103d1, 0x103d5,
0x10400, 0x1049d,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -15765,7 +22366,7 @@ CR_XID_Start[] = { 562,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -15777,10 +22378,15 @@ CR_XID_Start[] = { 562,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d23,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11003, 0x11037,
0x11083, 0x110af,
0x110d0, 0x110e8,
0x11103, 0x11126,
+0x11144, 0x11144,
0x11150, 0x11172,
0x11176, 0x11176,
0x11183, 0x111b2,
@@ -15804,6 +22410,8 @@ CR_XID_Start[] = { 562,
0x1133d, 0x1133d,
0x11350, 0x11350,
0x1135d, 0x11361,
+0x11400, 0x11434,
+0x11447, 0x1144a,
0x11480, 0x114af,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -15812,10 +22420,31 @@ CR_XID_Start[] = { 562,
0x11600, 0x1162f,
0x11644, 0x11644,
0x11680, 0x116aa,
-0x11700, 0x11719,
+0x11700, 0x1171a,
+0x11800, 0x1182b,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x11a00, 0x11a00,
+0x11a0b, 0x11a32,
+0x11a3a, 0x11a3a,
+0x11a50, 0x11a50,
+0x11a5c, 0x11a83,
+0x11a86, 0x11a89,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c2e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d30,
+0x11d46, 0x11d46,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d89,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef2,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -15828,10 +22457,15 @@ CR_XID_Start[] = { 562,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f50,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -15867,6 +22501,7 @@ CR_XID_Start[] = { 562,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -15904,2526 +22539,10 @@ CR_XID_Start[] = { 562,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_XID_Start */
-/* PROPERTY: 'XID_Continue': Derived Property */
-static const OnigCodePoint
-CR_XID_Continue[] = { 658,
-0x0030, 0x0039,
-0x0041, 0x005a,
-0x005f, 0x005f,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00b5, 0x00b5,
-0x00b7, 0x00b7,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02c1,
-0x02c6, 0x02d1,
-0x02e0, 0x02e4,
-0x02ec, 0x02ec,
-0x02ee, 0x02ee,
-0x0300, 0x0374,
-0x0376, 0x0377,
-0x037b, 0x037d,
-0x037f, 0x037f,
-0x0386, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03f5,
-0x03f7, 0x0481,
-0x0483, 0x0487,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x0559,
-0x0561, 0x0587,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f2,
-0x0610, 0x061a,
-0x0620, 0x0669,
-0x066e, 0x06d3,
-0x06d5, 0x06dc,
-0x06df, 0x06e8,
-0x06ea, 0x06fc,
-0x06ff, 0x06ff,
-0x0710, 0x074a,
-0x074d, 0x07b1,
-0x07c0, 0x07f5,
-0x07fa, 0x07fa,
-0x0800, 0x082d,
-0x0840, 0x085b,
-0x08a0, 0x08b4,
-0x08e3, 0x0963,
-0x0966, 0x096f,
-0x0971, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
-0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09f1,
-0x0a01, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-0x0a81, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
-0x0b01, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b6f,
-0x0b71, 0x0b71,
-0x0b82, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d6f,
-0x0d7a, 0x0d7f,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df3,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e4e,
-0x0e50, 0x0e59,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-0x0f00, 0x0f00,
-0x0f18, 0x0f19,
-0x0f20, 0x0f29,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f71, 0x0f84,
-0x0f86, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x1000, 0x1049,
-0x1050, 0x109d,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x135f,
-0x1369, 0x1371,
-0x1380, 0x138f,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1401, 0x166c,
-0x166f, 0x167f,
-0x1681, 0x169a,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1714,
-0x1720, 0x1734,
-0x1740, 0x1753,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1772, 0x1773,
-0x1780, 0x17d3,
-0x17d7, 0x17d7,
-0x17dc, 0x17dd,
-0x17e0, 0x17e9,
-0x180b, 0x180d,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1946, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x1a00, 0x1a1b,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa7, 0x1aa7,
-0x1ab0, 0x1abd,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b59,
-0x1b6b, 0x1b73,
-0x1b80, 0x1bf3,
-0x1c00, 0x1c37,
-0x1c40, 0x1c49,
-0x1c4d, 0x1c7d,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fbc,
-0x1fbe, 0x1fbe,
-0x1fc2, 0x1fc4,
-0x1fc6, 0x1fcc,
-0x1fd0, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fe0, 0x1fec,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffc,
-0x203f, 0x2040,
-0x2054, 0x2054,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20f0,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2118, 0x211d,
-0x2124, 0x2124,
-0x2126, 0x2126,
-0x2128, 0x2128,
-0x212a, 0x2139,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2ce4,
-0x2ceb, 0x2cf3,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d6f,
-0x2d7f, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x2de0, 0x2dff,
-0x3005, 0x3007,
-0x3021, 0x302f,
-0x3031, 0x3035,
-0x3038, 0x303c,
-0x3041, 0x3096,
-0x3099, 0x309a,
-0x309d, 0x309f,
-0x30a1, 0x30fa,
-0x30fc, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x31a0, 0x31ba,
-0x31f0, 0x31ff,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xa000, 0xa48c,
-0xa4d0, 0xa4fd,
-0xa500, 0xa60c,
-0xa610, 0xa62b,
-0xa640, 0xa66f,
-0xa674, 0xa67d,
-0xa67f, 0xa6f1,
-0xa717, 0xa71f,
-0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa827,
-0xa840, 0xa873,
-0xa880, 0xa8c4,
-0xa8d0, 0xa8d9,
-0xa8e0, 0xa8f7,
-0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
-0xa930, 0xa953,
-0xa960, 0xa97c,
-0xa980, 0xa9c0,
-0xa9cf, 0xa9d9,
-0xa9e0, 0xa9fe,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa60, 0xaa76,
-0xaa7a, 0xaac2,
-0xaadb, 0xaadd,
-0xaae0, 0xaaef,
-0xaaf2, 0xaaf6,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab5a,
-0xab5c, 0xab65,
-0xab70, 0xabea,
-0xabec, 0xabed,
-0xabf0, 0xabf9,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb28,
-0xfb2a, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbb1,
-0xfbd3, 0xfc5d,
-0xfc64, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdf9,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xfe33, 0xfe34,
-0xfe4d, 0xfe4f,
-0xfe71, 0xfe71,
-0xfe73, 0xfe73,
-0xfe77, 0xfe77,
-0xfe79, 0xfe79,
-0xfe7b, 0xfe7b,
-0xfe7d, 0xfe7d,
-0xfe7f, 0xfefc,
-0xff10, 0xff19,
-0xff21, 0xff3a,
-0xff3f, 0xff3f,
-0xff41, 0xff5a,
-0xff66, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10140, 0x10174,
-0x101fd, 0x101fd,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x102e0, 0x102e0,
-0x10300, 0x1031f,
-0x10330, 0x1034a,
-0x10350, 0x1037a,
-0x10380, 0x1039d,
-0x103a0, 0x103c3,
-0x103c8, 0x103cf,
-0x103d1, 0x103d5,
-0x10400, 0x1049d,
-0x104a0, 0x104a9,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10860, 0x10876,
-0x10880, 0x1089e,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x10900, 0x10915,
-0x10920, 0x10939,
-0x10980, 0x109b7,
-0x109be, 0x109bf,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10a60, 0x10a7c,
-0x10a80, 0x10a9c,
-0x10ac0, 0x10ac7,
-0x10ac9, 0x10ae6,
-0x10b00, 0x10b35,
-0x10b40, 0x10b55,
-0x10b60, 0x10b72,
-0x10b80, 0x10b91,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x11000, 0x11046,
-0x11066, 0x1106f,
-0x1107f, 0x110ba,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11100, 0x11134,
-0x11136, 0x1113f,
-0x11150, 0x11173,
-0x11176, 0x11176,
-0x11180, 0x111c4,
-0x111ca, 0x111cc,
-0x111d0, 0x111da,
-0x111dc, 0x111dc,
-0x11200, 0x11211,
-0x11213, 0x11237,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a8,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x11480, 0x114c5,
-0x114c7, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115b5,
-0x115b8, 0x115c0,
-0x115d8, 0x115dd,
-0x11600, 0x11640,
-0x11644, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x11739,
-0x118a0, 0x118e9,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af4,
-0x16b00, 0x16b36,
-0x16b40, 0x16b43,
-0x16b50, 0x16b59,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e800, 0x1e8c4,
-0x1e8d0, 0x1e8d6,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-0xe0100, 0xe01ef,
-}; /* END of CR_XID_Continue */
-
-/* PROPERTY: 'Default_Ignorable_Code_Point': Derived Property */
-static const OnigCodePoint
-CR_Default_Ignorable_Code_Point[] = { 17,
-0x00ad, 0x00ad,
-0x034f, 0x034f,
-0x061c, 0x061c,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x180b, 0x180e,
-0x200b, 0x200f,
-0x202a, 0x202e,
-0x2060, 0x206f,
-0x3164, 0x3164,
-0xfe00, 0xfe0f,
-0xfeff, 0xfeff,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0x1bca0, 0x1bca3,
-0x1d173, 0x1d17a,
-0xe0000, 0xe0fff,
-}; /* END of CR_Default_Ignorable_Code_Point */
-
-/* PROPERTY: 'Grapheme_Extend': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Extend[] = { 283,
-0x0300, 0x036f,
-0x0483, 0x0489,
-0x0591, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06df, 0x06e4,
-0x06e7, 0x06e8,
-0x06ea, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f3,
-0x0816, 0x0819,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082d,
-0x0859, 0x085b,
-0x08e3, 0x0902,
-0x093a, 0x093a,
-0x093c, 0x093c,
-0x0941, 0x0948,
-0x094d, 0x094d,
-0x0951, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0981,
-0x09bc, 0x09bc,
-0x09be, 0x09be,
-0x09c1, 0x09c4,
-0x09cd, 0x09cd,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a02,
-0x0a3c, 0x0a3c,
-0x0a41, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a82,
-0x0abc, 0x0abc,
-0x0ac1, 0x0ac5,
-0x0ac7, 0x0ac8,
-0x0acd, 0x0acd,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b01,
-0x0b3c, 0x0b3c,
-0x0b3e, 0x0b3f,
-0x0b41, 0x0b44,
-0x0b4d, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bbe,
-0x0bc0, 0x0bc0,
-0x0bcd, 0x0bcd,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c00,
-0x0c3e, 0x0c40,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c81,
-0x0cbc, 0x0cbc,
-0x0cbf, 0x0cbf,
-0x0cc2, 0x0cc2,
-0x0cc6, 0x0cc6,
-0x0ccc, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d01,
-0x0d3e, 0x0d3e,
-0x0d41, 0x0d44,
-0x0d4d, 0x0d4d,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dcf,
-0x0dd2, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0ddf, 0x0ddf,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e47, 0x0e4e,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ec8, 0x0ecd,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f71, 0x0f7e,
-0x0f80, 0x0f84,
-0x0f86, 0x0f87,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fc6, 0x0fc6,
-0x102d, 0x1030,
-0x1032, 0x1037,
-0x1039, 0x103a,
-0x103d, 0x103e,
-0x1058, 0x1059,
-0x105e, 0x1060,
-0x1071, 0x1074,
-0x1082, 0x1082,
-0x1085, 0x1086,
-0x108d, 0x108d,
-0x109d, 0x109d,
-0x135d, 0x135f,
-0x1712, 0x1714,
-0x1732, 0x1734,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b4, 0x17b5,
-0x17b7, 0x17bd,
-0x17c6, 0x17c6,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x180b, 0x180d,
-0x18a9, 0x18a9,
-0x1920, 0x1922,
-0x1927, 0x1928,
-0x1932, 0x1932,
-0x1939, 0x193b,
-0x1a17, 0x1a18,
-0x1a1b, 0x1a1b,
-0x1a56, 0x1a56,
-0x1a58, 0x1a5e,
-0x1a60, 0x1a60,
-0x1a62, 0x1a62,
-0x1a65, 0x1a6c,
-0x1a73, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abe,
-0x1b00, 0x1b03,
-0x1b34, 0x1b34,
-0x1b36, 0x1b3a,
-0x1b3c, 0x1b3c,
-0x1b42, 0x1b42,
-0x1b6b, 0x1b73,
-0x1b80, 0x1b81,
-0x1ba2, 0x1ba5,
-0x1ba8, 0x1ba9,
-0x1bab, 0x1bad,
-0x1be6, 0x1be6,
-0x1be8, 0x1be9,
-0x1bed, 0x1bed,
-0x1bef, 0x1bf1,
-0x1c2c, 0x1c33,
-0x1c36, 0x1c37,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x200c, 0x200d,
-0x20d0, 0x20f0,
-0x2cef, 0x2cf1,
-0x2d7f, 0x2d7f,
-0x2de0, 0x2dff,
-0x302a, 0x302f,
-0x3099, 0x309a,
-0xa66f, 0xa672,
-0xa674, 0xa67d,
-0xa69e, 0xa69f,
-0xa6f0, 0xa6f1,
-0xa802, 0xa802,
-0xa806, 0xa806,
-0xa80b, 0xa80b,
-0xa825, 0xa826,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa926, 0xa92d,
-0xa947, 0xa951,
-0xa980, 0xa982,
-0xa9b3, 0xa9b3,
-0xa9b6, 0xa9b9,
-0xa9bc, 0xa9bc,
-0xa9e5, 0xa9e5,
-0xaa29, 0xaa2e,
-0xaa31, 0xaa32,
-0xaa35, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4c,
-0xaa7c, 0xaa7c,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabf,
-0xaac1, 0xaac1,
-0xaaec, 0xaaed,
-0xaaf6, 0xaaf6,
-0xabe5, 0xabe5,
-0xabe8, 0xabe8,
-0xabed, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2f,
-0xff9e, 0xff9f,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a3f,
-0x10ae5, 0x10ae6,
-0x11001, 0x11001,
-0x11038, 0x11046,
-0x1107f, 0x11081,
-0x110b3, 0x110b6,
-0x110b9, 0x110ba,
-0x11100, 0x11102,
-0x11127, 0x1112b,
-0x1112d, 0x11134,
-0x11173, 0x11173,
-0x11180, 0x11181,
-0x111b6, 0x111be,
-0x111ca, 0x111cc,
-0x1122f, 0x11231,
-0x11234, 0x11234,
-0x11236, 0x11237,
-0x112df, 0x112df,
-0x112e3, 0x112ea,
-0x11300, 0x11301,
-0x1133c, 0x1133c,
-0x1133e, 0x1133e,
-0x11340, 0x11340,
-0x11357, 0x11357,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114b0, 0x114b0,
-0x114b3, 0x114b8,
-0x114ba, 0x114ba,
-0x114bd, 0x114bd,
-0x114bf, 0x114c0,
-0x114c2, 0x114c3,
-0x115af, 0x115af,
-0x115b2, 0x115b5,
-0x115bc, 0x115bd,
-0x115bf, 0x115c0,
-0x115dc, 0x115dd,
-0x11633, 0x1163a,
-0x1163d, 0x1163d,
-0x1163f, 0x11640,
-0x116ab, 0x116ab,
-0x116ad, 0x116ad,
-0x116b0, 0x116b5,
-0x116b7, 0x116b7,
-0x1171d, 0x1171f,
-0x11722, 0x11725,
-0x11727, 0x1172b,
-0x16af0, 0x16af4,
-0x16b30, 0x16b36,
-0x16f8f, 0x16f92,
-0x1bc9d, 0x1bc9e,
-0x1d165, 0x1d165,
-0x1d167, 0x1d169,
-0x1d16e, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1d242, 0x1d244,
-0x1da00, 0x1da36,
-0x1da3b, 0x1da6c,
-0x1da75, 0x1da75,
-0x1da84, 0x1da84,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-0x1e8d0, 0x1e8d6,
-0xe0100, 0xe01ef,
-}; /* END of CR_Grapheme_Extend */
-
-/* PROPERTY: 'Grapheme_Base': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Base[] = { 743,
-0x0020, 0x007e,
-0x00a0, 0x00ac,
-0x00ae, 0x02ff,
-0x0370, 0x0377,
-0x037a, 0x037f,
-0x0384, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x0482,
-0x048a, 0x052f,
-0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
-0x058d, 0x058f,
-0x05be, 0x05be,
-0x05c0, 0x05c0,
-0x05c3, 0x05c3,
-0x05c6, 0x05c6,
-0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0x0606, 0x060f,
-0x061b, 0x061b,
-0x061e, 0x064a,
-0x0660, 0x066f,
-0x0671, 0x06d5,
-0x06de, 0x06de,
-0x06e5, 0x06e6,
-0x06e9, 0x06e9,
-0x06ee, 0x070d,
-0x0710, 0x0710,
-0x0712, 0x072f,
-0x074d, 0x07a5,
-0x07b1, 0x07b1,
-0x07c0, 0x07ea,
-0x07f4, 0x07fa,
-0x0800, 0x0815,
-0x081a, 0x081a,
-0x0824, 0x0824,
-0x0828, 0x0828,
-0x0830, 0x083e,
-0x0840, 0x0858,
-0x085e, 0x085e,
-0x08a0, 0x08b4,
-0x0903, 0x0939,
-0x093b, 0x093b,
-0x093d, 0x0940,
-0x0949, 0x094c,
-0x094e, 0x0950,
-0x0958, 0x0961,
-0x0964, 0x0980,
-0x0982, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bd, 0x09bd,
-0x09bf, 0x09c0,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09ce, 0x09ce,
-0x09dc, 0x09dd,
-0x09df, 0x09e1,
-0x09e6, 0x09fb,
-0x0a03, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3e, 0x0a40,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a6f,
-0x0a72, 0x0a74,
-0x0a83, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abd, 0x0ac0,
-0x0ac9, 0x0ac9,
-0x0acb, 0x0acc,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae1,
-0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
-0x0b02, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3d, 0x0b3d,
-0x0b40, 0x0b40,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b61,
-0x0b66, 0x0b77,
-0x0b83, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbf, 0x0bbf,
-0x0bc1, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd0, 0x0bd0,
-0x0be6, 0x0bfa,
-0x0c01, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c3d,
-0x0c41, 0x0c44,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c61,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c82, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbd, 0x0cbe,
-0x0cc0, 0x0cc1,
-0x0cc3, 0x0cc4,
-0x0cc7, 0x0cc8,
-0x0cca, 0x0ccb,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce1,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-0x0d02, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d3d,
-0x0d3f, 0x0d40,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d4e, 0x0d4e,
-0x0d5f, 0x0d61,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dd0, 0x0dd1,
-0x0dd8, 0x0dde,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
-0x0e01, 0x0e30,
-0x0e32, 0x0e33,
-0x0e3f, 0x0e46,
-0x0e4f, 0x0e5b,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb0,
-0x0eb2, 0x0eb3,
-0x0ebd, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-0x0f00, 0x0f17,
-0x0f1a, 0x0f34,
-0x0f36, 0x0f36,
-0x0f38, 0x0f38,
-0x0f3a, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f7f, 0x0f7f,
-0x0f85, 0x0f85,
-0x0f88, 0x0f8c,
-0x0fbe, 0x0fc5,
-0x0fc7, 0x0fcc,
-0x0fce, 0x0fda,
-0x1000, 0x102c,
-0x1031, 0x1031,
-0x1038, 0x1038,
-0x103b, 0x103c,
-0x103f, 0x1057,
-0x105a, 0x105d,
-0x1061, 0x1070,
-0x1075, 0x1081,
-0x1083, 0x1084,
-0x1087, 0x108c,
-0x108e, 0x109c,
-0x109e, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x1360, 0x137c,
-0x1380, 0x1399,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0x1400, 0x169c,
-0x16a0, 0x16f8,
-0x1700, 0x170c,
-0x170e, 0x1711,
-0x1720, 0x1731,
-0x1735, 0x1736,
-0x1740, 0x1751,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1780, 0x17b3,
-0x17b6, 0x17b6,
-0x17be, 0x17c5,
-0x17c7, 0x17c8,
-0x17d4, 0x17dc,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x1800, 0x180a,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18a8,
-0x18aa, 0x18aa,
-0x18b0, 0x18f5,
-0x1900, 0x191e,
-0x1923, 0x1926,
-0x1929, 0x192b,
-0x1930, 0x1931,
-0x1933, 0x1938,
-0x1940, 0x1940,
-0x1944, 0x196d,
-0x1970, 0x1974,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x1a16,
-0x1a19, 0x1a1a,
-0x1a1e, 0x1a55,
-0x1a57, 0x1a57,
-0x1a61, 0x1a61,
-0x1a63, 0x1a64,
-0x1a6d, 0x1a72,
-0x1a80, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-0x1b04, 0x1b33,
-0x1b35, 0x1b35,
-0x1b3b, 0x1b3b,
-0x1b3d, 0x1b41,
-0x1b43, 0x1b4b,
-0x1b50, 0x1b6a,
-0x1b74, 0x1b7c,
-0x1b82, 0x1ba1,
-0x1ba6, 0x1ba7,
-0x1baa, 0x1baa,
-0x1bae, 0x1be5,
-0x1be7, 0x1be7,
-0x1bea, 0x1bec,
-0x1bee, 0x1bee,
-0x1bf2, 0x1bf3,
-0x1bfc, 0x1c2b,
-0x1c34, 0x1c35,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
-0x1cf5, 0x1cf6,
-0x1d00, 0x1dbf,
-0x1e00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2000, 0x200a,
-0x2010, 0x2027,
-0x202f, 0x205f,
-0x2070, 0x2071,
-0x2074, 0x208e,
-0x2090, 0x209c,
-0x20a0, 0x20be,
-0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-0x2c60, 0x2cee,
-0x2cf2, 0x2cf3,
-0x2cf9, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0x2e00, 0x2e42,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x2ff0, 0x2ffb,
-0x3000, 0x3029,
-0x3030, 0x303f,
-0x3041, 0x3096,
-0x309b, 0x30ff,
-0x3105, 0x312d,
-0x3131, 0x318e,
-0x3190, 0x31ba,
-0x31c0, 0x31e3,
-0x31f0, 0x321e,
-0x3220, 0x32fe,
-0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
-0xa000, 0xa48c,
-0xa490, 0xa4c6,
-0xa4d0, 0xa62b,
-0xa640, 0xa66e,
-0xa673, 0xa673,
-0xa67e, 0xa69d,
-0xa6a0, 0xa6ef,
-0xa6f2, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa801,
-0xa803, 0xa805,
-0xa807, 0xa80a,
-0xa80c, 0xa824,
-0xa827, 0xa82b,
-0xa830, 0xa839,
-0xa840, 0xa877,
-0xa880, 0xa8c3,
-0xa8ce, 0xa8d9,
-0xa8f2, 0xa8fd,
-0xa900, 0xa925,
-0xa92e, 0xa946,
-0xa952, 0xa953,
-0xa95f, 0xa97c,
-0xa983, 0xa9b2,
-0xa9b4, 0xa9b5,
-0xa9ba, 0xa9bb,
-0xa9bd, 0xa9cd,
-0xa9cf, 0xa9d9,
-0xa9de, 0xa9e4,
-0xa9e6, 0xa9fe,
-0xaa00, 0xaa28,
-0xaa2f, 0xaa30,
-0xaa33, 0xaa34,
-0xaa40, 0xaa42,
-0xaa44, 0xaa4b,
-0xaa4d, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa7b,
-0xaa7d, 0xaaaf,
-0xaab1, 0xaab1,
-0xaab5, 0xaab6,
-0xaab9, 0xaabd,
-0xaac0, 0xaac0,
-0xaac2, 0xaac2,
-0xaadb, 0xaaeb,
-0xaaee, 0xaaf5,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-0xab30, 0xab65,
-0xab70, 0xabe4,
-0xabe6, 0xabe7,
-0xabe9, 0xabec,
-0xabf0, 0xabf9,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0xfb00, 0xfb06,
-0xfb13, 0xfb17,
-0xfb1d, 0xfb1d,
-0xfb1f, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfbc1,
-0xfbd3, 0xfd3f,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0xff01, 0xff9d,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfffc, 0xfffd,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1018c,
-0x10190, 0x1019b,
-0x101a0, 0x101a0,
-0x101d0, 0x101fc,
-0x10280, 0x1029c,
-0x102a0, 0x102d0,
-0x102e1, 0x102fb,
-0x10300, 0x10323,
-0x10330, 0x1034a,
-0x10350, 0x10375,
-0x10380, 0x1039d,
-0x1039f, 0x103c3,
-0x103c8, 0x103d5,
-0x10400, 0x1049d,
-0x104a0, 0x104a9,
-0x10500, 0x10527,
-0x10530, 0x10563,
-0x1056f, 0x1056f,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x10855,
-0x10857, 0x1089e,
-0x108a7, 0x108af,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x108fb, 0x1091b,
-0x1091f, 0x10939,
-0x1093f, 0x1093f,
-0x10980, 0x109b7,
-0x109bc, 0x109cf,
-0x109d2, 0x10a00,
-0x10a10, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a40, 0x10a47,
-0x10a50, 0x10a58,
-0x10a60, 0x10a9f,
-0x10ac0, 0x10ae4,
-0x10aeb, 0x10af6,
-0x10b00, 0x10b35,
-0x10b39, 0x10b55,
-0x10b58, 0x10b72,
-0x10b78, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
-0x10c00, 0x10c48,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-0x10e60, 0x10e7e,
-0x11000, 0x11000,
-0x11002, 0x11037,
-0x11047, 0x1104d,
-0x11052, 0x1106f,
-0x11082, 0x110b2,
-0x110b7, 0x110b8,
-0x110bb, 0x110bc,
-0x110be, 0x110c1,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-0x11103, 0x11126,
-0x1112c, 0x1112c,
-0x11136, 0x11143,
-0x11150, 0x11172,
-0x11174, 0x11176,
-0x11182, 0x111b5,
-0x111bf, 0x111c9,
-0x111cd, 0x111cd,
-0x111d0, 0x111df,
-0x111e1, 0x111f4,
-0x11200, 0x11211,
-0x11213, 0x1122e,
-0x11232, 0x11233,
-0x11235, 0x11235,
-0x11238, 0x1123d,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a9,
-0x112b0, 0x112de,
-0x112e0, 0x112e2,
-0x112f0, 0x112f9,
-0x11302, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133d, 0x1133d,
-0x1133f, 0x1133f,
-0x11341, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x1135d, 0x11363,
-0x11480, 0x114af,
-0x114b1, 0x114b2,
-0x114b9, 0x114b9,
-0x114bb, 0x114bc,
-0x114be, 0x114be,
-0x114c1, 0x114c1,
-0x114c4, 0x114c7,
-0x114d0, 0x114d9,
-0x11580, 0x115ae,
-0x115b0, 0x115b1,
-0x115b8, 0x115bb,
-0x115be, 0x115be,
-0x115c1, 0x115db,
-0x11600, 0x11632,
-0x1163b, 0x1163c,
-0x1163e, 0x1163e,
-0x11641, 0x11644,
-0x11650, 0x11659,
-0x11680, 0x116aa,
-0x116ac, 0x116ac,
-0x116ae, 0x116af,
-0x116b6, 0x116b6,
-0x116c0, 0x116c9,
-0x11700, 0x11719,
-0x11720, 0x11721,
-0x11726, 0x11726,
-0x11730, 0x1173f,
-0x118a0, 0x118f2,
-0x118ff, 0x118ff,
-0x11ac0, 0x11af8,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
-0x12480, 0x12543,
-0x13000, 0x1342e,
-0x14400, 0x14646,
-0x16800, 0x16a38,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
-0x16ad0, 0x16aed,
-0x16af5, 0x16af5,
-0x16b00, 0x16b2f,
-0x16b37, 0x16b45,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9c,
-0x1bc9f, 0x1bc9f,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d164,
-0x1d166, 0x1d166,
-0x1d16a, 0x1d16d,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d200, 0x1d241,
-0x1d245, 0x1d245,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d9ff,
-0x1da37, 0x1da3a,
-0x1da6d, 0x1da74,
-0x1da76, 0x1da83,
-0x1da85, 0x1da8b,
-0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8cf,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Grapheme_Base */
-
-/* PROPERTY: 'Grapheme_Link': Derived Property */
-static const OnigCodePoint
-CR_Grapheme_Link[] = { 41,
-0x094d, 0x094d,
-0x09cd, 0x09cd,
-0x0a4d, 0x0a4d,
-0x0acd, 0x0acd,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e3a, 0x0e3a,
-0x0f84, 0x0f84,
-0x1039, 0x103a,
-0x1714, 0x1714,
-0x1734, 0x1734,
-0x17d2, 0x17d2,
-0x1a60, 0x1a60,
-0x1b44, 0x1b44,
-0x1baa, 0x1bab,
-0x1bf2, 0x1bf3,
-0x2d7f, 0x2d7f,
-0xa806, 0xa806,
-0xa8c4, 0xa8c4,
-0xa953, 0xa953,
-0xa9c0, 0xa9c0,
-0xaaf6, 0xaaf6,
-0xabed, 0xabed,
-0x10a3f, 0x10a3f,
-0x11046, 0x11046,
-0x1107f, 0x1107f,
-0x110b9, 0x110b9,
-0x11133, 0x11134,
-0x111c0, 0x111c0,
-0x11235, 0x11235,
-0x112ea, 0x112ea,
-0x1134d, 0x1134d,
-0x114c2, 0x114c2,
-0x115bf, 0x115bf,
-0x1163f, 0x1163f,
-0x116b6, 0x116b6,
-0x1172b, 0x1172b,
-}; /* END of CR_Grapheme_Link */
-
-/* PROPERTY: 'Common': Script */
-static const OnigCodePoint
-CR_Common[] = { 161,
-0x0000, 0x0040,
-0x005b, 0x0060,
-0x007b, 0x00a9,
-0x00ab, 0x00b9,
-0x00bb, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x02b9, 0x02df,
-0x02e5, 0x02e9,
-0x02ec, 0x02ff,
-0x0374, 0x0374,
-0x037e, 0x037e,
-0x0385, 0x0385,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x0605, 0x0605,
-0x060c, 0x060c,
-0x061b, 0x061c,
-0x061f, 0x061f,
-0x0640, 0x0640,
-0x06dd, 0x06dd,
-0x0964, 0x0965,
-0x0e3f, 0x0e3f,
-0x0fd5, 0x0fd8,
-0x10fb, 0x10fb,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x1802, 0x1803,
-0x1805, 0x1805,
-0x1cd3, 0x1cd3,
-0x1ce1, 0x1ce1,
-0x1ce9, 0x1cec,
-0x1cee, 0x1cf3,
-0x1cf5, 0x1cf6,
-0x2000, 0x200b,
-0x200e, 0x2064,
-0x2066, 0x2070,
-0x2074, 0x207e,
-0x2080, 0x208e,
-0x20a0, 0x20be,
-0x2100, 0x2125,
-0x2127, 0x2129,
-0x212c, 0x2131,
-0x2133, 0x214d,
-0x214f, 0x215f,
-0x2189, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
-0x2440, 0x244a,
-0x2460, 0x27ff,
-0x2900, 0x2b73,
-0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
-0x2e00, 0x2e42,
-0x2ff0, 0x2ffb,
-0x3000, 0x3004,
-0x3006, 0x3006,
-0x3008, 0x3020,
-0x3030, 0x3037,
-0x303c, 0x303f,
-0x309b, 0x309c,
-0x30a0, 0x30a0,
-0x30fb, 0x30fc,
-0x3190, 0x319f,
-0x31c0, 0x31e3,
-0x3220, 0x325f,
-0x327f, 0x32cf,
-0x3358, 0x33ff,
-0x4dc0, 0x4dff,
-0xa700, 0xa721,
-0xa788, 0xa78a,
-0xa830, 0xa839,
-0xa92e, 0xa92e,
-0xa9cf, 0xa9cf,
-0xab5b, 0xab5b,
-0xfd3e, 0xfd3f,
-0xfe10, 0xfe19,
-0xfe30, 0xfe52,
-0xfe54, 0xfe66,
-0xfe68, 0xfe6b,
-0xfeff, 0xfeff,
-0xff01, 0xff20,
-0xff3b, 0xff40,
-0xff5b, 0xff65,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe0, 0xffe6,
-0xffe8, 0xffee,
-0xfff9, 0xfffd,
-0x10100, 0x10102,
-0x10107, 0x10133,
-0x10137, 0x1013f,
-0x10190, 0x1019b,
-0x101d0, 0x101fc,
-0x102e1, 0x102fb,
-0x1bca0, 0x1bca3,
-0x1d000, 0x1d0f5,
-0x1d100, 0x1d126,
-0x1d129, 0x1d166,
-0x1d16a, 0x1d17a,
-0x1d183, 0x1d184,
-0x1d18c, 0x1d1a9,
-0x1d1ae, 0x1d1e8,
-0x1d300, 0x1d356,
-0x1d360, 0x1d371,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1f000, 0x1f02b,
-0x1f030, 0x1f093,
-0x1f0a0, 0x1f0ae,
-0x1f0b1, 0x1f0bf,
-0x1f0c1, 0x1f0cf,
-0x1f0d1, 0x1f0f5,
-0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
-0x1f1e6, 0x1f1ff,
-0x1f201, 0x1f202,
-0x1f210, 0x1f23a,
-0x1f240, 0x1f248,
-0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
-0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
-0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
-0x1f800, 0x1f80b,
-0x1f810, 0x1f847,
-0x1f850, 0x1f859,
-0x1f860, 0x1f887,
-0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
-0xe0001, 0xe0001,
-0xe0020, 0xe007f,
-}; /* END of CR_Common */
-
-/* PROPERTY: 'Latin': Script */
-static const OnigCodePoint
-CR_Latin[] = { 31,
-0x0041, 0x005a,
-0x0061, 0x007a,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x00c0, 0x00d6,
-0x00d8, 0x00f6,
-0x00f8, 0x02b8,
-0x02e0, 0x02e4,
-0x1d00, 0x1d25,
-0x1d2c, 0x1d5c,
-0x1d62, 0x1d65,
-0x1d6b, 0x1d77,
-0x1d79, 0x1dbe,
-0x1e00, 0x1eff,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x212a, 0x212b,
-0x2132, 0x2132,
-0x214e, 0x214e,
-0x2160, 0x2188,
-0x2c60, 0x2c7f,
-0xa722, 0xa787,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
-0xa7f7, 0xa7ff,
-0xab30, 0xab5a,
-0xab5c, 0xab64,
-0xfb00, 0xfb06,
-0xff21, 0xff3a,
-0xff41, 0xff5a,
-}; /* END of CR_Latin */
-
-/* PROPERTY: 'Greek': Script */
-static const OnigCodePoint
-CR_Greek[] = { 36,
-0x0370, 0x0373,
-0x0375, 0x0377,
-0x037a, 0x037d,
-0x037f, 0x037f,
-0x0384, 0x0384,
-0x0386, 0x0386,
-0x0388, 0x038a,
-0x038c, 0x038c,
-0x038e, 0x03a1,
-0x03a3, 0x03e1,
-0x03f0, 0x03ff,
-0x1d26, 0x1d2a,
-0x1d5d, 0x1d61,
-0x1d66, 0x1d6a,
-0x1dbf, 0x1dbf,
-0x1f00, 0x1f15,
-0x1f18, 0x1f1d,
-0x1f20, 0x1f45,
-0x1f48, 0x1f4d,
-0x1f50, 0x1f57,
-0x1f59, 0x1f59,
-0x1f5b, 0x1f5b,
-0x1f5d, 0x1f5d,
-0x1f5f, 0x1f7d,
-0x1f80, 0x1fb4,
-0x1fb6, 0x1fc4,
-0x1fc6, 0x1fd3,
-0x1fd6, 0x1fdb,
-0x1fdd, 0x1fef,
-0x1ff2, 0x1ff4,
-0x1ff6, 0x1ffe,
-0x2126, 0x2126,
-0xab65, 0xab65,
-0x10140, 0x1018c,
-0x101a0, 0x101a0,
-0x1d200, 0x1d245,
-}; /* END of CR_Greek */
-
-/* PROPERTY: 'Cyrillic': Script */
-static const OnigCodePoint
-CR_Cyrillic[] = { 7,
-0x0400, 0x0484,
-0x0487, 0x052f,
-0x1d2b, 0x1d2b,
-0x1d78, 0x1d78,
-0x2de0, 0x2dff,
-0xa640, 0xa69f,
-0xfe2e, 0xfe2f,
-}; /* END of CR_Cyrillic */
-
-/* PROPERTY: 'Armenian': Script */
-static const OnigCodePoint
-CR_Armenian[] = { 6,
-0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x058a, 0x058a,
-0x058d, 0x058f,
-0xfb13, 0xfb17,
-}; /* END of CR_Armenian */
-
-/* PROPERTY: 'Hebrew': Script */
-static const OnigCodePoint
-CR_Hebrew[] = { 9,
-0x0591, 0x05c7,
-0x05d0, 0x05ea,
-0x05f0, 0x05f4,
-0xfb1d, 0xfb36,
-0xfb38, 0xfb3c,
-0xfb3e, 0xfb3e,
-0xfb40, 0xfb41,
-0xfb43, 0xfb44,
-0xfb46, 0xfb4f,
-}; /* END of CR_Hebrew */
-
-/* PROPERTY: 'Arabic': Script */
-static const OnigCodePoint
-CR_Arabic[] = { 54,
-0x0600, 0x0604,
-0x0606, 0x060b,
-0x060d, 0x061a,
-0x061e, 0x061e,
-0x0620, 0x063f,
-0x0641, 0x064a,
-0x0656, 0x066f,
-0x0671, 0x06dc,
-0x06de, 0x06ff,
-0x0750, 0x077f,
-0x08a0, 0x08b4,
-0x08e3, 0x08ff,
-0xfb50, 0xfbc1,
-0xfbd3, 0xfd3d,
-0xfd50, 0xfd8f,
-0xfd92, 0xfdc7,
-0xfdf0, 0xfdfd,
-0xfe70, 0xfe74,
-0xfe76, 0xfefc,
-0x10e60, 0x10e7e,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-0x1eef0, 0x1eef1,
-}; /* END of CR_Arabic */
-
-/* PROPERTY: 'Syriac': Script */
-static const OnigCodePoint
-CR_Syriac[] = { 3,
-0x0700, 0x070d,
-0x070f, 0x074a,
-0x074d, 0x074f,
-}; /* END of CR_Syriac */
-
-/* PROPERTY: 'Thaana': Script */
-static const OnigCodePoint
-CR_Thaana[] = { 1,
-0x0780, 0x07b1,
-}; /* END of CR_Thaana */
-
-/* PROPERTY: 'Devanagari': Script */
-static const OnigCodePoint
-CR_Devanagari[] = { 4,
-0x0900, 0x0950,
-0x0953, 0x0963,
-0x0966, 0x097f,
-0xa8e0, 0xa8fd,
-}; /* END of CR_Devanagari */
-
-/* PROPERTY: 'Bengali': Script */
-static const OnigCodePoint
-CR_Bengali[] = { 14,
-0x0980, 0x0983,
-0x0985, 0x098c,
-0x098f, 0x0990,
-0x0993, 0x09a8,
-0x09aa, 0x09b0,
-0x09b2, 0x09b2,
-0x09b6, 0x09b9,
-0x09bc, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09ce,
-0x09d7, 0x09d7,
-0x09dc, 0x09dd,
-0x09df, 0x09e3,
-0x09e6, 0x09fb,
-}; /* END of CR_Bengali */
-
-/* PROPERTY: 'Gurmukhi': Script */
-static const OnigCodePoint
-CR_Gurmukhi[] = { 16,
-0x0a01, 0x0a03,
-0x0a05, 0x0a0a,
-0x0a0f, 0x0a10,
-0x0a13, 0x0a28,
-0x0a2a, 0x0a30,
-0x0a32, 0x0a33,
-0x0a35, 0x0a36,
-0x0a38, 0x0a39,
-0x0a3c, 0x0a3c,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4d,
-0x0a51, 0x0a51,
-0x0a59, 0x0a5c,
-0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
-}; /* END of CR_Gurmukhi */
-
-/* PROPERTY: 'Gujarati': Script */
-static const OnigCodePoint
-CR_Gujarati[] = { 14,
-0x0a81, 0x0a83,
-0x0a85, 0x0a8d,
-0x0a8f, 0x0a91,
-0x0a93, 0x0aa8,
-0x0aaa, 0x0ab0,
-0x0ab2, 0x0ab3,
-0x0ab5, 0x0ab9,
-0x0abc, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acd,
-0x0ad0, 0x0ad0,
-0x0ae0, 0x0ae3,
-0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
-}; /* END of CR_Gujarati */
-
-/* PROPERTY: 'Oriya': Script */
-static const OnigCodePoint
-CR_Oriya[] = { 14,
-0x0b01, 0x0b03,
-0x0b05, 0x0b0c,
-0x0b0f, 0x0b10,
-0x0b13, 0x0b28,
-0x0b2a, 0x0b30,
-0x0b32, 0x0b33,
-0x0b35, 0x0b39,
-0x0b3c, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4d,
-0x0b56, 0x0b57,
-0x0b5c, 0x0b5d,
-0x0b5f, 0x0b63,
-0x0b66, 0x0b77,
-}; /* END of CR_Oriya */
-
-/* PROPERTY: 'Tamil': Script */
-static const OnigCodePoint
-CR_Tamil[] = { 16,
-0x0b82, 0x0b83,
-0x0b85, 0x0b8a,
-0x0b8e, 0x0b90,
-0x0b92, 0x0b95,
-0x0b99, 0x0b9a,
-0x0b9c, 0x0b9c,
-0x0b9e, 0x0b9f,
-0x0ba3, 0x0ba4,
-0x0ba8, 0x0baa,
-0x0bae, 0x0bb9,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcd,
-0x0bd0, 0x0bd0,
-0x0bd7, 0x0bd7,
-0x0be6, 0x0bfa,
-}; /* END of CR_Tamil */
-
-/* PROPERTY: 'Telugu': Script */
-static const OnigCodePoint
-CR_Telugu[] = { 13,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
-0x0c0e, 0x0c10,
-0x0c12, 0x0c28,
-0x0c2a, 0x0c39,
-0x0c3d, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4d,
-0x0c55, 0x0c56,
-0x0c58, 0x0c5a,
-0x0c60, 0x0c63,
-0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-}; /* END of CR_Telugu */
-
-/* PROPERTY: 'Kannada': Script */
-static const OnigCodePoint
-CR_Kannada[] = { 14,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
-0x0c8e, 0x0c90,
-0x0c92, 0x0ca8,
-0x0caa, 0x0cb3,
-0x0cb5, 0x0cb9,
-0x0cbc, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccd,
-0x0cd5, 0x0cd6,
-0x0cde, 0x0cde,
-0x0ce0, 0x0ce3,
-0x0ce6, 0x0cef,
-0x0cf1, 0x0cf2,
-}; /* END of CR_Kannada */
-
-/* PROPERTY: 'Malayalam': Script */
-static const OnigCodePoint
-CR_Malayalam[] = { 11,
-0x0d01, 0x0d03,
-0x0d05, 0x0d0c,
-0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
-}; /* END of CR_Malayalam */
-
-/* PROPERTY: 'Sinhala': Script */
-static const OnigCodePoint
-CR_Sinhala[] = { 13,
-0x0d82, 0x0d83,
-0x0d85, 0x0d96,
-0x0d9a, 0x0db1,
-0x0db3, 0x0dbb,
-0x0dbd, 0x0dbd,
-0x0dc0, 0x0dc6,
-0x0dca, 0x0dca,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0de6, 0x0def,
-0x0df2, 0x0df4,
-0x111e1, 0x111f4,
-}; /* END of CR_Sinhala */
-
-/* PROPERTY: 'Thai': Script */
-static const OnigCodePoint
-CR_Thai[] = { 2,
-0x0e01, 0x0e3a,
-0x0e40, 0x0e5b,
-}; /* END of CR_Thai */
-
-/* PROPERTY: 'Lao': Script */
-static const OnigCodePoint
-CR_Lao[] = { 18,
-0x0e81, 0x0e82,
-0x0e84, 0x0e84,
-0x0e87, 0x0e88,
-0x0e8a, 0x0e8a,
-0x0e8d, 0x0e8d,
-0x0e94, 0x0e97,
-0x0e99, 0x0e9f,
-0x0ea1, 0x0ea3,
-0x0ea5, 0x0ea5,
-0x0ea7, 0x0ea7,
-0x0eaa, 0x0eab,
-0x0ead, 0x0eb9,
-0x0ebb, 0x0ebd,
-0x0ec0, 0x0ec4,
-0x0ec6, 0x0ec6,
-0x0ec8, 0x0ecd,
-0x0ed0, 0x0ed9,
-0x0edc, 0x0edf,
-}; /* END of CR_Lao */
-
-/* PROPERTY: 'Tibetan': Script */
-static const OnigCodePoint
-CR_Tibetan[] = { 7,
-0x0f00, 0x0f47,
-0x0f49, 0x0f6c,
-0x0f71, 0x0f97,
-0x0f99, 0x0fbc,
-0x0fbe, 0x0fcc,
-0x0fce, 0x0fd4,
-0x0fd9, 0x0fda,
-}; /* END of CR_Tibetan */
-
-/* PROPERTY: 'Myanmar': Script */
-static const OnigCodePoint
-CR_Myanmar[] = { 3,
-0x1000, 0x109f,
-0xa9e0, 0xa9fe,
-0xaa60, 0xaa7f,
-}; /* END of CR_Myanmar */
-
-/* PROPERTY: 'Georgian': Script */
-static const OnigCodePoint
-CR_Georgian[] = { 8,
-0x10a0, 0x10c5,
-0x10c7, 0x10c7,
-0x10cd, 0x10cd,
-0x10d0, 0x10fa,
-0x10fc, 0x10ff,
-0x2d00, 0x2d25,
-0x2d27, 0x2d27,
-0x2d2d, 0x2d2d,
-}; /* END of CR_Georgian */
-
-/* PROPERTY: 'Hangul': Script */
-static const OnigCodePoint
-CR_Hangul[] = { 14,
-0x1100, 0x11ff,
-0x302e, 0x302f,
-0x3131, 0x318e,
-0x3200, 0x321e,
-0x3260, 0x327e,
-0xa960, 0xa97c,
-0xac00, 0xd7a3,
-0xd7b0, 0xd7c6,
-0xd7cb, 0xd7fb,
-0xffa0, 0xffbe,
-0xffc2, 0xffc7,
-0xffca, 0xffcf,
-0xffd2, 0xffd7,
-0xffda, 0xffdc,
-}; /* END of CR_Hangul */
-
-/* PROPERTY: 'Ethiopic': Script */
-static const OnigCodePoint
-CR_Ethiopic[] = { 32,
-0x1200, 0x1248,
-0x124a, 0x124d,
-0x1250, 0x1256,
-0x1258, 0x1258,
-0x125a, 0x125d,
-0x1260, 0x1288,
-0x128a, 0x128d,
-0x1290, 0x12b0,
-0x12b2, 0x12b5,
-0x12b8, 0x12be,
-0x12c0, 0x12c0,
-0x12c2, 0x12c5,
-0x12c8, 0x12d6,
-0x12d8, 0x1310,
-0x1312, 0x1315,
-0x1318, 0x135a,
-0x135d, 0x137c,
-0x1380, 0x1399,
-0x2d80, 0x2d96,
-0x2da0, 0x2da6,
-0x2da8, 0x2dae,
-0x2db0, 0x2db6,
-0x2db8, 0x2dbe,
-0x2dc0, 0x2dc6,
-0x2dc8, 0x2dce,
-0x2dd0, 0x2dd6,
-0x2dd8, 0x2dde,
-0xab01, 0xab06,
-0xab09, 0xab0e,
-0xab11, 0xab16,
-0xab20, 0xab26,
-0xab28, 0xab2e,
-}; /* END of CR_Ethiopic */
-
-/* PROPERTY: 'Cherokee': Script */
-static const OnigCodePoint
-CR_Cherokee[] = { 3,
-0x13a0, 0x13f5,
-0x13f8, 0x13fd,
-0xab70, 0xabbf,
-}; /* END of CR_Cherokee */
-
-/* PROPERTY: 'Canadian_Aboriginal': Script */
-static const OnigCodePoint
-CR_Canadian_Aboriginal[] = { 2,
-0x1400, 0x167f,
-0x18b0, 0x18f5,
-}; /* END of CR_Canadian_Aboriginal */
-
-/* PROPERTY: 'Ogham': Script */
-static const OnigCodePoint
-CR_Ogham[] = { 1,
-0x1680, 0x169c,
-}; /* END of CR_Ogham */
-
-/* PROPERTY: 'Runic': Script */
-static const OnigCodePoint
-CR_Runic[] = { 2,
-0x16a0, 0x16ea,
-0x16ee, 0x16f8,
-}; /* END of CR_Runic */
-
-/* PROPERTY: 'Khmer': Script */
-static const OnigCodePoint
-CR_Khmer[] = { 4,
-0x1780, 0x17dd,
-0x17e0, 0x17e9,
-0x17f0, 0x17f9,
-0x19e0, 0x19ff,
-}; /* END of CR_Khmer */
-
-/* PROPERTY: 'Mongolian': Script */
-static const OnigCodePoint
-CR_Mongolian[] = { 6,
-0x1800, 0x1801,
-0x1804, 0x1804,
-0x1806, 0x180e,
-0x1810, 0x1819,
-0x1820, 0x1877,
-0x1880, 0x18aa,
-}; /* END of CR_Mongolian */
-
-/* PROPERTY: 'Hiragana': Script */
-static const OnigCodePoint
-CR_Hiragana[] = { 4,
-0x3041, 0x3096,
-0x309d, 0x309f,
-0x1b001, 0x1b001,
-0x1f200, 0x1f200,
-}; /* END of CR_Hiragana */
-
-/* PROPERTY: 'Katakana': Script */
-static const OnigCodePoint
-CR_Katakana[] = { 8,
-0x30a1, 0x30fa,
-0x30fd, 0x30ff,
-0x31f0, 0x31ff,
-0x32d0, 0x32fe,
-0x3300, 0x3357,
-0xff66, 0xff6f,
-0xff71, 0xff9d,
-0x1b000, 0x1b000,
-}; /* END of CR_Katakana */
-
-/* PROPERTY: 'Bopomofo': Script */
-static const OnigCodePoint
-CR_Bopomofo[] = { 3,
-0x02ea, 0x02eb,
-0x3105, 0x312d,
-0x31a0, 0x31ba,
-}; /* END of CR_Bopomofo */
-
-/* PROPERTY: 'Han': Script */
-static const OnigCodePoint
-CR_Han[] = { 16,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-0x3005, 0x3005,
-0x3007, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303b,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Han */
-
/* PROPERTY: 'Yi': Script */
static const OnigCodePoint
CR_Yi[] = { 2,
@@ -18431,2389 +22550,48 @@ CR_Yi[] = { 2,
0xa490, 0xa4c6,
}; /* END of CR_Yi */
-/* PROPERTY: 'Old_Italic': Script */
-static const OnigCodePoint
-CR_Old_Italic[] = { 1,
-0x10300, 0x10323,
-}; /* END of CR_Old_Italic */
-
-/* PROPERTY: 'Gothic': Script */
-static const OnigCodePoint
-CR_Gothic[] = { 1,
-0x10330, 0x1034a,
-}; /* END of CR_Gothic */
-
-/* PROPERTY: 'Deseret': Script */
-static const OnigCodePoint
-CR_Deseret[] = { 1,
-0x10400, 0x1044f,
-}; /* END of CR_Deseret */
-
-/* PROPERTY: 'Inherited': Script */
-static const OnigCodePoint
-CR_Inherited[] = { 27,
-0x0300, 0x036f,
-0x0485, 0x0486,
-0x064b, 0x0655,
-0x0670, 0x0670,
-0x0951, 0x0952,
-0x1ab0, 0x1abe,
-0x1cd0, 0x1cd2,
-0x1cd4, 0x1ce0,
-0x1ce2, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1dc0, 0x1df5,
-0x1dfc, 0x1dff,
-0x200c, 0x200d,
-0x20d0, 0x20f0,
-0x302a, 0x302d,
-0x3099, 0x309a,
-0xfe00, 0xfe0f,
-0xfe20, 0xfe2d,
-0x101fd, 0x101fd,
-0x102e0, 0x102e0,
-0x1d167, 0x1d169,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0xe0100, 0xe01ef,
-}; /* END of CR_Inherited */
-
-/* PROPERTY: 'Tagalog': Script */
-static const OnigCodePoint
-CR_Tagalog[] = { 2,
-0x1700, 0x170c,
-0x170e, 0x1714,
-}; /* END of CR_Tagalog */
-
-/* PROPERTY: 'Hanunoo': Script */
-static const OnigCodePoint
-CR_Hanunoo[] = { 1,
-0x1720, 0x1734,
-}; /* END of CR_Hanunoo */
-
-/* PROPERTY: 'Buhid': Script */
-static const OnigCodePoint
-CR_Buhid[] = { 1,
-0x1740, 0x1753,
-}; /* END of CR_Buhid */
-
-/* PROPERTY: 'Tagbanwa': Script */
-static const OnigCodePoint
-CR_Tagbanwa[] = { 3,
-0x1760, 0x176c,
-0x176e, 0x1770,
-0x1772, 0x1773,
-}; /* END of CR_Tagbanwa */
-
-/* PROPERTY: 'Limbu': Script */
-static const OnigCodePoint
-CR_Limbu[] = { 5,
-0x1900, 0x191e,
-0x1920, 0x192b,
-0x1930, 0x193b,
-0x1940, 0x1940,
-0x1944, 0x194f,
-}; /* END of CR_Limbu */
-
-/* PROPERTY: 'Tai_Le': Script */
-static const OnigCodePoint
-CR_Tai_Le[] = { 2,
-0x1950, 0x196d,
-0x1970, 0x1974,
-}; /* END of CR_Tai_Le */
-
-/* PROPERTY: 'Linear_B': Script */
-static const OnigCodePoint
-CR_Linear_B[] = { 7,
-0x10000, 0x1000b,
-0x1000d, 0x10026,
-0x10028, 0x1003a,
-0x1003c, 0x1003d,
-0x1003f, 0x1004d,
-0x10050, 0x1005d,
-0x10080, 0x100fa,
-}; /* END of CR_Linear_B */
-
-/* PROPERTY: 'Ugaritic': Script */
-static const OnigCodePoint
-CR_Ugaritic[] = { 2,
-0x10380, 0x1039d,
-0x1039f, 0x1039f,
-}; /* END of CR_Ugaritic */
-
-/* PROPERTY: 'Shavian': Script */
-static const OnigCodePoint
-CR_Shavian[] = { 1,
-0x10450, 0x1047f,
-}; /* END of CR_Shavian */
-
-/* PROPERTY: 'Osmanya': Script */
-static const OnigCodePoint
-CR_Osmanya[] = { 2,
-0x10480, 0x1049d,
-0x104a0, 0x104a9,
-}; /* END of CR_Osmanya */
-
-/* PROPERTY: 'Cypriot': Script */
-static const OnigCodePoint
-CR_Cypriot[] = { 6,
-0x10800, 0x10805,
-0x10808, 0x10808,
-0x1080a, 0x10835,
-0x10837, 0x10838,
-0x1083c, 0x1083c,
-0x1083f, 0x1083f,
-}; /* END of CR_Cypriot */
-
-/* PROPERTY: 'Braille': Script */
-static const OnigCodePoint
-CR_Braille[] = { 1,
-0x2800, 0x28ff,
-}; /* END of CR_Braille */
-
-/* PROPERTY: 'Buginese': Script */
-static const OnigCodePoint
-CR_Buginese[] = { 2,
-0x1a00, 0x1a1b,
-0x1a1e, 0x1a1f,
-}; /* END of CR_Buginese */
-
-/* PROPERTY: 'Coptic': Script */
-static const OnigCodePoint
-CR_Coptic[] = { 3,
-0x03e2, 0x03ef,
-0x2c80, 0x2cf3,
-0x2cf9, 0x2cff,
-}; /* END of CR_Coptic */
-
-/* PROPERTY: 'New_Tai_Lue': Script */
-static const OnigCodePoint
-CR_New_Tai_Lue[] = { 4,
-0x1980, 0x19ab,
-0x19b0, 0x19c9,
-0x19d0, 0x19da,
-0x19de, 0x19df,
-}; /* END of CR_New_Tai_Lue */
-
-/* PROPERTY: 'Glagolitic': Script */
-static const OnigCodePoint
-CR_Glagolitic[] = { 2,
-0x2c00, 0x2c2e,
-0x2c30, 0x2c5e,
-}; /* END of CR_Glagolitic */
-
-/* PROPERTY: 'Tifinagh': Script */
-static const OnigCodePoint
-CR_Tifinagh[] = { 3,
-0x2d30, 0x2d67,
-0x2d6f, 0x2d70,
-0x2d7f, 0x2d7f,
-}; /* END of CR_Tifinagh */
-
-/* PROPERTY: 'Syloti_Nagri': Script */
-static const OnigCodePoint
-CR_Syloti_Nagri[] = { 1,
-0xa800, 0xa82b,
-}; /* END of CR_Syloti_Nagri */
-
-/* PROPERTY: 'Old_Persian': Script */
-static const OnigCodePoint
-CR_Old_Persian[] = { 2,
-0x103a0, 0x103c3,
-0x103c8, 0x103d5,
-}; /* END of CR_Old_Persian */
-
-/* PROPERTY: 'Kharoshthi': Script */
-static const OnigCodePoint
-CR_Kharoshthi[] = { 8,
-0x10a00, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a13,
-0x10a15, 0x10a17,
-0x10a19, 0x10a33,
-0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
-0x10a50, 0x10a58,
-}; /* END of CR_Kharoshthi */
-
-/* PROPERTY: 'Balinese': Script */
-static const OnigCodePoint
-CR_Balinese[] = { 2,
-0x1b00, 0x1b4b,
-0x1b50, 0x1b7c,
-}; /* END of CR_Balinese */
-
-/* PROPERTY: 'Cuneiform': Script */
-static const OnigCodePoint
-CR_Cuneiform[] = { 4,
-0x12000, 0x12399,
-0x12400, 0x1246e,
-0x12470, 0x12474,
-0x12480, 0x12543,
-}; /* END of CR_Cuneiform */
-
-/* PROPERTY: 'Phoenician': Script */
-static const OnigCodePoint
-CR_Phoenician[] = { 2,
-0x10900, 0x1091b,
-0x1091f, 0x1091f,
-}; /* END of CR_Phoenician */
-
-/* PROPERTY: 'Phags_Pa': Script */
-static const OnigCodePoint
-CR_Phags_Pa[] = { 1,
-0xa840, 0xa877,
-}; /* END of CR_Phags_Pa */
-
-/* PROPERTY: 'Nko': Script */
-static const OnigCodePoint
-CR_Nko[] = { 1,
-0x07c0, 0x07fa,
-}; /* END of CR_Nko */
-
-/* PROPERTY: 'Sundanese': Script */
-static const OnigCodePoint
-CR_Sundanese[] = { 2,
-0x1b80, 0x1bbf,
-0x1cc0, 0x1cc7,
-}; /* END of CR_Sundanese */
-
-/* PROPERTY: 'Lepcha': Script */
-static const OnigCodePoint
-CR_Lepcha[] = { 3,
-0x1c00, 0x1c37,
-0x1c3b, 0x1c49,
-0x1c4d, 0x1c4f,
-}; /* END of CR_Lepcha */
-
-/* PROPERTY: 'Ol_Chiki': Script */
-static const OnigCodePoint
-CR_Ol_Chiki[] = { 1,
-0x1c50, 0x1c7f,
-}; /* END of CR_Ol_Chiki */
-
-/* PROPERTY: 'Vai': Script */
-static const OnigCodePoint
-CR_Vai[] = { 1,
-0xa500, 0xa62b,
-}; /* END of CR_Vai */
-
-/* PROPERTY: 'Saurashtra': Script */
-static const OnigCodePoint
-CR_Saurashtra[] = { 2,
-0xa880, 0xa8c4,
-0xa8ce, 0xa8d9,
-}; /* END of CR_Saurashtra */
-
-/* PROPERTY: 'Kayah_Li': Script */
-static const OnigCodePoint
-CR_Kayah_Li[] = { 2,
-0xa900, 0xa92d,
-0xa92f, 0xa92f,
-}; /* END of CR_Kayah_Li */
-
-/* PROPERTY: 'Rejang': Script */
-static const OnigCodePoint
-CR_Rejang[] = { 2,
-0xa930, 0xa953,
-0xa95f, 0xa95f,
-}; /* END of CR_Rejang */
-
-/* PROPERTY: 'Lycian': Script */
-static const OnigCodePoint
-CR_Lycian[] = { 1,
-0x10280, 0x1029c,
-}; /* END of CR_Lycian */
-
-/* PROPERTY: 'Carian': Script */
-static const OnigCodePoint
-CR_Carian[] = { 1,
-0x102a0, 0x102d0,
-}; /* END of CR_Carian */
-
-/* PROPERTY: 'Lydian': Script */
-static const OnigCodePoint
-CR_Lydian[] = { 2,
-0x10920, 0x10939,
-0x1093f, 0x1093f,
-}; /* END of CR_Lydian */
-
-/* PROPERTY: 'Cham': Script */
-static const OnigCodePoint
-CR_Cham[] = { 4,
-0xaa00, 0xaa36,
-0xaa40, 0xaa4d,
-0xaa50, 0xaa59,
-0xaa5c, 0xaa5f,
-}; /* END of CR_Cham */
-
-/* PROPERTY: 'Tai_Tham': Script */
-static const OnigCodePoint
-CR_Tai_Tham[] = { 5,
-0x1a20, 0x1a5e,
-0x1a60, 0x1a7c,
-0x1a7f, 0x1a89,
-0x1a90, 0x1a99,
-0x1aa0, 0x1aad,
-}; /* END of CR_Tai_Tham */
-
-/* PROPERTY: 'Tai_Viet': Script */
-static const OnigCodePoint
-CR_Tai_Viet[] = { 2,
-0xaa80, 0xaac2,
-0xaadb, 0xaadf,
-}; /* END of CR_Tai_Viet */
-
-/* PROPERTY: 'Avestan': Script */
-static const OnigCodePoint
-CR_Avestan[] = { 2,
-0x10b00, 0x10b35,
-0x10b39, 0x10b3f,
-}; /* END of CR_Avestan */
-
-/* PROPERTY: 'Egyptian_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Egyptian_Hieroglyphs[] = { 1,
-0x13000, 0x1342e,
-}; /* END of CR_Egyptian_Hieroglyphs */
-
-/* PROPERTY: 'Samaritan': Script */
-static const OnigCodePoint
-CR_Samaritan[] = { 2,
-0x0800, 0x082d,
-0x0830, 0x083e,
-}; /* END of CR_Samaritan */
-
-/* PROPERTY: 'Lisu': Script */
-static const OnigCodePoint
-CR_Lisu[] = { 1,
-0xa4d0, 0xa4ff,
-}; /* END of CR_Lisu */
-
-/* PROPERTY: 'Bamum': Script */
-static const OnigCodePoint
-CR_Bamum[] = { 2,
-0xa6a0, 0xa6f7,
-0x16800, 0x16a38,
-}; /* END of CR_Bamum */
-
-/* PROPERTY: 'Javanese': Script */
-static const OnigCodePoint
-CR_Javanese[] = { 3,
-0xa980, 0xa9cd,
-0xa9d0, 0xa9d9,
-0xa9de, 0xa9df,
-}; /* END of CR_Javanese */
-
-/* PROPERTY: 'Meetei_Mayek': Script */
-static const OnigCodePoint
-CR_Meetei_Mayek[] = { 3,
-0xaae0, 0xaaf6,
-0xabc0, 0xabed,
-0xabf0, 0xabf9,
-}; /* END of CR_Meetei_Mayek */
-
-/* PROPERTY: 'Imperial_Aramaic': Script */
-static const OnigCodePoint
-CR_Imperial_Aramaic[] = { 2,
-0x10840, 0x10855,
-0x10857, 0x1085f,
-}; /* END of CR_Imperial_Aramaic */
-
-/* PROPERTY: 'Old_South_Arabian': Script */
-static const OnigCodePoint
-CR_Old_South_Arabian[] = { 1,
-0x10a60, 0x10a7f,
-}; /* END of CR_Old_South_Arabian */
-
-/* PROPERTY: 'Inscriptional_Parthian': Script */
-static const OnigCodePoint
-CR_Inscriptional_Parthian[] = { 2,
-0x10b40, 0x10b55,
-0x10b58, 0x10b5f,
-}; /* END of CR_Inscriptional_Parthian */
-
-/* PROPERTY: 'Inscriptional_Pahlavi': Script */
-static const OnigCodePoint
-CR_Inscriptional_Pahlavi[] = { 2,
-0x10b60, 0x10b72,
-0x10b78, 0x10b7f,
-}; /* END of CR_Inscriptional_Pahlavi */
-
-/* PROPERTY: 'Old_Turkic': Script */
-static const OnigCodePoint
-CR_Old_Turkic[] = { 1,
-0x10c00, 0x10c48,
-}; /* END of CR_Old_Turkic */
-
-/* PROPERTY: 'Kaithi': Script */
-static const OnigCodePoint
-CR_Kaithi[] = { 1,
-0x11080, 0x110c1,
-}; /* END of CR_Kaithi */
-
-/* PROPERTY: 'Batak': Script */
-static const OnigCodePoint
-CR_Batak[] = { 2,
-0x1bc0, 0x1bf3,
-0x1bfc, 0x1bff,
-}; /* END of CR_Batak */
-
-/* PROPERTY: 'Brahmi': Script */
-static const OnigCodePoint
-CR_Brahmi[] = { 3,
-0x11000, 0x1104d,
-0x11052, 0x1106f,
-0x1107f, 0x1107f,
-}; /* END of CR_Brahmi */
-
-/* PROPERTY: 'Mandaic': Script */
-static const OnigCodePoint
-CR_Mandaic[] = { 2,
-0x0840, 0x085b,
-0x085e, 0x085e,
-}; /* END of CR_Mandaic */
-
-/* PROPERTY: 'Chakma': Script */
-static const OnigCodePoint
-CR_Chakma[] = { 2,
-0x11100, 0x11134,
-0x11136, 0x11143,
-}; /* END of CR_Chakma */
-
-/* PROPERTY: 'Meroitic_Cursive': Script */
-static const OnigCodePoint
-CR_Meroitic_Cursive[] = { 3,
-0x109a0, 0x109b7,
-0x109bc, 0x109cf,
-0x109d2, 0x109ff,
-}; /* END of CR_Meroitic_Cursive */
-
-/* PROPERTY: 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Meroitic_Hieroglyphs[] = { 1,
-0x10980, 0x1099f,
-}; /* END of CR_Meroitic_Hieroglyphs */
-
-/* PROPERTY: 'Miao': Script */
-static const OnigCodePoint
-CR_Miao[] = { 3,
-0x16f00, 0x16f44,
-0x16f50, 0x16f7e,
-0x16f8f, 0x16f9f,
-}; /* END of CR_Miao */
-
-/* PROPERTY: 'Sharada': Script */
-static const OnigCodePoint
-CR_Sharada[] = { 2,
-0x11180, 0x111cd,
-0x111d0, 0x111df,
-}; /* END of CR_Sharada */
-
-/* PROPERTY: 'Sora_Sompeng': Script */
-static const OnigCodePoint
-CR_Sora_Sompeng[] = { 2,
-0x110d0, 0x110e8,
-0x110f0, 0x110f9,
-}; /* END of CR_Sora_Sompeng */
-
-/* PROPERTY: 'Takri': Script */
-static const OnigCodePoint
-CR_Takri[] = { 2,
-0x11680, 0x116b7,
-0x116c0, 0x116c9,
-}; /* END of CR_Takri */
-
-/* PROPERTY: 'Caucasian_Albanian': Script */
-static const OnigCodePoint
-CR_Caucasian_Albanian[] = { 2,
-0x10530, 0x10563,
-0x1056f, 0x1056f,
-}; /* END of CR_Caucasian_Albanian */
-
-/* PROPERTY: 'Bassa_Vah': Script */
-static const OnigCodePoint
-CR_Bassa_Vah[] = { 2,
-0x16ad0, 0x16aed,
-0x16af0, 0x16af5,
-}; /* END of CR_Bassa_Vah */
-
-/* PROPERTY: 'Duployan': Script */
-static const OnigCodePoint
-CR_Duployan[] = { 5,
-0x1bc00, 0x1bc6a,
-0x1bc70, 0x1bc7c,
-0x1bc80, 0x1bc88,
-0x1bc90, 0x1bc99,
-0x1bc9c, 0x1bc9f,
-}; /* END of CR_Duployan */
-
-/* PROPERTY: 'Elbasan': Script */
-static const OnigCodePoint
-CR_Elbasan[] = { 1,
-0x10500, 0x10527,
-}; /* END of CR_Elbasan */
-
-/* PROPERTY: 'Grantha': Script */
-static const OnigCodePoint
-CR_Grantha[] = { 15,
-0x11300, 0x11303,
-0x11305, 0x1130c,
-0x1130f, 0x11310,
-0x11313, 0x11328,
-0x1132a, 0x11330,
-0x11332, 0x11333,
-0x11335, 0x11339,
-0x1133c, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134d,
-0x11350, 0x11350,
-0x11357, 0x11357,
-0x1135d, 0x11363,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-}; /* END of CR_Grantha */
-
-/* PROPERTY: 'Pahawh_Hmong': Script */
-static const OnigCodePoint
-CR_Pahawh_Hmong[] = { 5,
-0x16b00, 0x16b45,
-0x16b50, 0x16b59,
-0x16b5b, 0x16b61,
-0x16b63, 0x16b77,
-0x16b7d, 0x16b8f,
-}; /* END of CR_Pahawh_Hmong */
-
-/* PROPERTY: 'Khojki': Script */
-static const OnigCodePoint
-CR_Khojki[] = { 2,
-0x11200, 0x11211,
-0x11213, 0x1123d,
-}; /* END of CR_Khojki */
-
-/* PROPERTY: 'Linear_A': Script */
-static const OnigCodePoint
-CR_Linear_A[] = { 3,
-0x10600, 0x10736,
-0x10740, 0x10755,
-0x10760, 0x10767,
-}; /* END of CR_Linear_A */
-
-/* PROPERTY: 'Mahajani': Script */
-static const OnigCodePoint
-CR_Mahajani[] = { 1,
-0x11150, 0x11176,
-}; /* END of CR_Mahajani */
-
-/* PROPERTY: 'Manichaean': Script */
-static const OnigCodePoint
-CR_Manichaean[] = { 2,
-0x10ac0, 0x10ae6,
-0x10aeb, 0x10af6,
-}; /* END of CR_Manichaean */
-
-/* PROPERTY: 'Mende_Kikakui': Script */
-static const OnigCodePoint
-CR_Mende_Kikakui[] = { 2,
-0x1e800, 0x1e8c4,
-0x1e8c7, 0x1e8d6,
-}; /* END of CR_Mende_Kikakui */
-
-/* PROPERTY: 'Modi': Script */
-static const OnigCodePoint
-CR_Modi[] = { 2,
-0x11600, 0x11644,
-0x11650, 0x11659,
-}; /* END of CR_Modi */
-
-/* PROPERTY: 'Mro': Script */
-static const OnigCodePoint
-CR_Mro[] = { 3,
-0x16a40, 0x16a5e,
-0x16a60, 0x16a69,
-0x16a6e, 0x16a6f,
-}; /* END of CR_Mro */
-
-/* PROPERTY: 'Old_North_Arabian': Script */
-static const OnigCodePoint
-CR_Old_North_Arabian[] = { 1,
-0x10a80, 0x10a9f,
-}; /* END of CR_Old_North_Arabian */
-
-/* PROPERTY: 'Nabataean': Script */
-static const OnigCodePoint
-CR_Nabataean[] = { 2,
-0x10880, 0x1089e,
-0x108a7, 0x108af,
-}; /* END of CR_Nabataean */
-
-/* PROPERTY: 'Palmyrene': Script */
-static const OnigCodePoint
-CR_Palmyrene[] = { 1,
-0x10860, 0x1087f,
-}; /* END of CR_Palmyrene */
-
-/* PROPERTY: 'Pau_Cin_Hau': Script */
-static const OnigCodePoint
-CR_Pau_Cin_Hau[] = { 1,
-0x11ac0, 0x11af8,
-}; /* END of CR_Pau_Cin_Hau */
-
-/* PROPERTY: 'Old_Permic': Script */
-static const OnigCodePoint
-CR_Old_Permic[] = { 1,
-0x10350, 0x1037a,
-}; /* END of CR_Old_Permic */
-
-/* PROPERTY: 'Psalter_Pahlavi': Script */
-static const OnigCodePoint
-CR_Psalter_Pahlavi[] = { 3,
-0x10b80, 0x10b91,
-0x10b99, 0x10b9c,
-0x10ba9, 0x10baf,
-}; /* END of CR_Psalter_Pahlavi */
-
-/* PROPERTY: 'Siddham': Script */
-static const OnigCodePoint
-CR_Siddham[] = { 2,
-0x11580, 0x115b5,
-0x115b8, 0x115dd,
-}; /* END of CR_Siddham */
-
-/* PROPERTY: 'Khudawadi': Script */
-static const OnigCodePoint
-CR_Khudawadi[] = { 2,
-0x112b0, 0x112ea,
-0x112f0, 0x112f9,
-}; /* END of CR_Khudawadi */
-
-/* PROPERTY: 'Tirhuta': Script */
-static const OnigCodePoint
-CR_Tirhuta[] = { 2,
-0x11480, 0x114c7,
-0x114d0, 0x114d9,
-}; /* END of CR_Tirhuta */
-
-/* PROPERTY: 'Warang_Citi': Script */
-static const OnigCodePoint
-CR_Warang_Citi[] = { 2,
-0x118a0, 0x118f2,
-0x118ff, 0x118ff,
-}; /* END of CR_Warang_Citi */
-
-/* PROPERTY: 'Ahom': Script */
-static const OnigCodePoint
-CR_Ahom[] = { 3,
-0x11700, 0x11719,
-0x1171d, 0x1172b,
-0x11730, 0x1173f,
-}; /* END of CR_Ahom */
-
-/* PROPERTY: 'Anatolian_Hieroglyphs': Script */
-static const OnigCodePoint
-CR_Anatolian_Hieroglyphs[] = { 1,
-0x14400, 0x14646,
-}; /* END of CR_Anatolian_Hieroglyphs */
-
-/* PROPERTY: 'Hatran': Script */
-static const OnigCodePoint
-CR_Hatran[] = { 3,
-0x108e0, 0x108f2,
-0x108f4, 0x108f5,
-0x108fb, 0x108ff,
-}; /* END of CR_Hatran */
-
-/* PROPERTY: 'Multani': Script */
-static const OnigCodePoint
-CR_Multani[] = { 5,
-0x11280, 0x11286,
-0x11288, 0x11288,
-0x1128a, 0x1128d,
-0x1128f, 0x1129d,
-0x1129f, 0x112a9,
-}; /* END of CR_Multani */
-
-/* PROPERTY: 'Old_Hungarian': Script */
-static const OnigCodePoint
-CR_Old_Hungarian[] = { 3,
-0x10c80, 0x10cb2,
-0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
-}; /* END of CR_Old_Hungarian */
-
-/* PROPERTY: 'SignWriting': Script */
-static const OnigCodePoint
-CR_SignWriting[] = { 3,
-0x1d800, 0x1da8b,
-0x1da9b, 0x1da9f,
-0x1daa1, 0x1daaf,
-}; /* END of CR_SignWriting */
-
-/* PROPERTY: 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
-
-/* PROPERTY: 'Bidi_Control': Binary Property */
-static const OnigCodePoint
-CR_Bidi_Control[] = { 4,
-0x061c, 0x061c,
-0x200e, 0x200f,
-0x202a, 0x202e,
-0x2066, 0x2069,
-}; /* END of CR_Bidi_Control */
-
-/* PROPERTY: 'Join_Control': Binary Property */
-static const OnigCodePoint
-CR_Join_Control[] = { 1,
-0x200c, 0x200d,
-}; /* END of CR_Join_Control */
-
-/* PROPERTY: 'Dash': Binary Property */
-static const OnigCodePoint
-CR_Dash[] = { 21,
-0x002d, 0x002d,
-0x058a, 0x058a,
-0x05be, 0x05be,
-0x1400, 0x1400,
-0x1806, 0x1806,
-0x2010, 0x2015,
-0x2053, 0x2053,
-0x207b, 0x207b,
-0x208b, 0x208b,
-0x2212, 0x2212,
-0x2e17, 0x2e17,
-0x2e1a, 0x2e1a,
-0x2e3a, 0x2e3b,
-0x2e40, 0x2e40,
-0x301c, 0x301c,
-0x3030, 0x3030,
-0x30a0, 0x30a0,
-0xfe31, 0xfe32,
-0xfe58, 0xfe58,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-}; /* END of CR_Dash */
-
-/* PROPERTY: 'Hyphen': Binary Property */
-static const OnigCodePoint
-CR_Hyphen[] = { 10,
-0x002d, 0x002d,
-0x00ad, 0x00ad,
-0x058a, 0x058a,
-0x1806, 0x1806,
-0x2010, 0x2011,
-0x2e17, 0x2e17,
-0x30fb, 0x30fb,
-0xfe63, 0xfe63,
-0xff0d, 0xff0d,
-0xff65, 0xff65,
-}; /* END of CR_Hyphen */
-
-/* PROPERTY: 'Quotation_Mark': Binary Property */
-static const OnigCodePoint
-CR_Quotation_Mark[] = { 13,
-0x0022, 0x0022,
-0x0027, 0x0027,
-0x00ab, 0x00ab,
-0x00bb, 0x00bb,
-0x2018, 0x201f,
-0x2039, 0x203a,
-0x2e42, 0x2e42,
-0x300c, 0x300f,
-0x301d, 0x301f,
-0xfe41, 0xfe44,
-0xff02, 0xff02,
-0xff07, 0xff07,
-0xff62, 0xff63,
-}; /* END of CR_Quotation_Mark */
-
-/* PROPERTY: 'Terminal_Punctuation': Binary Property */
-static const OnigCodePoint
-CR_Terminal_Punctuation[] = { 90,
-0x0021, 0x0021,
-0x002c, 0x002c,
-0x002e, 0x002e,
-0x003a, 0x003b,
-0x003f, 0x003f,
-0x037e, 0x037e,
-0x0387, 0x0387,
-0x0589, 0x0589,
-0x05c3, 0x05c3,
-0x060c, 0x060c,
-0x061b, 0x061b,
-0x061f, 0x061f,
-0x06d4, 0x06d4,
-0x0700, 0x070a,
-0x070c, 0x070c,
-0x07f8, 0x07f9,
-0x0830, 0x083e,
-0x085e, 0x085e,
-0x0964, 0x0965,
-0x0e5a, 0x0e5b,
-0x0f08, 0x0f08,
-0x0f0d, 0x0f12,
-0x104a, 0x104b,
-0x1361, 0x1368,
-0x166d, 0x166e,
-0x16eb, 0x16ed,
-0x1735, 0x1736,
-0x17d4, 0x17d6,
-0x17da, 0x17da,
-0x1802, 0x1805,
-0x1808, 0x1809,
-0x1944, 0x1945,
-0x1aa8, 0x1aab,
-0x1b5a, 0x1b5b,
-0x1b5d, 0x1b5f,
-0x1c3b, 0x1c3f,
-0x1c7e, 0x1c7f,
-0x203c, 0x203d,
-0x2047, 0x2049,
-0x2e2e, 0x2e2e,
-0x2e3c, 0x2e3c,
-0x2e41, 0x2e41,
-0x3001, 0x3002,
-0xa4fe, 0xa4ff,
-0xa60d, 0xa60f,
-0xa6f3, 0xa6f7,
-0xa876, 0xa877,
-0xa8ce, 0xa8cf,
-0xa92f, 0xa92f,
-0xa9c7, 0xa9c9,
-0xaa5d, 0xaa5f,
-0xaadf, 0xaadf,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe50, 0xfe52,
-0xfe54, 0xfe57,
-0xff01, 0xff01,
-0xff0c, 0xff0c,
-0xff0e, 0xff0e,
-0xff1a, 0xff1b,
-0xff1f, 0xff1f,
-0xff61, 0xff61,
-0xff64, 0xff64,
-0x1039f, 0x1039f,
-0x103d0, 0x103d0,
-0x10857, 0x10857,
-0x1091f, 0x1091f,
-0x10a56, 0x10a57,
-0x10af0, 0x10af5,
-0x10b3a, 0x10b3f,
-0x10b99, 0x10b9c,
-0x11047, 0x1104d,
-0x110be, 0x110c1,
-0x11141, 0x11143,
-0x111c5, 0x111c6,
-0x111cd, 0x111cd,
-0x111de, 0x111df,
-0x11238, 0x1123c,
-0x112a9, 0x112a9,
-0x115c2, 0x115c5,
-0x115c9, 0x115d7,
-0x11641, 0x11642,
-0x1173c, 0x1173e,
-0x12470, 0x12474,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b39,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da87, 0x1da8a,
-}; /* END of CR_Terminal_Punctuation */
-
-/* PROPERTY: 'Other_Math': Binary Property */
-static const OnigCodePoint
-CR_Other_Math[] = { 134,
-0x005e, 0x005e,
-0x03d0, 0x03d2,
-0x03d5, 0x03d5,
-0x03f0, 0x03f1,
-0x03f4, 0x03f5,
-0x2016, 0x2016,
-0x2032, 0x2034,
-0x2040, 0x2040,
-0x2061, 0x2064,
-0x207d, 0x207e,
-0x208d, 0x208e,
-0x20d0, 0x20dc,
-0x20e1, 0x20e1,
-0x20e5, 0x20e6,
-0x20eb, 0x20ef,
-0x2102, 0x2102,
-0x2107, 0x2107,
-0x210a, 0x2113,
-0x2115, 0x2115,
-0x2119, 0x211d,
-0x2124, 0x2124,
-0x2128, 0x2129,
-0x212c, 0x212d,
-0x212f, 0x2131,
-0x2133, 0x2138,
-0x213c, 0x213f,
-0x2145, 0x2149,
-0x2195, 0x2199,
-0x219c, 0x219f,
-0x21a1, 0x21a2,
-0x21a4, 0x21a5,
-0x21a7, 0x21a7,
-0x21a9, 0x21ad,
-0x21b0, 0x21b1,
-0x21b6, 0x21b7,
-0x21bc, 0x21cd,
-0x21d0, 0x21d1,
-0x21d3, 0x21d3,
-0x21d5, 0x21db,
-0x21dd, 0x21dd,
-0x21e4, 0x21e5,
-0x2308, 0x230b,
-0x23b4, 0x23b5,
-0x23b7, 0x23b7,
-0x23d0, 0x23d0,
-0x23e2, 0x23e2,
-0x25a0, 0x25a1,
-0x25ae, 0x25b6,
-0x25bc, 0x25c0,
-0x25c6, 0x25c7,
-0x25ca, 0x25cb,
-0x25cf, 0x25d3,
-0x25e2, 0x25e2,
-0x25e4, 0x25e4,
-0x25e7, 0x25ec,
-0x2605, 0x2606,
-0x2640, 0x2640,
-0x2642, 0x2642,
-0x2660, 0x2663,
-0x266d, 0x266e,
-0x27c5, 0x27c6,
-0x27e6, 0x27ef,
-0x2983, 0x2998,
-0x29d8, 0x29db,
-0x29fc, 0x29fd,
-0xfe61, 0xfe61,
-0xfe63, 0xfe63,
-0xfe68, 0xfe68,
-0xff3c, 0xff3c,
-0xff3e, 0xff3e,
-0x1d400, 0x1d454,
-0x1d456, 0x1d49c,
-0x1d49e, 0x1d49f,
-0x1d4a2, 0x1d4a2,
-0x1d4a5, 0x1d4a6,
-0x1d4a9, 0x1d4ac,
-0x1d4ae, 0x1d4b9,
-0x1d4bb, 0x1d4bb,
-0x1d4bd, 0x1d4c3,
-0x1d4c5, 0x1d505,
-0x1d507, 0x1d50a,
-0x1d50d, 0x1d514,
-0x1d516, 0x1d51c,
-0x1d51e, 0x1d539,
-0x1d53b, 0x1d53e,
-0x1d540, 0x1d544,
-0x1d546, 0x1d546,
-0x1d54a, 0x1d550,
-0x1d552, 0x1d6a5,
-0x1d6a8, 0x1d6c0,
-0x1d6c2, 0x1d6da,
-0x1d6dc, 0x1d6fa,
-0x1d6fc, 0x1d714,
-0x1d716, 0x1d734,
-0x1d736, 0x1d74e,
-0x1d750, 0x1d76e,
-0x1d770, 0x1d788,
-0x1d78a, 0x1d7a8,
-0x1d7aa, 0x1d7c2,
-0x1d7c4, 0x1d7cb,
-0x1d7ce, 0x1d7ff,
-0x1ee00, 0x1ee03,
-0x1ee05, 0x1ee1f,
-0x1ee21, 0x1ee22,
-0x1ee24, 0x1ee24,
-0x1ee27, 0x1ee27,
-0x1ee29, 0x1ee32,
-0x1ee34, 0x1ee37,
-0x1ee39, 0x1ee39,
-0x1ee3b, 0x1ee3b,
-0x1ee42, 0x1ee42,
-0x1ee47, 0x1ee47,
-0x1ee49, 0x1ee49,
-0x1ee4b, 0x1ee4b,
-0x1ee4d, 0x1ee4f,
-0x1ee51, 0x1ee52,
-0x1ee54, 0x1ee54,
-0x1ee57, 0x1ee57,
-0x1ee59, 0x1ee59,
-0x1ee5b, 0x1ee5b,
-0x1ee5d, 0x1ee5d,
-0x1ee5f, 0x1ee5f,
-0x1ee61, 0x1ee62,
-0x1ee64, 0x1ee64,
-0x1ee67, 0x1ee6a,
-0x1ee6c, 0x1ee72,
-0x1ee74, 0x1ee77,
-0x1ee79, 0x1ee7c,
-0x1ee7e, 0x1ee7e,
-0x1ee80, 0x1ee89,
-0x1ee8b, 0x1ee9b,
-0x1eea1, 0x1eea3,
-0x1eea5, 0x1eea9,
-0x1eeab, 0x1eebb,
-}; /* END of CR_Other_Math */
-
-/* PROPERTY: 'Hex_Digit': Binary Property */
-static const OnigCodePoint
-CR_Hex_Digit[] = { 6,
-0x0030, 0x0039,
-0x0041, 0x0046,
-0x0061, 0x0066,
-0xff10, 0xff19,
-0xff21, 0xff26,
-0xff41, 0xff46,
-}; /* END of CR_Hex_Digit */
-
-/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
-
-/* PROPERTY: 'Other_Alphabetic': Binary Property */
-static const OnigCodePoint
-CR_Other_Alphabetic[] = { 178,
-0x0345, 0x0345,
-0x05b0, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c5,
-0x05c7, 0x05c7,
-0x0610, 0x061a,
-0x064b, 0x0657,
-0x0659, 0x065f,
-0x0670, 0x0670,
-0x06d6, 0x06dc,
-0x06e1, 0x06e4,
-0x06e7, 0x06e8,
-0x06ed, 0x06ed,
-0x0711, 0x0711,
-0x0730, 0x073f,
-0x07a6, 0x07b0,
-0x0816, 0x0817,
-0x081b, 0x0823,
-0x0825, 0x0827,
-0x0829, 0x082c,
-0x08e3, 0x08e9,
-0x08f0, 0x0903,
-0x093a, 0x093b,
-0x093e, 0x094c,
-0x094e, 0x094f,
-0x0955, 0x0957,
-0x0962, 0x0963,
-0x0981, 0x0983,
-0x09be, 0x09c4,
-0x09c7, 0x09c8,
-0x09cb, 0x09cc,
-0x09d7, 0x09d7,
-0x09e2, 0x09e3,
-0x0a01, 0x0a03,
-0x0a3e, 0x0a42,
-0x0a47, 0x0a48,
-0x0a4b, 0x0a4c,
-0x0a51, 0x0a51,
-0x0a70, 0x0a71,
-0x0a75, 0x0a75,
-0x0a81, 0x0a83,
-0x0abe, 0x0ac5,
-0x0ac7, 0x0ac9,
-0x0acb, 0x0acc,
-0x0ae2, 0x0ae3,
-0x0b01, 0x0b03,
-0x0b3e, 0x0b44,
-0x0b47, 0x0b48,
-0x0b4b, 0x0b4c,
-0x0b56, 0x0b57,
-0x0b62, 0x0b63,
-0x0b82, 0x0b82,
-0x0bbe, 0x0bc2,
-0x0bc6, 0x0bc8,
-0x0bca, 0x0bcc,
-0x0bd7, 0x0bd7,
-0x0c00, 0x0c03,
-0x0c3e, 0x0c44,
-0x0c46, 0x0c48,
-0x0c4a, 0x0c4c,
-0x0c55, 0x0c56,
-0x0c62, 0x0c63,
-0x0c81, 0x0c83,
-0x0cbe, 0x0cc4,
-0x0cc6, 0x0cc8,
-0x0cca, 0x0ccc,
-0x0cd5, 0x0cd6,
-0x0ce2, 0x0ce3,
-0x0d01, 0x0d03,
-0x0d3e, 0x0d44,
-0x0d46, 0x0d48,
-0x0d4a, 0x0d4c,
-0x0d57, 0x0d57,
-0x0d62, 0x0d63,
-0x0d82, 0x0d83,
-0x0dcf, 0x0dd4,
-0x0dd6, 0x0dd6,
-0x0dd8, 0x0ddf,
-0x0df2, 0x0df3,
-0x0e31, 0x0e31,
-0x0e34, 0x0e3a,
-0x0e4d, 0x0e4d,
-0x0eb1, 0x0eb1,
-0x0eb4, 0x0eb9,
-0x0ebb, 0x0ebc,
-0x0ecd, 0x0ecd,
-0x0f71, 0x0f81,
-0x0f8d, 0x0f97,
-0x0f99, 0x0fbc,
-0x102b, 0x1036,
-0x1038, 0x1038,
-0x103b, 0x103e,
-0x1056, 0x1059,
-0x105e, 0x1060,
-0x1062, 0x1062,
-0x1067, 0x1068,
-0x1071, 0x1074,
-0x1082, 0x1086,
-0x109c, 0x109d,
-0x135f, 0x135f,
-0x1712, 0x1713,
-0x1732, 0x1733,
-0x1752, 0x1753,
-0x1772, 0x1773,
-0x17b6, 0x17c8,
-0x18a9, 0x18a9,
-0x1920, 0x192b,
-0x1930, 0x1938,
-0x1a17, 0x1a1b,
-0x1a55, 0x1a5e,
-0x1a61, 0x1a74,
-0x1b00, 0x1b04,
-0x1b35, 0x1b43,
-0x1b80, 0x1b82,
-0x1ba1, 0x1ba9,
-0x1bac, 0x1bad,
-0x1be7, 0x1bf1,
-0x1c24, 0x1c35,
-0x1cf2, 0x1cf3,
-0x1de7, 0x1df4,
-0x24b6, 0x24e9,
-0x2de0, 0x2dff,
-0xa674, 0xa67b,
-0xa69e, 0xa69f,
-0xa823, 0xa827,
-0xa880, 0xa881,
-0xa8b4, 0xa8c3,
-0xa926, 0xa92a,
-0xa947, 0xa952,
-0xa980, 0xa983,
-0xa9b4, 0xa9bf,
-0xaa29, 0xaa36,
-0xaa43, 0xaa43,
-0xaa4c, 0xaa4d,
-0xaab0, 0xaab0,
-0xaab2, 0xaab4,
-0xaab7, 0xaab8,
-0xaabe, 0xaabe,
-0xaaeb, 0xaaef,
-0xaaf5, 0xaaf5,
-0xabe3, 0xabea,
-0xfb1e, 0xfb1e,
-0x10376, 0x1037a,
-0x10a01, 0x10a03,
-0x10a05, 0x10a06,
-0x10a0c, 0x10a0f,
-0x11000, 0x11002,
-0x11038, 0x11045,
-0x11082, 0x11082,
-0x110b0, 0x110b8,
-0x11100, 0x11102,
-0x11127, 0x11132,
-0x11180, 0x11182,
-0x111b3, 0x111bf,
-0x1122c, 0x11234,
-0x11237, 0x11237,
-0x112df, 0x112e8,
-0x11300, 0x11303,
-0x1133e, 0x11344,
-0x11347, 0x11348,
-0x1134b, 0x1134c,
-0x11357, 0x11357,
-0x11362, 0x11363,
-0x114b0, 0x114c1,
-0x115af, 0x115b5,
-0x115b8, 0x115be,
-0x115dc, 0x115dd,
-0x11630, 0x1163e,
-0x11640, 0x11640,
-0x116ab, 0x116b5,
-0x1171d, 0x1172a,
-0x16b30, 0x16b36,
-0x16f51, 0x16f7e,
-0x1bc9e, 0x1bc9e,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Alphabetic */
-
-/* PROPERTY: 'Ideographic': Binary Property */
-static const OnigCodePoint
-CR_Ideographic[] = { 12,
-0x3006, 0x3007,
-0x3021, 0x3029,
-0x3038, 0x303a,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xf900, 0xfa6d,
-0xfa70, 0xfad9,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-0x2f800, 0x2fa1d,
-}; /* END of CR_Ideographic */
-
-/* PROPERTY: 'Diacritic': Binary Property */
-static const OnigCodePoint
-CR_Diacritic[] = { 147,
-0x005e, 0x005e,
-0x0060, 0x0060,
-0x00a8, 0x00a8,
-0x00af, 0x00af,
-0x00b4, 0x00b4,
-0x00b7, 0x00b8,
-0x02b0, 0x034e,
-0x0350, 0x0357,
-0x035d, 0x0362,
-0x0374, 0x0375,
-0x037a, 0x037a,
-0x0384, 0x0385,
-0x0483, 0x0487,
-0x0559, 0x0559,
-0x0591, 0x05a1,
-0x05a3, 0x05bd,
-0x05bf, 0x05bf,
-0x05c1, 0x05c2,
-0x05c4, 0x05c4,
-0x064b, 0x0652,
-0x0657, 0x0658,
-0x06df, 0x06e0,
-0x06e5, 0x06e6,
-0x06ea, 0x06ec,
-0x0730, 0x074a,
-0x07a6, 0x07b0,
-0x07eb, 0x07f5,
-0x0818, 0x0819,
-0x08e3, 0x08fe,
-0x093c, 0x093c,
-0x094d, 0x094d,
-0x0951, 0x0954,
-0x0971, 0x0971,
-0x09bc, 0x09bc,
-0x09cd, 0x09cd,
-0x0a3c, 0x0a3c,
-0x0a4d, 0x0a4d,
-0x0abc, 0x0abc,
-0x0acd, 0x0acd,
-0x0b3c, 0x0b3c,
-0x0b4d, 0x0b4d,
-0x0bcd, 0x0bcd,
-0x0c4d, 0x0c4d,
-0x0cbc, 0x0cbc,
-0x0ccd, 0x0ccd,
-0x0d4d, 0x0d4d,
-0x0dca, 0x0dca,
-0x0e47, 0x0e4c,
-0x0e4e, 0x0e4e,
-0x0ec8, 0x0ecc,
-0x0f18, 0x0f19,
-0x0f35, 0x0f35,
-0x0f37, 0x0f37,
-0x0f39, 0x0f39,
-0x0f3e, 0x0f3f,
-0x0f82, 0x0f84,
-0x0f86, 0x0f87,
-0x0fc6, 0x0fc6,
-0x1037, 0x1037,
-0x1039, 0x103a,
-0x1087, 0x108d,
-0x108f, 0x108f,
-0x109a, 0x109b,
-0x17c9, 0x17d3,
-0x17dd, 0x17dd,
-0x1939, 0x193b,
-0x1a75, 0x1a7c,
-0x1a7f, 0x1a7f,
-0x1ab0, 0x1abd,
-0x1b34, 0x1b34,
-0x1b44, 0x1b44,
-0x1b6b, 0x1b73,
-0x1baa, 0x1bab,
-0x1c36, 0x1c37,
-0x1c78, 0x1c7d,
-0x1cd0, 0x1ce8,
-0x1ced, 0x1ced,
-0x1cf4, 0x1cf4,
-0x1cf8, 0x1cf9,
-0x1d2c, 0x1d6a,
-0x1dc4, 0x1dcf,
-0x1df5, 0x1df5,
-0x1dfd, 0x1dff,
-0x1fbd, 0x1fbd,
-0x1fbf, 0x1fc1,
-0x1fcd, 0x1fcf,
-0x1fdd, 0x1fdf,
-0x1fed, 0x1fef,
-0x1ffd, 0x1ffe,
-0x2cef, 0x2cf1,
-0x2e2f, 0x2e2f,
-0x302a, 0x302f,
-0x3099, 0x309c,
-0x30fc, 0x30fc,
-0xa66f, 0xa66f,
-0xa67c, 0xa67d,
-0xa67f, 0xa67f,
-0xa69c, 0xa69d,
-0xa6f0, 0xa6f1,
-0xa717, 0xa721,
-0xa788, 0xa788,
-0xa7f8, 0xa7f9,
-0xa8c4, 0xa8c4,
-0xa8e0, 0xa8f1,
-0xa92b, 0xa92e,
-0xa953, 0xa953,
-0xa9b3, 0xa9b3,
-0xa9c0, 0xa9c0,
-0xa9e5, 0xa9e5,
-0xaa7b, 0xaa7d,
-0xaabf, 0xaac2,
-0xaaf6, 0xaaf6,
-0xab5b, 0xab5f,
-0xabec, 0xabed,
-0xfb1e, 0xfb1e,
-0xfe20, 0xfe2f,
-0xff3e, 0xff3e,
-0xff40, 0xff40,
-0xff70, 0xff70,
-0xff9e, 0xff9f,
-0xffe3, 0xffe3,
-0x102e0, 0x102e0,
-0x10ae5, 0x10ae6,
-0x110b9, 0x110ba,
-0x11133, 0x11134,
-0x11173, 0x11173,
-0x111c0, 0x111c0,
-0x111ca, 0x111cc,
-0x11235, 0x11236,
-0x112e9, 0x112ea,
-0x1133c, 0x1133c,
-0x1134d, 0x1134d,
-0x11366, 0x1136c,
-0x11370, 0x11374,
-0x114c2, 0x114c3,
-0x115bf, 0x115c0,
-0x1163f, 0x1163f,
-0x116b6, 0x116b7,
-0x1172b, 0x1172b,
-0x16af0, 0x16af4,
-0x16f8f, 0x16f9f,
-0x1d167, 0x1d169,
-0x1d16d, 0x1d172,
-0x1d17b, 0x1d182,
-0x1d185, 0x1d18b,
-0x1d1aa, 0x1d1ad,
-0x1e8d0, 0x1e8d6,
-}; /* END of CR_Diacritic */
-
-/* PROPERTY: 'Extender': Binary Property */
-static const OnigCodePoint
-CR_Extender[] = { 26,
-0x00b7, 0x00b7,
-0x02d0, 0x02d1,
-0x0640, 0x0640,
-0x07fa, 0x07fa,
-0x0e46, 0x0e46,
-0x0ec6, 0x0ec6,
-0x180a, 0x180a,
-0x1843, 0x1843,
-0x1aa7, 0x1aa7,
-0x1c36, 0x1c36,
-0x1c7b, 0x1c7b,
-0x3005, 0x3005,
-0x3031, 0x3035,
-0x309d, 0x309e,
-0x30fc, 0x30fe,
-0xa015, 0xa015,
-0xa60c, 0xa60c,
-0xa9cf, 0xa9cf,
-0xa9e6, 0xa9e6,
-0xaa70, 0xaa70,
-0xaadd, 0xaadd,
-0xaaf3, 0xaaf4,
-0xff70, 0xff70,
-0x1135d, 0x1135d,
-0x115c6, 0x115c8,
-0x16b42, 0x16b43,
-}; /* END of CR_Extender */
-
-/* PROPERTY: 'Other_Lowercase': Binary Property */
-static const OnigCodePoint
-CR_Other_Lowercase[] = { 20,
-0x00aa, 0x00aa,
-0x00ba, 0x00ba,
-0x02b0, 0x02b8,
-0x02c0, 0x02c1,
-0x02e0, 0x02e4,
-0x0345, 0x0345,
-0x037a, 0x037a,
-0x1d2c, 0x1d6a,
-0x1d78, 0x1d78,
-0x1d9b, 0x1dbf,
-0x2071, 0x2071,
-0x207f, 0x207f,
-0x2090, 0x209c,
-0x2170, 0x217f,
-0x24d0, 0x24e9,
-0x2c7c, 0x2c7d,
-0xa69c, 0xa69d,
-0xa770, 0xa770,
-0xa7f8, 0xa7f9,
-0xab5c, 0xab5f,
-}; /* END of CR_Other_Lowercase */
-
-/* PROPERTY: 'Other_Uppercase': Binary Property */
-static const OnigCodePoint
-CR_Other_Uppercase[] = { 5,
-0x2160, 0x216f,
-0x24b6, 0x24cf,
-0x1f130, 0x1f149,
-0x1f150, 0x1f169,
-0x1f170, 0x1f189,
-}; /* END of CR_Other_Uppercase */
-
-/* PROPERTY: 'Noncharacter_Code_Point': Binary Property */
-static const OnigCodePoint
-CR_Noncharacter_Code_Point[] = { 18,
-0xfdd0, 0xfdef,
-0xfffe, 0xffff,
-0x1fffe, 0x1ffff,
-0x2fffe, 0x2ffff,
-0x3fffe, 0x3ffff,
-0x4fffe, 0x4ffff,
-0x5fffe, 0x5ffff,
-0x6fffe, 0x6ffff,
-0x7fffe, 0x7ffff,
-0x8fffe, 0x8ffff,
-0x9fffe, 0x9ffff,
-0xafffe, 0xaffff,
-0xbfffe, 0xbffff,
-0xcfffe, 0xcffff,
-0xdfffe, 0xdffff,
-0xefffe, 0xeffff,
-0xffffe, 0xfffff,
-0x10fffe, 0x10ffff,
-}; /* END of CR_Noncharacter_Code_Point */
-
-/* PROPERTY: 'Other_Grapheme_Extend': Binary Property */
-static const OnigCodePoint
-CR_Other_Grapheme_Extend[] = { 22,
-0x09be, 0x09be,
-0x09d7, 0x09d7,
-0x0b3e, 0x0b3e,
-0x0b57, 0x0b57,
-0x0bbe, 0x0bbe,
-0x0bd7, 0x0bd7,
-0x0cc2, 0x0cc2,
-0x0cd5, 0x0cd6,
-0x0d3e, 0x0d3e,
-0x0d57, 0x0d57,
-0x0dcf, 0x0dcf,
-0x0ddf, 0x0ddf,
-0x200c, 0x200d,
-0x302e, 0x302f,
-0xff9e, 0xff9f,
-0x1133e, 0x1133e,
-0x11357, 0x11357,
-0x114b0, 0x114b0,
-0x114bd, 0x114bd,
-0x115af, 0x115af,
-0x1d165, 0x1d165,
-0x1d16e, 0x1d172,
-}; /* END of CR_Other_Grapheme_Extend */
-
-/* PROPERTY: 'IDS_Binary_Operator': Binary Property */
-static const OnigCodePoint
-CR_IDS_Binary_Operator[] = { 2,
-0x2ff0, 0x2ff1,
-0x2ff4, 0x2ffb,
-}; /* END of CR_IDS_Binary_Operator */
-
-/* PROPERTY: 'IDS_Trinary_Operator': Binary Property */
-static const OnigCodePoint
-CR_IDS_Trinary_Operator[] = { 1,
-0x2ff2, 0x2ff3,
-}; /* END of CR_IDS_Trinary_Operator */
-
-/* PROPERTY: 'Radical': Binary Property */
-static const OnigCodePoint
-CR_Radical[] = { 3,
-0x2e80, 0x2e99,
-0x2e9b, 0x2ef3,
-0x2f00, 0x2fd5,
-}; /* END of CR_Radical */
-
-/* PROPERTY: 'Unified_Ideograph': Binary Property */
-static const OnigCodePoint
-CR_Unified_Ideograph[] = { 13,
-0x3400, 0x4db5,
-0x4e00, 0x9fd5,
-0xfa0e, 0xfa0f,
-0xfa11, 0xfa11,
-0xfa13, 0xfa14,
-0xfa1f, 0xfa1f,
-0xfa21, 0xfa21,
-0xfa23, 0xfa24,
-0xfa27, 0xfa29,
-0x20000, 0x2a6d6,
-0x2a700, 0x2b734,
-0x2b740, 0x2b81d,
-0x2b820, 0x2cea1,
-}; /* END of CR_Unified_Ideograph */
-
-/* PROPERTY: 'Other_Default_Ignorable_Code_Point': Binary Property */
-static const OnigCodePoint
-CR_Other_Default_Ignorable_Code_Point[] = { 11,
-0x034f, 0x034f,
-0x115f, 0x1160,
-0x17b4, 0x17b5,
-0x2065, 0x2065,
-0x3164, 0x3164,
-0xffa0, 0xffa0,
-0xfff0, 0xfff8,
-0xe0000, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0xe0fff,
-}; /* END of CR_Other_Default_Ignorable_Code_Point */
-
-/* PROPERTY: 'Deprecated': Binary Property */
-static const OnigCodePoint
-CR_Deprecated[] = { 9,
-0x0149, 0x0149,
-0x0673, 0x0673,
-0x0f77, 0x0f77,
-0x0f79, 0x0f79,
-0x17a3, 0x17a4,
-0x206a, 0x206f,
-0x2329, 0x232a,
-0xe0001, 0xe0001,
-0xe007f, 0xe007f,
-}; /* END of CR_Deprecated */
-
-/* PROPERTY: 'Soft_Dotted': Binary Property */
-static const OnigCodePoint
-CR_Soft_Dotted[] = { 31,
-0x0069, 0x006a,
-0x012f, 0x012f,
-0x0249, 0x0249,
-0x0268, 0x0268,
-0x029d, 0x029d,
-0x02b2, 0x02b2,
-0x03f3, 0x03f3,
-0x0456, 0x0456,
-0x0458, 0x0458,
-0x1d62, 0x1d62,
-0x1d96, 0x1d96,
-0x1da4, 0x1da4,
-0x1da8, 0x1da8,
-0x1e2d, 0x1e2d,
-0x1ecb, 0x1ecb,
-0x2071, 0x2071,
-0x2148, 0x2149,
-0x2c7c, 0x2c7c,
-0x1d422, 0x1d423,
-0x1d456, 0x1d457,
-0x1d48a, 0x1d48b,
-0x1d4be, 0x1d4bf,
-0x1d4f2, 0x1d4f3,
-0x1d526, 0x1d527,
-0x1d55a, 0x1d55b,
-0x1d58e, 0x1d58f,
-0x1d5c2, 0x1d5c3,
-0x1d5f6, 0x1d5f7,
-0x1d62a, 0x1d62b,
-0x1d65e, 0x1d65f,
-0x1d692, 0x1d693,
-}; /* END of CR_Soft_Dotted */
-
-/* PROPERTY: 'Logical_Order_Exception': Binary Property */
-static const OnigCodePoint
-CR_Logical_Order_Exception[] = { 7,
-0x0e40, 0x0e44,
-0x0ec0, 0x0ec4,
-0x19b5, 0x19b7,
-0x19ba, 0x19ba,
-0xaab5, 0xaab6,
-0xaab9, 0xaab9,
-0xaabb, 0xaabc,
-}; /* END of CR_Logical_Order_Exception */
-
-/* PROPERTY: 'Other_ID_Start': Binary Property */
+/* PROPERTY: 'Z': Major Category */
static const OnigCodePoint
-CR_Other_ID_Start[] = { 3,
-0x2118, 0x2118,
-0x212e, 0x212e,
-0x309b, 0x309c,
-}; /* END of CR_Other_ID_Start */
+CR_Z[] = { 8,
+0x0020, 0x0020,
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x2028, 0x2029,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Z */
-/* PROPERTY: 'Other_ID_Continue': Binary Property */
+/* PROPERTY: 'Zanabazar_Square': Script */
static const OnigCodePoint
-CR_Other_ID_Continue[] = { 4,
-0x00b7, 0x00b7,
-0x0387, 0x0387,
-0x1369, 0x1371,
-0x19da, 0x19da,
-}; /* END of CR_Other_ID_Continue */
+CR_Zanabazar_Square[] = { 1,
+0x11a00, 0x11a47,
+}; /* END of CR_Zanabazar_Square */
-/* PROPERTY: 'STerm': Binary Property */
+/* PROPERTY: 'Zl': General Category */
static const OnigCodePoint
-CR_STerm[] = { 64,
-0x0021, 0x0021,
-0x002e, 0x002e,
-0x003f, 0x003f,
-0x0589, 0x0589,
-0x061f, 0x061f,
-0x06d4, 0x06d4,
-0x0700, 0x0702,
-0x07f9, 0x07f9,
-0x0964, 0x0965,
-0x104a, 0x104b,
-0x1362, 0x1362,
-0x1367, 0x1368,
-0x166e, 0x166e,
-0x1735, 0x1736,
-0x1803, 0x1803,
-0x1809, 0x1809,
-0x1944, 0x1945,
-0x1aa8, 0x1aab,
-0x1b5a, 0x1b5b,
-0x1b5e, 0x1b5f,
-0x1c3b, 0x1c3c,
-0x1c7e, 0x1c7f,
-0x203c, 0x203d,
-0x2047, 0x2049,
-0x2e2e, 0x2e2e,
-0x2e3c, 0x2e3c,
-0x3002, 0x3002,
-0xa4ff, 0xa4ff,
-0xa60e, 0xa60f,
-0xa6f3, 0xa6f3,
-0xa6f7, 0xa6f7,
-0xa876, 0xa877,
-0xa8ce, 0xa8cf,
-0xa92f, 0xa92f,
-0xa9c8, 0xa9c9,
-0xaa5d, 0xaa5f,
-0xaaf0, 0xaaf1,
-0xabeb, 0xabeb,
-0xfe52, 0xfe52,
-0xfe56, 0xfe57,
-0xff01, 0xff01,
-0xff0e, 0xff0e,
-0xff1f, 0xff1f,
-0xff61, 0xff61,
-0x10a56, 0x10a57,
-0x11047, 0x11048,
-0x110be, 0x110c1,
-0x11141, 0x11143,
-0x111c5, 0x111c6,
-0x111cd, 0x111cd,
-0x111de, 0x111df,
-0x11238, 0x11239,
-0x1123b, 0x1123c,
-0x112a9, 0x112a9,
-0x115c2, 0x115c3,
-0x115c9, 0x115d7,
-0x11641, 0x11642,
-0x1173c, 0x1173e,
-0x16a6e, 0x16a6f,
-0x16af5, 0x16af5,
-0x16b37, 0x16b38,
-0x16b44, 0x16b44,
-0x1bc9f, 0x1bc9f,
-0x1da88, 0x1da88,
-}; /* END of CR_STerm */
+CR_Zl[] = { 1,
+0x2028, 0x2028,
+}; /* END of CR_Zl */
-/* PROPERTY: 'Variation_Selector': Binary Property */
+/* PROPERTY: 'Zp': General Category */
static const OnigCodePoint
-CR_Variation_Selector[] = { 3,
-0x180b, 0x180d,
-0xfe00, 0xfe0f,
-0xe0100, 0xe01ef,
-}; /* END of CR_Variation_Selector */
+CR_Zp[] = { 1,
+0x2029, 0x2029,
+}; /* END of CR_Zp */
-/* PROPERTY: 'Pattern_White_Space': Binary Property */
+/* PROPERTY: 'Zs': General Category */
static const OnigCodePoint
-CR_Pattern_White_Space[] = { 5,
-0x0009, 0x000d,
+CR_Zs[] = { 7,
0x0020, 0x0020,
-0x0085, 0x0085,
-0x200e, 0x200f,
-0x2028, 0x2029,
-}; /* END of CR_Pattern_White_Space */
-
-/* PROPERTY: 'Pattern_Syntax': Binary Property */
-static const OnigCodePoint
-CR_Pattern_Syntax[] = { 28,
-0x0021, 0x002f,
-0x003a, 0x0040,
-0x005b, 0x005e,
-0x0060, 0x0060,
-0x007b, 0x007e,
-0x00a1, 0x00a7,
-0x00a9, 0x00a9,
-0x00ab, 0x00ac,
-0x00ae, 0x00ae,
-0x00b0, 0x00b1,
-0x00b6, 0x00b6,
-0x00bb, 0x00bb,
-0x00bf, 0x00bf,
-0x00d7, 0x00d7,
-0x00f7, 0x00f7,
-0x2010, 0x2027,
-0x2030, 0x203e,
-0x2041, 0x2053,
-0x2055, 0x205e,
-0x2190, 0x245f,
-0x2500, 0x2775,
-0x2794, 0x2bff,
-0x2e00, 0x2e7f,
-0x3001, 0x3003,
-0x3008, 0x3020,
-0x3030, 0x3030,
-0xfd3e, 0xfd3f,
-0xfe45, 0xfe46,
-}; /* END of CR_Pattern_Syntax */
-
-/* PROPERTY: 'Unknown': Script */
-static const OnigCodePoint
-CR_Unknown[] = { 611,
-0x0378, 0x0379,
-0x0380, 0x0383,
-0x038b, 0x038b,
-0x038d, 0x038d,
-0x03a2, 0x03a2,
-0x0530, 0x0530,
-0x0557, 0x0558,
-0x0560, 0x0560,
-0x0588, 0x0588,
-0x058b, 0x058c,
-0x0590, 0x0590,
-0x05c8, 0x05cf,
-0x05eb, 0x05ef,
-0x05f5, 0x05ff,
-0x061d, 0x061d,
-0x070e, 0x070e,
-0x074b, 0x074c,
-0x07b2, 0x07bf,
-0x07fb, 0x07ff,
-0x082e, 0x082f,
-0x083f, 0x083f,
-0x085c, 0x085d,
-0x085f, 0x089f,
-0x08b5, 0x08e2,
-0x0984, 0x0984,
-0x098d, 0x098e,
-0x0991, 0x0992,
-0x09a9, 0x09a9,
-0x09b1, 0x09b1,
-0x09b3, 0x09b5,
-0x09ba, 0x09bb,
-0x09c5, 0x09c6,
-0x09c9, 0x09ca,
-0x09cf, 0x09d6,
-0x09d8, 0x09db,
-0x09de, 0x09de,
-0x09e4, 0x09e5,
-0x09fc, 0x0a00,
-0x0a04, 0x0a04,
-0x0a0b, 0x0a0e,
-0x0a11, 0x0a12,
-0x0a29, 0x0a29,
-0x0a31, 0x0a31,
-0x0a34, 0x0a34,
-0x0a37, 0x0a37,
-0x0a3a, 0x0a3b,
-0x0a3d, 0x0a3d,
-0x0a43, 0x0a46,
-0x0a49, 0x0a4a,
-0x0a4e, 0x0a50,
-0x0a52, 0x0a58,
-0x0a5d, 0x0a5d,
-0x0a5f, 0x0a65,
-0x0a76, 0x0a80,
-0x0a84, 0x0a84,
-0x0a8e, 0x0a8e,
-0x0a92, 0x0a92,
-0x0aa9, 0x0aa9,
-0x0ab1, 0x0ab1,
-0x0ab4, 0x0ab4,
-0x0aba, 0x0abb,
-0x0ac6, 0x0ac6,
-0x0aca, 0x0aca,
-0x0ace, 0x0acf,
-0x0ad1, 0x0adf,
-0x0ae4, 0x0ae5,
-0x0af2, 0x0af8,
-0x0afa, 0x0b00,
-0x0b04, 0x0b04,
-0x0b0d, 0x0b0e,
-0x0b11, 0x0b12,
-0x0b29, 0x0b29,
-0x0b31, 0x0b31,
-0x0b34, 0x0b34,
-0x0b3a, 0x0b3b,
-0x0b45, 0x0b46,
-0x0b49, 0x0b4a,
-0x0b4e, 0x0b55,
-0x0b58, 0x0b5b,
-0x0b5e, 0x0b5e,
-0x0b64, 0x0b65,
-0x0b78, 0x0b81,
-0x0b84, 0x0b84,
-0x0b8b, 0x0b8d,
-0x0b91, 0x0b91,
-0x0b96, 0x0b98,
-0x0b9b, 0x0b9b,
-0x0b9d, 0x0b9d,
-0x0ba0, 0x0ba2,
-0x0ba5, 0x0ba7,
-0x0bab, 0x0bad,
-0x0bba, 0x0bbd,
-0x0bc3, 0x0bc5,
-0x0bc9, 0x0bc9,
-0x0bce, 0x0bcf,
-0x0bd1, 0x0bd6,
-0x0bd8, 0x0be5,
-0x0bfb, 0x0bff,
-0x0c04, 0x0c04,
-0x0c0d, 0x0c0d,
-0x0c11, 0x0c11,
-0x0c29, 0x0c29,
-0x0c3a, 0x0c3c,
-0x0c45, 0x0c45,
-0x0c49, 0x0c49,
-0x0c4e, 0x0c54,
-0x0c57, 0x0c57,
-0x0c5b, 0x0c5f,
-0x0c64, 0x0c65,
-0x0c70, 0x0c77,
-0x0c80, 0x0c80,
-0x0c84, 0x0c84,
-0x0c8d, 0x0c8d,
-0x0c91, 0x0c91,
-0x0ca9, 0x0ca9,
-0x0cb4, 0x0cb4,
-0x0cba, 0x0cbb,
-0x0cc5, 0x0cc5,
-0x0cc9, 0x0cc9,
-0x0cce, 0x0cd4,
-0x0cd7, 0x0cdd,
-0x0cdf, 0x0cdf,
-0x0ce4, 0x0ce5,
-0x0cf0, 0x0cf0,
-0x0cf3, 0x0d00,
-0x0d04, 0x0d04,
-0x0d0d, 0x0d0d,
-0x0d11, 0x0d11,
-0x0d3b, 0x0d3c,
-0x0d45, 0x0d45,
-0x0d49, 0x0d49,
-0x0d4f, 0x0d56,
-0x0d58, 0x0d5e,
-0x0d64, 0x0d65,
-0x0d76, 0x0d78,
-0x0d80, 0x0d81,
-0x0d84, 0x0d84,
-0x0d97, 0x0d99,
-0x0db2, 0x0db2,
-0x0dbc, 0x0dbc,
-0x0dbe, 0x0dbf,
-0x0dc7, 0x0dc9,
-0x0dcb, 0x0dce,
-0x0dd5, 0x0dd5,
-0x0dd7, 0x0dd7,
-0x0de0, 0x0de5,
-0x0df0, 0x0df1,
-0x0df5, 0x0e00,
-0x0e3b, 0x0e3e,
-0x0e5c, 0x0e80,
-0x0e83, 0x0e83,
-0x0e85, 0x0e86,
-0x0e89, 0x0e89,
-0x0e8b, 0x0e8c,
-0x0e8e, 0x0e93,
-0x0e98, 0x0e98,
-0x0ea0, 0x0ea0,
-0x0ea4, 0x0ea4,
-0x0ea6, 0x0ea6,
-0x0ea8, 0x0ea9,
-0x0eac, 0x0eac,
-0x0eba, 0x0eba,
-0x0ebe, 0x0ebf,
-0x0ec5, 0x0ec5,
-0x0ec7, 0x0ec7,
-0x0ece, 0x0ecf,
-0x0eda, 0x0edb,
-0x0ee0, 0x0eff,
-0x0f48, 0x0f48,
-0x0f6d, 0x0f70,
-0x0f98, 0x0f98,
-0x0fbd, 0x0fbd,
-0x0fcd, 0x0fcd,
-0x0fdb, 0x0fff,
-0x10c6, 0x10c6,
-0x10c8, 0x10cc,
-0x10ce, 0x10cf,
-0x1249, 0x1249,
-0x124e, 0x124f,
-0x1257, 0x1257,
-0x1259, 0x1259,
-0x125e, 0x125f,
-0x1289, 0x1289,
-0x128e, 0x128f,
-0x12b1, 0x12b1,
-0x12b6, 0x12b7,
-0x12bf, 0x12bf,
-0x12c1, 0x12c1,
-0x12c6, 0x12c7,
-0x12d7, 0x12d7,
-0x1311, 0x1311,
-0x1316, 0x1317,
-0x135b, 0x135c,
-0x137d, 0x137f,
-0x139a, 0x139f,
-0x13f6, 0x13f7,
-0x13fe, 0x13ff,
-0x169d, 0x169f,
-0x16f9, 0x16ff,
-0x170d, 0x170d,
-0x1715, 0x171f,
-0x1737, 0x173f,
-0x1754, 0x175f,
-0x176d, 0x176d,
-0x1771, 0x1771,
-0x1774, 0x177f,
-0x17de, 0x17df,
-0x17ea, 0x17ef,
-0x17fa, 0x17ff,
-0x180f, 0x180f,
-0x181a, 0x181f,
-0x1878, 0x187f,
-0x18ab, 0x18af,
-0x18f6, 0x18ff,
-0x191f, 0x191f,
-0x192c, 0x192f,
-0x193c, 0x193f,
-0x1941, 0x1943,
-0x196e, 0x196f,
-0x1975, 0x197f,
-0x19ac, 0x19af,
-0x19ca, 0x19cf,
-0x19db, 0x19dd,
-0x1a1c, 0x1a1d,
-0x1a5f, 0x1a5f,
-0x1a7d, 0x1a7e,
-0x1a8a, 0x1a8f,
-0x1a9a, 0x1a9f,
-0x1aae, 0x1aaf,
-0x1abf, 0x1aff,
-0x1b4c, 0x1b4f,
-0x1b7d, 0x1b7f,
-0x1bf4, 0x1bfb,
-0x1c38, 0x1c3a,
-0x1c4a, 0x1c4c,
-0x1c80, 0x1cbf,
-0x1cc8, 0x1ccf,
-0x1cf7, 0x1cf7,
-0x1cfa, 0x1cff,
-0x1df6, 0x1dfb,
-0x1f16, 0x1f17,
-0x1f1e, 0x1f1f,
-0x1f46, 0x1f47,
-0x1f4e, 0x1f4f,
-0x1f58, 0x1f58,
-0x1f5a, 0x1f5a,
-0x1f5c, 0x1f5c,
-0x1f5e, 0x1f5e,
-0x1f7e, 0x1f7f,
-0x1fb5, 0x1fb5,
-0x1fc5, 0x1fc5,
-0x1fd4, 0x1fd5,
-0x1fdc, 0x1fdc,
-0x1ff0, 0x1ff1,
-0x1ff5, 0x1ff5,
-0x1fff, 0x1fff,
-0x2065, 0x2065,
-0x2072, 0x2073,
-0x208f, 0x208f,
-0x209d, 0x209f,
-0x20bf, 0x20cf,
-0x20f1, 0x20ff,
-0x218c, 0x218f,
-0x23fb, 0x23ff,
-0x2427, 0x243f,
-0x244b, 0x245f,
-0x2b74, 0x2b75,
-0x2b96, 0x2b97,
-0x2bba, 0x2bbc,
-0x2bc9, 0x2bc9,
-0x2bd2, 0x2beb,
-0x2bf0, 0x2bff,
-0x2c2f, 0x2c2f,
-0x2c5f, 0x2c5f,
-0x2cf4, 0x2cf8,
-0x2d26, 0x2d26,
-0x2d28, 0x2d2c,
-0x2d2e, 0x2d2f,
-0x2d68, 0x2d6e,
-0x2d71, 0x2d7e,
-0x2d97, 0x2d9f,
-0x2da7, 0x2da7,
-0x2daf, 0x2daf,
-0x2db7, 0x2db7,
-0x2dbf, 0x2dbf,
-0x2dc7, 0x2dc7,
-0x2dcf, 0x2dcf,
-0x2dd7, 0x2dd7,
-0x2ddf, 0x2ddf,
-0x2e43, 0x2e7f,
-0x2e9a, 0x2e9a,
-0x2ef4, 0x2eff,
-0x2fd6, 0x2fef,
-0x2ffc, 0x2fff,
-0x3040, 0x3040,
-0x3097, 0x3098,
-0x3100, 0x3104,
-0x312e, 0x3130,
-0x318f, 0x318f,
-0x31bb, 0x31bf,
-0x31e4, 0x31ef,
-0x321f, 0x321f,
-0x32ff, 0x32ff,
-0x4db6, 0x4dbf,
-0x9fd6, 0x9fff,
-0xa48d, 0xa48f,
-0xa4c7, 0xa4cf,
-0xa62c, 0xa63f,
-0xa6f8, 0xa6ff,
-0xa7ae, 0xa7af,
-0xa7b8, 0xa7f6,
-0xa82c, 0xa82f,
-0xa83a, 0xa83f,
-0xa878, 0xa87f,
-0xa8c5, 0xa8cd,
-0xa8da, 0xa8df,
-0xa8fe, 0xa8ff,
-0xa954, 0xa95e,
-0xa97d, 0xa97f,
-0xa9ce, 0xa9ce,
-0xa9da, 0xa9dd,
-0xa9ff, 0xa9ff,
-0xaa37, 0xaa3f,
-0xaa4e, 0xaa4f,
-0xaa5a, 0xaa5b,
-0xaac3, 0xaada,
-0xaaf7, 0xab00,
-0xab07, 0xab08,
-0xab0f, 0xab10,
-0xab17, 0xab1f,
-0xab27, 0xab27,
-0xab2f, 0xab2f,
-0xab66, 0xab6f,
-0xabee, 0xabef,
-0xabfa, 0xabff,
-0xd7a4, 0xd7af,
-0xd7c7, 0xd7ca,
-0xd7fc, 0xf8ff,
-0xfa6e, 0xfa6f,
-0xfada, 0xfaff,
-0xfb07, 0xfb12,
-0xfb18, 0xfb1c,
-0xfb37, 0xfb37,
-0xfb3d, 0xfb3d,
-0xfb3f, 0xfb3f,
-0xfb42, 0xfb42,
-0xfb45, 0xfb45,
-0xfbc2, 0xfbd2,
-0xfd40, 0xfd4f,
-0xfd90, 0xfd91,
-0xfdc8, 0xfdef,
-0xfdfe, 0xfdff,
-0xfe1a, 0xfe1f,
-0xfe53, 0xfe53,
-0xfe67, 0xfe67,
-0xfe6c, 0xfe6f,
-0xfe75, 0xfe75,
-0xfefd, 0xfefe,
-0xff00, 0xff00,
-0xffbf, 0xffc1,
-0xffc8, 0xffc9,
-0xffd0, 0xffd1,
-0xffd8, 0xffd9,
-0xffdd, 0xffdf,
-0xffe7, 0xffe7,
-0xffef, 0xfff8,
-0xfffe, 0xffff,
-0x1000c, 0x1000c,
-0x10027, 0x10027,
-0x1003b, 0x1003b,
-0x1003e, 0x1003e,
-0x1004e, 0x1004f,
-0x1005e, 0x1007f,
-0x100fb, 0x100ff,
-0x10103, 0x10106,
-0x10134, 0x10136,
-0x1018d, 0x1018f,
-0x1019c, 0x1019f,
-0x101a1, 0x101cf,
-0x101fe, 0x1027f,
-0x1029d, 0x1029f,
-0x102d1, 0x102df,
-0x102fc, 0x102ff,
-0x10324, 0x1032f,
-0x1034b, 0x1034f,
-0x1037b, 0x1037f,
-0x1039e, 0x1039e,
-0x103c4, 0x103c7,
-0x103d6, 0x103ff,
-0x1049e, 0x1049f,
-0x104aa, 0x104ff,
-0x10528, 0x1052f,
-0x10564, 0x1056e,
-0x10570, 0x105ff,
-0x10737, 0x1073f,
-0x10756, 0x1075f,
-0x10768, 0x107ff,
-0x10806, 0x10807,
-0x10809, 0x10809,
-0x10836, 0x10836,
-0x10839, 0x1083b,
-0x1083d, 0x1083e,
-0x10856, 0x10856,
-0x1089f, 0x108a6,
-0x108b0, 0x108df,
-0x108f3, 0x108f3,
-0x108f6, 0x108fa,
-0x1091c, 0x1091e,
-0x1093a, 0x1093e,
-0x10940, 0x1097f,
-0x109b8, 0x109bb,
-0x109d0, 0x109d1,
-0x10a04, 0x10a04,
-0x10a07, 0x10a0b,
-0x10a14, 0x10a14,
-0x10a18, 0x10a18,
-0x10a34, 0x10a37,
-0x10a3b, 0x10a3e,
-0x10a48, 0x10a4f,
-0x10a59, 0x10a5f,
-0x10aa0, 0x10abf,
-0x10ae7, 0x10aea,
-0x10af7, 0x10aff,
-0x10b36, 0x10b38,
-0x10b56, 0x10b57,
-0x10b73, 0x10b77,
-0x10b92, 0x10b98,
-0x10b9d, 0x10ba8,
-0x10bb0, 0x10bff,
-0x10c49, 0x10c7f,
-0x10cb3, 0x10cbf,
-0x10cf3, 0x10cf9,
-0x10d00, 0x10e5f,
-0x10e7f, 0x10fff,
-0x1104e, 0x11051,
-0x11070, 0x1107e,
-0x110c2, 0x110cf,
-0x110e9, 0x110ef,
-0x110fa, 0x110ff,
-0x11135, 0x11135,
-0x11144, 0x1114f,
-0x11177, 0x1117f,
-0x111ce, 0x111cf,
-0x111e0, 0x111e0,
-0x111f5, 0x111ff,
-0x11212, 0x11212,
-0x1123e, 0x1127f,
-0x11287, 0x11287,
-0x11289, 0x11289,
-0x1128e, 0x1128e,
-0x1129e, 0x1129e,
-0x112aa, 0x112af,
-0x112eb, 0x112ef,
-0x112fa, 0x112ff,
-0x11304, 0x11304,
-0x1130d, 0x1130e,
-0x11311, 0x11312,
-0x11329, 0x11329,
-0x11331, 0x11331,
-0x11334, 0x11334,
-0x1133a, 0x1133b,
-0x11345, 0x11346,
-0x11349, 0x1134a,
-0x1134e, 0x1134f,
-0x11351, 0x11356,
-0x11358, 0x1135c,
-0x11364, 0x11365,
-0x1136d, 0x1136f,
-0x11375, 0x1147f,
-0x114c8, 0x114cf,
-0x114da, 0x1157f,
-0x115b6, 0x115b7,
-0x115de, 0x115ff,
-0x11645, 0x1164f,
-0x1165a, 0x1167f,
-0x116b8, 0x116bf,
-0x116ca, 0x116ff,
-0x1171a, 0x1171c,
-0x1172c, 0x1172f,
-0x11740, 0x1189f,
-0x118f3, 0x118fe,
-0x11900, 0x11abf,
-0x11af9, 0x11fff,
-0x1239a, 0x123ff,
-0x1246f, 0x1246f,
-0x12475, 0x1247f,
-0x12544, 0x12fff,
-0x1342f, 0x143ff,
-0x14647, 0x167ff,
-0x16a39, 0x16a3f,
-0x16a5f, 0x16a5f,
-0x16a6a, 0x16a6d,
-0x16a70, 0x16acf,
-0x16aee, 0x16aef,
-0x16af6, 0x16aff,
-0x16b46, 0x16b4f,
-0x16b5a, 0x16b5a,
-0x16b62, 0x16b62,
-0x16b78, 0x16b7c,
-0x16b90, 0x16eff,
-0x16f45, 0x16f4f,
-0x16f7f, 0x16f8e,
-0x16fa0, 0x1afff,
-0x1b002, 0x1bbff,
-0x1bc6b, 0x1bc6f,
-0x1bc7d, 0x1bc7f,
-0x1bc89, 0x1bc8f,
-0x1bc9a, 0x1bc9b,
-0x1bca4, 0x1cfff,
-0x1d0f6, 0x1d0ff,
-0x1d127, 0x1d128,
-0x1d1e9, 0x1d1ff,
-0x1d246, 0x1d2ff,
-0x1d357, 0x1d35f,
-0x1d372, 0x1d3ff,
-0x1d455, 0x1d455,
-0x1d49d, 0x1d49d,
-0x1d4a0, 0x1d4a1,
-0x1d4a3, 0x1d4a4,
-0x1d4a7, 0x1d4a8,
-0x1d4ad, 0x1d4ad,
-0x1d4ba, 0x1d4ba,
-0x1d4bc, 0x1d4bc,
-0x1d4c4, 0x1d4c4,
-0x1d506, 0x1d506,
-0x1d50b, 0x1d50c,
-0x1d515, 0x1d515,
-0x1d51d, 0x1d51d,
-0x1d53a, 0x1d53a,
-0x1d53f, 0x1d53f,
-0x1d545, 0x1d545,
-0x1d547, 0x1d549,
-0x1d551, 0x1d551,
-0x1d6a6, 0x1d6a7,
-0x1d7cc, 0x1d7cd,
-0x1da8c, 0x1da9a,
-0x1daa0, 0x1daa0,
-0x1dab0, 0x1e7ff,
-0x1e8c5, 0x1e8c6,
-0x1e8d7, 0x1edff,
-0x1ee04, 0x1ee04,
-0x1ee20, 0x1ee20,
-0x1ee23, 0x1ee23,
-0x1ee25, 0x1ee26,
-0x1ee28, 0x1ee28,
-0x1ee33, 0x1ee33,
-0x1ee38, 0x1ee38,
-0x1ee3a, 0x1ee3a,
-0x1ee3c, 0x1ee41,
-0x1ee43, 0x1ee46,
-0x1ee48, 0x1ee48,
-0x1ee4a, 0x1ee4a,
-0x1ee4c, 0x1ee4c,
-0x1ee50, 0x1ee50,
-0x1ee53, 0x1ee53,
-0x1ee55, 0x1ee56,
-0x1ee58, 0x1ee58,
-0x1ee5a, 0x1ee5a,
-0x1ee5c, 0x1ee5c,
-0x1ee5e, 0x1ee5e,
-0x1ee60, 0x1ee60,
-0x1ee63, 0x1ee63,
-0x1ee65, 0x1ee66,
-0x1ee6b, 0x1ee6b,
-0x1ee73, 0x1ee73,
-0x1ee78, 0x1ee78,
-0x1ee7d, 0x1ee7d,
-0x1ee7f, 0x1ee7f,
-0x1ee8a, 0x1ee8a,
-0x1ee9c, 0x1eea0,
-0x1eea4, 0x1eea4,
-0x1eeaa, 0x1eeaa,
-0x1eebc, 0x1eeef,
-0x1eef2, 0x1efff,
-0x1f02c, 0x1f02f,
-0x1f094, 0x1f09f,
-0x1f0af, 0x1f0b0,
-0x1f0c0, 0x1f0c0,
-0x1f0d0, 0x1f0d0,
-0x1f0f6, 0x1f0ff,
-0x1f10d, 0x1f10f,
-0x1f12f, 0x1f12f,
-0x1f16c, 0x1f16f,
-0x1f19b, 0x1f1e5,
-0x1f203, 0x1f20f,
-0x1f23b, 0x1f23f,
-0x1f249, 0x1f24f,
-0x1f252, 0x1f2ff,
-0x1f57a, 0x1f57a,
-0x1f5a4, 0x1f5a4,
-0x1f6d1, 0x1f6df,
-0x1f6ed, 0x1f6ef,
-0x1f6f4, 0x1f6ff,
-0x1f774, 0x1f77f,
-0x1f7d5, 0x1f7ff,
-0x1f80c, 0x1f80f,
-0x1f848, 0x1f84f,
-0x1f85a, 0x1f85f,
-0x1f888, 0x1f88f,
-0x1f8ae, 0x1f90f,
-0x1f919, 0x1f97f,
-0x1f985, 0x1f9bf,
-0x1f9c1, 0x1ffff,
-0x2a6d7, 0x2a6ff,
-0x2b735, 0x2b73f,
-0x2b81e, 0x2b81f,
-0x2cea2, 0x2f7ff,
-0x2fa1e, 0xe0000,
-0xe0002, 0xe001f,
-0xe0080, 0xe00ff,
-0xe01f0, 0x10ffff,
-}; /* END of CR_Unknown */
+0x00a0, 0x00a0,
+0x1680, 0x1680,
+0x2000, 0x200a,
+0x202f, 0x202f,
+0x205f, 0x205f,
+0x3000, 0x3000,
+}; /* END of CR_Zs */
/* PROPERTY: 'In_Basic_Latin': Block */
#define CR_In_Basic_Latin CR_ASCII
@@ -20926,6 +22704,12 @@ CR_In_Mandaic[] = { 1,
0x0840, 0x085f,
}; /* END of CR_In_Mandaic */
+/* PROPERTY: 'In_Syriac_Supplement': Block */
+static const OnigCodePoint
+CR_In_Syriac_Supplement[] = { 1,
+0x0860, 0x086f,
+}; /* END of CR_In_Syriac_Supplement */
+
/* PROPERTY: 'In_Arabic_Extended_A': Block */
static const OnigCodePoint
CR_In_Arabic_Extended_A[] = { 1,
@@ -21175,6 +22959,18 @@ CR_In_Lepcha[] = { 1,
/* PROPERTY: 'In_Ol_Chiki': Block */
#define CR_In_Ol_Chiki CR_Ol_Chiki
+/* PROPERTY: 'In_Cyrillic_Extended_C': Block */
+static const OnigCodePoint
+CR_In_Cyrillic_Extended_C[] = { 1,
+0x1c80, 0x1c8f,
+}; /* END of CR_In_Cyrillic_Extended_C */
+
+/* PROPERTY: 'In_Georgian_Extended': Block */
+static const OnigCodePoint
+CR_In_Georgian_Extended[] = { 1,
+0x1c90, 0x1cbf,
+}; /* END of CR_In_Georgian_Extended */
+
/* PROPERTY: 'In_Sundanese_Supplement': Block */
static const OnigCodePoint
CR_In_Sundanese_Supplement[] = { 1,
@@ -21859,6 +23655,12 @@ CR_In_Osmanya[] = { 1,
0x10480, 0x104af,
}; /* END of CR_In_Osmanya */
+/* PROPERTY: 'In_Osage': Block */
+static const OnigCodePoint
+CR_In_Osage[] = { 1,
+0x104b0, 0x104ff,
+}; /* END of CR_In_Osage */
+
/* PROPERTY: 'In_Elbasan': Block */
static const OnigCodePoint
CR_In_Elbasan[] = { 1,
@@ -21979,12 +23781,30 @@ CR_In_Old_Hungarian[] = { 1,
0x10c80, 0x10cff,
}; /* END of CR_In_Old_Hungarian */
+/* PROPERTY: 'In_Hanifi_Rohingya': Block */
+static const OnigCodePoint
+CR_In_Hanifi_Rohingya[] = { 1,
+0x10d00, 0x10d3f,
+}; /* END of CR_In_Hanifi_Rohingya */
+
/* PROPERTY: 'In_Rumi_Numeral_Symbols': Block */
static const OnigCodePoint
CR_In_Rumi_Numeral_Symbols[] = { 1,
0x10e60, 0x10e7f,
}; /* END of CR_In_Rumi_Numeral_Symbols */
+/* PROPERTY: 'In_Old_Sogdian': Block */
+static const OnigCodePoint
+CR_In_Old_Sogdian[] = { 1,
+0x10f00, 0x10f2f,
+}; /* END of CR_In_Old_Sogdian */
+
+/* PROPERTY: 'In_Sogdian': Block */
+static const OnigCodePoint
+CR_In_Sogdian[] = { 1,
+0x10f30, 0x10f6f,
+}; /* END of CR_In_Sogdian */
+
/* PROPERTY: 'In_Brahmi': Block */
static const OnigCodePoint
CR_In_Brahmi[] = { 1,
@@ -22051,6 +23871,12 @@ CR_In_Grantha[] = { 1,
0x11300, 0x1137f,
}; /* END of CR_In_Grantha */
+/* PROPERTY: 'In_Newa': Block */
+static const OnigCodePoint
+CR_In_Newa[] = { 1,
+0x11400, 0x1147f,
+}; /* END of CR_In_Newa */
+
/* PROPERTY: 'In_Tirhuta': Block */
static const OnigCodePoint
CR_In_Tirhuta[] = { 1,
@@ -22069,6 +23895,12 @@ CR_In_Modi[] = { 1,
0x11600, 0x1165f,
}; /* END of CR_In_Modi */
+/* PROPERTY: 'In_Mongolian_Supplement': Block */
+static const OnigCodePoint
+CR_In_Mongolian_Supplement[] = { 1,
+0x11660, 0x1167f,
+}; /* END of CR_In_Mongolian_Supplement */
+
/* PROPERTY: 'In_Takri': Block */
static const OnigCodePoint
CR_In_Takri[] = { 1,
@@ -22081,18 +23913,66 @@ CR_In_Ahom[] = { 1,
0x11700, 0x1173f,
}; /* END of CR_In_Ahom */
+/* PROPERTY: 'In_Dogra': Block */
+static const OnigCodePoint
+CR_In_Dogra[] = { 1,
+0x11800, 0x1184f,
+}; /* END of CR_In_Dogra */
+
/* PROPERTY: 'In_Warang_Citi': Block */
static const OnigCodePoint
CR_In_Warang_Citi[] = { 1,
0x118a0, 0x118ff,
}; /* END of CR_In_Warang_Citi */
+/* PROPERTY: 'In_Zanabazar_Square': Block */
+static const OnigCodePoint
+CR_In_Zanabazar_Square[] = { 1,
+0x11a00, 0x11a4f,
+}; /* END of CR_In_Zanabazar_Square */
+
+/* PROPERTY: 'In_Soyombo': Block */
+static const OnigCodePoint
+CR_In_Soyombo[] = { 1,
+0x11a50, 0x11aaf,
+}; /* END of CR_In_Soyombo */
+
/* PROPERTY: 'In_Pau_Cin_Hau': Block */
static const OnigCodePoint
CR_In_Pau_Cin_Hau[] = { 1,
0x11ac0, 0x11aff,
}; /* END of CR_In_Pau_Cin_Hau */
+/* PROPERTY: 'In_Bhaiksuki': Block */
+static const OnigCodePoint
+CR_In_Bhaiksuki[] = { 1,
+0x11c00, 0x11c6f,
+}; /* END of CR_In_Bhaiksuki */
+
+/* PROPERTY: 'In_Marchen': Block */
+static const OnigCodePoint
+CR_In_Marchen[] = { 1,
+0x11c70, 0x11cbf,
+}; /* END of CR_In_Marchen */
+
+/* PROPERTY: 'In_Masaram_Gondi': Block */
+static const OnigCodePoint
+CR_In_Masaram_Gondi[] = { 1,
+0x11d00, 0x11d5f,
+}; /* END of CR_In_Masaram_Gondi */
+
+/* PROPERTY: 'In_Gunjala_Gondi': Block */
+static const OnigCodePoint
+CR_In_Gunjala_Gondi[] = { 1,
+0x11d60, 0x11daf,
+}; /* END of CR_In_Gunjala_Gondi */
+
+/* PROPERTY: 'In_Makasar': Block */
+static const OnigCodePoint
+CR_In_Makasar[] = { 1,
+0x11ee0, 0x11eff,
+}; /* END of CR_In_Makasar */
+
/* PROPERTY: 'In_Cuneiform': Block */
static const OnigCodePoint
CR_In_Cuneiform[] = { 1,
@@ -22147,18 +24027,54 @@ CR_In_Pahawh_Hmong[] = { 1,
0x16b00, 0x16b8f,
}; /* END of CR_In_Pahawh_Hmong */
+/* PROPERTY: 'In_Medefaidrin': Block */
+static const OnigCodePoint
+CR_In_Medefaidrin[] = { 1,
+0x16e40, 0x16e9f,
+}; /* END of CR_In_Medefaidrin */
+
/* PROPERTY: 'In_Miao': Block */
static const OnigCodePoint
CR_In_Miao[] = { 1,
0x16f00, 0x16f9f,
}; /* END of CR_In_Miao */
+/* PROPERTY: 'In_Ideographic_Symbols_and_Punctuation': Block */
+static const OnigCodePoint
+CR_In_Ideographic_Symbols_and_Punctuation[] = { 1,
+0x16fe0, 0x16fff,
+}; /* END of CR_In_Ideographic_Symbols_and_Punctuation */
+
+/* PROPERTY: 'In_Tangut': Block */
+static const OnigCodePoint
+CR_In_Tangut[] = { 1,
+0x17000, 0x187ff,
+}; /* END of CR_In_Tangut */
+
+/* PROPERTY: 'In_Tangut_Components': Block */
+static const OnigCodePoint
+CR_In_Tangut_Components[] = { 1,
+0x18800, 0x18aff,
+}; /* END of CR_In_Tangut_Components */
+
/* PROPERTY: 'In_Kana_Supplement': Block */
static const OnigCodePoint
CR_In_Kana_Supplement[] = { 1,
0x1b000, 0x1b0ff,
}; /* END of CR_In_Kana_Supplement */
+/* PROPERTY: 'In_Kana_Extended_A': Block */
+static const OnigCodePoint
+CR_In_Kana_Extended_A[] = { 1,
+0x1b100, 0x1b12f,
+}; /* END of CR_In_Kana_Extended_A */
+
+/* PROPERTY: 'In_Nushu': Block */
+static const OnigCodePoint
+CR_In_Nushu[] = { 1,
+0x1b170, 0x1b2ff,
+}; /* END of CR_In_Nushu */
+
/* PROPERTY: 'In_Duployan': Block */
static const OnigCodePoint
CR_In_Duployan[] = { 1,
@@ -22189,6 +24105,12 @@ CR_In_Ancient_Greek_Musical_Notation[] = { 1,
0x1d200, 0x1d24f,
}; /* END of CR_In_Ancient_Greek_Musical_Notation */
+/* PROPERTY: 'In_Mayan_Numerals': Block */
+static const OnigCodePoint
+CR_In_Mayan_Numerals[] = { 1,
+0x1d2e0, 0x1d2ff,
+}; /* END of CR_In_Mayan_Numerals */
+
/* PROPERTY: 'In_Tai_Xuan_Jing_Symbols': Block */
static const OnigCodePoint
CR_In_Tai_Xuan_Jing_Symbols[] = { 1,
@@ -22213,12 +24135,30 @@ CR_In_Sutton_SignWriting[] = { 1,
0x1d800, 0x1daaf,
}; /* END of CR_In_Sutton_SignWriting */
+/* PROPERTY: 'In_Glagolitic_Supplement': Block */
+static const OnigCodePoint
+CR_In_Glagolitic_Supplement[] = { 1,
+0x1e000, 0x1e02f,
+}; /* END of CR_In_Glagolitic_Supplement */
+
/* PROPERTY: 'In_Mende_Kikakui': Block */
static const OnigCodePoint
CR_In_Mende_Kikakui[] = { 1,
0x1e800, 0x1e8df,
}; /* END of CR_In_Mende_Kikakui */
+/* PROPERTY: 'In_Adlam': Block */
+static const OnigCodePoint
+CR_In_Adlam[] = { 1,
+0x1e900, 0x1e95f,
+}; /* END of CR_In_Adlam */
+
+/* PROPERTY: 'In_Indic_Siyaq_Numbers': Block */
+static const OnigCodePoint
+CR_In_Indic_Siyaq_Numbers[] = { 1,
+0x1ec70, 0x1ecbf,
+}; /* END of CR_In_Indic_Siyaq_Numbers */
+
/* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
static const OnigCodePoint
CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1,
@@ -22303,6 +24243,12 @@ CR_In_Supplemental_Symbols_and_Pictographs[] = { 1,
0x1f900, 0x1f9ff,
}; /* END of CR_In_Supplemental_Symbols_and_Pictographs */
+/* PROPERTY: 'In_Chess_Symbols': Block */
+static const OnigCodePoint
+CR_In_Chess_Symbols[] = { 1,
+0x1fa00, 0x1fa6f,
+}; /* END of CR_In_Chess_Symbols */
+
/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */
static const OnigCodePoint
CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1,
@@ -22327,6 +24273,12 @@ CR_In_CJK_Unified_Ideographs_Extension_E[] = { 1,
0x2b820, 0x2ceaf,
}; /* END of CR_In_CJK_Unified_Ideographs_Extension_E */
+/* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_F': Block */
+static const OnigCodePoint
+CR_In_CJK_Unified_Ideographs_Extension_F[] = { 1,
+0x2ceb0, 0x2ebef,
+}; /* END of CR_In_CJK_Unified_Ideographs_Extension_F */
+
/* PROPERTY: 'In_CJK_Compatibility_Ideographs_Supplement': Block */
static const OnigCodePoint
CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1,
@@ -22359,13 +24311,11 @@ CR_In_Supplementary_Private_Use_Area_B[] = { 1,
/* PROPERTY: 'In_No_Block': Block */
static const OnigCodePoint
-CR_In_No_Block[] = { 42,
-0x0860, 0x089f,
-0x1c80, 0x1cbf,
+CR_In_No_Block[] = { 51,
+0x0870, 0x089f,
0x2fe0, 0x2fef,
0x10200, 0x1027f,
0x103e0, 0x103ff,
-0x104b0, 0x104ff,
0x10570, 0x105ff,
0x10780, 0x107ff,
0x108b0, 0x108df,
@@ -22373,32 +24323,43 @@ CR_In_No_Block[] = { 42,
0x10aa0, 0x10abf,
0x10bb0, 0x10bff,
0x10c50, 0x10c7f,
-0x10d00, 0x10e5f,
-0x10e80, 0x10fff,
+0x10d40, 0x10e5f,
+0x10e80, 0x10eff,
+0x10f70, 0x10fff,
0x11250, 0x1127f,
-0x11380, 0x1147f,
+0x11380, 0x113ff,
0x114e0, 0x1157f,
-0x11660, 0x1167f,
0x116d0, 0x116ff,
-0x11740, 0x1189f,
-0x11900, 0x11abf,
-0x11b00, 0x11fff,
+0x11740, 0x117ff,
+0x11850, 0x1189f,
+0x11900, 0x119ff,
+0x11ab0, 0x11abf,
+0x11b00, 0x11bff,
+0x11cc0, 0x11cff,
+0x11db0, 0x11edf,
+0x11f00, 0x11fff,
0x12550, 0x12fff,
0x13430, 0x143ff,
0x14680, 0x167ff,
0x16a70, 0x16acf,
-0x16b90, 0x16eff,
-0x16fa0, 0x1afff,
-0x1b100, 0x1bbff,
+0x16b90, 0x16e3f,
+0x16ea0, 0x16eff,
+0x16fa0, 0x16fdf,
+0x18b00, 0x1afff,
+0x1b130, 0x1b16f,
+0x1b300, 0x1bbff,
0x1bcb0, 0x1cfff,
-0x1d250, 0x1d2ff,
+0x1d250, 0x1d2df,
0x1d380, 0x1d3ff,
-0x1dab0, 0x1e7ff,
-0x1e8e0, 0x1edff,
+0x1dab0, 0x1dfff,
+0x1e030, 0x1e7ff,
+0x1e8e0, 0x1e8ff,
+0x1e960, 0x1ec6f,
+0x1ecc0, 0x1edff,
0x1ef00, 0x1efff,
-0x1fa00, 0x1ffff,
+0x1fa70, 0x1ffff,
0x2a6e0, 0x2a6ff,
-0x2ceb0, 0x2f7ff,
+0x2ebf0, 0x2f7ff,
0x2fa20, 0xdffff,
0xe0080, 0xe00ff,
0xe01f0, 0xeffff,
@@ -22421,229 +24382,254 @@ const CodeRanges[] = {
CR_Word,
CR_Alnum,
CR_ASCII,
+ CR_ASCII_Hex_Digit,
+ CR_Adlam,
+ CR_Ahom,
+ CR_Alphabetic,
+ CR_Anatolian_Hieroglyphs,
CR_Any,
+ CR_Arabic,
+ CR_Armenian,
CR_Assigned,
+ CR_Avestan,
+ CR_Balinese,
+ CR_Bamum,
+ CR_Bassa_Vah,
+ CR_Batak,
+ CR_Bengali,
+ CR_Bhaiksuki,
+ CR_Bidi_Control,
+ CR_Bopomofo,
+ CR_Brahmi,
+ CR_Braille,
+ CR_Buginese,
+ CR_Buhid,
CR_C,
+ CR_Canadian_Aboriginal,
+ CR_Carian,
+ CR_Case_Ignorable,
+ CR_Cased,
+ CR_Caucasian_Albanian,
CR_Cc,
CR_Cf,
+ CR_Chakma,
+ CR_Cham,
+ CR_Changes_When_Casefolded,
+ CR_Changes_When_Casemapped,
+ CR_Changes_When_Lowercased,
+ CR_Changes_When_Titlecased,
+ CR_Changes_When_Uppercased,
+ CR_Cherokee,
CR_Cn,
CR_Co,
+ CR_Common,
+ CR_Coptic,
CR_Cs,
+ CR_Cuneiform,
+ CR_Cypriot,
+ CR_Cyrillic,
+ CR_Dash,
+ CR_Default_Ignorable_Code_Point,
+ CR_Deprecated,
+ CR_Deseret,
+ CR_Devanagari,
+ CR_Diacritic,
+ CR_Dogra,
+ CR_Duployan,
+ CR_Egyptian_Hieroglyphs,
+ CR_Elbasan,
+ CR_Emoji,
+ CR_Emoji_Component,
+ CR_Emoji_Modifier,
+ CR_Emoji_Modifier_Base,
+ CR_Emoji_Presentation,
+ CR_Ethiopic,
+ CR_Extended_Pictographic,
+ CR_Extender,
+ CR_Georgian,
+ CR_Glagolitic,
+ CR_Gothic,
+ CR_Grantha,
+ CR_Grapheme_Base,
+ CR_Grapheme_Extend,
+ CR_Grapheme_Link,
+ CR_Greek,
+ CR_Gujarati,
+ CR_Gunjala_Gondi,
+ CR_Gurmukhi,
+ CR_Han,
+ CR_Hangul,
+ CR_Hanifi_Rohingya,
+ CR_Hanunoo,
+ CR_Hatran,
+ CR_Hebrew,
+ CR_Hex_Digit,
+ CR_Hiragana,
+ CR_Hyphen,
+ CR_IDS_Binary_Operator,
+ CR_IDS_Trinary_Operator,
+ CR_ID_Continue,
+ CR_ID_Start,
+ CR_Ideographic,
+ CR_Imperial_Aramaic,
+ CR_Inherited,
+ CR_Inscriptional_Pahlavi,
+ CR_Inscriptional_Parthian,
+ CR_Javanese,
+ CR_Join_Control,
+ CR_Kaithi,
+ CR_Kannada,
+ CR_Katakana,
+ CR_Kayah_Li,
+ CR_Kharoshthi,
+ CR_Khmer,
+ CR_Khojki,
+ CR_Khudawadi,
CR_L,
CR_LC,
+ CR_Lao,
+ CR_Latin,
+ CR_Lepcha,
+ CR_Limbu,
+ CR_Linear_A,
+ CR_Linear_B,
+ CR_Lisu,
CR_Ll,
CR_Lm,
CR_Lo,
+ CR_Logical_Order_Exception,
+ CR_Lowercase,
CR_Lt,
CR_Lu,
+ CR_Lycian,
+ CR_Lydian,
CR_M,
+ CR_Mahajani,
+ CR_Makasar,
+ CR_Malayalam,
+ CR_Mandaic,
+ CR_Manichaean,
+ CR_Marchen,
+ CR_Masaram_Gondi,
+ CR_Math,
CR_Mc,
CR_Me,
+ CR_Medefaidrin,
+ CR_Meetei_Mayek,
+ CR_Mende_Kikakui,
+ CR_Meroitic_Cursive,
+ CR_Meroitic_Hieroglyphs,
+ CR_Miao,
CR_Mn,
+ CR_Modi,
+ CR_Mongolian,
+ CR_Mro,
+ CR_Multani,
+ CR_Myanmar,
CR_N,
+ CR_Nabataean,
CR_Nd,
+ CR_New_Tai_Lue,
+ CR_Newa,
+ CR_Nko,
CR_Nl,
CR_No,
+ CR_Noncharacter_Code_Point,
+ CR_Nushu,
+ CR_Ogham,
+ CR_Ol_Chiki,
+ CR_Old_Hungarian,
+ CR_Old_Italic,
+ CR_Old_North_Arabian,
+ CR_Old_Permic,
+ CR_Old_Persian,
+ CR_Old_Sogdian,
+ CR_Old_South_Arabian,
+ CR_Old_Turkic,
+ CR_Oriya,
+ CR_Osage,
+ CR_Osmanya,
+ CR_Other_Alphabetic,
+ CR_Other_Default_Ignorable_Code_Point,
+ CR_Other_Grapheme_Extend,
+ CR_Other_ID_Continue,
+ CR_Other_ID_Start,
+ CR_Other_Lowercase,
+ CR_Other_Math,
+ CR_Other_Uppercase,
CR_P,
+ CR_Pahawh_Hmong,
+ CR_Palmyrene,
+ CR_Pattern_Syntax,
+ CR_Pattern_White_Space,
+ CR_Pau_Cin_Hau,
CR_Pc,
CR_Pd,
CR_Pe,
CR_Pf,
+ CR_Phags_Pa,
+ CR_Phoenician,
CR_Pi,
CR_Po,
+ CR_Prepended_Concatenation_Mark,
CR_Ps,
+ CR_Psalter_Pahlavi,
+ CR_Quotation_Mark,
+ CR_Radical,
+ CR_Regional_Indicator,
+ CR_Rejang,
+ CR_Runic,
CR_S,
+ CR_Samaritan,
+ CR_Saurashtra,
CR_Sc,
+ CR_Sentence_Terminal,
+ CR_Sharada,
+ CR_Shavian,
+ CR_Siddham,
+ CR_SignWriting,
+ CR_Sinhala,
CR_Sk,
CR_Sm,
CR_So,
- CR_Z,
- CR_Zl,
- CR_Zp,
- CR_Zs,
- CR_Math,
- CR_Alphabetic,
- CR_Lowercase,
- CR_Uppercase,
- CR_Cased,
- CR_Case_Ignorable,
- CR_Changes_When_Lowercased,
- CR_Changes_When_Uppercased,
- CR_Changes_When_Titlecased,
- CR_Changes_When_Casefolded,
- CR_Changes_When_Casemapped,
- CR_ID_Start,
- CR_ID_Continue,
- CR_XID_Start,
- CR_XID_Continue,
- CR_Default_Ignorable_Code_Point,
- CR_Grapheme_Extend,
- CR_Grapheme_Base,
- CR_Grapheme_Link,
- CR_Common,
- CR_Latin,
- CR_Greek,
- CR_Cyrillic,
- CR_Armenian,
- CR_Hebrew,
- CR_Arabic,
+ CR_Soft_Dotted,
+ CR_Sogdian,
+ CR_Sora_Sompeng,
+ CR_Soyombo,
+ CR_Sundanese,
+ CR_Syloti_Nagri,
CR_Syriac,
- CR_Thaana,
- CR_Devanagari,
- CR_Bengali,
- CR_Gurmukhi,
- CR_Gujarati,
- CR_Oriya,
- CR_Tamil,
- CR_Telugu,
- CR_Kannada,
- CR_Malayalam,
- CR_Sinhala,
- CR_Thai,
- CR_Lao,
- CR_Tibetan,
- CR_Myanmar,
- CR_Georgian,
- CR_Hangul,
- CR_Ethiopic,
- CR_Cherokee,
- CR_Canadian_Aboriginal,
- CR_Ogham,
- CR_Runic,
- CR_Khmer,
- CR_Mongolian,
- CR_Hiragana,
- CR_Katakana,
- CR_Bopomofo,
- CR_Han,
- CR_Yi,
- CR_Old_Italic,
- CR_Gothic,
- CR_Deseret,
- CR_Inherited,
CR_Tagalog,
- CR_Hanunoo,
- CR_Buhid,
CR_Tagbanwa,
- CR_Limbu,
CR_Tai_Le,
- CR_Linear_B,
- CR_Ugaritic,
- CR_Shavian,
- CR_Osmanya,
- CR_Cypriot,
- CR_Braille,
- CR_Buginese,
- CR_Coptic,
- CR_New_Tai_Lue,
- CR_Glagolitic,
- CR_Tifinagh,
- CR_Syloti_Nagri,
- CR_Old_Persian,
- CR_Kharoshthi,
- CR_Balinese,
- CR_Cuneiform,
- CR_Phoenician,
- CR_Phags_Pa,
- CR_Nko,
- CR_Sundanese,
- CR_Lepcha,
- CR_Ol_Chiki,
- CR_Vai,
- CR_Saurashtra,
- CR_Kayah_Li,
- CR_Rejang,
- CR_Lycian,
- CR_Carian,
- CR_Lydian,
- CR_Cham,
CR_Tai_Tham,
CR_Tai_Viet,
- CR_Avestan,
- CR_Egyptian_Hieroglyphs,
- CR_Samaritan,
- CR_Lisu,
- CR_Bamum,
- CR_Javanese,
- CR_Meetei_Mayek,
- CR_Imperial_Aramaic,
- CR_Old_South_Arabian,
- CR_Inscriptional_Parthian,
- CR_Inscriptional_Pahlavi,
- CR_Old_Turkic,
- CR_Kaithi,
- CR_Batak,
- CR_Brahmi,
- CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
CR_Takri,
- CR_Caucasian_Albanian,
- CR_Bassa_Vah,
- CR_Duployan,
- CR_Elbasan,
- CR_Grantha,
- CR_Pahawh_Hmong,
- CR_Khojki,
- CR_Linear_A,
- CR_Mahajani,
- CR_Manichaean,
- CR_Mende_Kikakui,
- CR_Modi,
- CR_Mro,
- CR_Old_North_Arabian,
- CR_Nabataean,
- CR_Palmyrene,
- CR_Pau_Cin_Hau,
- CR_Old_Permic,
- CR_Psalter_Pahlavi,
- CR_Siddham,
- CR_Khudawadi,
- CR_Tirhuta,
- CR_Warang_Citi,
- CR_Ahom,
- CR_Anatolian_Hieroglyphs,
- CR_Hatran,
- CR_Multani,
- CR_Old_Hungarian,
- CR_SignWriting,
- CR_White_Space,
- CR_Bidi_Control,
- CR_Join_Control,
- CR_Dash,
- CR_Hyphen,
- CR_Quotation_Mark,
+ CR_Tamil,
+ CR_Tangut,
+ CR_Telugu,
CR_Terminal_Punctuation,
- CR_Other_Math,
- CR_Hex_Digit,
- CR_ASCII_Hex_Digit,
- CR_Other_Alphabetic,
- CR_Ideographic,
- CR_Diacritic,
- CR_Extender,
- CR_Other_Lowercase,
- CR_Other_Uppercase,
- CR_Noncharacter_Code_Point,
- CR_Other_Grapheme_Extend,
- CR_IDS_Binary_Operator,
- CR_IDS_Trinary_Operator,
- CR_Radical,
+ CR_Thaana,
+ CR_Thai,
+ CR_Tibetan,
+ CR_Tifinagh,
+ CR_Tirhuta,
+ CR_Ugaritic,
CR_Unified_Ideograph,
- CR_Other_Default_Ignorable_Code_Point,
- CR_Deprecated,
- CR_Soft_Dotted,
- CR_Logical_Order_Exception,
- CR_Other_ID_Start,
- CR_Other_ID_Continue,
- CR_STerm,
- CR_Variation_Selector,
- CR_Pattern_White_Space,
- CR_Pattern_Syntax,
CR_Unknown,
+ CR_Uppercase,
+ CR_Vai,
+ CR_Variation_Selector,
+ CR_Warang_Citi,
+ CR_White_Space,
+ CR_XID_Continue,
+ CR_XID_Start,
+ CR_Yi,
+ CR_Z,
+ CR_Zanabazar_Square,
+ CR_Zl,
+ CR_Zp,
+ CR_Zs,
CR_In_Basic_Latin,
CR_In_Latin_1_Supplement,
CR_In_Latin_Extended_A,
@@ -22663,6 +24649,7 @@ const CodeRanges[] = {
CR_In_NKo,
CR_In_Samaritan,
CR_In_Mandaic,
+ CR_In_Syriac_Supplement,
CR_In_Arabic_Extended_A,
CR_In_Devanagari,
CR_In_Bengali,
@@ -22705,6 +24692,8 @@ const CodeRanges[] = {
CR_In_Batak,
CR_In_Lepcha,
CR_In_Ol_Chiki,
+ CR_In_Cyrillic_Extended_C,
+ CR_In_Georgian_Extended,
CR_In_Sundanese_Supplement,
CR_In_Vedic_Extensions,
CR_In_Phonetic_Extensions,
@@ -22821,6 +24810,7 @@ const CodeRanges[] = {
CR_In_Deseret,
CR_In_Shavian,
CR_In_Osmanya,
+ CR_In_Osage,
CR_In_Elbasan,
CR_In_Caucasian_Albanian,
CR_In_Linear_A,
@@ -22843,7 +24833,10 @@ const CodeRanges[] = {
CR_In_Psalter_Pahlavi,
CR_In_Old_Turkic,
CR_In_Old_Hungarian,
+ CR_In_Hanifi_Rohingya,
CR_In_Rumi_Numeral_Symbols,
+ CR_In_Old_Sogdian,
+ CR_In_Sogdian,
CR_In_Brahmi,
CR_In_Kaithi,
CR_In_Sora_Sompeng,
@@ -22855,13 +24848,23 @@ const CodeRanges[] = {
CR_In_Multani,
CR_In_Khudawadi,
CR_In_Grantha,
+ CR_In_Newa,
CR_In_Tirhuta,
CR_In_Siddham,
CR_In_Modi,
+ CR_In_Mongolian_Supplement,
CR_In_Takri,
CR_In_Ahom,
+ CR_In_Dogra,
CR_In_Warang_Citi,
+ CR_In_Zanabazar_Square,
+ CR_In_Soyombo,
CR_In_Pau_Cin_Hau,
+ CR_In_Bhaiksuki,
+ CR_In_Marchen,
+ CR_In_Masaram_Gondi,
+ CR_In_Gunjala_Gondi,
+ CR_In_Makasar,
CR_In_Cuneiform,
CR_In_Cuneiform_Numbers_and_Punctuation,
CR_In_Early_Dynastic_Cuneiform,
@@ -22871,18 +24874,28 @@ const CodeRanges[] = {
CR_In_Mro,
CR_In_Bassa_Vah,
CR_In_Pahawh_Hmong,
+ CR_In_Medefaidrin,
CR_In_Miao,
+ CR_In_Ideographic_Symbols_and_Punctuation,
+ CR_In_Tangut,
+ CR_In_Tangut_Components,
CR_In_Kana_Supplement,
+ CR_In_Kana_Extended_A,
+ CR_In_Nushu,
CR_In_Duployan,
CR_In_Shorthand_Format_Controls,
CR_In_Byzantine_Musical_Symbols,
CR_In_Musical_Symbols,
CR_In_Ancient_Greek_Musical_Notation,
+ CR_In_Mayan_Numerals,
CR_In_Tai_Xuan_Jing_Symbols,
CR_In_Counting_Rod_Numerals,
CR_In_Mathematical_Alphanumeric_Symbols,
CR_In_Sutton_SignWriting,
+ CR_In_Glagolitic_Supplement,
CR_In_Mende_Kikakui,
+ CR_In_Adlam,
+ CR_In_Indic_Siyaq_Numbers,
CR_In_Arabic_Mathematical_Alphabetic_Symbols,
CR_In_Mahjong_Tiles,
CR_In_Domino_Tiles,
@@ -22897,10 +24910,12 @@ const CodeRanges[] = {
CR_In_Geometric_Shapes_Extended,
CR_In_Supplemental_Arrows_C,
CR_In_Supplemental_Symbols_and_Pictographs,
+ CR_In_Chess_Symbols,
CR_In_CJK_Unified_Ideographs_Extension_B,
CR_In_CJK_Unified_Ideographs_Extension_C,
CR_In_CJK_Unified_Ideographs_Extension_D,
CR_In_CJK_Unified_Ideographs_Extension_E,
+ CR_In_CJK_Unified_Ideographs_Extension_F,
CR_In_CJK_Compatibility_Ideographs_Supplement,
CR_In_Tags,
CR_In_Variation_Selectors_Supplement,
@@ -22909,12 +24924,15 @@ const CodeRanges[] = {
CR_In_No_Block,
};
-#define TOTAL_KEYWORDS 711
+#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s)
+
+
+#define TOTAL_KEYWORDS 784
#define MIN_WORD_LENGTH 1
#define MAX_WORD_LENGTH 44
-#define MIN_HASH_VALUE 1
-#define MAX_HASH_VALUE 5162
-/* maximum key range = 5162, duplicates = 0 */
+#define MIN_HASH_VALUE 10
+#define MAX_HASH_VALUE 5516
+/* maximum key range = 5507, duplicates = 0 */
#ifndef GPERF_DOWNCASE
#define GPERF_DOWNCASE 1
@@ -22944,7 +24962,7 @@ static unsigned char gperf_downcase[256] =
#ifndef GPERF_CASE_STRNCMP
#define GPERF_CASE_STRNCMP 1
static int
-gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)
+gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n)
{
for (; n > 0;)
{
@@ -22969,38 +24987,38 @@ inline
#endif
#endif
static unsigned int
-hash (register const char *str, register unsigned int len)
+hash (register const char *str, register size_t len)
{
static const unsigned short asso_values[] =
{
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 11, 1103, 8, 582, 38,
- 53, 1066, 293, 2, 67, 1766, 129, 7, 0, 271,
- 719, 0, 210, 33, 71, 1001, 1376, 537, 22, 1162,
- 1, 5163, 5163, 5163, 5163, 5163, 5163, 11, 1103, 8,
- 582, 38, 53, 1066, 293, 2, 67, 1766, 129, 7,
- 0, 271, 719, 0, 210, 33, 71, 1001, 1376, 537,
- 22, 1162, 1, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163,
- 5163, 5163, 5163, 5163, 5163, 5163
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 0, 1387, 107, 399, 14,
+ 1024, 783, 831, 7, 1473, 25, 363, 89, 3, 17,
+ 1203, 711, 59, 149, 313, 590, 1257, 334, 172, 1559,
+ 22, 2, 1, 5517, 5517, 5517, 5517, 0, 1387, 107,
+ 399, 14, 1024, 783, 831, 7, 1473, 25, 363, 89,
+ 3, 17, 1203, 711, 59, 149, 313, 590, 1257, 334,
+ 172, 1559, 22, 2, 1, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517,
+ 5517, 5517, 5517, 5517, 5517, 5517, 5517, 5517
};
- register unsigned int hval = len;
+ register unsigned int hval = (unsigned int )len;
switch (hval)
{
@@ -23032,2267 +25050,4051 @@ hash (register const char *str, register unsigned int len)
hval += asso_values[(unsigned char)str[1]];
/*FALLTHROUGH*/
case 1:
- hval += asso_values[(unsigned char)str[0]];
+ hval += asso_values[(unsigned char)str[0]+2];
break;
}
return hval + asso_values[(unsigned char)str[len - 1]];
}
-const struct PropertyNameCtype *
-unicode_lookup_property_name (register const char *str, register unsigned int len)
+struct unicode_prop_name_pool_t
+ {
+ char unicode_prop_name_pool_str10[sizeof("lana")];
+ char unicode_prop_name_pool_str17[sizeof("lina")];
+ char unicode_prop_name_pool_str18[sizeof("yi")];
+ char unicode_prop_name_pool_str22[sizeof("cn")];
+ char unicode_prop_name_pool_str24[sizeof("z")];
+ char unicode_prop_name_pool_str25[sizeof("mn")];
+ char unicode_prop_name_pool_str27[sizeof("yiii")];
+ char unicode_prop_name_pool_str30[sizeof("ci")];
+ char unicode_prop_name_pool_str31[sizeof("mani")];
+ char unicode_prop_name_pool_str39[sizeof("lo")];
+ char unicode_prop_name_pool_str40[sizeof("lao")];
+ char unicode_prop_name_pool_str41[sizeof("laoo")];
+ char unicode_prop_name_pool_str45[sizeof("miao")];
+ char unicode_prop_name_pool_str46[sizeof("maka")];
+ char unicode_prop_name_pool_str47[sizeof("me")];
+ char unicode_prop_name_pool_str50[sizeof("co")];
+ char unicode_prop_name_pool_str51[sizeof("loe")];
+ char unicode_prop_name_pool_str68[sizeof("inkannada")];
+ char unicode_prop_name_pool_str70[sizeof("innko")];
+ char unicode_prop_name_pool_str71[sizeof("zzzz")];
+ char unicode_prop_name_pool_str73[sizeof("gran")];
+ char unicode_prop_name_pool_str75[sizeof("pi")];
+ char unicode_prop_name_pool_str79[sizeof("lineara")];
+ char unicode_prop_name_pool_str84[sizeof("cari")];
+ char unicode_prop_name_pool_str85[sizeof("carian")];
+ char unicode_prop_name_pool_str89[sizeof("pe")];
+ char unicode_prop_name_pool_str95[sizeof("po")];
+ char unicode_prop_name_pool_str96[sizeof("kana")];
+ char unicode_prop_name_pool_str99[sizeof("mendekikakui")];
+ char unicode_prop_name_pool_str101[sizeof("geor")];
+ char unicode_prop_name_pool_str102[sizeof("meeteimayek")];
+ char unicode_prop_name_pool_str105[sizeof("mark")];
+ char unicode_prop_name_pool_str107[sizeof("m")];
+ char unicode_prop_name_pool_str109[sizeof("grek")];
+ char unicode_prop_name_pool_str111[sizeof("mero")];
+ char unicode_prop_name_pool_str113[sizeof("mro")];
+ char unicode_prop_name_pool_str114[sizeof("mroo")];
+ char unicode_prop_name_pool_str120[sizeof("gonm")];
+ char unicode_prop_name_pool_str122[sizeof("c")];
+ char unicode_prop_name_pool_str132[sizeof("cakm")];
+ char unicode_prop_name_pool_str135[sizeof("greek")];
+ char unicode_prop_name_pool_str138[sizeof("inkharoshthi")];
+ char unicode_prop_name_pool_str141[sizeof("mandaic")];
+ char unicode_prop_name_pool_str143[sizeof("inosmanya")];
+ char unicode_prop_name_pool_str144[sizeof("inarmenian")];
+ char unicode_prop_name_pool_str145[sizeof("inmanichaean")];
+ char unicode_prop_name_pool_str149[sizeof("common")];
+ char unicode_prop_name_pool_str156[sizeof("inmro")];
+ char unicode_prop_name_pool_str157[sizeof("inmiao")];
+ char unicode_prop_name_pool_str160[sizeof("qaai")];
+ char unicode_prop_name_pool_str168[sizeof("inchakma")];
+ char unicode_prop_name_pool_str170[sizeof("cans")];
+ char unicode_prop_name_pool_str181[sizeof("connectorpunctuation")];
+ char unicode_prop_name_pool_str183[sizeof("lm")];
+ char unicode_prop_name_pool_str187[sizeof("marc")];
+ char unicode_prop_name_pool_str188[sizeof("inmyanmar")];
+ char unicode_prop_name_pool_str189[sizeof("vai")];
+ char unicode_prop_name_pool_str190[sizeof("vaii")];
+ char unicode_prop_name_pool_str199[sizeof("inideographicsymbolsandpunctuation")];
+ char unicode_prop_name_pool_str201[sizeof("merc")];
+ char unicode_prop_name_pool_str203[sizeof("inavestan")];
+ char unicode_prop_name_pool_str204[sizeof("incuneiformnumbersandpunctuation")];
+ char unicode_prop_name_pool_str210[sizeof("inmakasar")];
+ char unicode_prop_name_pool_str211[sizeof("inrunic")];
+ char unicode_prop_name_pool_str212[sizeof("incarian")];
+ char unicode_prop_name_pool_str217[sizeof("prependedconcatenationmark")];
+ char unicode_prop_name_pool_str219[sizeof("lc")];
+ char unicode_prop_name_pool_str220[sizeof("inipaextensions")];
+ char unicode_prop_name_pool_str222[sizeof("inkhmer")];
+ char unicode_prop_name_pool_str225[sizeof("perm")];
+ char unicode_prop_name_pool_str227[sizeof("combiningmark")];
+ char unicode_prop_name_pool_str229[sizeof("inahom")];
+ char unicode_prop_name_pool_str230[sizeof("cc")];
+ char unicode_prop_name_pool_str232[sizeof("incherokee")];
+ char unicode_prop_name_pool_str233[sizeof("mc")];
+ char unicode_prop_name_pool_str245[sizeof("insharada")];
+ char unicode_prop_name_pool_str251[sizeof("masaramgondi")];
+ char unicode_prop_name_pool_str252[sizeof("incuneiform")];
+ char unicode_prop_name_pool_str257[sizeof("makasar")];
+ char unicode_prop_name_pool_str260[sizeof("qaac")];
+ char unicode_prop_name_pool_str261[sizeof("inarrows")];
+ char unicode_prop_name_pool_str262[sizeof("armn")];
+ char unicode_prop_name_pool_str265[sizeof("lineseparator")];
+ char unicode_prop_name_pool_str266[sizeof("armi")];
+ char unicode_prop_name_pool_str275[sizeof("pc")];
+ char unicode_prop_name_pool_str276[sizeof("armenian")];
+ char unicode_prop_name_pool_str280[sizeof("insamaritan")];
+ char unicode_prop_name_pool_str290[sizeof("inmasaramgondi")];
+ char unicode_prop_name_pool_str292[sizeof("inzanabazarsquare")];
+ char unicode_prop_name_pool_str293[sizeof("qmark")];
+ char unicode_prop_name_pool_str295[sizeof("inmarchen")];
+ char unicode_prop_name_pool_str301[sizeof("zs")];
+ char unicode_prop_name_pool_str314[sizeof("cs")];
+ char unicode_prop_name_pool_str318[sizeof("incyrillic")];
+ char unicode_prop_name_pool_str319[sizeof("incham")];
+ char unicode_prop_name_pool_str323[sizeof("latn")];
+ char unicode_prop_name_pool_str326[sizeof("inscriptionalparthian")];
+ char unicode_prop_name_pool_str327[sizeof("latin")];
+ char unicode_prop_name_pool_str329[sizeof("ri")];
+ char unicode_prop_name_pool_str336[sizeof("inkhmersymbols")];
+ char unicode_prop_name_pool_str347[sizeof("pcm")];
+ char unicode_prop_name_pool_str349[sizeof("inthaana")];
+ char unicode_prop_name_pool_str355[sizeof("mtei")];
+ char unicode_prop_name_pool_str358[sizeof("insyriac")];
+ char unicode_prop_name_pool_str359[sizeof("ps")];
+ char unicode_prop_name_pool_str361[sizeof("inthai")];
+ char unicode_prop_name_pool_str367[sizeof("l")];
+ char unicode_prop_name_pool_str371[sizeof("innewa")];
+ char unicode_prop_name_pool_str376[sizeof("inkatakana")];
+ char unicode_prop_name_pool_str382[sizeof("ascii")];
+ char unicode_prop_name_pool_str383[sizeof("initialpunctuation")];
+ char unicode_prop_name_pool_str388[sizeof("inkaithi")];
+ char unicode_prop_name_pool_str393[sizeof("arabic")];
+ char unicode_prop_name_pool_str405[sizeof("inideographicdescriptioncharacters")];
+ char unicode_prop_name_pool_str417[sizeof("inlineara")];
+ char unicode_prop_name_pool_str423[sizeof("mand")];
+ char unicode_prop_name_pool_str429[sizeof("mongolian")];
+ char unicode_prop_name_pool_str430[sizeof("inlao")];
+ char unicode_prop_name_pool_str435[sizeof("katakana")];
+ char unicode_prop_name_pool_str437[sizeof("mend")];
+ char unicode_prop_name_pool_str439[sizeof("intakri")];
+ char unicode_prop_name_pool_str441[sizeof("inruminumeralsymbols")];
+ char unicode_prop_name_pool_str442[sizeof("prti")];
+ char unicode_prop_name_pool_str444[sizeof("modi")];
+ char unicode_prop_name_pool_str447[sizeof("inwarangciti")];
+ char unicode_prop_name_pool_str453[sizeof("incjkcompatibilityforms")];
+ char unicode_prop_name_pool_str457[sizeof("inspecials")];
+ char unicode_prop_name_pool_str458[sizeof("incjkcompatibilityideographs")];
+ char unicode_prop_name_pool_str459[sizeof("ideo")];
+ char unicode_prop_name_pool_str462[sizeof("privateuse")];
+ char unicode_prop_name_pool_str463[sizeof("kali")];
+ char unicode_prop_name_pool_str465[sizeof("inmyanmarextendeda")];
+ char unicode_prop_name_pool_str468[sizeof("letter")];
+ char unicode_prop_name_pool_str469[sizeof("brai")];
+ char unicode_prop_name_pool_str470[sizeof("inkanaextendeda")];
+ char unicode_prop_name_pool_str472[sizeof("vs")];
+ char unicode_prop_name_pool_str473[sizeof("xidcontinue")];
+ char unicode_prop_name_pool_str477[sizeof("lower")];
+ char unicode_prop_name_pool_str478[sizeof("inchesssymbols")];
+ char unicode_prop_name_pool_str480[sizeof("control")];
+ char unicode_prop_name_pool_str487[sizeof("inadlam")];
+ char unicode_prop_name_pool_str488[sizeof("grlink")];
+ char unicode_prop_name_pool_str495[sizeof("knda")];
+ char unicode_prop_name_pool_str496[sizeof("inmeeteimayek")];
+ char unicode_prop_name_pool_str498[sizeof("kannada")];
+ char unicode_prop_name_pool_str511[sizeof("inmiscellaneousmathematicalsymbolsa")];
+ char unicode_prop_name_pool_str515[sizeof("palm")];
+ char unicode_prop_name_pool_str516[sizeof("inlycian")];
+ char unicode_prop_name_pool_str517[sizeof("intransportandmapsymbols")];
+ char unicode_prop_name_pool_str526[sizeof("inoldnortharabian")];
+ char unicode_prop_name_pool_str532[sizeof("inemoticons")];
+ char unicode_prop_name_pool_str533[sizeof("letternumber")];
+ char unicode_prop_name_pool_str536[sizeof("inmodi")];
+ char unicode_prop_name_pool_str539[sizeof("xidc")];
+ char unicode_prop_name_pool_str543[sizeof("lowercase")];
+ char unicode_prop_name_pool_str545[sizeof("inancientsymbols")];
+ char unicode_prop_name_pool_str548[sizeof("cwcm")];
+ char unicode_prop_name_pool_str553[sizeof("inmedefaidrin")];
+ char unicode_prop_name_pool_str556[sizeof("psalterpahlavi")];
+ char unicode_prop_name_pool_str564[sizeof("gothic")];
+ char unicode_prop_name_pool_str565[sizeof("inmendekikakui")];
+ char unicode_prop_name_pool_str567[sizeof("brahmi")];
+ char unicode_prop_name_pool_str569[sizeof("inolditalic")];
+ char unicode_prop_name_pool_str580[sizeof("inmalayalam")];
+ char unicode_prop_name_pool_str581[sizeof("xids")];
+ char unicode_prop_name_pool_str582[sizeof("incommonindicnumberforms")];
+ char unicode_prop_name_pool_str588[sizeof("meroiticcursive")];
+ char unicode_prop_name_pool_str589[sizeof("inlinearbideograms")];
+ char unicode_prop_name_pool_str597[sizeof("patternwhitespace")];
+ char unicode_prop_name_pool_str604[sizeof("insundanese")];
+ char unicode_prop_name_pool_str606[sizeof("joinc")];
+ char unicode_prop_name_pool_str611[sizeof("inoldsogdian")];
+ char unicode_prop_name_pool_str619[sizeof("incjkstrokes")];
+ char unicode_prop_name_pool_str626[sizeof("so")];
+ char unicode_prop_name_pool_str630[sizeof("patternsyntax")];
+ char unicode_prop_name_pool_str631[sizeof("lt")];
+ char unicode_prop_name_pool_str632[sizeof("incjkcompatibilityideographssupplement")];
+ char unicode_prop_name_pool_str635[sizeof("inmandaic")];
+ char unicode_prop_name_pool_str636[sizeof("insylotinagri")];
+ char unicode_prop_name_pool_str641[sizeof("idc")];
+ char unicode_prop_name_pool_str642[sizeof("sk")];
+ char unicode_prop_name_pool_str656[sizeof("alnum")];
+ char unicode_prop_name_pool_str670[sizeof("sora")];
+ char unicode_prop_name_pool_str671[sizeof("bamum")];
+ char unicode_prop_name_pool_str672[sizeof("inoldsoutharabian")];
+ char unicode_prop_name_pool_str675[sizeof("patws")];
+ char unicode_prop_name_pool_str676[sizeof("inmusicalsymbols")];
+ char unicode_prop_name_pool_str690[sizeof("idsbinaryoperator")];
+ char unicode_prop_name_pool_str699[sizeof("indominotiles")];
+ char unicode_prop_name_pool_str701[sizeof("bass")];
+ char unicode_prop_name_pool_str703[sizeof("innewtailue")];
+ char unicode_prop_name_pool_str705[sizeof("ital")];
+ char unicode_prop_name_pool_str707[sizeof("inmiscellaneoussymbols")];
+ char unicode_prop_name_pool_str710[sizeof("inopticalcharacterrecognition")];
+ char unicode_prop_name_pool_str711[sizeof("grext")];
+ char unicode_prop_name_pool_str712[sizeof("inkanasupplement")];
+ char unicode_prop_name_pool_str716[sizeof("inmiscellaneoussymbolsandarrows")];
+ char unicode_prop_name_pool_str721[sizeof("inmiscellaneoussymbolsandpictographs")];
+ char unicode_prop_name_pool_str723[sizeof("unknown")];
+ char unicode_prop_name_pool_str724[sizeof("inmodifiertoneletters")];
+ char unicode_prop_name_pool_str725[sizeof("ids")];
+ char unicode_prop_name_pool_str729[sizeof("zl")];
+ char unicode_prop_name_pool_str730[sizeof("inlatinextendeda")];
+ char unicode_prop_name_pool_str731[sizeof("ll")];
+ char unicode_prop_name_pool_str732[sizeof("intaile")];
+ char unicode_prop_name_pool_str738[sizeof("incontrolpictures")];
+ char unicode_prop_name_pool_str740[sizeof("s")];
+ char unicode_prop_name_pool_str741[sizeof("batk")];
+ char unicode_prop_name_pool_str742[sizeof("samr")];
+ char unicode_prop_name_pool_str753[sizeof("lisu")];
+ char unicode_prop_name_pool_str756[sizeof("print")];
+ char unicode_prop_name_pool_str757[sizeof("samaritan")];
+ char unicode_prop_name_pool_str758[sizeof("inlatinextendede")];
+ char unicode_prop_name_pool_str759[sizeof("intaitham")];
+ char unicode_prop_name_pool_str760[sizeof("pauc")];
+ char unicode_prop_name_pool_str767[sizeof("batak")];
+ char unicode_prop_name_pool_str770[sizeof("sm")];
+ char unicode_prop_name_pool_str773[sizeof("bali")];
+ char unicode_prop_name_pool_str778[sizeof("inancientgreekmusicalnotation")];
+ char unicode_prop_name_pool_str779[sizeof("uideo")];
+ char unicode_prop_name_pool_str781[sizeof("intaixuanjingsymbols")];
+ char unicode_prop_name_pool_str782[sizeof("oriya")];
+ char unicode_prop_name_pool_str791[sizeof("incyrillicextendeda")];
+ char unicode_prop_name_pool_str793[sizeof("bengali")];
+ char unicode_prop_name_pool_str794[sizeof("inugaritic")];
+ char unicode_prop_name_pool_str801[sizeof("balinese")];
+ char unicode_prop_name_pool_str806[sizeof("sc")];
+ char unicode_prop_name_pool_str807[sizeof("intamil")];
+ char unicode_prop_name_pool_str808[sizeof("inlydian")];
+ char unicode_prop_name_pool_str809[sizeof("inmultani")];
+ char unicode_prop_name_pool_str814[sizeof("gong")];
+ char unicode_prop_name_pool_str817[sizeof("blank")];
+ char unicode_prop_name_pool_str823[sizeof("ingrantha")];
+ char unicode_prop_name_pool_str824[sizeof("mong")];
+ char unicode_prop_name_pool_str833[sizeof("inearlydynasticcuneiform")];
+ char unicode_prop_name_pool_str838[sizeof("insaurashtra")];
+ char unicode_prop_name_pool_str839[sizeof("georgian")];
+ char unicode_prop_name_pool_str846[sizeof("zinh")];
+ char unicode_prop_name_pool_str849[sizeof("inosage")];
+ char unicode_prop_name_pool_str854[sizeof("ingeneralpunctuation")];
+ char unicode_prop_name_pool_str857[sizeof("incaucasianalbanian")];
+ char unicode_prop_name_pool_str859[sizeof("pd")];
+ char unicode_prop_name_pool_str866[sizeof("canadianaboriginal")];
+ char unicode_prop_name_pool_str867[sizeof("glagolitic")];
+ char unicode_prop_name_pool_str870[sizeof("inspacingmodifierletters")];
+ char unicode_prop_name_pool_str871[sizeof("idcontinue")];
+ char unicode_prop_name_pool_str875[sizeof("inoldturkic")];
+ char unicode_prop_name_pool_str884[sizeof("plrd")];
+ char unicode_prop_name_pool_str885[sizeof("joincontrol")];
+ char unicode_prop_name_pool_str890[sizeof("idst")];
+ char unicode_prop_name_pool_str892[sizeof("inhanifirohingya")];
+ char unicode_prop_name_pool_str893[sizeof("osage")];
+ char unicode_prop_name_pool_str898[sizeof("incyrillicextendedc")];
+ char unicode_prop_name_pool_str900[sizeof("ingeorgian")];
+ char unicode_prop_name_pool_str902[sizeof("unassigned")];
+ char unicode_prop_name_pool_str907[sizeof("lowercaseletter")];
+ char unicode_prop_name_pool_str908[sizeof("emoji")];
+ char unicode_prop_name_pool_str912[sizeof("indeseret")];
+ char unicode_prop_name_pool_str916[sizeof("inancientgreeknumbers")];
+ char unicode_prop_name_pool_str917[sizeof("inmongolian")];
+ char unicode_prop_name_pool_str922[sizeof("cher")];
+ char unicode_prop_name_pool_str923[sizeof("cherokee")];
+ char unicode_prop_name_pool_str928[sizeof("inhiragana")];
+ char unicode_prop_name_pool_str930[sizeof("phoenician")];
+ char unicode_prop_name_pool_str931[sizeof("marchen")];
+ char unicode_prop_name_pool_str937[sizeof("xsux")];
+ char unicode_prop_name_pool_str938[sizeof("cham")];
+ char unicode_prop_name_pool_str940[sizeof("chakma")];
+ char unicode_prop_name_pool_str943[sizeof("inmeeteimayekextensions")];
+ char unicode_prop_name_pool_str944[sizeof("inlatinextendedc")];
+ char unicode_prop_name_pool_str947[sizeof("kaithi")];
+ char unicode_prop_name_pool_str951[sizeof("graphemebase")];
+ char unicode_prop_name_pool_str952[sizeof("idstart")];
+ char unicode_prop_name_pool_str953[sizeof("osma")];
+ char unicode_prop_name_pool_str962[sizeof("adlm")];
+ char unicode_prop_name_pool_str965[sizeof("inmahajani")];
+ char unicode_prop_name_pool_str966[sizeof("cased")];
+ char unicode_prop_name_pool_str969[sizeof("runr")];
+ char unicode_prop_name_pool_str970[sizeof("sinhala")];
+ char unicode_prop_name_pool_str971[sizeof("manichaean")];
+ char unicode_prop_name_pool_str972[sizeof("inogham")];
+ char unicode_prop_name_pool_str973[sizeof("graphemelink")];
+ char unicode_prop_name_pool_str976[sizeof("ingurmukhi")];
+ char unicode_prop_name_pool_str977[sizeof("cwt")];
+ char unicode_prop_name_pool_str982[sizeof("khojki")];
+ char unicode_prop_name_pool_str983[sizeof("khar")];
+ char unicode_prop_name_pool_str987[sizeof("multani")];
+ char unicode_prop_name_pool_str989[sizeof("gunjalagondi")];
+ char unicode_prop_name_pool_str995[sizeof("casedletter")];
+ char unicode_prop_name_pool_str997[sizeof("inethiopic")];
+ char unicode_prop_name_pool_str999[sizeof("inolchiki")];
+ char unicode_prop_name_pool_str1000[sizeof("variationselector")];
+ char unicode_prop_name_pool_str1003[sizeof("sind")];
+ char unicode_prop_name_pool_str1004[sizeof("incountingrodnumerals")];
+ char unicode_prop_name_pool_str1007[sizeof("logicalorderexception")];
+ char unicode_prop_name_pool_str1020[sizeof("insinhala")];
+ char unicode_prop_name_pool_str1024[sizeof("bidic")];
+ char unicode_prop_name_pool_str1034[sizeof("dia")];
+ char unicode_prop_name_pool_str1035[sizeof("insorasompeng")];
+ char unicode_prop_name_pool_str1036[sizeof("anatolianhieroglyphs")];
+ char unicode_prop_name_pool_str1038[sizeof("inlowsurrogates")];
+ char unicode_prop_name_pool_str1040[sizeof("di")];
+ char unicode_prop_name_pool_str1048[sizeof("ahom")];
+ char unicode_prop_name_pool_str1050[sizeof("inenclosedalphanumerics")];
+ char unicode_prop_name_pool_str1052[sizeof("adlam")];
+ char unicode_prop_name_pool_str1060[sizeof("inkhudawadi")];
+ char unicode_prop_name_pool_str1061[sizeof("cntrl")];
+ char unicode_prop_name_pool_str1062[sizeof("xidstart")];
+ char unicode_prop_name_pool_str1067[sizeof("xdigit")];
+ char unicode_prop_name_pool_str1069[sizeof("phnx")];
+ char unicode_prop_name_pool_str1071[sizeof("emojimodifier")];
+ char unicode_prop_name_pool_str1072[sizeof("khmr")];
+ char unicode_prop_name_pool_str1073[sizeof("insiddham")];
+ char unicode_prop_name_pool_str1077[sizeof("cwl")];
+ char unicode_prop_name_pool_str1082[sizeof("bamu")];
+ char unicode_prop_name_pool_str1086[sizeof("ingreekandcoptic")];
+ char unicode_prop_name_pool_str1087[sizeof("inmiscellaneoustechnical")];
+ char unicode_prop_name_pool_str1100[sizeof("sterm")];
+ char unicode_prop_name_pool_str1101[sizeof("inscriptionalpahlavi")];
+ char unicode_prop_name_pool_str1102[sizeof("inlatinextendedadditional")];
+ char unicode_prop_name_pool_str1103[sizeof("kharoshthi")];
+ char unicode_prop_name_pool_str1125[sizeof("runic")];
+ char unicode_prop_name_pool_str1127[sizeof("odi")];
+ char unicode_prop_name_pool_str1128[sizeof("ahex")];
+ char unicode_prop_name_pool_str1132[sizeof("khmer")];
+ char unicode_prop_name_pool_str1138[sizeof("incyrillicsupplement")];
+ char unicode_prop_name_pool_str1145[sizeof("incherokeesupplement")];
+ char unicode_prop_name_pool_str1153[sizeof("inmeroitichieroglyphs")];
+ char unicode_prop_name_pool_str1156[sizeof("enclosingmark")];
+ char unicode_prop_name_pool_str1157[sizeof("glag")];
+ char unicode_prop_name_pool_str1160[sizeof("inkangxiradicals")];
+ char unicode_prop_name_pool_str1165[sizeof("math")];
+ char unicode_prop_name_pool_str1166[sizeof("quotationmark")];
+ char unicode_prop_name_pool_str1172[sizeof("goth")];
+ char unicode_prop_name_pool_str1179[sizeof("emojimodifierbase")];
+ char unicode_prop_name_pool_str1180[sizeof("ugar")];
+ char unicode_prop_name_pool_str1185[sizeof("lu")];
+ char unicode_prop_name_pool_str1189[sizeof("radical")];
+ char unicode_prop_name_pool_str1198[sizeof("incjkunifiedideographsextensiona")];
+ char unicode_prop_name_pool_str1203[sizeof("beng")];
+ char unicode_prop_name_pool_str1205[sizeof("braille")];
+ char unicode_prop_name_pool_str1207[sizeof("n")];
+ char unicode_prop_name_pool_str1209[sizeof("sundanese")];
+ char unicode_prop_name_pool_str1210[sizeof("olck")];
+ char unicode_prop_name_pool_str1212[sizeof("incjkunifiedideographsextensione")];
+ char unicode_prop_name_pool_str1213[sizeof("diacritic")];
+ char unicode_prop_name_pool_str1217[sizeof("grantha")];
+ char unicode_prop_name_pool_str1223[sizeof("inenclosedalphanumericsupplement")];
+ char unicode_prop_name_pool_str1227[sizeof("olchiki")];
+ char unicode_prop_name_pool_str1228[sizeof("oidc")];
+ char unicode_prop_name_pool_str1229[sizeof("olower")];
+ char unicode_prop_name_pool_str1230[sizeof("regionalindicator")];
+ char unicode_prop_name_pool_str1239[sizeof("no")];
+ char unicode_prop_name_pool_str1240[sizeof("intirhuta")];
+ char unicode_prop_name_pool_str1242[sizeof("inhatran")];
+ char unicode_prop_name_pool_str1243[sizeof("saur")];
+ char unicode_prop_name_pool_str1244[sizeof("kthi")];
+ char unicode_prop_name_pool_str1246[sizeof("ingeometricshapes")];
+ char unicode_prop_name_pool_str1250[sizeof("guru")];
+ char unicode_prop_name_pool_str1256[sizeof("ingreekextended")];
+ char unicode_prop_name_pool_str1258[sizeof("paucinhau")];
+ char unicode_prop_name_pool_str1260[sizeof("xpeo")];
+ char unicode_prop_name_pool_str1263[sizeof("p")];
+ char unicode_prop_name_pool_str1264[sizeof("phli")];
+ char unicode_prop_name_pool_str1265[sizeof("nko")];
+ char unicode_prop_name_pool_str1266[sizeof("nkoo")];
+ char unicode_prop_name_pool_str1270[sizeof("oids")];
+ char unicode_prop_name_pool_str1276[sizeof("indogra")];
+ char unicode_prop_name_pool_str1280[sizeof("inphoenician")];
+ char unicode_prop_name_pool_str1283[sizeof("punct")];
+ char unicode_prop_name_pool_str1284[sizeof("limbu")];
+ char unicode_prop_name_pool_str1286[sizeof("gurmukhi")];
+ char unicode_prop_name_pool_str1287[sizeof("mult")];
+ char unicode_prop_name_pool_str1293[sizeof("brah")];
+ char unicode_prop_name_pool_str1297[sizeof("taile")];
+ char unicode_prop_name_pool_str1299[sizeof("inoldhungarian")];
+ char unicode_prop_name_pool_str1301[sizeof("takri")];
+ char unicode_prop_name_pool_str1303[sizeof("bidicontrol")];
+ char unicode_prop_name_pool_str1304[sizeof("invai")];
+ char unicode_prop_name_pool_str1305[sizeof("incjkunifiedideographsextensionc")];
+ char unicode_prop_name_pool_str1314[sizeof("inenclosedideographicsupplement")];
+ char unicode_prop_name_pool_str1320[sizeof("decimalnumber")];
+ char unicode_prop_name_pool_str1331[sizeof("lepc")];
+ char unicode_prop_name_pool_str1333[sizeof("inherited")];
+ char unicode_prop_name_pool_str1337[sizeof("incjkunifiedideographs")];
+ char unicode_prop_name_pool_str1338[sizeof("graphemeextend")];
+ char unicode_prop_name_pool_str1339[sizeof("saurashtra")];
+ char unicode_prop_name_pool_str1343[sizeof("caseignorable")];
+ char unicode_prop_name_pool_str1344[sizeof("emojicomponent")];
+ char unicode_prop_name_pool_str1345[sizeof("takr")];
+ char unicode_prop_name_pool_str1360[sizeof("inanatolianhieroglyphs")];
+ char unicode_prop_name_pool_str1363[sizeof("inornamentaldingbats")];
+ char unicode_prop_name_pool_str1366[sizeof("inphaistosdisc")];
+ char unicode_prop_name_pool_str1371[sizeof("insogdian")];
+ char unicode_prop_name_pool_str1372[sizeof("indingbats")];
+ char unicode_prop_name_pool_str1390[sizeof("sd")];
+ char unicode_prop_name_pool_str1395[sizeof("zanb")];
+ char unicode_prop_name_pool_str1397[sizeof("insinhalaarchaicnumbers")];
+ char unicode_prop_name_pool_str1398[sizeof("ideographic")];
+ char unicode_prop_name_pool_str1399[sizeof("sidd")];
+ char unicode_prop_name_pool_str1404[sizeof("linb")];
+ char unicode_prop_name_pool_str1407[sizeof("sogdian")];
+ char unicode_prop_name_pool_str1408[sizeof("bhks")];
+ char unicode_prop_name_pool_str1411[sizeof("sogo")];
+ char unicode_prop_name_pool_str1420[sizeof("bhaiksuki")];
+ char unicode_prop_name_pool_str1423[sizeof("term")];
+ char unicode_prop_name_pool_str1425[sizeof("insundanesesupplement")];
+ char unicode_prop_name_pool_str1428[sizeof("intags")];
+ char unicode_prop_name_pool_str1432[sizeof("innabataean")];
+ char unicode_prop_name_pool_str1435[sizeof("sinh")];
+ char unicode_prop_name_pool_str1438[sizeof("shavian")];
+ char unicode_prop_name_pool_str1440[sizeof("inbhaiksuki")];
+ char unicode_prop_name_pool_str1441[sizeof("inelbasan")];
+ char unicode_prop_name_pool_str1442[sizeof("inimperialaramaic")];
+ char unicode_prop_name_pool_str1446[sizeof("inshavian")];
+ char unicode_prop_name_pool_str1448[sizeof("intangut")];
+ char unicode_prop_name_pool_str1451[sizeof("inshorthandformatcontrols")];
+ char unicode_prop_name_pool_str1454[sizeof("inkanbun")];
+ char unicode_prop_name_pool_str1455[sizeof("sentenceterminal")];
+ char unicode_prop_name_pool_str1458[sizeof("medf")];
+ char unicode_prop_name_pool_str1461[sizeof("coptic")];
+ char unicode_prop_name_pool_str1466[sizeof("linearb")];
+ char unicode_prop_name_pool_str1468[sizeof("medefaidrin")];
+ char unicode_prop_name_pool_str1470[sizeof("inethiopicextendeda")];
+ char unicode_prop_name_pool_str1478[sizeof("inhanunoo")];
+ char unicode_prop_name_pool_str1482[sizeof("han")];
+ char unicode_prop_name_pool_str1483[sizeof("cwcf")];
+ char unicode_prop_name_pool_str1487[sizeof("hani")];
+ char unicode_prop_name_pool_str1490[sizeof("limb")];
+ char unicode_prop_name_pool_str1497[sizeof("hano")];
+ char unicode_prop_name_pool_str1504[sizeof("ingeometricshapesextended")];
+ char unicode_prop_name_pool_str1520[sizeof("hanunoo")];
+ char unicode_prop_name_pool_str1528[sizeof("inlatinextendedd")];
+ char unicode_prop_name_pool_str1530[sizeof("inarabic")];
+ char unicode_prop_name_pool_str1531[sizeof("cwu")];
+ char unicode_prop_name_pool_str1534[sizeof("asciihexdigit")];
+ char unicode_prop_name_pool_str1537[sizeof("ininscriptionalparthian")];
+ char unicode_prop_name_pool_str1539[sizeof("format")];
+ char unicode_prop_name_pool_str1540[sizeof("ininscriptionalpahlavi")];
+ char unicode_prop_name_pool_str1543[sizeof("hira")];
+ char unicode_prop_name_pool_str1549[sizeof("dsrt")];
+ char unicode_prop_name_pool_str1551[sizeof("copt")];
+ char unicode_prop_name_pool_str1552[sizeof("ugaritic")];
+ char unicode_prop_name_pool_str1555[sizeof("newa")];
+ char unicode_prop_name_pool_str1557[sizeof("arab")];
+ char unicode_prop_name_pool_str1558[sizeof("inkhojki")];
+ char unicode_prop_name_pool_str1559[sizeof("oldpersian")];
+ char unicode_prop_name_pool_str1569[sizeof("punctuation")];
+ char unicode_prop_name_pool_str1580[sizeof("deseret")];
+ char unicode_prop_name_pool_str1581[sizeof("newtailue")];
+ char unicode_prop_name_pool_str1582[sizeof("newline")];
+ char unicode_prop_name_pool_str1584[sizeof("ext")];
+ char unicode_prop_name_pool_str1586[sizeof("sund")];
+ char unicode_prop_name_pool_str1587[sizeof("ogam")];
+ char unicode_prop_name_pool_str1589[sizeof("inbasiclatin")];
+ char unicode_prop_name_pool_str1590[sizeof("inarabicpresentationformsa")];
+ char unicode_prop_name_pool_str1593[sizeof("cprt")];
+ char unicode_prop_name_pool_str1594[sizeof("imperialaramaic")];
+ char unicode_prop_name_pool_str1597[sizeof("incjkunifiedideographsextensiond")];
+ char unicode_prop_name_pool_str1598[sizeof("assigned")];
+ char unicode_prop_name_pool_str1605[sizeof("taiviet")];
+ char unicode_prop_name_pool_str1608[sizeof("innushu")];
+ char unicode_prop_name_pool_str1618[sizeof("inoriya")];
+ char unicode_prop_name_pool_str1622[sizeof("wara")];
+ char unicode_prop_name_pool_str1624[sizeof("java")];
+ char unicode_prop_name_pool_str1626[sizeof("sorasompeng")];
+ char unicode_prop_name_pool_str1628[sizeof("inkayahli")];
+ char unicode_prop_name_pool_str1630[sizeof("orkh")];
+ char unicode_prop_name_pool_str1633[sizeof("closepunctuation")];
+ char unicode_prop_name_pool_str1636[sizeof("grbase")];
+ char unicode_prop_name_pool_str1638[sizeof("tale")];
+ char unicode_prop_name_pool_str1640[sizeof("bopo")];
+ char unicode_prop_name_pool_str1659[sizeof("javanese")];
+ char unicode_prop_name_pool_str1661[sizeof("osge")];
+ char unicode_prop_name_pool_str1662[sizeof("oldpermic")];
+ char unicode_prop_name_pool_str1665[sizeof("inoldpersian")];
+ char unicode_prop_name_pool_str1677[sizeof("phag")];
+ char unicode_prop_name_pool_str1678[sizeof("alpha")];
+ char unicode_prop_name_pool_str1680[sizeof("lyci")];
+ char unicode_prop_name_pool_str1681[sizeof("lycian")];
+ char unicode_prop_name_pool_str1687[sizeof("inkatakanaphoneticextensions")];
+ char unicode_prop_name_pool_str1690[sizeof("incjksymbolsandpunctuation")];
+ char unicode_prop_name_pool_str1691[sizeof("inhanguljamo")];
+ char unicode_prop_name_pool_str1697[sizeof("inhanguljamoextendeda")];
+ char unicode_prop_name_pool_str1701[sizeof("avestan")];
+ char unicode_prop_name_pool_str1708[sizeof("inpalmyrene")];
+ char unicode_prop_name_pool_str1709[sizeof("inlepcha")];
+ char unicode_prop_name_pool_str1710[sizeof("indevanagari")];
+ char unicode_prop_name_pool_str1713[sizeof("taml")];
+ char unicode_prop_name_pool_str1714[sizeof("sgnw")];
+ char unicode_prop_name_pool_str1717[sizeof("inblockelements")];
+ char unicode_prop_name_pool_str1726[sizeof("inlisu")];
+ char unicode_prop_name_pool_str1728[sizeof("mymr")];
+ char unicode_prop_name_pool_str1731[sizeof("myanmar")];
+ char unicode_prop_name_pool_str1733[sizeof("graph")];
+ char unicode_prop_name_pool_str1736[sizeof("cuneiform")];
+ char unicode_prop_name_pool_str1737[sizeof("extender")];
+ char unicode_prop_name_pool_str1741[sizeof("inphoneticextensions")];
+ char unicode_prop_name_pool_str1749[sizeof("inmongoliansupplement")];
+ char unicode_prop_name_pool_str1750[sizeof("bopomofo")];
+ char unicode_prop_name_pool_str1754[sizeof("intibetan")];
+ char unicode_prop_name_pool_str1758[sizeof("innumberforms")];
+ char unicode_prop_name_pool_str1759[sizeof("shaw")];
+ char unicode_prop_name_pool_str1760[sizeof("inbatak")];
+ char unicode_prop_name_pool_str1765[sizeof("inoldpermic")];
+ char unicode_prop_name_pool_str1766[sizeof("incoptic")];
+ char unicode_prop_name_pool_str1776[sizeof("invariationselectors")];
+ char unicode_prop_name_pool_str1779[sizeof("insoyombo")];
+ char unicode_prop_name_pool_str1782[sizeof("terminalpunctuation")];
+ char unicode_prop_name_pool_str1783[sizeof("bugi")];
+ char unicode_prop_name_pool_str1791[sizeof("insyriacsupplement")];
+ char unicode_prop_name_pool_str1793[sizeof("sogd")];
+ char unicode_prop_name_pool_str1798[sizeof("hatran")];
+ char unicode_prop_name_pool_str1807[sizeof("inbyzantinemusicalsymbols")];
+ char unicode_prop_name_pool_str1809[sizeof("inbalinese")];
+ char unicode_prop_name_pool_str1811[sizeof("buginese")];
+ char unicode_prop_name_pool_str1815[sizeof("innoblock")];
+ char unicode_prop_name_pool_str1817[sizeof("inethiopicsupplement")];
+ char unicode_prop_name_pool_str1820[sizeof("inglagolitic")];
+ char unicode_prop_name_pool_str1824[sizeof("ingeorgiansupplement")];
+ char unicode_prop_name_pool_str1826[sizeof("space")];
+ char unicode_prop_name_pool_str1827[sizeof("sharada")];
+ char unicode_prop_name_pool_str1829[sizeof("dogra")];
+ char unicode_prop_name_pool_str1830[sizeof("avst")];
+ char unicode_prop_name_pool_str1834[sizeof("hex")];
+ char unicode_prop_name_pool_str1837[sizeof("inunifiedcanadianaboriginalsyllabics")];
+ char unicode_prop_name_pool_str1838[sizeof("inverticalforms")];
+ char unicode_prop_name_pool_str1839[sizeof("spacingmark")];
+ char unicode_prop_name_pool_str1845[sizeof("inarabicextendeda")];
+ char unicode_prop_name_pool_str1849[sizeof("hatr")];
+ char unicode_prop_name_pool_str1850[sizeof("modifierletter")];
+ char unicode_prop_name_pool_str1852[sizeof("inmyanmarextendedb")];
+ char unicode_prop_name_pool_str1858[sizeof("incjkcompatibility")];
+ char unicode_prop_name_pool_str1860[sizeof("khudawadi")];
+ char unicode_prop_name_pool_str1863[sizeof("invedicextensions")];
+ char unicode_prop_name_pool_str1868[sizeof("inethiopicextended")];
+ char unicode_prop_name_pool_str1875[sizeof("ingeorgianextended")];
+ char unicode_prop_name_pool_str1883[sizeof("shrd")];
+ char unicode_prop_name_pool_str1887[sizeof("dogr")];
+ char unicode_prop_name_pool_str1892[sizeof("intelugu")];
+ char unicode_prop_name_pool_str1898[sizeof("inmiscellaneousmathematicalsymbolsb")];
+ char unicode_prop_name_pool_str1899[sizeof("inmayannumerals")];
+ char unicode_prop_name_pool_str1902[sizeof("olditalic")];
+ char unicode_prop_name_pool_str1904[sizeof("inbraillepatterns")];
+ char unicode_prop_name_pool_str1911[sizeof("oalpha")];
+ char unicode_prop_name_pool_str1913[sizeof("inmathematicalalphanumericsymbols")];
+ char unicode_prop_name_pool_str1915[sizeof("inphoneticextensionssupplement")];
+ char unicode_prop_name_pool_str1916[sizeof("intagalog")];
+ char unicode_prop_name_pool_str1921[sizeof("insuttonsignwriting")];
+ char unicode_prop_name_pool_str1923[sizeof("siddham")];
+ char unicode_prop_name_pool_str1927[sizeof("intaiviet")];
+ char unicode_prop_name_pool_str1931[sizeof("nl")];
+ char unicode_prop_name_pool_str1934[sizeof("separator")];
+ char unicode_prop_name_pool_str1938[sizeof("ethi")];
+ char unicode_prop_name_pool_str1943[sizeof("patsyn")];
+ char unicode_prop_name_pool_str1948[sizeof("rohg")];
+ char unicode_prop_name_pool_str1950[sizeof("invariationselectorssupplement")];
+ char unicode_prop_name_pool_str1956[sizeof("inyiradicals")];
+ char unicode_prop_name_pool_str1957[sizeof("otheridcontinue")];
+ char unicode_prop_name_pool_str1964[sizeof("idsb")];
+ char unicode_prop_name_pool_str1965[sizeof("insmallformvariants")];
+ char unicode_prop_name_pool_str1972[sizeof("lydi")];
+ char unicode_prop_name_pool_str1973[sizeof("lydian")];
+ char unicode_prop_name_pool_str1978[sizeof("other")];
+ char unicode_prop_name_pool_str1987[sizeof("othernumber")];
+ char unicode_prop_name_pool_str1999[sizeof("cyrl")];
+ char unicode_prop_name_pool_str2003[sizeof("nd")];
+ char unicode_prop_name_pool_str2006[sizeof("induployan")];
+ char unicode_prop_name_pool_str2008[sizeof("dash")];
+ char unicode_prop_name_pool_str2010[sizeof("zanabazarsquare")];
+ char unicode_prop_name_pool_str2016[sizeof("incopticepactnumbers")];
+ char unicode_prop_name_pool_str2020[sizeof("number")];
+ char unicode_prop_name_pool_str2023[sizeof("inphagspa")];
+ char unicode_prop_name_pool_str2032[sizeof("mlym")];
+ char unicode_prop_name_pool_str2037[sizeof("malayalam")];
+ char unicode_prop_name_pool_str2038[sizeof("word")];
+ char unicode_prop_name_pool_str2040[sizeof("sarb")];
+ char unicode_prop_name_pool_str2047[sizeof("tang")];
+ char unicode_prop_name_pool_str2050[sizeof("otheralphabetic")];
+ char unicode_prop_name_pool_str2051[sizeof("tagbanwa")];
+ char unicode_prop_name_pool_str2057[sizeof("lepcha")];
+ char unicode_prop_name_pool_str2062[sizeof("surrogate")];
+ char unicode_prop_name_pool_str2063[sizeof("palmyrene")];
+ char unicode_prop_name_pool_str2064[sizeof("cf")];
+ char unicode_prop_name_pool_str2070[sizeof("ingothic")];
+ char unicode_prop_name_pool_str2071[sizeof("inmeroiticcursive")];
+ char unicode_prop_name_pool_str2077[sizeof("tamil")];
+ char unicode_prop_name_pool_str2084[sizeof("oldhungarian")];
+ char unicode_prop_name_pool_str2085[sizeof("titlecaseletter")];
+ char unicode_prop_name_pool_str2092[sizeof("thaa")];
+ char unicode_prop_name_pool_str2095[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
+ char unicode_prop_name_pool_str2097[sizeof("thaana")];
+ char unicode_prop_name_pool_str2099[sizeof("thai")];
+ char unicode_prop_name_pool_str2109[sizeof("pf")];
+ char unicode_prop_name_pool_str2110[sizeof("extendedpictographic")];
+ char unicode_prop_name_pool_str2121[sizeof("incjkradicalssupplement")];
+ char unicode_prop_name_pool_str2124[sizeof("indevanagariextended")];
+ char unicode_prop_name_pool_str2133[sizeof("gujr")];
+ char unicode_prop_name_pool_str2144[sizeof("gujarati")];
+ char unicode_prop_name_pool_str2158[sizeof("tirh")];
+ char unicode_prop_name_pool_str2160[sizeof("caucasianalbanian")];
+ char unicode_prop_name_pool_str2178[sizeof("incyrillicextendedb")];
+ char unicode_prop_name_pool_str2187[sizeof("soyo")];
+ char unicode_prop_name_pool_str2188[sizeof("inhangulsyllables")];
+ char unicode_prop_name_pool_str2190[sizeof("inbamum")];
+ char unicode_prop_name_pool_str2191[sizeof("taitham")];
+ char unicode_prop_name_pool_str2196[sizeof("meroitichieroglyphs")];
+ char unicode_prop_name_pool_str2213[sizeof("intifinagh")];
+ char unicode_prop_name_pool_str2214[sizeof("talu")];
+ char unicode_prop_name_pool_str2217[sizeof("inbengali")];
+ char unicode_prop_name_pool_str2222[sizeof("incjkunifiedideographsextensionf")];
+ char unicode_prop_name_pool_str2223[sizeof("buhd")];
+ char unicode_prop_name_pool_str2228[sizeof("telu")];
+ char unicode_prop_name_pool_str2229[sizeof("inbuginese")];
+ char unicode_prop_name_pool_str2232[sizeof("idstrinaryoperator")];
+ char unicode_prop_name_pool_str2233[sizeof("tirhuta")];
+ char unicode_prop_name_pool_str2238[sizeof("oldturkic")];
+ char unicode_prop_name_pool_str2245[sizeof("incombiningdiacriticalmarks")];
+ char unicode_prop_name_pool_str2249[sizeof("phagspa")];
+ char unicode_prop_name_pool_str2255[sizeof("incombiningdiacriticalmarksforsymbols")];
+ char unicode_prop_name_pool_str2258[sizeof("changeswhencasemapped")];
+ char unicode_prop_name_pool_str2259[sizeof("inlatin1supplement")];
+ char unicode_prop_name_pool_str2261[sizeof("inbrahmi")];
+ char unicode_prop_name_pool_str2263[sizeof("hang")];
+ char unicode_prop_name_pool_str2264[sizeof("nchar")];
+ char unicode_prop_name_pool_str2286[sizeof("oldsogdian")];
+ char unicode_prop_name_pool_str2299[sizeof("deva")];
+ char unicode_prop_name_pool_str2301[sizeof("ingujarati")];
+ char unicode_prop_name_pool_str2305[sizeof("otherlowercase")];
+ char unicode_prop_name_pool_str2311[sizeof("ingunjalagondi")];
+ char unicode_prop_name_pool_str2315[sizeof("devanagari")];
+ char unicode_prop_name_pool_str2319[sizeof("syrc")];
+ char unicode_prop_name_pool_str2325[sizeof("mahj")];
+ char unicode_prop_name_pool_str2330[sizeof("hiragana")];
+ char unicode_prop_name_pool_str2333[sizeof("orya")];
+ char unicode_prop_name_pool_str2336[sizeof("mahajani")];
+ char unicode_prop_name_pool_str2341[sizeof("incurrencysymbols")];
+ char unicode_prop_name_pool_str2342[sizeof("spaceseparator")];
+ char unicode_prop_name_pool_str2347[sizeof("otherletter")];
+ char unicode_prop_name_pool_str2348[sizeof("inlinearbsyllabary")];
+ char unicode_prop_name_pool_str2351[sizeof("inrejang")];
+ char unicode_prop_name_pool_str2352[sizeof("hmng")];
+ char unicode_prop_name_pool_str2357[sizeof("ogrext")];
+ char unicode_prop_name_pool_str2376[sizeof("inaegeannumbers")];
+ char unicode_prop_name_pool_str2389[sizeof("changeswhentitlecased")];
+ char unicode_prop_name_pool_str2409[sizeof("zp")];
+ char unicode_prop_name_pool_str2411[sizeof("mathsymbol")];
+ char unicode_prop_name_pool_str2414[sizeof("khoj")];
+ char unicode_prop_name_pool_str2419[sizeof("incombiningdiacriticalmarkssupplement")];
+ char unicode_prop_name_pool_str2421[sizeof("warangciti")];
+ char unicode_prop_name_pool_str2428[sizeof("syriac")];
+ char unicode_prop_name_pool_str2429[sizeof("finalpunctuation")];
+ char unicode_prop_name_pool_str2437[sizeof("othersymbol")];
+ char unicode_prop_name_pool_str2444[sizeof("currencysymbol")];
+ char unicode_prop_name_pool_str2445[sizeof("digit")];
+ char unicode_prop_name_pool_str2449[sizeof("emojipresentation")];
+ char unicode_prop_name_pool_str2455[sizeof("inpsalterpahlavi")];
+ char unicode_prop_name_pool_str2456[sizeof("softdotted")];
+ char unicode_prop_name_pool_str2460[sizeof("phlp")];
+ char unicode_prop_name_pool_str2461[sizeof("noncharactercodepoint")];
+ char unicode_prop_name_pool_str2464[sizeof("inlimbu")];
+ char unicode_prop_name_pool_str2465[sizeof("nonspacingmark")];
+ char unicode_prop_name_pool_str2467[sizeof("omath")];
+ char unicode_prop_name_pool_str2473[sizeof("cyrillic")];
+ char unicode_prop_name_pool_str2476[sizeof("inenclosedcjklettersandmonths")];
+ char unicode_prop_name_pool_str2482[sizeof("tangut")];
+ char unicode_prop_name_pool_str2484[sizeof("changeswhenlowercased")];
+ char unicode_prop_name_pool_str2496[sizeof("inalphabeticpresentationforms")];
+ char unicode_prop_name_pool_str2500[sizeof("intangutcomponents")];
+ char unicode_prop_name_pool_str2503[sizeof("incombiningdiacriticalmarksextended")];
+ char unicode_prop_name_pool_str2508[sizeof("ogham")];
+ char unicode_prop_name_pool_str2518[sizeof("osmanya")];
+ char unicode_prop_name_pool_str2521[sizeof("intagbanwa")];
+ char unicode_prop_name_pool_str2525[sizeof("inprivateusearea")];
+ char unicode_prop_name_pool_str2529[sizeof("inpaucinhau")];
+ char unicode_prop_name_pool_str2532[sizeof("otheruppercase")];
+ char unicode_prop_name_pool_str2533[sizeof("sylo")];
+ char unicode_prop_name_pool_str2537[sizeof("elba")];
+ char unicode_prop_name_pool_str2553[sizeof("paragraphseparator")];
+ char unicode_prop_name_pool_str2554[sizeof("inbassavah")];
+ char unicode_prop_name_pool_str2559[sizeof("otheridstart")];
+ char unicode_prop_name_pool_str2567[sizeof("signwriting")];
+ char unicode_prop_name_pool_str2576[sizeof("rjng")];
+ char unicode_prop_name_pool_str2584[sizeof("whitespace")];
+ char unicode_prop_name_pool_str2585[sizeof("incjkunifiedideographsextensionb")];
+ char unicode_prop_name_pool_str2586[sizeof("inletterlikesymbols")];
+ char unicode_prop_name_pool_str2623[sizeof("buhid")];
+ char unicode_prop_name_pool_str2642[sizeof("oupper")];
+ char unicode_prop_name_pool_str2644[sizeof("bassavah")];
+ char unicode_prop_name_pool_str2647[sizeof("inhebrew")];
+ char unicode_prop_name_pool_str2653[sizeof("narb")];
+ char unicode_prop_name_pool_str2659[sizeof("inbuhid")];
+ char unicode_prop_name_pool_str2662[sizeof("inbopomofo")];
+ char unicode_prop_name_pool_str2692[sizeof("elbasan")];
+ char unicode_prop_name_pool_str2700[sizeof("incombininghalfmarks")];
+ char unicode_prop_name_pool_str2707[sizeof("inindicsiyaqnumbers")];
+ char unicode_prop_name_pool_str2711[sizeof("changeswhenuppercased")];
+ char unicode_prop_name_pool_str2743[sizeof("inmathematicaloperators")];
+ char unicode_prop_name_pool_str2745[sizeof("inarabicmathematicalalphabeticsymbols")];
+ char unicode_prop_name_pool_str2764[sizeof("hluw")];
+ char unicode_prop_name_pool_str2770[sizeof("hexdigit")];
+ char unicode_prop_name_pool_str2771[sizeof("deprecated")];
+ char unicode_prop_name_pool_str2776[sizeof("insuperscriptsandsubscripts")];
+ char unicode_prop_name_pool_str2777[sizeof("nshu")];
+ char unicode_prop_name_pool_str2782[sizeof("injavanese")];
+ char unicode_prop_name_pool_str2790[sizeof("inbamumsupplement")];
+ char unicode_prop_name_pool_str2798[sizeof("hangul")];
+ char unicode_prop_name_pool_str2826[sizeof("unifiedideograph")];
+ char unicode_prop_name_pool_str2831[sizeof("tavt")];
+ char unicode_prop_name_pool_str2843[sizeof("othermath")];
+ char unicode_prop_name_pool_str2849[sizeof("pahawhhmong")];
+ char unicode_prop_name_pool_str2850[sizeof("sylotinagri")];
+ char unicode_prop_name_pool_str2853[sizeof("hung")];
+ char unicode_prop_name_pool_str2856[sizeof("kayahli")];
+ char unicode_prop_name_pool_str2861[sizeof("inpahawhhmong")];
+ char unicode_prop_name_pool_str2863[sizeof("upper")];
+ char unicode_prop_name_pool_str2884[sizeof("inalchemicalsymbols")];
+ char unicode_prop_name_pool_str2907[sizeof("nbat")];
+ char unicode_prop_name_pool_str2915[sizeof("nabataean")];
+ char unicode_prop_name_pool_str2929[sizeof("uppercase")];
+ char unicode_prop_name_pool_str2937[sizeof("hebr")];
+ char unicode_prop_name_pool_str2947[sizeof("inmahjongtiles")];
+ char unicode_prop_name_pool_str2954[sizeof("oldnortharabian")];
+ char unicode_prop_name_pool_str2963[sizeof("inarabicsupplement")];
+ char unicode_prop_name_pool_str2968[sizeof("tibt")];
+ char unicode_prop_name_pool_str2974[sizeof("tibetan")];
+ char unicode_prop_name_pool_str2975[sizeof("inhighprivateusesurrogates")];
+ char unicode_prop_name_pool_str2976[sizeof("insupplementalarrowsa")];
+ char unicode_prop_name_pool_str2977[sizeof("inarabicpresentationformsb")];
+ char unicode_prop_name_pool_str2986[sizeof("otherdefaultignorablecodepoint")];
+ char unicode_prop_name_pool_str2987[sizeof("symbol")];
+ char unicode_prop_name_pool_str3012[sizeof("inplayingcards")];
+ char unicode_prop_name_pool_str3013[sizeof("inhalfwidthandfullwidthforms")];
+ char unicode_prop_name_pool_str3052[sizeof("wspace")];
+ char unicode_prop_name_pool_str3071[sizeof("tfng")];
+ char unicode_prop_name_pool_str3080[sizeof("insupplementalmathematicaloperators")];
+ char unicode_prop_name_pool_str3083[sizeof("insupplementalarrowsc")];
+ char unicode_prop_name_pool_str3084[sizeof("inhanguljamoextendedb")];
+ char unicode_prop_name_pool_str3112[sizeof("aghb")];
+ char unicode_prop_name_pool_str3120[sizeof("cypriot")];
+ char unicode_prop_name_pool_str3127[sizeof("nushu")];
+ char unicode_prop_name_pool_str3130[sizeof("tifinagh")];
+ char unicode_prop_name_pool_str3139[sizeof("otherpunctuation")];
+ char unicode_prop_name_pool_str3177[sizeof("alphabetic")];
+ char unicode_prop_name_pool_str3184[sizeof("dupl")];
+ char unicode_prop_name_pool_str3190[sizeof("tglg")];
+ char unicode_prop_name_pool_str3193[sizeof("changeswhencasefolded")];
+ char unicode_prop_name_pool_str3210[sizeof("tagalog")];
+ char unicode_prop_name_pool_str3228[sizeof("modifiersymbol")];
+ char unicode_prop_name_pool_str3231[sizeof("any")];
+ char unicode_prop_name_pool_str3239[sizeof("inglagoliticsupplement")];
+ char unicode_prop_name_pool_str3262[sizeof("ethiopic")];
+ char unicode_prop_name_pool_str3293[sizeof("uppercaseletter")];
+ char unicode_prop_name_pool_str3297[sizeof("dashpunctuation")];
+ char unicode_prop_name_pool_str3304[sizeof("hanifirohingya")];
+ char unicode_prop_name_pool_str3328[sizeof("inyijinghexagramsymbols")];
+ char unicode_prop_name_pool_str3337[sizeof("incypriotsyllabary")];
+ char unicode_prop_name_pool_str3375[sizeof("rejang")];
+ char unicode_prop_name_pool_str3426[sizeof("defaultignorablecodepoint")];
+ char unicode_prop_name_pool_str3431[sizeof("tagb")];
+ char unicode_prop_name_pool_str3447[sizeof("dep")];
+ char unicode_prop_name_pool_str3471[sizeof("inyisyllables")];
+ char unicode_prop_name_pool_str3485[sizeof("oldsoutharabian")];
+ char unicode_prop_name_pool_str3504[sizeof("inlatinextendedb")];
+ char unicode_prop_name_pool_str3514[sizeof("insupplementalpunctuation")];
+ char unicode_prop_name_pool_str3517[sizeof("othergraphemeextend")];
+ char unicode_prop_name_pool_str3562[sizeof("hebrew")];
+ char unicode_prop_name_pool_str3564[sizeof("inboxdrawing")];
+ char unicode_prop_name_pool_str3570[sizeof("inhighsurrogates")];
+ char unicode_prop_name_pool_str3603[sizeof("telugu")];
+ char unicode_prop_name_pool_str3623[sizeof("inbopomofoextended")];
+ char unicode_prop_name_pool_str3666[sizeof("soyombo")];
+ char unicode_prop_name_pool_str3764[sizeof("inegyptianhieroglyphs")];
+ char unicode_prop_name_pool_str4052[sizeof("openpunctuation")];
+ char unicode_prop_name_pool_str4129[sizeof("insupplementaryprivateuseareaa")];
+ char unicode_prop_name_pool_str4261[sizeof("hyphen")];
+ char unicode_prop_name_pool_str4277[sizeof("inhangulcompatibilityjamo")];
+ char unicode_prop_name_pool_str4332[sizeof("egyp")];
+ char unicode_prop_name_pool_str4363[sizeof("insupplementalarrowsb")];
+ char unicode_prop_name_pool_str4404[sizeof("duployan")];
+ char unicode_prop_name_pool_str4639[sizeof("insupplementalsymbolsandpictographs")];
+ char unicode_prop_name_pool_str4682[sizeof("zyyy")];
+ char unicode_prop_name_pool_str5231[sizeof("egyptianhieroglyphs")];
+ char unicode_prop_name_pool_str5516[sizeof("insupplementaryprivateuseareab")];
+ };
+static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents =
+ {
+ "lana",
+ "lina",
+ "yi",
+ "cn",
+ "z",
+ "mn",
+ "yiii",
+ "ci",
+ "mani",
+ "lo",
+ "lao",
+ "laoo",
+ "miao",
+ "maka",
+ "me",
+ "co",
+ "loe",
+ "inkannada",
+ "innko",
+ "zzzz",
+ "gran",
+ "pi",
+ "lineara",
+ "cari",
+ "carian",
+ "pe",
+ "po",
+ "kana",
+ "mendekikakui",
+ "geor",
+ "meeteimayek",
+ "mark",
+ "m",
+ "grek",
+ "mero",
+ "mro",
+ "mroo",
+ "gonm",
+ "c",
+ "cakm",
+ "greek",
+ "inkharoshthi",
+ "mandaic",
+ "inosmanya",
+ "inarmenian",
+ "inmanichaean",
+ "common",
+ "inmro",
+ "inmiao",
+ "qaai",
+ "inchakma",
+ "cans",
+ "connectorpunctuation",
+ "lm",
+ "marc",
+ "inmyanmar",
+ "vai",
+ "vaii",
+ "inideographicsymbolsandpunctuation",
+ "merc",
+ "inavestan",
+ "incuneiformnumbersandpunctuation",
+ "inmakasar",
+ "inrunic",
+ "incarian",
+ "prependedconcatenationmark",
+ "lc",
+ "inipaextensions",
+ "inkhmer",
+ "perm",
+ "combiningmark",
+ "inahom",
+ "cc",
+ "incherokee",
+ "mc",
+ "insharada",
+ "masaramgondi",
+ "incuneiform",
+ "makasar",
+ "qaac",
+ "inarrows",
+ "armn",
+ "lineseparator",
+ "armi",
+ "pc",
+ "armenian",
+ "insamaritan",
+ "inmasaramgondi",
+ "inzanabazarsquare",
+ "qmark",
+ "inmarchen",
+ "zs",
+ "cs",
+ "incyrillic",
+ "incham",
+ "latn",
+ "inscriptionalparthian",
+ "latin",
+ "ri",
+ "inkhmersymbols",
+ "pcm",
+ "inthaana",
+ "mtei",
+ "insyriac",
+ "ps",
+ "inthai",
+ "l",
+ "innewa",
+ "inkatakana",
+ "ascii",
+ "initialpunctuation",
+ "inkaithi",
+ "arabic",
+ "inideographicdescriptioncharacters",
+ "inlineara",
+ "mand",
+ "mongolian",
+ "inlao",
+ "katakana",
+ "mend",
+ "intakri",
+ "inruminumeralsymbols",
+ "prti",
+ "modi",
+ "inwarangciti",
+ "incjkcompatibilityforms",
+ "inspecials",
+ "incjkcompatibilityideographs",
+ "ideo",
+ "privateuse",
+ "kali",
+ "inmyanmarextendeda",
+ "letter",
+ "brai",
+ "inkanaextendeda",
+ "vs",
+ "xidcontinue",
+ "lower",
+ "inchesssymbols",
+ "control",
+ "inadlam",
+ "grlink",
+ "knda",
+ "inmeeteimayek",
+ "kannada",
+ "inmiscellaneousmathematicalsymbolsa",
+ "palm",
+ "inlycian",
+ "intransportandmapsymbols",
+ "inoldnortharabian",
+ "inemoticons",
+ "letternumber",
+ "inmodi",
+ "xidc",
+ "lowercase",
+ "inancientsymbols",
+ "cwcm",
+ "inmedefaidrin",
+ "psalterpahlavi",
+ "gothic",
+ "inmendekikakui",
+ "brahmi",
+ "inolditalic",
+ "inmalayalam",
+ "xids",
+ "incommonindicnumberforms",
+ "meroiticcursive",
+ "inlinearbideograms",
+ "patternwhitespace",
+ "insundanese",
+ "joinc",
+ "inoldsogdian",
+ "incjkstrokes",
+ "so",
+ "patternsyntax",
+ "lt",
+ "incjkcompatibilityideographssupplement",
+ "inmandaic",
+ "insylotinagri",
+ "idc",
+ "sk",
+ "alnum",
+ "sora",
+ "bamum",
+ "inoldsoutharabian",
+ "patws",
+ "inmusicalsymbols",
+ "idsbinaryoperator",
+ "indominotiles",
+ "bass",
+ "innewtailue",
+ "ital",
+ "inmiscellaneoussymbols",
+ "inopticalcharacterrecognition",
+ "grext",
+ "inkanasupplement",
+ "inmiscellaneoussymbolsandarrows",
+ "inmiscellaneoussymbolsandpictographs",
+ "unknown",
+ "inmodifiertoneletters",
+ "ids",
+ "zl",
+ "inlatinextendeda",
+ "ll",
+ "intaile",
+ "incontrolpictures",
+ "s",
+ "batk",
+ "samr",
+ "lisu",
+ "print",
+ "samaritan",
+ "inlatinextendede",
+ "intaitham",
+ "pauc",
+ "batak",
+ "sm",
+ "bali",
+ "inancientgreekmusicalnotation",
+ "uideo",
+ "intaixuanjingsymbols",
+ "oriya",
+ "incyrillicextendeda",
+ "bengali",
+ "inugaritic",
+ "balinese",
+ "sc",
+ "intamil",
+ "inlydian",
+ "inmultani",
+ "gong",
+ "blank",
+ "ingrantha",
+ "mong",
+ "inearlydynasticcuneiform",
+ "insaurashtra",
+ "georgian",
+ "zinh",
+ "inosage",
+ "ingeneralpunctuation",
+ "incaucasianalbanian",
+ "pd",
+ "canadianaboriginal",
+ "glagolitic",
+ "inspacingmodifierletters",
+ "idcontinue",
+ "inoldturkic",
+ "plrd",
+ "joincontrol",
+ "idst",
+ "inhanifirohingya",
+ "osage",
+ "incyrillicextendedc",
+ "ingeorgian",
+ "unassigned",
+ "lowercaseletter",
+ "emoji",
+ "indeseret",
+ "inancientgreeknumbers",
+ "inmongolian",
+ "cher",
+ "cherokee",
+ "inhiragana",
+ "phoenician",
+ "marchen",
+ "xsux",
+ "cham",
+ "chakma",
+ "inmeeteimayekextensions",
+ "inlatinextendedc",
+ "kaithi",
+ "graphemebase",
+ "idstart",
+ "osma",
+ "adlm",
+ "inmahajani",
+ "cased",
+ "runr",
+ "sinhala",
+ "manichaean",
+ "inogham",
+ "graphemelink",
+ "ingurmukhi",
+ "cwt",
+ "khojki",
+ "khar",
+ "multani",
+ "gunjalagondi",
+ "casedletter",
+ "inethiopic",
+ "inolchiki",
+ "variationselector",
+ "sind",
+ "incountingrodnumerals",
+ "logicalorderexception",
+ "insinhala",
+ "bidic",
+ "dia",
+ "insorasompeng",
+ "anatolianhieroglyphs",
+ "inlowsurrogates",
+ "di",
+ "ahom",
+ "inenclosedalphanumerics",
+ "adlam",
+ "inkhudawadi",
+ "cntrl",
+ "xidstart",
+ "xdigit",
+ "phnx",
+ "emojimodifier",
+ "khmr",
+ "insiddham",
+ "cwl",
+ "bamu",
+ "ingreekandcoptic",
+ "inmiscellaneoustechnical",
+ "sterm",
+ "inscriptionalpahlavi",
+ "inlatinextendedadditional",
+ "kharoshthi",
+ "runic",
+ "odi",
+ "ahex",
+ "khmer",
+ "incyrillicsupplement",
+ "incherokeesupplement",
+ "inmeroitichieroglyphs",
+ "enclosingmark",
+ "glag",
+ "inkangxiradicals",
+ "math",
+ "quotationmark",
+ "goth",
+ "emojimodifierbase",
+ "ugar",
+ "lu",
+ "radical",
+ "incjkunifiedideographsextensiona",
+ "beng",
+ "braille",
+ "n",
+ "sundanese",
+ "olck",
+ "incjkunifiedideographsextensione",
+ "diacritic",
+ "grantha",
+ "inenclosedalphanumericsupplement",
+ "olchiki",
+ "oidc",
+ "olower",
+ "regionalindicator",
+ "no",
+ "intirhuta",
+ "inhatran",
+ "saur",
+ "kthi",
+ "ingeometricshapes",
+ "guru",
+ "ingreekextended",
+ "paucinhau",
+ "xpeo",
+ "p",
+ "phli",
+ "nko",
+ "nkoo",
+ "oids",
+ "indogra",
+ "inphoenician",
+ "punct",
+ "limbu",
+ "gurmukhi",
+ "mult",
+ "brah",
+ "taile",
+ "inoldhungarian",
+ "takri",
+ "bidicontrol",
+ "invai",
+ "incjkunifiedideographsextensionc",
+ "inenclosedideographicsupplement",
+ "decimalnumber",
+ "lepc",
+ "inherited",
+ "incjkunifiedideographs",
+ "graphemeextend",
+ "saurashtra",
+ "caseignorable",
+ "emojicomponent",
+ "takr",
+ "inanatolianhieroglyphs",
+ "inornamentaldingbats",
+ "inphaistosdisc",
+ "insogdian",
+ "indingbats",
+ "sd",
+ "zanb",
+ "insinhalaarchaicnumbers",
+ "ideographic",
+ "sidd",
+ "linb",
+ "sogdian",
+ "bhks",
+ "sogo",
+ "bhaiksuki",
+ "term",
+ "insundanesesupplement",
+ "intags",
+ "innabataean",
+ "sinh",
+ "shavian",
+ "inbhaiksuki",
+ "inelbasan",
+ "inimperialaramaic",
+ "inshavian",
+ "intangut",
+ "inshorthandformatcontrols",
+ "inkanbun",
+ "sentenceterminal",
+ "medf",
+ "coptic",
+ "linearb",
+ "medefaidrin",
+ "inethiopicextendeda",
+ "inhanunoo",
+ "han",
+ "cwcf",
+ "hani",
+ "limb",
+ "hano",
+ "ingeometricshapesextended",
+ "hanunoo",
+ "inlatinextendedd",
+ "inarabic",
+ "cwu",
+ "asciihexdigit",
+ "ininscriptionalparthian",
+ "format",
+ "ininscriptionalpahlavi",
+ "hira",
+ "dsrt",
+ "copt",
+ "ugaritic",
+ "newa",
+ "arab",
+ "inkhojki",
+ "oldpersian",
+ "punctuation",
+ "deseret",
+ "newtailue",
+ "newline",
+ "ext",
+ "sund",
+ "ogam",
+ "inbasiclatin",
+ "inarabicpresentationformsa",
+ "cprt",
+ "imperialaramaic",
+ "incjkunifiedideographsextensiond",
+ "assigned",
+ "taiviet",
+ "innushu",
+ "inoriya",
+ "wara",
+ "java",
+ "sorasompeng",
+ "inkayahli",
+ "orkh",
+ "closepunctuation",
+ "grbase",
+ "tale",
+ "bopo",
+ "javanese",
+ "osge",
+ "oldpermic",
+ "inoldpersian",
+ "phag",
+ "alpha",
+ "lyci",
+ "lycian",
+ "inkatakanaphoneticextensions",
+ "incjksymbolsandpunctuation",
+ "inhanguljamo",
+ "inhanguljamoextendeda",
+ "avestan",
+ "inpalmyrene",
+ "inlepcha",
+ "indevanagari",
+ "taml",
+ "sgnw",
+ "inblockelements",
+ "inlisu",
+ "mymr",
+ "myanmar",
+ "graph",
+ "cuneiform",
+ "extender",
+ "inphoneticextensions",
+ "inmongoliansupplement",
+ "bopomofo",
+ "intibetan",
+ "innumberforms",
+ "shaw",
+ "inbatak",
+ "inoldpermic",
+ "incoptic",
+ "invariationselectors",
+ "insoyombo",
+ "terminalpunctuation",
+ "bugi",
+ "insyriacsupplement",
+ "sogd",
+ "hatran",
+ "inbyzantinemusicalsymbols",
+ "inbalinese",
+ "buginese",
+ "innoblock",
+ "inethiopicsupplement",
+ "inglagolitic",
+ "ingeorgiansupplement",
+ "space",
+ "sharada",
+ "dogra",
+ "avst",
+ "hex",
+ "inunifiedcanadianaboriginalsyllabics",
+ "inverticalforms",
+ "spacingmark",
+ "inarabicextendeda",
+ "hatr",
+ "modifierletter",
+ "inmyanmarextendedb",
+ "incjkcompatibility",
+ "khudawadi",
+ "invedicextensions",
+ "inethiopicextended",
+ "ingeorgianextended",
+ "shrd",
+ "dogr",
+ "intelugu",
+ "inmiscellaneousmathematicalsymbolsb",
+ "inmayannumerals",
+ "olditalic",
+ "inbraillepatterns",
+ "oalpha",
+ "inmathematicalalphanumericsymbols",
+ "inphoneticextensionssupplement",
+ "intagalog",
+ "insuttonsignwriting",
+ "siddham",
+ "intaiviet",
+ "nl",
+ "separator",
+ "ethi",
+ "patsyn",
+ "rohg",
+ "invariationselectorssupplement",
+ "inyiradicals",
+ "otheridcontinue",
+ "idsb",
+ "insmallformvariants",
+ "lydi",
+ "lydian",
+ "other",
+ "othernumber",
+ "cyrl",
+ "nd",
+ "induployan",
+ "dash",
+ "zanabazarsquare",
+ "incopticepactnumbers",
+ "number",
+ "inphagspa",
+ "mlym",
+ "malayalam",
+ "word",
+ "sarb",
+ "tang",
+ "otheralphabetic",
+ "tagbanwa",
+ "lepcha",
+ "surrogate",
+ "palmyrene",
+ "cf",
+ "ingothic",
+ "inmeroiticcursive",
+ "tamil",
+ "oldhungarian",
+ "titlecaseletter",
+ "thaa",
+ "inunifiedcanadianaboriginalsyllabicsextended",
+ "thaana",
+ "thai",
+ "pf",
+ "extendedpictographic",
+ "incjkradicalssupplement",
+ "indevanagariextended",
+ "gujr",
+ "gujarati",
+ "tirh",
+ "caucasianalbanian",
+ "incyrillicextendedb",
+ "soyo",
+ "inhangulsyllables",
+ "inbamum",
+ "taitham",
+ "meroitichieroglyphs",
+ "intifinagh",
+ "talu",
+ "inbengali",
+ "incjkunifiedideographsextensionf",
+ "buhd",
+ "telu",
+ "inbuginese",
+ "idstrinaryoperator",
+ "tirhuta",
+ "oldturkic",
+ "incombiningdiacriticalmarks",
+ "phagspa",
+ "incombiningdiacriticalmarksforsymbols",
+ "changeswhencasemapped",
+ "inlatin1supplement",
+ "inbrahmi",
+ "hang",
+ "nchar",
+ "oldsogdian",
+ "deva",
+ "ingujarati",
+ "otherlowercase",
+ "ingunjalagondi",
+ "devanagari",
+ "syrc",
+ "mahj",
+ "hiragana",
+ "orya",
+ "mahajani",
+ "incurrencysymbols",
+ "spaceseparator",
+ "otherletter",
+ "inlinearbsyllabary",
+ "inrejang",
+ "hmng",
+ "ogrext",
+ "inaegeannumbers",
+ "changeswhentitlecased",
+ "zp",
+ "mathsymbol",
+ "khoj",
+ "incombiningdiacriticalmarkssupplement",
+ "warangciti",
+ "syriac",
+ "finalpunctuation",
+ "othersymbol",
+ "currencysymbol",
+ "digit",
+ "emojipresentation",
+ "inpsalterpahlavi",
+ "softdotted",
+ "phlp",
+ "noncharactercodepoint",
+ "inlimbu",
+ "nonspacingmark",
+ "omath",
+ "cyrillic",
+ "inenclosedcjklettersandmonths",
+ "tangut",
+ "changeswhenlowercased",
+ "inalphabeticpresentationforms",
+ "intangutcomponents",
+ "incombiningdiacriticalmarksextended",
+ "ogham",
+ "osmanya",
+ "intagbanwa",
+ "inprivateusearea",
+ "inpaucinhau",
+ "otheruppercase",
+ "sylo",
+ "elba",
+ "paragraphseparator",
+ "inbassavah",
+ "otheridstart",
+ "signwriting",
+ "rjng",
+ "whitespace",
+ "incjkunifiedideographsextensionb",
+ "inletterlikesymbols",
+ "buhid",
+ "oupper",
+ "bassavah",
+ "inhebrew",
+ "narb",
+ "inbuhid",
+ "inbopomofo",
+ "elbasan",
+ "incombininghalfmarks",
+ "inindicsiyaqnumbers",
+ "changeswhenuppercased",
+ "inmathematicaloperators",
+ "inarabicmathematicalalphabeticsymbols",
+ "hluw",
+ "hexdigit",
+ "deprecated",
+ "insuperscriptsandsubscripts",
+ "nshu",
+ "injavanese",
+ "inbamumsupplement",
+ "hangul",
+ "unifiedideograph",
+ "tavt",
+ "othermath",
+ "pahawhhmong",
+ "sylotinagri",
+ "hung",
+ "kayahli",
+ "inpahawhhmong",
+ "upper",
+ "inalchemicalsymbols",
+ "nbat",
+ "nabataean",
+ "uppercase",
+ "hebr",
+ "inmahjongtiles",
+ "oldnortharabian",
+ "inarabicsupplement",
+ "tibt",
+ "tibetan",
+ "inhighprivateusesurrogates",
+ "insupplementalarrowsa",
+ "inarabicpresentationformsb",
+ "otherdefaultignorablecodepoint",
+ "symbol",
+ "inplayingcards",
+ "inhalfwidthandfullwidthforms",
+ "wspace",
+ "tfng",
+ "insupplementalmathematicaloperators",
+ "insupplementalarrowsc",
+ "inhanguljamoextendedb",
+ "aghb",
+ "cypriot",
+ "nushu",
+ "tifinagh",
+ "otherpunctuation",
+ "alphabetic",
+ "dupl",
+ "tglg",
+ "changeswhencasefolded",
+ "tagalog",
+ "modifiersymbol",
+ "any",
+ "inglagoliticsupplement",
+ "ethiopic",
+ "uppercaseletter",
+ "dashpunctuation",
+ "hanifirohingya",
+ "inyijinghexagramsymbols",
+ "incypriotsyllabary",
+ "rejang",
+ "defaultignorablecodepoint",
+ "tagb",
+ "dep",
+ "inyisyllables",
+ "oldsoutharabian",
+ "inlatinextendedb",
+ "insupplementalpunctuation",
+ "othergraphemeextend",
+ "hebrew",
+ "inboxdrawing",
+ "inhighsurrogates",
+ "telugu",
+ "inbopomofoextended",
+ "soyombo",
+ "inegyptianhieroglyphs",
+ "openpunctuation",
+ "insupplementaryprivateuseareaa",
+ "hyphen",
+ "inhangulcompatibilityjamo",
+ "egyp",
+ "insupplementalarrowsb",
+ "duployan",
+ "insupplementalsymbolsandpictographs",
+ "zyyy",
+ "egyptianhieroglyphs",
+ "insupplementaryprivateuseareab"
+ };
+#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents)
+static const struct PoolPropertyNameCtype *
+unicode_lookup_property_name (register const char *str, register size_t len)
{
- static const struct PropertyNameCtype wordlist[] =
+ static const struct PoolPropertyNameCtype wordlist[] =
{
- {""},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(10), 235},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(17), 124},
+
+ {pool_offset(18), 257},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(22), 53},
+ {-1},
+
+ {pool_offset(24), 258},
+
+ {pool_offset(25), 153},
+ {-1},
+
+ {pool_offset(27), 257},
+ {-1}, {-1},
+
+ {pool_offset(30), 40},
+
+ {pool_offset(31), 141},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(39), 129},
+
+ {pool_offset(40), 120},
+
+ {pool_offset(41), 120},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(45), 152},
+
+ {pool_offset(46), 138},
+
+ {pool_offset(47), 146},
+ {-1}, {-1},
+
+ {pool_offset(50), 54},
+
+ {pool_offset(51), 130},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(68), 291},
+ {-1},
+
+ {pool_offset(70), 279},
+
+ {pool_offset(71), 249},
+ {-1},
+
+ {pool_offset(73), 82},
+ {-1},
+
+ {pool_offset(75), 202},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(79), 124},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(84), 39},
+
+ {pool_offset(85), 39},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(89), 198},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(95), 203},
+
+ {pool_offset(96), 112},
+ {-1}, {-1},
+
+ {pool_offset(99), 149},
+ {-1},
+
+ {pool_offset(101), 79},
+
+ {pool_offset(102), 148},
+ {-1}, {-1},
+
+ {pool_offset(105), 136},
+ {-1},
+
+ {pool_offset(107), 136},
+ {-1},
+
+ {pool_offset(109), 86},
+ {-1},
- {"n", 34},
- {""},
+ {pool_offset(111), 151},
+ {-1},
- {"z", 51},
- {""}, {""}, {""}, {""},
+ {pool_offset(113), 156},
- {"zzzz", 237},
+ {pool_offset(114), 156},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"mn", 33},
+ {pool_offset(120), 143},
+ {-1},
- {"cn", 20},
- {""}, {""}, {""},
+ {pool_offset(122), 37},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"ci", 60},
+ {pool_offset(132), 45},
+ {-1}, {-1},
- {"m", 30},
- {""},
+ {pool_offset(135), 86},
+ {-1}, {-1},
- {"c", 17},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(138), 456},
+ {-1}, {-1},
- {"inmanichaean", 430},
+ {pool_offset(141), 140},
+ {-1},
- {"mani", 185},
+ {pool_offset(143), 442},
- {"mc", 31},
+ {pool_offset(144), 273},
- {"cc", 18},
- {""},
+ {pool_offset(145), 459},
+ {-1}, {-1}, {-1},
- {"qaai", 114},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(149), 55},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"qaac", 128},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(156), 504},
- {"incham", 373},
- {""}, {""}, {""}, {""},
+ {pool_offset(157), 508},
+ {-1}, {-1},
- {"mandaic", 168},
- {""}, {""},
+ {pool_offset(160), 105},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"sm", 49},
- {""},
+ {pool_offset(168), 473},
+ {-1},
- {"sc", 47},
- {""}, {""}, {""}, {""},
+ {pool_offset(170), 38},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"cans", 101},
- {""}, {""}, {""}, {""},
+ {pool_offset(181), 196},
+ {-1},
- {"ascii", 14},
- {""}, {""},
+ {pool_offset(183), 128},
+ {-1}, {-1}, {-1},
- {"insamaritan", 255},
- {""},
+ {pool_offset(187), 142},
- {"incuneiform", 456},
+ {pool_offset(188), 297},
- {"s", 46},
+ {pool_offset(189), 251},
- {"inarmenian", 248},
+ {pool_offset(190), 251},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"zs", 54},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(199), 509},
+ {-1},
- {"cs", 22},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(201), 150},
+ {-1},
- {"me", 32},
- {""}, {""}, {""}, {""},
+ {pool_offset(203), 460},
- {"incommonindicnumberforms", 364},
- {""}, {""},
+ {pool_offset(204), 499},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inavestan", 431},
+ {pool_offset(210), 497},
- {"inthai", 268},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(211), 305},
- {"inipaextensions", 242},
- {""}, {""}, {""}, {""},
+ {pool_offset(212), 433},
+ {-1}, {-1}, {-1}, {-1},
- {"initialpunctuation", 43},
- {""}, {""}, {""},
+ {pool_offset(217), 204},
+ {-1},
- {"inancientsymbols", 402},
- {""},
+ {pool_offset(219), 119},
- {"inthaana", 253},
- {""},
+ {pool_offset(220), 267},
+ {-1},
- {"cf", 19},
- {""},
+ {pool_offset(222), 310},
+ {-1}, {-1},
- {"incuneiformnumbersandpunctuation", 457},
- {""}, {""}, {""},
+ {pool_offset(225), 174},
+ {-1},
- {"mtei", 159},
- {""},
+ {pool_offset(227), 136},
+ {-1},
- {"inspecials", 397},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(229), 487},
- {"inmusicalsymbols", 470},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(230), 43},
+ {-1},
- {"inmiscellaneousmathematicalsymbolsa", 323},
- {""}, {""}, {""},
+ {pool_offset(232), 302},
- {"lm", 26},
+ {pool_offset(233), 145},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"lina", 183},
+ {pool_offset(245), 475},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"lc", 24},
- {""},
+ {pool_offset(251), 143},
- {"inlycian", 404},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(252), 498},
+ {-1}, {-1}, {-1}, {-1},
- {"lana", 151},
- {""},
+ {pool_offset(257), 138},
+ {-1}, {-1},
- {"intaixuanjingsymbols", 472},
+ {pool_offset(260), 56},
- {"inmyanmarextendeda", 374},
+ {pool_offset(261), 340},
- {"alnum", 13},
- {""},
+ {pool_offset(262), 22},
+ {-1}, {-1},
- {"sterm", 233},
+ {pool_offset(265), 260},
- {"intaitham", 292},
+ {pool_offset(266), 104},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"intransportandmapsymbols", 486},
- {""},
+ {pool_offset(275), 196},
- {"taile", 120},
- {""},
+ {pool_offset(276), 22},
+ {-1}, {-1}, {-1},
- {"inmalayalam", 266},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(280), 280},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmiscellaneoussymbols", 321},
+ {pool_offset(290), 495},
+ {-1},
- {"incontrolpictures", 315},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(292), 490},
- {"inmiscellaneoussymbolsandarrows", 329},
- {""}, {""}, {""},
+ {pool_offset(293), 207},
+ {-1},
- {"inlineara", 417},
+ {pool_offset(295), 494},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmiscellaneoussymbolsandpictographs", 483},
- {""}, {""},
+ {pool_offset(301), 262},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"sinhala", 92},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(314), 57},
+ {-1}, {-1}, {-1},
- {"taiviet", 152},
- {""}, {""},
+ {pool_offset(318), 271},
- {"ext", 218},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(319), 401},
+ {-1}, {-1}, {-1},
- {"latn", 75},
+ {pool_offset(323), 121},
+ {-1}, {-1},
- {"latin", 75},
+ {pool_offset(326), 107},
- {"ital", 111},
+ {pool_offset(327), 121},
+ {-1},
- {"intamil", 263},
- {""},
+ {pool_offset(329), 209},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmultani", 446},
- {""},
+ {pool_offset(336), 316},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"taml", 88},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(347), 204},
+ {-1},
- {"inrunic", 279},
+ {pool_offset(349), 278},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"incarian", 405},
- {""},
+ {pool_offset(355), 148},
+ {-1}, {-1},
- {"armn", 78},
- {""},
+ {pool_offset(358), 276},
- {"armi", 160},
+ {pool_offset(359), 205},
+ {-1},
- {"cari", 148},
+ {pool_offset(361), 294},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inlatinextendedc", 331},
- {""},
+ {pool_offset(367), 118},
+ {-1}, {-1}, {-1},
- {"armenian", 78},
+ {pool_offset(371), 481},
+ {-1}, {-1}, {-1}, {-1},
- {"inmyanmar", 271},
+ {pool_offset(376), 371},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"incyrillic", 246},
- {""},
+ {pool_offset(382), 14},
- {"inlatinextendeda", 240},
- {""}, {""}, {""},
+ {pool_offset(383), 202},
+ {-1}, {-1}, {-1}, {-1},
- {"carian", 148},
- {""}, {""},
+ {pool_offset(388), 471},
+ {-1}, {-1}, {-1}, {-1},
- {"intaile", 288},
- {""}, {""}, {""},
+ {pool_offset(393), 21},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"tale", 120},
- {""}, {""},
+ {pool_offset(405), 368},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"arabic", 80},
- {""}, {""},
+ {pool_offset(417), 446},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"l", 23},
+ {pool_offset(423), 140},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"nl", 36},
+ {pool_offset(429), 155},
- {"zl", 52},
- {""},
+ {pool_offset(430), 295},
+ {-1}, {-1}, {-1}, {-1},
- {"insyriac", 251},
- {""},
+ {pool_offset(435), 112},
+ {-1},
- {"samr", 155},
- {""},
+ {pool_offset(437), 149},
+ {-1},
- {"merc", 170},
- {""},
+ {pool_offset(439), 486},
+ {-1},
- {"inlinearbideograms", 399},
- {""}, {""},
+ {pool_offset(441), 467},
- {"samaritan", 155},
+ {pool_offset(442), 107},
+ {-1},
- {"lt", 28},
- {""}, {""},
+ {pool_offset(444), 154},
+ {-1}, {-1},
- {"insharada", 443},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(447), 489},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmeeteimayekextensions", 376},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(453), 421},
+ {-1}, {-1}, {-1},
- {"inruminumeralsymbols", 437},
- {""}, {""},
+ {pool_offset(457), 425},
- {"miao", 172},
+ {pool_offset(458), 415},
- {"inlatinextendede", 378},
- {""}, {""}, {""},
+ {pool_offset(459), 103},
+ {-1}, {-1},
- {"zinh", 114},
- {""}, {""}, {""},
+ {pool_offset(462), 54},
- {"inahom", 453},
- {""},
+ {pool_offset(463), 113},
+ {-1},
- {"incherokee", 276},
+ {pool_offset(465), 402},
+ {-1}, {-1},
- {"han", 109},
- {""}, {""},
+ {pool_offset(468), 118},
- {"hani", 109},
+ {pool_offset(469), 34},
- {"inosmanya", 414},
+ {pool_offset(470), 513},
+ {-1},
- {"inmiscellaneoustechnical", 314},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(472), 252},
- {"cham", 150},
- {""},
+ {pool_offset(473), 255},
+ {-1}, {-1}, {-1},
- {"inmahajani", 442},
+ {pool_offset(477), 6},
- {"osma", 124},
- {""}, {""},
+ {pool_offset(478), 543},
+ {-1},
- {"manichaean", 185},
+ {pool_offset(480), 43},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"term", 211},
- {""},
+ {pool_offset(487), 527},
- {"sinh", 92},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(488), 85},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"cntrl", 3},
- {""}, {""}, {""}, {""},
+ {pool_offset(495), 111},
- {"chakma", 169},
+ {pool_offset(496), 408},
+ {-1},
- {"insinhala", 267},
- {""}, {""}, {""},
+ {pool_offset(498), 111},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"tamil", 88},
+ {pool_offset(511), 351},
+ {-1}, {-1}, {-1},
- {"inethiopic", 274},
- {""}, {""},
+ {pool_offset(515), 192},
- {"connectorpunctuation", 39},
+ {pool_offset(516), 432},
- {"shavian", 123},
- {""}, {""}, {""},
+ {pool_offset(517), 538},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"joinc", 207},
+ {pool_offset(526), 458},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inenclosedalphanumerics", 317},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(532), 536},
- {"ahex", 214},
+ {pool_offset(533), 165},
+ {-1}, {-1},
- {"inlatinextendedadditional", 304},
+ {pool_offset(536), 484},
+ {-1}, {-1},
- {"lineara", 183},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(539), 255},
+ {-1}, {-1}, {-1},
- {"inenclosedcjklettersandmonths", 350},
+ {pool_offset(543), 131},
+ {-1},
- {"hex", 213},
- {""}, {""},
+ {pool_offset(545), 430},
+ {-1}, {-1},
- {"thai", 93},
+ {pool_offset(548), 48},
+ {-1}, {-1}, {-1}, {-1},
- {"mahj", 184},
- {""}, {""}, {""},
+ {pool_offset(553), 507},
+ {-1}, {-1},
- {"math", 55},
- {""}, {""},
+ {pool_offset(556), 206},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"ll", 25},
+ {pool_offset(564), 81},
- {"thaa", 82},
- {""},
+ {pool_offset(565), 526},
+ {-1},
- {"hatran", 201},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(567), 33},
+ {-1},
- {"mahajani", 184},
+ {pool_offset(569), 435},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"insinhalaarchaicnumbers", 444},
- {""},
+ {pool_offset(580), 292},
- {"taitham", 151},
+ {pool_offset(581), 256},
- {"thaana", 82},
- {""}, {""}, {""}, {""},
+ {pool_offset(582), 392},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"ethi", 99},
+ {pool_offset(588), 150},
- {"inenclosedalphanumericsupplement", 481},
- {""}, {""}, {""}, {""},
+ {pool_offset(589), 427},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"meroiticcursive", 170},
+ {pool_offset(597), 194},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inideographicdescriptioncharacters", 340},
- {""}, {""}, {""},
+ {pool_offset(604), 321},
+ {-1},
- {"terminalpunctuation", 211},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(606), 109},
+ {-1}, {-1}, {-1}, {-1},
- {"inemoticons", 484},
- {""}, {""}, {""}, {""},
+ {pool_offset(611), 468},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"intifinagh", 334},
- {""},
+ {pool_offset(619), 376},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"asciihexdigit", 214},
- {""}, {""}, {""}, {""},
+ {pool_offset(626), 224},
+ {-1}, {-1}, {-1},
- {"tifinagh", 131},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(630), 193},
- {"inearlydynasticcuneiform", 458},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(631), 132},
- {"inopticalcharacterrecognition", 316},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(632), 549},
+ {-1}, {-1},
- {"loe", 230},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(635), 281},
- {"titlecaseletter", 28},
- {""}, {""},
+ {pool_offset(636), 391},
+ {-1}, {-1}, {-1}, {-1},
- {"inscriptionalparthian", 162},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
+ {pool_offset(641), 101},
- {"oriya", 87},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(642), 222},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {"hira", 106},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(656), 13},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {"sora", 174},
+ {pool_offset(670), 227},
- {"mero", 171},
- {""}, {""}, {""}, {""},
+ {pool_offset(671), 26},
- {"inarrows", 312},
- {""},
+ {pool_offset(672), 457},
+ {-1}, {-1},
- {"inhiragana", 342},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(675), 194},
- {"no", 37},
+ {pool_offset(676), 518},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {"inmahjongtiles", 478},
- {""}, {""}, {""},
+ {pool_offset(690), 99},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"innko", 254},
- {""}, {""},
+ {pool_offset(699), 531},
+ {-1},
- {"co", 21},
+ {pool_offset(701), 27},
+ {-1},
- {"cher", 100},
- {""}, {""},
+ {pool_offset(703), 315},
+ {-1},
- {"inmro", 462},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(705), 172},
+ {-1},
- {"common", 74},
+ {pool_offset(707), 349},
+ {-1}, {-1},
- {"cwcm", 65},
- {""}, {""}, {""},
+ {pool_offset(710), 344},
- {"inmiao", 465},
- {""}, {""}, {""}, {""},
+ {pool_offset(711), 84},
- {"inscriptionalpahlavi", 163},
- {""}, {""},
+ {pool_offset(712), 512},
+ {-1}, {-1}, {-1},
- {"inmathematicalalphanumericsymbols", 474},
+ {pool_offset(716), 357},
+ {-1}, {-1}, {-1}, {-1},
- {"so", 50},
- {""},
+ {pool_offset(721), 535},
+ {-1},
- {"hano", 116},
+ {pool_offset(723), 249},
- {"tirh", 197},
- {""}, {""}, {""},
+ {pool_offset(724), 389},
- {"inhatran", 422},
+ {pool_offset(725), 102},
+ {-1}, {-1}, {-1},
- {"inolchiki", 298},
+ {pool_offset(729), 260},
- {"ahom", 199},
- {""},
+ {pool_offset(730), 265},
- {"di", 70},
+ {pool_offset(731), 127},
- {"hatr", 201},
- {""},
+ {pool_offset(732), 314},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inogham", 278},
- {""}, {""}, {""}, {""},
+ {pool_offset(738), 343},
+ {-1},
- {"intirhuta", 449},
- {""}, {""}, {""}, {""},
+ {pool_offset(740), 212},
- {"inmodi", 451},
- {""},
+ {pool_offset(741), 28},
- {"idc", 67},
+ {pool_offset(742), 213},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"mand", 168},
- {""}, {""}, {""},
+ {pool_offset(753), 126},
+ {-1}, {-1},
- {"inmandaic", 256},
+ {pool_offset(756), 7},
- {"dia", 217},
+ {pool_offset(757), 213},
- {"cwcf", 64},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(758), 406},
- {"xidc", 69},
- {""}, {""},
+ {pool_offset(759), 318},
- {"sind", 196},
+ {pool_offset(760), 195},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"newline", 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(767), 28},
+ {-1}, {-1},
- {"mend", 186},
- {""}, {""}, {""},
+ {pool_offset(770), 223},
+ {-1}, {-1},
- {"newtailue", 129},
- {""}, {""},
+ {pool_offset(773), 25},
+ {-1}, {-1}, {-1}, {-1},
- {"inshorthandformatcontrols", 468},
- {""}, {""}, {""},
+ {pool_offset(778), 519},
- {"anatolianhieroglyphs", 200},
+ {pool_offset(779), 248},
+ {-1},
- {"xids", 68},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(781), 521},
- {"ids", 66},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(782), 179},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"innewtailue", 289},
+ {pool_offset(791), 364},
+ {-1},
- {"insylotinagri", 363},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(793), 29},
- {"insundanese", 295},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(794), 438},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"lo", 27},
- {""}, {""}, {""},
+ {pool_offset(801), 25},
+ {-1}, {-1}, {-1}, {-1},
- {"indominotiles", 479},
+ {pool_offset(806), 215},
- {"inlao", 269},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(807), 289},
- {"lao", 94},
+ {pool_offset(808), 453},
- {"laoo", 94},
+ {pool_offset(809), 478},
+ {-1}, {-1}, {-1}, {-1},
- {"mongolian", 105},
- {""}, {""},
+ {pool_offset(814), 88},
+ {-1}, {-1},
- {"cwt", 63},
- {""},
+ {pool_offset(817), 2},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"idst", 224},
+ {pool_offset(823), 480},
- {"format", 19},
- {""}, {""},
+ {pool_offset(824), 155},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"lineseparator", 52},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(833), 500},
+ {-1}, {-1}, {-1}, {-1},
- {"letter", 23},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(838), 394},
- {"idcontinue", 67},
- {""}, {""},
+ {pool_offset(839), 79},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inanatolianhieroglyphs", 460},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(846), 105},
+ {-1}, {-1},
- {"inlydian", 424},
- {""},
+ {pool_offset(849), 443},
+ {-1}, {-1}, {-1}, {-1},
- {"pi", 43},
+ {pool_offset(854), 334},
+ {-1}, {-1},
- {"nchar", 221},
- {""}, {""}, {""}, {""},
+ {pool_offset(857), 445},
+ {-1},
- {"inspacingmodifierletters", 243},
+ {pool_offset(859), 197},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"oalpha", 215},
- {""}, {""},
+ {pool_offset(866), 38},
- {"indeseret", 412},
- {""},
+ {pool_offset(867), 80},
+ {-1}, {-1},
- {"pc", 39},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(870), 268},
- {"xdigit", 11},
- {""},
+ {pool_offset(871), 101},
+ {-1}, {-1}, {-1},
- {"inphaistosdisc", 403},
+ {pool_offset(875), 464},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"joincontrol", 207},
+ {pool_offset(884), 152},
- {"inlowsurrogates", 385},
- {""},
+ {pool_offset(885), 109},
+ {-1}, {-1}, {-1}, {-1},
- {"mro", 188},
+ {pool_offset(890), 100},
+ {-1},
- {"mroo", 188},
- {""}, {""}, {""},
+ {pool_offset(892), 466},
- {"xidstart", 68},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(893), 180},
+ {-1}, {-1}, {-1}, {-1},
- {"wara", 198},
- {""}, {""},
+ {pool_offset(898), 325},
+ {-1},
- {"inwarangciti", 454},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(900), 298},
+ {-1},
- {"ps", 45},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(902), 53},
+ {-1}, {-1}, {-1}, {-1},
- {"pe", 41},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(907), 127},
- {"cwl", 61},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(908), 71},
+ {-1}, {-1}, {-1},
- {"incoptic", 332},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(912), 440},
+ {-1}, {-1}, {-1},
- {"diacritic", 217},
- {""}, {""},
+ {pool_offset(916), 429},
- {"pf", 42},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(917), 311},
+ {-1}, {-1}, {-1}, {-1},
- {"space", 9},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(922), 52},
- {"hanunoo", 116},
- {""}, {""},
+ {pool_offset(923), 52},
+ {-1}, {-1}, {-1}, {-1},
- {"incyrillicextendeda", 336},
- {""}, {""}, {""},
+ {pool_offset(928), 370},
+ {-1},
- {"odi", 227},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(930), 201},
- {"modi", 187},
+ {pool_offset(931), 142},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"oidc", 232},
+ {pool_offset(937), 58},
- {"incopticepactnumbers", 406},
- {""},
+ {pool_offset(938), 46},
+ {-1},
- {"palm", 191},
+ {pool_offset(940), 45},
+ {-1}, {-1},
- {"insundanesesupplement", 299},
+ {pool_offset(943), 404},
- {"patws", 235},
- {""}, {""}, {""},
+ {pool_offset(944), 359},
+ {-1}, {-1},
- {"inolditalic", 407},
+ {pool_offset(947), 110},
+ {-1}, {-1}, {-1},
- {"inlepcha", 297},
+ {pool_offset(951), 83},
- {"shaw", 123},
- {""},
+ {pool_offset(952), 102},
- {"omath", 212},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(953), 181},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"alpha", 1},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(962), 16},
+ {-1}, {-1},
- {"oids", 231},
- {""}, {""}, {""},
+ {pool_offset(965), 474},
- {"control", 18},
+ {pool_offset(966), 41},
+ {-1}, {-1},
- {"ideo", 216},
+ {pool_offset(969), 211},
- {"lepc", 141},
+ {pool_offset(970), 221},
- {"psalterpahlavi", 194},
+ {pool_offset(971), 141},
- {"dsrt", 113},
- {""},
+ {pool_offset(972), 304},
- {"otheridcontinue", 232},
- {""}, {""}, {""},
+ {pool_offset(973), 85},
+ {-1}, {-1},
- {"inpalmyrene", 420},
+ {pool_offset(976), 286},
- {"decimalnumber", 35},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(977), 50},
+ {-1}, {-1}, {-1}, {-1},
- {"noncharactercodepoint", 221},
+ {pool_offset(982), 116},
- {"idstart", 66},
+ {pool_offset(983), 114},
+ {-1}, {-1}, {-1},
- {"otheralphabetic", 215},
+ {pool_offset(987), 157},
+ {-1},
- {"letternumber", 36},
- {""}, {""}, {""}, {""},
+ {pool_offset(989), 88},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"dash", 208},
- {""}, {""},
+ {pool_offset(995), 119},
+ {-1},
- {"xidcontinue", 69},
- {""}, {""}, {""},
+ {pool_offset(997), 300},
+ {-1},
- {"finalpunctuation", 42},
+ {pool_offset(999), 324},
- {"extender", 218},
- {""}, {""}, {""},
+ {pool_offset(1000), 252},
+ {-1}, {-1},
- {"siddham", 195},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1003), 117},
- {"inoldturkic", 435},
- {""}, {""},
+ {pool_offset(1004), 522},
+ {-1}, {-1},
- {"sharada", 173},
- {""}, {""},
+ {pool_offset(1007), 130},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"whitespace", 205},
- {""}, {""}, {""}, {""},
+ {pool_offset(1020), 293},
+ {-1}, {-1}, {-1},
- {"inmodifiertoneletters", 361},
- {""},
+ {pool_offset(1024), 31},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"radical", 225},
- {""},
+ {pool_offset(1034), 66},
- {"canadianaboriginal", 101},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1035), 472},
- {"inethiopicextendeda", 377},
+ {pool_offset(1036), 19},
+ {-1},
- {"imperialaramaic", 160},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1038), 413},
+ {-1},
- {"perm", 193},
+ {pool_offset(1040), 62},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"deseret", 113},
- {""}, {""}, {""}, {""},
+ {pool_offset(1048), 17},
+ {-1},
- {"casedletter", 24},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
+ {pool_offset(1050), 345},
+ {-1},
- {"inimperialaramaic", 419},
- {""}, {""},
+ {pool_offset(1052), 16},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"otheridstart", 231},
- {""}, {""}, {""}, {""},
+ {pool_offset(1060), 479},
- {"prti", 162},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1061), 3},
- {"cprt", 125},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1062), 256},
+ {-1}, {-1}, {-1}, {-1},
- {"othersymbol", 50},
- {""}, {""}, {""},
+ {pool_offset(1067), 11},
+ {-1},
- {"coptic", 128},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1069), 201},
+ {-1},
- {"otherlowercase", 219},
+ {pool_offset(1071), 73},
- {"phnx", 137},
- {""}, {""}, {""},
+ {pool_offset(1072), 115},
- {"inphoenician", 423},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1073), 483},
+ {-1}, {-1}, {-1},
- {"incaucasianalbanian", 416},
+ {pool_offset(1077), 49},
+ {-1}, {-1}, {-1}, {-1},
- {"inlatin1supplement", 239},
- {""}, {""}, {""},
+ {pool_offset(1082), 26},
+ {-1}, {-1}, {-1},
- {"xpeo", 133},
- {""}, {""}, {""},
+ {pool_offset(1086), 270},
- {"ininscriptionalparthian", 432},
+ {pool_offset(1087), 342},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"ininscriptionalpahlavi", 433},
+ {pool_offset(1100), 216},
- {"other", 17},
+ {pool_offset(1101), 106},
- {"privateuse", 21},
- {""}, {""}, {""}, {""},
+ {pool_offset(1102), 332},
- {"othernumber", 37},
- {""}, {""}, {""}, {""},
+ {pool_offset(1103), 114},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"inenclosedideographicsupplement", 482},
- {""},
+ {pool_offset(1125), 211},
+ {-1},
- {"copt", 128},
- {""}, {""}, {""}, {""},
+ {pool_offset(1127), 183},
- {"print", 7},
- {""},
+ {pool_offset(1128), 15},
+ {-1}, {-1}, {-1},
- {"cuneiform", 136},
+ {pool_offset(1132), 115},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"olditalic", 111},
+ {pool_offset(1138), 272},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"xsux", 136},
- {""}, {""}, {""},
+ {pool_offset(1145), 407},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmongolian", 285},
- {""}, {""}, {""}, {""},
+ {pool_offset(1153), 454},
+ {-1}, {-1},
- {"inancientgreekmusicalnotation", 471},
+ {pool_offset(1156), 146},
- {"sundanese", 140},
+ {pool_offset(1157), 80},
+ {-1}, {-1},
- {"inoldnortharabian", 429},
- {""},
+ {pool_offset(1160), 367},
+ {-1}, {-1}, {-1}, {-1},
- {"patternsyntax", 236},
- {""}, {""},
+ {pool_offset(1165), 144},
- {"inherited", 114},
+ {pool_offset(1166), 207},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"ingrantha", 448},
+ {pool_offset(1172), 81},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inphoneticextensions", 301},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1179), 74},
- {"saurashtra", 144},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1180), 247},
+ {-1}, {-1}, {-1}, {-1},
- {"inancientgreeknumbers", 401},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1185), 133},
+ {-1}, {-1}, {-1},
- {"shrd", 173},
- {""}, {""}, {""},
+ {pool_offset(1189), 208},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inoldsoutharabian", 428},
+ {pool_offset(1198), 380},
+ {-1}, {-1}, {-1}, {-1},
- {"innabataean", 421},
+ {pool_offset(1203), 29},
+ {-1},
- {"inalphabeticpresentationforms", 388},
+ {pool_offset(1205), 34},
+ {-1},
- {"spaceseparator", 54},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1207), 159},
+ {-1},
- {"olower", 219},
- {""},
+ {pool_offset(1209), 229},
- {"ingeneralpunctuation", 306},
+ {pool_offset(1210), 170},
+ {-1},
- {"inunifiedcanadianaboriginalsyllabics", 277},
- {""},
+ {pool_offset(1212), 547},
- {"bamum", 157},
- {""}, {""},
+ {pool_offset(1213), 66},
+ {-1}, {-1}, {-1},
- {"inarabic", 250},
- {""}, {""}, {""},
+ {pool_offset(1217), 82},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"phli", 163},
+ {pool_offset(1223), 533},
+ {-1}, {-1}, {-1},
- {"inphoneticextensionssupplement", 302},
- {""},
+ {pool_offset(1227), 170},
- {"patternwhitespace", 235},
- {""},
+ {pool_offset(1228), 185},
- {"inbasiclatin", 238},
- {""},
+ {pool_offset(1229), 187},
- {"othermath", 212},
+ {pool_offset(1230), 209},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"idsbinaryoperator", 223},
+ {pool_offset(1239), 166},
- {"inmathematicaloperators", 313},
+ {pool_offset(1240), 482},
+ {-1},
- {"multani", 202},
+ {pool_offset(1242), 451},
- {"ingujarati", 261},
- {""}, {""}, {""}, {""},
+ {pool_offset(1243), 214},
- {"inelbasan", 415},
+ {pool_offset(1244), 110},
+ {-1},
- {"inoldhungarian", 436},
+ {pool_offset(1246), 348},
+ {-1}, {-1}, {-1},
- {"innumberforms", 311},
+ {pool_offset(1250), 89},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"nd", 35},
- {""},
+ {pool_offset(1256), 333},
+ {-1},
- {"yi", 110},
+ {pool_offset(1258), 195},
+ {-1},
- {"lisu", 156},
- {""}, {""},
+ {pool_offset(1260), 175},
+ {-1}, {-1},
- {"yiii", 110},
- {""},
+ {pool_offset(1263), 190},
- {"inpsalterpahlavi", 434},
- {""}, {""}, {""},
+ {pool_offset(1264), 106},
- {"tagbanwa", 118},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1265), 164},
- {"bass", 177},
- {""}, {""}, {""}, {""},
+ {pool_offset(1266), 164},
+ {-1}, {-1}, {-1},
- {"nbat", 190},
+ {pool_offset(1270), 186},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inbyzantinemusicalsymbols", 469},
- {""},
+ {pool_offset(1276), 488},
+ {-1}, {-1}, {-1},
- {"closepunctuation", 41},
- {""},
+ {pool_offset(1280), 452},
+ {-1}, {-1},
- {"tfng", 131},
+ {pool_offset(1283), 8},
- {"otherletter", 27},
- {""}, {""}, {""},
+ {pool_offset(1284), 123},
+ {-1},
- {"sd", 229},
- {""}, {""},
+ {pool_offset(1286), 89},
- {"lowercase", 57},
+ {pool_offset(1287), 157},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"sidd", 195},
- {""},
+ {pool_offset(1293), 33},
+ {-1}, {-1}, {-1},
- {"nabataean", 190},
- {""},
+ {pool_offset(1297), 234},
+ {-1},
- {"lepcha", 141},
+ {pool_offset(1299), 465},
+ {-1},
- {"inarabicpresentationformsa", 389},
- {""},
+ {pool_offset(1301), 237},
+ {-1},
- {"modifierletter", 26},
+ {pool_offset(1303), 31},
- {"intags", 496},
+ {pool_offset(1304), 386},
- {"mult", 202},
- {""}, {""},
+ {pool_offset(1305), 545},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"insiddham", 450},
+ {pool_offset(1314), 534},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"talu", 129},
- {""}, {""}, {""}, {""},
+ {pool_offset(1320), 161},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"cased", 59},
- {""},
+ {pool_offset(1331), 122},
+ {-1},
- {"intibetan", 270},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1333), 105},
+ {-1}, {-1}, {-1},
- {"separator", 51},
- {""},
+ {pool_offset(1337), 382},
- {"runic", 103},
+ {pool_offset(1338), 84},
- {"inmiscellaneousmathematicalsymbolsb", 327},
- {""}, {""}, {""}, {""},
+ {pool_offset(1339), 214},
+ {-1}, {-1}, {-1},
- {"linb", 121},
+ {pool_offset(1343), 40},
- {"inbraillepatterns", 325},
+ {pool_offset(1344), 72},
- {"oldpersian", 133},
- {""},
+ {pool_offset(1345), 237},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inugaritic", 410},
+ {pool_offset(1360), 502},
+ {-1}, {-1},
- {"telu", 89},
- {""},
+ {pool_offset(1363), 537},
+ {-1}, {-1},
- {"limb", 119},
- {""},
+ {pool_offset(1366), 431},
+ {-1}, {-1}, {-1}, {-1},
- {"oldpermic", 193},
- {""},
+ {pool_offset(1371), 469},
- {"bali", 135},
+ {pool_offset(1372), 350},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inmyanmarextendedb", 372},
+ {pool_offset(1390), 225},
+ {-1}, {-1}, {-1}, {-1},
- {"tibt", 95},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1395), 259},
+ {-1},
- {"saur", 144},
- {""}, {""}, {""},
+ {pool_offset(1397), 476},
- {"po", 44},
- {""},
+ {pool_offset(1398), 103},
- {"tibetan", 95},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1399), 219},
+ {-1}, {-1}, {-1}, {-1},
- {"insaurashtra", 366},
- {""}, {""}, {""},
+ {pool_offset(1404), 125},
+ {-1}, {-1},
- {"inbalinese", 294},
+ {pool_offset(1407), 226},
- {"elba", 179},
- {""}, {""}, {""}, {""},
+ {pool_offset(1408), 30},
+ {-1}, {-1},
- {"bengali", 84},
+ {pool_offset(1411), 176},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"gran", 180},
- {""}, {""}, {""},
+ {pool_offset(1420), 30},
+ {-1}, {-1},
- {"phoenician", 137},
- {""},
+ {pool_offset(1423), 241},
+ {-1},
- {"ingurmukhi", 260},
- {""}, {""},
+ {pool_offset(1425), 327},
+ {-1}, {-1},
- {"caseignorable", 60},
- {""}, {""}, {""}, {""},
+ {pool_offset(1428), 550},
+ {-1}, {-1}, {-1},
- {"lyci", 147},
- {""},
+ {pool_offset(1432), 450},
+ {-1}, {-1},
- {"inyijinghexagramsymbols", 353},
- {""},
+ {pool_offset(1435), 221},
+ {-1}, {-1},
- {"mlym", 91},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1438), 218},
+ {-1},
- {"lycian", 147},
- {""}, {""}, {""}, {""},
+ {pool_offset(1440), 493},
- {"elbasan", 179},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1441), 444},
- {"balinese", 135},
+ {pool_offset(1442), 448},
+ {-1}, {-1}, {-1},
- {"narb", 189},
- {""},
+ {pool_offset(1446), 441},
+ {-1},
- {"brai", 126},
- {""}, {""},
+ {pool_offset(1448), 510},
+ {-1}, {-1},
- {"insuttonsignwriting", 475},
- {""},
+ {pool_offset(1451), 516},
+ {-1}, {-1},
- {"insorasompeng", 440},
+ {pool_offset(1454), 374},
- {"malayalam", 91},
- {""}, {""},
+ {pool_offset(1455), 216},
+ {-1}, {-1},
- {"arab", 80},
- {""},
+ {pool_offset(1458), 147},
+ {-1}, {-1},
- {"brahmi", 167},
- {""},
+ {pool_offset(1461), 56},
+ {-1}, {-1}, {-1}, {-1},
- {"incountingrodnumerals", 473},
- {""}, {""}, {""},
+ {pool_offset(1466), 125},
+ {-1},
- {"rjng", 146},
+ {pool_offset(1468), 147},
+ {-1},
- {"mong", 105},
- {""}, {""}, {""},
+ {pool_offset(1470), 405},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"incyrillicsupplement", 247},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1478), 307},
+ {-1}, {-1}, {-1},
- {"ogam", 102},
- {""},
+ {pool_offset(1482), 90},
- {"sarb", 161},
+ {pool_offset(1483), 47},
+ {-1}, {-1}, {-1},
- {"lower", 6},
- {""},
+ {pool_offset(1487), 90},
+ {-1}, {-1},
- {"inrejang", 369},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1490), 123},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"hmng", 181},
- {""}, {""},
+ {pool_offset(1497), 93},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"tirhuta", 197},
+ {pool_offset(1504), 540},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"hang", 98},
- {""}, {""}, {""}, {""},
+ {pool_offset(1520), 93},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"wspace", 205},
- {""}, {""}, {""}, {""},
+ {pool_offset(1528), 390},
+ {-1},
- {"inlatinextendedd", 362},
- {""}, {""},
+ {pool_offset(1530), 275},
- {"invai", 358},
+ {pool_offset(1531), 51},
+ {-1}, {-1},
- {"incherokeesupplement", 379},
- {""},
+ {pool_offset(1534), 15},
+ {-1}, {-1},
- {"mymr", 96},
- {""}, {""}, {""},
+ {pool_offset(1537), 461},
+ {-1},
- {"vai", 143},
+ {pool_offset(1539), 44},
- {"vaii", 143},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(1540), 462},
+ {-1}, {-1},
- {"ethiopic", 99},
- {""},
+ {pool_offset(1543), 97},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"sylotinagri", 132},
- {""}, {""}, {""}, {""},
+ {pool_offset(1549), 64},
+ {-1},
- {"myanmar", 96},
- {""},
+ {pool_offset(1551), 56},
- {"syrc", 81},
- {""},
+ {pool_offset(1552), 247},
+ {-1}, {-1},
- {"inbrahmi", 438},
- {""}, {""}, {""},
+ {pool_offset(1555), 163},
+ {-1},
- {"mathsymbol", 49},
- {""},
+ {pool_offset(1557), 21},
- {"runr", 103},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1558), 477},
- {"inshavian", 413},
+ {pool_offset(1559), 175},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"gothic", 112},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1569), 190},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"syriac", 81},
+ {pool_offset(1580), 64},
- {"p", 38},
- {""},
+ {pool_offset(1581), 162},
- {"zp", 53},
+ {pool_offset(1582), 0},
+ {-1},
- {"induployan", 467},
- {""},
+ {pool_offset(1584), 78},
+ {-1},
- {"vs", 234},
- {""}, {""},
+ {pool_offset(1586), 229},
- {"ingreekandcoptic", 245},
+ {pool_offset(1587), 169},
+ {-1},
- {"ingothic", 408},
- {""}, {""},
+ {pool_offset(1589), 263},
- {"lowercaseletter", 25},
- {""}, {""}, {""},
+ {pool_offset(1590), 417},
+ {-1}, {-1},
- {"inoriya", 262},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1593), 59},
- {"grext", 71},
+ {pool_offset(1594), 104},
+ {-1}, {-1},
- {"linearb", 121},
+ {pool_offset(1597), 546},
- {"inyiradicals", 356},
- {""},
+ {pool_offset(1598), 23},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inethiopicsupplement", 275},
+ {pool_offset(1605), 236},
+ {-1}, {-1},
- {"inletterlikesymbols", 310},
+ {pool_offset(1608), 514},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"ingeometricshapes", 320},
- {""},
+ {pool_offset(1618), 288},
+ {-1}, {-1}, {-1},
- {"java", 158},
+ {pool_offset(1622), 253},
+ {-1},
- {"inblockelements", 319},
- {""},
+ {pool_offset(1624), 108},
+ {-1},
- {"number", 34},
+ {pool_offset(1626), 227},
+ {-1},
- {"incombininghalfmarks", 392},
+ {pool_offset(1628), 396},
+ {-1},
- {"inbassavah", 463},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1630), 178},
+ {-1}, {-1},
- {"inlinearbsyllabary", 398},
- {""},
+ {pool_offset(1633), 198},
+ {-1}, {-1},
- {"osmanya", 124},
- {""}, {""}, {""},
+ {pool_offset(1636), 83},
+ {-1},
- {"avst", 153},
- {""}, {""}, {""}, {""},
+ {pool_offset(1638), 234},
+ {-1},
- {"hexdigit", 213},
- {""}, {""}, {""},
+ {pool_offset(1640), 32},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"injavanese", 371},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1659), 108},
+ {-1},
- {"cyrl", 77},
+ {pool_offset(1661), 180},
- {"avestan", 153},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1662), 174},
+ {-1}, {-1},
- {"intaiviet", 375},
+ {pool_offset(1665), 439},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"inornamentaldingbats", 485},
+ {pool_offset(1677), 200},
- {"tavt", 152},
- {""}, {""}, {""}, {""},
+ {pool_offset(1678), 1},
+ {-1},
- {"javanese", 158},
+ {pool_offset(1680), 134},
- {"inethiopicextended", 335},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(1681), 134},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inhalfwidthandfullwidthforms", 396},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1687), 377},
+ {-1}, {-1},
- {"ingeorgian", 272},
- {""},
+ {pool_offset(1690), 369},
- {"inarabicmathematicalalphabeticsymbols", 477},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1691), 299},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"hangul", 98},
- {""},
+ {pool_offset(1697), 398},
+ {-1}, {-1}, {-1},
- {"insuperscriptsandsubscripts", 307},
- {""}, {""}, {""}, {""},
+ {pool_offset(1701), 24},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inhanunoo", 281},
- {""},
+ {pool_offset(1708), 449},
- {"inhangulsyllables", 381},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1709), 323},
- {"inoldpersian", 411},
- {""}, {""},
+ {pool_offset(1710), 284},
+ {-1}, {-1},
- {"geor", 97},
- {""},
+ {pool_offset(1713), 238},
- {"otherpunctuation", 44},
- {""},
+ {pool_offset(1714), 220},
+ {-1}, {-1},
- {"inoldpermic", 409},
- {""}, {""}, {""}, {""},
+ {pool_offset(1717), 347},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inalchemicalsymbols", 487},
+ {pool_offset(1726), 385},
+ {-1},
- {"sylo", 132},
- {""},
+ {pool_offset(1728), 158},
+ {-1}, {-1},
- {"hiragana", 106},
- {""}, {""},
+ {pool_offset(1731), 158},
+ {-1},
- {"word", 12},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1733), 5},
+ {-1}, {-1},
- {"inmeroitichieroglyphs", 425},
- {""},
+ {pool_offset(1736), 58},
- {"insmallformvariants", 394},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1737), 78},
+ {-1}, {-1}, {-1},
- {"sund", 140},
+ {pool_offset(1741), 329},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"brah", 167},
- {""},
+ {pool_offset(1749), 485},
- {"insupplementalmathematicaloperators", 328},
+ {pool_offset(1750), 32},
+ {-1}, {-1}, {-1},
- {"glagolitic", 130},
- {""}, {""},
+ {pool_offset(1754), 296},
+ {-1}, {-1}, {-1},
- {"braille", 126},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
+ {pool_offset(1758), 339},
- {"unassigned", 20},
+ {pool_offset(1759), 218},
- {"sgnw", 204},
- {""}, {""}, {""},
+ {pool_offset(1760), 322},
+ {-1}, {-1}, {-1}, {-1},
- {"plrd", 172},
- {""}, {""}, {""},
+ {pool_offset(1765), 437},
- {"hebr", 79},
+ {pool_offset(1766), 360},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"ogham", 102},
- {""}, {""}, {""}, {""},
+ {pool_offset(1776), 418},
+ {-1}, {-1},
- {"cyrillic", 77},
- {""}, {""}, {""},
+ {pool_offset(1779), 491},
+ {-1}, {-1},
- {"orya", 87},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(1782), 241},
- {"grantha", 180},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1783), 35},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"invariationselectors", 390},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1791), 282},
+ {-1},
- {"indingbats", 322},
- {""},
+ {pool_offset(1793), 226},
+ {-1}, {-1}, {-1}, {-1},
- {"inunifiedcanadianaboriginalsyllabicsextended", 286},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1798), 94},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inhanguljamoextendeda", 370},
- {""}, {""},
+ {pool_offset(1807), 517},
+ {-1},
- {"goth", 112},
+ {pool_offset(1809), 320},
+ {-1},
- {"graphemebase", 72},
- {""},
+ {pool_offset(1811), 35},
+ {-1}, {-1}, {-1},
- {"bidic", 206},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1815), 554},
+ {-1},
- {"ogrext", 222},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1817), 301},
+ {-1}, {-1},
- {"idsb", 223},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1820), 358},
+ {-1}, {-1}, {-1},
- {"invariationselectorssupplement", 497},
+ {pool_offset(1824), 361},
+ {-1},
- {"assigned", 16},
- {""}, {""}, {""},
+ {pool_offset(1826), 9},
- {"symbol", 46},
- {""}, {""}, {""},
+ {pool_offset(1827), 217},
+ {-1},
- {"ingreekextended", 305},
- {""},
+ {pool_offset(1829), 67},
- {"pauc", 192},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1830), 24},
+ {-1}, {-1}, {-1},
- {"meroitichieroglyphs", 171},
- {""},
+ {pool_offset(1834), 96},
+ {-1}, {-1},
- {"logicalorderexception", 230},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1837), 303},
- {"incurrencysymbols", 308},
- {""}, {""}, {""},
+ {pool_offset(1838), 419},
- {"inarabicextendeda", 257},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1839), 145},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"insupplementalarrowsc", 489},
- {""}, {""},
+ {pool_offset(1845), 283},
+ {-1}, {-1}, {-1},
- {"insupplementalarrowsa", 324},
- {""},
+ {pool_offset(1849), 94},
- {"inkannada", 265},
- {""}, {""}, {""},
+ {pool_offset(1850), 128},
+ {-1},
- {"kana", 107},
+ {pool_offset(1852), 400},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"phagspa", 138},
- {""}, {""},
+ {pool_offset(1858), 379},
+ {-1},
- {"cakm", 169},
+ {pool_offset(1860), 117},
+ {-1}, {-1},
- {"digit", 4},
- {""}, {""}, {""}, {""},
+ {pool_offset(1863), 328},
+ {-1}, {-1}, {-1}, {-1},
- {"softdotted", 229},
- {""}, {""}, {""},
+ {pool_offset(1868), 363},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inchakma", 441},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
+ {pool_offset(1875), 326},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inphagspa", 365},
- {""}, {""}, {""},
+ {pool_offset(1883), 217},
+ {-1}, {-1}, {-1},
- {"inhighprivateusesurrogates", 384},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
+ {pool_offset(1887), 67},
+ {-1}, {-1}, {-1}, {-1},
- {"warangciti", 198},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1892), 290},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"incjkcompatibilityforms", 393},
- {""}, {""},
+ {pool_offset(1898), 355},
- {"idstrinaryoperator", 224},
- {""},
+ {pool_offset(1899), 520},
+ {-1}, {-1},
- {"incjkcompatibilityideographs", 387},
- {""},
+ {pool_offset(1902), 172},
+ {-1},
- {"inkaithi", 439},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1904), 353},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"takri", 175},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1911), 182},
+ {-1},
- {"phlp", 194},
+ {pool_offset(1913), 523},
+ {-1},
- {"mendekikakui", 186},
- {""},
+ {pool_offset(1915), 330},
- {"punct", 8},
- {""}, {""},
+ {pool_offset(1916), 306},
+ {-1}, {-1}, {-1}, {-1},
- {"otherdefaultignorablecodepoint", 227},
+ {pool_offset(1921), 524},
+ {-1},
- {"inkatakana", 343},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1923), 219},
+ {-1}, {-1}, {-1},
- {"graph", 5},
+ {pool_offset(1927), 403},
+ {-1}, {-1}, {-1},
- {"lydi", 149},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1931), 165},
+ {-1}, {-1},
- {"pd", 40},
- {""},
+ {pool_offset(1934), 258},
+ {-1}, {-1}, {-1},
- {"incjkstrokes", 348},
- {""}, {""},
+ {pool_offset(1938), 76},
+ {-1}, {-1}, {-1}, {-1},
- {"lydian", 149},
- {""}, {""}, {""}, {""},
+ {pool_offset(1943), 193},
+ {-1}, {-1}, {-1}, {-1},
- {"sorasompeng", 174},
- {""},
+ {pool_offset(1948), 92},
+ {-1},
- {"incjkcompatibilityideographssupplement", 495},
- {""}, {""},
+ {pool_offset(1950), 551},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"meeteimayek", 159},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1956), 384},
- {"otheruppercase", 220},
- {""}, {""},
+ {pool_offset(1957), 185},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"kali", 145},
- {""}, {""},
+ {pool_offset(1964), 99},
- {"inhanguljamo", 273},
- {""},
+ {pool_offset(1965), 422},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"ideographic", 216},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1972), 135},
- {"inmeeteimayek", 380},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(1973), 135},
+ {-1}, {-1}, {-1}, {-1},
- {"incyrillicextendedb", 359},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(1978), 37},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"hluw", 200},
- {""}, {""}, {""}, {""},
+ {pool_offset(1987), 166},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"patsyn", 236},
- {""}, {""},
+ {pool_offset(1999), 60},
+ {-1}, {-1}, {-1},
- {"incombiningdiacriticalmarks", 244},
+ {pool_offset(2003), 161},
+ {-1}, {-1},
- {"inarabicsupplement", 252},
- {""},
+ {pool_offset(2006), 515},
+ {-1},
- {"inkanasupplement", 466},
- {""},
+ {pool_offset(2008), 61},
+ {-1},
- {"deprecated", 228},
+ {pool_offset(2010), 259},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"inverticalforms", 391},
- {""}, {""}, {""},
+ {pool_offset(2016), 434},
+ {-1}, {-1}, {-1},
- {"incombiningdiacriticalmarksforsymbols", 309},
- {""}, {""}, {""}, {""},
+ {pool_offset(2020), 159},
+ {-1}, {-1},
- {"indevanagari", 258},
- {""},
+ {pool_offset(2023), 393},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inbuhid", 282},
- {""},
+ {pool_offset(2032), 139},
+ {-1}, {-1}, {-1}, {-1},
- {"alphabetic", 56},
- {""}, {""}, {""},
+ {pool_offset(2037), 139},
- {"oldhungarian", 203},
- {""}, {""},
+ {pool_offset(2038), 12},
+ {-1},
- {"mark", 30},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2040), 177},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inkharoshthi", 427},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2047), 239},
+ {-1}, {-1},
- {"deva", 83},
+ {pool_offset(2050), 182},
- {"invedicextensions", 300},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2051), 233},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"devanagari", 83},
+ {pool_offset(2057), 122},
+ {-1}, {-1}, {-1}, {-1},
- {"incombiningdiacriticalmarkssupplement", 303},
- {""}, {""}, {""},
+ {pool_offset(2062), 57},
- {"ingeometricshapesextended", 488},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2063), 192},
- {"inkhmer", 284},
- {""}, {""}, {""},
+ {pool_offset(2064), 44},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"changeswhencasemapped", 65},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2070), 436},
- {"intakri", 452},
- {""}, {""},
+ {pool_offset(2071), 455},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"dep", 228},
+ {pool_offset(2077), 238},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"takr", 175},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2084), 171},
- {"changeswhencasefolded", 64},
- {""},
+ {pool_offset(2085), 132},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"kaithi", 165},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(2092), 242},
+ {-1}, {-1},
- {"phag", 138},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(2095), 312},
+ {-1},
- {"inpahawhhmong", 464},
- {""},
+ {pool_offset(2097), 242},
+ {-1},
- {"bidicontrol", 206},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2099), 243},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inkhojki", 445},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2109), 199},
- {"bamu", 157},
+ {pool_offset(2110), 77},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"inbamum", 360},
+ {pool_offset(2121), 366},
+ {-1}, {-1},
- {"changeswhentitlecased", 63},
- {""}, {""},
+ {pool_offset(2124), 395},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inkhmersymbols", 290},
+ {pool_offset(2133), 87},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"uideo", 226},
+ {pool_offset(2144), 87},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
- {"lu", 29},
- {""}, {""},
+ {pool_offset(2158), 246},
+ {-1},
- {"kthi", 165},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2160), 42},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"limbu", 119},
- {""},
+ {pool_offset(2178), 387},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"defaultignorablecodepoint", 70},
- {""}, {""}, {""},
+ {pool_offset(2187), 228},
- {"inplayingcards", 480},
- {""},
+ {pool_offset(2188), 409},
+ {-1},
- {"inhebrew", 249},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2190), 388},
- {"modifiersymbol", 48},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2191), 235},
+ {-1}, {-1}, {-1}, {-1},
- {"ugaritic", 122},
- {""}, {""}, {""}, {""},
+ {pool_offset(2196), 151},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inlisu", 357},
+ {pool_offset(2213), 362},
- {"inglagolitic", 330},
- {""},
+ {pool_offset(2214), 162},
+ {-1}, {-1},
- {"inprivateusearea", 386},
- {""}, {""},
+ {pool_offset(2217), 285},
+ {-1}, {-1}, {-1}, {-1},
- {"olck", 142},
- {""}, {""}, {""},
+ {pool_offset(2222), 548},
- {"inbengali", 259},
- {""}, {""},
+ {pool_offset(2223), 36},
+ {-1}, {-1}, {-1}, {-1},
- {"olchiki", 142},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2228), 240},
- {"caucasianalbanian", 176},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2229), 317},
+ {-1}, {-1},
- {"oldturkic", 164},
+ {pool_offset(2232), 100},
- {"beng", 84},
+ {pool_offset(2233), 246},
+ {-1}, {-1}, {-1}, {-1},
- {"intelugu", 264},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2238), 178},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"hyphen", 209},
- {""}, {""},
+ {pool_offset(2245), 269},
+ {-1}, {-1}, {-1},
- {"inbuginese", 291},
- {""}, {""}, {""},
+ {pool_offset(2249), 200},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"intagalog", 280},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2255), 337},
+ {-1}, {-1},
- {"cypriot", 125},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2258), 48},
- {"inlimbu", 287},
- {""}, {""},
+ {pool_offset(2259), 264},
+ {-1},
- {"graphemeextend", 71},
- {""}, {""},
+ {pool_offset(2261), 470},
+ {-1},
- {"tagb", 118},
- {""}, {""}, {""},
+ {pool_offset(2263), 91},
- {"incypriotsyllabary", 418},
- {""}, {""}, {""},
+ {pool_offset(2264), 167},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"intagbanwa", 283},
- {""}, {""}, {""}, {""},
+ {pool_offset(2286), 176},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"inaegeannumbers", 400},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2299), 65},
+ {-1},
- {"inkatakanaphoneticextensions", 349},
+ {pool_offset(2301), 287},
+ {-1}, {-1}, {-1},
- {"glag", 130},
+ {pool_offset(2305), 187},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"combiningmark", 30},
+ {pool_offset(2311), 496},
+ {-1}, {-1}, {-1},
- {"palmyrene", 191},
- {""},
+ {pool_offset(2315), 65},
+ {-1}, {-1}, {-1},
- {"khmr", 104},
- {""}, {""}, {""},
+ {pool_offset(2319), 231},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"khar", 134},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2325), 137},
+ {-1}, {-1}, {-1}, {-1},
- {"ugar", 122},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2330), 97},
+ {-1}, {-1},
- {"inarabicpresentationformsb", 395},
- {""}, {""}, {""},
+ {pool_offset(2333), 179},
+ {-1}, {-1},
- {"insupplementaryprivateuseareaa", 498},
- {""},
+ {pool_offset(2336), 137},
+ {-1}, {-1}, {-1}, {-1},
- {"variationselector", 234},
- {""}, {""}, {""}, {""},
+ {pool_offset(2341), 336},
- {"nko", 139},
+ {pool_offset(2342), 262},
+ {-1}, {-1}, {-1}, {-1},
- {"nkoo", 139},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2347), 129},
- {"inbamumsupplement", 461},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2348), 426},
+ {-1}, {-1},
- {"tglg", 115},
- {""},
+ {pool_offset(2351), 397},
- {"any", 15},
+ {pool_offset(2352), 191},
+ {-1}, {-1}, {-1}, {-1},
- {"enclosingmark", 32},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2357), 184},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"gujr", 86},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2376), 428},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
- {"changeswhenlowercased", 61},
- {""}, {""}, {""}, {""},
+ {pool_offset(2389), 50},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
- {"knda", 90},
+ {pool_offset(2409), 261},
+ {-1},
- {"hung", 203},
+ {pool_offset(2411), 223},
+ {-1}, {-1},
- {"gujarati", 86},
- {""}, {""},
+ {pool_offset(2414), 116},
+ {-1}, {-1}, {-1}, {-1},
- {"bopo", 108},
- {""}, {""}, {""}, {""},
+ {pool_offset(2419), 331},
+ {-1},
- {"inmendekikakui", 476},
- {""}, {""},
+ {pool_offset(2421), 253},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inbopomofo", 344},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2428), 231},
- {"kharoshthi", 134},
- {""},
+ {pool_offset(2429), 199},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"kannada", 90},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2437), 224},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"khoj", 182},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
+ {pool_offset(2444), 215},
- {"cherokee", 100},
- {""}, {""}, {""},
+ {pool_offset(2445), 4},
+ {-1}, {-1}, {-1},
- {"inlatinextendedb", 241},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2449), 75},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"dashpunctuation", 40},
- {""}, {""},
+ {pool_offset(2455), 463},
- {"dupl", 178},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2456), 225},
+ {-1}, {-1}, {-1},
- {"inyisyllables", 355},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2460), 206},
- {"georgian", 97},
- {""},
+ {pool_offset(2461), 167},
+ {-1}, {-1},
- {"rejang", 146},
- {""},
+ {pool_offset(2464), 313},
- {"oupper", 220},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2465), 153},
+ {-1},
- {"aghb", 176},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
+ {pool_offset(2467), 188},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"khmer", 104},
- {""}, {""},
+ {pool_offset(2473), 60},
+ {-1}, {-1},
- {"grbase", 72},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2476), 378},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"currencysymbol", 47},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2482), 239},
+ {-1},
- {"incombiningdiacriticalmarksextended", 293},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2484), 49},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
- {"spacingmark", 31},
- {""},
+ {pool_offset(2496), 416},
+ {-1}, {-1}, {-1},
- {"orkh", 164},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2500), 511},
+ {-1}, {-1},
- {"cwu", 62},
- {""},
+ {pool_offset(2503), 319},
+ {-1}, {-1}, {-1}, {-1},
- {"hebrew", 79},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2508), 169},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"insupplementalpunctuation", 337},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(2518), 181},
+ {-1}, {-1},
- {"oldnortharabian", 189},
- {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2521), 309},
+ {-1}, {-1}, {-1},
- {"incjksymbolsandpunctuation", 341},
- {""}, {""},
+ {pool_offset(2525), 414},
+ {-1}, {-1}, {-1},
- {"othergraphemeextend", 222},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
+ {pool_offset(2529), 492},
+ {-1}, {-1},
- {"indevanagariextended", 367},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2532), 189},
- {"tagalog", 115},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2533), 230},
+ {-1}, {-1}, {-1},
- {"surrogate", 22},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2537), 70},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"bopomofo", 108},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
+ {pool_offset(2553), 261},
- {"ingeorgiansupplement", 333},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2554), 505},
+ {-1}, {-1}, {-1}, {-1},
- {"uppercase", 58},
- {""}, {""}, {""}, {""}, {""}, {""},
+ {pool_offset(2559), 186},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"unifiedideograph", 226},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2567), 220},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"inpaucinhau", 455},
+ {pool_offset(2576), 210},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {"paucinhau", 192},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
+ {pool_offset(2584), 254},
- {"insupplementalsymbolsandpictographs", 490},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"nonspacingmark", 33},
- {""},
-
- {"inhanguljamoextendedb", 382},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"inhighsurrogates", 383},
-
- {"punctuation", 38},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
-
- {"openpunctuation", 45},
-
- {"bassavah", 177},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"upper", 10},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
-
- {"insupplementalarrowsb", 326},
-
- {"inkanbun", 346},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"inkangxiradicals", 339},
- {""}, {""}, {""},
-
- {"inmeroiticcursive", 426},
- {""}, {""},
-
- {"signwriting", 204},
- {""}, {""},
-
- {"incjkradicalssupplement", 338},
- {""},
-
- {"pahawhhmong", 181},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
-
- {"inkayahli", 368},
-
- {"uppercaseletter", 29},
- {""},
-
- {"batk", 166},
- {""}, {""}, {""}, {""},
-
- {"inbatak", 296},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"incjkcompatibility", 351},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
-
- {"buhd", 117},
- {""}, {""}, {""}, {""}, {""},
-
- {"egyp", 154},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"innoblock", 500},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
-
- {"inegyptianhieroglyphs", 459},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""},
-
- {"grek", 76},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"bugi", 127},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"changeswhenuppercased", 62},
- {""}, {""}, {""},
-
- {"paragraphseparator", 53},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"buginese", 127},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"guru", 85},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"inbopomofoextended", 347},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
-
- {"telugu", 89},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""},
-
- {"quotationmark", 210},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"inkhudawadi", 447},
- {""}, {""}, {""}, {""}, {""},
-
- {"kayahli", 145},
- {""},
-
- {"oldsoutharabian", 161},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
-
- {"insupplementaryprivateuseareab", 499},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"inhangulcompatibilityjamo", 345},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"zyyy", 74},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"qmark", 210},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"buhid", 117},
-
- {"sk", 48},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
-
- {"unknown", 237},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"khudawadi", 196},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
-
- {"katakana", 107},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"incjkunifiedideographsextensionc", 492},
- {""}, {""},
-
- {"incjkunifiedideographsextensiona", 352},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"incjkunifiedideographs", 354},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
-
- {"incjkunifiedideographsextensione", 494},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
-
- {"duployan", 178},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"egyptianhieroglyphs", 154},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"inboxdrawing", 318},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"khojki", 182},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"incjkunifiedideographsextensiond", 493},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"batak", 166},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""},
-
- {"incjkunifiedideographsextensionb", 491},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""},
-
- {"blank", 2},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"greek", 76},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
-
- {"grlink", 73},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""},
-
- {"gurmukhi", 85},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-
- {"graphemelink", 73}
+ {pool_offset(2585), 544},
+
+ {pool_offset(2586), 338},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2623), 36},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2642), 189},
+ {-1},
+
+ {pool_offset(2644), 27},
+ {-1}, {-1},
+
+ {pool_offset(2647), 274},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2653), 173},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2659), 308},
+ {-1}, {-1},
+
+ {pool_offset(2662), 372},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
+
+ {pool_offset(2692), 70},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2700), 420},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2707), 528},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(2711), 51},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2743), 341},
+ {-1},
+
+ {pool_offset(2745), 529},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2764), 19},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2770), 96},
+
+ {pool_offset(2771), 63},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2776), 335},
+
+ {pool_offset(2777), 168},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2782), 399},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2790), 503},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2798), 91},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2826), 248},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2831), 236},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
+
+ {pool_offset(2843), 188},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2849), 191},
+
+ {pool_offset(2850), 230},
+ {-1}, {-1},
+
+ {pool_offset(2853), 171},
+ {-1}, {-1},
+
+ {pool_offset(2856), 113},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2861), 506},
+ {-1},
+
+ {pool_offset(2863), 10},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
+
+ {pool_offset(2884), 539},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2907), 160},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2915), 160},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2929), 250},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2937), 95},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2947), 530},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2954), 173},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2963), 277},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2968), 244},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2974), 244},
+
+ {pool_offset(2975), 412},
+
+ {pool_offset(2976), 352},
+
+ {pool_offset(2977), 423},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(2986), 183},
+
+ {pool_offset(2987), 212},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3012), 532},
+
+ {pool_offset(3013), 424},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1},
+
+ {pool_offset(3052), 254},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3071), 245},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3080), 356},
+ {-1}, {-1},
+
+ {pool_offset(3083), 541},
+
+ {pool_offset(3084), 410},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3112), 42},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3120), 59},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3127), 168},
+ {-1}, {-1},
+
+ {pool_offset(3130), 245},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3139), 203},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(3177), 18},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3184), 68},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3190), 232},
+ {-1}, {-1},
+
+ {pool_offset(3193), 47},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3210), 232},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3228), 222},
+ {-1}, {-1},
+
+ {pool_offset(3231), 20},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3239), 525},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3262), 76},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(3293), 133},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(3297), 197},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3304), 92},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3328), 381},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3337), 447},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(3375), 210},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3426), 62},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3431), 233},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3447), 63},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3471), 383},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3485), 177},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3504), 266},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3514), 365},
+ {-1}, {-1},
+
+ {pool_offset(3517), 184},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3562), 95},
+ {-1},
+
+ {pool_offset(3564), 346},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3570), 411},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3603), 240},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+
+ {pool_offset(3623), 375},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3666), 228},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(3764), 501},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4052), 205},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4129), 552},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4261), 98},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4277), 373},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4332), 69},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+
+ {pool_offset(4363), 354},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4404), 68},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4639), 542},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(4682), 55},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(5231), 69},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+
+ {pool_offset(5516), 553}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- unsigned int key = hash (str, len);
+ register unsigned int key = hash (str, len);
if (key <= MAX_HASH_VALUE)
{
- register const char *s = wordlist[key].name;
-
- if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
- return &wordlist[key];
+ register int o = wordlist[key].name;
+ if (o >= 0)
+ {
+ register const char *s = o + unicode_prop_name_pool;
+
+ if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
+ return &wordlist[key];
+ }
}
}
return 0;
@@ -25300,7 +29102,792 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
-#define PROPERTY_VERSION 8_0_0
+#define UNICODE_PROPERTY_VERSION 11_0_0
#define PROPERTY_NAME_MAX_SIZE 59
-#define CODE_RANGES_NUM 501
+#define CODE_RANGES_NUM 555
+
+#define PROP_INDEX_NEWLINE 0
+#define PROP_INDEX_ALPHA 1
+#define PROP_INDEX_BLANK 2
+#define PROP_INDEX_CNTRL 3
+#define PROP_INDEX_DIGIT 4
+#define PROP_INDEX_GRAPH 5
+#define PROP_INDEX_LOWER 6
+#define PROP_INDEX_PRINT 7
+#define PROP_INDEX_PUNCT 8
+#define PROP_INDEX_SPACE 9
+#define PROP_INDEX_UPPER 10
+#define PROP_INDEX_XDIGIT 11
+#define PROP_INDEX_WORD 12
+#define PROP_INDEX_ALNUM 13
+#define PROP_INDEX_ASCII 14
+#define PROP_INDEX_ASCIIHEXDIGIT 15
+#define PROP_INDEX_AHEX 15
+#define PROP_INDEX_ADLM 16
+#define PROP_INDEX_ADLAM 16
+#define PROP_INDEX_AHOM 17
+#define PROP_INDEX_ALPHABETIC 18
+#define PROP_INDEX_ANATOLIANHIEROGLYPHS 19
+#define PROP_INDEX_HLUW 19
+#define PROP_INDEX_ANY 20
+#define PROP_INDEX_ARAB 21
+#define PROP_INDEX_ARABIC 21
+#define PROP_INDEX_ARMN 22
+#define PROP_INDEX_ARMENIAN 22
+#define PROP_INDEX_ASSIGNED 23
+#define PROP_INDEX_AVST 24
+#define PROP_INDEX_AVESTAN 24
+#define PROP_INDEX_BALINESE 25
+#define PROP_INDEX_BALI 25
+#define PROP_INDEX_BAMUM 26
+#define PROP_INDEX_BAMU 26
+#define PROP_INDEX_BASSAVAH 27
+#define PROP_INDEX_BASS 27
+#define PROP_INDEX_BATAK 28
+#define PROP_INDEX_BATK 28
+#define PROP_INDEX_BENG 29
+#define PROP_INDEX_BENGALI 29
+#define PROP_INDEX_BHKS 30
+#define PROP_INDEX_BHAIKSUKI 30
+#define PROP_INDEX_BIDICONTROL 31
+#define PROP_INDEX_BIDIC 31
+#define PROP_INDEX_BOPO 32
+#define PROP_INDEX_BOPOMOFO 32
+#define PROP_INDEX_BRAHMI 33
+#define PROP_INDEX_BRAH 33
+#define PROP_INDEX_BRAI 34
+#define PROP_INDEX_BRAILLE 34
+#define PROP_INDEX_BUGI 35
+#define PROP_INDEX_BUGINESE 35
+#define PROP_INDEX_BUHD 36
+#define PROP_INDEX_BUHID 36
+#define PROP_INDEX_C 37
+#define PROP_INDEX_OTHER 37
+#define PROP_INDEX_CANS 38
+#define PROP_INDEX_CANADIANABORIGINAL 38
+#define PROP_INDEX_CARI 39
+#define PROP_INDEX_CARIAN 39
+#define PROP_INDEX_CI 40
+#define PROP_INDEX_CASEIGNORABLE 40
+#define PROP_INDEX_CASED 41
+#define PROP_INDEX_AGHB 42
+#define PROP_INDEX_CAUCASIANALBANIAN 42
+#define PROP_INDEX_CONTROL 43
+#define PROP_INDEX_CC 43
+#define PROP_INDEX_CF 44
+#define PROP_INDEX_FORMAT 44
+#define PROP_INDEX_CHAKMA 45
+#define PROP_INDEX_CAKM 45
+#define PROP_INDEX_CHAM 46
+#define PROP_INDEX_CWCF 47
+#define PROP_INDEX_CHANGESWHENCASEFOLDED 47
+#define PROP_INDEX_CWCM 48
+#define PROP_INDEX_CHANGESWHENCASEMAPPED 48
+#define PROP_INDEX_CWL 49
+#define PROP_INDEX_CHANGESWHENLOWERCASED 49
+#define PROP_INDEX_CWT 50
+#define PROP_INDEX_CHANGESWHENTITLECASED 50
+#define PROP_INDEX_CWU 51
+#define PROP_INDEX_CHANGESWHENUPPERCASED 51
+#define PROP_INDEX_CHER 52
+#define PROP_INDEX_CHEROKEE 52
+#define PROP_INDEX_CN 53
+#define PROP_INDEX_UNASSIGNED 53
+#define PROP_INDEX_PRIVATEUSE 54
+#define PROP_INDEX_CO 54
+#define PROP_INDEX_ZYYY 55
+#define PROP_INDEX_COMMON 55
+#define PROP_INDEX_COPT 56
+#define PROP_INDEX_COPTIC 56
+#define PROP_INDEX_QAAC 56
+#define PROP_INDEX_CS 57
+#define PROP_INDEX_SURROGATE 57
+#define PROP_INDEX_XSUX 58
+#define PROP_INDEX_CUNEIFORM 58
+#define PROP_INDEX_CPRT 59
+#define PROP_INDEX_CYPRIOT 59
+#define PROP_INDEX_CYRILLIC 60
+#define PROP_INDEX_CYRL 60
+#define PROP_INDEX_DASH 61
+#define PROP_INDEX_DEFAULTIGNORABLECODEPOINT 62
+#define PROP_INDEX_DI 62
+#define PROP_INDEX_DEP 63
+#define PROP_INDEX_DEPRECATED 63
+#define PROP_INDEX_DSRT 64
+#define PROP_INDEX_DESERET 64
+#define PROP_INDEX_DEVA 65
+#define PROP_INDEX_DEVANAGARI 65
+#define PROP_INDEX_DIACRITIC 66
+#define PROP_INDEX_DIA 66
+#define PROP_INDEX_DOGRA 67
+#define PROP_INDEX_DOGR 67
+#define PROP_INDEX_DUPL 68
+#define PROP_INDEX_DUPLOYAN 68
+#define PROP_INDEX_EGYPTIANHIEROGLYPHS 69
+#define PROP_INDEX_EGYP 69
+#define PROP_INDEX_ELBA 70
+#define PROP_INDEX_ELBASAN 70
+#define PROP_INDEX_EMOJI 71
+#define PROP_INDEX_EMOJICOMPONENT 72
+#define PROP_INDEX_EMOJIMODIFIER 73
+#define PROP_INDEX_EMOJIMODIFIERBASE 74
+#define PROP_INDEX_EMOJIPRESENTATION 75
+#define PROP_INDEX_ETHIOPIC 76
+#define PROP_INDEX_ETHI 76
+#define PROP_INDEX_EXTENDEDPICTOGRAPHIC 77
+#define PROP_INDEX_EXT 78
+#define PROP_INDEX_EXTENDER 78
+#define PROP_INDEX_GEORGIAN 79
+#define PROP_INDEX_GEOR 79
+#define PROP_INDEX_GLAG 80
+#define PROP_INDEX_GLAGOLITIC 80
+#define PROP_INDEX_GOTH 81
+#define PROP_INDEX_GOTHIC 81
+#define PROP_INDEX_GRAN 82
+#define PROP_INDEX_GRANTHA 82
+#define PROP_INDEX_GRBASE 83
+#define PROP_INDEX_GRAPHEMEBASE 83
+#define PROP_INDEX_GREXT 84
+#define PROP_INDEX_GRAPHEMEEXTEND 84
+#define PROP_INDEX_GRAPHEMELINK 85
+#define PROP_INDEX_GRLINK 85
+#define PROP_INDEX_GREEK 86
+#define PROP_INDEX_GREK 86
+#define PROP_INDEX_GUJARATI 87
+#define PROP_INDEX_GUJR 87
+#define PROP_INDEX_GUNJALAGONDI 88
+#define PROP_INDEX_GONG 88
+#define PROP_INDEX_GURU 89
+#define PROP_INDEX_GURMUKHI 89
+#define PROP_INDEX_HANI 90
+#define PROP_INDEX_HAN 90
+#define PROP_INDEX_HANG 91
+#define PROP_INDEX_HANGUL 91
+#define PROP_INDEX_HANIFIROHINGYA 92
+#define PROP_INDEX_ROHG 92
+#define PROP_INDEX_HANUNOO 93
+#define PROP_INDEX_HANO 93
+#define PROP_INDEX_HATR 94
+#define PROP_INDEX_HATRAN 94
+#define PROP_INDEX_HEBREW 95
+#define PROP_INDEX_HEBR 95
+#define PROP_INDEX_HEXDIGIT 96
+#define PROP_INDEX_HEX 96
+#define PROP_INDEX_HIRAGANA 97
+#define PROP_INDEX_HIRA 97
+#define PROP_INDEX_HYPHEN 98
+#define PROP_INDEX_IDSB 99
+#define PROP_INDEX_IDSBINARYOPERATOR 99
+#define PROP_INDEX_IDST 100
+#define PROP_INDEX_IDSTRINARYOPERATOR 100
+#define PROP_INDEX_IDCONTINUE 101
+#define PROP_INDEX_IDC 101
+#define PROP_INDEX_IDS 102
+#define PROP_INDEX_IDSTART 102
+#define PROP_INDEX_IDEO 103
+#define PROP_INDEX_IDEOGRAPHIC 103
+#define PROP_INDEX_ARMI 104
+#define PROP_INDEX_IMPERIALARAMAIC 104
+#define PROP_INDEX_ZINH 105
+#define PROP_INDEX_INHERITED 105
+#define PROP_INDEX_QAAI 105
+#define PROP_INDEX_PHLI 106
+#define PROP_INDEX_INSCRIPTIONALPAHLAVI 106
+#define PROP_INDEX_INSCRIPTIONALPARTHIAN 107
+#define PROP_INDEX_PRTI 107
+#define PROP_INDEX_JAVANESE 108
+#define PROP_INDEX_JAVA 108
+#define PROP_INDEX_JOINC 109
+#define PROP_INDEX_JOINCONTROL 109
+#define PROP_INDEX_KAITHI 110
+#define PROP_INDEX_KTHI 110
+#define PROP_INDEX_KNDA 111
+#define PROP_INDEX_KANNADA 111
+#define PROP_INDEX_KATAKANA 112
+#define PROP_INDEX_KANA 112
+#define PROP_INDEX_KAYAHLI 113
+#define PROP_INDEX_KALI 113
+#define PROP_INDEX_KHAROSHTHI 114
+#define PROP_INDEX_KHAR 114
+#define PROP_INDEX_KHMR 115
+#define PROP_INDEX_KHMER 115
+#define PROP_INDEX_KHOJ 116
+#define PROP_INDEX_KHOJKI 116
+#define PROP_INDEX_KHUDAWADI 117
+#define PROP_INDEX_SIND 117
+#define PROP_INDEX_L 118
+#define PROP_INDEX_LETTER 118
+#define PROP_INDEX_LC 119
+#define PROP_INDEX_CASEDLETTER 119
+#define PROP_INDEX_LAO 120
+#define PROP_INDEX_LAOO 120
+#define PROP_INDEX_LATN 121
+#define PROP_INDEX_LATIN 121
+#define PROP_INDEX_LEPC 122
+#define PROP_INDEX_LEPCHA 122
+#define PROP_INDEX_LIMBU 123
+#define PROP_INDEX_LIMB 123
+#define PROP_INDEX_LINA 124
+#define PROP_INDEX_LINEARA 124
+#define PROP_INDEX_LINB 125
+#define PROP_INDEX_LINEARB 125
+#define PROP_INDEX_LISU 126
+#define PROP_INDEX_LOWERCASELETTER 127
+#define PROP_INDEX_LL 127
+#define PROP_INDEX_LM 128
+#define PROP_INDEX_MODIFIERLETTER 128
+#define PROP_INDEX_LO 129
+#define PROP_INDEX_OTHERLETTER 129
+#define PROP_INDEX_LOGICALORDEREXCEPTION 130
+#define PROP_INDEX_LOE 130
+#define PROP_INDEX_LOWERCASE 131
+#define PROP_INDEX_LT 132
+#define PROP_INDEX_TITLECASELETTER 132
+#define PROP_INDEX_UPPERCASELETTER 133
+#define PROP_INDEX_LU 133
+#define PROP_INDEX_LYCI 134
+#define PROP_INDEX_LYCIAN 134
+#define PROP_INDEX_LYDI 135
+#define PROP_INDEX_LYDIAN 135
+#define PROP_INDEX_M 136
+#define PROP_INDEX_COMBININGMARK 136
+#define PROP_INDEX_MARK 136
+#define PROP_INDEX_MAHJ 137
+#define PROP_INDEX_MAHAJANI 137
+#define PROP_INDEX_MAKASAR 138
+#define PROP_INDEX_MAKA 138
+#define PROP_INDEX_MALAYALAM 139
+#define PROP_INDEX_MLYM 139
+#define PROP_INDEX_MAND 140
+#define PROP_INDEX_MANDAIC 140
+#define PROP_INDEX_MANI 141
+#define PROP_INDEX_MANICHAEAN 141
+#define PROP_INDEX_MARC 142
+#define PROP_INDEX_MARCHEN 142
+#define PROP_INDEX_MASARAMGONDI 143
+#define PROP_INDEX_GONM 143
+#define PROP_INDEX_MATH 144
+#define PROP_INDEX_MC 145
+#define PROP_INDEX_SPACINGMARK 145
+#define PROP_INDEX_ENCLOSINGMARK 146
+#define PROP_INDEX_ME 146
+#define PROP_INDEX_MEDEFAIDRIN 147
+#define PROP_INDEX_MEDF 147
+#define PROP_INDEX_MEETEIMAYEK 148
+#define PROP_INDEX_MTEI 148
+#define PROP_INDEX_MENDEKIKAKUI 149
+#define PROP_INDEX_MEND 149
+#define PROP_INDEX_MEROITICCURSIVE 150
+#define PROP_INDEX_MERC 150
+#define PROP_INDEX_MEROITICHIEROGLYPHS 151
+#define PROP_INDEX_MERO 151
+#define PROP_INDEX_PLRD 152
+#define PROP_INDEX_MIAO 152
+#define PROP_INDEX_MN 153
+#define PROP_INDEX_NONSPACINGMARK 153
+#define PROP_INDEX_MODI 154
+#define PROP_INDEX_MONGOLIAN 155
+#define PROP_INDEX_MONG 155
+#define PROP_INDEX_MRO 156
+#define PROP_INDEX_MROO 156
+#define PROP_INDEX_MULT 157
+#define PROP_INDEX_MULTANI 157
+#define PROP_INDEX_MYANMAR 158
+#define PROP_INDEX_MYMR 158
+#define PROP_INDEX_NUMBER 159
+#define PROP_INDEX_N 159
+#define PROP_INDEX_NABATAEAN 160
+#define PROP_INDEX_NBAT 160
+#define PROP_INDEX_DECIMALNUMBER 161
+#define PROP_INDEX_ND 161
+#define PROP_INDEX_TALU 162
+#define PROP_INDEX_NEWTAILUE 162
+#define PROP_INDEX_NEWA 163
+#define PROP_INDEX_NKO 164
+#define PROP_INDEX_NKOO 164
+#define PROP_INDEX_LETTERNUMBER 165
+#define PROP_INDEX_NL 165
+#define PROP_INDEX_OTHERNUMBER 166
+#define PROP_INDEX_NO 166
+#define PROP_INDEX_NONCHARACTERCODEPOINT 167
+#define PROP_INDEX_NCHAR 167
+#define PROP_INDEX_NSHU 168
+#define PROP_INDEX_NUSHU 168
+#define PROP_INDEX_OGHAM 169
+#define PROP_INDEX_OGAM 169
+#define PROP_INDEX_OLCK 170
+#define PROP_INDEX_OLCHIKI 170
+#define PROP_INDEX_HUNG 171
+#define PROP_INDEX_OLDHUNGARIAN 171
+#define PROP_INDEX_ITAL 172
+#define PROP_INDEX_OLDITALIC 172
+#define PROP_INDEX_NARB 173
+#define PROP_INDEX_OLDNORTHARABIAN 173
+#define PROP_INDEX_OLDPERMIC 174
+#define PROP_INDEX_PERM 174
+#define PROP_INDEX_OLDPERSIAN 175
+#define PROP_INDEX_XPEO 175
+#define PROP_INDEX_SOGO 176
+#define PROP_INDEX_OLDSOGDIAN 176
+#define PROP_INDEX_SARB 177
+#define PROP_INDEX_OLDSOUTHARABIAN 177
+#define PROP_INDEX_OLDTURKIC 178
+#define PROP_INDEX_ORKH 178
+#define PROP_INDEX_ORYA 179
+#define PROP_INDEX_ORIYA 179
+#define PROP_INDEX_OSAGE 180
+#define PROP_INDEX_OSGE 180
+#define PROP_INDEX_OSMANYA 181
+#define PROP_INDEX_OSMA 181
+#define PROP_INDEX_OTHERALPHABETIC 182
+#define PROP_INDEX_OALPHA 182
+#define PROP_INDEX_ODI 183
+#define PROP_INDEX_OTHERDEFAULTIGNORABLECODEPOINT 183
+#define PROP_INDEX_OGREXT 184
+#define PROP_INDEX_OTHERGRAPHEMEEXTEND 184
+#define PROP_INDEX_OIDC 185
+#define PROP_INDEX_OTHERIDCONTINUE 185
+#define PROP_INDEX_OTHERIDSTART 186
+#define PROP_INDEX_OIDS 186
+#define PROP_INDEX_OTHERLOWERCASE 187
+#define PROP_INDEX_OLOWER 187
+#define PROP_INDEX_OTHERMATH 188
+#define PROP_INDEX_OMATH 188
+#define PROP_INDEX_OTHERUPPERCASE 189
+#define PROP_INDEX_OUPPER 189
+#define PROP_INDEX_P 190
+#define PROP_INDEX_PUNCTUATION 190
+#define PROP_INDEX_PAHAWHHMONG 191
+#define PROP_INDEX_HMNG 191
+#define PROP_INDEX_PALMYRENE 192
+#define PROP_INDEX_PALM 192
+#define PROP_INDEX_PATTERNSYNTAX 193
+#define PROP_INDEX_PATSYN 193
+#define PROP_INDEX_PATWS 194
+#define PROP_INDEX_PATTERNWHITESPACE 194
+#define PROP_INDEX_PAUCINHAU 195
+#define PROP_INDEX_PAUC 195
+#define PROP_INDEX_CONNECTORPUNCTUATION 196
+#define PROP_INDEX_PC 196
+#define PROP_INDEX_DASHPUNCTUATION 197
+#define PROP_INDEX_PD 197
+#define PROP_INDEX_PE 198
+#define PROP_INDEX_CLOSEPUNCTUATION 198
+#define PROP_INDEX_FINALPUNCTUATION 199
+#define PROP_INDEX_PF 199
+#define PROP_INDEX_PHAG 200
+#define PROP_INDEX_PHAGSPA 200
+#define PROP_INDEX_PHOENICIAN 201
+#define PROP_INDEX_PHNX 201
+#define PROP_INDEX_PI 202
+#define PROP_INDEX_INITIALPUNCTUATION 202
+#define PROP_INDEX_OTHERPUNCTUATION 203
+#define PROP_INDEX_PO 203
+#define PROP_INDEX_PREPENDEDCONCATENATIONMARK 204
+#define PROP_INDEX_PCM 204
+#define PROP_INDEX_PS 205
+#define PROP_INDEX_OPENPUNCTUATION 205
+#define PROP_INDEX_PHLP 206
+#define PROP_INDEX_PSALTERPAHLAVI 206
+#define PROP_INDEX_QUOTATIONMARK 207
+#define PROP_INDEX_QMARK 207
+#define PROP_INDEX_RADICAL 208
+#define PROP_INDEX_RI 209
+#define PROP_INDEX_REGIONALINDICATOR 209
+#define PROP_INDEX_REJANG 210
+#define PROP_INDEX_RJNG 210
+#define PROP_INDEX_RUNIC 211
+#define PROP_INDEX_RUNR 211
+#define PROP_INDEX_S 212
+#define PROP_INDEX_SYMBOL 212
+#define PROP_INDEX_SAMARITAN 213
+#define PROP_INDEX_SAMR 213
+#define PROP_INDEX_SAURASHTRA 214
+#define PROP_INDEX_SAUR 214
+#define PROP_INDEX_SC 215
+#define PROP_INDEX_CURRENCYSYMBOL 215
+#define PROP_INDEX_SENTENCETERMINAL 216
+#define PROP_INDEX_STERM 216
+#define PROP_INDEX_SHARADA 217
+#define PROP_INDEX_SHRD 217
+#define PROP_INDEX_SHAVIAN 218
+#define PROP_INDEX_SHAW 218
+#define PROP_INDEX_SIDDHAM 219
+#define PROP_INDEX_SIDD 219
+#define PROP_INDEX_SIGNWRITING 220
+#define PROP_INDEX_SGNW 220
+#define PROP_INDEX_SINH 221
+#define PROP_INDEX_SINHALA 221
+#define PROP_INDEX_SK 222
+#define PROP_INDEX_MODIFIERSYMBOL 222
+#define PROP_INDEX_MATHSYMBOL 223
+#define PROP_INDEX_SM 223
+#define PROP_INDEX_SO 224
+#define PROP_INDEX_OTHERSYMBOL 224
+#define PROP_INDEX_SD 225
+#define PROP_INDEX_SOFTDOTTED 225
+#define PROP_INDEX_SOGD 226
+#define PROP_INDEX_SOGDIAN 226
+#define PROP_INDEX_SORASOMPENG 227
+#define PROP_INDEX_SORA 227
+#define PROP_INDEX_SOYO 228
+#define PROP_INDEX_SOYOMBO 228
+#define PROP_INDEX_SUND 229
+#define PROP_INDEX_SUNDANESE 229
+#define PROP_INDEX_SYLO 230
+#define PROP_INDEX_SYLOTINAGRI 230
+#define PROP_INDEX_SYRC 231
+#define PROP_INDEX_SYRIAC 231
+#define PROP_INDEX_TGLG 232
+#define PROP_INDEX_TAGALOG 232
+#define PROP_INDEX_TAGBANWA 233
+#define PROP_INDEX_TAGB 233
+#define PROP_INDEX_TAILE 234
+#define PROP_INDEX_TALE 234
+#define PROP_INDEX_TAITHAM 235
+#define PROP_INDEX_LANA 235
+#define PROP_INDEX_TAIVIET 236
+#define PROP_INDEX_TAVT 236
+#define PROP_INDEX_TAKRI 237
+#define PROP_INDEX_TAKR 237
+#define PROP_INDEX_TAMIL 238
+#define PROP_INDEX_TAML 238
+#define PROP_INDEX_TANG 239
+#define PROP_INDEX_TANGUT 239
+#define PROP_INDEX_TELUGU 240
+#define PROP_INDEX_TELU 240
+#define PROP_INDEX_TERM 241
+#define PROP_INDEX_TERMINALPUNCTUATION 241
+#define PROP_INDEX_THAA 242
+#define PROP_INDEX_THAANA 242
+#define PROP_INDEX_THAI 243
+#define PROP_INDEX_TIBT 244
+#define PROP_INDEX_TIBETAN 244
+#define PROP_INDEX_TFNG 245
+#define PROP_INDEX_TIFINAGH 245
+#define PROP_INDEX_TIRHUTA 246
+#define PROP_INDEX_TIRH 246
+#define PROP_INDEX_UGAR 247
+#define PROP_INDEX_UGARITIC 247
+#define PROP_INDEX_UNIFIEDIDEOGRAPH 248
+#define PROP_INDEX_UIDEO 248
+#define PROP_INDEX_ZZZZ 249
+#define PROP_INDEX_UNKNOWN 249
+#define PROP_INDEX_UPPERCASE 250
+#define PROP_INDEX_VAII 251
+#define PROP_INDEX_VAI 251
+#define PROP_INDEX_VARIATIONSELECTOR 252
+#define PROP_INDEX_VS 252
+#define PROP_INDEX_WARANGCITI 253
+#define PROP_INDEX_WARA 253
+#define PROP_INDEX_WHITESPACE 254
+#define PROP_INDEX_WSPACE 254
+#define PROP_INDEX_XIDC 255
+#define PROP_INDEX_XIDCONTINUE 255
+#define PROP_INDEX_XIDS 256
+#define PROP_INDEX_XIDSTART 256
+#define PROP_INDEX_YI 257
+#define PROP_INDEX_YIII 257
+#define PROP_INDEX_SEPARATOR 258
+#define PROP_INDEX_Z 258
+#define PROP_INDEX_ZANABAZARSQUARE 259
+#define PROP_INDEX_ZANB 259
+#define PROP_INDEX_ZL 260
+#define PROP_INDEX_LINESEPARATOR 260
+#define PROP_INDEX_ZP 261
+#define PROP_INDEX_PARAGRAPHSEPARATOR 261
+#define PROP_INDEX_ZS 262
+#define PROP_INDEX_SPACESEPARATOR 262
+#define PROP_INDEX_INBASICLATIN 263
+#define PROP_INDEX_INLATIN1SUPPLEMENT 264
+#define PROP_INDEX_INLATINEXTENDEDA 265
+#define PROP_INDEX_INLATINEXTENDEDB 266
+#define PROP_INDEX_INIPAEXTENSIONS 267
+#define PROP_INDEX_INSPACINGMODIFIERLETTERS 268
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKS 269
+#define PROP_INDEX_INGREEKANDCOPTIC 270
+#define PROP_INDEX_INCYRILLIC 271
+#define PROP_INDEX_INCYRILLICSUPPLEMENT 272
+#define PROP_INDEX_INARMENIAN 273
+#define PROP_INDEX_INHEBREW 274
+#define PROP_INDEX_INARABIC 275
+#define PROP_INDEX_INSYRIAC 276
+#define PROP_INDEX_INARABICSUPPLEMENT 277
+#define PROP_INDEX_INTHAANA 278
+#define PROP_INDEX_INNKO 279
+#define PROP_INDEX_INSAMARITAN 280
+#define PROP_INDEX_INMANDAIC 281
+#define PROP_INDEX_INSYRIACSUPPLEMENT 282
+#define PROP_INDEX_INARABICEXTENDEDA 283
+#define PROP_INDEX_INDEVANAGARI 284
+#define PROP_INDEX_INBENGALI 285
+#define PROP_INDEX_INGURMUKHI 286
+#define PROP_INDEX_INGUJARATI 287
+#define PROP_INDEX_INORIYA 288
+#define PROP_INDEX_INTAMIL 289
+#define PROP_INDEX_INTELUGU 290
+#define PROP_INDEX_INKANNADA 291
+#define PROP_INDEX_INMALAYALAM 292
+#define PROP_INDEX_INSINHALA 293
+#define PROP_INDEX_INTHAI 294
+#define PROP_INDEX_INLAO 295
+#define PROP_INDEX_INTIBETAN 296
+#define PROP_INDEX_INMYANMAR 297
+#define PROP_INDEX_INGEORGIAN 298
+#define PROP_INDEX_INHANGULJAMO 299
+#define PROP_INDEX_INETHIOPIC 300
+#define PROP_INDEX_INETHIOPICSUPPLEMENT 301
+#define PROP_INDEX_INCHEROKEE 302
+#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICS 303
+#define PROP_INDEX_INOGHAM 304
+#define PROP_INDEX_INRUNIC 305
+#define PROP_INDEX_INTAGALOG 306
+#define PROP_INDEX_INHANUNOO 307
+#define PROP_INDEX_INBUHID 308
+#define PROP_INDEX_INTAGBANWA 309
+#define PROP_INDEX_INKHMER 310
+#define PROP_INDEX_INMONGOLIAN 311
+#define PROP_INDEX_INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED 312
+#define PROP_INDEX_INLIMBU 313
+#define PROP_INDEX_INTAILE 314
+#define PROP_INDEX_INNEWTAILUE 315
+#define PROP_INDEX_INKHMERSYMBOLS 316
+#define PROP_INDEX_INBUGINESE 317
+#define PROP_INDEX_INTAITHAM 318
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSEXTENDED 319
+#define PROP_INDEX_INBALINESE 320
+#define PROP_INDEX_INSUNDANESE 321
+#define PROP_INDEX_INBATAK 322
+#define PROP_INDEX_INLEPCHA 323
+#define PROP_INDEX_INOLCHIKI 324
+#define PROP_INDEX_INCYRILLICEXTENDEDC 325
+#define PROP_INDEX_INGEORGIANEXTENDED 326
+#define PROP_INDEX_INSUNDANESESUPPLEMENT 327
+#define PROP_INDEX_INVEDICEXTENSIONS 328
+#define PROP_INDEX_INPHONETICEXTENSIONS 329
+#define PROP_INDEX_INPHONETICEXTENSIONSSUPPLEMENT 330
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSSUPPLEMENT 331
+#define PROP_INDEX_INLATINEXTENDEDADDITIONAL 332
+#define PROP_INDEX_INGREEKEXTENDED 333
+#define PROP_INDEX_INGENERALPUNCTUATION 334
+#define PROP_INDEX_INSUPERSCRIPTSANDSUBSCRIPTS 335
+#define PROP_INDEX_INCURRENCYSYMBOLS 336
+#define PROP_INDEX_INCOMBININGDIACRITICALMARKSFORSYMBOLS 337
+#define PROP_INDEX_INLETTERLIKESYMBOLS 338
+#define PROP_INDEX_INNUMBERFORMS 339
+#define PROP_INDEX_INARROWS 340
+#define PROP_INDEX_INMATHEMATICALOPERATORS 341
+#define PROP_INDEX_INMISCELLANEOUSTECHNICAL 342
+#define PROP_INDEX_INCONTROLPICTURES 343
+#define PROP_INDEX_INOPTICALCHARACTERRECOGNITION 344
+#define PROP_INDEX_INENCLOSEDALPHANUMERICS 345
+#define PROP_INDEX_INBOXDRAWING 346
+#define PROP_INDEX_INBLOCKELEMENTS 347
+#define PROP_INDEX_INGEOMETRICSHAPES 348
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLS 349
+#define PROP_INDEX_INDINGBATS 350
+#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSA 351
+#define PROP_INDEX_INSUPPLEMENTALARROWSA 352
+#define PROP_INDEX_INBRAILLEPATTERNS 353
+#define PROP_INDEX_INSUPPLEMENTALARROWSB 354
+#define PROP_INDEX_INMISCELLANEOUSMATHEMATICALSYMBOLSB 355
+#define PROP_INDEX_INSUPPLEMENTALMATHEMATICALOPERATORS 356
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDARROWS 357
+#define PROP_INDEX_INGLAGOLITIC 358
+#define PROP_INDEX_INLATINEXTENDEDC 359
+#define PROP_INDEX_INCOPTIC 360
+#define PROP_INDEX_INGEORGIANSUPPLEMENT 361
+#define PROP_INDEX_INTIFINAGH 362
+#define PROP_INDEX_INETHIOPICEXTENDED 363
+#define PROP_INDEX_INCYRILLICEXTENDEDA 364
+#define PROP_INDEX_INSUPPLEMENTALPUNCTUATION 365
+#define PROP_INDEX_INCJKRADICALSSUPPLEMENT 366
+#define PROP_INDEX_INKANGXIRADICALS 367
+#define PROP_INDEX_INIDEOGRAPHICDESCRIPTIONCHARACTERS 368
+#define PROP_INDEX_INCJKSYMBOLSANDPUNCTUATION 369
+#define PROP_INDEX_INHIRAGANA 370
+#define PROP_INDEX_INKATAKANA 371
+#define PROP_INDEX_INBOPOMOFO 372
+#define PROP_INDEX_INHANGULCOMPATIBILITYJAMO 373
+#define PROP_INDEX_INKANBUN 374
+#define PROP_INDEX_INBOPOMOFOEXTENDED 375
+#define PROP_INDEX_INCJKSTROKES 376
+#define PROP_INDEX_INKATAKANAPHONETICEXTENSIONS 377
+#define PROP_INDEX_INENCLOSEDCJKLETTERSANDMONTHS 378
+#define PROP_INDEX_INCJKCOMPATIBILITY 379
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONA 380
+#define PROP_INDEX_INYIJINGHEXAGRAMSYMBOLS 381
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHS 382
+#define PROP_INDEX_INYISYLLABLES 383
+#define PROP_INDEX_INYIRADICALS 384
+#define PROP_INDEX_INLISU 385
+#define PROP_INDEX_INVAI 386
+#define PROP_INDEX_INCYRILLICEXTENDEDB 387
+#define PROP_INDEX_INBAMUM 388
+#define PROP_INDEX_INMODIFIERTONELETTERS 389
+#define PROP_INDEX_INLATINEXTENDEDD 390
+#define PROP_INDEX_INSYLOTINAGRI 391
+#define PROP_INDEX_INCOMMONINDICNUMBERFORMS 392
+#define PROP_INDEX_INPHAGSPA 393
+#define PROP_INDEX_INSAURASHTRA 394
+#define PROP_INDEX_INDEVANAGARIEXTENDED 395
+#define PROP_INDEX_INKAYAHLI 396
+#define PROP_INDEX_INREJANG 397
+#define PROP_INDEX_INHANGULJAMOEXTENDEDA 398
+#define PROP_INDEX_INJAVANESE 399
+#define PROP_INDEX_INMYANMAREXTENDEDB 400
+#define PROP_INDEX_INCHAM 401
+#define PROP_INDEX_INMYANMAREXTENDEDA 402
+#define PROP_INDEX_INTAIVIET 403
+#define PROP_INDEX_INMEETEIMAYEKEXTENSIONS 404
+#define PROP_INDEX_INETHIOPICEXTENDEDA 405
+#define PROP_INDEX_INLATINEXTENDEDE 406
+#define PROP_INDEX_INCHEROKEESUPPLEMENT 407
+#define PROP_INDEX_INMEETEIMAYEK 408
+#define PROP_INDEX_INHANGULSYLLABLES 409
+#define PROP_INDEX_INHANGULJAMOEXTENDEDB 410
+#define PROP_INDEX_INHIGHSURROGATES 411
+#define PROP_INDEX_INHIGHPRIVATEUSESURROGATES 412
+#define PROP_INDEX_INLOWSURROGATES 413
+#define PROP_INDEX_INPRIVATEUSEAREA 414
+#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHS 415
+#define PROP_INDEX_INALPHABETICPRESENTATIONFORMS 416
+#define PROP_INDEX_INARABICPRESENTATIONFORMSA 417
+#define PROP_INDEX_INVARIATIONSELECTORS 418
+#define PROP_INDEX_INVERTICALFORMS 419
+#define PROP_INDEX_INCOMBININGHALFMARKS 420
+#define PROP_INDEX_INCJKCOMPATIBILITYFORMS 421
+#define PROP_INDEX_INSMALLFORMVARIANTS 422
+#define PROP_INDEX_INARABICPRESENTATIONFORMSB 423
+#define PROP_INDEX_INHALFWIDTHANDFULLWIDTHFORMS 424
+#define PROP_INDEX_INSPECIALS 425
+#define PROP_INDEX_INLINEARBSYLLABARY 426
+#define PROP_INDEX_INLINEARBIDEOGRAMS 427
+#define PROP_INDEX_INAEGEANNUMBERS 428
+#define PROP_INDEX_INANCIENTGREEKNUMBERS 429
+#define PROP_INDEX_INANCIENTSYMBOLS 430
+#define PROP_INDEX_INPHAISTOSDISC 431
+#define PROP_INDEX_INLYCIAN 432
+#define PROP_INDEX_INCARIAN 433
+#define PROP_INDEX_INCOPTICEPACTNUMBERS 434
+#define PROP_INDEX_INOLDITALIC 435
+#define PROP_INDEX_INGOTHIC 436
+#define PROP_INDEX_INOLDPERMIC 437
+#define PROP_INDEX_INUGARITIC 438
+#define PROP_INDEX_INOLDPERSIAN 439
+#define PROP_INDEX_INDESERET 440
+#define PROP_INDEX_INSHAVIAN 441
+#define PROP_INDEX_INOSMANYA 442
+#define PROP_INDEX_INOSAGE 443
+#define PROP_INDEX_INELBASAN 444
+#define PROP_INDEX_INCAUCASIANALBANIAN 445
+#define PROP_INDEX_INLINEARA 446
+#define PROP_INDEX_INCYPRIOTSYLLABARY 447
+#define PROP_INDEX_INIMPERIALARAMAIC 448
+#define PROP_INDEX_INPALMYRENE 449
+#define PROP_INDEX_INNABATAEAN 450
+#define PROP_INDEX_INHATRAN 451
+#define PROP_INDEX_INPHOENICIAN 452
+#define PROP_INDEX_INLYDIAN 453
+#define PROP_INDEX_INMEROITICHIEROGLYPHS 454
+#define PROP_INDEX_INMEROITICCURSIVE 455
+#define PROP_INDEX_INKHAROSHTHI 456
+#define PROP_INDEX_INOLDSOUTHARABIAN 457
+#define PROP_INDEX_INOLDNORTHARABIAN 458
+#define PROP_INDEX_INMANICHAEAN 459
+#define PROP_INDEX_INAVESTAN 460
+#define PROP_INDEX_ININSCRIPTIONALPARTHIAN 461
+#define PROP_INDEX_ININSCRIPTIONALPAHLAVI 462
+#define PROP_INDEX_INPSALTERPAHLAVI 463
+#define PROP_INDEX_INOLDTURKIC 464
+#define PROP_INDEX_INOLDHUNGARIAN 465
+#define PROP_INDEX_INHANIFIROHINGYA 466
+#define PROP_INDEX_INRUMINUMERALSYMBOLS 467
+#define PROP_INDEX_INOLDSOGDIAN 468
+#define PROP_INDEX_INSOGDIAN 469
+#define PROP_INDEX_INBRAHMI 470
+#define PROP_INDEX_INKAITHI 471
+#define PROP_INDEX_INSORASOMPENG 472
+#define PROP_INDEX_INCHAKMA 473
+#define PROP_INDEX_INMAHAJANI 474
+#define PROP_INDEX_INSHARADA 475
+#define PROP_INDEX_INSINHALAARCHAICNUMBERS 476
+#define PROP_INDEX_INKHOJKI 477
+#define PROP_INDEX_INMULTANI 478
+#define PROP_INDEX_INKHUDAWADI 479
+#define PROP_INDEX_INGRANTHA 480
+#define PROP_INDEX_INNEWA 481
+#define PROP_INDEX_INTIRHUTA 482
+#define PROP_INDEX_INSIDDHAM 483
+#define PROP_INDEX_INMODI 484
+#define PROP_INDEX_INMONGOLIANSUPPLEMENT 485
+#define PROP_INDEX_INTAKRI 486
+#define PROP_INDEX_INAHOM 487
+#define PROP_INDEX_INDOGRA 488
+#define PROP_INDEX_INWARANGCITI 489
+#define PROP_INDEX_INZANABAZARSQUARE 490
+#define PROP_INDEX_INSOYOMBO 491
+#define PROP_INDEX_INPAUCINHAU 492
+#define PROP_INDEX_INBHAIKSUKI 493
+#define PROP_INDEX_INMARCHEN 494
+#define PROP_INDEX_INMASARAMGONDI 495
+#define PROP_INDEX_INGUNJALAGONDI 496
+#define PROP_INDEX_INMAKASAR 497
+#define PROP_INDEX_INCUNEIFORM 498
+#define PROP_INDEX_INCUNEIFORMNUMBERSANDPUNCTUATION 499
+#define PROP_INDEX_INEARLYDYNASTICCUNEIFORM 500
+#define PROP_INDEX_INEGYPTIANHIEROGLYPHS 501
+#define PROP_INDEX_INANATOLIANHIEROGLYPHS 502
+#define PROP_INDEX_INBAMUMSUPPLEMENT 503
+#define PROP_INDEX_INMRO 504
+#define PROP_INDEX_INBASSAVAH 505
+#define PROP_INDEX_INPAHAWHHMONG 506
+#define PROP_INDEX_INMEDEFAIDRIN 507
+#define PROP_INDEX_INMIAO 508
+#define PROP_INDEX_INIDEOGRAPHICSYMBOLSANDPUNCTUATION 509
+#define PROP_INDEX_INTANGUT 510
+#define PROP_INDEX_INTANGUTCOMPONENTS 511
+#define PROP_INDEX_INKANASUPPLEMENT 512
+#define PROP_INDEX_INKANAEXTENDEDA 513
+#define PROP_INDEX_INNUSHU 514
+#define PROP_INDEX_INDUPLOYAN 515
+#define PROP_INDEX_INSHORTHANDFORMATCONTROLS 516
+#define PROP_INDEX_INBYZANTINEMUSICALSYMBOLS 517
+#define PROP_INDEX_INMUSICALSYMBOLS 518
+#define PROP_INDEX_INANCIENTGREEKMUSICALNOTATION 519
+#define PROP_INDEX_INMAYANNUMERALS 520
+#define PROP_INDEX_INTAIXUANJINGSYMBOLS 521
+#define PROP_INDEX_INCOUNTINGRODNUMERALS 522
+#define PROP_INDEX_INMATHEMATICALALPHANUMERICSYMBOLS 523
+#define PROP_INDEX_INSUTTONSIGNWRITING 524
+#define PROP_INDEX_INGLAGOLITICSUPPLEMENT 525
+#define PROP_INDEX_INMENDEKIKAKUI 526
+#define PROP_INDEX_INADLAM 527
+#define PROP_INDEX_ININDICSIYAQNUMBERS 528
+#define PROP_INDEX_INARABICMATHEMATICALALPHABETICSYMBOLS 529
+#define PROP_INDEX_INMAHJONGTILES 530
+#define PROP_INDEX_INDOMINOTILES 531
+#define PROP_INDEX_INPLAYINGCARDS 532
+#define PROP_INDEX_INENCLOSEDALPHANUMERICSUPPLEMENT 533
+#define PROP_INDEX_INENCLOSEDIDEOGRAPHICSUPPLEMENT 534
+#define PROP_INDEX_INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS 535
+#define PROP_INDEX_INEMOTICONS 536
+#define PROP_INDEX_INORNAMENTALDINGBATS 537
+#define PROP_INDEX_INTRANSPORTANDMAPSYMBOLS 538
+#define PROP_INDEX_INALCHEMICALSYMBOLS 539
+#define PROP_INDEX_INGEOMETRICSHAPESEXTENDED 540
+#define PROP_INDEX_INSUPPLEMENTALARROWSC 541
+#define PROP_INDEX_INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS 542
+#define PROP_INDEX_INCHESSSYMBOLS 543
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONB 544
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONC 545
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIOND 546
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONE 547
+#define PROP_INDEX_INCJKUNIFIEDIDEOGRAPHSEXTENSIONF 548
+#define PROP_INDEX_INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT 549
+#define PROP_INDEX_INTAGS 550
+#define PROP_INDEX_INVARIATIONSELECTORSSUPPLEMENT 551
+#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAA 552
+#define PROP_INDEX_INSUPPLEMENTARYPRIVATEUSEAREAB 553
+#define PROP_INDEX_INNOBLOCK 554
diff --git a/ext/mbstring/oniguruma/src/unicode_property_data_posix.c b/ext/mbstring/oniguruma/src/unicode_property_data_posix.c
index 83aabc60be..75ae98a837 100644
--- a/ext/mbstring/oniguruma/src/unicode_property_data_posix.c
+++ b/ext/mbstring/oniguruma/src/unicode_property_data_posix.c
@@ -1,5 +1,5 @@
-/* ANSI-C code produced by gperf version 3.0.3 */
-/* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf2.tmp unicode_property_data_posix.gperf */
/* Computed positions: -k'1,3' */
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
@@ -26,7 +26,7 @@
&& ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
&& ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646. */
-#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
#endif
@@ -42,7 +42,7 @@ CR_NEWLINE[] = { 1,
/* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */
static const OnigCodePoint
-CR_Alpha[] = { 617,
+CR_Alpha[] = { 676,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -69,14 +69,14 @@ CR_Alpha[] = { 617,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0657,
0x0659, 0x065f,
@@ -94,7 +94,10 @@ CR_Alpha[] = { 617,
0x0800, 0x0817,
0x081a, 0x082c,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d4, 0x08df,
0x08e3, 0x08e9,
0x08f0, 0x093b,
0x093d, 0x094c,
@@ -115,6 +118,7 @@ CR_Alpha[] = { 617,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09f0, 0x09f1,
+0x09fc, 0x09fc,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -142,7 +146,7 @@ CR_Alpha[] = { 617,
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
-0x0af9, 0x0af9,
+0x0af9, 0x0afc,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -183,7 +187,7 @@ CR_Alpha[] = { 617,
0x0c55, 0x0c56,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -196,7 +200,7 @@ CR_Alpha[] = { 617,
0x0cde, 0x0cde,
0x0ce0, 0x0ce3,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
0x0d12, 0x0d3a,
@@ -204,7 +208,7 @@ CR_Alpha[] = { 617,
0x0d46, 0x0d48,
0x0d4a, 0x0d4c,
0x0d4e, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d7a, 0x0d7f,
0x0d82, 0x0d83,
@@ -291,7 +295,7 @@ CR_Alpha[] = { 617,
0x17b6, 0x17c8,
0x17d7, 0x17d7,
0x17dc, 0x17dc,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -315,6 +319,9 @@ CR_Alpha[] = { 617,
0x1c00, 0x1c35,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
@@ -386,12 +393,12 @@ CR_Alpha[] = { 617,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -402,17 +409,17 @@ CR_Alpha[] = { 617,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
+0xa8c5, 0xa8c5,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa90a, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
@@ -478,13 +485,15 @@ CR_Alpha[] = { 617,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
0x103c8, 0x103cf,
0x103d1, 0x103d5,
0x10400, 0x1049d,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -508,7 +517,7 @@ CR_Alpha[] = { 617,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -520,10 +529,15 @@ CR_Alpha[] = { 617,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11000, 0x11045,
0x11082, 0x110b8,
0x110d0, 0x110e8,
0x11100, 0x11132,
+0x11144, 0x11146,
0x11150, 0x11172,
0x11176, 0x11176,
0x11180, 0x111bf,
@@ -533,6 +547,7 @@ CR_Alpha[] = { 617,
0x11200, 0x11211,
0x11213, 0x11234,
0x11237, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -552,6 +567,9 @@ CR_Alpha[] = { 617,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135d, 0x11363,
+0x11400, 0x11441,
+0x11443, 0x11445,
+0x11447, 0x1144a,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -562,11 +580,39 @@ CR_Alpha[] = { 617,
0x11640, 0x11640,
0x11644, 0x11644,
0x11680, 0x116b5,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172a,
+0x11800, 0x11838,
0x118a0, 0x118df,
0x118ff, 0x118ff,
+0x11a00, 0x11a32,
+0x11a35, 0x11a3e,
+0x11a50, 0x11a83,
+0x11a86, 0x11a97,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c3e,
+0x11c40, 0x11c40,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d41,
+0x11d43, 0x11d43,
+0x11d46, 0x11d47,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d96,
+0x11d98, 0x11d98,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -579,10 +625,15 @@ CR_Alpha[] = { 617,
0x16b40, 0x16b43,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -618,7 +669,14 @@ CR_Alpha[] = { 617,
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
+0x1e947, 0x1e947,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -659,6 +717,7 @@ CR_Alpha[] = { 617,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_Alpha */
@@ -684,7 +743,7 @@ CR_Cntrl[] = { 2,
/* PROPERTY: 'Digit': POSIX [[:Digit:]] */
static const OnigCodePoint
-CR_Digit[] = { 51,
+CR_Digit[] = { 57,
0x0030, 0x0039,
0x0660, 0x0669,
0x06f0, 0x06f9,
@@ -723,24 +782,30 @@ CR_Digit[] = { 51,
0xabf0, 0xabf9,
0xff10, 0xff19,
0x104a0, 0x104a9,
+0x10d30, 0x10d39,
0x11066, 0x1106f,
0x110f0, 0x110f9,
0x11136, 0x1113f,
0x111d0, 0x111d9,
0x112f0, 0x112f9,
+0x11450, 0x11459,
0x114d0, 0x114d9,
0x11650, 0x11659,
0x116c0, 0x116c9,
0x11730, 0x11739,
0x118e0, 0x118e9,
+0x11c50, 0x11c59,
+0x11d50, 0x11d59,
+0x11da0, 0x11da9,
0x16a60, 0x16a69,
0x16b50, 0x16b59,
0x1d7ce, 0x1d7ff,
+0x1e950, 0x1e959,
}; /* END of CR_Digit */
/* PROPERTY: 'Graph': POSIX [[:Graph:]] */
static const OnigCodePoint
-CR_Graph[] = { 618,
+CR_Graph[] = { 663,
0x0021, 0x007e,
0x00a1, 0x0377,
0x037a, 0x037f,
@@ -749,24 +814,24 @@ CR_Graph[] = { 618,
0x038e, 0x03a1,
0x03a3, 0x052f,
0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
+0x0559, 0x058a,
0x058d, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f4,
+0x05ef, 0x05f4,
0x0600, 0x061c,
0x061e, 0x070d,
0x070f, 0x074a,
0x074d, 0x07b1,
0x07c0, 0x07fa,
-0x0800, 0x082d,
+0x07fd, 0x082d,
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
+0x0860, 0x086a,
0x08a0, 0x08b4,
-0x08e3, 0x0983,
+0x08b6, 0x08bd,
+0x08d3, 0x0983,
0x0985, 0x098c,
0x098f, 0x0990,
0x0993, 0x09a8,
@@ -779,7 +844,7 @@ CR_Graph[] = { 618,
0x09d7, 0x09d7,
0x09dc, 0x09dd,
0x09df, 0x09e3,
-0x09e6, 0x09fb,
+0x09e6, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -795,7 +860,7 @@ CR_Graph[] = { 618,
0x0a51, 0x0a51,
0x0a59, 0x0a5c,
0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
+0x0a66, 0x0a76,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -809,7 +874,7 @@ CR_Graph[] = { 618,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -840,8 +905,7 @@ CR_Graph[] = { 618,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -852,9 +916,7 @@ CR_Graph[] = { 618,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
+0x0c78, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -867,17 +929,14 @@ CR_Graph[] = { 618,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
0x0d82, 0x0d83,
0x0d85, 0x0d96,
0x0d9a, 0x0db1,
@@ -954,7 +1013,7 @@ CR_Graph[] = { 618,
0x17f0, 0x17f9,
0x1800, 0x180e,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -978,12 +1037,12 @@ CR_Graph[] = { 618,
0x1b80, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd0, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd0, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -1006,18 +1065,15 @@ CR_Graph[] = { 618,
0x2066, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x20d0, 0x20f0,
0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
+0x2190, 0x2426,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
@@ -1035,7 +1091,7 @@ CR_Graph[] = { 618,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e42,
+0x2de0, 0x2e4e,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -1043,27 +1099,25 @@ CR_Graph[] = { 618,
0x3001, 0x303f,
0x3041, 0x3096,
0x3099, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa700, 0xa7b9,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8ce, 0xa8d9,
-0xa8e0, 0xa8fd,
-0xa900, 0xa953,
+0xa8e0, 0xa953,
0xa95f, 0xa97c,
0xa980, 0xa9cd,
0xa9cf, 0xa9d9,
@@ -1122,7 +1176,7 @@ CR_Graph[] = { 618,
0x10080, 0x100fa,
0x10100, 0x10102,
0x10107, 0x10133,
-0x10137, 0x1018c,
+0x10137, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fd,
@@ -1130,13 +1184,15 @@ CR_Graph[] = { 618,
0x102a0, 0x102d0,
0x102e0, 0x102fb,
0x10300, 0x10323,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x1039f, 0x103c3,
0x103c8, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x1056f, 0x1056f,
@@ -1162,9 +1218,9 @@ CR_Graph[] = { 618,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
+0x10a3f, 0x10a48,
0x10a50, 0x10a58,
0x10a60, 0x10a9f,
0x10ac0, 0x10ae6,
@@ -1178,21 +1234,25 @@ CR_Graph[] = { 618,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
+0x10cfa, 0x10d27,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f59,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
+0x110cd, 0x110cd,
0x110d0, 0x110e8,
0x110f0, 0x110f9,
0x11100, 0x11134,
-0x11136, 0x11143,
+0x11136, 0x11146,
0x11150, 0x11176,
0x11180, 0x111cd,
0x111d0, 0x111df,
0x111e1, 0x111f4,
0x11200, 0x11211,
-0x11213, 0x1123d,
+0x11213, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -1207,7 +1267,7 @@ CR_Graph[] = { 618,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -1215,20 +1275,49 @@ CR_Graph[] = { 618,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
0x115b8, 0x115dd,
0x11600, 0x11644,
0x11650, 0x11659,
+0x11660, 0x1166c,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x1173f,
+0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x11a00, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef8,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
@@ -1246,10 +1335,15 @@ CR_Graph[] = { 618,
0x16b5b, 0x16b61,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -1259,8 +1353,9 @@ CR_Graph[] = { 618,
0x1d100, 0x1d126,
0x1d129, 0x1d1e8,
0x1d200, 0x1d245,
+0x1d2e0, 0x1d2f3,
0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+0x1d360, 0x1d378,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -1284,8 +1379,17 @@ CR_Graph[] = { 618,
0x1d7ce, 0x1da8b,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -1327,32 +1431,38 @@ CR_Graph[] = { 618,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -1363,7 +1473,7 @@ CR_Graph[] = { 618,
/* PROPERTY: 'Lower': POSIX [[:Lower:]] */
static const OnigCodePoint
-CR_Lower[] = { 637,
+CR_Lower[] = { 645,
0x0061, 0x007a,
0x00aa, 0x00aa,
0x00b5, 0x00b5,
@@ -1638,8 +1748,11 @@ CR_Lower[] = { 637,
0x052b, 0x052b,
0x052d, 0x052d,
0x052f, 0x052f,
-0x0561, 0x0587,
+0x0560, 0x0588,
+0x10d0, 0x10fa,
+0x10fd, 0x10ff,
0x13f8, 0x13fd,
+0x1c80, 0x1c88,
0x1d00, 0x1dbf,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -1961,8 +2074,10 @@ CR_Lower[] = { 637,
0xa7a5, 0xa7a5,
0xa7a7, 0xa7a7,
0xa7a9, 0xa7a9,
+0xa7af, 0xa7af,
0xa7b5, 0xa7b5,
0xa7b7, 0xa7b7,
+0xa7b9, 0xa7b9,
0xa7f8, 0xa7fa,
0xab30, 0xab5a,
0xab5c, 0xab65,
@@ -1971,8 +2086,10 @@ CR_Lower[] = { 637,
0xfb13, 0xfb17,
0xff41, 0xff5a,
0x10428, 0x1044f,
+0x104d8, 0x104fb,
0x10cc0, 0x10cf2,
0x118c0, 0x118df,
+0x16e60, 0x16e7f,
0x1d41a, 0x1d433,
0x1d44e, 0x1d454,
0x1d456, 0x1d467,
@@ -2001,11 +2118,12 @@ CR_Lower[] = { 637,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7c9,
0x1d7cb, 0x1d7cb,
+0x1e922, 0x1e943,
}; /* END of CR_Lower */
/* PROPERTY: 'Print': POSIX [[:Print:]] */
static const OnigCodePoint
-CR_Print[] = { 615,
+CR_Print[] = { 660,
0x0020, 0x007e,
0x00a0, 0x0377,
0x037a, 0x037f,
@@ -2014,24 +2132,24 @@ CR_Print[] = { 615,
0x038e, 0x03a1,
0x03a3, 0x052f,
0x0531, 0x0556,
-0x0559, 0x055f,
-0x0561, 0x0587,
-0x0589, 0x058a,
+0x0559, 0x058a,
0x058d, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f4,
+0x05ef, 0x05f4,
0x0600, 0x061c,
0x061e, 0x070d,
0x070f, 0x074a,
0x074d, 0x07b1,
0x07c0, 0x07fa,
-0x0800, 0x082d,
+0x07fd, 0x082d,
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
+0x0860, 0x086a,
0x08a0, 0x08b4,
-0x08e3, 0x0983,
+0x08b6, 0x08bd,
+0x08d3, 0x0983,
0x0985, 0x098c,
0x098f, 0x0990,
0x0993, 0x09a8,
@@ -2044,7 +2162,7 @@ CR_Print[] = { 615,
0x09d7, 0x09d7,
0x09dc, 0x09dd,
0x09df, 0x09e3,
-0x09e6, 0x09fb,
+0x09e6, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -2060,7 +2178,7 @@ CR_Print[] = { 615,
0x0a51, 0x0a51,
0x0a59, 0x0a5c,
0x0a5e, 0x0a5e,
-0x0a66, 0x0a75,
+0x0a66, 0x0a76,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -2074,7 +2192,7 @@ CR_Print[] = { 615,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0af1,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -2105,8 +2223,7 @@ CR_Print[] = { 615,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bfa,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -2117,9 +2234,7 @@ CR_Print[] = { 615,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c78, 0x0c7f,
-0x0c81, 0x0c83,
-0x0c85, 0x0c8c,
+0x0c78, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
0x0caa, 0x0cb3,
@@ -2132,17 +2247,14 @@ CR_Print[] = { 615,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
-0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
-0x0d5f, 0x0d63,
-0x0d66, 0x0d75,
-0x0d79, 0x0d7f,
+0x0d4a, 0x0d4f,
+0x0d54, 0x0d63,
+0x0d66, 0x0d7f,
0x0d82, 0x0d83,
0x0d85, 0x0d96,
0x0d9a, 0x0db1,
@@ -2218,7 +2330,7 @@ CR_Print[] = { 615,
0x17f0, 0x17f9,
0x1800, 0x180e,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -2242,12 +2354,12 @@ CR_Print[] = { 615,
0x1b80, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
-0x1c4d, 0x1c7f,
-0x1cc0, 0x1cc7,
-0x1cd0, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1c4d, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cc7,
+0x1cd0, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -2268,18 +2380,15 @@ CR_Print[] = { 615,
0x2066, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
-0x20a0, 0x20be,
+0x20a0, 0x20bf,
0x20d0, 0x20f0,
0x2100, 0x218b,
-0x2190, 0x23fa,
-0x2400, 0x2426,
+0x2190, 0x2426,
0x2440, 0x244a,
0x2460, 0x2b73,
0x2b76, 0x2b95,
-0x2b98, 0x2bb9,
-0x2bbd, 0x2bc8,
-0x2bca, 0x2bd1,
-0x2bec, 0x2bef,
+0x2b98, 0x2bc8,
+0x2bca, 0x2bfe,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cf3,
@@ -2297,7 +2406,7 @@ CR_Print[] = { 615,
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
-0x2de0, 0x2e42,
+0x2de0, 0x2e4e,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -2305,27 +2414,25 @@ CR_Print[] = { 615,
0x3000, 0x303f,
0x3041, 0x3096,
0x3099, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x3190, 0x31ba,
0x31c0, 0x31e3,
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
-0x4dc0, 0x9fd5,
+0x4dc0, 0x9fef,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
0xa640, 0xa6f7,
-0xa700, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa700, 0xa7b9,
0xa7f7, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8ce, 0xa8d9,
-0xa8e0, 0xa8fd,
-0xa900, 0xa953,
+0xa8e0, 0xa953,
0xa95f, 0xa97c,
0xa980, 0xa9cd,
0xa9cf, 0xa9d9,
@@ -2384,7 +2491,7 @@ CR_Print[] = { 615,
0x10080, 0x100fa,
0x10100, 0x10102,
0x10107, 0x10133,
-0x10137, 0x1018c,
+0x10137, 0x1018e,
0x10190, 0x1019b,
0x101a0, 0x101a0,
0x101d0, 0x101fd,
@@ -2392,13 +2499,15 @@ CR_Print[] = { 615,
0x102a0, 0x102d0,
0x102e0, 0x102fb,
0x10300, 0x10323,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x1039f, 0x103c3,
0x103c8, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x1056f, 0x1056f,
@@ -2424,9 +2533,9 @@ CR_Print[] = { 615,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
-0x10a3f, 0x10a47,
+0x10a3f, 0x10a48,
0x10a50, 0x10a58,
0x10a60, 0x10a9f,
0x10ac0, 0x10ae6,
@@ -2440,21 +2549,25 @@ CR_Print[] = { 615,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
-0x10cfa, 0x10cff,
+0x10cfa, 0x10d27,
+0x10d30, 0x10d39,
0x10e60, 0x10e7e,
+0x10f00, 0x10f27,
+0x10f30, 0x10f59,
0x11000, 0x1104d,
0x11052, 0x1106f,
0x1107f, 0x110c1,
+0x110cd, 0x110cd,
0x110d0, 0x110e8,
0x110f0, 0x110f9,
0x11100, 0x11134,
-0x11136, 0x11143,
+0x11136, 0x11146,
0x11150, 0x11176,
0x11180, 0x111cd,
0x111d0, 0x111df,
0x111e1, 0x111f4,
0x11200, 0x11211,
-0x11213, 0x1123d,
+0x11213, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -2469,7 +2582,7 @@ CR_Print[] = { 615,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -2477,20 +2590,49 @@ CR_Print[] = { 615,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x11459,
+0x1145b, 0x1145b,
+0x1145d, 0x1145e,
0x11480, 0x114c7,
0x114d0, 0x114d9,
0x11580, 0x115b5,
0x115b8, 0x115dd,
0x11600, 0x11644,
0x11650, 0x11659,
+0x11660, 0x1166c,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x1173f,
+0x11800, 0x1183b,
0x118a0, 0x118f2,
0x118ff, 0x118ff,
+0x11a00, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11aa2,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c45,
+0x11c50, 0x11c6c,
+0x11c70, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef8,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12470, 0x12474,
@@ -2508,10 +2650,15 @@ CR_Print[] = { 615,
0x16b5b, 0x16b61,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e9a,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -2521,8 +2668,9 @@ CR_Print[] = { 615,
0x1d100, 0x1d126,
0x1d129, 0x1d1e8,
0x1d200, 0x1d245,
+0x1d2e0, 0x1d2f3,
0x1d300, 0x1d356,
-0x1d360, 0x1d371,
+0x1d360, 0x1d378,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
0x1d49e, 0x1d49f,
@@ -2546,8 +2694,17 @@ CR_Print[] = { 615,
0x1d7ce, 0x1da8b,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8c7, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
+0x1e95e, 0x1e95f,
+0x1ec71, 0x1ecb4,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -2589,32 +2746,38 @@ CR_Print[] = { 615,
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0f5,
0x1f100, 0x1f10c,
-0x1f110, 0x1f12e,
-0x1f130, 0x1f16b,
-0x1f170, 0x1f19a,
+0x1f110, 0x1f16b,
+0x1f170, 0x1f1ac,
0x1f1e6, 0x1f202,
-0x1f210, 0x1f23a,
+0x1f210, 0x1f23b,
0x1f240, 0x1f248,
0x1f250, 0x1f251,
-0x1f300, 0x1f579,
-0x1f57b, 0x1f5a3,
-0x1f5a5, 0x1f6d0,
+0x1f260, 0x1f265,
+0x1f300, 0x1f6d4,
0x1f6e0, 0x1f6ec,
-0x1f6f0, 0x1f6f3,
+0x1f6f0, 0x1f6f9,
0x1f700, 0x1f773,
-0x1f780, 0x1f7d4,
+0x1f780, 0x1f7d8,
0x1f800, 0x1f80b,
0x1f810, 0x1f847,
0x1f850, 0x1f859,
0x1f860, 0x1f887,
0x1f890, 0x1f8ad,
-0x1f910, 0x1f918,
-0x1f980, 0x1f984,
-0x1f9c0, 0x1f9c0,
+0x1f900, 0x1f90b,
+0x1f910, 0x1f93e,
+0x1f940, 0x1f970,
+0x1f973, 0x1f976,
+0x1f97a, 0x1f97a,
+0x1f97c, 0x1f9a2,
+0x1f9b0, 0x1f9b9,
+0x1f9c0, 0x1f9c2,
+0x1f9d0, 0x1f9ff,
+0x1fa60, 0x1fa6d,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
@@ -2625,7 +2788,7 @@ CR_Print[] = { 615,
/* PROPERTY: 'Punct': POSIX [[:Punct:]] */
static const OnigCodePoint
-CR_Punct[] = { 161,
+CR_Punct[] = { 178,
0x0021, 0x0023,
0x0025, 0x002a,
0x002c, 0x002f,
@@ -2662,7 +2825,10 @@ CR_Punct[] = { 161,
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
+0x09fd, 0x09fd,
+0x0a76, 0x0a76,
0x0af0, 0x0af0,
+0x0c84, 0x0c84,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
@@ -2711,7 +2877,7 @@ CR_Punct[] = { 161,
0x2cfe, 0x2cff,
0x2d70, 0x2d70,
0x2e00, 0x2e2e,
-0x2e30, 0x2e42,
+0x2e30, 0x2e4e,
0x3001, 0x3003,
0x3008, 0x3011,
0x3014, 0x301f,
@@ -2765,28 +2931,42 @@ CR_Punct[] = { 161,
0x10af0, 0x10af6,
0x10b39, 0x10b3f,
0x10b99, 0x10b9c,
+0x10f55, 0x10f59,
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
0x11140, 0x11143,
0x11174, 0x11175,
-0x111c5, 0x111c9,
+0x111c5, 0x111c8,
0x111cd, 0x111cd,
0x111db, 0x111db,
0x111dd, 0x111df,
0x11238, 0x1123d,
0x112a9, 0x112a9,
+0x1144b, 0x1144f,
+0x1145b, 0x1145b,
+0x1145d, 0x1145d,
0x114c6, 0x114c6,
0x115c1, 0x115d7,
0x11641, 0x11643,
+0x11660, 0x1166c,
0x1173c, 0x1173e,
+0x1183b, 0x1183b,
+0x11a3f, 0x11a46,
+0x11a9a, 0x11a9c,
+0x11a9e, 0x11aa2,
+0x11c41, 0x11c45,
+0x11c70, 0x11c71,
+0x11ef7, 0x11ef8,
0x12470, 0x12474,
0x16a6e, 0x16a6f,
0x16af5, 0x16af5,
0x16b37, 0x16b3b,
0x16b44, 0x16b44,
+0x16e97, 0x16e9a,
0x1bc9f, 0x1bc9f,
0x1da87, 0x1da8b,
+0x1e95e, 0x1e95f,
}; /* END of CR_Punct */
/* PROPERTY: 'Space': POSIX [[:Space:]] */
@@ -2806,7 +2986,7 @@ CR_Space[] = { 10,
/* PROPERTY: 'Upper': POSIX [[:Upper:]] */
static const OnigCodePoint
-CR_Upper[] = { 630,
+CR_Upper[] = { 636,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -3083,6 +3263,8 @@ CR_Upper[] = { 630,
0x10c7, 0x10c7,
0x10cd, 0x10cd,
0x13a0, 0x13f5,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -3396,13 +3578,16 @@ CR_Upper[] = { 630,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
-0xa7aa, 0xa7ad,
+0xa7aa, 0xa7ae,
0xa7b0, 0xa7b4,
0xa7b6, 0xa7b6,
+0xa7b8, 0xa7b8,
0xff21, 0xff3a,
0x10400, 0x10427,
+0x104b0, 0x104d3,
0x10c80, 0x10cb2,
0x118a0, 0x118bf,
+0x16e40, 0x16e5f,
0x1d400, 0x1d419,
0x1d434, 0x1d44d,
0x1d468, 0x1d481,
@@ -3434,6 +3619,7 @@ CR_Upper[] = { 630,
0x1d756, 0x1d76e,
0x1d790, 0x1d7a8,
0x1d7ca, 0x1d7ca,
+0x1e900, 0x1e921,
0x1f130, 0x1f149,
0x1f150, 0x1f169,
0x1f170, 0x1f189,
@@ -3449,7 +3635,7 @@ CR_XDigit[] = { 3,
/* PROPERTY: 'Word': POSIX [[:Word:]] */
static const OnigCodePoint
-CR_Word[] = { 654,
+CR_Word[] = { 710,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -3477,14 +3663,14 @@ CR_Word[] = { 654,
0x0483, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x0591, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0669,
0x066e, 0x06d3,
@@ -3496,9 +3682,13 @@ CR_Word[] = { 654,
0x074d, 0x07b1,
0x07c0, 0x07f5,
0x07fa, 0x07fa,
+0x07fd, 0x07fd,
0x0800, 0x082d,
0x0840, 0x085b,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d3, 0x08e1,
0x08e3, 0x0963,
0x0966, 0x096f,
0x0971, 0x0983,
@@ -3515,6 +3705,8 @@ CR_Word[] = { 654,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09e6, 0x09f1,
+0x09fc, 0x09fc,
+0x09fe, 0x09fe,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -3544,7 +3736,7 @@ CR_Word[] = { 654,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
+0x0af9, 0x0aff,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -3576,8 +3768,7 @@ CR_Word[] = { 654,
0x0bd0, 0x0bd0,
0x0bd7, 0x0bd7,
0x0be6, 0x0bef,
-0x0c00, 0x0c03,
-0x0c05, 0x0c0c,
+0x0c00, 0x0c0c,
0x0c0e, 0x0c10,
0x0c12, 0x0c28,
0x0c2a, 0x0c39,
@@ -3588,7 +3779,7 @@ CR_Word[] = { 654,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -3602,14 +3793,13 @@ CR_Word[] = { 654,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
-0x0d12, 0x0d3a,
-0x0d3d, 0x0d44,
+0x0d12, 0x0d44,
0x0d46, 0x0d48,
0x0d4a, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d66, 0x0d6f,
0x0d7a, 0x0d7f,
@@ -3702,7 +3892,7 @@ CR_Word[] = { 654,
0x17e0, 0x17e9,
0x180b, 0x180d,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -3727,11 +3917,13 @@ CR_Word[] = { 654,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1cd0, 0x1cd2,
-0x1cd4, 0x1cf6,
-0x1cf8, 0x1cf9,
-0x1d00, 0x1df5,
-0x1dfc, 0x1f15,
+0x1cd4, 0x1cf9,
+0x1d00, 0x1df9,
+0x1dfb, 0x1f15,
0x1f18, 0x1f1d,
0x1f20, 0x1f45,
0x1f48, 0x1f4d,
@@ -3800,12 +3992,12 @@ CR_Word[] = { 654,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -3815,16 +4007,14 @@ CR_Word[] = { 654,
0xa67f, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa827,
0xa840, 0xa873,
-0xa880, 0xa8c4,
+0xa880, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8e0, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
-0xa900, 0xa92d,
+0xa8fd, 0xa92d,
0xa930, 0xa953,
0xa960, 0xa97c,
0xa980, 0xa9c0,
@@ -3894,7 +4084,7 @@ CR_Word[] = { 654,
0x102a0, 0x102d0,
0x102e0, 0x102e0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
@@ -3902,6 +4092,8 @@ CR_Word[] = { 654,
0x103d1, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -3925,7 +4117,7 @@ CR_Word[] = { 654,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a38, 0x10a3a,
0x10a3f, 0x10a3f,
0x10a60, 0x10a7c,
@@ -3939,6 +4131,11 @@ CR_Word[] = { 654,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f50,
0x11000, 0x11046,
0x11066, 0x1106f,
0x1107f, 0x110ba,
@@ -3946,14 +4143,16 @@ CR_Word[] = { 654,
0x110f0, 0x110f9,
0x11100, 0x11134,
0x11136, 0x1113f,
+0x11144, 0x11146,
0x11150, 0x11173,
0x11176, 0x11176,
0x11180, 0x111c4,
-0x111ca, 0x111cc,
+0x111c9, 0x111cc,
0x111d0, 0x111da,
0x111dc, 0x111dc,
0x11200, 0x11211,
0x11213, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -3968,7 +4167,7 @@ CR_Word[] = { 654,
0x1132a, 0x11330,
0x11332, 0x11333,
0x11335, 0x11339,
-0x1133c, 0x11344,
+0x1133b, 0x11344,
0x11347, 0x11348,
0x1134b, 0x1134d,
0x11350, 0x11350,
@@ -3976,6 +4175,9 @@ CR_Word[] = { 654,
0x1135d, 0x11363,
0x11366, 0x1136c,
0x11370, 0x11374,
+0x11400, 0x1144a,
+0x11450, 0x11459,
+0x1145e, 0x1145e,
0x11480, 0x114c5,
0x114c7, 0x114c7,
0x114d0, 0x114d9,
@@ -3987,12 +4189,39 @@ CR_Word[] = { 654,
0x11650, 0x11659,
0x11680, 0x116b7,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172b,
0x11730, 0x11739,
+0x11800, 0x1183a,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x11a00, 0x11a3e,
+0x11a47, 0x11a47,
+0x11a50, 0x11a83,
+0x11a86, 0x11a99,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -4008,10 +4237,15 @@ CR_Word[] = { 654,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f8f, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -4060,8 +4294,15 @@ CR_Word[] = { 654,
0x1da84, 0x1da84,
0x1da9b, 0x1da9f,
0x1daa1, 0x1daaf,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
0x1e8d0, 0x1e8d6,
+0x1e900, 0x1e94a,
+0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -4102,13 +4343,14 @@ CR_Word[] = { 654,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
}; /* END of CR_Word */
/* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */
static const OnigCodePoint
-CR_Alnum[] = { 648,
+CR_Alnum[] = { 713,
0x0030, 0x0039,
0x0041, 0x005a,
0x0061, 0x007a,
@@ -4136,14 +4378,14 @@ CR_Alnum[] = { 648,
0x048a, 0x052f,
0x0531, 0x0556,
0x0559, 0x0559,
-0x0561, 0x0587,
+0x0560, 0x0588,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
0x05c1, 0x05c2,
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05d0, 0x05ea,
-0x05f0, 0x05f2,
+0x05ef, 0x05f2,
0x0610, 0x061a,
0x0620, 0x0657,
0x0659, 0x0669,
@@ -4160,7 +4402,10 @@ CR_Alnum[] = { 648,
0x0800, 0x0817,
0x081a, 0x082c,
0x0840, 0x0858,
+0x0860, 0x086a,
0x08a0, 0x08b4,
+0x08b6, 0x08bd,
+0x08d4, 0x08df,
0x08e3, 0x08e9,
0x08f0, 0x093b,
0x093d, 0x094c,
@@ -4182,6 +4427,7 @@ CR_Alnum[] = { 648,
0x09dc, 0x09dd,
0x09df, 0x09e3,
0x09e6, 0x09f1,
+0x09fc, 0x09fc,
0x0a01, 0x0a03,
0x0a05, 0x0a0a,
0x0a0f, 0x0a10,
@@ -4210,7 +4456,7 @@ CR_Alnum[] = { 648,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
0x0ae6, 0x0aef,
-0x0af9, 0x0af9,
+0x0af9, 0x0afc,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4254,7 +4500,7 @@ CR_Alnum[] = { 648,
0x0c58, 0x0c5a,
0x0c60, 0x0c63,
0x0c66, 0x0c6f,
-0x0c81, 0x0c83,
+0x0c80, 0x0c83,
0x0c85, 0x0c8c,
0x0c8e, 0x0c90,
0x0c92, 0x0ca8,
@@ -4268,7 +4514,7 @@ CR_Alnum[] = { 648,
0x0ce0, 0x0ce3,
0x0ce6, 0x0cef,
0x0cf1, 0x0cf2,
-0x0d01, 0x0d03,
+0x0d00, 0x0d03,
0x0d05, 0x0d0c,
0x0d0e, 0x0d10,
0x0d12, 0x0d3a,
@@ -4276,7 +4522,7 @@ CR_Alnum[] = { 648,
0x0d46, 0x0d48,
0x0d4a, 0x0d4c,
0x0d4e, 0x0d4e,
-0x0d57, 0x0d57,
+0x0d54, 0x0d57,
0x0d5f, 0x0d63,
0x0d66, 0x0d6f,
0x0d7a, 0x0d7f,
@@ -4371,7 +4617,7 @@ CR_Alnum[] = { 648,
0x17dc, 0x17dc,
0x17e0, 0x17e9,
0x1810, 0x1819,
-0x1820, 0x1877,
+0x1820, 0x1878,
0x1880, 0x18aa,
0x18b0, 0x18f5,
0x1900, 0x191e,
@@ -4398,6 +4644,9 @@ CR_Alnum[] = { 648,
0x1c00, 0x1c35,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
+0x1c80, 0x1c88,
+0x1c90, 0x1cba,
+0x1cbd, 0x1cbf,
0x1ce9, 0x1cec,
0x1cee, 0x1cf3,
0x1cf5, 0x1cf6,
@@ -4469,12 +4718,12 @@ CR_Alnum[] = { 648,
0x309d, 0x309f,
0x30a1, 0x30fa,
0x30fc, 0x30ff,
-0x3105, 0x312d,
+0x3105, 0x312f,
0x3131, 0x318e,
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
-0x4e00, 0x9fd5,
+0x4e00, 0x9fef,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -4484,18 +4733,18 @@ CR_Alnum[] = { 648,
0xa67f, 0xa6ef,
0xa717, 0xa71f,
0xa722, 0xa788,
-0xa78b, 0xa7ad,
-0xa7b0, 0xa7b7,
+0xa78b, 0xa7b9,
0xa7f7, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c3,
+0xa8c5, 0xa8c5,
0xa8d0, 0xa8d9,
0xa8f2, 0xa8f7,
0xa8fb, 0xa8fb,
-0xa8fd, 0xa8fd,
+0xa8fd, 0xa8fe,
0xa900, 0xa92a,
0xa930, 0xa952,
0xa960, 0xa97c,
@@ -4563,7 +4812,7 @@ CR_Alnum[] = { 648,
0x10280, 0x1029c,
0x102a0, 0x102d0,
0x10300, 0x1031f,
-0x10330, 0x1034a,
+0x1032d, 0x1034a,
0x10350, 0x1037a,
0x10380, 0x1039d,
0x103a0, 0x103c3,
@@ -4571,6 +4820,8 @@ CR_Alnum[] = { 648,
0x103d1, 0x103d5,
0x10400, 0x1049d,
0x104a0, 0x104a9,
+0x104b0, 0x104d3,
+0x104d8, 0x104fb,
0x10500, 0x10527,
0x10530, 0x10563,
0x10600, 0x10736,
@@ -4594,7 +4845,7 @@ CR_Alnum[] = { 648,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
0x10a15, 0x10a17,
-0x10a19, 0x10a33,
+0x10a19, 0x10a35,
0x10a60, 0x10a7c,
0x10a80, 0x10a9c,
0x10ac0, 0x10ac7,
@@ -4606,6 +4857,11 @@ CR_Alnum[] = { 648,
0x10c00, 0x10c48,
0x10c80, 0x10cb2,
0x10cc0, 0x10cf2,
+0x10d00, 0x10d27,
+0x10d30, 0x10d39,
+0x10f00, 0x10f1c,
+0x10f27, 0x10f27,
+0x10f30, 0x10f45,
0x11000, 0x11045,
0x11066, 0x1106f,
0x11082, 0x110b8,
@@ -4613,6 +4869,7 @@ CR_Alnum[] = { 648,
0x110f0, 0x110f9,
0x11100, 0x11132,
0x11136, 0x1113f,
+0x11144, 0x11146,
0x11150, 0x11172,
0x11176, 0x11176,
0x11180, 0x111bf,
@@ -4622,6 +4879,7 @@ CR_Alnum[] = { 648,
0x11200, 0x11211,
0x11213, 0x11234,
0x11237, 0x11237,
+0x1123e, 0x1123e,
0x11280, 0x11286,
0x11288, 0x11288,
0x1128a, 0x1128d,
@@ -4642,6 +4900,10 @@ CR_Alnum[] = { 648,
0x11350, 0x11350,
0x11357, 0x11357,
0x1135d, 0x11363,
+0x11400, 0x11441,
+0x11443, 0x11445,
+0x11447, 0x1144a,
+0x11450, 0x11459,
0x11480, 0x114c1,
0x114c4, 0x114c5,
0x114c7, 0x114c7,
@@ -4655,12 +4917,43 @@ CR_Alnum[] = { 648,
0x11650, 0x11659,
0x11680, 0x116b5,
0x116c0, 0x116c9,
-0x11700, 0x11719,
+0x11700, 0x1171a,
0x1171d, 0x1172a,
0x11730, 0x11739,
+0x11800, 0x11838,
0x118a0, 0x118e9,
0x118ff, 0x118ff,
+0x11a00, 0x11a32,
+0x11a35, 0x11a3e,
+0x11a50, 0x11a83,
+0x11a86, 0x11a97,
+0x11a9d, 0x11a9d,
0x11ac0, 0x11af8,
+0x11c00, 0x11c08,
+0x11c0a, 0x11c36,
+0x11c38, 0x11c3e,
+0x11c40, 0x11c40,
+0x11c50, 0x11c59,
+0x11c72, 0x11c8f,
+0x11c92, 0x11ca7,
+0x11ca9, 0x11cb6,
+0x11d00, 0x11d06,
+0x11d08, 0x11d09,
+0x11d0b, 0x11d36,
+0x11d3a, 0x11d3a,
+0x11d3c, 0x11d3d,
+0x11d3f, 0x11d41,
+0x11d43, 0x11d43,
+0x11d46, 0x11d47,
+0x11d50, 0x11d59,
+0x11d60, 0x11d65,
+0x11d67, 0x11d68,
+0x11d6a, 0x11d8e,
+0x11d90, 0x11d91,
+0x11d93, 0x11d96,
+0x11d98, 0x11d98,
+0x11da0, 0x11da9,
+0x11ee0, 0x11ef6,
0x12000, 0x12399,
0x12400, 0x1246e,
0x12480, 0x12543,
@@ -4675,10 +4968,15 @@ CR_Alnum[] = { 648,
0x16b50, 0x16b59,
0x16b63, 0x16b77,
0x16b7d, 0x16b8f,
+0x16e40, 0x16e7f,
0x16f00, 0x16f44,
0x16f50, 0x16f7e,
0x16f93, 0x16f9f,
-0x1b000, 0x1b001,
+0x16fe0, 0x16fe1,
+0x17000, 0x187f1,
+0x18800, 0x18af2,
+0x1b000, 0x1b11e,
+0x1b170, 0x1b2fb,
0x1bc00, 0x1bc6a,
0x1bc70, 0x1bc7c,
0x1bc80, 0x1bc88,
@@ -4715,7 +5013,15 @@ CR_Alnum[] = { 648,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
+0x1e000, 0x1e006,
+0x1e008, 0x1e018,
+0x1e01b, 0x1e021,
+0x1e023, 0x1e024,
+0x1e026, 0x1e02a,
0x1e800, 0x1e8c4,
+0x1e900, 0x1e943,
+0x1e947, 0x1e947,
+0x1e950, 0x1e959,
0x1ee00, 0x1ee03,
0x1ee05, 0x1ee1f,
0x1ee21, 0x1ee22,
@@ -4756,6 +5062,7 @@ CR_Alnum[] = { 648,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2b820, 0x2cea1,
+0x2ceb0, 0x2ebe0,
0x2f800, 0x2fa1d,
}; /* END of CR_Alnum */
@@ -4785,6 +5092,9 @@ const CodeRanges[] = {
CR_ASCII,
};
+#define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s)
+
+
#define TOTAL_KEYWORDS 15
#define MIN_WORD_LENGTH 4
#define MAX_WORD_LENGTH 7
@@ -4820,7 +5130,7 @@ static unsigned char gperf_downcase[256] =
#ifndef GPERF_CASE_STRNCMP
#define GPERF_CASE_STRNCMP 1
static int
-gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)
+gperf_case_strncmp (register const char *s1, register const char *s2, register size_t n)
{
for (; n > 0;)
{
@@ -4845,7 +5155,7 @@ inline
#endif
#endif
static unsigned int
-hash (register const char *str, register unsigned int len)
+hash (register const char *str, register size_t len)
{
static const unsigned char asso_values[] =
{
@@ -4879,54 +5189,95 @@ hash (register const char *str, register unsigned int len)
return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]];
}
-const struct PropertyNameCtype *
-unicode_lookup_property_name (register const char *str, register unsigned int len)
+struct unicode_prop_name_pool_t
+ {
+ char unicode_prop_name_pool_str5[sizeof("print")];
+ char unicode_prop_name_pool_str6[sizeof("punct")];
+ char unicode_prop_name_pool_str7[sizeof("alpha")];
+ char unicode_prop_name_pool_str8[sizeof("alnum")];
+ char unicode_prop_name_pool_str9[sizeof("xdigit")];
+ char unicode_prop_name_pool_str10[sizeof("newline")];
+ char unicode_prop_name_pool_str11[sizeof("upper")];
+ char unicode_prop_name_pool_str12[sizeof("ascii")];
+ char unicode_prop_name_pool_str13[sizeof("cntrl")];
+ char unicode_prop_name_pool_str14[sizeof("space")];
+ char unicode_prop_name_pool_str15[sizeof("word")];
+ char unicode_prop_name_pool_str16[sizeof("lower")];
+ char unicode_prop_name_pool_str17[sizeof("graph")];
+ char unicode_prop_name_pool_str18[sizeof("digit")];
+ char unicode_prop_name_pool_str19[sizeof("blank")];
+ };
+static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents =
+ {
+ "print",
+ "punct",
+ "alpha",
+ "alnum",
+ "xdigit",
+ "newline",
+ "upper",
+ "ascii",
+ "cntrl",
+ "space",
+ "word",
+ "lower",
+ "graph",
+ "digit",
+ "blank"
+ };
+#define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents)
+static const struct PoolPropertyNameCtype *
+unicode_lookup_property_name (register const char *str, register size_t len)
{
- static const struct PropertyNameCtype wordlist[] =
+ static const struct PoolPropertyNameCtype wordlist[] =
{
- {""}, {""}, {""}, {""}, {""},
+ {-1}, {-1}, {-1}, {-1}, {-1},
- {"print", 7},
+ {pool_offset(5), 7},
- {"punct", 8},
+ {pool_offset(6), 8},
- {"alpha", 1},
+ {pool_offset(7), 1},
- {"alnum", 13},
+ {pool_offset(8), 13},
- {"xdigit", 11},
+ {pool_offset(9), 11},
- {"newline", 0},
+ {pool_offset(10), 0},
- {"upper", 10},
+ {pool_offset(11), 10},
- {"ascii", 14},
+ {pool_offset(12), 14},
- {"cntrl", 3},
+ {pool_offset(13), 3},
- {"space", 9},
+ {pool_offset(14), 9},
- {"word", 12},
+ {pool_offset(15), 12},
- {"lower", 6},
+ {pool_offset(16), 6},
- {"graph", 5},
+ {pool_offset(17), 5},
- {"digit", 4},
+ {pool_offset(18), 4},
- {"blank", 2}
+ {pool_offset(19), 2}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
{
- unsigned int key = hash (str, len);
+ register unsigned int key = hash (str, len);
if (key <= MAX_HASH_VALUE)
{
- register const char *s = wordlist[key].name;
+ register int o = wordlist[key].name;
+ if (o >= 0)
+ {
+ register const char *s = o + unicode_prop_name_pool;
- if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
- return &wordlist[key];
+ if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
+ return &wordlist[key];
+ }
}
}
return 0;
@@ -4934,7 +5285,21 @@ unicode_lookup_property_name (register const char *str, register unsigned int le
-#define PROPERTY_VERSION 8_0_0
-
#define PROPERTY_NAME_MAX_SIZE 17
#define CODE_RANGES_NUM 15
+
+#define PROP_INDEX_NEWLINE 0
+#define PROP_INDEX_ALPHA 1
+#define PROP_INDEX_BLANK 2
+#define PROP_INDEX_CNTRL 3
+#define PROP_INDEX_DIGIT 4
+#define PROP_INDEX_GRAPH 5
+#define PROP_INDEX_LOWER 6
+#define PROP_INDEX_PRINT 7
+#define PROP_INDEX_PUNCT 8
+#define PROP_INDEX_SPACE 9
+#define PROP_INDEX_UPPER 10
+#define PROP_INDEX_XDIGIT 11
+#define PROP_INDEX_WORD 12
+#define PROP_INDEX_ALNUM 13
+#define PROP_INDEX_ASCII 14
diff --git a/ext/mbstring/oniguruma/src/unicode_unfold_key.c b/ext/mbstring/oniguruma/src/unicode_unfold_key.c
index 15302caada..b4c0318ed4 100644
--- a/ext/mbstring/oniguruma/src/unicode_unfold_key.c
+++ b/ext/mbstring/oniguruma/src/unicode_unfold_key.c
@@ -1,21 +1,47 @@
/* This file was converted by gperf_unfold_key_conv.py
from gperf output file. */
-/* ANSI-C code produced by gperf version 3.0.4 */
-/* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf */
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: /usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N onigenc_unicode_unfold_key unicode_unfold_key.gperf */
/* Computed positions: -k'1-3' */
/* This gperf source file was generated by make_unicode_fold_data.py */
+
+/*-
+ * Copyright (c) 2017-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
#include <string.h>
#include "regenc.h"
-#define TOTAL_KEYWORDS 1321
+#define TOTAL_KEYWORDS 1480
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 3
-#define MIN_HASH_VALUE 11
-#define MAX_HASH_VALUE 1544
-/* maximum key range = 1534, duplicates = 0 */
+#define MIN_HASH_VALUE 10
+#define MAX_HASH_VALUE 1993
+/* maximum key range = 1984, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -30,2782 +56,3123 @@ hash(OnigCodePoint codes[])
{
static const unsigned short asso_values[] =
{
- 8, 6, 2, 124, 5, 1, 36, 1545, 1545, 1545,
- 1545, 1545, 1545, 11, 1545, 1545, 1545, 16, 1545, 1545,
- 562, 1545, 1545, 1545, 1545, 77, 1545, 1545, 1545, 1545,
- 1545, 0, 3, 1545, 61, 628, 1379, 206, 1378, 607,
- 1372, 597, 1399, 569, 1371, 4, 1365, 559, 1359, 548,
- 1353, 836, 1393, 830, 1345, 587, 1344, 581, 1336, 539,
- 1335, 530, 982, 521, 970, 818, 1389, 723, 1329, 351,
- 1320, 333, 1312, 293, 1311, 320, 1304, 176, 589, 311,
- 1165, 302, 1384, 1243, 579, 780, 173, 1230, 147, 1213,
- 75, 1219, 1296, 1009, 1293, 1282, 1267, 1217, 1030, 331,
- 1291, 1210, 1286, 998, 500, 993, 1359, 806, 1281, 510,
- 1048, 501, 662, 797, 754, 792, 372, 775, 290, 768,
- 228, 755, 292, 1159, 489, 1135, 267, 1229, 233, 1053,
- 222, 728, 159, 708, 484, 695, 155, 995, 247, 686,
- 859, 674, 747, 618, 561, 381, 313, 987, 167, 975,
- 165, 1279, 388, 1207, 157, 765, 900, 1007, 794, 476,
- 21, 1198, 1271, 490, 1265, 478, 1245, 18, 8, 253,
- 1188, 652, 7, 245, 1185, 415, 1256, 226, 1177, 54,
- 1169, 214, 1155, 195, 607, 42, 963, 30, 1147, 185,
- 1139, 465, 1129, 451, 1121, 86, 948, 136, 940, 76,
- 909, 66, 664, 126, 644, 116, 632, 106, 930, 166,
- 925, 149, 915, 96, 903, 390, 364, 283, 746, 273,
- 1098, 372, 1095, 265, 528, 361, 311, 897, 1195, 396,
- 1103, 425, 1094, 1088, 893, 887, 573, 407, 237, 1083,
- 934, 1145, 432, 1076, 679, 714, 956, 1112, 509, 880,
- 62, 873, 157, 864, 276, 1069, 112, 855, 156, 1063,
- 1545, 848, 152, 1057, 1545, 1047, 145, 1041, 144, 1035,
- 49, 1025, 142, 1256, 1545, 1239, 355, 342, 21, 1019,
- 14, 1233, 459, 843, 822, 740, 38, 553, 96, 448,
- 8
+ 9, 5, 2, 214, 176, 1, 110, 1994, 1994, 1994,
+ 1994, 1994, 1994, 13, 1994, 1994, 1994, 77, 1994, 1994,
+ 71, 1994, 1994, 1994, 1994, 86, 1994, 1994, 1994, 7,
+ 1994, 0, 3, 1994, 50, 560, 1509, 132, 1501, 552,
+ 1492, 546, 1586, 538, 1491, 4, 1480, 518, 1475, 510,
+ 1467, 879, 1578, 855, 1459, 527, 1426, 234, 1067, 497,
+ 1458, 486, 1450, 352, 1436, 831, 1577, 783, 285, 639,
+ 1576, 629, 1567, 575, 1566, 609, 1556, 567, 1425, 598,
+ 1151, 587, 1064, 461, 668, 1035, 427, 1414, 160, 1411,
+ 21, 1404, 1253, 1289, 1416, 1537, 482, 1402, 669, 1391,
+ 1302, 1305, 1277, 1095, 1220, 1076, 261, 869, 1387, 475,
+ 1340, 151, 327, 845, 859, 824, 731, 816, 539, 715,
+ 212, 707, 83, 1297, 1046, 1278, 529, 1380, 520, 1352,
+ 184, 1086, 235, 1073, 275, 1052, 193, 1258, 8, 1060,
+ 655, 1030, 513, 1022, 393, 254, 344, 1265, 203, 1246,
+ 193, 1548, 15, 1376, 120, 1545, 1591, 525, 1590, 232,
+ 1583, 1365, 1465, 464, 1011, 451, 1353, 18, 6, 383,
+ 1236, 802, 8, 438, 940, 163, 1533, 427, 858, 244,
+ 1225, 360, 1212, 333, 575, 219, 1002, 206, 1209, 320,
+ 735, 140, 1199, 410, 1188, 73, 973, 103, 965, 63,
+ 944, 53, 791, 196, 788, 116, 695, 93, 921, 83,
+ 930, 182, 762, 31, 685, 311, 913, 268, 671, 44,
+ 906, 302, 1186, 293, 1180, 280, 1154, 885, 1354, 660,
+ 760, 650, 1174, 1169, 402, 897, 641, 726, 1162, 1153,
+ 622, 1316, 994, 1143, 664, 1134, 447, 173, 375, 1124,
+ 0, 1111, 371, 956, 156, 1270, 147, 1117, 113, 504,
+ 1994, 1105, 112, 1347, 1994, 1339, 75, 1335, 65, 1331,
+ 591, 1096, 45, 1393, 1994, 1198, 239, 1324, 26, 984,
+ 18, 1528, 40, 1517, 124, 421, 27, 904, 91, 137,
+ 16
};
return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)];
}
-#ifdef __GNUC__
-__inline
-#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__
-__attribute__ ((__gnu_inline__))
-#endif
-#endif
const struct ByUnfoldKey *
-unicode_unfold_key(OnigCodePoint code)
+onigenc_unicode_unfold_key(OnigCodePoint code)
{
static const struct ByUnfoldKey wordlist[] =
{
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0},
- {0x1040a, 3267, 1},
+ {0x1040a, 3420, 1},
+
+ {0x01d7, 444, 1},
+
+ {0x1fd7, 31, 3},
- {0x1e0a, 1727, 1},
+ {0x1e0a, 1876, 1},
- {0x040a, 1016, 1},
+ {0x040a, 1026, 1},
{0x010a, 186, 1},
- {0x1f0a, 2088, 1},
+ {0x1f0a, 2237, 1},
- {0x2c0a, 2451, 1},
+ {0x2c0a, 2600, 1},
+
+ {0x1f85, 154, 2},
{0x0189, 619, 1},
{0x1f89, 134, 2},
- {0x1f85, 154, 2},
-
- {0x0389, 733, 1},
+ {0x2c67, 2720, 1},
- {0x03ff, 724, 1},
+ {0x1c85, 951, 1},
- {0xab89, 1523, 1},
+ {0xab85, 1660, 1},
- {0xab85, 1511, 1},
+ {0x10c85, 3633, 1},
- {0x10c89, 3384, 1},
+ {0xab89, 1672, 1},
- {0x10c85, 3372, 1},
+ {0x10c89, 3645, 1},
- {0x1e84, 1911, 1},
+ {0x1e84, 2060, 1},
- {0x03f5, 752, 1},
+ {0x2c75, 2732, 1},
{0x0184, 360, 1},
{0x1f84, 149, 2},
- {0x2c84, 2592, 1},
+ {0x2c84, 2741, 1},
- {0x017d, 351, 1},
+ {0xab75, 1612, 1},
- {0x1ff3, 96, 2},
+ {0xa784, 3255, 1},
- {0xab84, 1508, 1},
+ {0x1c84, 951, 1},
- {0xa784, 3105, 1},
+ {0xab84, 1657, 1},
- {0x10c84, 3369, 1},
+ {0x10c84, 3630, 1},
- {0xab7d, 1487, 1},
+ {0x104b2, 3516, 1},
- {0xa77d, 1706, 1},
+ {0x1ff3, 96, 2},
- {0x1e98, 38, 2},
+ {0x1ffb, 2414, 1},
- {0x0498, 1106, 1},
+ {0x1eb2, 2114, 1},
- {0x0198, 375, 1},
+ {0x04b2, 1156, 1},
- {0x1f98, 169, 2},
+ {0x01b2, 697, 1},
- {0x2c98, 2622, 1},
+ {0x1fb2, 249, 2},
- {0x0398, 762, 1},
+ {0x2cb2, 2810, 1},
- {0xa684, 2940, 1},
+ {0xa684, 3090, 1},
- {0xab98, 1568, 1},
+ {0xa7b2, 706, 1},
- {0xa798, 3123, 1},
+ {0x1cb2, 1561, 1},
- {0x10c98, 3429, 1},
+ {0xabb2, 1795, 1},
- {0x050a, 1277, 1},
+ {0x10cb2, 3768, 1},
- {0x1ffb, 2265, 1},
+ {0x104b8, 3534, 1},
- {0x1e96, 16, 2},
+ {0x01f7, 414, 1},
- {0x0496, 1103, 1},
+ {0x1ff7, 67, 3},
- {0x0196, 652, 1},
+ {0x1eb8, 2123, 1},
- {0x1f96, 199, 2},
+ {0x04b8, 1165, 1},
- {0x2c96, 2619, 1},
+ {0x01b8, 408, 1},
- {0x0396, 756, 1},
+ {0x1fb8, 2417, 1},
- {0xa698, 2970, 1},
+ {0x2cb8, 2819, 1},
- {0xab96, 1562, 1},
+ {0x2ced, 2888, 1},
- {0xa796, 3120, 1},
+ {0xa7b8, 3306, 1},
- {0x10c96, 3423, 1},
+ {0x1cb8, 1579, 1},
- {0x1feb, 2259, 1},
+ {0xabb8, 1813, 1},
- {0x2ceb, 2736, 1},
+ {0x1ea6, 2096, 1},
- {0x1e90, 1929, 1},
+ {0x04a6, 1138, 1},
- {0x0490, 1094, 1},
+ {0x01a6, 679, 1},
- {0x0190, 628, 1},
+ {0x1fa6, 239, 2},
- {0x1f90, 169, 2},
+ {0x2ca6, 2792, 1},
- {0x2c90, 2610, 1},
+ {0x2167, 2462, 1},
- {0x0390, 25, 3},
+ {0xa7a6, 3294, 1},
- {0xa696, 2967, 1},
+ {0x1ca6, 1525, 1},
- {0xab90, 1544, 1},
+ {0xaba6, 1759, 1},
- {0xa790, 3114, 1},
+ {0x10ca6, 3732, 1},
- {0x10c90, 3405, 1},
+ {0x1ea4, 2093, 1},
- {0x01d7, 444, 1},
+ {0x04a4, 1135, 1},
- {0x1fd7, 31, 3},
+ {0x01a4, 390, 1},
- {0x1ea6, 1947, 1},
+ {0x1fa4, 229, 2},
- {0x04a6, 1127, 1},
+ {0x2ca4, 2789, 1},
- {0x01a6, 676, 1},
+ {0x1fe9, 2432, 1},
- {0x1fa6, 239, 2},
+ {0xa7a4, 3291, 1},
- {0x2ca6, 2643, 1},
+ {0x1ca4, 1519, 1},
- {0x03a6, 810, 1},
+ {0xaba4, 1753, 1},
- {0xa690, 2958, 1},
+ {0x10ca4, 3726, 1},
- {0xaba6, 1610, 1},
+ {0x1ea0, 2087, 1},
- {0xa7a6, 3144, 1},
+ {0x04a0, 1129, 1},
- {0x10ca6, 3471, 1},
+ {0x01a0, 384, 1},
- {0x1ea4, 1944, 1},
+ {0x1fa0, 209, 2},
- {0x04a4, 1124, 1},
+ {0x2ca0, 2783, 1},
- {0x01a4, 390, 1},
+ {0x1fe7, 47, 3},
- {0x1fa4, 229, 2},
+ {0xa7a0, 3285, 1},
- {0x2ca4, 2640, 1},
+ {0x1ca0, 1507, 1},
- {0x03a4, 804, 1},
+ {0xaba0, 1741, 1},
- {0x10a6, 2763, 1},
+ {0x10ca0, 3714, 1},
- {0xaba4, 1604, 1},
+ {0x1eae, 2108, 1},
- {0xa7a4, 3141, 1},
+ {0x04ae, 1150, 1},
- {0x10ca4, 3465, 1},
+ {0x01ae, 688, 1},
- {0x1ea0, 1938, 1},
+ {0x1fae, 239, 2},
- {0x04a0, 1118, 1},
+ {0x2cae, 2804, 1},
- {0x01a0, 384, 1},
+ {0x0057, 65, 1},
- {0x1fa0, 209, 2},
+ {0xa7ae, 655, 1},
- {0x2ca0, 2634, 1},
+ {0x1cae, 1549, 1},
- {0x03a0, 792, 1},
+ {0xabae, 1783, 1},
- {0x10a4, 2757, 1},
+ {0x10cae, 3756, 1},
- {0xaba0, 1592, 1},
+ {0x1eac, 2105, 1},
- {0xa7a0, 3135, 1},
+ {0x04ac, 1147, 1},
- {0x10ca0, 3453, 1},
+ {0x01ac, 396, 1},
- {0x1eb2, 1965, 1},
+ {0x1fac, 229, 2},
- {0x04b2, 1145, 1},
+ {0x2cac, 2801, 1},
- {0x01b2, 694, 1},
+ {0x13fb, 1846, 1},
- {0x1fb2, 249, 2},
+ {0xa7ac, 637, 1},
- {0x2cb2, 2661, 1},
+ {0x1cac, 1543, 1},
- {0x03fd, 718, 1},
+ {0xabac, 1777, 1},
- {0x10a0, 2745, 1},
+ {0x10cac, 3750, 1},
- {0xabb2, 1646, 1},
+ {0x1ea2, 2090, 1},
- {0xa7b2, 703, 1},
+ {0x04a2, 1132, 1},
- {0x10cb2, 3507, 1},
+ {0x01a2, 387, 1},
- {0x1eac, 1956, 1},
+ {0x1fa2, 219, 2},
- {0x04ac, 1136, 1},
+ {0x2ca2, 2786, 1},
- {0x01ac, 396, 1},
+ {0x10b2, 2948, 1},
- {0x1fac, 229, 2},
+ {0xa7a2, 3288, 1},
- {0x2cac, 2652, 1},
+ {0x1ca2, 1513, 1},
- {0x0537, 1352, 1},
+ {0xaba2, 1747, 1},
- {0x10b2, 2799, 1},
+ {0x10ca2, 3720, 1},
- {0xabac, 1628, 1},
+ {0x118b2, 3825, 1},
- {0xa7ac, 637, 1},
+ {0x050a, 1288, 1},
- {0x10cac, 3489, 1},
+ {0x1fe3, 41, 3},
- {0x1eaa, 1953, 1},
+ {0x1eaa, 2102, 1},
- {0x04aa, 1133, 1},
+ {0x04aa, 1144, 1},
- {0x00dd, 162, 1},
+ {0x00df, 24, 2},
{0x1faa, 219, 2},
- {0x2caa, 2649, 1},
+ {0x2caa, 2798, 1},
- {0x03aa, 824, 1},
+ {0x10b8, 2966, 1},
- {0x10ac, 2781, 1},
+ {0xa7aa, 646, 1},
- {0xabaa, 1622, 1},
+ {0x1caa, 1537, 1},
- {0xa7aa, 646, 1},
+ {0xabaa, 1771, 1},
- {0x10caa, 3483, 1},
+ {0x10caa, 3744, 1},
- {0x1ea8, 1950, 1},
+ {0x118b8, 3843, 1},
- {0x04a8, 1130, 1},
+ {0x1ff9, 2402, 1},
- {0x020a, 517, 1},
+ {0xab77, 1618, 1},
- {0x1fa8, 209, 2},
+ {0x10402, 3396, 1},
- {0x2ca8, 2646, 1},
+ {0x10a6, 2912, 1},
- {0x03a8, 817, 1},
+ {0x0537, 1363, 1},
- {0x10aa, 2775, 1},
+ {0x1e02, 1864, 1},
- {0xaba8, 1616, 1},
+ {0x0402, 1002, 1},
- {0xa7a8, 3147, 1},
+ {0x0102, 174, 1},
- {0x10ca8, 3477, 1},
+ {0x118a6, 3789, 1},
- {0x1ea2, 1941, 1},
+ {0x2c02, 2576, 1},
- {0x04a2, 1121, 1},
+ {0x1efe, 2228, 1},
- {0x01a2, 387, 1},
+ {0x04fe, 1270, 1},
- {0x1fa2, 219, 2},
+ {0x01fe, 499, 1},
- {0x2ca2, 2637, 1},
+ {0x10a4, 2906, 1},
- {0x118a6, 3528, 1},
+ {0x049c, 1123, 1},
- {0x10a8, 2769, 1},
+ {0x019c, 664, 1},
- {0xaba2, 1598, 1},
+ {0x1f9c, 189, 2},
- {0xa7a2, 3138, 1},
+ {0x2c9c, 2777, 1},
- {0x10ca2, 3459, 1},
+ {0x118a4, 3783, 1},
- {0x2ced, 2739, 1},
+ {0xa79c, 3279, 1},
- {0x1fe9, 2283, 1},
+ {0x1c9c, 1495, 1},
- {0x1fe7, 47, 3},
+ {0xab9c, 1729, 1},
- {0x1eb0, 1962, 1},
+ {0x10c9c, 3702, 1},
- {0x04b0, 1142, 1},
+ {0x10a0, 2894, 1},
- {0x118a4, 3522, 1},
+ {0x1e4c, 1975, 1},
- {0x10a2, 2751, 1},
+ {0x00dd, 162, 1},
- {0x2cb0, 2658, 1},
+ {0x014c, 279, 1},
- {0x03b0, 41, 3},
+ {0x1f4c, 2333, 1},
- {0x1fe3, 41, 3},
+ {0x118a0, 3771, 1},
- {0xabb0, 1640, 1},
+ {0x004c, 31, 1},
- {0xa7b0, 706, 1},
+ {0xa74c, 3186, 1},
- {0x10cb0, 3501, 1},
+ {0x01db, 450, 1},
- {0x01d9, 447, 1},
+ {0x1fdb, 2396, 1},
- {0x1fd9, 2277, 1},
+ {0x10ae, 2936, 1},
- {0x118a0, 3510, 1},
+ {0x00db, 156, 1},
- {0x00df, 24, 2},
+ {0x13fd, 1852, 1},
- {0x00d9, 150, 1},
+ {0x1e8c, 2072, 1},
- {0xab77, 1469, 1},
+ {0x048c, 1099, 1},
- {0x10b0, 2793, 1},
+ {0x118ae, 3813, 1},
- {0x1eae, 1959, 1},
+ {0x1f8c, 149, 2},
- {0x04ae, 1139, 1},
+ {0x2c8c, 2753, 1},
- {0x01ae, 685, 1},
+ {0xff37, 3378, 1},
- {0x1fae, 239, 2},
+ {0xa64c, 3033, 1},
- {0x2cae, 2655, 1},
+ {0x10ac, 2930, 1},
- {0x118b2, 3564, 1},
+ {0xab8c, 1681, 1},
- {0xab73, 1457, 1},
+ {0x10c8c, 3654, 1},
- {0xabae, 1634, 1},
+ {0x1ed4, 2165, 1},
- {0xab71, 1451, 1},
+ {0x04d4, 1207, 1},
- {0x10cae, 3495, 1},
+ {0x118ac, 3807, 1},
- {0x1e2a, 1775, 1},
+ {0x24b8, 2498, 1},
- {0x042a, 968, 1},
+ {0x2cd4, 2861, 1},
- {0x012a, 234, 1},
+ {0x00d4, 138, 1},
- {0x1f2a, 2130, 1},
+ {0x104b0, 3510, 1},
- {0x2c2a, 2547, 1},
+ {0x10a2, 2900, 1},
- {0x118ac, 3546, 1},
+ {0xa68c, 3102, 1},
- {0x10ae, 2787, 1},
+ {0x1eb0, 2111, 1},
- {0x0535, 1346, 1},
+ {0x04b0, 1153, 1},
- {0xa72a, 2988, 1},
+ {0x0389, 736, 1},
- {0x1e9a, 0, 2},
+ {0x118a2, 3777, 1},
- {0x049a, 1109, 1},
+ {0x2cb0, 2807, 1},
- {0xff37, 3225, 1},
+ {0x1f5f, 2348, 1},
- {0x1f9a, 179, 2},
+ {0xa7b0, 709, 1},
- {0x2c9a, 2625, 1},
+ {0x1cb0, 1555, 1},
- {0x039a, 772, 1},
+ {0xabb0, 1789, 1},
- {0x118aa, 3540, 1},
+ {0x10cb0, 3762, 1},
- {0xab9a, 1574, 1},
+ {0x03ff, 727, 1},
- {0xa79a, 3126, 1},
+ {0x10aa, 2924, 1},
- {0x10c9a, 3435, 1},
+ {0x03f5, 755, 1},
- {0x1e94, 1935, 1},
+ {0x13f9, 1840, 1},
- {0x0494, 1100, 1},
+ {0x1ea8, 2099, 1},
- {0x0194, 640, 1},
+ {0x04a8, 1141, 1},
- {0x1f94, 189, 2},
+ {0x118aa, 3801, 1},
- {0x2c94, 2616, 1},
+ {0x1fa8, 209, 2},
- {0x0394, 749, 1},
+ {0x2ca8, 2795, 1},
- {0x118a8, 3534, 1},
+ {0xab73, 1606, 1},
- {0xab94, 1556, 1},
+ {0xa7a8, 3297, 1},
- {0xa69a, 2973, 1},
+ {0x1ca8, 1531, 1},
- {0x10c94, 3417, 1},
+ {0xaba8, 1765, 1},
- {0x10402, 3243, 1},
+ {0x10ca8, 3738, 1},
- {0x1e02, 1715, 1},
+ {0x1e98, 38, 2},
- {0x0402, 992, 1},
+ {0x0498, 1117, 1},
- {0x0102, 174, 1},
+ {0x0198, 375, 1},
- {0x0533, 1340, 1},
+ {0x1f98, 169, 2},
- {0x2c02, 2427, 1},
+ {0x2c98, 2771, 1},
- {0x118a2, 3516, 1},
+ {0xab71, 1600, 1},
- {0x052a, 1325, 1},
+ {0xa798, 3273, 1},
- {0xa694, 2964, 1},
+ {0x1c98, 1483, 1},
- {0x1e92, 1932, 1},
+ {0xab98, 1717, 1},
- {0x0492, 1097, 1},
+ {0x10c98, 3690, 1},
- {0x2165, 2307, 1},
+ {0x03f7, 887, 1},
- {0x1f92, 179, 2},
+ {0x0055, 59, 1},
- {0x2c92, 2613, 1},
+ {0x020a, 517, 1},
- {0x0392, 742, 1},
+ {0x1e96, 16, 2},
- {0x2161, 2295, 1},
+ {0x0496, 1114, 1},
- {0xab92, 1550, 1},
+ {0x0196, 652, 1},
- {0xa792, 3117, 1},
+ {0x1f96, 199, 2},
- {0x10c92, 3411, 1},
+ {0x2c96, 2768, 1},
- {0x118b0, 3558, 1},
+ {0xa698, 3120, 1},
- {0x1f5f, 2199, 1},
+ {0xa796, 3270, 1},
- {0x1e8e, 1926, 1},
+ {0x1c96, 1477, 1},
- {0x048e, 1091, 1},
+ {0xab96, 1711, 1},
- {0x018e, 453, 1},
+ {0x10c96, 3684, 1},
- {0x1f8e, 159, 2},
+ {0x03a6, 813, 1},
- {0x2c8e, 2607, 1},
+ {0x16e57, 3936, 1},
- {0x038e, 833, 1},
+ {0x10416, 3456, 1},
- {0xa692, 2961, 1},
+ {0x1e7c, 2048, 1},
- {0xab8e, 1538, 1},
+ {0x047c, 1087, 1},
- {0x0055, 59, 1},
+ {0x1e16, 1894, 1},
- {0x10c8e, 3399, 1},
+ {0x0416, 913, 1},
- {0x1f5d, 2196, 1},
+ {0x0116, 204, 1},
- {0x212a, 27, 1},
+ {0xa696, 3117, 1},
- {0x04cb, 1181, 1},
+ {0x2c16, 2636, 1},
- {0x01cb, 425, 1},
+ {0x03a4, 807, 1},
- {0x1fcb, 2241, 1},
+ {0xab7c, 1633, 1},
- {0x118ae, 3552, 1},
+ {0x01f1, 483, 1},
- {0x0502, 1265, 1},
+ {0x0502, 1276, 1},
- {0x00cb, 111, 1},
+ {0x2165, 2456, 1},
- {0xa68e, 2955, 1},
+ {0x1e90, 2078, 1},
- {0x1e8a, 1920, 1},
+ {0x0490, 1105, 1},
- {0x048a, 1085, 1},
+ {0x0190, 628, 1},
- {0x018a, 622, 1},
+ {0x1f90, 169, 2},
- {0x1f8a, 139, 2},
+ {0x2c90, 2759, 1},
- {0x2c8a, 2601, 1},
+ {0x03a0, 795, 1},
- {0x038a, 736, 1},
+ {0xa790, 3264, 1},
- {0x2c67, 2571, 1},
+ {0x1c90, 1459, 1},
- {0xab8a, 1526, 1},
+ {0xab90, 1693, 1},
- {0x1e86, 1914, 1},
+ {0x10c90, 3666, 1},
- {0x10c8a, 3387, 1},
+ {0x1e6e, 2027, 1},
- {0x0186, 616, 1},
+ {0x046e, 1066, 1},
- {0x1f86, 159, 2},
+ {0x016e, 330, 1},
- {0x2c86, 2595, 1},
+ {0x1f6e, 2369, 1},
- {0x0386, 727, 1},
+ {0x2c6e, 667, 1},
- {0xff35, 3219, 1},
+ {0x10b0, 2942, 1},
- {0xab86, 1514, 1},
+ {0xa76e, 3237, 1},
- {0xa786, 3108, 1},
+ {0x054c, 1426, 1},
- {0x10c86, 3375, 1},
+ {0xa690, 3108, 1},
- {0xa68a, 2949, 1},
+ {0x0147, 273, 1},
- {0x0555, 1442, 1},
+ {0x118b0, 3819, 1},
- {0x1ebc, 1980, 1},
+ {0x104b6, 3528, 1},
- {0x04bc, 1160, 1},
+ {0x0047, 18, 1},
- {0x01bc, 411, 1},
+ {0x03fd, 721, 1},
- {0x1fbc, 62, 2},
+ {0x1eb6, 2120, 1},
- {0x2cbc, 2676, 1},
+ {0x04b6, 1162, 1},
- {0x1f5b, 2193, 1},
+ {0x0535, 1357, 1},
- {0xa686, 2943, 1},
+ {0x1fb6, 58, 2},
- {0xabbc, 1676, 1},
+ {0x2cb6, 2816, 1},
- {0x1eb8, 1974, 1},
+ {0x10a8, 2918, 1},
- {0x04b8, 1154, 1},
+ {0xa7b6, 3303, 1},
- {0x01b8, 408, 1},
+ {0x1cb6, 1573, 1},
- {0x1fb8, 2268, 1},
+ {0xabb6, 1807, 1},
- {0x2cb8, 2670, 1},
+ {0x104be, 3552, 1},
- {0x01db, 450, 1},
+ {0x118a8, 3795, 1},
- {0x1fdb, 2247, 1},
+ {0x2c63, 1858, 1},
- {0xabb8, 1664, 1},
+ {0x1ebe, 2132, 1},
- {0x10bc, 2829, 1},
+ {0x04be, 1174, 1},
- {0x00db, 156, 1},
+ {0x10421, 3489, 1},
- {0x1eb6, 1971, 1},
+ {0x1fbe, 770, 1},
- {0x04b6, 1151, 1},
+ {0x2cbe, 2828, 1},
- {0xff33, 3213, 1},
+ {0x2161, 2444, 1},
- {0x1fb6, 58, 2},
+ {0x0421, 947, 1},
+
+ {0x1cbe, 1591, 1},
+
+ {0xabbe, 1831, 1},
- {0x2cb6, 2667, 1},
+ {0x2c21, 2669, 1},
- {0xff2a, 3186, 1},
+ {0x104bc, 3546, 1},
+ {0xffffffff, -1, 0},
- {0x10b8, 2817, 1},
+ {0x03aa, 827, 1},
- {0xabb6, 1658, 1},
+ {0x1ebc, 2129, 1},
- {0xa7b6, 3153, 1},
+ {0x04bc, 1171, 1},
- {0x10426, 3351, 1},
+ {0x01bc, 411, 1},
- {0x1e26, 1769, 1},
+ {0x1fbc, 62, 2},
- {0x0426, 956, 1},
+ {0x2cbc, 2825, 1},
- {0x0126, 228, 1},
+ {0x16e4c, 3903, 1},
- {0x0053, 52, 1},
+ {0x104ba, 3540, 1},
- {0x2c26, 2535, 1},
+ {0x03f9, 881, 1},
- {0x0057, 65, 1},
+ {0xabbc, 1825, 1},
- {0x10b6, 2811, 1},
+ {0x1eba, 2126, 1},
- {0x022a, 562, 1},
+ {0x04ba, 1168, 1},
- {0xa726, 2982, 1},
+ {0x216e, 2483, 1},
- {0x1e2e, 1781, 1},
+ {0x1fba, 2375, 1},
- {0x042e, 980, 1},
+ {0x2cba, 2822, 1},
- {0x012e, 240, 1},
+ {0xff35, 3372, 1},
- {0x1f2e, 2142, 1},
+ {0x104b4, 3522, 1},
- {0x2c2e, 2559, 1},
- {0xffffffff, -1, 0},
+ {0x1cba, 1585, 1},
- {0x2167, 2313, 1},
- {0xffffffff, -1, 0},
+ {0xabba, 1819, 1},
- {0xa72e, 2994, 1},
+ {0x1eb4, 2117, 1},
- {0x1e2c, 1778, 1},
+ {0x04b4, 1159, 1},
- {0x042c, 974, 1},
+ {0x03fe, 724, 1},
- {0x012c, 237, 1},
+ {0x1fb4, 50, 2},
- {0x1f2c, 2136, 1},
+ {0x2cb4, 2813, 1},
- {0x2c2c, 2553, 1},
+ {0x039c, 782, 1},
- {0x1f6f, 2223, 1},
+ {0xa7b4, 3300, 1},
- {0x2c6f, 604, 1},
+ {0x1cb4, 1567, 1},
- {0xabbf, 1685, 1},
+ {0xabb4, 1801, 1},
- {0xa72c, 2991, 1},
+ {0x1e9a, 0, 2},
- {0x1e28, 1772, 1},
+ {0x049a, 1120, 1},
- {0x0428, 962, 1},
+ {0x0555, 1453, 1},
- {0x0128, 231, 1},
+ {0x1f9a, 179, 2},
- {0x1f28, 2124, 1},
+ {0x2c9a, 2774, 1},
- {0x2c28, 2541, 1},
- {0xffffffff, -1, 0},
+ {0x2163, 2450, 1},
- {0x0553, 1436, 1},
+ {0xa79a, 3276, 1},
- {0x10bf, 2838, 1},
+ {0x1c9a, 1489, 1},
- {0xa728, 2985, 1},
+ {0xab9a, 1723, 1},
- {0x0526, 1319, 1},
+ {0x10c9a, 3696, 1},
- {0x0202, 505, 1},
+ {0x1f4d, 2336, 1},
- {0x1e40, 1808, 1},
+ {0x16e5f, 3960, 1},
- {0x10424, 3345, 1},
+ {0x004d, 34, 1},
- {0x1e24, 1766, 1},
+ {0x1e94, 2084, 1},
- {0x0424, 950, 1},
+ {0x0494, 1111, 1},
- {0x0124, 225, 1},
+ {0x0194, 640, 1},
+
+ {0x1f94, 189, 2},
+
+ {0x2c94, 2765, 1},
+
+ {0xa69a, 3123, 1},
+
+ {0x038c, 833, 1},
+
+ {0x1c94, 1471, 1},
+
+ {0xab94, 1705, 1},
+
+ {0x10c94, 3678, 1},
{0xffffffff, -1, 0},
- {0x2c24, 2529, 1},
+ {0x0516, 1306, 1},
- {0x052e, 1331, 1},
+ {0x10b6, 2960, 1},
- {0xa740, 3018, 1},
+ {0x0202, 505, 1},
- {0x118bc, 3594, 1},
+ {0x1f6f, 2372, 1},
- {0xa724, 2979, 1},
+ {0x2c6f, 604, 1},
- {0x1ef2, 2061, 1},
+ {0x1041c, 3474, 1},
- {0x04f2, 1241, 1},
+ {0x118b6, 3837, 1},
- {0x01f2, 483, 1},
+ {0xa694, 3114, 1},
- {0x1ff2, 257, 2},
+ {0x1e1c, 1903, 1},
- {0x2cf2, 2742, 1},
+ {0x041c, 931, 1},
- {0x052c, 1328, 1},
+ {0x011c, 213, 1},
- {0x118b8, 3582, 1},
+ {0x1f1c, 2267, 1},
- {0xa640, 2865, 1},
+ {0x2c1c, 2654, 1},
- {0x10422, 3339, 1},
+ {0x10be, 2984, 1},
- {0x1e22, 1763, 1},
+ {0x03b0, 41, 3},
- {0x0422, 944, 1},
+ {0x16e55, 3930, 1},
- {0x0122, 222, 1},
+ {0x1e92, 2081, 1},
- {0x2126, 820, 1},
+ {0x0492, 1108, 1},
- {0x2c22, 2523, 1},
+ {0x118be, 3861, 1},
- {0x0528, 1322, 1},
+ {0x1f92, 179, 2},
- {0x01f1, 483, 1},
+ {0x2c92, 2762, 1},
- {0x118b6, 3576, 1},
+ {0x024c, 598, 1},
- {0xa722, 2976, 1},
+ {0xa792, 3267, 1},
- {0x03f1, 796, 1},
+ {0x1c92, 1465, 1},
- {0x1ebe, 1983, 1},
+ {0xab92, 1699, 1},
- {0x04be, 1163, 1},
+ {0x10c92, 3672, 1},
- {0xfb02, 12, 2},
+ {0x10bc, 2978, 1},
- {0x1fbe, 767, 1},
+ {0x0547, 1411, 1},
- {0x2cbe, 2679, 1},
+ {0x03a8, 820, 1},
- {0x01b5, 405, 1},
+ {0x01d9, 447, 1},
- {0x0540, 1379, 1},
+ {0x1fd9, 2426, 1},
- {0xabbe, 1682, 1},
+ {0x118bc, 3855, 1},
- {0x0524, 1316, 1},
+ {0x00d9, 150, 1},
- {0x00b5, 779, 1},
+ {0x01d5, 441, 1},
- {0xabb5, 1655, 1},
+ {0xa692, 3111, 1},
- {0x1eba, 1977, 1},
+ {0x10ba, 2972, 1},
- {0x04ba, 1157, 1},
+ {0x00d5, 141, 1},
+ {0xffffffff, -1, 0},
- {0x216f, 2337, 1},
+ {0x0398, 765, 1},
- {0x1fba, 2226, 1},
+ {0x1e86, 2063, 1},
- {0x2cba, 2673, 1},
+ {0x118ba, 3849, 1},
- {0x10be, 2835, 1},
+ {0x0186, 616, 1},
- {0x0051, 46, 1},
+ {0x1f86, 159, 2},
- {0xabba, 1670, 1},
+ {0x2c86, 2744, 1},
- {0x10b5, 2808, 1},
+ {0x10b4, 2954, 1},
- {0x1e6e, 1878, 1},
+ {0xa786, 3258, 1},
- {0x046e, 1055, 1},
+ {0x1c86, 977, 1},
- {0x016e, 330, 1},
+ {0xab86, 1663, 1},
- {0x1f6e, 2220, 1},
+ {0x10c86, 3636, 1},
- {0x2c6e, 664, 1},
+ {0x118b4, 3831, 1},
- {0x118bf, 3603, 1},
+ {0x216f, 2486, 1},
- {0x0522, 1313, 1},
+ {0x0396, 759, 1},
- {0x10ba, 2823, 1},
+ {0x1f6d, 2366, 1},
- {0xa76e, 3087, 1},
+ {0x2c6d, 607, 1},
+ {0xffffffff, -1, 0},
- {0x1eb4, 1968, 1},
+ {0x104c7, 3579, 1},
- {0x04b4, 1148, 1},
+ {0x24b6, 2492, 1},
- {0x2c75, 2583, 1},
+ {0xa686, 3093, 1},
- {0x1fb4, 50, 2},
+ {0x1e90a, 3993, 1},
- {0x2cb4, 2664, 1},
+ {0x04c7, 1186, 1},
- {0xab75, 1463, 1},
+ {0x01c7, 421, 1},
- {0x1ec2, 1989, 1},
+ {0x1fc7, 15, 3},
+ {0xffffffff, -1, 0},
- {0xabb4, 1652, 1},
+ {0x00c7, 99, 1},
- {0xa7b4, 3150, 1},
+ {0x16e47, 3888, 1},
+ {0xffffffff, -1, 0},
- {0x1fc2, 253, 2},
+ {0x1e9e, 24, 2},
- {0x2cc2, 2685, 1},
+ {0x049e, 1126, 1},
- {0x03c2, 800, 1},
+ {0x24be, 2516, 1},
- {0x00c2, 83, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x1f9e, 199, 2},
- {0xff26, 3174, 1},
+ {0x2c9e, 2780, 1},
- {0x10b4, 2805, 1},
+ {0x03f1, 799, 1},
- {0x1eca, 2001, 1},
+ {0xa79e, 3282, 1},
- {0x0551, 1430, 1},
+ {0x1c9e, 1501, 1},
- {0x01ca, 425, 1},
+ {0xab9e, 1735, 1},
- {0x1fca, 2238, 1},
+ {0x10c9e, 3708, 1},
- {0x2cca, 2697, 1},
+ {0x0390, 25, 3},
- {0x10c2, 2847, 1},
+ {0x1efa, 2222, 1},
- {0x00ca, 108, 1},
+ {0x04fa, 1264, 1},
- {0xff2e, 3198, 1},
+ {0x01fa, 493, 1},
- {0x1e8c, 1923, 1},
+ {0x1ffa, 2411, 1},
- {0x048c, 1088, 1},
+ {0x24bc, 2510, 1},
+ {0xffffffff, -1, 0},
- {0x0226, 556, 1},
+ {0x1e8e, 2075, 1},
- {0x1f8c, 149, 2},
+ {0x048e, 1102, 1},
+
+ {0x018e, 453, 1},
+
+ {0x1f8e, 159, 2},
- {0x2c8c, 2604, 1},
+ {0x2c8e, 2756, 1},
- {0x038c, 830, 1},
+ {0xff21, 3312, 1},
{0xffffffff, -1, 0},
- {0xab8c, 1532, 1},
+ {0x24ba, 2504, 1},
- {0xff2c, 3192, 1},
+ {0xab8e, 1687, 1},
- {0x10c8c, 3393, 1},
+ {0x10c8e, 3660, 1},
- {0x1ec4, 1992, 1},
+ {0x054d, 1429, 1},
- {0x022e, 568, 1},
+ {0x1e8a, 2069, 1},
- {0x01c4, 417, 1},
+ {0x048a, 1096, 1},
- {0x1fc4, 54, 2},
+ {0x018a, 622, 1},
- {0x2cc4, 2688, 1},
- {0xffffffff, -1, 0},
+ {0x1f8a, 139, 2},
- {0x00c4, 89, 1},
+ {0x2c8a, 2750, 1},
- {0xff28, 3180, 1},
+ {0x216d, 2480, 1},
- {0xa68c, 2952, 1},
+ {0x104d3, 3615, 1},
- {0x01cf, 432, 1},
+ {0xa68e, 3105, 1},
- {0x022c, 565, 1},
+ {0xab8a, 1675, 1},
- {0x118be, 3600, 1},
+ {0x10c8a, 3648, 1},
- {0x03cf, 839, 1},
+ {0x0216, 535, 1},
- {0x00cf, 123, 1},
+ {0x01d3, 438, 1},
- {0x118b5, 3573, 1},
- {0xffffffff, -1, 0},
+ {0x1fd3, 25, 3},
- {0x10c4, 2853, 1},
+ {0x1e82, 2057, 1},
- {0x216e, 2334, 1},
+ {0x00d3, 135, 1},
- {0x24cb, 2406, 1},
+ {0x0182, 357, 1},
- {0x0228, 559, 1},
+ {0x1f82, 139, 2},
- {0xff24, 3168, 1},
- {0xffffffff, -1, 0},
+ {0x2c82, 2738, 1},
- {0x118ba, 3588, 1},
+ {0xa68a, 3099, 1},
- {0x1efe, 2079, 1},
+ {0xa782, 3252, 1},
- {0x04fe, 1259, 1},
+ {0x1c82, 937, 1},
- {0x01fe, 499, 1},
+ {0xab82, 1651, 1},
- {0x1e9e, 24, 2},
+ {0x10c82, 3624, 1},
- {0x049e, 1115, 1},
+ {0x1e30, 1933, 1},
- {0x03fe, 721, 1},
+ {0x051c, 1315, 1},
- {0x1f9e, 199, 2},
+ {0x0130, 261, 2},
- {0x2c9e, 2631, 1},
+ {0x1e80, 2054, 1},
- {0x039e, 786, 1},
+ {0x0480, 1093, 1},
+ {0xffffffff, -1, 0},
- {0x0224, 553, 1},
+ {0x1f80, 129, 2},
- {0xab9e, 1586, 1},
+ {0x2c80, 2735, 1},
- {0xa79e, 3132, 1},
+ {0xa682, 3087, 1},
- {0x10c9e, 3447, 1},
+ {0xa780, 3249, 1},
- {0x01f7, 414, 1},
+ {0x1c80, 899, 1},
- {0x1ff7, 67, 3},
+ {0xab80, 1645, 1},
- {0xff22, 3162, 1},
+ {0x10c80, 3618, 1},
- {0x03f7, 884, 1},
+ {0x16e4d, 3906, 1},
- {0x118b4, 3570, 1},
+ {0x1e4a, 1972, 1},
+ {0xffffffff, -1, 0},
- {0x049c, 1112, 1},
+ {0x014a, 276, 1},
- {0x019c, 661, 1},
+ {0x1f4a, 2327, 1},
- {0x1f9c, 189, 2},
+ {0x10c7, 3008, 1},
+
+ {0x004a, 24, 1},
- {0x2c9c, 2628, 1},
+ {0xa74a, 3183, 1},
- {0x039c, 779, 1},
+ {0xa680, 3084, 1},
- {0x24bc, 2361, 1},
+ {0x1041a, 3468, 1},
- {0xab9c, 1580, 1},
+ {0x013d, 258, 1},
- {0xa79c, 3129, 1},
+ {0x1f3d, 2312, 1},
- {0x10c9c, 3441, 1},
+ {0x1e1a, 1900, 1},
- {0x0222, 550, 1},
+ {0x041a, 925, 1},
+
+ {0x011a, 210, 1},
- {0x1e7c, 1899, 1},
+ {0x1f1a, 2261, 1},
- {0x047c, 1076, 1},
+ {0x2c1a, 2648, 1},
+ {0xffffffff, -1, 0},
- {0x1e82, 1908, 1},
+ {0x13fa, 1843, 1},
- {0x24b8, 2349, 1},
+ {0xa64a, 3029, 1},
- {0x0182, 357, 1},
+ {0x10418, 3462, 1},
+ {0xffffffff, -1, 0},
- {0x1f82, 139, 2},
+ {0x039a, 775, 1},
- {0x2c82, 2589, 1},
+ {0x1e18, 1897, 1},
- {0xab7c, 1484, 1},
+ {0x0418, 919, 1},
+
+ {0x0118, 207, 1},
+
+ {0x1f18, 2255, 1},
+
+ {0x2c18, 2642, 1},
{0xffffffff, -1, 0},
- {0xab82, 1502, 1},
+ {0xfb02, 12, 2},
- {0xa782, 3102, 1},
+ {0x1ee0, 2183, 1},
- {0x10c82, 3363, 1},
+ {0x04e0, 1225, 1},
- {0x2c63, 1709, 1},
+ {0x01e0, 459, 1},
- {0x24b6, 2343, 1},
+ {0x1040e, 3432, 1},
- {0x1e80, 1905, 1},
+ {0x2ce0, 2879, 1},
- {0x0480, 1082, 1},
+ {0x0394, 752, 1},
- {0x1f59, 2190, 1},
+ {0x1e0e, 1882, 1},
- {0x1f80, 129, 2},
+ {0x040e, 1038, 1},
- {0x2c80, 2586, 1},
+ {0x010e, 192, 1},
- {0x0059, 71, 1},
+ {0x1f0e, 2249, 1},
- {0xa682, 2937, 1},
+ {0x2c0e, 2612, 1},
- {0xab80, 1496, 1},
+ {0x1040c, 3426, 1},
- {0xa780, 3099, 1},
+ {0x1f6b, 2360, 1},
- {0x10c80, 3357, 1},
- {0xffffffff, -1, 0},
+ {0x2c6b, 2726, 1},
- {0x1e4c, 1826, 1},
+ {0x1e0c, 1879, 1},
- {0x0145, 270, 1},
+ {0x040c, 1032, 1},
- {0x014c, 279, 1},
+ {0x010c, 189, 1},
- {0x1f4c, 2184, 1},
+ {0x1f0c, 2243, 1},
- {0x0345, 767, 1},
+ {0x2c0c, 2606, 1},
- {0x0045, 12, 1},
+ {0x1f5d, 2345, 1},
- {0x004c, 31, 1},
+ {0x10414, 3450, 1},
- {0xa680, 2934, 1},
+ {0x1e7a, 2045, 1},
- {0xa74c, 3036, 1},
+ {0x047a, 1084, 1},
- {0x1e4a, 1823, 1},
+ {0x1e14, 1891, 1},
- {0x01d5, 441, 1},
+ {0x0414, 906, 1},
- {0x014a, 276, 1},
+ {0x0114, 201, 1},
- {0x1f4a, 2178, 1},
+ {0x1e902, 3969, 1},
- {0x03d5, 810, 1},
+ {0x2c14, 2630, 1},
- {0x00d5, 141, 1},
+ {0x1f5b, 2342, 1},
- {0x004a, 24, 1},
+ {0xab7a, 1627, 1},
- {0x24bf, 2370, 1},
+ {0x24c7, 2543, 1},
- {0xa74a, 3033, 1},
+ {0x10408, 3414, 1},
- {0xa64c, 2883, 1},
+ {0x0392, 745, 1},
- {0x1041c, 3321, 1},
+ {0x0533, 1351, 1},
- {0x1e1c, 1754, 1},
+ {0x1e08, 1873, 1},
- {0x041c, 926, 1},
+ {0x0408, 1020, 1},
- {0x011c, 213, 1},
+ {0x0108, 183, 1},
- {0x1f1c, 2118, 1},
+ {0x1f08, 2231, 1},
- {0x2c1c, 2505, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x2c08, 2594, 1},
- {0xa64a, 2880, 1},
+ {0x10406, 3408, 1},
- {0x1041a, 3315, 1},
+ {0x0053, 52, 1},
+ {0xffffffff, -1, 0},
- {0x1e1a, 1751, 1},
+ {0x1e06, 1870, 1},
- {0x041a, 920, 1},
+ {0x0406, 1014, 1},
- {0x011a, 210, 1},
+ {0x0106, 180, 1},
- {0x1f1a, 2112, 1},
+ {0x10404, 3402, 1},
- {0x2c1a, 2499, 1},
+ {0x2c06, 2588, 1},
- {0xabbd, 1679, 1},
+ {0x03d5, 813, 1},
- {0x0545, 1394, 1},
+ {0x1e04, 1867, 1},
- {0x054c, 1415, 1},
+ {0x0404, 1008, 1},
- {0x10418, 3309, 1},
+ {0x0104, 177, 1},
+ {0xffffffff, -1, 0},
- {0x1e18, 1748, 1},
+ {0x2c04, 2582, 1},
- {0x0418, 914, 1},
+ {0x10400, 3390, 1},
+ {0xffffffff, -1, 0},
- {0x0118, 207, 1},
+ {0x0386, 730, 1},
- {0x1f18, 2106, 1},
+ {0x1e00, 1861, 1},
- {0x2c18, 2493, 1},
+ {0x0400, 996, 1},
- {0x10bd, 2832, 1},
+ {0x0100, 171, 1},
- {0x2163, 2301, 1},
+ {0x216b, 2474, 1},
- {0x054a, 1409, 1},
+ {0x2c00, 2570, 1},
+ {0xffffffff, -1, 0},
- {0x1040e, 3279, 1},
+ {0x021c, 544, 1},
- {0x1e0e, 1733, 1},
+ {0x1e2a, 1924, 1},
- {0x040e, 1028, 1},
+ {0x042a, 977, 1},
- {0x010e, 192, 1},
+ {0x012a, 234, 1},
- {0x1f0e, 2100, 1},
+ {0x1f2a, 2279, 1},
- {0x2c0e, 2463, 1},
+ {0x2c2a, 2696, 1},
- {0x1efc, 2076, 1},
+ {0x10426, 3504, 1},
- {0x04fc, 1256, 1},
+ {0xa72a, 3138, 1},
- {0x01fc, 496, 1},
+ {0xff33, 3366, 1},
- {0x1ffc, 96, 2},
+ {0x1e26, 1918, 1},
- {0x051c, 1304, 1},
+ {0x0426, 965, 1},
- {0x1040c, 3273, 1},
+ {0x0126, 228, 1},
- {0x1e0c, 1730, 1},
+ {0x1f95, 194, 2},
- {0x040c, 1022, 1},
+ {0x2c26, 2684, 1},
+ {0xffffffff, -1, 0},
- {0x010c, 189, 1},
+ {0xa726, 3132, 1},
- {0x1f0c, 2094, 1},
+ {0x1c95, 1474, 1},
- {0x2c0c, 2457, 1},
+ {0xab95, 1708, 1},
- {0x1f6d, 2217, 1},
+ {0x10c95, 3681, 1},
- {0x2c6d, 607, 1},
+ {0x054a, 1420, 1},
- {0x051a, 1301, 1},
+ {0x039e, 789, 1},
- {0x24be, 2367, 1},
+ {0x1e2e, 1930, 1},
- {0x10408, 3261, 1},
+ {0x042e, 990, 1},
- {0x1e08, 1724, 1},
+ {0x012e, 240, 1},
- {0x0408, 1010, 1},
+ {0x1f2e, 2291, 1},
- {0x0108, 183, 1},
+ {0x2c2e, 2708, 1},
- {0x1f08, 2082, 1},
+ {0x053d, 1381, 1},
- {0x2c08, 2445, 1},
+ {0xa72e, 3144, 1},
- {0x04c9, 1178, 1},
+ {0x1feb, 2408, 1},
- {0x0518, 1298, 1},
+ {0x2ceb, 2885, 1},
- {0x1fc9, 2235, 1},
- {0xffffffff, -1, 0},
+ {0x051a, 1312, 1},
- {0x24ba, 2355, 1},
+ {0x03fa, 890, 1},
- {0x00c9, 105, 1},
+ {0x1e2c, 1927, 1},
- {0x10416, 3303, 1},
+ {0x042c, 984, 1},
- {0x1e16, 1745, 1},
+ {0x012c, 237, 1},
- {0x0416, 908, 1},
+ {0x1f2c, 2285, 1},
- {0x0116, 204, 1},
+ {0x2c2c, 2702, 1},
- {0x050e, 1283, 1},
+ {0x038e, 836, 1},
- {0x2c16, 2487, 1},
+ {0xa72c, 3141, 1},
- {0x10414, 3297, 1},
+ {0xfb16, 125, 2},
+ {0xffffffff, -1, 0},
- {0x1e14, 1742, 1},
+ {0x0518, 1309, 1},
- {0x0414, 902, 1},
+ {0xff30, 3357, 1},
- {0x0114, 201, 1},
+ {0x1e28, 1921, 1},
+
+ {0x0428, 971, 1},
- {0x042b, 971, 1},
+ {0x0128, 231, 1},
+
+ {0x1f28, 2273, 1},
- {0x2c14, 2481, 1},
+ {0x2c28, 2690, 1},
- {0x1f2b, 2133, 1},
+ {0x038a, 739, 1},
+
+ {0xa728, 3135, 1},
+ {0xffffffff, -1, 0},
- {0x2c2b, 2550, 1},
+ {0x212a, 27, 1},
{0xffffffff, -1, 0},
- {0x050c, 1280, 1},
+ {0x104cd, 3597, 1},
- {0x10406, 3255, 1},
+ {0x050e, 1294, 1},
+ {0xffffffff, -1, 0},
- {0x1e06, 1721, 1},
+ {0x16e4a, 3897, 1},
- {0x0406, 1004, 1},
+ {0x04cd, 1195, 1},
- {0x0106, 180, 1},
+ {0x01cd, 429, 1},
- {0x13fb, 1697, 1},
+ {0x2126, 823, 1},
- {0x2c06, 2439, 1},
+ {0x10424, 3498, 1},
+
+ {0x00cd, 117, 1},
+
+ {0x050c, 1291, 1},
+
+ {0x1e24, 1915, 1},
+
+ {0x0424, 959, 1},
+
+ {0x0124, 225, 1},
- {0x24c2, 2379, 1},
+ {0x1e916, 4029, 1},
- {0x118bd, 3597, 1},
+ {0x2c24, 2678, 1},
{0xffffffff, -1, 0},
- {0x0508, 1274, 1},
+ {0xa724, 3129, 1},
- {0x10404, 3249, 1},
+ {0x10422, 3492, 1},
- {0x1e04, 1718, 1},
+ {0x0514, 1303, 1},
- {0x0404, 998, 1},
+ {0x104c9, 3585, 1},
- {0x0104, 177, 1},
+ {0x1e22, 1912, 1},
- {0x1f95, 194, 2},
+ {0x0422, 951, 1},
- {0x2c04, 2433, 1},
+ {0x0122, 222, 1},
- {0x0395, 752, 1},
+ {0x04c9, 1189, 1},
- {0x24ca, 2403, 1},
+ {0x2c22, 2672, 1},
- {0xab95, 1559, 1},
+ {0x1fc9, 2384, 1},
- {0x0531, 1334, 1},
+ {0xa722, 3126, 1},
- {0x10c95, 3420, 1},
+ {0x00c9, 105, 1},
- {0x0516, 1295, 1},
+ {0x104c4, 3570, 1},
- {0x1e6c, 1875, 1},
+ {0x0508, 1285, 1},
- {0x046c, 1052, 1},
+ {0x0553, 1447, 1},
- {0x016c, 327, 1},
+ {0x1ec4, 2141, 1},
+ {0xffffffff, -1, 0},
- {0x1f6c, 2214, 1},
+ {0x01c4, 417, 1},
- {0x216d, 2331, 1},
+ {0x1fc4, 54, 2},
- {0x0514, 1292, 1},
+ {0x2cc4, 2837, 1},
- {0x0245, 697, 1},
+ {0x00c4, 89, 1},
- {0x024c, 598, 1},
+ {0x0506, 1282, 1},
- {0xa76c, 3084, 1},
+ {0x104c2, 3564, 1},
- {0x10400, 3237, 1},
+ {0x1f69, 2354, 1},
- {0x1e00, 1712, 1},
+ {0x2c69, 2723, 1},
- {0x0400, 986, 1},
+ {0x1ec2, 2138, 1},
- {0x0100, 171, 1},
+ {0x104d1, 3609, 1},
- {0x24c4, 2385, 1},
+ {0x0504, 1279, 1},
- {0x2c00, 2421, 1},
+ {0x1fc2, 253, 2},
- {0x0506, 1271, 1},
+ {0x2cc2, 2834, 1},
- {0x024a, 595, 1},
+ {0x00c2, 83, 1},
- {0x1fab, 224, 2},
+ {0x01d1, 435, 1},
- {0xa66c, 2931, 1},
+ {0x16e5d, 3954, 1},
- {0x03ab, 827, 1},
+ {0x104b7, 3531, 1},
- {0x24cf, 2418, 1},
+ {0x00d1, 129, 1},
- {0xabab, 1625, 1},
+ {0x0500, 1273, 1},
- {0xa7ab, 631, 1},
+ {0x013f, 261, 1},
+
+ {0x1f3f, 2318, 1},
- {0x10cab, 3486, 1},
+ {0x01b7, 703, 1},
+
+ {0x1fb7, 10, 3},
+
+ {0x0230, 571, 1},
+
+ {0x16e5b, 3948, 1},
+
+ {0x052a, 1336, 1},
+
+ {0x1cb7, 1576, 1},
+
+ {0xabb7, 1810, 1},
+
+ {0x03e0, 857, 1},
{0xffffffff, -1, 0},
- {0x0504, 1268, 1},
+ {0x104b3, 3519, 1},
+
+ {0x1e921, 4062, 1},
{0xffffffff, -1, 0},
- {0x021c, 544, 1},
+ {0x0526, 1330, 1},
- {0x01a9, 679, 1},
+ {0x16e53, 3924, 1},
- {0x1fa9, 214, 2},
+ {0x01b3, 402, 1},
- {0x10ab, 2778, 1},
+ {0x1fb3, 62, 2},
- {0x03a9, 820, 1},
+ {0x024a, 595, 1},
+ {0xffffffff, -1, 0},
- {0x212b, 92, 1},
+ {0xa7b3, 3309, 1},
- {0xaba9, 1619, 1},
+ {0x1cb3, 1564, 1},
- {0x1e88, 1917, 1},
+ {0xabb3, 1798, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x10ca9, 3480, 1},
+ {0x023d, 378, 1},
- {0x021a, 541, 1},
+ {0x052e, 1342, 1},
- {0x1f88, 129, 2},
+ {0x1fab, 224, 2},
- {0x2c88, 2598, 1},
+ {0x10cd, 3011, 1},
- {0x0388, 730, 1},
+ {0x021a, 541, 1},
- {0x13fd, 1703, 1},
+ {0xa7ab, 631, 1},
+
+ {0x1cab, 1540, 1},
- {0xab88, 1520, 1},
+ {0xabab, 1774, 1},
- {0x10a9, 2772, 1},
+ {0x10cab, 3747, 1},
- {0x10c88, 3381, 1},
+ {0x2169, 2468, 1},
{0xffffffff, -1, 0},
+ {0x1e56, 1990, 1},
+
+ {0x052c, 1339, 1},
+
+ {0x0156, 294, 1},
+
+ {0x1f56, 62, 3},
+
{0x0218, 538, 1},
- {0x0500, 1262, 1},
+ {0x0056, 62, 1},
- {0x1f4d, 2187, 1},
+ {0xa756, 3201, 1},
- {0x01a7, 393, 1},
+ {0xff2a, 3339, 1},
- {0x1fa7, 244, 2},
+ {0x1e54, 1987, 1},
+ {0xffffffff, -1, 0},
- {0x004d, 34, 1},
+ {0x0154, 291, 1},
- {0x03a7, 814, 1},
+ {0x1f54, 57, 3},
- {0xa688, 2946, 1},
+ {0x0528, 1333, 1},
- {0xaba7, 1613, 1},
+ {0x0054, 56, 1},
- {0x020e, 523, 1},
+ {0xa754, 3198, 1},
- {0x10ca7, 3474, 1},
+ {0xff26, 3327, 1},
- {0x1e6a, 1872, 1},
+ {0x104ca, 3588, 1},
- {0x046a, 1049, 1},
+ {0x020e, 523, 1},
- {0x016a, 324, 1},
+ {0xa656, 3048, 1},
- {0x1f6a, 2208, 1},
- {0xffffffff, -1, 0},
+ {0x1eca, 2150, 1},
- {0x216c, 2328, 1},
+ {0x10c4, 3002, 1},
- {0x10a7, 2766, 1},
+ {0x01ca, 425, 1},
- {0x01d1, 435, 1},
+ {0x1fca, 2387, 1},
- {0xa76a, 3081, 1},
+ {0x2cca, 2846, 1},
+
+ {0x00ca, 108, 1},
{0x020c, 520, 1},
- {0x03d1, 762, 1},
+ {0xa654, 3045, 1},
- {0x00d1, 129, 1},
+ {0xff2e, 3351, 1},
+
+ {0x1e9b, 2005, 1},
- {0x1e68, 1869, 1},
+ {0x0051, 46, 1},
- {0x0468, 1046, 1},
+ {0x10c2, 2996, 1},
- {0x0168, 321, 1},
+ {0x1f9b, 184, 2},
- {0x1f68, 2202, 1},
+ {0x0524, 1327, 1},
{0xffffffff, -1, 0},
- {0xff31, 3207, 1},
+ {0x0214, 532, 1},
- {0xa66a, 2928, 1},
+ {0x1c9b, 1492, 1},
- {0x0208, 514, 1},
+ {0xab9b, 1726, 1},
- {0xa768, 3078, 1},
+ {0x10c9b, 3699, 1},
- {0x1e64, 1863, 1},
+ {0xff2c, 3345, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0464, 1040, 1},
+ {0x10b7, 2963, 1},
- {0x0164, 315, 1},
+ {0x0522, 1324, 1},
- {0x054d, 1418, 1},
+ {0x1e91c, 4047, 1},
- {0x2c64, 673, 1},
- {0xffffffff, -1, 0},
+ {0x0395, 755, 1},
- {0xff2b, 3189, 1},
- {0xffffffff, -1, 0},
+ {0x0208, 514, 1},
- {0xa764, 3072, 1},
+ {0x118b7, 3840, 1},
- {0xa668, 2925, 1},
+ {0x24cd, 2561, 1},
+ {0xffffffff, -1, 0},
- {0x0216, 535, 1},
+ {0xff28, 3333, 1},
+
+ {0x104c3, 3567, 1},
{0xffffffff, -1, 0},
- {0x118ab, 3543, 1},
+ {0x104b1, 3513, 1},
- {0x1e62, 1860, 1},
+ {0x0206, 511, 1},
- {0x0462, 1037, 1},
+ {0x04c3, 1180, 1},
- {0x0162, 312, 1},
+ {0x10b3, 2951, 1},
- {0x0214, 532, 1},
+ {0x1fc3, 71, 2},
- {0x2c62, 655, 1},
+ {0x01b1, 694, 1},
- {0xa664, 2919, 1},
+ {0x00c3, 86, 1},
- {0x1ed2, 2013, 1},
+ {0x0204, 508, 1},
- {0x04d2, 1193, 1},
+ {0x118b3, 3828, 1},
- {0xa762, 3069, 1},
+ {0xa7b1, 685, 1},
- {0x1fd2, 20, 3},
+ {0x1cb1, 1558, 1},
- {0x2cd2, 2709, 1},
+ {0xabb1, 1792, 1},
- {0x118a9, 3537, 1},
+ {0x10cb1, 3765, 1},
- {0x00d2, 132, 1},
+ {0x10ab, 2927, 1},
- {0x0206, 511, 1},
+ {0x24c9, 2549, 1},
- {0x10420, 3333, 1},
+ {0x0200, 502, 1},
+ {0xffffffff, -1, 0},
- {0x1e20, 1760, 1},
+ {0xff24, 3321, 1},
- {0x0420, 938, 1},
+ {0x118ab, 3804, 1},
- {0x0120, 219, 1},
+ {0x0531, 1345, 1},
- {0xa662, 2916, 1},
+ {0x053f, 1387, 1},
- {0x2c20, 2517, 1},
+ {0x10420, 3486, 1},
- {0x1e60, 1856, 1},
+ {0x022a, 562, 1},
- {0x0460, 1034, 1},
+ {0x24c4, 2534, 1},
- {0x0160, 309, 1},
+ {0x1e20, 1909, 1},
- {0x0204, 508, 1},
+ {0x0420, 944, 1},
+
+ {0x0120, 219, 1},
+
+ {0xff22, 3315, 1},
- {0x2c60, 2562, 1},
+ {0x2c20, 2666, 1},
{0xffffffff, -1, 0},
- {0x24bd, 2364, 1},
+ {0x0226, 556, 1},
- {0x216a, 2322, 1},
+ {0x01a9, 682, 1},
- {0xa760, 3066, 1},
- {0xffffffff, -1, 0},
+ {0x1fa9, 214, 2},
- {0xfb16, 125, 2},
+ {0x24c2, 2528, 1},
- {0x118a7, 3531, 1},
+ {0x01a7, 393, 1},
- {0x1efa, 2073, 1},
+ {0x1fa7, 244, 2},
- {0x04fa, 1253, 1},
+ {0x1ca9, 1534, 1},
- {0x01fa, 493, 1},
+ {0xaba9, 1768, 1},
- {0x1ffa, 2262, 1},
+ {0x10ca9, 3741, 1},
- {0xfb14, 109, 2},
+ {0x1ca7, 1528, 1},
- {0x03fa, 887, 1},
+ {0xaba7, 1762, 1},
- {0xa660, 2913, 1},
+ {0x10ca7, 3735, 1},
- {0x2168, 2316, 1},
+ {0x022e, 568, 1},
- {0x01b7, 700, 1},
+ {0x1e88, 2066, 1},
- {0x1fb7, 10, 3},
+ {0x24b7, 2495, 1},
+ {0xffffffff, -1, 0},
- {0x1f6b, 2211, 1},
+ {0x1f88, 129, 2},
- {0x2c6b, 2577, 1},
+ {0x2c88, 2747, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0200, 502, 1},
+ {0x1c88, 3029, 1},
- {0xabb7, 1661, 1},
+ {0xab88, 1669, 1},
- {0xfb06, 29, 2},
+ {0x10c88, 3642, 1},
- {0x1e56, 1841, 1},
+ {0x022c, 565, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2164, 2304, 1},
+ {0xff31, 3360, 1},
- {0x0156, 294, 1},
+ {0x1e52, 1984, 1},
- {0x1f56, 62, 3},
+ {0x0556, 1456, 1},
- {0x0520, 1310, 1},
+ {0x0152, 288, 1},
- {0x004f, 40, 1},
+ {0x1f52, 52, 3},
- {0x0056, 62, 1},
+ {0xa688, 3096, 1},
- {0x10b7, 2814, 1},
+ {0x0052, 49, 1},
- {0xa756, 3051, 1},
+ {0xa752, 3195, 1},
- {0xfb04, 5, 3},
+ {0x0228, 559, 1},
- {0x1e78, 1893, 1},
+ {0x1e50, 1981, 1},
- {0x0478, 1070, 1},
+ {0x0554, 1450, 1},
- {0x0178, 168, 1},
+ {0x0150, 285, 1},
- {0x1e54, 1838, 1},
+ {0x1f50, 84, 2},
- {0x2162, 2298, 1},
+ {0x1041e, 3480, 1},
- {0x0154, 291, 1},
+ {0x0050, 43, 1},
- {0x1f54, 57, 3},
+ {0xa750, 3192, 1},
- {0xab78, 1472, 1},
+ {0x1e1e, 1906, 1},
- {0xa656, 2898, 1},
+ {0x041e, 937, 1},
- {0x0054, 56, 1},
+ {0x011e, 216, 1},
- {0x1e52, 1835, 1},
+ {0xa652, 3042, 1},
- {0xa754, 3048, 1},
+ {0x2c1e, 2660, 1},
- {0x0152, 288, 1},
+ {0x03c2, 803, 1},
- {0x1f52, 52, 3},
+ {0x10c3, 2999, 1},
+ {0xffffffff, -1, 0},
- {0x24c9, 2400, 1},
+ {0x10b1, 2945, 1},
- {0x1e32, 1787, 1},
+ {0x03d1, 765, 1},
- {0x0052, 49, 1},
+ {0x0551, 1441, 1},
- {0x0132, 243, 1},
+ {0xa650, 3039, 1},
- {0xa752, 3045, 1},
- {0xffffffff, -1, 0},
+ {0x0224, 553, 1},
- {0xfb00, 4, 2},
+ {0x118b1, 3822, 1},
- {0xa654, 2895, 1},
+ {0x1e4e, 1978, 1},
{0xffffffff, -1, 0},
- {0xa732, 2997, 1},
+ {0x014e, 282, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2160, 2292, 1},
+ {0x004e, 37, 1},
- {0x054f, 1424, 1},
+ {0xa74e, 3189, 1},
- {0x0556, 1445, 1},
+ {0x10412, 3444, 1},
- {0x1e50, 1832, 1},
+ {0x0222, 550, 1},
- {0xa652, 2892, 1},
+ {0x16e56, 3933, 1},
- {0x0150, 285, 1},
+ {0x1e12, 1888, 1},
- {0x1f50, 84, 2},
+ {0x0412, 899, 1},
- {0x017b, 348, 1},
+ {0x0112, 198, 1},
- {0x1e4e, 1829, 1},
+ {0x24ca, 2552, 1},
- {0x0050, 43, 1},
+ {0x2c12, 2624, 1},
- {0x014e, 282, 1},
+ {0x018f, 625, 1},
- {0xa750, 3042, 1},
+ {0x1f8f, 164, 2},
- {0xab7b, 1481, 1},
+ {0x16e54, 3927, 1},
- {0xa77b, 3093, 1},
+ {0xa64e, 3036, 1},
- {0x004e, 37, 1},
+ {0x004f, 40, 1},
- {0x0554, 1439, 1},
+ {0x10a9, 2921, 1},
- {0xa74e, 3039, 1},
+ {0xab8f, 1690, 1},
- {0x1e48, 1820, 1},
- {0xffffffff, -1, 0},
+ {0x10c8f, 3663, 1},
+
+ {0x10a7, 2915, 1},
- {0x216b, 2325, 1},
+ {0x1e48, 1969, 1},
- {0x1f48, 2172, 1},
+ {0x118a9, 3798, 1},
- {0xa650, 2889, 1},
+ {0x03ab, 830, 1},
- {0x0552, 1433, 1},
+ {0x1f48, 2321, 1},
+
+ {0x118a7, 3792, 1},
{0x0048, 21, 1},
+
+ {0xa748, 3180, 1},
+
+ {0x10410, 3438, 1},
{0xffffffff, -1, 0},
- {0xa748, 3030, 1},
+ {0x16e51, 3918, 1},
+
+ {0x1e10, 1885, 1},
- {0xa64e, 2886, 1},
+ {0x0410, 893, 1},
- {0x0532, 1337, 1},
+ {0x0110, 195, 1},
- {0x1041e, 3327, 1},
+ {0x104c0, 3558, 1},
- {0x1e1e, 1757, 1},
+ {0x2c10, 2618, 1},
- {0x041e, 932, 1},
+ {0x1e91a, 4041, 1},
- {0x011e, 216, 1},
+ {0x1ec0, 2135, 1},
- {0x118b7, 3579, 1},
+ {0x04c0, 1198, 1},
- {0x2c1e, 2511, 1},
+ {0xa648, 3026, 1},
{0xffffffff, -1, 0},
- {0xa648, 2877, 1},
+ {0x2cc0, 2831, 1},
- {0x1ff9, 2253, 1},
+ {0x00c0, 77, 1},
{0xffffffff, -1, 0},
- {0x03f9, 878, 1},
+ {0x24c3, 2531, 1},
- {0x0550, 1427, 1},
+ {0x0520, 1321, 1},
- {0x10412, 3291, 1},
+ {0x104c8, 3582, 1},
- {0x1e12, 1739, 1},
+ {0x1e918, 4035, 1},
+ {0xffffffff, -1, 0},
- {0x0412, 896, 1},
+ {0x1ec8, 2147, 1},
- {0x0112, 198, 1},
+ {0xfb14, 109, 2},
- {0x054e, 1421, 1},
+ {0x01c8, 421, 1},
- {0x2c12, 2475, 1},
+ {0x1fc8, 2381, 1},
- {0x10410, 3285, 1},
+ {0x2cc8, 2843, 1},
- {0x1e10, 1736, 1},
+ {0x00c8, 102, 1},
- {0x0410, 890, 1},
+ {0x104b9, 3537, 1},
- {0x0110, 195, 1},
+ {0x1efc, 2225, 1},
+
+ {0x04fc, 1267, 1},
+
+ {0x01fc, 496, 1},
+
+ {0x1ffc, 96, 2},
+
+ {0x1e90e, 4005, 1},
+
+ {0x1fb9, 2420, 1},
+
+ {0x104b5, 3525, 1},
+
+ {0x039b, 779, 1},
{0xffffffff, -1, 0},
- {0x2c10, 2469, 1},
+ {0x1cb9, 1582, 1},
- {0x2132, 2289, 1},
+ {0xabb9, 1816, 1},
- {0x0548, 1403, 1},
+ {0x01b5, 405, 1},
- {0x1ef8, 2070, 1},
+ {0x1e90c, 3999, 1},
- {0x04f8, 1250, 1},
+ {0xfb06, 29, 2},
- {0x01f8, 490, 1},
+ {0x00b5, 782, 1},
+ {0xffffffff, -1, 0},
- {0x1ff8, 2250, 1},
+ {0x1cb5, 1570, 1},
- {0x0220, 381, 1},
+ {0xabb5, 1804, 1},
+ {0xffffffff, -1, 0},
- {0x1ee2, 2037, 1},
+ {0xfb04, 5, 3},
- {0x04e2, 1217, 1},
+ {0x1fad, 234, 2},
- {0x01e2, 462, 1},
+ {0x1e914, 4023, 1},
- {0x1fe2, 36, 3},
+ {0x0552, 1444, 1},
- {0x2ce2, 2733, 1},
+ {0xa7ad, 661, 1},
- {0x03e2, 857, 1},
+ {0x1cad, 1546, 1},
- {0x051e, 1307, 1},
+ {0xabad, 1780, 1},
- {0x1ede, 2031, 1},
+ {0x10cad, 3753, 1},
- {0x04de, 1211, 1},
+ {0xfb00, 4, 2},
- {0x01de, 456, 1},
+ {0x01af, 399, 1},
+
+ {0x1faf, 244, 2},
+
+ {0x0550, 1438, 1},
{0xffffffff, -1, 0},
- {0x2cde, 2727, 1},
+ {0x1e908, 3987, 1},
- {0x03de, 851, 1},
+ {0x1caf, 1552, 1},
- {0x00de, 165, 1},
+ {0xabaf, 1786, 1},
- {0x1f69, 2205, 1},
+ {0x10caf, 3759, 1},
+ {0xffffffff, -1, 0},
- {0x2c69, 2574, 1},
+ {0x051e, 1318, 1},
- {0x1eda, 2025, 1},
+ {0x018b, 366, 1},
+
+ {0x1f8b, 144, 2},
+
+ {0x1e906, 3981, 1},
+ {0xffffffff, -1, 0},
+
+ {0xa78b, 3261, 1},
+
+ {0x1fa5, 234, 2},
+
+ {0xab8b, 1678, 1},
+
+ {0x10c8b, 3651, 1},
+
+ {0x1e904, 3975, 1},
+
+ {0x1ca5, 1522, 1},
+
+ {0xaba5, 1756, 1},
+
+ {0x10ca5, 3729, 1},
+ {0xffffffff, -1, 0},
- {0x04da, 1205, 1},
+ {0x054e, 1432, 1},
- {0x0512, 1289, 1},
+ {0x1eda, 2174, 1},
- {0x1fda, 2244, 1},
+ {0x04da, 1216, 1},
- {0x2cda, 2721, 1},
+ {0x1e900, 3963, 1},
- {0x03da, 845, 1},
+ {0x1fda, 2393, 1},
+
+ {0x2cda, 2870, 1},
{0x00da, 153, 1},
+
+ {0x10c0, 2990, 1},
+
+ {0x16e52, 3921, 1},
+
+ {0x03a9, 823, 1},
+
+ {0x0512, 1300, 1},
{0xffffffff, -1, 0},
- {0x0510, 1286, 1},
+ {0x03a7, 817, 1},
- {0x1ed8, 2022, 1},
+ {0x1fa3, 224, 2},
- {0x04d8, 1202, 1},
+ {0x054f, 1435, 1},
{0xffffffff, -1, 0},
- {0x1fd8, 2274, 1},
+ {0x16e50, 3915, 1},
- {0x2cd8, 2718, 1},
+ {0x1ca3, 1516, 1},
- {0x03d8, 842, 1},
+ {0xaba3, 1750, 1},
- {0x00d8, 147, 1},
+ {0x10ca3, 3723, 1},
- {0x1ed6, 2019, 1},
+ {0x13fc, 1849, 1},
- {0x04d6, 1199, 1},
+ {0x1fa1, 214, 2},
{0xffffffff, -1, 0},
- {0x1fd6, 76, 2},
+ {0x0388, 733, 1},
- {0x2cd6, 2715, 1},
+ {0x0548, 1414, 1},
- {0x03d6, 792, 1},
+ {0x1ca1, 1510, 1},
- {0x00d6, 144, 1},
+ {0xaba1, 1744, 1},
- {0x1ec8, 1998, 1},
- {0xffffffff, -1, 0},
+ {0x10ca1, 3717, 1},
- {0x01c8, 421, 1},
+ {0x10b9, 2969, 1},
- {0x1fc8, 2232, 1},
+ {0x1ef4, 2213, 1},
- {0x2cc8, 2694, 1},
+ {0x04f4, 1255, 1},
- {0xff32, 3210, 1},
+ {0x01f4, 487, 1},
- {0x00c8, 102, 1},
+ {0x1ff4, 101, 2},
- {0x04c7, 1175, 1},
+ {0x118b9, 3846, 1},
- {0x01c7, 421, 1},
+ {0x0510, 1297, 1},
- {0x1fc7, 15, 3},
+ {0x10b5, 2957, 1},
- {0x1ec0, 1986, 1},
+ {0x104cf, 3603, 1},
- {0x04c0, 1187, 1},
+ {0x16e4e, 3909, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x00c7, 99, 1},
- {0xffffffff, -1, 0},
+ {0x118b5, 3834, 1},
- {0x2cc0, 2682, 1},
+ {0x01cf, 432, 1},
- {0x0179, 345, 1},
+ {0x0220, 381, 1},
- {0x00c0, 77, 1},
+ {0x10ad, 2933, 1},
- {0x0232, 574, 1},
+ {0x00cf, 123, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x01b3, 402, 1},
+ {0x1e97, 34, 2},
- {0x1fb3, 62, 2},
+ {0x118ad, 3810, 1},
- {0xab79, 1475, 1},
+ {0x0197, 649, 1},
- {0xa779, 3090, 1},
+ {0x1f97, 204, 2},
- {0x10c7, 2859, 1},
+ {0x16e4f, 3912, 1},
- {0xabb3, 1649, 1},
+ {0x10af, 2939, 1},
+ {0xffffffff, -1, 0},
- {0xa7b3, 3156, 1},
+ {0x1c97, 1480, 1},
- {0x1fa5, 234, 2},
+ {0xab97, 1714, 1},
- {0x10c0, 2841, 1},
+ {0x10c97, 3687, 1},
- {0x03a5, 807, 1},
+ {0x118af, 3816, 1},
+
+ {0x0181, 613, 1},
+
+ {0x1f81, 134, 2},
{0xffffffff, -1, 0},
- {0xaba5, 1607, 1},
+ {0x16e48, 3891, 1},
- {0x01b1, 691, 1},
+ {0x24c0, 2522, 1},
- {0x10ca5, 3468, 1},
+ {0x1c81, 906, 1},
- {0x10b3, 2802, 1},
+ {0xab81, 1648, 1},
- {0x2169, 2319, 1},
+ {0x10c81, 3621, 1},
- {0x024e, 601, 1},
+ {0x10a5, 2909, 1},
+
+ {0x1e6c, 2024, 1},
- {0xabb1, 1643, 1},
+ {0x046c, 1063, 1},
- {0xa7b1, 682, 1},
+ {0x016c, 327, 1},
- {0x10cb1, 3504, 1},
+ {0x1f6c, 2363, 1},
- {0x10a5, 2760, 1},
+ {0x118a5, 3786, 1},
{0xffffffff, -1, 0},
- {0x01af, 399, 1},
+ {0xa76c, 3234, 1},
- {0x1faf, 244, 2},
- {0xffffffff, -1, 0},
+ {0x24c8, 2546, 1},
- {0x0248, 592, 1},
+ {0x1e6a, 2021, 1},
- {0x10b1, 2796, 1},
+ {0x046a, 1060, 1},
- {0xabaf, 1637, 1},
+ {0x016a, 324, 1},
- {0x1fad, 234, 2},
+ {0x1f6a, 2357, 1},
- {0x10caf, 3498, 1},
+ {0x038f, 839, 1},
- {0x04cd, 1184, 1},
+ {0x1e32, 1936, 1},
- {0x01cd, 429, 1},
+ {0xa76a, 3231, 1},
- {0xabad, 1631, 1},
+ {0x0132, 243, 1},
- {0xa7ad, 658, 1},
+ {0x24b9, 2501, 1},
+ {0xffffffff, -1, 0},
- {0x10cad, 3492, 1},
+ {0xa66c, 3081, 1},
- {0x00cd, 117, 1},
+ {0xa732, 3147, 1},
- {0x10af, 2790, 1},
+ {0x10a3, 2903, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0x021e, 547, 1},
-
- {0x1fa3, 224, 2},
{0xffffffff, -1, 0},
- {0x03a3, 800, 1},
+ {0x118a3, 3780, 1},
- {0x10ad, 2784, 1},
+ {0xa66a, 3078, 1},
- {0xaba3, 1601, 1},
+ {0x1f59, 2339, 1},
+
+ {0x10a1, 2897, 1},
+
+ {0x0059, 71, 1},
+
+ {0x1e64, 2012, 1},
+
+ {0x0464, 1051, 1},
+
+ {0x0164, 315, 1},
+
+ {0x118a1, 3774, 1},
+
+ {0x2c64, 676, 1},
{0xffffffff, -1, 0},
- {0x10ca3, 3462, 1},
+ {0xa764, 3222, 1},
- {0x10cd, 2862, 1},
+ {0x024e, 601, 1},
- {0x1fa1, 214, 2},
+ {0x1e68, 2018, 1},
- {0x24b7, 2346, 1},
+ {0x0468, 1057, 1},
- {0x03a1, 796, 1},
+ {0x0168, 321, 1},
- {0x0212, 529, 1},
+ {0x1f68, 2351, 1},
- {0xaba1, 1595, 1},
+ {0x10417, 3459, 1},
- {0x10a3, 2754, 1},
+ {0x042f, 993, 1},
- {0x10ca1, 3456, 1},
+ {0xa768, 3228, 1},
- {0x01d3, 438, 1},
+ {0x1f2f, 2294, 1},
- {0x1fd3, 25, 3},
+ {0x0417, 916, 1},
- {0x0210, 526, 1},
- {0xffffffff, -1, 0},
+ {0x0212, 529, 1},
- {0x00d3, 135, 1},
+ {0xa664, 3069, 1},
- {0x1e97, 34, 2},
+ {0x2c17, 2639, 1},
- {0x10a1, 2748, 1},
+ {0x216c, 2477, 1},
- {0x0197, 649, 1},
+ {0x1e62, 2009, 1},
- {0x1f97, 204, 2},
- {0xffffffff, -1, 0},
+ {0x0462, 1047, 1},
- {0x0397, 759, 1},
+ {0x0162, 312, 1},
- {0x1041d, 3324, 1},
+ {0x1e46, 1966, 1},
- {0xab97, 1565, 1},
+ {0x2c62, 658, 1},
- {0x041d, 929, 1},
+ {0xa668, 3075, 1},
- {0x10c97, 3426, 1},
+ {0xa762, 3219, 1},
- {0x1f1d, 2121, 1},
+ {0x216a, 2471, 1},
- {0x2c1d, 2508, 1},
+ {0x0046, 15, 1},
- {0x1e72, 1884, 1},
+ {0xa746, 3177, 1},
- {0x0472, 1061, 1},
+ {0x0248, 592, 1},
+ {0xffffffff, -1, 0},
- {0x0172, 336, 1},
+ {0x2132, 2438, 1},
- {0x118b3, 3567, 1},
+ {0x1e60, 2005, 1},
- {0x2c72, 2580, 1},
+ {0x0460, 1044, 1},
- {0x0372, 712, 1},
+ {0x0160, 309, 1},
+ {0xffffffff, -1, 0},
- {0x1041b, 3318, 1},
+ {0x2c60, 2711, 1},
- {0xab72, 1454, 1},
+ {0xa662, 3066, 1},
- {0x041b, 923, 1},
+ {0xa760, 3216, 1},
- {0x118a5, 3525, 1},
+ {0x0210, 526, 1},
- {0x1f1b, 2115, 1},
+ {0xa646, 3023, 1},
- {0x2c1b, 2502, 1},
+ {0x1e44, 1963, 1},
- {0x1e70, 1881, 1},
+ {0x1eec, 2201, 1},
- {0x0470, 1058, 1},
+ {0x04ec, 1243, 1},
- {0x0170, 333, 1},
+ {0x01ec, 477, 1},
- {0x118b1, 3561, 1},
+ {0x1fec, 2435, 1},
- {0x2c70, 610, 1},
+ {0x0044, 9, 1},
- {0x0370, 709, 1},
+ {0xa744, 3174, 1},
- {0x1e46, 1817, 1},
+ {0x2164, 2453, 1},
+ {0xffffffff, -1, 0},
- {0xab70, 1448, 1},
+ {0xa660, 3063, 1},
- {0x1e66, 1866, 1},
+ {0x1ee2, 2186, 1},
- {0x0466, 1043, 1},
+ {0x04e2, 1228, 1},
- {0x0166, 318, 1},
+ {0x01e2, 462, 1},
- {0x1e44, 1814, 1},
+ {0x1fe2, 36, 3},
- {0x0046, 15, 1},
+ {0x2ce2, 2882, 1},
- {0x118af, 3555, 1},
+ {0x2168, 2465, 1},
- {0xa746, 3027, 1},
- {0xffffffff, -1, 0},
+ {0x1ed8, 2171, 1},
- {0xa766, 3075, 1},
+ {0x04d8, 1213, 1},
- {0x0044, 9, 1},
+ {0xa644, 3020, 1},
+
+ {0x1fd8, 2423, 1},
- {0x118ad, 3549, 1},
+ {0x2cd8, 2867, 1},
- {0xa744, 3024, 1},
+ {0x00d8, 147, 1},
- {0x1e7a, 1896, 1},
+ {0x1ede, 2180, 1},
- {0x047a, 1073, 1},
+ {0x04de, 1222, 1},
- {0x1e3a, 1799, 1},
- {0xffffffff, -1, 0},
+ {0x01de, 456, 1},
+
+ {0x03a5, 810, 1},
+
+ {0x2cde, 2876, 1},
+
+ {0x00de, 165, 1},
- {0xa646, 2874, 1},
+ {0x2162, 2447, 1},
- {0x1f3a, 2154, 1},
+ {0x1ed6, 2168, 1},
- {0xa666, 2922, 1},
+ {0x04d6, 1210, 1},
- {0xab7a, 1478, 1},
+ {0x24cf, 2567, 1},
- {0x118a3, 3519, 1},
+ {0x1fd6, 76, 2},
- {0xa644, 2871, 1},
+ {0x2cd6, 2864, 1},
- {0xa73a, 3009, 1},
+ {0x00d6, 144, 1},
{0xffffffff, -1, 0},
- {0x1ef4, 2064, 1},
+ {0x104d2, 3612, 1},
- {0x04f4, 1244, 1},
+ {0x03da, 848, 1},
+ {0xffffffff, -1, 0},
- {0x01f4, 487, 1},
+ {0x1ed2, 2162, 1},
- {0x1ff4, 101, 2},
+ {0x04d2, 1204, 1},
- {0x118a1, 3513, 1},
+ {0x2160, 2441, 1},
+
+ {0x1fd2, 20, 3},
- {0x03f4, 762, 1},
+ {0x2cd2, 2858, 1},
- {0x1eec, 2052, 1},
+ {0x00d2, 132, 1},
- {0x04ec, 1232, 1},
+ {0x104d0, 3606, 1},
- {0x01ec, 477, 1},
+ {0x03a3, 803, 1},
+ {0xffffffff, -1, 0},
- {0x1fec, 2286, 1},
+ {0x1ed0, 2159, 1},
- {0x0546, 1397, 1},
+ {0x04d0, 1201, 1},
- {0x03ec, 872, 1},
+ {0x0532, 1348, 1},
{0xffffffff, -1, 0},
- {0x013f, 261, 1},
+ {0x2cd0, 2855, 1},
- {0x1f3f, 2169, 1},
+ {0x00d0, 126, 1},
- {0x0544, 1391, 1},
+ {0x03a1, 799, 1},
- {0x1eea, 2049, 1},
+ {0x104cc, 3594, 1},
- {0x04ea, 1229, 1},
+ {0x104bf, 3555, 1},
- {0x01ea, 474, 1},
+ {0x042d, 987, 1},
- {0x1fea, 2256, 1},
- {0xffffffff, -1, 0},
+ {0x1ecc, 2153, 1},
- {0x03ea, 869, 1},
+ {0x1f2d, 2288, 1},
- {0x1ee8, 2046, 1},
+ {0x2c2d, 2705, 1},
- {0x04e8, 1226, 1},
+ {0x1fcc, 71, 2},
- {0x01e8, 471, 1},
+ {0x2ccc, 2849, 1},
- {0x1fe8, 2280, 1},
+ {0x00cc, 114, 1},
- {0x053a, 1361, 1},
+ {0x104cb, 3591, 1},
- {0x03e8, 866, 1},
+ {0x03f4, 765, 1},
- {0x1ee6, 2043, 1},
+ {0x1cbf, 1594, 1},
- {0x04e6, 1223, 1},
+ {0xabbf, 1834, 1},
- {0x01e6, 468, 1},
+ {0x04cb, 1192, 1},
- {0x1fe6, 88, 2},
+ {0x01cb, 425, 1},
- {0x1f4b, 2181, 1},
+ {0x1fcb, 2390, 1},
- {0x03e6, 863, 1},
+ {0x104c6, 3576, 1},
- {0x1e5e, 1853, 1},
+ {0x00cb, 111, 1},
+ {0xffffffff, -1, 0},
- {0x004b, 27, 1},
+ {0x1ec6, 2144, 1},
- {0x015e, 306, 1},
+ {0x03cf, 842, 1},
- {0x2166, 2310, 1},
+ {0x104c5, 3573, 1},
- {0x1ee4, 2040, 1},
+ {0x1fc6, 67, 2},
- {0x04e4, 1220, 1},
+ {0x2cc6, 2840, 1},
- {0x01e4, 465, 1},
+ {0x00c6, 96, 1},
- {0x1fe4, 80, 2},
+ {0x04c5, 1183, 1},
- {0xa75e, 3063, 1},
+ {0x01c5, 417, 1},
- {0x03e4, 860, 1},
+ {0x104bd, 3549, 1},
- {0x1ee0, 2034, 1},
+ {0x0397, 762, 1},
- {0x04e0, 1214, 1},
+ {0x00c5, 92, 1},
+ {0xffffffff, -1, 0},
- {0x01e0, 459, 1},
+ {0x1e920, 4059, 1},
+
+ {0xff32, 3363, 1},
- {0x053f, 1376, 1},
+ {0x104bb, 3543, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x0546, 1408, 1},
- {0x2ce0, 2730, 1},
+ {0x1cbd, 1588, 1},
- {0x03e0, 854, 1},
+ {0xabbd, 1828, 1},
- {0x1edc, 2028, 1},
+ {0x1fbb, 2378, 1},
- {0x04dc, 1208, 1},
+ {0x019f, 673, 1},
- {0xa65e, 2910, 1},
+ {0x1f9f, 204, 2},
{0xffffffff, -1, 0},
- {0x2cdc, 2724, 1},
+ {0x16e59, 3942, 1},
- {0x03dc, 848, 1},
+ {0xabbb, 1822, 1},
- {0x00dc, 159, 1},
+ {0x1c9f, 1504, 1},
- {0x1ed0, 2010, 1},
+ {0xab9f, 1738, 1},
- {0x04d0, 1190, 1},
+ {0x10c9f, 3711, 1},
+
+ {0x1ef0, 2207, 1},
+
+ {0x04f0, 1249, 1},
+
+ {0x01f0, 20, 2},
+
+ {0x019d, 670, 1},
+
+ {0x1f9d, 194, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2cd0, 2706, 1},
+ {0x0544, 1402, 1},
- {0x03d0, 742, 1},
+ {0x1c9d, 1498, 1},
- {0x00d0, 126, 1},
+ {0xab9d, 1732, 1},
- {0x1ecc, 2004, 1},
+ {0x10c9d, 3705, 1},
- {0x054b, 1412, 1},
+ {0x1e99, 42, 2},
{0xffffffff, -1, 0},
- {0x1fcc, 71, 2},
+ {0xff2f, 3354, 1},
- {0x2ccc, 2700, 1},
+ {0x1f99, 174, 2},
+ {0xffffffff, -1, 0},
- {0x1ec6, 1995, 1},
+ {0x0193, 634, 1},
- {0x00cc, 114, 1},
- {0xffffffff, -1, 0},
+ {0x1f93, 184, 2},
- {0x1fc6, 67, 2},
+ {0x1c99, 1486, 1},
- {0x2cc6, 2691, 1},
+ {0xab99, 1720, 1},
- {0x24c8, 2397, 1},
+ {0x10c99, 3693, 1},
- {0x00c6, 96, 1},
+ {0x1c93, 1468, 1},
- {0x04c5, 1172, 1},
+ {0xab93, 1702, 1},
- {0x01c5, 417, 1},
+ {0x10c93, 3675, 1},
+
+ {0x0145, 270, 1},
+
+ {0x16e46, 3885, 1},
{0xffffffff, -1, 0},
- {0x1fbb, 2229, 1},
+ {0x0045, 12, 1},
+ {0xffffffff, -1, 0},
- {0x24c7, 2394, 1},
+ {0x0191, 369, 1},
- {0x00c5, 92, 1},
+ {0x1f91, 174, 2},
- {0x1fb9, 2271, 1},
+ {0x1e91e, 4053, 1},
+ {0xffffffff, -1, 0},
- {0xabbb, 1673, 1},
+ {0x10bf, 2987, 1},
- {0x24c0, 2373, 1},
+ {0x1c91, 1462, 1},
- {0x04c3, 1169, 1},
+ {0xab91, 1696, 1},
- {0xabb9, 1667, 1},
+ {0x10c91, 3669, 1},
+ {0xffffffff, -1, 0},
- {0x1fc3, 71, 2},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x118bf, 3864, 1},
+ {0xffffffff, -1, 0},
- {0x00c3, 86, 1},
+ {0x0187, 363, 1},
- {0x10c5, 2856, 1},
+ {0x1f87, 164, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x10bb, 2826, 1},
+ {0x16e44, 3879, 1},
- {0x1ed4, 2016, 1},
+ {0x1c87, 1047, 1},
- {0x04d4, 1196, 1},
+ {0xab87, 1666, 1},
- {0x10b9, 2820, 1},
+ {0x10c87, 3639, 1},
- {0x13fc, 1700, 1},
+ {0x1e72, 2033, 1},
- {0x2cd4, 2712, 1},
+ {0x0472, 1072, 1},
- {0x0246, 589, 1},
+ {0x0172, 336, 1},
- {0x00d4, 138, 1},
+ {0x0232, 574, 1},
+
+ {0x2c72, 2729, 1},
- {0x10c3, 2850, 1},
+ {0x10c5, 3005, 1},
{0xffffffff, -1, 0},
- {0xff3a, 3234, 1},
+ {0x1e912, 4017, 1},
- {0x0244, 688, 1},
+ {0xab72, 1603, 1},
- {0x019f, 670, 1},
+ {0x0139, 252, 1},
- {0x1f9f, 204, 2},
- {0xffffffff, -1, 0},
+ {0x1f39, 2300, 1},
- {0x039f, 789, 1},
- {0xffffffff, -1, 0},
+ {0x10bd, 2981, 1},
- {0xab9f, 1589, 1},
+ {0x1e66, 2015, 1},
+
+ {0x0466, 1054, 1},
+
+ {0x0166, 318, 1},
{0xffffffff, -1, 0},
- {0x10c9f, 3450, 1},
+ {0x118bd, 3858, 1},
- {0x019d, 667, 1},
+ {0x10bb, 2975, 1},
- {0x1f9d, 194, 2},
+ {0xa766, 3225, 1},
- {0x023a, 2565, 1},
+ {0x1e70, 2030, 1},
- {0x039d, 783, 1},
+ {0x0470, 1069, 1},
- {0x1e5a, 1847, 1},
+ {0x0170, 333, 1},
- {0xab9d, 1583, 1},
+ {0x118bb, 3852, 1},
- {0x015a, 300, 1},
+ {0x2c70, 610, 1},
- {0x10c9d, 3444, 1},
+ {0x1edc, 2177, 1},
- {0x1e9b, 1856, 1},
+ {0x04dc, 1219, 1},
- {0x24cd, 2412, 1},
+ {0x03ec, 875, 1},
- {0x005a, 74, 1},
+ {0xab70, 1597, 1},
- {0x1f9b, 184, 2},
+ {0x2cdc, 2873, 1},
- {0xa75a, 3057, 1},
+ {0x00dc, 159, 1},
- {0x039b, 776, 1},
+ {0xa666, 3072, 1},
- {0x1ece, 2007, 1},
+ {0x1e910, 4011, 1},
- {0xab9b, 1577, 1},
+ {0x1e5a, 1996, 1},
- {0x1e99, 42, 2},
+ {0x0143, 267, 1},
- {0x10c9b, 3438, 1},
+ {0x015a, 300, 1},
- {0x2cce, 2703, 1},
+ {0x03e2, 860, 1},
- {0x1f99, 174, 2},
+ {0x0043, 6, 1},
- {0x00ce, 120, 1},
+ {0x005a, 74, 1},
- {0x0399, 767, 1},
+ {0xa75a, 3207, 1},
- {0xa65a, 2904, 1},
+ {0x24cc, 2558, 1},
- {0xab99, 1571, 1},
+ {0x24bf, 2519, 1},
+
+ {0x03d8, 845, 1},
{0xffffffff, -1, 0},
- {0x10c99, 3432, 1},
+ {0x1e3a, 1948, 1},
- {0x0193, 634, 1},
+ {0x0246, 589, 1},
+ {0xffffffff, -1, 0},
- {0x1f93, 184, 2},
+ {0x1f3a, 2303, 1},
+
+ {0x03de, 854, 1},
+
+ {0x24cb, 2555, 1},
+
+ {0xa73a, 3159, 1},
+
+ {0xa65a, 3054, 1},
- {0x1e58, 1844, 1},
+ {0x1e58, 1993, 1},
- {0x0393, 746, 1},
+ {0xff2d, 3348, 1},
{0x0158, 297, 1},
- {0xab93, 1553, 1},
- {0xffffffff, -1, 0},
+ {0x03d6, 795, 1},
- {0x10c93, 3414, 1},
+ {0x24c6, 2540, 1},
{0x0058, 68, 1},
- {0x042d, 977, 1},
+ {0xa758, 3204, 1},
- {0xa758, 3054, 1},
+ {0x0141, 264, 1},
- {0x1f2d, 2139, 1},
+ {0x1e42, 1960, 1},
- {0x2c2d, 2556, 1},
+ {0x24c5, 2537, 1},
- {0x118bb, 3591, 1},
+ {0x0041, 0, 1},
- {0x0191, 369, 1},
+ {0x2166, 2459, 1},
- {0x1f91, 174, 2},
+ {0x0244, 691, 1},
+
+ {0x0042, 3, 1},
+
+ {0xa742, 3171, 1},
- {0x118b9, 3585, 1},
+ {0x24bd, 2513, 1},
- {0x0391, 739, 1},
+ {0x104ce, 3600, 1},
{0xffffffff, -1, 0},
- {0xab91, 1547, 1},
+ {0xa658, 3051, 1},
- {0xa658, 2901, 1},
+ {0x1ece, 2156, 1},
+ {0xffffffff, -1, 0},
- {0x10c91, 3408, 1},
+ {0x24bb, 2507, 1},
- {0x018f, 625, 1},
+ {0x03d0, 745, 1},
- {0x1f8f, 164, 2},
- {0xffffffff, -1, 0},
+ {0x2cce, 2852, 1},
- {0x038f, 836, 1},
+ {0x00ce, 120, 1},
{0xffffffff, -1, 0},
- {0xab8f, 1541, 1},
- {0xffffffff, -1, 0},
+ {0xa642, 3017, 1},
- {0x10c8f, 3402, 1},
+ {0x1ef2, 2210, 1},
- {0x018b, 366, 1},
+ {0x04f2, 1252, 1},
- {0x1f8b, 144, 2},
+ {0x01f2, 483, 1},
+
+ {0x1ff2, 257, 2},
+
+ {0x2cf2, 2891, 1},
{0xffffffff, -1, 0},
- {0x0187, 363, 1},
+ {0x0545, 1405, 1},
- {0x1f87, 164, 2},
+ {0x1eea, 2198, 1},
- {0xab8b, 1529, 1},
+ {0x04ea, 1240, 1},
- {0xa78b, 3111, 1},
+ {0x01ea, 474, 1},
- {0x10c8b, 3390, 1},
+ {0x1fea, 2405, 1},
- {0xab87, 1517, 1},
+ {0x1ee8, 2195, 1},
- {0x04c1, 1166, 1},
+ {0x04e8, 1237, 1},
- {0x10c87, 3378, 1},
+ {0x01e8, 471, 1},
- {0x1e7e, 1902, 1},
+ {0x1fe8, 2429, 1},
- {0x047e, 1079, 1},
+ {0x1ee6, 2192, 1},
+
+ {0x04e6, 1234, 1},
+
+ {0x01e6, 468, 1},
+
+ {0x1fe6, 88, 2},
+
+ {0x1f4b, 2330, 1},
{0xffffffff, -1, 0},
- {0x00c1, 80, 1},
+ {0x004b, 27, 1},
- {0x2c7e, 580, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0x0587, 105, 2},
- {0xab7e, 1490, 1},
+ {0x1ee4, 2189, 1},
- {0xa77e, 3096, 1},
+ {0x04e4, 1231, 1},
- {0x1e76, 1890, 1},
+ {0x01e4, 465, 1},
- {0x0476, 1067, 1},
+ {0x1fe4, 80, 2},
- {0x0176, 342, 1},
+ {0x104c1, 3561, 1},
- {0x1e42, 1811, 1},
+ {0x1e5e, 2002, 1},
+ {0xffffffff, -1, 0},
- {0x10c1, 2844, 1},
+ {0x015e, 306, 1},
- {0x0376, 715, 1},
+ {0x04c1, 1177, 1},
- {0x1e36, 1793, 1},
+ {0x1f83, 144, 2},
+ {0xffffffff, -1, 0},
- {0xab76, 1466, 1},
+ {0xa75e, 3213, 1},
- {0x0136, 249, 1},
+ {0x00c1, 80, 1},
- {0x0042, 3, 1},
+ {0x1c83, 947, 1},
+
+ {0xab83, 1654, 1},
- {0x1e3e, 1805, 1},
+ {0x10c83, 3627, 1},
- {0xa742, 3021, 1},
+ {0x0539, 1369, 1},
- {0x1e38, 1796, 1},
+ {0x039f, 792, 1},
- {0x1f3e, 2166, 1},
+ {0x1e7e, 2051, 1},
- {0xa736, 3003, 1},
+ {0x047e, 1090, 1},
- {0x1f38, 2148, 1},
+ {0x16e45, 3882, 1},
{0xffffffff, -1, 0},
- {0x0587, 105, 2},
+ {0x2c7e, 580, 1},
- {0xa73e, 3015, 1},
+ {0xa65e, 3060, 1},
+
+ {0xa77e, 3246, 1},
{0xffffffff, -1, 0},
- {0xa738, 3006, 1},
+ {0xab7e, 1639, 1},
- {0xa642, 2868, 1},
+ {0x03f0, 775, 1},
- {0x1e5c, 1850, 1},
+ {0x039d, 786, 1},
- {0x1e34, 1790, 1},
+ {0x1e76, 2039, 1},
- {0x015c, 303, 1},
+ {0x0476, 1078, 1},
- {0x0134, 246, 1},
+ {0x0176, 342, 1},
+ {0xffffffff, -1, 0},
- {0x1ef6, 2067, 1},
+ {0x1e5c, 1999, 1},
+ {0xffffffff, -1, 0},
- {0x04f6, 1247, 1},
+ {0x015c, 303, 1},
+ {0xffffffff, -1, 0},
- {0x01f6, 372, 1},
+ {0xab76, 1615, 1},
- {0x1ff6, 92, 2},
+ {0x0399, 770, 1},
- {0xa75c, 3060, 1},
+ {0xa75c, 3210, 1},
- {0xa734, 3000, 1},
+ {0x0543, 1399, 1},
- {0x1ef0, 2058, 1},
+ {0x0393, 749, 1},
- {0x04f0, 1238, 1},
+ {0x0149, 46, 2},
- {0x01f0, 20, 2},
- {0xffffffff, -1, 0},
+ {0x1f49, 2324, 1},
- {0x1e30, 1784, 1},
+ {0x1e40, 1957, 1},
- {0x03f0, 772, 1},
+ {0x0049, 4065, 1},
- {0x0130, 261, 2},
+ {0x1eee, 2204, 1},
- {0x0542, 1385, 1},
+ {0x04ee, 1246, 1},
- {0xa65c, 2907, 1},
+ {0x01ee, 480, 1},
- {0x1f83, 144, 2},
+ {0x0345, 770, 1},
- {0x0536, 1349, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xa740, 3168, 1},
- {0xab83, 1505, 1},
+ {0xa65c, 3057, 1},
- {0x053e, 1373, 1},
+ {0x053a, 1372, 1},
- {0x10c83, 3366, 1},
+ {0xff39, 3384, 1},
- {0x0538, 1355, 1},
+ {0x0391, 742, 1},
- {0x1eee, 2055, 1},
+ {0x1e3e, 1954, 1},
- {0x04ee, 1235, 1},
+ {0x2183, 2489, 1},
- {0x01ee, 480, 1},
+ {0x1e38, 1945, 1},
- {0x1f8d, 154, 2},
+ {0x1f3e, 2315, 1},
{0xffffffff, -1, 0},
- {0x03ee, 875, 1},
- {0xffffffff, -1, 0},
+ {0x1f38, 2297, 1},
- {0xab8d, 1535, 1},
+ {0xa73e, 3165, 1},
- {0xa78d, 643, 1},
+ {0xa640, 3014, 1},
- {0x10c8d, 3396, 1},
+ {0xa738, 3156, 1},
- {0x0534, 1343, 1},
+ {0x1e36, 1942, 1},
- {0x0181, 613, 1},
+ {0x0541, 1393, 1},
- {0x1f81, 134, 2},
+ {0x0136, 249, 1},
- {0x013d, 258, 1},
+ {0x1e34, 1939, 1},
+
+ {0x0542, 1396, 1},
+
+ {0x0134, 246, 1},
+
+ {0xa736, 3153, 1},
- {0x1f3d, 2163, 1},
+ {0x013b, 255, 1},
+
+ {0x1f3b, 2306, 1},
+
+ {0xa734, 3150, 1},
{0xffffffff, -1, 0},
- {0xab81, 1499, 1},
+ {0x0372, 715, 1},
- {0x017f, 52, 1},
+ {0x10415, 3453, 1},
- {0x10c81, 3360, 1},
+ {0x16e43, 3876, 1},
- {0x2c7f, 583, 1},
+ {0x16e5a, 3945, 1},
- {0x037f, 881, 1},
+ {0x042b, 981, 1},
- {0xff2d, 3195, 1},
+ {0x0415, 910, 1},
- {0xab7f, 1493, 1},
+ {0x1f2b, 2282, 1},
- {0x1e74, 1887, 1},
+ {0x2c2b, 2699, 1},
- {0x0474, 1064, 1},
+ {0x2c15, 2633, 1},
- {0x0174, 339, 1},
+ {0x10c1, 2993, 1},
+ {0xffffffff, -1, 0},
- {0x1e3c, 1802, 1},
+ {0x1041d, 3477, 1},
- {0x0149, 46, 2},
+ {0x0245, 700, 1},
+ {0xffffffff, -1, 0},
- {0x1f49, 2175, 1},
+ {0xff3a, 3387, 1},
- {0x1f3c, 2160, 1},
+ {0x041d, 934, 1},
- {0xab74, 1460, 1},
+ {0xfb17, 117, 2},
- {0x0049, 3606, 1},
+ {0x1f1d, 2270, 1},
- {0x0143, 267, 1},
+ {0x2c1d, 2657, 1},
- {0x24cc, 2409, 1},
+ {0x0370, 712, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xa73c, 3012, 1},
+ {0x16e58, 3939, 1},
{0xffffffff, -1, 0},
- {0x0043, 6, 1},
+ {0x03dc, 851, 1},
- {0x0141, 264, 1},
+ {0x1041b, 3471, 1},
- {0x24c6, 2391, 1},
+ {0x24ce, 2564, 1},
- {0x013b, 255, 1},
+ {0x16e41, 3870, 1},
- {0x1f3b, 2157, 1},
+ {0x054b, 1423, 1},
- {0x0041, 0, 1},
+ {0x041b, 928, 1},
- {0x0139, 252, 1},
+ {0x16e42, 3873, 1},
+
+ {0x1f1b, 2264, 1},
+
+ {0x2c1b, 2651, 1},
- {0x1f39, 2151, 1},
+ {0x10419, 3465, 1},
- {0x24c5, 2388, 1},
+ {0x10413, 3447, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x24bb, 2358, 1},
+ {0x0419, 922, 1},
- {0x13fa, 1694, 1},
+ {0x0413, 903, 1},
- {0x053d, 1370, 1},
+ {0x1f19, 2258, 1},
- {0x24b9, 2352, 1},
+ {0x2c19, 2645, 1},
- {0x0429, 965, 1},
+ {0x2c13, 2627, 1},
- {0x2183, 2340, 1},
+ {0x1040f, 3435, 1},
- {0x1f29, 2127, 1},
+ {0x1e917, 4032, 1},
+ {0xffffffff, -1, 0},
- {0x2c29, 2544, 1},
+ {0x017f, 52, 1},
- {0x24c3, 2382, 1},
+ {0x040f, 1041, 1},
- {0x10427, 3354, 1},
+ {0x2c7f, 583, 1},
- {0x10425, 3348, 1},
+ {0x1f0f, 2252, 1},
- {0x0427, 959, 1},
+ {0x2c0f, 2615, 1},
- {0x0425, 953, 1},
+ {0x1040d, 3429, 1},
+
+ {0xab7f, 1642, 1},
{0xffffffff, -1, 0},
- {0x2c27, 2538, 1},
+ {0x212b, 92, 1},
+
+ {0x040d, 1035, 1},
- {0x2c25, 2532, 1},
+ {0x1040b, 3423, 1},
- {0x0549, 1406, 1},
+ {0x1f0d, 2246, 1},
- {0x053c, 1367, 1},
+ {0x2c0d, 2609, 1},
+ {0xffffffff, -1, 0},
- {0x10423, 3342, 1},
+ {0x040b, 1029, 1},
{0xffffffff, -1, 0},
- {0x0423, 947, 1},
+ {0x1f0b, 2240, 1},
- {0x0543, 1388, 1},
+ {0x2c0b, 2603, 1},
{0xffffffff, -1, 0},
- {0x2c23, 2526, 1},
+ {0x24c1, 2525, 1},
- {0xff36, 3222, 1},
+ {0x16e4b, 3900, 1},
+
+ {0x10409, 3417, 1},
+
+ {0x10405, 3405, 1},
{0xffffffff, -1, 0},
- {0x0541, 1382, 1},
+ {0x0243, 354, 1},
+
+ {0x0409, 1023, 1},
+
+ {0x0405, 1011, 1},
- {0x10421, 3336, 1},
+ {0x1f09, 2234, 1},
- {0x053b, 1364, 1},
+ {0x2c09, 2597, 1},
- {0x0421, 941, 1},
+ {0x2c05, 2585, 1},
- {0xff38, 3228, 1},
+ {0x0549, 1417, 1},
- {0x0539, 1358, 1},
+ {0x10403, 3399, 1},
+
+ {0x16e5e, 3957, 1},
+ {0xffffffff, -1, 0},
- {0x2c21, 2520, 1},
+ {0x0540, 1390, 1},
- {0x10419, 3312, 1},
+ {0x0403, 1005, 1},
- {0x10417, 3306, 1},
+ {0x023a, 2714, 1},
+ {0xffffffff, -1, 0},
- {0x0419, 917, 1},
+ {0x2c03, 2579, 1},
- {0x0417, 911, 1},
+ {0x10401, 3393, 1},
- {0x1f19, 2109, 1},
+ {0x03ea, 872, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x2c19, 2496, 1},
+ {0x0401, 999, 1},
- {0x2c17, 2490, 1},
+ {0x03e8, 869, 1},
- {0x023e, 2568, 1},
+ {0x053e, 1384, 1},
- {0xff34, 3216, 1},
+ {0x2c01, 2573, 1},
- {0x10415, 3300, 1},
+ {0x0538, 1366, 1},
- {0x10413, 3294, 1},
+ {0x03e6, 866, 1},
- {0x0415, 905, 1},
+ {0x0241, 586, 1},
- {0x0413, 899, 1},
- {0xffffffff, -1, 0},
+ {0x1ef8, 2219, 1},
- {0x2c15, 2484, 1},
+ {0x04f8, 1261, 1},
- {0x2c13, 2478, 1},
+ {0x01f8, 490, 1},
+
+ {0x1ff8, 2399, 1},
+
+ {0x0536, 1360, 1},
{0xffffffff, -1, 0},
- {0x24ce, 2415, 1},
+ {0x03e4, 863, 1},
- {0x1040f, 3282, 1},
+ {0x0534, 1354, 1},
{0xffffffff, -1, 0},
- {0x040f, 1031, 1},
+ {0x053b, 1375, 1},
- {0xff30, 3204, 1},
+ {0x16e5c, 3951, 1},
- {0x1f0f, 2103, 1},
+ {0x1ef6, 2216, 1},
- {0x2c0f, 2466, 1},
+ {0x04f6, 1258, 1},
- {0x1040d, 3276, 1},
- {0xffffffff, -1, 0},
+ {0x01f6, 372, 1},
- {0x040d, 1025, 1},
+ {0x1ff6, 92, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0147, 273, 1},
+ {0x16e49, 3894, 1},
+ {0xffffffff, -1, 0},
- {0x1f0d, 2097, 1},
+ {0x1f8d, 154, 2},
- {0x2c0d, 2460, 1},
+ {0x1e3c, 1951, 1},
- {0x1040b, 3270, 1},
+ {0x16e40, 3867, 1},
- {0x0047, 18, 1},
+ {0xa78d, 643, 1},
- {0x040b, 1019, 1},
+ {0x1f3c, 2309, 1},
- {0x0230, 571, 1},
+ {0xab8d, 1684, 1},
- {0x1f0b, 2091, 1},
+ {0x10c8d, 3657, 1},
- {0x2c0b, 2454, 1},
+ {0xa73c, 3162, 1},
+ {0xffffffff, -1, 0},
- {0x10409, 3264, 1},
+ {0x1e78, 2042, 1},
- {0x10405, 3252, 1},
+ {0x0478, 1081, 1},
- {0x0409, 1013, 1},
+ {0x0178, 168, 1},
- {0x0405, 1001, 1},
+ {0x1e74, 2036, 1},
- {0x1f09, 2085, 1},
+ {0x0474, 1075, 1},
- {0x2c09, 2448, 1},
+ {0x0174, 339, 1},
- {0x2c05, 2436, 1},
+ {0xff38, 3381, 1},
- {0x10403, 3246, 1},
+ {0x0376, 718, 1},
- {0x10401, 3240, 1},
+ {0xab78, 1621, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x0403, 995, 1},
+ {0xab74, 1609, 1},
- {0x0401, 989, 1},
- {0xffffffff, -1, 0},
+ {0x0429, 974, 1},
- {0x2c03, 2430, 1},
+ {0xff36, 3375, 1},
- {0x2c01, 2424, 1},
+ {0x1f29, 2276, 1},
- {0x13f9, 1691, 1},
+ {0x2c29, 2693, 1},
- {0x042f, 983, 1},
+ {0xff34, 3369, 1},
{0xffffffff, -1, 0},
- {0x1f2f, 2145, 1},
+ {0x10427, 3507, 1},
- {0x1041f, 3330, 1},
- {0xffffffff, -1, 0},
+ {0x10425, 3501, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0x041f, 935, 1},
+ {0x0427, 968, 1},
- {0x023d, 378, 1},
+ {0x0425, 962, 1},
- {0x10411, 3288, 1},
+ {0x03ee, 878, 1},
- {0x2c1f, 2514, 1},
+ {0x2c27, 2687, 1},
- {0x0411, 893, 1},
+ {0x2c25, 2681, 1},
- {0x0547, 1400, 1},
- {0xffffffff, -1, 0},
+ {0xff2b, 3342, 1},
+
+ {0x10423, 3495, 1},
- {0x2c11, 2472, 1},
+ {0x1041f, 3483, 1},
- {0x10407, 3258, 1},
+ {0x10411, 3441, 1},
{0xffffffff, -1, 0},
- {0x0407, 1007, 1},
+ {0x0423, 956, 1},
- {0x24c1, 2376, 1},
+ {0x041f, 941, 1},
+
+ {0x0411, 896, 1},
+
+ {0x2c23, 2675, 1},
+
+ {0x2c1f, 2663, 1},
+
+ {0x2c11, 2621, 1},
+
+ {0x10407, 3411, 1},
{0xffffffff, -1, 0},
- {0x2c07, 2442, 1},
+ {0x017d, 351, 1},
{0xffffffff, -1, 0},
- {0x13f8, 1688, 1},
+ {0x0407, 1017, 1},
+
+ {0x13f8, 1837, 1},
+
+ {0xa77d, 1855, 1},
+
+ {0x2c07, 2591, 1},
+
+ {0xab7d, 1636, 1},
+
+ {0x017b, 348, 1},
+
+ {0x0179, 345, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff39, 3231, 1},
- {0xffffffff, -1, 0},
+ {0xa77b, 3243, 1},
- {0x0243, 354, 1},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xa779, 3240, 1},
- {0x0241, 586, 1},
+ {0xab7b, 1630, 1},
- {0xff29, 3183, 1},
+ {0xab79, 1624, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0},
+
+ {0x023e, 2717, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0x023b, 577, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff27, 3177, 1},
+ {0x037f, 884, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff25, 3171, 1},
+ {0x053c, 1378, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff23, 3165, 1},
+ {0xff29, 3336, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xff27, 3330, 1},
+
+ {0xff25, 3324, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff21, 3159, 1},
+ {0xff23, 3318, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
@@ -2816,37 +3183,97 @@ unicode_unfold_key(OnigCodePoint code)
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb15, 113, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0},
- {0xfb17, 117, 2},
+ {0x1e915, 4026, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb13, 121, 2},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x1e91d, 4050, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x1e91b, 4044, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xff2f, 3201, 1},
+ {0x1e919, 4038, 1},
+
+ {0x1e913, 4020, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0xfb05, 29, 2},
+ {0xffffffff, -1, 0},
+
+ {0x1e90f, 4008, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0},
+
+ {0xfb03, 0, 3},
+
+ {0x1e90d, 4002, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb15, 113, 2},
+ {0x1e90b, 3996, 1},
+ {0xffffffff, -1, 0},
- {0xfb13, 121, 2},
+ {0xfb01, 8, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x1e909, 3990, 1},
+
+ {0x1e905, 3978, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x1e903, 3972, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+
+ {0x1e901, 3966, 1},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xffffffff, -1, 0},
-
- {0xfb05, 29, 2},
{0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb03, 0, 3},
+ {0x1e91f, 4056, 1},
+
+ {0x1e911, 4014, 1},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
+ {0xffffffff, -1, 0}, {0xffffffff, -1, 0},
- {0xfb01, 8, 2}
+ {0x1e907, 3984, 1}
};
if (0 == 0)
{
int key = hash(&code);
- if (key <= MAX_HASH_VALUE && key >= 0)
+ if (key <= MAX_HASH_VALUE)
{
OnigCodePoint gcode = wordlist[key].code;
diff --git a/ext/mbstring/oniguruma/src/utf16_be.c b/ext/mbstring/oniguruma/src/utf16_be.c
index c3bf6c39dc..0fd298d2b4 100644
--- a/ext/mbstring/oniguruma/src/utf16_be.c
+++ b/ext/mbstring/oniguruma/src/utf16_be.c
@@ -2,7 +2,7 @@
utf16_be.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -27,7 +27,53 @@
* SUCH DAMAGE.
*/
-#include "regenc.h"
+#include "regint.h" /* for USE_CALLOUT */
+
+
+static int
+init(void)
+{
+#ifdef USE_CALLOUT
+
+ int id;
+ OnigEncoding enc;
+ char* name;
+ unsigned int args[4];
+ OnigValue opts[4];
+
+ enc = ONIG_ENCODING_UTF16_BE;
+
+ name = "\000F\000A\000I\000L\000\000"; BC0_P(name, fail);
+ name = "\000M\000I\000S\000M\000A\000T\000C\000H\000\000"; BC0_P(name, mismatch);
+
+ name = "\000M\000A\000X\000\000";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_CHAR;
+ opts[0].c = 'X';
+ BC_B_O(name, max, 2, args, 1, opts);
+
+ name = "\000E\000R\000R\000O\000R\000\000";
+ args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT;
+ BC_P_O(name, error, 1, args, 1, opts);
+
+ name = "\000C\000O\000U\000N\000T\000\000";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, count, 1, args, 1, opts);
+
+ name = "\000T\000O\000T\000A\000L\000_\000C\000O\000U\000N\000T\000\000";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, total_count, 1, args, 1, opts);
+
+ name = "\000C\000M\000P\000\000";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_STRING;
+ args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ BC_P(name, cmp, 3, args);
+
+#endif /* USE_CALLOUT */
+
+ return ONIG_NORMAL;
+}
static const int EncLen_UTF16[] = {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -217,8 +263,8 @@ utf16be_get_case_fold_codes_by_str(OnigCaseFoldType flag,
OnigEncodingType OnigEncodingUTF16_BE = {
utf16be_mbc_enc_len,
"UTF-16BE", /* name */
- 4, /* max byte length */
- 2, /* min byte length */
+ 4, /* max enc length */
+ 2, /* min enc length */
utf16be_is_mbc_newline,
utf16be_mbc_to_code,
utf16be_code_to_mbclen,
@@ -231,7 +277,9 @@ OnigEncodingType OnigEncodingUTF16_BE = {
onigenc_utf16_32_get_ctype_code_range,
utf16be_left_adjust_char_head,
onigenc_always_false_is_allowed_reverse_match,
- NULL, /* init */
- NULL, /* is_initialized */
- is_valid_mbc_string
+ init,
+ 0, /* is_initialized */
+ is_valid_mbc_string,
+ ENC_FLAG_UNICODE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/utf16_le.c b/ext/mbstring/oniguruma/src/utf16_le.c
index 871872f478..47cacffdaf 100644
--- a/ext/mbstring/oniguruma/src/utf16_le.c
+++ b/ext/mbstring/oniguruma/src/utf16_le.c
@@ -2,7 +2,7 @@
utf16_le.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,8 +26,52 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+#include "regint.h" /* for USE_CALLOUT */
-#include "regenc.h"
+static int
+init(void)
+{
+#ifdef USE_CALLOUT
+
+ int id;
+ OnigEncoding enc;
+ char* name;
+ unsigned int args[4];
+ OnigValue opts[4];
+
+ enc = ONIG_ENCODING_UTF16_LE;
+
+ name = "F\000A\000I\000L\000\000\000"; BC0_P(name, fail);
+ name = "M\000I\000S\000M\000A\000T\000C\000H\000\000\000"; BC0_P(name, mismatch);
+
+ name = "M\000A\000X\000\000\000";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_CHAR;
+ opts[0].c = 'X';
+ BC_B_O(name, max, 2, args, 1, opts);
+
+ name = "E\000R\000R\000O\000R\000\000\000";
+ args[0] = ONIG_TYPE_LONG; opts[0].l = ONIG_ABORT;
+ BC_P_O(name, error, 1, args, 1, opts);
+
+ name = "C\000O\000U\000N\000T\000\000\000";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, count, 1, args, 1, opts);
+
+ name = "T\000O\000T\000A\000L\000_\000C\000O\000U\000N\000T\000\000\000";
+ args[0] = ONIG_TYPE_CHAR; opts[0].c = '>';
+ BC_B_O(name, total_count, 1, args, 1, opts);
+
+ name = "C\000M\000P\000\000\000";
+ args[0] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ args[1] = ONIG_TYPE_STRING;
+ args[2] = ONIG_TYPE_TAG | ONIG_TYPE_LONG;
+ BC_P(name, cmp, 3, args);
+
+#endif /* USE_CALLOUT */
+
+ return ONIG_NORMAL;
+}
static const int EncLen_UTF16[] = {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -226,8 +270,8 @@ utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag,
OnigEncodingType OnigEncodingUTF16_LE = {
utf16le_mbc_enc_len,
"UTF-16LE", /* name */
- 4, /* max byte length */
- 2, /* min byte length */
+ 4, /* max enc length */
+ 2, /* min enc length */
utf16le_is_mbc_newline,
utf16le_mbc_to_code,
utf16le_code_to_mbclen,
@@ -240,7 +284,9 @@ OnigEncodingType OnigEncodingUTF16_LE = {
onigenc_utf16_32_get_ctype_code_range,
utf16le_left_adjust_char_head,
onigenc_always_false_is_allowed_reverse_match,
- NULL, /* init */
- NULL, /* is_initialized */
- is_valid_mbc_string
+ init,
+ 0, /* is_initialized */
+ is_valid_mbc_string,
+ ENC_FLAG_UNICODE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/utf32_be.c b/ext/mbstring/oniguruma/src/utf32_be.c
index b65c1c13a6..db353afc50 100644
--- a/ext/mbstring/oniguruma/src/utf32_be.c
+++ b/ext/mbstring/oniguruma/src/utf32_be.c
@@ -2,7 +2,7 @@
utf32_be.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -175,8 +175,8 @@ utf32be_get_case_fold_codes_by_str(OnigCaseFoldType flag,
OnigEncodingType OnigEncodingUTF32_BE = {
utf32be_mbc_enc_len,
"UTF-32BE", /* name */
- 4, /* max byte length */
- 4, /* min byte length */
+ 4, /* max enc length */
+ 4, /* min enc length */
utf32be_is_mbc_newline,
utf32be_mbc_to_code,
utf32be_code_to_mbclen,
@@ -191,5 +191,7 @@ OnigEncodingType OnigEncodingUTF32_BE = {
onigenc_always_false_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_UNICODE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/utf32_le.c b/ext/mbstring/oniguruma/src/utf32_le.c
index 4c2ffc7868..f32ce9a61c 100644
--- a/ext/mbstring/oniguruma/src/utf32_le.c
+++ b/ext/mbstring/oniguruma/src/utf32_le.c
@@ -2,7 +2,7 @@
utf32_le.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -175,8 +175,8 @@ utf32le_get_case_fold_codes_by_str(OnigCaseFoldType flag,
OnigEncodingType OnigEncodingUTF32_LE = {
utf32le_mbc_enc_len,
"UTF-32LE", /* name */
- 4, /* max byte length */
- 4, /* min byte length */
+ 4, /* max enc length */
+ 4, /* min enc length */
utf32le_is_mbc_newline,
utf32le_mbc_to_code,
utf32le_code_to_mbclen,
@@ -191,5 +191,7 @@ OnigEncodingType OnigEncodingUTF32_LE = {
onigenc_always_false_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_UNICODE,
+ 0, 0
};
diff --git a/ext/mbstring/oniguruma/src/utf8.c b/ext/mbstring/oniguruma/src/utf8.c
index 219b7eacea..22a8db1535 100644
--- a/ext/mbstring/oniguruma/src/utf8.c
+++ b/ext/mbstring/oniguruma/src/utf8.c
@@ -2,7 +2,7 @@
utf8.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2016 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
+ * Copyright (c) 2002-2018 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,7 +29,7 @@
#include "regenc.h"
-//#define USE_INVALID_CODE_SCHEME
+/* #define USE_INVALID_CODE_SCHEME */
#ifdef USE_INVALID_CODE_SCHEME
/* virtual codepoint values for invalid encoding byte 0xfe and 0xff */
@@ -90,6 +90,7 @@ is_valid_mbc_string(const UChar* p, const UChar* end)
return TRUE;
}
+#if 0
static int
is_mbc_newline(const UChar* p, const UChar* end)
{
@@ -114,6 +115,7 @@ is_mbc_newline(const UChar* p, const UChar* end)
return 0;
}
+#endif
static OnigCodePoint
mbc_to_code(const UChar* p, const UChar* end)
@@ -122,7 +124,7 @@ mbc_to_code(const UChar* p, const UChar* end)
OnigCodePoint n;
len = mbc_enc_len(p);
- if (len > end - p) len = end - p;
+ if (len > (int )(end - p)) len = (int )(end - p);
c = *p++;
if (len > 1) {
@@ -214,7 +216,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf)
}
*p++ = UTF8_TRAIL0(code);
- return p - buf;
+ return (int )(p - buf);
}
}
@@ -246,43 +248,6 @@ mbc_case_fold(OnigCaseFoldType flag, const UChar** pp,
}
}
-#if 0
-static int
-is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end)
-{
- const UChar* p = *pp;
-
- if (ONIGENC_IS_MBC_ASCII(p)) {
- (*pp)++;
- return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p);
- }
- else {
- (*pp) += enclen(ONIG_ENCODING_UTF8, p);
-
- if (*p == 0xc3) {
- int c = *(p + 1);
- if (c >= 0x80) {
- if (c <= (UChar )0x9e) { /* upper */
- if (c == (UChar )0x97) return FALSE;
- return TRUE;
- }
- else if (c >= (UChar )0xa0 && c <= (UChar )0xbe) { /* lower */
- if (c == (UChar )'\267') return FALSE;
- return TRUE;
- }
- else if (c == (UChar )0x9f &&
- (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {
- return TRUE;
- }
- }
- }
- }
-
- return FALSE;
-}
-#endif
-
-
static int
get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out,
const OnigCodePoint* ranges[])
@@ -315,9 +280,9 @@ get_case_fold_codes_by_str(OnigCaseFoldType flag,
OnigEncodingType OnigEncodingUTF8 = {
mbc_enc_len,
"UTF-8", /* name */
- 6, /* max byte length */
- 1, /* min byte length */
- is_mbc_newline,
+ 6, /* max enc length */
+ 1, /* min enc length */
+ onigenc_is_mbc_newline_0x0a,
mbc_to_code,
code_to_mbclen,
code_to_mbc,
@@ -331,5 +296,7 @@ OnigEncodingType OnigEncodingUTF8 = {
onigenc_always_true_is_allowed_reverse_match,
NULL, /* init */
NULL, /* is_initialized */
- is_valid_mbc_string
+ is_valid_mbc_string,
+ ENC_FLAG_ASCII_COMPATIBLE|ENC_FLAG_UNICODE,
+ 0, 0
};
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index 2ff304f277..319ee567c6 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -16,9 +16,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -45,7 +42,7 @@ struct _zend_mb_regex_globals {
HashTable ht_rc;
zval search_str;
zval *search_str_val;
- unsigned int search_pos;
+ size_t search_pos;
php_mb_regex_t *search_re;
OnigRegion *search_regs;
OnigOptionType regex_default_options;
@@ -65,7 +62,6 @@ static int _php_mb_regex_globals_ctor(zend_mb_regex_globals *pglobals)
{
pglobals->default_mbctype = ONIG_ENCODING_UTF8;
pglobals->current_mbctype = ONIG_ENCODING_UTF8;
- zend_hash_init(&(pglobals->ht_rc), 0, NULL, php_mb_regex_free_cache, 1);
ZVAL_UNDEF(&pglobals->search_str);
pglobals->search_re = (php_mb_regex_t*)NULL;
pglobals->search_pos = 0;
@@ -79,7 +75,6 @@ static int _php_mb_regex_globals_ctor(zend_mb_regex_globals *pglobals)
/* {{{ _php_mb_regex_globals_dtor */
static void _php_mb_regex_globals_dtor(zend_mb_regex_globals *pglobals)
{
- zend_hash_destroy(&pglobals->ht_rc);
}
/* }}} */
@@ -126,7 +121,9 @@ PHP_MSHUTDOWN_FUNCTION(mb_regex)
/* {{{ PHP_RINIT_FUNCTION(mb_regex) */
PHP_RINIT_FUNCTION(mb_regex)
{
- return MBSTRG(mb_regex_globals) ? SUCCESS: FAILURE;
+ if (!MBSTRG(mb_regex_globals)) return FAILURE;
+ zend_hash_init(&MBREX(ht_rc), 0, NULL, php_mb_regex_free_cache, 0);
+ return SUCCESS;
}
/* }}} */
@@ -145,7 +142,7 @@ PHP_RSHUTDOWN_FUNCTION(mb_regex)
onig_region_free(MBREX(search_regs), 1);
MBREX(search_regs) = (OnigRegion *)NULL;
}
- zend_hash_clean(&MBREX(ht_rc));
+ zend_hash_destroy(&MBREX(ht_rc));
return SUCCESS;
}
@@ -183,7 +180,7 @@ typedef struct _php_mb_regex_enc_name_map_t {
OnigEncoding code;
} php_mb_regex_enc_name_map_t;
-php_mb_regex_enc_name_map_t enc_name_map[] = {
+static const php_mb_regex_enc_name_map_t enc_name_map[] = {
#ifdef ONIG_ENCODING_EUC_JP
{
"EUC-JP\0EUCJP\0X-EUC-JP\0UJIS\0EUCJP\0EUCJP-WIN\0",
@@ -366,7 +363,7 @@ php_mb_regex_enc_name_map_t enc_name_map[] = {
static OnigEncoding _php_mb_regex_name2mbctype(const char *pname)
{
const char *p;
- php_mb_regex_enc_name_map_t *mapping;
+ const php_mb_regex_enc_name_map_t *mapping;
if (pname == NULL || !*pname) {
return ONIG_ENCODING_UNDEF;
@@ -387,7 +384,7 @@ static OnigEncoding _php_mb_regex_name2mbctype(const char *pname)
/* {{{ php_mb_regex_mbctype2name */
static const char *_php_mb_regex_mbctype2name(OnigEncoding mbctype)
{
- php_mb_regex_enc_name_map_t *mapping;
+ const php_mb_regex_enc_name_map_t *mapping;
for (mapping = enc_name_map; mapping->names != NULL; mapping++) {
if (mapping->code == mbctype) {
@@ -441,7 +438,7 @@ const char *php_mb_regex_get_default_mbctype(void)
* regex cache
*/
/* {{{ php_mbregex_compile_pattern */
-static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, int patlen, OnigOptionType options, OnigEncoding enc, OnigSyntaxType *syntax)
+static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, size_t patlen, OnigOptionType options, OnigEncoding enc, OnigSyntaxType *syntax)
{
int err_code = 0;
php_mb_regex_t *retval = NULL, *rc = NULL;
@@ -576,11 +573,11 @@ static size_t _php_mb_regex_get_option_string(char *str, size_t len, OnigOptionT
/* {{{ _php_mb_regex_init_options */
static void
-_php_mb_regex_init_options(const char *parg, int narg, OnigOptionType *option, OnigSyntaxType **syntax, int *eval)
+_php_mb_regex_init_options(const char *parg, size_t narg, OnigOptionType *option, OnigSyntaxType **syntax, int *eval)
{
- int n;
+ size_t n;
char c;
- int optm = 0;
+ OnigOptionType optm = 0;
*syntax = ONIG_SYNTAX_RUBY;
@@ -646,6 +643,175 @@ _php_mb_regex_init_options(const char *parg, int narg, OnigOptionType *option, O
}
/* }}} */
+
+/*
+ * Callbacks for named subpatterns
+ */
+
+/* {{{ struct mb_ereg_groups_iter_arg */
+typedef struct mb_regex_groups_iter_args {
+ zval *groups;
+ char *search_str;
+ size_t search_len;
+ OnigRegion *region;
+} mb_regex_groups_iter_args;
+/* }}} */
+
+/* {{{ mb_ereg_groups_iter */
+static int
+mb_regex_groups_iter(const OnigUChar* name, const OnigUChar* name_end, int ngroup_num, int* group_nums, regex_t* reg, void* parg)
+{
+ mb_regex_groups_iter_args *args = (mb_regex_groups_iter_args *) parg;
+ int gn, beg, end;
+
+ /*
+ * In case of duplicate groups, keep only the last succeeding one
+ * to be consistent with preg_match with the PCRE_DUPNAMES option.
+ */
+ gn = onig_name_to_backref_number(reg, name, name_end, args->region);
+ beg = args->region->beg[gn];
+ end = args->region->end[gn];
+ if (beg >= 0 && beg < end && end <= args->search_len) {
+ add_assoc_stringl_ex(args->groups, (char *)name, name_end - name, &args->search_str[beg], end - beg);
+ } else {
+ add_assoc_bool_ex(args->groups, (char *)name, name_end - name, 0);
+ }
+
+ return 0;
+}
+/* }}} */
+
+/*
+ * Helper for _php_mb_regex_ereg_replace_exec
+ */
+/* {{{ mb_regex_substitute */
+static inline void mb_regex_substitute(
+ smart_str *pbuf,
+ const char *subject,
+ size_t subject_len,
+ char *replace,
+ size_t replace_len,
+ php_mb_regex_t *regexp,
+ OnigRegion *regs,
+ const mbfl_encoding *enc
+) {
+ char *p, *sp, *eos;
+ int no; /* bakreference group number */
+ int clen; /* byte-length of the current character */
+
+ p = replace;
+ eos = replace + replace_len;
+
+ while (p < eos) {
+ clen = (int) php_mb_mbchar_bytes_ex(p, enc);
+ if (clen != 1 || p == eos || p[0] != '\\') {
+ /* skip anything that's not an ascii backslash */
+ smart_str_appendl(pbuf, p, clen);
+ p += clen;
+ continue;
+ }
+ sp = p; /* save position */
+ clen = (int) php_mb_mbchar_bytes_ex(++p, enc);
+ if (clen != 1 || p == eos) {
+ /* skip backslash followed by multibyte char */
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ no = -1;
+ switch (p[0]) {
+ case '0':
+ no = 0;
+ p++;
+ break;
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (!onig_noname_group_capture_is_active(regexp)) {
+ /*
+ * FIXME:
+ * Oniguruma throws a compile error if numbered backrefs are used with named groups in the pattern.
+ * For now we just ignore them, but in the future we might want to raise a warning
+ * and abort the whole replace operation.
+ */
+ p++;
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ no = p[0] - '0';
+ p++;
+ break;
+ case 'k':
+ clen = (int) php_mb_mbchar_bytes_ex(++p, enc);
+ if (clen != 1 || p == eos || (p[0] != '<' && p[0] != '\'')) {
+ /* not a backref delimiter */
+ p += clen;
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ /* try to consume everything until next delimiter */
+ char delim = p[0] == '<' ? '>' : '\'';
+ char *name, *name_end;
+ char maybe_num = 1;
+ name_end = name = p + 1;
+ while (name_end < eos) {
+ clen = (int) php_mb_mbchar_bytes_ex(name_end, enc);
+ if (clen != 1) {
+ name_end += clen;
+ maybe_num = 0;
+ continue;
+ }
+ if (name_end[0] == delim) break;
+ if (maybe_num && !isdigit(name_end[0])) maybe_num = 0;
+ name_end++;
+ }
+ p = name_end + 1;
+ if (name_end - name < 1 || name_end >= eos) {
+ /* the backref was empty or we failed to find the end delimiter */
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ /* we have either a name or a number */
+ if (maybe_num) {
+ if (!onig_noname_group_capture_is_active(regexp)) {
+ /* see above note on mixing numbered & named backrefs */
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ if (name_end - name == 1) {
+ no = name[0] - '0';
+ break;
+ }
+ if (name[0] == '0') {
+ /* 01 is not a valid number */
+ break;
+ }
+ no = (int) strtoul(name, NULL, 10);
+ break;
+ }
+ no = onig_name_to_backref_number(regexp, (OnigUChar *)name, (OnigUChar *)name_end, regs);
+ break;
+ default:
+ /* We're not treating \ as an escape character and will interpret something like
+ * \\1 as \ followed by \1, rather than \\ followed by 1. This is because this
+ * function has not supported escaping of backslashes historically. */
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ if (no < 0 || no >= regs->num_regs) {
+ /* invalid group number reference, keep the escape sequence in the output */
+ smart_str_appendl(pbuf, sp, p - sp);
+ continue;
+ }
+ if (regs->beg[no] >= 0 && regs->beg[no] < regs->end[no] && (size_t)regs->end[no] <= subject_len) {
+ smart_str_appendl(pbuf, subject + regs->beg[no], regs->end[no] - regs->beg[no]);
+ }
+ }
+
+ if (p < eos) {
+ smart_str_appendl(pbuf, p, eos - p);
+ }
+}
+/* }}} */
+
/*
* php functions
*/
@@ -700,23 +866,19 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase)
RETURN_FALSE;
}
+ if (array != NULL) {
+ zval_ptr_dtor(array);
+ array_init(array);
+ }
+
if (!php_mb_check_encoding(
- string,
- string_len,
- _php_mb_regex_mbctype2name(MBREX(current_mbctype))
+ string,
+ string_len,
+ _php_mb_regex_mbctype2name(MBREX(current_mbctype))
)) {
- if (array != NULL) {
- zval_dtor(array);
- array_init(array);
- }
RETURN_FALSE;
}
- if (array != NULL) {
- zval_dtor(array);
- array_init(array);
- }
-
options = MBREX(regex_default_options);
if (icase) {
options |= ONIG_OPTION_IGNORECASE;
@@ -766,6 +928,11 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase)
add_index_bool(array, i, 0);
}
}
+
+ if (onig_number_of_names(re) > 0) {
+ mb_regex_groups_iter_args args = {array, string, string_len, regs};
+ onig_foreach_name(re, mb_regex_groups_iter, &args);
+ }
}
if (match_len == 0) {
@@ -812,14 +979,12 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
char *string;
size_t string_len;
- char *p;
php_mb_regex_t *re;
OnigSyntaxType *syntax;
OnigRegion *regs = NULL;
smart_str out_buf = {0};
smart_str eval_buf = {0};
smart_str *pbuf;
- size_t i;
int err, eval, n;
OnigUChar *pos;
OnigUChar *string_lim;
@@ -929,38 +1094,11 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
break;
}
if (err >= 0) {
-#if moriyoshi_0
- if (regs->beg[0] == regs->end[0]) {
- php_error_docref(NULL, E_WARNING, "Empty regular expression");
- break;
- }
-#endif
/* copy the part of the string before the match */
smart_str_appendl(&out_buf, (char *)pos, (size_t)((OnigUChar *)(string + regs->beg[0]) - pos));
if (!is_callable) {
- /* copy replacement and backrefs */
- i = 0;
- p = replace;
- while (i < replace_len) {
- int fwd = (int) php_mb_mbchar_bytes_ex(p, enc);
- n = -1;
- if ((replace_len - i) >= 2 && fwd == 1 &&
- p[0] == '\\' && p[1] >= '0' && p[1] <= '9') {
- n = p[1] - '0';
- }
- if (n >= 0 && n < regs->num_regs) {
- if (regs->beg[n] >= 0 && regs->beg[n] < regs->end[n] && (size_t)regs->end[n] <= string_len) {
- smart_str_appendl(pbuf, string + regs->beg[n], regs->end[n] - regs->beg[n]);
- }
- p += 2;
- i += 2;
- } else {
- smart_str_appendl(pbuf, p, fwd);
- p += fwd;
- i += fwd;
- }
- }
+ mb_regex_substitute(pbuf, string, string_len, replace, replace_len, re, regs, enc);
}
if (eval) {
@@ -990,7 +1128,7 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
smart_str_appendl(&out_buf, Z_STRVAL(v), Z_STRLEN(v));
/* Clean up */
smart_str_free(&eval_buf);
- zval_dtor(&v);
+ zval_ptr_dtor_str(&v);
} else if (is_callable) {
zval args[1];
zval subpats, retval;
@@ -1000,6 +1138,10 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp
for (i = 0; i < regs->num_regs; i++) {
add_next_index_stringl(&subpats, string + regs->beg[i], regs->end[i] - regs->beg[i]);
}
+ if (onig_number_of_names(re) > 0) {
+ mb_regex_groups_iter_args args = {&subpats, string, string_len, regs};
+ onig_foreach_name(re, mb_regex_groups_iter, &args);
+ }
ZVAL_COPY_VALUE(&args[0], &subpats);
/* null terminate buffer */
@@ -1096,7 +1238,7 @@ PHP_FUNCTION(mb_split)
OnigUChar *pos, *chunk_pos;
size_t string_len;
- int n, err;
+ int err;
zend_long count = -1;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|l", &arg_pattern, &arg_pattern_len, &string, &string_len, &count) == FAILURE) {
@@ -1118,16 +1260,16 @@ PHP_FUNCTION(mb_split)
err = 0;
regs = onig_region_new();
/* churn through str, generating array entries as we go */
- while (count != 0 && (pos - (OnigUChar *)string) < (ptrdiff_t)string_len) {
- int beg, end;
+ while (count != 0 && (size_t)(pos - (OnigUChar *)string) < string_len) {
+ size_t beg, end;
err = onig_search(re, (OnigUChar *)string, (OnigUChar *)(string + string_len), pos, (OnigUChar *)(string + string_len), regs, 0);
if (err < 0) {
break;
}
beg = regs->beg[0], end = regs->end[0];
/* add it to the array */
- if ((pos - (OnigUChar *)string) < end) {
- if ((size_t)beg < string_len && beg >= (chunk_pos - (OnigUChar *)string)) {
+ if ((size_t)(pos - (OnigUChar *)string) < end) {
+ if (beg < string_len && beg >= (size_t)(chunk_pos - (OnigUChar *)string)) {
add_next_index_stringl(return_value, (char *)chunk_pos, ((OnigUChar *)(string + beg) - chunk_pos));
--count;
} else {
@@ -1149,13 +1291,13 @@ PHP_FUNCTION(mb_split)
OnigUChar err_str[ONIG_MAX_ERROR_MESSAGE_LEN];
onig_error_code_to_str(err_str, err);
php_error_docref(NULL, E_WARNING, "mbregex search failure in mbsplit(): %s", err_str);
- zval_dtor(return_value);
+ zend_array_destroy(Z_ARR_P(return_value));
RETURN_FALSE;
}
/* otherwise we just have one last element to add to the array */
- n = ((OnigUChar *)(string + string_len) - chunk_pos);
- if (n > 0) {
+ if ((OnigUChar *)(string + string_len) > chunk_pos) {
+ size_t n = ((OnigUChar *)(string + string_len) - chunk_pos);
add_next_index_stringl(return_value, (char *)chunk_pos, n);
} else {
add_next_index_stringl(return_value, "", 0);
@@ -1217,7 +1359,8 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
{
char *arg_pattern = NULL, *arg_options = NULL;
size_t arg_pattern_len, arg_options_len;
- int n, i, err, pos, len, beg, end;
+ int err;
+ size_t n, i, pos, len, beg, end;
OnigOptionType option;
OnigUChar *str;
OnigSyntaxType *syntax;
@@ -1293,6 +1436,15 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
add_index_bool(return_value, i, 0);
}
}
+ if (onig_number_of_names(MBREX(search_re)) > 0) {
+ mb_regex_groups_iter_args args = {
+ return_value,
+ Z_STRVAL(MBREX(search_str)),
+ Z_STRLEN(MBREX(search_str)),
+ MBREX(search_regs)
+ };
+ onig_foreach_name(MBREX(search_re), mb_regex_groups_iter, &args);
+ }
break;
default:
RETVAL_TRUE;
@@ -1341,7 +1493,7 @@ PHP_FUNCTION(mb_ereg_search_regs)
Initialize string and regular expression for search. */
PHP_FUNCTION(mb_ereg_search_init)
{
- size_t argc = ZEND_NUM_ARGS();
+ int argc = ZEND_NUM_ARGS();
zend_string *arg_str;
char *arg_pattern = NULL, *arg_options = NULL;
size_t arg_pattern_len = 0, arg_options_len = 0;
@@ -1401,7 +1553,7 @@ PHP_FUNCTION(mb_ereg_search_init)
Get matched substring of the last time */
PHP_FUNCTION(mb_ereg_search_getregs)
{
- int n, i, len, beg, end;
+ size_t n, i, len, beg, end;
OnigUChar *str;
if (MBREX(search_regs) != NULL && Z_TYPE(MBREX(search_str)) == IS_STRING) {
@@ -1419,6 +1571,15 @@ PHP_FUNCTION(mb_ereg_search_getregs)
add_index_bool(return_value, i, 0);
}
}
+ if (onig_number_of_names(MBREX(search_re)) > 0) {
+ mb_regex_groups_iter_args args = {
+ return_value,
+ Z_STRVAL(MBREX(search_str)),
+ len,
+ MBREX(search_regs)
+ };
+ onig_foreach_name(MBREX(search_re), mb_regex_groups_iter, &args);
+ }
} else {
RETVAL_FALSE;
}
diff --git a/ext/mbstring/php_mbregex.h b/ext/mbstring/php_mbregex.h
index b325236dee..5ada93fcc5 100644
--- a/ext/mbstring/php_mbregex.h
+++ b/ext/mbstring/php_mbregex.h
@@ -16,8 +16,6 @@
+----------------------------------------------------------------------+
*/
-/* $Id$ */
-
#ifndef _PHP_MBREGEX_H
#define _PHP_MBREGEX_H
@@ -44,20 +42,20 @@
PHP_FE(mb_ereg_search_getregs, arginfo_mb_ereg_search_getregs) \
PHP_FE(mb_ereg_search_getpos, arginfo_mb_ereg_search_getpos) \
PHP_FE(mb_ereg_search_setpos, arginfo_mb_ereg_search_setpos) \
- PHP_FALIAS(mbregex_encoding, mb_regex_encoding, arginfo_mb_regex_encoding) \
- PHP_FALIAS(mbereg, mb_ereg, arginfo_mb_ereg) \
- PHP_FALIAS(mberegi, mb_eregi, arginfo_mb_eregi) \
- PHP_FALIAS(mbereg_replace, mb_ereg_replace, arginfo_mb_ereg_replace) \
- PHP_FALIAS(mberegi_replace, mb_eregi_replace, arginfo_mb_eregi_replace) \
- PHP_FALIAS(mbsplit, mb_split, arginfo_mb_split) \
- PHP_FALIAS(mbereg_match, mb_ereg_match, arginfo_mb_ereg_match) \
- PHP_FALIAS(mbereg_search, mb_ereg_search, arginfo_mb_ereg_search) \
- PHP_FALIAS(mbereg_search_pos, mb_ereg_search_pos, arginfo_mb_ereg_search_pos) \
- PHP_FALIAS(mbereg_search_regs, mb_ereg_search_regs, arginfo_mb_ereg_search_regs) \
- PHP_FALIAS(mbereg_search_init, mb_ereg_search_init, arginfo_mb_ereg_search_init) \
- PHP_FALIAS(mbereg_search_getregs, mb_ereg_search_getregs, arginfo_mb_ereg_search_getregs) \
- PHP_FALIAS(mbereg_search_getpos, mb_ereg_search_getpos, arginfo_mb_ereg_search_getpos) \
- PHP_FALIAS(mbereg_search_setpos, mb_ereg_search_setpos, arginfo_mb_ereg_search_setpos)
+ PHP_DEP_FALIAS(mbregex_encoding, mb_regex_encoding, arginfo_mb_regex_encoding) \
+ PHP_DEP_FALIAS(mbereg, mb_ereg, arginfo_mb_ereg) \
+ PHP_DEP_FALIAS(mberegi, mb_eregi, arginfo_mb_eregi) \
+ PHP_DEP_FALIAS(mbereg_replace, mb_ereg_replace, arginfo_mb_ereg_replace) \
+ PHP_DEP_FALIAS(mberegi_replace, mb_eregi_replace, arginfo_mb_eregi_replace) \
+ PHP_DEP_FALIAS(mbsplit, mb_split, arginfo_mb_split) \
+ PHP_DEP_FALIAS(mbereg_match, mb_ereg_match, arginfo_mb_ereg_match) \
+ PHP_DEP_FALIAS(mbereg_search, mb_ereg_search, arginfo_mb_ereg_search) \
+ PHP_DEP_FALIAS(mbereg_search_pos, mb_ereg_search_pos, arginfo_mb_ereg_search_pos) \
+ PHP_DEP_FALIAS(mbereg_search_regs, mb_ereg_search_regs, arginfo_mb_ereg_search_regs) \
+ PHP_DEP_FALIAS(mbereg_search_init, mb_ereg_search_init, arginfo_mb_ereg_search_init) \
+ PHP_DEP_FALIAS(mbereg_search_getregs, mb_ereg_search_getregs, arginfo_mb_ereg_search_getregs) \
+ PHP_DEP_FALIAS(mbereg_search_getpos, mb_ereg_search_getpos, arginfo_mb_ereg_search_getpos) \
+ PHP_DEP_FALIAS(mbereg_search_setpos, mb_ereg_search_setpos, arginfo_mb_ereg_search_setpos)
/* }}} */
#define PHP_MBREGEX_MAXCACHE 50
diff --git a/ext/mbstring/php_unicode.c b/ext/mbstring/php_unicode.c
index d0424e953c..ac452b6a20 100644
--- a/ext/mbstring/php_unicode.c
+++ b/ext/mbstring/php_unicode.c
@@ -43,22 +43,10 @@
#include "mbstring.h"
#include "php_unicode.h"
#include "unicode_data.h"
+#include "libmbfl/mbfl/mbfilter_wchar.h"
ZEND_EXTERN_MODULE_GLOBALS(mbstring)
-/*
- * A simple array of 32-bit masks for lookup.
- */
-static unsigned long masks32[32] = {
- 0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, 0x00000020,
- 0x00000040, 0x00000080, 0x00000100, 0x00000200, 0x00000400, 0x00000800,
- 0x00001000, 0x00002000, 0x00004000, 0x00008000, 0x00010000, 0x00020000,
- 0x00040000, 0x00080000, 0x00100000, 0x00200000, 0x00400000, 0x00800000,
- 0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, 0x20000000,
- 0x40000000, 0x80000000
-};
-
-
static int prop_lookup(unsigned long code, unsigned long n)
{
long l, r, m;
@@ -98,241 +86,365 @@ static int prop_lookup(unsigned long code, unsigned long n)
}
-MBSTRING_API int php_unicode_is_prop(unsigned long code, unsigned long mask1,
- unsigned long mask2)
+MBSTRING_API int php_unicode_is_prop1(unsigned long code, int prop)
{
- unsigned long i;
+ return prop_lookup(code, prop);
+}
- if (mask1 == 0 && mask2 == 0)
- return 0;
+MBSTRING_API int php_unicode_is_prop(unsigned long code, ...)
+{
+ int result = 0;
+ va_list va;
+ va_start(va, code);
- for (i = 0; mask1 && i < 32; i++) {
- if ((mask1 & masks32[i]) && prop_lookup(code, i))
- return 1;
- }
+ while (1) {
+ int prop = va_arg(va, int);
+ if (prop < 0) {
+ break;
+ }
- for (i = 32; mask2 && i < _ucprop_size; i++) {
- if ((mask2 & masks32[i & 31]) && prop_lookup(code, i))
- return 1;
+ if (prop_lookup(code, prop)) {
+ result = 1;
+ break;
+ }
}
- return 0;
+ va_end(va);
+ return result;
}
-static unsigned long case_lookup(unsigned long code, long l, long r, int field)
-{
- long m;
- const unsigned int *tmp;
-
- /*
- * Do the binary search.
- */
- while (l <= r) {
- /*
- * Determine a "mid" point and adjust to make sure the mid point is at
- * the beginning of a case mapping triple.
- */
- m = (l + r) >> 1;
- tmp = &_uccase_map[m*3];
- if (code > *tmp)
- l = m + 1;
- else if (code < *tmp)
- r = m - 1;
- else if (code == *tmp)
- return tmp[field];
- }
-
- return code;
+static inline unsigned mph_hash(unsigned d, unsigned x) {
+ x ^= d;
+ x = ((x >> 16) ^ x) * 0x45d9f3b;
+ return x;
}
-MBSTRING_API unsigned long php_turkish_toupper(unsigned long code, long l, long r, int field)
+#define CODE_NOT_FOUND ((unsigned) -1)
+
+static inline unsigned mph_lookup(
+ unsigned code,
+ const short *g_table, unsigned g_table_size,
+ const unsigned *table, unsigned table_size)
{
- if (code == 0x0069L) {
- return 0x0130L;
+ short g = g_table[mph_hash(0, code) % g_table_size];
+
+ unsigned idx;
+ if (g <= 0) {
+ idx = -g;
+ } else {
+ idx = mph_hash(g, code) % table_size;
}
- return case_lookup(code, l, r, field);
-}
-MBSTRING_API unsigned long php_turkish_tolower(unsigned long code, long l, long r, int field)
-{
- if (code == 0x0049L) {
- return 0x0131L;
+ if (table[2*idx] == code) {
+ return table[2*idx + 1];
}
- return case_lookup(code, l, r, field);
+ return CODE_NOT_FOUND;
}
-MBSTRING_API unsigned long php_unicode_toupper(unsigned long code, enum mbfl_no_encoding enc)
-{
- int field;
- long l, r;
+#define CASE_LOOKUP(code, type) \
+ mph_lookup(code, _uccase_##type##_g, _uccase_##type##_g_size, \
+ _uccase_##type##_table, _uccase_##type##_table_size)
- if (php_unicode_is_upper(code))
- return code;
-
- if (php_unicode_is_lower(code)) {
- /*
- * The character is lower case.
- */
- field = 1;
- l = _uccase_len[0];
- r = (l + _uccase_len[1]) - 1;
-
- if (enc == mbfl_no_encoding_8859_9) {
- return php_turkish_toupper(code, l, r, field);
+static unsigned php_unicode_toupper_raw(unsigned code, enum mbfl_no_encoding enc)
+{
+ if (code < 0x80) {
+ /* Fast path for ASCII */
+ if (code >= 0x61 && code <= 0x7A) {
+ if (UNEXPECTED(enc == mbfl_no_encoding_8859_9 && code == 0x69)) {
+ return 0x130;
+ }
+ return code - 0x20;
}
-
+ return code;
} else {
- /*
- * The character is title case.
- */
- field = 1;
- l = _uccase_len[0] + _uccase_len[1];
- r = _uccase_size - 1;
+ unsigned new_code = CASE_LOOKUP(code, upper);
+ if (new_code != CODE_NOT_FOUND) {
+ return new_code;
+ }
+ return code;
}
- return case_lookup(code, l, r, field);
}
-MBSTRING_API unsigned long php_unicode_tolower(unsigned long code, enum mbfl_no_encoding enc)
+static unsigned php_unicode_tolower_raw(unsigned code, enum mbfl_no_encoding enc)
{
- int field;
- long l, r;
-
- if (php_unicode_is_lower(code))
- return code;
-
- if (php_unicode_is_upper(code)) {
- /*
- * The character is upper case.
- */
- field = 1;
- l = 0;
- r = _uccase_len[0] - 1;
-
- if (enc == mbfl_no_encoding_8859_9) {
- return php_turkish_tolower(code, l, r, field);
+ if (code < 0x80) {
+ /* Fast path for ASCII */
+ if (code >= 0x41 && code <= 0x5A) {
+ if (UNEXPECTED(enc == mbfl_no_encoding_8859_9 && code == 0x0049L)) {
+ return 0x0131L;
+ }
+ return code + 0x20;
}
-
+ return code;
} else {
- /*
- * The character is title case.
- */
- field = 2;
- l = _uccase_len[0] + _uccase_len[1];
- r = _uccase_size - 1;
+ unsigned new_code = CASE_LOOKUP(code, lower);
+ if (new_code != CODE_NOT_FOUND) {
+ if (UNEXPECTED(enc == mbfl_no_encoding_8859_9 && code == 0x130)) {
+ return 0x69;
+ }
+ return new_code;
+ }
+ return code;
}
- return case_lookup(code, l, r, field);
}
-MBSTRING_API unsigned long php_unicode_totitle(unsigned long code, enum mbfl_no_encoding enc)
+static unsigned php_unicode_totitle_raw(unsigned code, enum mbfl_no_encoding enc)
{
- int field;
- long l, r;
-
- if (php_unicode_is_title(code))
- return code;
+ unsigned new_code = CASE_LOOKUP(code, title);
+ if (new_code != CODE_NOT_FOUND) {
+ return new_code;
+ }
- /*
- * The offset will always be the same for converting to title case.
- */
- field = 2;
+ /* No dedicated title-case variant, use to-upper instead */
+ return php_unicode_toupper_raw(code, enc);
+}
- if (php_unicode_is_upper(code)) {
- /*
- * The character is upper case.
- */
- l = 0;
- r = _uccase_len[0] - 1;
+unsigned php_unicode_tofold_raw(unsigned code, enum mbfl_no_encoding enc)
+{
+ if (code < 0x80) {
+ /* Fast path for ASCII */
+ if (code >= 0x41 && code <= 0x5A) {
+ if (UNEXPECTED(enc == mbfl_no_encoding_8859_9 && code == 0x49)) {
+ return 0x131;
+ }
+ return code + 0x20;
+ }
+ return code;
} else {
- /*
- * The character is lower case.
- */
- l = _uccase_len[0];
- r = (l + _uccase_len[1]) - 1;
+ unsigned new_code = CASE_LOOKUP(code, fold);
+ if (new_code != CODE_NOT_FOUND) {
+ if (UNEXPECTED(enc == mbfl_no_encoding_8859_9 && code == 0x130)) {
+ return 0x69;
+ }
+ return new_code;
+ }
+ return code;
}
- return case_lookup(code, l, r, field);
-
}
+static inline unsigned php_unicode_tolower_simple(unsigned code, enum mbfl_no_encoding enc) {
+ code = php_unicode_tolower_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ return _uccase_extra_table[code & 0xffffff];
+ }
+ return code;
+}
+static inline unsigned php_unicode_toupper_simple(unsigned code, enum mbfl_no_encoding enc) {
+ code = php_unicode_toupper_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ return _uccase_extra_table[code & 0xffffff];
+ }
+ return code;
+}
+static inline unsigned php_unicode_totitle_simple(unsigned code, enum mbfl_no_encoding enc) {
+ code = php_unicode_totitle_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ return _uccase_extra_table[code & 0xffffff];
+ }
+ return code;
+}
+static inline unsigned php_unicode_tofold_simple(unsigned code, enum mbfl_no_encoding enc) {
+ code = php_unicode_tofold_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ return _uccase_extra_table[code & 0xffffff];
+ }
+ return code;
+}
-#define BE_ARY_TO_UINT32(ptr) (\
- ((unsigned char*)(ptr))[0]<<24 |\
- ((unsigned char*)(ptr))[1]<<16 |\
- ((unsigned char*)(ptr))[2]<< 8 |\
- ((unsigned char*)(ptr))[3] )
-
-#define UINT32_TO_BE_ARY(ptr,val) { \
- unsigned int v = val; \
- ((unsigned char*)(ptr))[0] = (v>>24) & 0xff,\
- ((unsigned char*)(ptr))[1] = (v>>16) & 0xff,\
- ((unsigned char*)(ptr))[2] = (v>> 8) & 0xff,\
- ((unsigned char*)(ptr))[3] = (v ) & 0xff;\
+static inline unsigned php_unicode_tolower_full(
+ unsigned code, enum mbfl_no_encoding enc, unsigned *out) {
+ code = php_unicode_tolower_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ unsigned len = code >> 24;
+ const unsigned *p = &_uccase_extra_table[code & 0xffffff];
+ memcpy(out, p + 1, len * sizeof(unsigned));
+ return len;
+ }
+ *out = code;
+ return 1;
+}
+static inline unsigned php_unicode_toupper_full(
+ unsigned code, enum mbfl_no_encoding enc, unsigned *out) {
+ code = php_unicode_toupper_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ unsigned len = code >> 24;
+ const unsigned *p = &_uccase_extra_table[code & 0xffffff];
+ memcpy(out, p + 1, len * sizeof(unsigned));
+ return len;
+ }
+ *out = code;
+ return 1;
+}
+static inline unsigned php_unicode_totitle_full(
+ unsigned code, enum mbfl_no_encoding enc, unsigned *out) {
+ code = php_unicode_totitle_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ unsigned len = code >> 24;
+ const unsigned *p = &_uccase_extra_table[code & 0xffffff];
+ memcpy(out, p + 1, len * sizeof(unsigned));
+ return len;
+ }
+ *out = code;
+ return 1;
+}
+static inline unsigned php_unicode_tofold_full(
+ unsigned code, enum mbfl_no_encoding enc, unsigned *out) {
+ code = php_unicode_tofold_raw(code, enc);
+ if (UNEXPECTED(code > 0xffffff)) {
+ unsigned len = code >> 24;
+ const unsigned *p = &_uccase_extra_table[code & 0xffffff];
+ memcpy(out, p + 1, len * sizeof(unsigned));
+ return len;
+ }
+ *out = code;
+ return 1;
}
-MBSTRING_API char *php_unicode_convert_case(int case_mode, const char *srcstr, size_t srclen, size_t *ret_len,
- const char *src_encoding)
+struct convert_case_data {
+ mbfl_convert_filter *next_filter;
+ enum mbfl_no_encoding no_encoding;
+ int case_mode;
+ int title_mode;
+};
+
+static int convert_case_filter(int c, void *void_data)
{
- char *unicode, *newstr;
- size_t unicode_len;
- unsigned char *unicode_ptr;
- size_t i;
- enum mbfl_no_encoding _src_encoding = mbfl_name2no_encoding(src_encoding);
-
- if (_src_encoding == mbfl_no_encoding_invalid) {
- php_error_docref(NULL, E_WARNING, "Unknown encoding \"%s\"", src_encoding);
- return NULL;
+ struct convert_case_data *data = (struct convert_case_data *) void_data;
+ unsigned out[3];
+ unsigned len, i;
+
+ /* Handle invalid characters early, as we assign special meaning to
+ * codepoints above 0xffffff. */
+ if (UNEXPECTED(c > 0xffffff)) {
+ (*data->next_filter->filter_function)(c, data->next_filter);
+ return 0;
}
- unicode = php_mb_convert_encoding(srcstr, srclen, "UCS-4BE", src_encoding, &unicode_len);
- if (unicode == NULL)
- return NULL;
-
- unicode_ptr = (unsigned char *)unicode;
+ switch (data->case_mode) {
+ case PHP_UNICODE_CASE_UPPER_SIMPLE:
+ out[0] = php_unicode_toupper_simple(c, data->no_encoding);
+ len = 1;
+ break;
- switch(case_mode) {
case PHP_UNICODE_CASE_UPPER:
- for (i = 0; i < unicode_len; i+=4) {
- UINT32_TO_BE_ARY(&unicode_ptr[i],
- php_unicode_toupper(BE_ARY_TO_UINT32(&unicode_ptr[i]), _src_encoding));
- }
+ len = php_unicode_toupper_full(c, data->no_encoding, out);
+ break;
+
+ case PHP_UNICODE_CASE_LOWER_SIMPLE:
+ out[0] = php_unicode_tolower_simple(c, data->no_encoding);
+ len = 1;
break;
case PHP_UNICODE_CASE_LOWER:
- for (i = 0; i < unicode_len; i+=4) {
- UINT32_TO_BE_ARY(&unicode_ptr[i],
- php_unicode_tolower(BE_ARY_TO_UINT32(&unicode_ptr[i]), _src_encoding));
- }
+ len = php_unicode_tolower_full(c, data->no_encoding, out);
+ break;
+
+ case PHP_UNICODE_CASE_FOLD:
+ len = php_unicode_tofold_full(c, data->no_encoding, out);
break;
- case PHP_UNICODE_CASE_TITLE: {
- int mode = 0;
-
- for (i = 0; i < unicode_len; i+=4) {
- int res = php_unicode_is_prop(
- BE_ARY_TO_UINT32(&unicode_ptr[i]),
- UC_MN|UC_ME|UC_CF|UC_LM|UC_SK|UC_LU|UC_LL|UC_LT|UC_PO|UC_OS, 0);
- if (mode) {
- if (res) {
- UINT32_TO_BE_ARY(&unicode_ptr[i],
- php_unicode_tolower(BE_ARY_TO_UINT32(&unicode_ptr[i]), _src_encoding));
- } else {
- mode = 0;
- }
+ case PHP_UNICODE_CASE_FOLD_SIMPLE:
+ out[0] = php_unicode_tofold_simple(c, data->no_encoding);
+ len = 1;
+ break;
+
+ case PHP_UNICODE_CASE_TITLE_SIMPLE:
+ case PHP_UNICODE_CASE_TITLE:
+ {
+ if (data->title_mode) {
+ if (data->case_mode == PHP_UNICODE_CASE_TITLE_SIMPLE) {
+ out[0] = php_unicode_tolower_simple(c, data->no_encoding);
+ len = 1;
+ } else {
+ len = php_unicode_tolower_full(c, data->no_encoding, out);
+ }
+ } else {
+ if (data->case_mode == PHP_UNICODE_CASE_TITLE_SIMPLE) {
+ out[0] = php_unicode_totitle_simple(c, data->no_encoding);
+ len = 1;
} else {
- if (res) {
- mode = 1;
- UINT32_TO_BE_ARY(&unicode_ptr[i],
- php_unicode_totitle(BE_ARY_TO_UINT32(&unicode_ptr[i]), _src_encoding));
- }
+ len = php_unicode_totitle_full(c, data->no_encoding, out);
}
}
- } break;
+ if (!php_unicode_is_case_ignorable(c)) {
+ data->title_mode = php_unicode_is_cased(c);
+ }
+ break;
+ }
+ default:
+ assert(0);
+ break;
+ }
+ for (i = 0; i < len; i++) {
+ (*data->next_filter->filter_function)(out[i], data->next_filter);
}
+ return 0;
+}
- newstr = php_mb_convert_encoding(unicode, unicode_len, src_encoding, "UCS-4BE", ret_len);
- efree(unicode);
+MBSTRING_API char *php_unicode_convert_case(
+ int case_mode, const char *srcstr, size_t srclen, size_t *ret_len,
+ const mbfl_encoding *src_encoding, int illegal_mode, int illegal_substchar)
+{
+ struct convert_case_data data;
+ mbfl_convert_filter *from_wchar, *to_wchar;
+ mbfl_string result, *result_ptr;
+
+ mbfl_memory_device device;
+ mbfl_memory_device_init(&device, srclen + 1, 0);
+
+ /* encoding -> wchar filter */
+ to_wchar = mbfl_convert_filter_new(src_encoding,
+ &mbfl_encoding_wchar, convert_case_filter, NULL, &data);
+ if (to_wchar == NULL) {
+ mbfl_memory_device_clear(&device);
+ return NULL;
+ }
+
+ /* wchar -> encoding filter */
+ from_wchar = mbfl_convert_filter_new(
+ &mbfl_encoding_wchar, src_encoding,
+ mbfl_memory_device_output, NULL, &device);
+ if (from_wchar == NULL) {
+ mbfl_convert_filter_delete(to_wchar);
+ mbfl_memory_device_clear(&device);
+ return NULL;
+ }
+
+ to_wchar->illegal_mode = illegal_mode;
+ to_wchar->illegal_substchar = illegal_substchar;
+ from_wchar->illegal_mode = illegal_mode;
+ from_wchar->illegal_substchar = illegal_substchar;
+
+ data.next_filter = from_wchar;
+ data.no_encoding = src_encoding->no_encoding;
+ data.case_mode = case_mode;
+ data.title_mode = 0;
+
+ {
+ /* feed data */
+ const unsigned char *p = (const unsigned char *) srcstr;
+ size_t n = srclen;
+ while (n > 0) {
+ if ((*to_wchar->filter_function)(*p++, to_wchar) < 0) {
+ break;
+ }
+ n--;
+ }
+ }
+
+ mbfl_convert_filter_flush(to_wchar);
+ mbfl_convert_filter_flush(from_wchar);
+ result_ptr = mbfl_memory_device_result(&device, &result);
+ mbfl_convert_filter_delete(to_wchar);
+ mbfl_convert_filter_delete(from_wchar);
+
+ if (!result_ptr) {
+ return NULL;
+ }
- return newstr;
+ *ret_len = result.len;
+ return (char *) result.val;
}
diff --git a/ext/mbstring/php_unicode.h b/ext/mbstring/php_unicode.h
index 64412ab280..10c3a7d46d 100644
--- a/ext/mbstring/php_unicode.h
+++ b/ext/mbstring/php_unicode.h
@@ -34,155 +34,149 @@
#define PHP_UNICODE_H
#if HAVE_MBSTRING
-/*
- * Values that can appear in the `mask1' parameter of the php_unicode_is_prop()
- * function.
- */
-#define UC_MN 0x00000001 /* Mark, Non-Spacing */
-#define UC_MC 0x00000002 /* Mark, Spacing Combining */
-#define UC_ME 0x00000004 /* Mark, Enclosing */
-#define UC_ND 0x00000008 /* Number, Decimal Digit */
-#define UC_NL 0x00000010 /* Number, Letter */
-#define UC_NO 0x00000020 /* Number, Other */
-#define UC_ZS 0x00000040 /* Separator, Space */
-#define UC_ZL 0x00000080 /* Separator, Line */
-#define UC_ZP 0x00000100 /* Separator, Paragraph */
-#define UC_CC 0x00000200 /* Other, Control */
-#define UC_CF 0x00000400 /* Other, Format */
-#define UC_OS 0x00000800 /* Other, Surrogate */
-#define UC_CO 0x00001000 /* Other, Private Use */
-#define UC_CN 0x00002000 /* Other, Not Assigned */
-#define UC_LU 0x00004000 /* Letter, Uppercase */
-#define UC_LL 0x00008000 /* Letter, Lowercase */
-#define UC_LT 0x00010000 /* Letter, Titlecase */
-#define UC_LM 0x00020000 /* Letter, Modifier */
-#define UC_LO 0x00040000 /* Letter, Other */
-#define UC_PC 0x00080000 /* Punctuation, Connector */
-#define UC_PD 0x00100000 /* Punctuation, Dash */
-#define UC_PS 0x00200000 /* Punctuation, Open */
-#define UC_PE 0x00400000 /* Punctuation, Close */
-#define UC_PO 0x00800000 /* Punctuation, Other */
-#define UC_SM 0x01000000 /* Symbol, Math */
-#define UC_SC 0x02000000 /* Symbol, Currency */
-#define UC_SK 0x04000000 /* Symbol, Modifier */
-#define UC_SO 0x08000000 /* Symbol, Other */
-#define UC_L 0x10000000 /* Left-To-Right */
-#define UC_R 0x20000000 /* Right-To-Left */
-#define UC_EN 0x40000000 /* European Number */
-#define UC_ES 0x80000000 /* European Number Separator */
-
-/*
- * Values that can appear in the `mask2' parameter of the php_unicode_is_prop()
- * function.
- */
-#define UC_ET 0x00000001 /* European Number Terminator */
-#define UC_AN 0x00000002 /* Arabic Number */
-#define UC_CS 0x00000004 /* Common Number Separator */
-#define UC_B 0x00000008 /* Block Separator */
-#define UC_S 0x00000010 /* Segment Separator */
-#define UC_WS 0x00000020 /* Whitespace */
-#define UC_ON 0x00000040 /* Other Neutrals */
-/*
- * Implementation specific character properties.
- */
-#define UC_CM 0x00000080 /* Composite */
-#define UC_NB 0x00000100 /* Non-Breaking */
-#define UC_SY 0x00000200 /* Symmetric */
-#define UC_HD 0x00000400 /* Hex Digit */
-#define UC_QM 0x00000800 /* Quote Mark */
-#define UC_MR 0x00001000 /* Mirroring */
-#define UC_SS 0x00002000 /* Space, other */
-#define UC_CP 0x00004000 /* Defined */
-
-/*
- * Added for UnicodeData-2.1.3.
- */
-#define UC_PI 0x00008000 /* Punctuation, Initial */
-#define UC_PF 0x00010000 /* Punctuation, Final */
-
-MBSTRING_API int php_unicode_is_prop(unsigned long code, unsigned long mask1,
- unsigned long mask2);
-MBSTRING_API char *php_unicode_convert_case(int case_mode, const char *srcstr, size_t srclen, size_t *retlen,
- const char *src_encoding);
-
-#define PHP_UNICODE_CASE_UPPER 0
-#define PHP_UNICODE_CASE_LOWER 1
-#define PHP_UNICODE_CASE_TITLE 2
-
-#define php_unicode_is_alpha(cc) php_unicode_is_prop(cc, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT, 0)
-#define php_unicode_is_digit(cc) php_unicode_is_prop(cc, UC_ND, 0)
-#define php_unicode_is_alnum(cc) php_unicode_is_prop(cc, UC_LU|UC_LL|UC_LM|UC_LO|UC_LT|UC_ND, 0)
-#define php_unicode_is_cntrl(cc) php_unicode_is_prop(cc, UC_CC|UC_CF, 0)
-#define php_unicode_is_space(cc) php_unicode_is_prop(cc, UC_ZS|UC_SS, 0)
-#define php_unicode_is_blank(cc) php_unicode_is_prop(cc, UC_ZS, 0)
-#define php_unicode_is_punct(cc) php_unicode_is_prop(cc, UC_PD|UC_PS|UC_PE|UC_PO, UC_PI|UC_PF)
-#define php_unicode_is_graph(cc) php_unicode_is_prop(cc, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|\
- UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|\
- UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|\
- UC_SO, UC_PI|UC_PF)
-#define php_unicode_is_print(cc) php_unicode_is_prop(cc, UC_MN|UC_MC|UC_ME|UC_ND|UC_NL|UC_NO|\
- UC_LU|UC_LL|UC_LT|UC_LM|UC_LO|UC_PC|UC_PD|\
- UC_PS|UC_PE|UC_PO|UC_SM|UC_SM|UC_SC|UC_SK|\
- UC_SO|UC_ZS, UC_PI|UC_PF)
-#define php_unicode_is_upper(cc) php_unicode_is_prop(cc, UC_LU, 0)
-#define php_unicode_is_lower(cc) php_unicode_is_prop(cc, UC_LL, 0)
-#define php_unicode_is_title(cc) php_unicode_is_prop(cc, UC_LT, 0)
-#define php_unicode_is_xdigit(cc) php_unicode_is_prop(cc, 0, UC_HD)
-
-#define php_unicode_is_isocntrl(cc) php_unicode_is_prop(cc, UC_CC, 0)
-#define php_unicode_is_fmtcntrl(cc) php_unicode_is_prop(cc, UC_CF, 0)
-
-#define php_unicode_is_symbol(cc) php_unicode_is_prop(cc, UC_SM|UC_SC|UC_SO|UC_SK, 0)
-#define php_unicode_is_number(cc) php_unicode_is_prop(cc, UC_ND|UC_NO|UC_NL, 0)
-#define php_unicode_is_nonspacing(cc) php_unicode_is_prop(cc, UC_MN, 0)
-#define php_unicode_is_openpunct(cc) php_unicode_is_prop(cc, UC_PS, 0)
-#define php_unicode_is_closepunct(cc) php_unicode_is_prop(cc, UC_PE, 0)
-#define php_unicode_is_initialpunct(cc) php_unicode_is_prop(cc, 0, UC_PI)
-#define php_unicode_is_finalpunct(cc) php_unicode_is_prop(cc, 0, UC_PF)
-
-#define php_unicode_is_composite(cc) php_unicode_is_prop(cc, 0, UC_CM)
-#define php_unicode_is_hex(cc) php_unicode_is_prop(cc, 0, UC_HD)
-#define php_unicode_is_quote(cc) php_unicode_is_prop(cc, 0, UC_QM)
-#define php_unicode_is_symmetric(cc) php_unicode_is_prop(cc, 0, UC_SY)
-#define php_unicode_is_mirroring(cc) php_unicode_is_prop(cc, 0, UC_MR)
-#define php_unicode_is_nonbreaking(cc) php_unicode_is_prop(cc, 0, UC_NB)
+#define UC_MN 0 /* Mark, Non-Spacing */
+#define UC_MC 1 /* Mark, Spacing Combining */
+#define UC_ME 2 /* Mark, Enclosing */
+#define UC_ND 3 /* Number, Decimal Digit */
+#define UC_NL 4 /* Number, Letter */
+#define UC_NO 5 /* Number, Other */
+#define UC_ZS 6 /* Separator, Space */
+#define UC_ZL 7 /* Separator, Line */
+#define UC_ZP 8 /* Separator, Paragraph */
+#define UC_CC 9 /* Other, Control */
+#define UC_CF 10 /* Other, Format */
+#define UC_OS 11 /* Other, Surrogate */
+#define UC_CO 12 /* Other, Private Use */
+#define UC_CN 13 /* Other, Not Assigned */
+#define UC_LU 14 /* Letter, Uppercase */
+#define UC_LL 15 /* Letter, Lowercase */
+#define UC_LT 16 /* Letter, Titlecase */
+#define UC_LM 17 /* Letter, Modifier */
+#define UC_LO 18 /* Letter, Other */
+#define UC_PC 19 /* Punctuation, Connector */
+#define UC_PD 20 /* Punctuation, Dash */
+#define UC_PS 21 /* Punctuation, Open */
+#define UC_PE 22 /* Punctuation, Close */
+#define UC_PO 23 /* Punctuation, Other */
+#define UC_SM 24 /* Symbol, Math */
+#define UC_SC 25 /* Symbol, Currency */
+#define UC_SK 26 /* Symbol, Modifier */
+#define UC_SO 27 /* Symbol, Other */
+#define UC_L 28 /* Left-To-Right */
+#define UC_R 29 /* Right-To-Left */
+#define UC_EN 30 /* European Number */
+#define UC_ES 31 /* European Number Separator */
+#define UC_ET 32 /* European Number Terminator */
+#define UC_AN 33 /* Arabic Number */
+#define UC_CS 34 /* Common Number Separator */
+#define UC_B 35 /* Block Separator */
+#define UC_S 36 /* Segment Separator */
+#define UC_WS 37 /* Whitespace */
+#define UC_ON 38 /* Other Neutrals */
+#define UC_PI 39 /* Punctuation, Initial */
+#define UC_PF 40 /* Punctuation, Final */
+#define UC_AL 41 /* Arabic Letter */
+
+/* Derived properties from DerivedCoreProperties.txt */
+#define UC_CASED 42
+#define UC_CASE_IGNORABLE 43
+
+
+MBSTRING_API int php_unicode_is_prop(unsigned long code, ...);
+MBSTRING_API int php_unicode_is_prop1(unsigned long code, int prop);
+
+MBSTRING_API char *php_unicode_convert_case(
+ int case_mode, const char *srcstr, size_t srclen, size_t *ret_len,
+ const mbfl_encoding *src_encoding, int illegal_mode, int illegal_substchar);
+
+#define PHP_UNICODE_CASE_UPPER 0
+#define PHP_UNICODE_CASE_LOWER 1
+#define PHP_UNICODE_CASE_TITLE 2
+#define PHP_UNICODE_CASE_FOLD 3
+#define PHP_UNICODE_CASE_UPPER_SIMPLE 4
+#define PHP_UNICODE_CASE_LOWER_SIMPLE 5
+#define PHP_UNICODE_CASE_TITLE_SIMPLE 6
+#define PHP_UNICODE_CASE_FOLD_SIMPLE 7
+#define PHP_UNICODE_CASE_MODE_MAX 7
+
+/* Optimize the common ASCII case for lower/upper */
+
+static inline int php_unicode_is_lower(unsigned long code) {
+ if (code < 0x80) {
+ return code >= 0x61 && code <= 0x7A;
+ } else {
+ return php_unicode_is_prop1(code, UC_LL);
+ }
+}
+
+static inline int php_unicode_is_upper(unsigned long code) {
+ if (code < 0x80) {
+ return code >= 0x41 && code <= 0x5A;
+ } else {
+ return php_unicode_is_prop1(code, UC_LU);
+ }
+}
+
+#define php_unicode_is_alpha(cc) php_unicode_is_prop(cc, UC_LU, UC_LL, UC_LM, UC_LO, UC_LT, -1)
+#define php_unicode_is_digit(cc) php_unicode_is_prop1(cc, UC_ND)
+#define php_unicode_is_alnum(cc) php_unicode_is_prop(cc, UC_LU, UC_LL, UC_LM, UC_LO, UC_LT, UC_ND, -1)
+#define php_unicode_is_cntrl(cc) php_unicode_is_prop(cc, UC_CC, UC_CF, -1)
+#define php_unicode_is_blank(cc) php_unicode_is_prop1(cc, UC_ZS)
+#define php_unicode_is_punct(cc) php_unicode_is_prop(cc, UC_PD, UC_PS, UC_PE, UC_PO, UC_PI, UC_PF, -1)
+#define php_unicode_is_graph(cc) php_unicode_is_prop(cc, UC_MN, UC_MC, UC_ME, UC_ND, UC_NL, UC_NO, \
+ UC_LU, UC_LL, UC_LT, UC_LM, UC_LO, UC_PC, UC_PD, \
+ UC_PS, UC_PE, UC_PO, UC_SM, UC_SM, UC_SC, UC_SK, \
+ UC_SO, UC_PI, UC_PF, -1)
+#define php_unicode_is_print(cc) php_unicode_is_prop(cc, UC_MN, UC_MC, UC_ME, UC_ND, UC_NL, UC_NO, \
+ UC_LU, UC_LL, UC_LT, UC_LM, UC_LO, UC_PC, UC_PD, \
+ UC_PS, UC_PE, UC_PO, UC_SM, UC_SM, UC_SC, UC_SK, \
+ UC_SO, UC_ZS, UC_PI, UC_PF, -1)
+#define php_unicode_is_title(cc) php_unicode_is_prop1(cc, UC_LT)
+
+#define php_unicode_is_isocntrl(cc) php_unicode_is_prop1(cc, UC_CC)
+#define php_unicode_is_fmtcntrl(cc) php_unicode_is_prop1(cc, UC_CF)
+
+#define php_unicode_is_symbol(cc) php_unicode_is_prop(cc, UC_SM, UC_SC, UC_SO, UC_SK, -1)
+#define php_unicode_is_number(cc) php_unicode_is_prop(cc, UC_ND, UC_NO, UC_NL, -1)
+#define php_unicode_is_nonspacing(cc) php_unicode_is_prop1(cc, UC_MN)
+#define php_unicode_is_openpunct(cc) php_unicode_is_prop1(cc, UC_PS)
+#define php_unicode_is_closepunct(cc) php_unicode_is_prop1(cc, UC_PE)
+#define php_unicode_is_initialpunct(cc) php_unicode_is_prop1(cc, UC_PI)
+#define php_unicode_is_finalpunct(cc) php_unicode_is_prop1(cc, UC_PF)
/*
* Directionality macros.
*/
-#define php_unicode_is_rtl(cc) php_unicode_is_prop(cc, UC_R, 0)
-#define php_unicode_is_ltr(cc) php_unicode_is_prop(cc, UC_L, 0)
-#define php_unicode_is_strong(cc) php_unicode_is_prop(cc, UC_L|UC_R, 0)
-#define php_unicode_is_weak(cc) php_unicode_is_prop(cc, UC_EN|UC_ES, UC_ET|UC_AN|UC_CS)
-#define php_unicode_is_neutral(cc) php_unicode_is_prop(cc, 0, UC_B|UC_S|UC_WS|UC_ON)
-#define php_unicode_is_separator(cc) php_unicode_is_prop(cc, 0, UC_B|UC_S)
+#define php_unicode_is_rtl(cc) php_unicode_is_prop1(cc, UC_R)
+#define php_unicode_is_ltr(cc) php_unicode_is_prop1(cc, UC_L)
+#define php_unicode_is_strong(cc) php_unicode_is_prop(cc, UC_L, UC_R, -1)
+#define php_unicode_is_weak(cc) php_unicode_is_prop(cc, UC_EN, UC_ES, UC_ET, UC_AN, UC_CS, -1)
+#define php_unicode_is_neutral(cc) php_unicode_is_prop(cc, UC_B, UC_S, UC_WS, UC_ON, -1)
+#define php_unicode_is_separator(cc) php_unicode_is_prop(cc, UC_B, UC_S, -1)
/*
* Other macros inspired by John Cowan.
*/
-#define php_unicode_is_mark(cc) php_unicode_is_prop(cc, UC_MN|UC_MC|UC_ME, 0)
-#define php_unicode_is_modif(cc) php_unicode_is_prop(cc, UC_LM, 0)
-#define php_unicode_is_letnum(cc) php_unicode_is_prop(cc, UC_NL, 0)
-#define php_unicode_is_connect(cc) php_unicode_is_prop(cc, UC_PC, 0)
-#define php_unicode_is_dash(cc) php_unicode_is_prop(cc, UC_PD, 0)
-#define php_unicode_is_math(cc) php_unicode_is_prop(cc, UC_SM, 0)
-#define php_unicode_is_currency(cc) php_unicode_is_prop(cc, UC_SC, 0)
-#define php_unicode_is_modifsymbol(cc) php_unicode_is_prop(cc, UC_SK, 0)
-#define php_unicode_is_nsmark(cc) php_unicode_is_prop(cc, UC_MN, 0)
-#define php_unicode_is_spmark(cc) php_unicode_is_prop(cc, UC_MC, 0)
-#define php_unicode_is_enclosing(cc) php_unicode_is_prop(cc, UC_ME, 0)
-#define php_unicode_is_private(cc) php_unicode_is_prop(cc, UC_CO, 0)
-#define php_unicode_is_surrogate(cc) php_unicode_is_prop(cc, UC_OS, 0)
-#define php_unicode_is_lsep(cc) php_unicode_is_prop(cc, UC_ZL, 0)
-#define php_unicode_is_psep(cc) php_unicode_is_prop(cc, UC_ZP, 0)
-
-#define php_unicode_is_identstart(cc) php_unicode_is_prop(cc, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL, 0)
-#define php_unicode_is_identpart(cc) php_unicode_is_prop(cc, UC_LU|UC_LL|UC_LT|UC_LO|UC_NL|\
- UC_MN|UC_MC|UC_ND|UC_PC|UC_CF, 0)
-
-#define php_unicode_is_defined(cc) php_unicode_is_prop(cc, 0, UC_CP)
-#define php_unicode_is_undefined(cc) !php_unicode_is_prop(cc, 0, UC_CP)
+#define php_unicode_is_mark(cc) php_unicode_is_prop(cc, UC_MN, UC_MC, UC_ME, -1)
+#define php_unicode_is_modif(cc) php_unicode_is_prop1(cc, UC_LM)
+#define php_unicode_is_letnum(cc) php_unicode_is_prop1(cc, UC_NL)
+#define php_unicode_is_connect(cc) php_unicode_is_prop1(cc, UC_PC)
+#define php_unicode_is_dash(cc) php_unicode_is_prop1(cc, UC_PD)
+#define php_unicode_is_math(cc) php_unicode_is_prop1(cc, UC_SM)
+#define php_unicode_is_currency(cc) php_unicode_is_prop1(cc, UC_SC)
+#define php_unicode_is_modifsymbol(cc) php_unicode_is_prop1(cc, UC_SK)
+#define php_unicode_is_nsmark(cc) php_unicode_is_prop1(cc, UC_MN)
+#define php_unicode_is_spmark(cc) php_unicode_is_prop1(cc, UC_MC)
+#define php_unicode_is_enclosing(cc) php_unicode_is_prop1(cc, UC_ME)
+#define php_unicode_is_private(cc) php_unicode_is_prop1(cc, UC_CO)
+#define php_unicode_is_surrogate(cc) php_unicode_is_prop1(cc, UC_OS)
+#define php_unicode_is_lsep(cc) php_unicode_is_prop1(cc, UC_ZL)
+#define php_unicode_is_psep(cc) php_unicode_is_prop1(cc, UC_ZP)
+
+#define php_unicode_is_identstart(cc) php_unicode_is_prop(cc, UC_LU, UC_LL, UC_LT, UC_LO, UC_NL, -1)
+#define php_unicode_is_identpart(cc) php_unicode_is_prop(cc, UC_LU, UC_LL, UC_LT, UC_LO, UC_NL, \
+ UC_MN, UC_MC, UC_ND, UC_PC, UC_CF, -1)
/*
* Other miscellaneous character property macros.
@@ -191,6 +185,13 @@ MBSTRING_API char *php_unicode_convert_case(int case_mode, const char *srcstr, s
((cc) >= 0xf900 && (cc) <= 0xfaff))
#define php_unicode_is_hangul(cc) ((cc) >= 0xac00 && (cc) <= 0xd7ff)
+/*
+ * Derived core properties.
+ */
+
+#define php_unicode_is_cased(cc) php_unicode_is_prop1(cc, UC_CASED)
+#define php_unicode_is_case_ignorable(cc) php_unicode_is_prop1(cc, UC_CASE_IGNORABLE)
+
#endif
diff --git a/ext/mbstring/tests/bug20087.phpt b/ext/mbstring/tests/bug20087.phpt
index 1585274f65..fc5e589bd2 100644
--- a/ext/mbstring/tests/bug20087.phpt
+++ b/ext/mbstring/tests/bug20087.phpt
@@ -2,8 +2,6 @@
Bug #20087 (Assertion failure)
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
---FAIL--
-register_globals calls killed the ability for mb_parse_str() to register into the global scope
--FILE--
<?php
ini_set('include_path', dirname(__FILE__));
diff --git a/ext/mbstring/tests/bug40685.phpt b/ext/mbstring/tests/bug40685.phpt
index 1a673e5d15..9434158106 100644
--- a/ext/mbstring/tests/bug40685.phpt
+++ b/ext/mbstring/tests/bug40685.phpt
@@ -14,7 +14,7 @@ var_dump(mb_decode_numericentity('&#x3d', $map, 'UTF-8'));
var_dump(mb_decode_numericentity('&#61;', $map, 'UTF-8'));
var_dump(mb_decode_numericentity('&#x3d;', $map, 'UTF-8'));
?>
---EXPECTF--
+--EXPECT--
string(1) "&"
string(3) "&&&"
string(2) "&#"
diff --git a/ext/mbstring/tests/bug43301.phpt b/ext/mbstring/tests/bug43301.phpt
index f209bd7554..6da3dd6bbe 100644
--- a/ext/mbstring/tests/bug43301.phpt
+++ b/ext/mbstring/tests/bug43301.phpt
@@ -1,7 +1,10 @@
--TEST--
Bug #43301 (mb_ereg*_replace() crashes when replacement string is invalid PHP expression and 'e' option is used)
--SKIPIF--
-<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug52931.phpt b/ext/mbstring/tests/bug52931.phpt
index 72debf7d05..ab8c8df723 100644
--- a/ext/mbstring/tests/bug52931.phpt
+++ b/ext/mbstring/tests/bug52931.phpt
@@ -17,7 +17,7 @@ var_dump(strripos($string, '</body>'));
var_dump(mb_strripos($string, '</body>'));
?>
---EXPECTF--
+--EXPECT--
Deprecated: The mbstring.func_overload directive is deprecated in Unknown on line 0
int(27)
int(27)
diff --git a/ext/mbstring/tests/bug52981.phpt b/ext/mbstring/tests/bug52981.phpt
index 7dce14a7ad..f6be08bf33 100644
--- a/ext/mbstring/tests/bug52981.phpt
+++ b/ext/mbstring/tests/bug52981.phpt
@@ -17,7 +17,7 @@ test("\xF0\x90\x90\xB8");// U+10438 DESERET SMALL LETTER H (added in 3.1.0, Marc
// not OK
test("\xE2\xB0\xB0"); // U+2C30 GLAGOLITIC SMALL LETTER AZU (added in 4.1.0, March 2005)
test("\xD4\xA5"); // U+0525 CYRILLIC SMALL LETTER PE WITH DESCENDER (added in 5.2.0, October 2009)
---EXPECTF--
+--EXPECT--
f0 90 90 90
e2 b0 80
d4 a4
diff --git a/ext/mbstring/tests/bug62934.phpt b/ext/mbstring/tests/bug62934.phpt
index f3521a97c6..8e85ae7e22 100644
--- a/ext/mbstring/tests/bug62934.phpt
+++ b/ext/mbstring/tests/bug62934.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #62934: mb_convert_kana() does not convert iteration marks
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--FILE--
<?php
echo mb_convert_kana('ã‚ã‚ã™ã‚žã‚アヽスヾメ', 'C', 'UTF-8') . "\n";
diff --git a/ext/mbstring/tests/bug65544.phpt b/ext/mbstring/tests/bug65544.phpt
new file mode 100644
index 0000000000..0a8b5a7cda
--- /dev/null
+++ b/ext/mbstring/tests/bug65544.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #65544: mb title case conversion-first word in quotation isn't capitalized
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
+--FILE--
+<?php
+var_dump(mb_convert_case("\"or else it doesn't, you know. the name of the song is called 'haddocks' eyes.'\"", MB_CASE_TITLE));
+?>
+--EXPECT--
+string(80) ""Or Else It Doesn't, You Know. The Name Of The Song Is Called 'Haddocks' Eyes.'""
diff --git a/ext/mbstring/tests/bug66797.phpt b/ext/mbstring/tests/bug66797.phpt
index df9e789be6..3709dc2bb2 100644
--- a/ext/mbstring/tests/bug66797.phpt
+++ b/ext/mbstring/tests/bug66797.phpt
@@ -15,7 +15,7 @@ var_dump(
);
?>
==DONE==
---EXPECTF--
+--EXPECT--
string(3) "bar"
string(3) "bar"
string(0) ""
diff --git a/ext/mbstring/tests/bug66964.phpt b/ext/mbstring/tests/bug66964.phpt
index b4e87a6ae1..c33bb67c49 100644
--- a/ext/mbstring/tests/bug66964.phpt
+++ b/ext/mbstring/tests/bug66964.phpt
@@ -49,5 +49,16 @@ array(5) {
[3]=>
string(21) "日本語テキスト"
[4]=>
- *RECURSION*
+ &array(5) {
+ [0]=>
+ string(21) "日本語テキスト"
+ [1]=>
+ string(21) "日本語テキスト"
+ [2]=>
+ string(21) "日本語テキスト"
+ [3]=>
+ string(21) "日本語テキスト"
+ [4]=>
+ *RECURSION*
+ }
}
diff --git a/ext/mbstring/tests/bug69151.phpt b/ext/mbstring/tests/bug69151.phpt
index 801f27e4a7..a839e8aa74 100644
--- a/ext/mbstring/tests/bug69151.phpt
+++ b/ext/mbstring/tests/bug69151.phpt
@@ -1,7 +1,10 @@
--TEST--
Bug #69151 (mb_ereg should reject ill-formed byte sequence)
--SKIPIF--
-<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
$str = "\x80";
diff --git a/ext/mbstring/tests/bug69267.phpt b/ext/mbstring/tests/bug69267.phpt
index 958f1c548b..1f29d319aa 100644
--- a/ext/mbstring/tests/bug69267.phpt
+++ b/ext/mbstring/tests/bug69267.phpt
@@ -1,5 +1,7 @@
--TEST--
Bug #69267: mb_strtolower fails on titlecase characters
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--FILE--
<?php
@@ -38,7 +40,7 @@ string(8) "Džljnjdz"
string(8) "Džljnjdz"
string(3) "á¾³"
string(3) "á¾³"
-string(3) "á¾¼"
-string(3) "á¾¼"
+string(4) "ΑΙ"
+string(4) "ΑΙ"
string(3) "á¾¼"
string(3) "á¾¼"
diff --git a/ext/mbstring/tests/bug71298.phpt b/ext/mbstring/tests/bug71298.phpt
new file mode 100644
index 0000000000..7defc469db
--- /dev/null
+++ b/ext/mbstring/tests/bug71298.phpt
@@ -0,0 +1,10 @@
+--TEST--
+Bug #71298: MB_CASE_TITLE misbehaves with curled apostrophe/quote (HTML &rsquo;)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
+--FILE--
+<?php
+echo mb_convert_case("People's issues versus people’s issues", MB_CASE_TITLE);
+?>
+--EXPECT--
+People's Issues Versus People’s Issues
diff --git a/ext/mbstring/tests/bug72164.phpt b/ext/mbstring/tests/bug72164.phpt
index 8666447e7a..018754e335 100644
--- a/ext/mbstring/tests/bug72164.phpt
+++ b/ext/mbstring/tests/bug72164.phpt
@@ -1,15 +1,18 @@
--TEST--
Bug #72164 (Null Pointer Dereference - mb_ereg_replace)
--SKIPIF--
-<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
$var0 = "e";
$var2 = "";
$var3 = NULL;
-$var8 = mbereg_replace($var2,$var3,$var3,$var0);
+$var8 = mb_ereg_replace($var2,$var3,$var3,$var0);
var_dump($var8);
?>
--EXPECTF--
-Deprecated: mbereg_replace(): The 'e' option is deprecated, use mb_ereg_replace_callback instead in %s%ebug72164.php on line %d
+Deprecated: mb_ereg_replace(): The 'e' option is deprecated, use mb_ereg_replace_callback instead in %s%ebug72164.php on line %d
string(0) ""
diff --git a/ext/mbstring/tests/bug72399.phpt b/ext/mbstring/tests/bug72399.phpt
index ba6ffb2cb1..b50ca73698 100644
--- a/ext/mbstring/tests/bug72399.phpt
+++ b/ext/mbstring/tests/bug72399.phpt
@@ -1,10 +1,15 @@
--TEST--
Bug #72399 (Use-After-Free in MBString (search_re))
+--SKIPIF--
+<?php
+require 'skipif.inc';
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
-$var5 = mbereg_search_init("","2");
+$var5 = mb_ereg_search_init("","2");
$var6 = mb_eregi_replace("2","","");
-$var13 = mbereg_search_pos();
+$var13 = mb_ereg_search_pos();
?>
--EXPECTF--
-Warning: mbereg_search_pos(): No regex given in %sbug72399.php on line %d
+Warning: mb_ereg_search_pos(): No regex given in %sbug72399.php on line %d
diff --git a/ext/mbstring/tests/bug72402.phpt b/ext/mbstring/tests/bug72402.phpt
index 6e3286cbfa..b3fd8464b8 100644
--- a/ext/mbstring/tests/bug72402.phpt
+++ b/ext/mbstring/tests/bug72402.phpt
@@ -1,7 +1,10 @@
--TEST--
Bug #72402: _php_mb_regex_ereg_replace_exec - double free
--SKIPIF--
-<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
function throwit() {
diff --git a/ext/mbstring/tests/bug72691.phpt b/ext/mbstring/tests/bug72691.phpt
index 08f6b153da..7e02342c25 100644
--- a/ext/mbstring/tests/bug72691.phpt
+++ b/ext/mbstring/tests/bug72691.phpt
@@ -3,6 +3,7 @@ Bug #72691 (mb_ereg_search raises a warning if a match zero-width)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug72693.phpt b/ext/mbstring/tests/bug72693.phpt
index f269e57f0f..c9fcdcc0e2 100644
--- a/ext/mbstring/tests/bug72693.phpt
+++ b/ext/mbstring/tests/bug72693.phpt
@@ -3,6 +3,7 @@ Bug #72693 (mb_ereg_search increments search position when a match zero-width)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug72694.phpt b/ext/mbstring/tests/bug72694.phpt
index 90f56a397a..2945b58538 100644
--- a/ext/mbstring/tests/bug72694.phpt
+++ b/ext/mbstring/tests/bug72694.phpt
@@ -3,6 +3,7 @@ Bug #72694 (mb_ereg_search_setpos does not accept a string's last position)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug72710.phpt b/ext/mbstring/tests/bug72710.phpt
index 19becc5010..e666b0dbd6 100644
--- a/ext/mbstring/tests/bug72710.phpt
+++ b/ext/mbstring/tests/bug72710.phpt
@@ -3,6 +3,7 @@ Bug #72710 (`mb_ereg` causes buffer overflow on regexp compile error)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug72994.phpt b/ext/mbstring/tests/bug72994.phpt
index 6eaebc1c67..842fdc10b6 100644
--- a/ext/mbstring/tests/bug72994.phpt
+++ b/ext/mbstring/tests/bug72994.phpt
@@ -3,17 +3,17 @@ Bug #72994 (mbc_to_code() out of bounds read)
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip mbstring extension not available');
-if (!function_exists('mbereg_replace')) die('skip mbereg_replace() not available');
+if (!function_exists('mb_ereg_replace')) die('skip mb_ereg_replace() not available');
?>
--FILE--
<?php
-$var1 = mbereg_replace($var-232338951,NULL,NULL,NULL);
+$var1 = mb_ereg_replace($var-232338951,NULL,NULL,NULL);
var_dump($var1);
?>
===DONE===
--EXPECTF--
Notice: Undefined variable: var in %s on line %d
-Warning: mbereg_replace(): mbregex compile err: invalid code point value in %sbug72994.php on line %d
+Warning: mb_ereg_replace(): mbregex compile err: invalid code point value in %sbug72994.php on line %d
bool(false)
===DONE===
diff --git a/ext/mbstring/tests/bug73532.phpt b/ext/mbstring/tests/bug73532.phpt
index 0bc838b075..7195fc0a68 100644
--- a/ext/mbstring/tests/bug73532.phpt
+++ b/ext/mbstring/tests/bug73532.phpt
@@ -1,8 +1,13 @@
--TEST--
Bug #73532 (Null pointer dereference in mb_eregi)
+--SKIPIF--
+<?php
+require 'skipif.inc';
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
var_dump(mb_eregi("a", "\xf5"));
?>
---EXPECTF--
+--EXPECT--
bool(false)
diff --git a/ext/mbstring/tests/bug73646.phpt b/ext/mbstring/tests/bug73646.phpt
index a6aefb22d4..7ac824d69c 100644
--- a/ext/mbstring/tests/bug73646.phpt
+++ b/ext/mbstring/tests/bug73646.phpt
@@ -1,5 +1,10 @@
--TEST--
Bug #73646 (mb_ereg_search_init null pointer dereference)
+--SKIPIF--
+<?php
+require 'skipif.inc';
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/bug76319.phpt b/ext/mbstring/tests/bug76319.phpt
new file mode 100644
index 0000000000..8b706020e8
--- /dev/null
+++ b/ext/mbstring/tests/bug76319.phpt
@@ -0,0 +1,9 @@
+--TEST--
+Bug #76319: mb_strtolower with invalid UTF-8 causes segmentation fault
+--FILE--
+<?php
+mb_substitute_character(0xFFFD);
+var_dump(mb_strtolower("a\xA1", 'UTF-8'));
+?>
+--EXPECT--
+string(4) "a�"
diff --git a/ext/mbstring/tests/bug76958.phpt b/ext/mbstring/tests/bug76958.phpt
new file mode 100644
index 0000000000..a7d6112936
--- /dev/null
+++ b/ext/mbstring/tests/bug76958.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #76958: Broken UTF7-IMAP conversion
+--FILE--
+<?php
+
+$str = '&BCAEMARBBEEESwQ7BDoEOA-';
+echo mb_convert_encoding($str, 'UTF-8', 'UTF7-IMAP') . "\n";
+$str = 'РаÑÑылки';
+echo mb_convert_encoding($str, 'UTF7-IMAP', 'UTF-8') . "\n";
+
+?>
+--EXPECT--
+РаÑÑылки
+&BCAEMARBBEEESwQ7BDoEOA-
diff --git a/ext/mbstring/tests/bug77025.phpt b/ext/mbstring/tests/bug77025.phpt
new file mode 100644
index 0000000000..46416c1df1
--- /dev/null
+++ b/ext/mbstring/tests/bug77025.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #77025: mb_strpos throws Unknown encoding or conversion error
+--FILE--
+<?php
+
+var_dump(mb_strpos('Hello', 'e', 0, '8bit'));
+var_dump(mb_stripos('Hello', 'e', 0, '8bit'));
+
+?>
+--EXPECT--
+int(1)
+int(1)
diff --git a/ext/mbstring/tests/bug77165.phpt b/ext/mbstring/tests/bug77165.phpt
new file mode 100644
index 0000000000..69708f613a
--- /dev/null
+++ b/ext/mbstring/tests/bug77165.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #77165: mb_check_encoding crashes when argument given an empty array
+--FILE--
+<?php
+var_dump(mb_check_encoding(array()));
+var_dump(mb_convert_encoding(array(), 'UTF-8'));
+?>
+--EXPECT--
+bool(true)
+array(0) {
+}
diff --git a/ext/mbstring/tests/bug77367.phpt b/ext/mbstring/tests/bug77367.phpt
new file mode 100644
index 0000000000..0ba76fd23c
--- /dev/null
+++ b/ext/mbstring/tests/bug77367.phpt
@@ -0,0 +1,21 @@
+--TEST--
+Bug #77367 (Negative size parameter in mb_split)
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('mbstring extension not available');
+if (!function_exists('mb_split')) die('mb_split() not available');
+?>
+--FILE--
+<?php
+mb_regex_encoding('UTF-8');
+var_dump(mb_split("\\w", "\xfc"));
+?>
+===DONE===
+--EXPECT--
+array(2) {
+ [0]=>
+ string(0) ""
+ [1]=>
+ string(0) ""
+}
+===DONE===
diff --git a/ext/mbstring/tests/bug77428.phpt b/ext/mbstring/tests/bug77428.phpt
new file mode 100644
index 0000000000..f153412acb
--- /dev/null
+++ b/ext/mbstring/tests/bug77428.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #77428: mb_ereg_replace() doesn't replace a substitution variable
+--FILE--
+<?php
+
+// This behavior is broken, but kept for BC reasons
+var_dump(mb_ereg_replace('(%)', '\\\1', 'a%c'));
+// For clarify, the above line is equivalent to:
+var_dump(mb_ereg_replace('(%)', '\\\\1', 'a%c'));
+
+?>
+--EXPECT--
+string(4) "a\%c"
+string(4) "a\%c"
diff --git a/ext/mbstring/tests/bug77514.phpt b/ext/mbstring/tests/bug77514.phpt
new file mode 100644
index 0000000000..efcbea24d7
--- /dev/null
+++ b/ext/mbstring/tests/bug77514.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #77514: mb_ereg_replace() with trailing backslash adds null byte
+--FILE--
+<?php
+
+$a="abc123";
+var_dump(mb_ereg_replace("123","def\\",$a));
+
+?>
+--EXPECT--
+string(7) "abcdef\"
diff --git a/ext/mbstring/tests/casefolding.phpt b/ext/mbstring/tests/casefolding.phpt
new file mode 100644
index 0000000000..1a68e84040
--- /dev/null
+++ b/ext/mbstring/tests/casefolding.phpt
@@ -0,0 +1,40 @@
+--TEST--
+Case-insensitive string comparisons use case folding
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
+--FILE--
+<?php
+
+$tests = [
+ ["K", "K"],
+ ["k", "K"],
+ ["Ã…", "â„«"],
+ ["Ã¥", "â„«"],
+ ["ß", "ẞ"],
+ ["Θ", "ϴ"],
+ ["θ", "ϴ"],
+ ["Ï‘", "Ï´"],
+ ["Ω", "Ω"],
+ ["ω", "Ω"],
+ ["I", "ı"],
+ ["i", "ı"],
+];
+
+foreach ($tests as list($a, $b)) {
+ var_dump(mb_stripos($a, $b));
+}
+
+?>
+--EXPECT--
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+int(0)
+bool(false)
+bool(false)
diff --git a/ext/mbstring/tests/casemapping.phpt b/ext/mbstring/tests/casemapping.phpt
new file mode 100644
index 0000000000..3e2838392b
--- /dev/null
+++ b/ext/mbstring/tests/casemapping.phpt
@@ -0,0 +1,111 @@
+--TEST--
+Unicode case mapping
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
+--FILE--
+<?php
+
+function toCases($str) {
+ echo "String: $str\n";
+ echo "Lower: ", mb_convert_case($str, MB_CASE_LOWER), "\n";
+ echo "Lower Simple: ", mb_convert_case($str, MB_CASE_LOWER_SIMPLE), "\n";
+ echo "Upper: ", mb_convert_case($str, MB_CASE_UPPER), "\n";
+ echo "Upper Simple: ", mb_convert_case($str, MB_CASE_UPPER_SIMPLE), "\n";
+ echo "Title: ", mb_convert_case($str, MB_CASE_TITLE), "\n";
+ echo "Title Simple: ", mb_convert_case($str, MB_CASE_TITLE_SIMPLE), "\n";
+ echo "Fold: ", mb_convert_case($str, MB_CASE_FOLD), "\n";
+ echo "Fold Simple: ", mb_convert_case($str, MB_CASE_FOLD_SIMPLE), "\n";
+ echo "\n";
+}
+
+toCases("ß");
+toCases("ff");
+toCases("Ä°");
+
+// Make sure that case-conversion in Turkish still works correctly.
+// Using the language-agnostic Unicode case mappins would result in
+// characters that are illegal under ISO-8859-9.
+mb_internal_encoding('ISO-8859-9');
+
+// Capital I with dot (U+0130)
+$str = "\xdd";
+echo bin2hex(mb_convert_case($str, MB_CASE_LOWER)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_LOWER_SIMPLE)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD_SIMPLE)), "\n";
+echo "\n";
+
+// Lower i without dot (U+0131)
+$str = "\xfd";
+echo bin2hex(mb_convert_case($str, MB_CASE_UPPER)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_UPPER_SIMPLE)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD_SIMPLE)), "\n";
+echo "\n";
+
+// Capital I without dot (U+0049)
+$str = "\x49";
+echo bin2hex(mb_convert_case($str, MB_CASE_LOWER)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_LOWER_SIMPLE)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD_SIMPLE)), "\n";
+echo "\n";
+
+// Lower i with dot (U+0069)
+$str = "\x69";
+echo bin2hex(mb_convert_case($str, MB_CASE_UPPER)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_UPPER_SIMPLE)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD)), "\n";
+echo bin2hex(mb_convert_case($str, MB_CASE_FOLD_SIMPLE)), "\n";
+
+?>
+--EXPECT--
+String: ß
+Lower: ß
+Lower Simple: ß
+Upper: SS
+Upper Simple: ß
+Title: Ss
+Title Simple: ß
+Fold: ss
+Fold Simple: ß
+
+String: ff
+Lower: ff
+Lower Simple: ff
+Upper: FF
+Upper Simple: ff
+Title: Ff
+Title Simple: ff
+Fold: ff
+Fold Simple: ff
+
+String: Ä°
+Lower: i̇
+Lower Simple: i
+Upper: Ä°
+Upper Simple: Ä°
+Title: Ä°
+Title Simple: Ä°
+Fold: i̇
+Fold Simple: Ä°
+
+69
+69
+69
+69
+
+49
+49
+fd
+fd
+
+fd
+fd
+fd
+fd
+
+dd
+dd
+69
+69
diff --git a/ext/mbstring/tests/empty_pattern.phpt b/ext/mbstring/tests/empty_pattern.phpt
index 10b03309bc..019ccba02c 100644
--- a/ext/mbstring/tests/empty_pattern.phpt
+++ b/ext/mbstring/tests/empty_pattern.phpt
@@ -1,7 +1,10 @@
--TEST--
Check for empty pattern
--SKIPIF--
-<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+if (!function_exists('mb_ereg')) die('skip mbregex support not available');
+?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/mb_chr_ord.phpt b/ext/mbstring/tests/mb_chr_ord.phpt
index cf2e74cb34..72a4220e8b 100644
--- a/ext/mbstring/tests/mb_chr_ord.phpt
+++ b/ext/mbstring/tests/mb_chr_ord.phpt
@@ -16,7 +16,7 @@ for($ch = 1; $ch < 80000; $ch++) {
}
}
echo 'OK';
---EXPECTF--
+--EXPECT--
ERROR(55296)
ERROR(55297)
ERROR(55298)
diff --git a/ext/mbstring/tests/mb_convert_case_invalid_mode.phpt b/ext/mbstring/tests/mb_convert_case_invalid_mode.phpt
new file mode 100644
index 0000000000..540463143a
--- /dev/null
+++ b/ext/mbstring/tests/mb_convert_case_invalid_mode.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Calling mb_convert_case() with an invalid casing mode
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
+--FILE--
+<?php
+
+var_dump(mb_convert_case("foobar", 100));
+
+?>
+--EXPECTF--
+Warning: mb_convert_case(): Invalid case mode in %s on line %d
+bool(false)
diff --git a/ext/mbstring/tests/mb_convert_encoding_array.phpt b/ext/mbstring/tests/mb_convert_encoding_array.phpt
index d689e24ecf..bd413c4686 100644
--- a/ext/mbstring/tests/mb_convert_encoding_array.phpt
+++ b/ext/mbstring/tests/mb_convert_encoding_array.phpt
@@ -70,7 +70,7 @@ var_dump(base64_encode_array(mb_convert_encoding($euc_jp_string, 'UTF-8', 'EUC-J
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_convert_encoding() : array functionality ***
-- Convert to JIS --
diff --git a/ext/mbstring/tests/mb_convert_encoding_basic.phpt b/ext/mbstring/tests/mb_convert_encoding_basic.phpt
index cf641e6431..3168126000 100644
--- a/ext/mbstring/tests/mb_convert_encoding_basic.phpt
+++ b/ext/mbstring/tests/mb_convert_encoding_basic.phpt
@@ -58,7 +58,7 @@ var_dump(base64_encode(mb_convert_encoding($euc_jp_string, 'UTF-8', 'EUC-JP')));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_convert_encoding() : basic functionality ***
-- Convert to JIS --
diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt
index 43b737ec66..1352088ccd 100644
--- a/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt
+++ b/ext/mbstring/tests/mb_encode_mimeheader_basic.phpt
@@ -45,7 +45,7 @@ foreach ($nonEnglish as $lang => $input) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_encode_mimeheader() : basic ***
Language: English
diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt
index 8c61171179..151d4a610f 100644
--- a/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt
+++ b/ext/mbstring/tests/mb_encode_mimeheader_basic2.phpt
@@ -40,7 +40,7 @@ foreach ($inputs as $lang => $input) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_encode_mimeheader() : basic2 ***
Language: SJIS
diff --git a/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt b/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt
index 4a297df5eb..d56a996892 100644
--- a/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt
+++ b/ext/mbstring/tests/mb_encode_mimeheader_basic3.phpt
@@ -40,7 +40,7 @@ foreach ($inputs as $lang => $input) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_encode_mimeheader() : basic2 ***
Language: SJIS
diff --git a/ext/mbstring/tests/mb_encode_mimeheader_variation5.phpt b/ext/mbstring/tests/mb_encode_mimeheader_variation5.phpt
index e0de4e63c6..9dec3c11c5 100644
--- a/ext/mbstring/tests/mb_encode_mimeheader_variation5.phpt
+++ b/ext/mbstring/tests/mb_encode_mimeheader_variation5.phpt
@@ -173,32 +173,32 @@ string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr
-- Iteration 16 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, string given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, string given in %s on line %d
NULL
-- Iteration 17 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, string given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, string given in %s on line %d
NULL
-- Iteration 18 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, string given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, string given in %s on line %d
NULL
-- Iteration 19 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, string given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, string given in %s on line %d
NULL
-- Iteration 20 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, string given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, string given in %s on line %d
NULL
-- Iteration 21 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, object given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, object given in %s on line %d
NULL
-- Iteration 22 --
@@ -211,6 +211,6 @@ string(115) "=?UTF-8?B?zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr
-- Iteration 24 --
-Warning: mb_encode_mimeheader() expects parameter 5 to be integer, resource given in %s on line %d
+Warning: mb_encode_mimeheader() expects parameter 5 to be int, resource given in %s on line %d
NULL
Done
diff --git a/ext/mbstring/tests/mb_encode_mimeheader_variation6.phpt b/ext/mbstring/tests/mb_encode_mimeheader_variation6.phpt
index b02f510f64..edf602d550 100644
--- a/ext/mbstring/tests/mb_encode_mimeheader_variation6.phpt
+++ b/ext/mbstring/tests/mb_encode_mimeheader_variation6.phpt
@@ -36,7 +36,7 @@ foreach ($linefeeds as $linefeed) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_encode_mimeheader() : usage variations ***
-- Iteration 1 --
diff --git a/ext/mbstring/tests/mb_encode_numericentity.phpt b/ext/mbstring/tests/mb_encode_numericentity.phpt
index dffb419662..51ad6c22a1 100644
--- a/ext/mbstring/tests/mb_encode_numericentity.phpt
+++ b/ext/mbstring/tests/mb_encode_numericentity.phpt
@@ -16,7 +16,7 @@ echo mb_encode_numericentity($str2, $convmap, "UTF-8")."\n";
$convmap = array(0xFF, 0x2FFFF, 0, 0xFFFF);
echo mb_encode_numericentity('aŒbœcŠdše€fg', $convmap, "UTF-8")."\n";
?>
---EXPECTF--
+--EXPECT--
&#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;
&#402;&#913;&#914;&#915;&#916;&#917;&#918;&#919;&#920;&#921;&#922;&#923;&#924;&#925;&#926;&#927;&#928;&#929;&#931;&#932;&#933;&#934;&#935;&#936;&#937;&#945;&#946;&#947;&#948;&#949;&#950;&#951;&#952;&#953;&#954;&#955;&#956;&#957;&#958;&#959;&#960;&#961;&#962;&#963;&#964;&#965;&#966;&#967;&#968;&#969;&#977;&#978;&#982;&#8226;&#8230;&#8242;&#8243;&#8254;&#8260;&#8472;&#8465;&#8476;&#8482;&#8501;&#8592;&#8593;&#8594;&#8595;&#8596;&#8629;&#8656;&#8657;&#8658;&#8659;&#8660;&#8704;&#8706;&#8707;&#8709;&#8711;&#8712;&#8713;&#8715;&#8719;&#8721;&#8722;&#8727;&#8730;&#8733;&#8734;&#8736;&#8743;&#8744;&#8745;&#8746;&#8747;&#8756;&#8764;&#8773;&#8776;&#8800;&#8801;&#8804;&#8805;&#8834;&#8835;&#8836;&#8838;&#8839;&#8853;&#8855;&#8869;&#8901;&#8968;&#8969;&#8970;&#8971;&#9001;&#9002;&#9674;&#9824;&#9827;&#9829;&#9830;
a&#338;b&#339;c&#352;d&#353;e&#8364;fg
diff --git a/ext/mbstring/tests/mb_encoding_aliases.phpt b/ext/mbstring/tests/mb_encoding_aliases.phpt
index 8ef299425a..8bc0453350 100644
--- a/ext/mbstring/tests/mb_encoding_aliases.phpt
+++ b/ext/mbstring/tests/mb_encoding_aliases.phpt
@@ -10,6 +10,7 @@ sort($list);
var_dump($list);
var_dump(mb_encoding_aliases("7bit"));
var_dump(mb_encoding_aliases("8bit"));
+var_dump(mb_encoding_aliases("BAD"));
?>
--EXPECTF--
Warning: mb_encoding_aliases() expects exactly 1 parameter, 0 given in %s on line 2
@@ -43,3 +44,6 @@ array(1) {
[0]=>
string(6) "binary"
}
+
+Warning: mb_encoding_aliases(): Unknown encoding "BAD" in %s on line %d
+bool(false)
diff --git a/ext/mbstring/tests/mb_ereg2.phpt b/ext/mbstring/tests/mb_ereg2.phpt
index ecae0aca49..30e857eed7 100644
--- a/ext/mbstring/tests/mb_ereg2.phpt
+++ b/ext/mbstring/tests/mb_ereg2.phpt
@@ -1,18 +1,21 @@
--TEST--
mb_ereg() returning matches
--SKIPIF--
-<?php if (!function_exists("mb_ereg")) print "skip"; ?>
+<?php
+if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+if (!function_exists("mb_ereg")) print "skip mb_ereg() not available";
+?>
--FILE--
<?php
$a = -1; $b = -1; $c = -1;
-mbereg($a, $b, $c);
+mb_ereg($a, $b, $c);
var_dump($a, $b, $c);
-mberegi($a, $b, $c);
+mb_eregi($a, $b, $c);
var_dump($a, $b, $c);
-mbereg_search_init($a, $b, $c);
+mb_ereg_search_init($a, $b, $c);
var_dump($a, $b, $c);
echo "Done\n";
@@ -31,7 +34,7 @@ array(1) {
string(2) "-1"
}
-Warning: mbereg_search_init() expects parameter 3 to be string, array given in %s on line %d
+Warning: mb_ereg_search_init() expects parameter 3 to be string, array given in %s on line %d
int(-1)
int(-1)
array(1) {
diff --git a/ext/mbstring/tests/mb_ereg3.phpt b/ext/mbstring/tests/mb_ereg3.phpt
index fe779fcc85..c591563444 100644
--- a/ext/mbstring/tests/mb_ereg3.phpt
+++ b/ext/mbstring/tests/mb_ereg3.phpt
@@ -8,6 +8,9 @@ if (!function_exists("mb_ereg")) print "skip mb_ereg() not available";
--FILE--
<?php
+// Note: This test is identical to mb_ereg2.phpt, but using deprecated mbereg_* aliases.
+// Deleted it once the deprecated aliases have been removed.
+
$a = -1; $b = -1; $c = -1;
mbereg($a, $b, $c);
var_dump($a, $b, $c);
@@ -21,12 +24,15 @@ var_dump($a, $b, $c);
echo "Done\n";
?>
--EXPECTF--
+Deprecated: Function mbereg() is deprecated in %s on line %d
int(-1)
int(-1)
array(1) {
[0]=>
string(2) "-1"
}
+
+Deprecated: Function mberegi() is deprecated in %s on line %d
int(-1)
int(-1)
array(1) {
@@ -34,6 +40,8 @@ array(1) {
string(2) "-1"
}
+Deprecated: Function mbereg_search_init() is deprecated in %s on line %d
+
Warning: mbereg_search_init() expects parameter 3 to be string, array given in %s on line %d
int(-1)
int(-1)
diff --git a/ext/mbstring/tests/mb_ereg4.phpt b/ext/mbstring/tests/mb_ereg4.phpt
deleted file mode 100644
index fe779fcc85..0000000000
--- a/ext/mbstring/tests/mb_ereg4.phpt
+++ /dev/null
@@ -1,44 +0,0 @@
---TEST--
-mb_ereg() returning matches
---SKIPIF--
-<?php
-if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
-if (!function_exists("mb_ereg")) print "skip mb_ereg() not available";
-?>
---FILE--
-<?php
-
-$a = -1; $b = -1; $c = -1;
-mbereg($a, $b, $c);
-var_dump($a, $b, $c);
-
-mberegi($a, $b, $c);
-var_dump($a, $b, $c);
-
-mbereg_search_init($a, $b, $c);
-var_dump($a, $b, $c);
-
-echo "Done\n";
-?>
---EXPECTF--
-int(-1)
-int(-1)
-array(1) {
- [0]=>
- string(2) "-1"
-}
-int(-1)
-int(-1)
-array(1) {
- [0]=>
- string(2) "-1"
-}
-
-Warning: mbereg_search_init() expects parameter 3 to be string, array given in %s on line %d
-int(-1)
-int(-1)
-array(1) {
- [0]=>
- string(2) "-1"
-}
-Done
diff --git a/ext/mbstring/tests/mb_ereg_dupnames.phpt b/ext/mbstring/tests/mb_ereg_dupnames.phpt
new file mode 100644
index 0000000000..fcc428c360
--- /dev/null
+++ b/ext/mbstring/tests/mb_ereg_dupnames.phpt
@@ -0,0 +1,37 @@
+--TEST--
+Testing mb_ereg() duplicate named groups
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+function_exists('mb_ereg') or die("skip mb_ereg() is not available in this build");
+?>
+--FILE--
+<?php
+ mb_regex_encoding("UTF-8");
+ $pattern = '\w+((?<punct>?)|(?<punct>ï¼))';
+ mb_ereg($pattern, '中?', $m);
+ var_dump($m);
+ mb_ereg($pattern, '中ï¼', $m);
+ var_dump($m);
+?>
+--EXPECT--
+array(4) {
+ [0]=>
+ string(6) "中?"
+ [1]=>
+ string(3) "?"
+ [2]=>
+ bool(false)
+ ["punct"]=>
+ string(3) "?"
+}
+array(4) {
+ [0]=>
+ string(6) "中ï¼"
+ [1]=>
+ bool(false)
+ [2]=>
+ string(3) "ï¼"
+ ["punct"]=>
+ string(3) "ï¼"
+}
diff --git a/ext/mbstring/tests/mb_ereg_match_basic.phpt b/ext/mbstring/tests/mb_ereg_match_basic.phpt
index 08183573b6..59ff022dc2 100644
--- a/ext/mbstring/tests/mb_ereg_match_basic.phpt
+++ b/ext/mbstring/tests/mb_ereg_match_basic.phpt
@@ -41,7 +41,7 @@ var_dump(mb_ereg_match($regex2, $string_mb));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_ereg_match() : basic functionality ***
-- ASCII string 1 --
diff --git a/ext/mbstring/tests/mb_ereg_named_subpatterns.phpt b/ext/mbstring/tests/mb_ereg_named_subpatterns.phpt
new file mode 100644
index 0000000000..ed0f85baa3
--- /dev/null
+++ b/ext/mbstring/tests/mb_ereg_named_subpatterns.phpt
@@ -0,0 +1,50 @@
+--TEST--
+Testing mb_ereg() named subpatterns
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+function_exists('mb_ereg') or die("skip mb_ereg() is not available in this build");
+?>
+--FILE--
+<?php
+ mb_regex_encoding("UTF-8");
+ mb_ereg('(?<wsp>\s*)(?<word>\w+)', ' 中国', $m);
+ var_dump($m);
+ mb_ereg('(?<wsp>\s*)(?<word>\w+)', '国', $m);
+ var_dump($m);
+ mb_ereg('(\s*)(?<word>\w+)', ' 中国', $m);
+ var_dump($m);
+?>
+--EXPECT--
+array(5) {
+ [0]=>
+ string(8) " 中国"
+ [1]=>
+ string(2) " "
+ [2]=>
+ string(6) "中国"
+ ["wsp"]=>
+ string(2) " "
+ ["word"]=>
+ string(6) "中国"
+}
+array(5) {
+ [0]=>
+ string(3) "国"
+ [1]=>
+ bool(false)
+ [2]=>
+ string(3) "国"
+ ["wsp"]=>
+ bool(false)
+ ["word"]=>
+ string(3) "国"
+}
+array(3) {
+ [0]=>
+ string(8) " 中国"
+ [1]=>
+ string(6) "中国"
+ ["word"]=>
+ string(6) "中国"
+}
diff --git a/ext/mbstring/tests/mb_ereg_replace_callback.phpt b/ext/mbstring/tests/mb_ereg_replace_callback.phpt
index 554b51fcf9..7c152e7b46 100644
--- a/ext/mbstring/tests/mb_ereg_replace_callback.phpt
+++ b/ext/mbstring/tests/mb_ereg_replace_callback.phpt
@@ -8,7 +8,15 @@ function_exists('mb_ereg_replace_callback') or die("skip mb_ereg_replace_callbac
--FILE--
<?php
$str = 'abc 123 #",; $foo';
-echo mb_ereg_replace_callback('(\S+)', function($m){return $m[1].'('.strlen($m[1]).')';}, $str);
+
+echo mb_ereg_replace_callback('(\S+)', function ($m) {
+ return $m[1].'('.strlen($m[1]).')';
+}, $str), "\n";
+
+echo mb_ereg_replace_callback('(?<word>\w+) (?<digit>\d+).*', function ($m) {
+ return sprintf("%s-%s", $m['digit'], $m['word']);
+}, $str), "\n";
?>
--EXPECT--
abc(3) 123(3) #",;(4) $foo(4)
+123-abc
diff --git a/ext/mbstring/tests/mb_ereg_replace_named_subpatterns.phpt b/ext/mbstring/tests/mb_ereg_replace_named_subpatterns.phpt
new file mode 100644
index 0000000000..66eece7260
--- /dev/null
+++ b/ext/mbstring/tests/mb_ereg_replace_named_subpatterns.phpt
@@ -0,0 +1,36 @@
+--TEST--
+mb_ereg_replace() with named subpatterns
+--SKIPIF--
+<?php
+extension_loaded('mbstring') or die('skip mbstring not available');
+function_exists('mb_ereg_replace') or die("skip mb_ereg_replace() is not available in this build");
+?>
+--FILE--
+<?php
+ mb_regex_set_options('');
+ // \k<word> syntax
+ echo mb_ereg_replace('(?<a>\s*)(?<b>\w+)(?<c>\s*)', '\k<a>_\k<b>_\k<c>', 'a b c d e' ), "\n";
+ // \k'word' syntax
+ echo mb_ereg_replace('(?<word>[a-z]+)',"<\k'word'>", 'abc def ghi'), PHP_EOL;
+ // numbered captures with \k<n> syntax
+ echo mb_ereg_replace('(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(\10)', '\k<0>-\k<10>-', '123456789aa'), PHP_EOL;
+ // numbered captures with \k'n' syntax
+ echo mb_ereg_replace('(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(\10)', "\k'0'-\k'10'-", '123456789aa'), PHP_EOL;
+ // backref 0 works, but 01 is ignored
+ echo mb_ereg_replace('a', "\k'0'_\k<01>", 'a'), PHP_EOL;
+ // Numbered backref is ignored if named backrefs are present
+ echo mb_ereg_replace('(?<a>A)\k<a>', '-\1-', 'AA'), PHP_EOL;
+ // An empty backref is ignored
+ echo mb_ereg_replace('(\w)\1', '-\k<>-', 'AA'), PHP_EOL;
+ // An unclosed backref is ignored
+ echo mb_ereg_replace('(?<a>\w+)', '-\k<a', 'AA'), PHP_EOL;
+?>
+--EXPECT--
+_a_ _b_ _c_ _d_ _e_
+<abc> <def> <ghi>
+123456789aa-a-
+123456789aa-a-
+a_\k<01>
+-\1-
+-\k<>-
+-\k<a
diff --git a/ext/mbstring/tests/mb_ereg_search_named_subpatterns.phpt b/ext/mbstring/tests/mb_ereg_search_named_subpatterns.phpt
new file mode 100644
index 0000000000..f899e9beeb
--- /dev/null
+++ b/ext/mbstring/tests/mb_ereg_search_named_subpatterns.phpt
@@ -0,0 +1,31 @@
+--TEST--
+Testing mb_ereg_search() named capture groups
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+function_exists('mb_ereg_search') or die("skip mb_ereg_search() is not available in this build");
+?>
+--FILE--
+<?php
+ mb_regex_encoding("UTF-8");
+ mb_ereg_search_init(' 中国?');
+ mb_ereg_search('(?<wsp>\s*)(?<word>\w+)(?<punct>[?ï¼])');
+ var_dump(mb_ereg_search_getregs());
+?>
+--EXPECT--
+array(7) {
+ [0]=>
+ string(11) " 中国?"
+ [1]=>
+ string(2) " "
+ [2]=>
+ string(6) "中国"
+ [3]=>
+ string(3) "?"
+ ["punct"]=>
+ string(3) "?"
+ ["wsp"]=>
+ string(2) " "
+ ["word"]=>
+ string(6) "中国"
+}
diff --git a/ext/mbstring/tests/mb_ereg_search_pos.phpt b/ext/mbstring/tests/mb_ereg_search_pos.phpt
index df225549d6..e9c8aaafc7 100644
--- a/ext/mbstring/tests/mb_ereg_search_pos.phpt
+++ b/ext/mbstring/tests/mb_ereg_search_pos.phpt
@@ -3,6 +3,7 @@ mb_ereg_search_pos() # a test for the basic function of mb_ereg_search_pos
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+if (!function_exists("mb_regex_encoding")) die("skip mb_regex_encoding() is not defined");
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/mb_ereg_search_setpos.phpt b/ext/mbstring/tests/mb_ereg_search_setpos.phpt
index 60237f04a1..5b76ad0d28 100644
--- a/ext/mbstring/tests/mb_ereg_search_setpos.phpt
+++ b/ext/mbstring/tests/mb_ereg_search_setpos.phpt
@@ -3,6 +3,7 @@ mb_ereg_search_setpos() function
--SKIPIF--
<?php
if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
+if (!function_exists("mb_regex_encoding")) die("skip mb_regex_encoding() is not defined");
?>
--FILE--
<?php
diff --git a/ext/mbstring/tests/mb_ereg_variation1.phpt b/ext/mbstring/tests/mb_ereg_variation1.phpt
index 8afbe98e2a..60baf8743e 100644
--- a/ext/mbstring/tests/mb_ereg_variation1.phpt
+++ b/ext/mbstring/tests/mb_ereg_variation1.phpt
@@ -89,7 +89,7 @@ fclose($fp);
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_ereg() : usage variations ***
-- Iteration 1 --
diff --git a/ext/mbstring/tests/mb_ereg_variation4.phpt b/ext/mbstring/tests/mb_ereg_variation4.phpt
index e04795d85d..54efbfb3f8 100644
--- a/ext/mbstring/tests/mb_ereg_variation4.phpt
+++ b/ext/mbstring/tests/mb_ereg_variation4.phpt
@@ -73,7 +73,7 @@ function base64_encode_var_dump($regs) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_ereg() : usage variations ***
-- Iteration 1 --
diff --git a/ext/mbstring/tests/mb_ereg_variation5.phpt b/ext/mbstring/tests/mb_ereg_variation5.phpt
index 52e3e356b3..24b12f25a7 100644
--- a/ext/mbstring/tests/mb_ereg_variation5.phpt
+++ b/ext/mbstring/tests/mb_ereg_variation5.phpt
@@ -61,7 +61,7 @@ function base64_encode_var_dump($regs) {
}
}
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_ereg() : usage variations ***
ASCII String without $regs arg: int(1)
diff --git a/ext/mbstring/tests/mb_eregi_invalid_arguments.phpt b/ext/mbstring/tests/mb_eregi_invalid_arguments.phpt
deleted file mode 100644
index ced6fadcdf..0000000000
--- a/ext/mbstring/tests/mb_eregi_invalid_arguments.phpt
+++ /dev/null
@@ -1,20 +0,0 @@
---TEST--
-mb_eregi() and invalid arguments
---SKIPIF--
-<?php
-if (!extension_loaded('mbstring')) die('skip mbstring not enabled');
-if (!function_exists("mb_eregi")) print "skip mb_eregi() not available";
-?>
---FILE--
-<?php
-
-mb_regex_encoding('utf-8');
-
-var_dump(mb_eregi('z', 'XYZ'));
-var_dump(mb_eregi('xyzp', 'XYZ'));
-var_dump(mb_eregi('ö', 'Öäü'));
-?>
---EXPECT--
-int(1)
-bool(false)
-int(1)
diff --git a/ext/mbstring/tests/mb_internal_encoding_basic2.phpt b/ext/mbstring/tests/mb_internal_encoding_basic2.phpt
index 5bffecce73..8090b47be5 100644
--- a/ext/mbstring/tests/mb_internal_encoding_basic2.phpt
+++ b/ext/mbstring/tests/mb_internal_encoding_basic2.phpt
@@ -38,7 +38,7 @@ var_dump(mb_internal_encoding()); //check internal encoding is now set to UTF
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_internal_encoding() : basic functionality ***
string(0) ""
string(10) "ISO-8859-1"
diff --git a/ext/mbstring/tests/mb_language.phpt b/ext/mbstring/tests/mb_language.phpt
new file mode 100644
index 0000000000..0b8bcff28c
--- /dev/null
+++ b/ext/mbstring/tests/mb_language.phpt
@@ -0,0 +1,39 @@
+--TEST--
+mb_language()
+--SKIPIF--
+<?php extension_loaded('mbstring') or die('skip');
+--INI--
+mbstring.language=
+--FILE--
+<?php
+echo "Checking default language:\n";
+var_dump(mb_language());
+
+echo "Checking default language after ini_set:\n";
+ini_set('mbstring.language', 'uni');
+var_dump(mb_language());
+
+echo "Changing language to English should be successful:\n";
+var_dump(mb_language('English'));
+
+echo "Confirm language was changed:\n";
+var_dump(mb_language());
+
+echo "Try changing to a non-existent language:\n";
+var_dump(mb_language('Pig Latin'));
+var_dump(mb_language());
+?>
+--EXPECTF--
+Checking default language:
+string(7) "neutral"
+Checking default language after ini_set:
+string(3) "uni"
+Changing language to English should be successful:
+bool(true)
+Confirm language was changed:
+string(7) "English"
+Try changing to a non-existent language:
+
+Warning: mb_language(): Unknown language "Pig Latin" in %s on line %d
+bool(false)
+string(7) "neutral"
diff --git a/ext/mbstring/tests/mb_parse_str.phpt b/ext/mbstring/tests/mb_parse_str.phpt
index 94f6a9f0a0..8580ac52c5 100644
--- a/ext/mbstring/tests/mb_parse_str.phpt
+++ b/ext/mbstring/tests/mb_parse_str.phpt
@@ -2,8 +2,6 @@
mb_parse_str()
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
---FAIL--
-register_globals calls killed the ability for mb_parse_str() to register into the global scope
--INI--
arg_separator.input=&
--FILE--
diff --git a/ext/mbstring/tests/mb_parse_str02.phpt b/ext/mbstring/tests/mb_parse_str02.phpt
index d89137de07..e1871bf596 100644
--- a/ext/mbstring/tests/mb_parse_str02.phpt
+++ b/ext/mbstring/tests/mb_parse_str02.phpt
@@ -2,8 +2,6 @@
mb_parse_str() test 2
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
---FAIL--
-register_globals calls killed the ability for mb_parse_str() to register into the global scope
--INI--
arg_separator.input=&#
--FILE--
diff --git a/ext/mbstring/tests/mb_preferred_mime_name.phpt b/ext/mbstring/tests/mb_preferred_mime_name.phpt
index 7cc6a6bd53..df05027c3c 100644
--- a/ext/mbstring/tests/mb_preferred_mime_name.phpt
+++ b/ext/mbstring/tests/mb_preferred_mime_name.phpt
@@ -6,11 +6,6 @@ mb_preferred_mime_name()
<?php
// TODO: Add more encoding names
-//$debug=true;
-ini_set('include_path', dirname(__FILE__));
-include_once('common.inc');
-
-
$str = mb_preferred_mime_name('sjis-win');
echo "$str\n";
@@ -40,11 +35,12 @@ echo "$str\n";
echo "== INVALID PARAMETER ==\n";
// Invalid name
-$r = mb_preferred_mime_name('BAD_NAME');
-($r === FALSE) ? print("OK_BAD_NAME\n") : print("NG_BAD_NAME\n");
+var_dump(mb_preferred_mime_name('BAD_NAME'));
+// No preferred name
+var_dump(mb_preferred_mime_name('pass'));
?>
---EXPECT--
+--EXPECTF--
Shift_JIS
Shift_JIS
EUC-JP
@@ -55,5 +51,9 @@ ISO-8859-1
UCS-2
UCS-4
== INVALID PARAMETER ==
-ERR: Warning
-OK_BAD_NAME
+
+Warning: mb_preferred_mime_name(): Unknown encoding "BAD_NAME" in %s on line %d
+bool(false)
+
+Warning: mb_preferred_mime_name(): No MIME preferred name corresponding to "pass" in %s on line %d
+bool(false)
diff --git a/ext/mbstring/tests/mb_split.phpt b/ext/mbstring/tests/mb_split.phpt
index 2ce7ab9316..216beec1cc 100644
--- a/ext/mbstring/tests/mb_split.phpt
+++ b/ext/mbstring/tests/mb_split.phpt
@@ -35,7 +35,7 @@ mbstring.func_overload=0
verify_split( "\xa1\xa1+", "\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1\xa1\xa1\xa1\xa2\xa2\xa1\xa1\xa1", $i );
}
?>
---EXPECTF--
+--EXPECT--
bool(true)
ok
ok
diff --git a/ext/mbstring/tests/mb_split_variation3.phpt b/ext/mbstring/tests/mb_split_variation3.phpt
index 6856a92d29..c5e6783f98 100644
--- a/ext/mbstring/tests/mb_split_variation3.phpt
+++ b/ext/mbstring/tests/mb_split_variation3.phpt
@@ -285,32 +285,32 @@ array(1) {
-- Iteration 16 --
-Warning: mb_split() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, string given in %s on line %d
bool(false)
-- Iteration 17 --
-Warning: mb_split() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, string given in %s on line %d
bool(false)
-- Iteration 18 --
-Warning: mb_split() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, string given in %s on line %d
bool(false)
-- Iteration 19 --
-Warning: mb_split() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, string given in %s on line %d
bool(false)
-- Iteration 20 --
-Warning: mb_split() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, string given in %s on line %d
bool(false)
-- Iteration 21 --
-Warning: mb_split() expects parameter 3 to be integer, object given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, object given in %s on line %d
bool(false)
-- Iteration 22 --
@@ -327,6 +327,6 @@ array(1) {
-- Iteration 24 --
-Warning: mb_split() expects parameter 3 to be integer, resource given in %s on line %d
+Warning: mb_split() expects parameter 3 to be int, resource given in %s on line %d
bool(false)
Done
diff --git a/ext/mbstring/tests/mb_strcut_negative_length.phpt b/ext/mbstring/tests/mb_strcut_negative_length.phpt
new file mode 100644
index 0000000000..3bdc7d90ce
--- /dev/null
+++ b/ext/mbstring/tests/mb_strcut_negative_length.phpt
@@ -0,0 +1,18 @@
+--TEST--
+mb_strcut() negative length test
+--SKIPIF--
+<?php extension_loaded('mbstring') or die('skip');
+--FILE--
+<?php
+var_dump(mb_strcut('Déjà vu', 1, -3));
+var_dump(mb_strcut('Déjà vu', 1, -4));
+var_dump(mb_strcut('Déjà vu', 1, -5));
+var_dump(mb_strcut('Déjà vu', 1, -6));
+var_dump(mb_strcut('Déjà vu', 1, -999));
+?>
+--EXPECT--
+string(5) "éjà"
+string(3) "éj"
+string(3) "éj"
+string(2) "é"
+string(0) ""
diff --git a/ext/mbstring/tests/mb_stripos_basic.phpt b/ext/mbstring/tests/mb_stripos_basic.phpt
index b360858e6d..0826b3e878 100644
--- a/ext/mbstring/tests/mb_stripos_basic.phpt
+++ b/ext/mbstring/tests/mb_stripos_basic.phpt
@@ -97,7 +97,7 @@ foreach ($greek_needles as $needle) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_stripos() : basic functionality***
-- ASCII Strings, needle should be found --
diff --git a/ext/mbstring/tests/mb_stripos_basic2.phpt b/ext/mbstring/tests/mb_stripos_basic2.phpt
index 5dd9848372..23a8b6c5a2 100644
--- a/ext/mbstring/tests/mb_stripos_basic2.phpt
+++ b/ext/mbstring/tests/mb_stripos_basic2.phpt
@@ -71,7 +71,7 @@ foreach ($greek_needles as $needle) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_stripos() : basic functionality***
-- ASCII Strings --
diff --git a/ext/mbstring/tests/mb_stripos_variation3.phpt b/ext/mbstring/tests/mb_stripos_variation3.phpt
index 0107d07e3f..4c9441462a 100644
--- a/ext/mbstring/tests/mb_stripos_variation3.phpt
+++ b/ext/mbstring/tests/mb_stripos_variation3.phpt
@@ -170,32 +170,32 @@ int(8)
-- Iteration 18 --
-Warning: mb_stripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 19 --
-Warning: mb_stripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 20 --
-Warning: mb_stripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 21 --
-Warning: mb_stripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 22 --
-Warning: mb_stripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 23 --
-Warning: mb_stripos() expects parameter 3 to be integer, object given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, object given in %s on line %d
NULL
-- Iteration 24 --
@@ -206,6 +206,6 @@ int(8)
-- Iteration 26 --
-Warning: mb_stripos() expects parameter 3 to be integer, resource given in %s on line %d
+Warning: mb_stripos() expects parameter 3 to be int, resource given in %s on line %d
NULL
Done
diff --git a/ext/mbstring/tests/mb_stristr_variation3.phpt b/ext/mbstring/tests/mb_stristr_variation3.phpt
index 642b3d9161..b24faaeb71 100644
--- a/ext/mbstring/tests/mb_stristr_variation3.phpt
+++ b/ext/mbstring/tests/mb_stristr_variation3.phpt
@@ -161,19 +161,19 @@ string(12) "737472696e67"
string(12) "737472696e67"
--empty array--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--int indexed array--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--associative array--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--nested arrays--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--uppercase NULL--
@@ -213,11 +213,11 @@ string(12) "737472696e67"
string(12) "737472696e67"
--instance of classWithToString--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--instance of classWithoutToString--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--undefined var--
@@ -227,6 +227,6 @@ string(8) "5f76616c"
string(8) "5f76616c"
--resource--
-Error: 2 - mb_stristr() expects parameter 3 to be boolean, resource given, %s(%d)
+Error: 2 - mb_stristr() expects parameter 3 to be bool, resource given, %s(%d)
NULL
===DONE===
diff --git a/ext/mbstring/tests/mb_strlen_basic.phpt b/ext/mbstring/tests/mb_strlen_basic.phpt
index fd678c88df..2da54e6fe9 100644
--- a/ext/mbstring/tests/mb_strlen_basic.phpt
+++ b/ext/mbstring/tests/mb_strlen_basic.phpt
@@ -30,7 +30,7 @@ var_dump(mb_strlen($string_mb, 'UTF-8'));
echo "\nDone";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strlen() : basic functionality***
-- ASCII String --
diff --git a/ext/mbstring/tests/mb_strlen_variation3.phpt b/ext/mbstring/tests/mb_strlen_variation3.phpt
index 948b464ffd..b5f36dedc1 100644
--- a/ext/mbstring/tests/mb_strlen_variation3.phpt
+++ b/ext/mbstring/tests/mb_strlen_variation3.phpt
@@ -104,7 +104,7 @@ foreach($encoding as $enc) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strlen() : usage variations ***
-- Iteration 1: UCS-4 --
diff --git a/ext/mbstring/tests/mb_strpos_variation3.phpt b/ext/mbstring/tests/mb_strpos_variation3.phpt
index d5205419d1..b34682d5b4 100644
--- a/ext/mbstring/tests/mb_strpos_variation3.phpt
+++ b/ext/mbstring/tests/mb_strpos_variation3.phpt
@@ -170,32 +170,32 @@ int(8)
-- Iteration 18 --
-Warning: mb_strpos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 19 --
-Warning: mb_strpos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 20 --
-Warning: mb_strpos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 21 --
-Warning: mb_strpos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 22 --
-Warning: mb_strpos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 23 --
-Warning: mb_strpos() expects parameter 3 to be integer, object given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, object given in %s on line %d
NULL
-- Iteration 24 --
@@ -206,6 +206,6 @@ int(8)
-- Iteration 26 --
-Warning: mb_strpos() expects parameter 3 to be integer, resource given in %s on line %d
+Warning: mb_strpos() expects parameter 3 to be int, resource given in %s on line %d
NULL
Done
diff --git a/ext/mbstring/tests/mb_strrchr_variation3.phpt b/ext/mbstring/tests/mb_strrchr_variation3.phpt
index d21072de75..0664a16302 100644
--- a/ext/mbstring/tests/mb_strrchr_variation3.phpt
+++ b/ext/mbstring/tests/mb_strrchr_variation3.phpt
@@ -161,19 +161,19 @@ string(12) "737472696e67"
string(12) "737472696e67"
--empty array--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--int indexed array--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--associative array--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--nested arrays--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--uppercase NULL--
@@ -213,11 +213,11 @@ string(12) "737472696e67"
string(12) "737472696e67"
--instance of classWithToString--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--instance of classWithoutToString--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--undefined var--
@@ -227,6 +227,6 @@ string(8) "5f76616c"
string(8) "5f76616c"
--resource--
-Error: 2 - mb_strrchr() expects parameter 3 to be boolean, resource given, %s(%d)
+Error: 2 - mb_strrchr() expects parameter 3 to be bool, resource given, %s(%d)
NULL
===DONE===
diff --git a/ext/mbstring/tests/mb_strrichr_variation3.phpt b/ext/mbstring/tests/mb_strrichr_variation3.phpt
index 79824c8a73..c2cccaa375 100644
--- a/ext/mbstring/tests/mb_strrichr_variation3.phpt
+++ b/ext/mbstring/tests/mb_strrichr_variation3.phpt
@@ -161,19 +161,19 @@ string(12) "737472696e67"
string(12) "737472696e67"
--empty array--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--int indexed array--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--associative array--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--nested arrays--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--uppercase NULL--
@@ -213,11 +213,11 @@ string(12) "737472696e67"
string(12) "737472696e67"
--instance of classWithToString--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--instance of classWithoutToString--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--undefined var--
@@ -227,6 +227,6 @@ string(8) "5f76616c"
string(8) "5f76616c"
--resource--
-Error: 2 - mb_strrichr() expects parameter 3 to be boolean, resource given, %s(%d)
+Error: 2 - mb_strrichr() expects parameter 3 to be bool, resource given, %s(%d)
NULL
===DONE===
diff --git a/ext/mbstring/tests/mb_strripos_basic.phpt b/ext/mbstring/tests/mb_strripos_basic.phpt
index ce538ec0af..685314d58d 100644
--- a/ext/mbstring/tests/mb_strripos_basic.phpt
+++ b/ext/mbstring/tests/mb_strripos_basic.phpt
@@ -97,7 +97,7 @@ foreach ($greek_needles as $needle) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strripos() : basic functionality***
-- ASCII Strings, needle should be found --
diff --git a/ext/mbstring/tests/mb_strripos_basic2.phpt b/ext/mbstring/tests/mb_strripos_basic2.phpt
index c4d7f0d338..f225524973 100644
--- a/ext/mbstring/tests/mb_strripos_basic2.phpt
+++ b/ext/mbstring/tests/mb_strripos_basic2.phpt
@@ -71,7 +71,7 @@ foreach ($greek_needles as $needle) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strripos() : basic functionality***
-- ASCII Strings --
diff --git a/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt b/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt
index 4023f83480..ed0707e6bb 100644
--- a/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt
+++ b/ext/mbstring/tests/mb_strripos_variation3_Bug45923.phpt
@@ -165,32 +165,32 @@ int(8)
-- Iteration 16 --
-Warning: mb_strripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 17 --
-Warning: mb_strripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 18 --
-Warning: mb_strripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 19 --
-Warning: mb_strripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 20 --
-Warning: mb_strripos() expects parameter 3 to be integer, string given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, string given in %s on line %d
NULL
-- Iteration 21 --
-Warning: mb_strripos() expects parameter 3 to be integer, object given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, object given in %s on line %d
NULL
-- Iteration 22 --
@@ -201,6 +201,6 @@ int(8)
-- Iteration 24 --
-Warning: mb_strripos() expects parameter 3 to be integer, resource given in %s on line %d
+Warning: mb_strripos() expects parameter 3 to be int, resource given in %s on line %d
NULL
Done
diff --git a/ext/mbstring/tests/mb_strrpos_basic.phpt b/ext/mbstring/tests/mb_strrpos_basic.phpt
index b86f24d98c..d9df624bea 100644
--- a/ext/mbstring/tests/mb_strrpos_basic.phpt
+++ b/ext/mbstring/tests/mb_strrpos_basic.phpt
@@ -40,7 +40,7 @@ var_dump(mb_strrpos($string_mb, $needle2));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strrpos() : basic ***
-- ASCII string 1 --
diff --git a/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt b/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt
new file mode 100644
index 0000000000..50b48d9941
--- /dev/null
+++ b/ext/mbstring/tests/mb_strrpos_encoding_3rd_param.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Passing encoding as 3rd param to mb_strrpos (legacy)
+--FILE--
+<?php
+
+mb_internal_encoding('UTF-16');
+var_dump(mb_strrpos("abc abc abc", "abc", "UTF-8"));
+
+?>
+--EXPECT--
+int(8)
diff --git a/ext/mbstring/tests/mb_strrpos_variation5.phpt b/ext/mbstring/tests/mb_strrpos_variation5.phpt
index 8470aa7c6b..4eb8c1f9be 100644
--- a/ext/mbstring/tests/mb_strrpos_variation5.phpt
+++ b/ext/mbstring/tests/mb_strrpos_variation5.phpt
@@ -38,7 +38,7 @@ foreach ($inputs as $type => $input) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strrpos() : usage variations ***
-- Double Quoted String --
diff --git a/ext/mbstring/tests/mb_strstr_variation3.phpt b/ext/mbstring/tests/mb_strstr_variation3.phpt
index 18d96e5ad0..462c993b74 100644
--- a/ext/mbstring/tests/mb_strstr_variation3.phpt
+++ b/ext/mbstring/tests/mb_strstr_variation3.phpt
@@ -161,19 +161,19 @@ string(12) "737472696e67"
string(12) "737472696e67"
--empty array--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--int indexed array--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--associative array--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--nested arrays--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, array given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, array given, %s(%d)
NULL
--uppercase NULL--
@@ -213,11 +213,11 @@ string(12) "737472696e67"
string(12) "737472696e67"
--instance of classWithToString--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--instance of classWithoutToString--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, object given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, object given, %s(%d)
NULL
--undefined var--
@@ -227,6 +227,6 @@ string(8) "5f76616c"
string(8) "5f76616c"
--resource--
-Error: 2 - mb_strstr() expects parameter 3 to be boolean, resource given, %s(%d)
+Error: 2 - mb_strstr() expects parameter 3 to be bool, resource given, %s(%d)
NULL
===DONE===
diff --git a/ext/mbstring/tests/mb_strtolower_basic.phpt b/ext/mbstring/tests/mb_strtolower_basic.phpt
index 6d9cba72fe..4f727094b1 100644
--- a/ext/mbstring/tests/mb_strtolower_basic.phpt
+++ b/ext/mbstring/tests/mb_strtolower_basic.phpt
@@ -45,7 +45,7 @@ if ($mb == $greek_lower) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strtolower() : basic functionality***
-- ASCII String --
diff --git a/ext/mbstring/tests/mb_strtolower_variation2.phpt b/ext/mbstring/tests/mb_strtolower_variation2.phpt
index 6c462ade6f..c9e2520232 100644
--- a/ext/mbstring/tests/mb_strtolower_variation2.phpt
+++ b/ext/mbstring/tests/mb_strtolower_variation2.phpt
@@ -157,14 +157,10 @@ Warning: mb_strtolower(): Unknown encoding "0.5" in %s on line %d
bool(false)
-- Iteration 10 --
-
-Warning: mb_strtolower(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "68656c6c6f2c20776f726c64"
-- Iteration 11 --
-
-Warning: mb_strtolower(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "68656c6c6f2c20776f726c64"
-- Iteration 12 --
@@ -209,14 +205,10 @@ string(24) "68656c6c6f2c20776f726c64"
string(24) "68656c6c6f2c20776f726c64"
-- Iteration 22 --
-
-Warning: mb_strtolower(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "68656c6c6f2c20776f726c64"
-- Iteration 23 --
-
-Warning: mb_strtolower(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "68656c6c6f2c20776f726c64"
-- Iteration 24 --
diff --git a/ext/mbstring/tests/mb_strtolower_variation3.phpt b/ext/mbstring/tests/mb_strtolower_variation3.phpt
index c03ce03d6e..bd0bd58c44 100644
--- a/ext/mbstring/tests/mb_strtolower_variation3.phpt
+++ b/ext/mbstring/tests/mb_strtolower_variation3.phpt
@@ -43,7 +43,7 @@ if ($b == $string_all_mb) { // Japanese characters only - should not be any conv
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strtolower() : usage variations ***
-- Mixed string (mulitbyte and ASCII characters) --
diff --git a/ext/mbstring/tests/mb_strtolower_variation4.phpt b/ext/mbstring/tests/mb_strtolower_variation4.phpt
index 9d4d8a34ef..17bd8c7fe2 100644
--- a/ext/mbstring/tests/mb_strtolower_variation4.phpt
+++ b/ext/mbstring/tests/mb_strtolower_variation4.phpt
@@ -38,7 +38,7 @@ foreach ($uppers as $lang => $sourcestring) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strtolower() : usage variations ***
-- Basic Latin --
diff --git a/ext/mbstring/tests/mb_strtoupper_variation2.phpt b/ext/mbstring/tests/mb_strtoupper_variation2.phpt
index 68ddd9a242..498f94fba4 100644
--- a/ext/mbstring/tests/mb_strtoupper_variation2.phpt
+++ b/ext/mbstring/tests/mb_strtoupper_variation2.phpt
@@ -157,14 +157,10 @@ Warning: mb_strtoupper(): Unknown encoding "0.5" in %s on line %d
bool(false)
-- Iteration 10 --
-
-Warning: mb_strtoupper(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "48454c4c4f2c20574f524c44"
-- Iteration 11 --
-
-Warning: mb_strtoupper(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "48454c4c4f2c20574f524c44"
-- Iteration 12 --
@@ -209,14 +205,10 @@ string(24) "48454c4c4f2c20574f524c44"
string(24) "48454c4c4f2c20574f524c44"
-- Iteration 22 --
-
-Warning: mb_strtoupper(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "48454c4c4f2c20574f524c44"
-- Iteration 23 --
-
-Warning: mb_strtoupper(): Unknown encoding "(null)" in %s on line %d
-bool(false)
+string(24) "48454c4c4f2c20574f524c44"
-- Iteration 24 --
diff --git a/ext/mbstring/tests/mb_strtoupper_variation3.phpt b/ext/mbstring/tests/mb_strtoupper_variation3.phpt
index ff9f018072..3a40cb9bf3 100644
--- a/ext/mbstring/tests/mb_strtoupper_variation3.phpt
+++ b/ext/mbstring/tests/mb_strtoupper_variation3.phpt
@@ -44,7 +44,7 @@ if ($b == $string_all_mb) { // Japanese characters only - should not be any conv
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strtoupper() : usage variations ***
-- Mixed string (mulitbyte and ASCII characters) --
diff --git a/ext/mbstring/tests/mb_strtoupper_variation4.phpt b/ext/mbstring/tests/mb_strtoupper_variation4.phpt
index fb49540eea..7b126e671b 100644
--- a/ext/mbstring/tests/mb_strtoupper_variation4.phpt
+++ b/ext/mbstring/tests/mb_strtoupper_variation4.phpt
@@ -39,7 +39,7 @@ foreach ($lowers as $lang => $sourcestring) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_strtoupper() : usage variations ***
-- Basic Latin --
diff --git a/ext/mbstring/tests/mb_substr_basic.phpt b/ext/mbstring/tests/mb_substr_basic.phpt
index dc09fe381f..2edb91291f 100644
--- a/ext/mbstring/tests/mb_substr_basic.phpt
+++ b/ext/mbstring/tests/mb_substr_basic.phpt
@@ -40,7 +40,7 @@ var_dump(base64_encode($result_2));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_substr() : basic functionality ***
-- ASCII string 1 --
diff --git a/ext/mbstring/tests/mb_substr_count_basic.phpt b/ext/mbstring/tests/mb_substr_count_basic.phpt
index 31e3620f1c..1c2af8b3ff 100644
--- a/ext/mbstring/tests/mb_substr_count_basic.phpt
+++ b/ext/mbstring/tests/mb_substr_count_basic.phpt
@@ -34,7 +34,7 @@ var_dump(mb_substr_count($string_mb, $needle_mb2));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_substr_count() : basic functionality ***
-- ASCII String --
diff --git a/ext/mbstring/tests/mb_substr_count_variation4.phpt b/ext/mbstring/tests/mb_substr_count_variation4.phpt
index 010158cc88..29d1d6e22e 100644
--- a/ext/mbstring/tests/mb_substr_count_variation4.phpt
+++ b/ext/mbstring/tests/mb_substr_count_variation4.phpt
@@ -33,7 +33,7 @@ var_dump(mb_substr_count($string_mb, $needle_mb, 'utf-8'));
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_substr_count() : usage variations ***
-- ASCII String --
diff --git a/ext/mbstring/tests/mb_substr_variation3.phpt b/ext/mbstring/tests/mb_substr_variation3.phpt
index f0ba2bc0a2..702bdda147 100644
--- a/ext/mbstring/tests/mb_substr_variation3.phpt
+++ b/ext/mbstring/tests/mb_substr_variation3.phpt
@@ -104,7 +104,7 @@ foreach($encoding as $enc) {
echo "Done";
?>
---EXPECTF--
+--EXPECT--
*** Testing mb_substr() : usage variations ***
-- Iteration 1: UCS-4 --
diff --git a/ext/mbstring/tests/php_gr_jp_10830.phpt b/ext/mbstring/tests/php_gr_jp_10830.phpt
index 99ff6594ee..3b8cb79cd1 100644
--- a/ext/mbstring/tests/php_gr_jp_10830.phpt
+++ b/ext/mbstring/tests/php_gr_jp_10830.phpt
@@ -12,6 +12,6 @@ $a="aaa\n<>";
var_dump( mb_ereg("^[^><]+$",$a) );
var_dump( !!preg_match("/^[^><]+$/",$a) );
?>
---EXPECTF--
+--EXPECT--
bool(false)
bool(false)
diff --git a/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt b/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt
index 4978d0ce57..b6c97b324a 100644
--- a/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt
+++ b/ext/mbstring/tests/php_gr_jp_dev_884-1.phpt
@@ -11,6 +11,6 @@ set_time_limit(2);
var_dump(preg_replace("/.*/", "b", "a"));
var_dump(mb_ereg_replace(".*", "b", "a"));
?>
---EXPECTF--
+--EXPECT--
string(2) "bb"
string(2) "bb"
diff --git a/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt b/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt
index 2f74dff64b..7c4ebc9a4e 100644
--- a/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt
+++ b/ext/mbstring/tests/php_gr_jp_dev_884-2.phpt
@@ -12,7 +12,7 @@ var_dump(preg_replace("/C?$/", "Z", "ABC"));
var_dump(mb_ereg_replace("C*$", "Z", "ABC"));
var_dump(preg_replace("/C*$/", "Z", "ABC"));
?>
---EXPECTF--
+--EXPECT--
string(4) "ABZZ"
string(4) "ABZZ"
string(4) "ABZZ"
diff --git a/ext/mbstring/tests/zend_multibyte-01.phpt b/ext/mbstring/tests/zend_multibyte-01.phpt
index f2403abcac..5802cf2f21 100644
--- a/ext/mbstring/tests/zend_multibyte-01.phpt
+++ b/ext/mbstring/tests/zend_multibyte-01.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (1)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=Shift_JIS
diff --git a/ext/mbstring/tests/zend_multibyte-02.phpt b/ext/mbstring/tests/zend_multibyte-02.phpt
index 7db444841e..6008be5a11 100644
--- a/ext/mbstring/tests/zend_multibyte-02.phpt
+++ b/ext/mbstring/tests/zend_multibyte-02.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (2)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
error_reporting=E_ALL & ~E_DEPRECATED
zend.multibyte=On
@@ -9,5 +11,5 @@ mbstring.internal_encoding=CP932
<?php
var_dump(bin2hex("テスト"));
?>
---EXPECTF--
+--EXPECT--
string(12) "836583588367"
diff --git a/ext/mbstring/tests/zend_multibyte-03.phpt b/ext/mbstring/tests/zend_multibyte-03.phpt
index 99c58bce70..b7e13d46ed 100644
--- a/ext/mbstring/tests/zend_multibyte-03.phpt
+++ b/ext/mbstring/tests/zend_multibyte-03.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (3)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=UTF-8
diff --git a/ext/mbstring/tests/zend_multibyte-04.phpt b/ext/mbstring/tests/zend_multibyte-04.phpt
index e7fdf81cdd..5cb3af3472 100644
--- a/ext/mbstring/tests/zend_multibyte-04.phpt
+++ b/ext/mbstring/tests/zend_multibyte-04.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (4)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=CP932
diff --git a/ext/mbstring/tests/zend_multibyte-05.phpt b/ext/mbstring/tests/zend_multibyte-05.phpt
index 3dd56d043d..4d0c236b7a 100644
--- a/ext/mbstring/tests/zend_multibyte-05.phpt
+++ b/ext/mbstring/tests/zend_multibyte-05.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (5)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=EUC-JP
diff --git a/ext/mbstring/tests/zend_multibyte-06.phpt b/ext/mbstring/tests/zend_multibyte-06.phpt
index 7eeac1d353..c75c0b8cb2 100644
--- a/ext/mbstring/tests/zend_multibyte-06.phpt
+++ b/ext/mbstring/tests/zend_multibyte-06.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (6)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=EUC-JP
@@ -9,5 +11,5 @@ mbstring.internal_encoding=CP932
declare(encoding="UTF-8");
var_dump(bin2hex("テスト"));
?>
---EXPECTF--
+--EXPECT--
string(12) "836583588367"
diff --git a/ext/mbstring/tests/zend_multibyte-07.phpt b/ext/mbstring/tests/zend_multibyte-07.phpt
index 685c6f1f04..b81104ca3e 100644
--- a/ext/mbstring/tests/zend_multibyte-07.phpt
+++ b/ext/mbstring/tests/zend_multibyte-07.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (7)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
error_reporting=E_ALL & ~E_DEPRECATED
zend.multibyte=On
diff --git a/ext/mbstring/tests/zend_multibyte-08.phpt b/ext/mbstring/tests/zend_multibyte-08.phpt
index 9e5b75eadd..1030dfdc91 100644
--- a/ext/mbstring/tests/zend_multibyte-08.phpt
+++ b/ext/mbstring/tests/zend_multibyte-08.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (8)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=ISO-8859-1
diff --git a/ext/mbstring/tests/zend_multibyte-09.phpt b/ext/mbstring/tests/zend_multibyte-09.phpt
index f9b8bf734f..17d5840e47 100644
--- a/ext/mbstring/tests/zend_multibyte-09.phpt
+++ b/ext/mbstring/tests/zend_multibyte-09.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (9)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
error_reporting=E_ALL & ~E_DEPRECATED
zend.multibyte=On
diff --git a/ext/mbstring/tests/zend_multibyte-10.phpt b/ext/mbstring/tests/zend_multibyte-10.phpt
index 138b4899fe..498170e747 100644
--- a/ext/mbstring/tests/zend_multibyte-10.phpt
+++ b/ext/mbstring/tests/zend_multibyte-10.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (10)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=1
--FILE--
@@ -8,5 +10,5 @@ declare(encoding="ISO-8859-15");
declare(encoding="ISO-8859-1");
echo "ok\n";
?>
---EXPECTF--
+--EXPECT--
ok
diff --git a/ext/mbstring/tests/zend_multibyte-11.phpt b/ext/mbstring/tests/zend_multibyte-11.phpt
index ca86951d1a..c5e02eeae3 100644
--- a/ext/mbstring/tests/zend_multibyte-11.phpt
+++ b/ext/mbstring/tests/zend_multibyte-11.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (11)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=1
--FILE--
diff --git a/ext/mbstring/tests/zend_multibyte-12.phpt b/ext/mbstring/tests/zend_multibyte-12.phpt
index bbfa25d97f..844e3bc499 100644
--- a/ext/mbstring/tests/zend_multibyte-12.phpt
+++ b/ext/mbstring/tests/zend_multibyte-12.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (12)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=1
--FILE--
diff --git a/ext/mbstring/tests/zend_multibyte-13.phpt b/ext/mbstring/tests/zend_multibyte-13.phpt
index 6eaef985f5..f3a18fe481 100644
--- a/ext/mbstring/tests/zend_multibyte-13.phpt
+++ b/ext/mbstring/tests/zend_multibyte-13.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (13)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=UTF-8
diff --git a/ext/mbstring/tests/zend_multibyte-14.phpt b/ext/mbstring/tests/zend_multibyte-14.phpt
index 98c2f87e25..36c7c5355c 100644
--- a/ext/mbstring/tests/zend_multibyte-14.phpt
+++ b/ext/mbstring/tests/zend_multibyte-14.phpt
@@ -1,6 +1,7 @@
--TEST--
zend multibyte (14)
--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=On
zend.script_encoding=UTF-8
diff --git a/ext/mbstring/tests/zend_multibyte-15.phpt b/ext/mbstring/tests/zend_multibyte-15.phpt
index 3a9339ffb8..b24ed25fb2 100644
--- a/ext/mbstring/tests/zend_multibyte-15.phpt
+++ b/ext/mbstring/tests/zend_multibyte-15.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (15)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=1
--FILE--
@@ -11,6 +13,6 @@ declare(encoding="UTF-8") {
echo "ok\n";
}
?>
---EXPECTF--
+--EXPECT--
ok
ok
diff --git a/ext/mbstring/tests/zend_multibyte-16.phpt b/ext/mbstring/tests/zend_multibyte-16.phpt
index f5d89c4357..a9b0920184 100644
--- a/ext/mbstring/tests/zend_multibyte-16.phpt
+++ b/ext/mbstring/tests/zend_multibyte-16.phpt
@@ -1,5 +1,7 @@
--TEST--
zend multibyte (16)
+--SKIPIF--
+<?php require 'skipif.inc'; ?>
--INI--
zend.multibyte=1
--FILE--
@@ -9,6 +11,6 @@ declare(encoding="ISO-8859-15") {
}
echo "ok\n";
?>
---EXPECTF--
+--EXPECT--
ok
ok
diff --git a/ext/mbstring/ucgendat/README b/ext/mbstring/ucgendat/README
index c100231e4a..39fd7b2f6b 100644
--- a/ext/mbstring/ucgendat/README
+++ b/ext/mbstring/ucgendat/README
@@ -3,4 +3,4 @@ This file is not necessary to build PHP.
It's only necessary to rebuild unicode_data.h from Unicode ucd files.
Example usage:
-./ucgendat UnicodeData-6.0.0d7.txt -x CompositionExclusions-6.0.0d2.txt
+php ucgendat.php UnicodeData.txt
diff --git a/ext/mbstring/ucgendat/ucgendat.c b/ext/mbstring/ucgendat/ucgendat.c
deleted file mode 100644
index c0d9b432ba..0000000000
--- a/ext/mbstring/ucgendat/ucgendat.c
+++ /dev/null
@@ -1,1999 +0,0 @@
-/* Further modified for PHP */
-/* $Id$ */
-
-/* $OpenLDAP: pkg/ldap/libraries/liblunicode/ucdata/ucgendat.c,v 1.36.2.4 2007/01/02 21:43:51 kurt Exp $ */
-/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
- *
- * Copyright 1998-2007 The OpenLDAP Foundation.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted only as authorized by the OpenLDAP
- * Public License.
- *
- * A copy of this license is available at
- * <http://www.OpenLDAP.org/license.html>.
- */
-
-/* Copyright 2001 Computing Research Labs, New Mexico State University
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
- * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-/* orig Id: ucgendat.c,v 1.4 2001/01/02 18:46:20 mleisher Exp $" */
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#define ac_uint2 unsigned short
-#define ac_uint4 unsigned int
-#define LDAP_DIRSEP "/"
-#define AC_MEMCPY memcpy
-
-#ifndef HARDCODE_DATA
-#define HARDCODE_DATA 1
-#endif
-
-#undef ishdigit
-#define ishdigit(cc) (((cc) >= '0' && (cc) <= '9') ||\
- ((cc) >= 'A' && (cc) <= 'F') ||\
- ((cc) >= 'a' && (cc) <= 'f'))
-
-/*
- * A header written to the output file with the byte-order-mark and the number
- * of property nodes.
- */
-static ac_uint2 hdr[2] = {0xfeff, 0};
-
-#define NUMPROPS 50
-#define NEEDPROPS (NUMPROPS + (4 - (NUMPROPS & 3)))
-
-typedef struct {
- char *name;
- int len;
-} _prop_t;
-
-/*
- * List of properties expected to be found in the Unicode Character Database
- * including some implementation specific properties.
- *
- * The implementation specific properties are:
- * Cm = Composed (can be decomposed)
- * Nb = Non-breaking
- * Sy = Symmetric (has left and right forms)
- * Hd = Hex digit
- * Qm = Quote marks
- * Mr = Mirroring
- * Ss = Space, other
- * Cp = Defined character
- */
-static _prop_t props[NUMPROPS] = {
- {"Mn", 2}, {"Mc", 2}, {"Me", 2}, {"Nd", 2}, {"Nl", 2}, {"No", 2},
- {"Zs", 2}, {"Zl", 2}, {"Zp", 2}, {"Cc", 2}, {"Cf", 2}, {"Cs", 2},
- {"Co", 2}, {"Cn", 2}, {"Lu", 2}, {"Ll", 2}, {"Lt", 2}, {"Lm", 2},
- {"Lo", 2}, {"Pc", 2}, {"Pd", 2}, {"Ps", 2}, {"Pe", 2}, {"Po", 2},
- {"Sm", 2}, {"Sc", 2}, {"Sk", 2}, {"So", 2}, {"L", 1}, {"R", 1},
- {"EN", 2}, {"ES", 2}, {"ET", 2}, {"AN", 2}, {"CS", 2}, {"B", 1},
- {"S", 1}, {"WS", 2}, {"ON", 2},
- {"Cm", 2}, {"Nb", 2}, {"Sy", 2}, {"Hd", 2}, {"Qm", 2}, {"Mr", 2},
- {"Ss", 2}, {"Cp", 2}, {"Pi", 2}, {"Pf", 2}, {"AL", 2}
-};
-
-typedef struct {
- ac_uint4 *ranges;
- ac_uint2 used;
- ac_uint2 size;
-} _ranges_t;
-
-static _ranges_t proptbl[NUMPROPS];
-
-/*
- * Make sure this array is sized to be on a 4-byte boundary at compile time.
- */
-static ac_uint2 propcnt[NEEDPROPS];
-
-/*
- * Array used to collect a decomposition before adding it to the decomposition
- * table.
- */
-static ac_uint4 dectmp[64];
-static ac_uint4 dectmp_size;
-
-typedef struct {
- ac_uint4 code;
- ac_uint2 size;
- ac_uint2 used;
- ac_uint4 *decomp;
-} _decomp_t;
-
-/*
- * List of decomposition. Created and expanded in order as the characters are
- * encountered. First list contains canonical mappings, second also includes
- * compatibility mappings.
- */
-static _decomp_t *decomps;
-static ac_uint4 decomps_used;
-static ac_uint4 decomps_size;
-
-static _decomp_t *kdecomps;
-static ac_uint4 kdecomps_used;
-static ac_uint4 kdecomps_size;
-
-/*
- * Composition exclusion table stuff.
- */
-#define COMPEX_SET(c) (compexs[(c) >> 5] |= (1 << ((c) & 31)))
-#define COMPEX_TEST(c) (compexs[(c) >> 5] & (1 << ((c) & 31)))
-static ac_uint4 compexs[8192];
-
-/*
- * Struct for holding a composition pair, and array of composition pairs
- */
-typedef struct {
- ac_uint4 comp;
- ac_uint4 count;
- ac_uint4 code1;
- ac_uint4 code2;
-} _comp_t;
-
-#if 0
-static _comp_t *comps;
-#endif
-static ac_uint4 comps_used;
-
-/*
- * Types and lists for handling lists of case mappings.
- */
-typedef struct {
- ac_uint4 key;
- ac_uint4 other1;
- ac_uint4 other2;
-} _case_t;
-
-static _case_t *upper;
-static _case_t *lower;
-static _case_t *title;
-static ac_uint4 upper_used;
-static ac_uint4 upper_size;
-static ac_uint4 lower_used;
-static ac_uint4 lower_size;
-static ac_uint4 title_used;
-static ac_uint4 title_size;
-
-/*
- * Array used to collect case mappings before adding them to a list.
- */
-static ac_uint4 cases[3];
-
-/*
- * An array to hold ranges for combining classes.
- */
-static ac_uint4 *ccl;
-static ac_uint4 ccl_used;
-static ac_uint4 ccl_size;
-
-/*
- * Structures for handling numbers.
- */
-typedef struct {
- ac_uint4 code;
- ac_uint4 idx;
-} _codeidx_t;
-
-typedef struct {
- short numerator;
- short denominator;
-} _num_t;
-
-/*
- * Arrays to hold the mapping of codes to numbers.
- */
-static _codeidx_t *ncodes;
-static ac_uint4 ncodes_used;
-static ac_uint4 ncodes_size;
-
-static _num_t *nums;
-static ac_uint4 nums_used;
-static ac_uint4 nums_size;
-
-/*
- * Array for holding numbers.
- */
-static _num_t *nums;
-static ac_uint4 nums_used;
-static ac_uint4 nums_size;
-
-static void
-add_range(ac_uint4 start, ac_uint4 end, char *p1, char *p2)
-{
- int i, j, k, len;
- _ranges_t *rlp;
- char *name;
-
- for (k = 0; k < 2; k++) {
- if (k == 0) {
- name = p1;
- len = 2;
- } else {
- if (p2 == 0)
- break;
-
- name = p2;
- len = 1;
- }
-
- for (i = 0; i < NUMPROPS; i++) {
- if (props[i].len == len && memcmp(props[i].name, name, len) == 0)
- break;
- }
-
- if (i == NUMPROPS)
- continue;
-
- rlp = &proptbl[i];
-
- /*
- * Resize the range list if necessary.
- */
- if (rlp->used == rlp->size) {
- if (rlp->size == 0)
- rlp->ranges = (ac_uint4 *)
- malloc(sizeof(ac_uint4) << 3);
- else
- rlp->ranges = (ac_uint4 *)
- realloc((char *) rlp->ranges,
- sizeof(ac_uint4) * (rlp->size + 8));
- rlp->size += 8;
- }
-
- /*
- * If this is the first code for this property list, just add it
- * and return.
- */
- if (rlp->used == 0) {
- rlp->ranges[0] = start;
- rlp->ranges[1] = end;
- rlp->used += 2;
- continue;
- }
-
- /*
- * Optimize the case of adding the range to the end.
- */
- j = rlp->used - 1;
- if (start > rlp->ranges[j]) {
- j = rlp->used;
- rlp->ranges[j++] = start;
- rlp->ranges[j++] = end;
- rlp->used = j;
- continue;
- }
-
- /*
- * Need to locate the insertion point.
- */
- for (i = 0;
- i < rlp->used && start > rlp->ranges[i + 1] + 1; i += 2) ;
-
- /*
- * If the start value lies in the current range, then simply set the
- * new end point of the range to the end value passed as a parameter.
- */
- if (rlp->ranges[i] <= start && start <= rlp->ranges[i + 1] + 1) {
- rlp->ranges[i + 1] = end;
- return;
- }
-
- /*
- * Shift following values up by two.
- */
- for (j = rlp->used; j > i; j -= 2) {
- rlp->ranges[j] = rlp->ranges[j - 2];
- rlp->ranges[j + 1] = rlp->ranges[j - 1];
- }
-
- /*
- * Add the new range at the insertion point.
- */
- rlp->ranges[i] = start;
- rlp->ranges[i + 1] = end;
- rlp->used += 2;
- }
-}
-
-static void
-ordered_range_insert(ac_uint4 c, char *name, int len)
-{
- int i, j;
- ac_uint4 s, e;
- _ranges_t *rlp;
-
- if (len == 0)
- return;
-
- /*
- * Deal with directionality codes introduced in Unicode 3.0.
- */
- if ((len == 2 && memcmp(name, "BN", 2) == 0) ||
- (len == 3 &&
- (memcmp(name, "NSM", 3) == 0 || memcmp(name, "PDF", 3) == 0 ||
- memcmp(name, "LRE", 3) == 0 || memcmp(name, "LRO", 3) == 0 ||
- memcmp(name, "RLE", 3) == 0 || memcmp(name, "RLO", 3) == 0 ||
- memcmp(name, "LRI", 3) == 0 || memcmp(name, "RLI", 3) == 0 ||
- memcmp(name, "FSI", 3) == 0 || memcmp(name, "PDI", 3) == 0))) {
- /*
- * Mark all of these as Other Neutral to preserve compatibility with
- * older versions.
- */
- len = 2;
- name = "ON";
- }
-
- for (i = 0; i < NUMPROPS; i++) {
- if (props[i].len == len && memcmp(props[i].name, name, len) == 0)
- break;
- }
-
- if (i == NUMPROPS) {
- printf("Unknown property %s\n", name);
- return;
- }
-
- /*
- * Have a match, so insert the code in order.
- */
- rlp = &proptbl[i];
-
- /*
- * Resize the range list if necessary.
- */
- if (rlp->used == rlp->size) {
- if (rlp->size == 0)
- rlp->ranges = (ac_uint4 *)
- malloc(sizeof(ac_uint4) << 3);
- else
- rlp->ranges = (ac_uint4 *)
- realloc((char *) rlp->ranges,
- sizeof(ac_uint4) * (rlp->size + 8));
- rlp->size += 8;
- }
-
- /*
- * If this is the first code for this property list, just add it
- * and return.
- */
- if (rlp->used == 0) {
- rlp->ranges[0] = rlp->ranges[1] = c;
- rlp->used += 2;
- return;
- }
-
- /*
- * Optimize the cases of extending the last range and adding new ranges to
- * the end.
- */
- j = rlp->used - 1;
- e = rlp->ranges[j];
- s = rlp->ranges[j - 1];
-
- if (c == e + 1) {
- /*
- * Extend the last range.
- */
- rlp->ranges[j] = c;
- return;
- }
-
- if (c > e + 1) {
- /*
- * Start another range on the end.
- */
- j = rlp->used;
- rlp->ranges[j] = rlp->ranges[j + 1] = c;
- rlp->used += 2;
- return;
- }
-
- if (c >= s)
- /*
- * The code is a duplicate of a code in the last range, so just return.
- */
- return;
-
- /*
- * The code should be inserted somewhere before the last range in the
- * list. Locate the insertion point.
- */
- for (i = 0;
- i < rlp->used && c > rlp->ranges[i + 1] + 1; i += 2) ;
-
- s = rlp->ranges[i];
- e = rlp->ranges[i + 1];
-
- if (c == e + 1)
- /*
- * Simply extend the current range.
- */
- rlp->ranges[i + 1] = c;
- else if (c < s) {
- /*
- * Add a new entry before the current location. Shift all entries
- * before the current one up by one to make room.
- */
- for (j = rlp->used; j > i; j -= 2) {
- rlp->ranges[j] = rlp->ranges[j - 2];
- rlp->ranges[j + 1] = rlp->ranges[j - 1];
- }
- rlp->ranges[i] = rlp->ranges[i + 1] = c;
-
- rlp->used += 2;
- }
-}
-
-static void
-add_decomp(ac_uint4 code, short compat)
-{
- ac_uint4 i, j, size;
- _decomp_t **pdecomps;
- ac_uint4 *pdecomps_used;
- ac_uint4 *pdecomps_size;
-
- if (compat) {
- pdecomps = &kdecomps;
- pdecomps_used = &kdecomps_used;
- pdecomps_size = &kdecomps_size;
- } else {
- pdecomps = &decomps;
- pdecomps_used = &decomps_used;
- pdecomps_size = &decomps_size;
- }
-
- /*
- * Add the code to the composite property.
- */
- if (!compat) {
- ordered_range_insert(code, "Cm", 2);
- }
-
- /*
- * Locate the insertion point for the code.
- */
- for (i = 0; i < *pdecomps_used && code > (*pdecomps)[i].code; i++) ;
-
- /*
- * Allocate space for a new decomposition.
- */
- if (*pdecomps_used == *pdecomps_size) {
- if (*pdecomps_size == 0)
- *pdecomps = (_decomp_t *) malloc(sizeof(_decomp_t) << 3);
- else
- *pdecomps = (_decomp_t *)
- realloc((char *) *pdecomps,
- sizeof(_decomp_t) * (*pdecomps_size + 8));
- (void) memset((char *) (*pdecomps + *pdecomps_size), '\0',
- sizeof(_decomp_t) << 3);
- *pdecomps_size += 8;
- }
-
- if (i < *pdecomps_used && code != (*pdecomps)[i].code) {
- /*
- * Shift the decomps up by one if the codes don't match.
- */
- for (j = *pdecomps_used; j > i; j--)
- (void) AC_MEMCPY((char *) &(*pdecomps)[j], (char *) &(*pdecomps)[j - 1],
- sizeof(_decomp_t));
- }
-
- /*
- * Insert or replace a decomposition.
- */
- size = dectmp_size + (4 - (dectmp_size & 3));
- if ((*pdecomps)[i].size < size) {
- if ((*pdecomps)[i].size == 0)
- (*pdecomps)[i].decomp = (ac_uint4 *)
- malloc(sizeof(ac_uint4) * size);
- else
- (*pdecomps)[i].decomp = (ac_uint4 *)
- realloc((char *) (*pdecomps)[i].decomp,
- sizeof(ac_uint4) * size);
- (*pdecomps)[i].size = size;
- }
-
- if ((*pdecomps)[i].code != code)
- (*pdecomps_used)++;
-
- (*pdecomps)[i].code = code;
- (*pdecomps)[i].used = dectmp_size;
- (void) AC_MEMCPY((char *) (*pdecomps)[i].decomp, (char *) dectmp,
- sizeof(ac_uint4) * dectmp_size);
-
- /*
- * NOTICE: This needs changing later so it is more general than simply
- * pairs. This calculation is done here to simplify allocation elsewhere.
- */
- if (!compat && dectmp_size == 2)
- comps_used++;
-}
-
-static void
-add_title(ac_uint4 code)
-{
- ac_uint4 i, j;
-
- /*
- * Always map the code to itself.
- */
- cases[2] = code;
-
- /* If lower/upper case does not exist, stay the same */
- if (!cases[0]) cases[0] = code;
- if (!cases[1]) cases[1] = code;
-
- if (title_used == title_size) {
- if (title_size == 0)
- title = (_case_t *) malloc(sizeof(_case_t) << 3);
- else
- title = (_case_t *) realloc((char *) title,
- sizeof(_case_t) * (title_size + 8));
- title_size += 8;
- }
-
- /*
- * Locate the insertion point.
- */
- for (i = 0; i < title_used && code > title[i].key; i++) ;
-
- if (i < title_used) {
- /*
- * Shift the array up by one.
- */
- for (j = title_used; j > i; j--)
- (void) AC_MEMCPY((char *) &title[j], (char *) &title[j - 1],
- sizeof(_case_t));
- }
-
- title[i].key = cases[2]; /* Title */
- title[i].other1 = cases[0]; /* Upper */
- title[i].other2 = cases[1]; /* Lower */
-
- title_used++;
-}
-
-static void
-add_upper(ac_uint4 code)
-{
- ac_uint4 i, j;
-
- /*
- * Always map the code to itself.
- */
- cases[0] = code;
-
- /*
- * If the title case character is not present, then make it the same as
- * the upper case.
- */
- if (cases[2] == 0)
- cases[2] = code;
-
- if (upper_used == upper_size) {
- if (upper_size == 0)
- upper = (_case_t *) malloc(sizeof(_case_t) << 3);
- else
- upper = (_case_t *) realloc((char *) upper,
- sizeof(_case_t) * (upper_size + 8));
- upper_size += 8;
- }
-
- /*
- * Locate the insertion point.
- */
- for (i = 0; i < upper_used && code > upper[i].key; i++) ;
-
- if (i < upper_used) {
- /*
- * Shift the array up by one.
- */
- for (j = upper_used; j > i; j--)
- (void) AC_MEMCPY((char *) &upper[j], (char *) &upper[j - 1],
- sizeof(_case_t));
- }
-
- upper[i].key = cases[0]; /* Upper */
- upper[i].other1 = cases[1]; /* Lower */
- upper[i].other2 = cases[2]; /* Title */
-
- upper_used++;
-}
-
-static void
-add_lower(ac_uint4 code)
-{
- ac_uint4 i, j;
-
- /*
- * Always map the code to itself.
- */
- cases[1] = code;
-
- /*
- * If the title case character is empty, then make it the same as the
- * upper case.
- */
- if (cases[2] == 0)
- cases[2] = cases[0];
-
- if (lower_used == lower_size) {
- if (lower_size == 0)
- lower = (_case_t *) malloc(sizeof(_case_t) << 3);
- else
- lower = (_case_t *) realloc((char *) lower,
- sizeof(_case_t) * (lower_size + 8));
- lower_size += 8;
- }
-
- /*
- * Locate the insertion point.
- */
- for (i = 0; i < lower_used && code > lower[i].key; i++) ;
-
- if (i < lower_used) {
- /*
- * Shift the array up by one.
- */
- for (j = lower_used; j > i; j--)
- (void) AC_MEMCPY((char *) &lower[j], (char *) &lower[j - 1],
- sizeof(_case_t));
- }
-
- lower[i].key = cases[1]; /* Lower */
- lower[i].other1 = cases[0]; /* Upper */
- lower[i].other2 = cases[2]; /* Title */
-
- lower_used++;
-}
-
-static void
-ordered_ccl_insert(ac_uint4 c, ac_uint4 ccl_code)
-{
- ac_uint4 i, j;
-
- if (ccl_used == ccl_size) {
- if (ccl_size == 0)
- ccl = (ac_uint4 *) malloc(sizeof(ac_uint4) * 24);
- else
- ccl = (ac_uint4 *)
- realloc((char *) ccl, sizeof(ac_uint4) * (ccl_size + 24));
- ccl_size += 24;
- }
-
- /*
- * Optimize adding the first item.
- */
- if (ccl_used == 0) {
- ccl[0] = ccl[1] = c;
- ccl[2] = ccl_code;
- ccl_used += 3;
- return;
- }
-
- /*
- * Handle the special case of extending the range on the end. This
- * requires that the combining class codes are the same.
- */
- if (ccl_code == ccl[ccl_used - 1] && c == ccl[ccl_used - 2] + 1) {
- ccl[ccl_used - 2] = c;
- return;
- }
-
- /*
- * Handle the special case of adding another range on the end.
- */
- if (c > ccl[ccl_used - 2] + 1 ||
- (c == ccl[ccl_used - 2] + 1 && ccl_code != ccl[ccl_used - 1])) {
- ccl[ccl_used++] = c;
- ccl[ccl_used++] = c;
- ccl[ccl_used++] = ccl_code;
- return;
- }
-
- /*
- * Locate either the insertion point or range for the code.
- */
- for (i = 0; i < ccl_used && c > ccl[i + 1] + 1; i += 3) ;
-
- if (ccl_code == ccl[i + 2] && c == ccl[i + 1] + 1) {
- /*
- * Extend an existing range.
- */
- ccl[i + 1] = c;
- return;
- } else if (c < ccl[i]) {
- /*
- * Start a new range before the current location.
- */
- for (j = ccl_used; j > i; j -= 3) {
- ccl[j] = ccl[j - 3];
- ccl[j - 1] = ccl[j - 4];
- ccl[j - 2] = ccl[j - 5];
- }
- ccl[i] = ccl[i + 1] = c;
- ccl[i + 2] = ccl_code;
- }
-}
-
-/*
- * Adds a number if it does not already exist and returns an index value
- * multiplied by 2.
- */
-static ac_uint4
-make_number(short num, short denom)
-{
- ac_uint4 n;
-
- /*
- * Determine if the number already exists.
- */
- for (n = 0; n < nums_used; n++) {
- if (nums[n].numerator == num && nums[n].denominator == denom)
- return n << 1;
- }
-
- if (nums_used == nums_size) {
- if (nums_size == 0)
- nums = (_num_t *) malloc(sizeof(_num_t) << 3);
- else
- nums = (_num_t *) realloc((char *) nums,
- sizeof(_num_t) * (nums_size + 8));
- nums_size += 8;
- }
-
- n = nums_used++;
- nums[n].numerator = num;
- nums[n].denominator = denom;
-
- return n << 1;
-}
-
-static void
-add_number(ac_uint4 code, short num, short denom)
-{
- ac_uint4 i, j;
-
- /*
- * Insert the code in order.
- */
- for (i = 0; i < ncodes_used && code > ncodes[i].code; i++) ;
-
- /*
- * Handle the case of the codes matching and simply replace the number
- * that was there before.
- */
- if (i < ncodes_used && code == ncodes[i].code) {
- ncodes[i].idx = make_number(num, denom);
- return;
- }
-
- /*
- * Resize the array if necessary.
- */
- if (ncodes_used == ncodes_size) {
- if (ncodes_size == 0)
- ncodes = (_codeidx_t *) malloc(sizeof(_codeidx_t) << 3);
- else
- ncodes = (_codeidx_t *)
- realloc((char *) ncodes, sizeof(_codeidx_t) * (ncodes_size + 8));
-
- ncodes_size += 8;
- }
-
- /*
- * Shift things around to insert the code if necessary.
- */
- if (i < ncodes_used) {
- for (j = ncodes_used; j > i; j--) {
- ncodes[j].code = ncodes[j - 1].code;
- ncodes[j].idx = ncodes[j - 1].idx;
- }
- }
- ncodes[i].code = code;
- ncodes[i].idx = make_number(num, denom);
-
- ncodes_used++;
-}
-
-/*
- * This routine assumes that the line is a valid Unicode Character Database
- * entry.
- */
-static void
-read_cdata(FILE *in)
-{
- ac_uint4 i, lineno, skip, code, ccl_code;
- short wnum, neg, number[2], compat;
- char line[512], *s, *e;
-
- lineno = skip = 0;
- while (fgets(line, sizeof(line), in)) {
- int is_title = 0;
-
- if( (s=strchr(line, '\n')) ) *s = '\0';
- lineno++;
-
- /*
- * Skip blank lines and lines that start with a '#'.
- */
- if (line[0] == 0 || line[0] == '#')
- continue;
-
- /*
- * If lines need to be skipped, do it here.
- */
- if (skip) {
- skip--;
- continue;
- }
-
- /*
- * Collect the code. The code can be up to 6 hex digits in length to
- * allow surrogates to be specified.
- */
- for (s = line, i = code = 0; *s != ';' && i < 6; i++, s++) {
- code <<= 4;
- if (*s >= '0' && *s <= '9')
- code += *s - '0';
- else if (*s >= 'A' && *s <= 'F')
- code += (*s - 'A') + 10;
- else if (*s >= 'a' && *s <= 'f')
- code += (*s - 'a') + 10;
- }
-
- /*
- * Handle the following special cases:
- * 1. 4E00-9FA5 CJK Ideographs.
- * 2. AC00-D7A3 Hangul Syllables.
- * 3. D800-DFFF Surrogates.
- * 4. E000-F8FF Private Use Area.
- * 5. F900-FA2D Han compatibility.
- * ...Plus additional ranges in newer Unicode versions...
- */
- switch (code) {
- case 0x3400:
- /* CJK Ideograph Extension A */
- add_range(0x3400, 0x4db5, "Lo", "L");
-
- add_range(0x3400, 0x4db5, "Cp", 0);
-
- skip = 1;
- break;
- case 0x4e00:
- /*
- * The Han ideographs.
- */
- add_range(0x4e00, 0x9fff, "Lo", "L");
-
- /*
- * Add the characters to the defined category.
- */
- add_range(0x4e00, 0x9fa5, "Cp", 0);
-
- skip = 1;
- break;
- case 0xac00:
- /*
- * The Hangul syllables.
- */
- add_range(0xac00, 0xd7a3, "Lo", "L");
-
- /*
- * Add the characters to the defined category.
- */
- add_range(0xac00, 0xd7a3, "Cp", 0);
-
- skip = 1;
- break;
- case 0xd800:
- /*
- * Make a range of all surrogates and assume some default
- * properties.
- */
- add_range(0x010000, 0x10ffff, "Cs", "L");
- skip = 5;
- break;
- case 0xe000:
- /*
- * The Private Use area. Add with a default set of properties.
- */
- add_range(0xe000, 0xf8ff, "Co", "L");
- skip = 1;
- break;
- case 0xf900:
- /*
- * The CJK compatibility area.
- */
- add_range(0xf900, 0xfaff, "Lo", "L");
-
- /*
- * Add the characters to the defined category.
- */
- add_range(0xf900, 0xfaff, "Cp", 0);
-
- skip = 1;
- break;
- case 0x20000:
- /* CJK Ideograph Extension B */
- add_range(0x20000, 0x2a6d6, "Lo", "L");
-
- add_range(0x20000, 0x2a6d6, "Cp", 0);
-
- skip = 1;
- break;
- case 0xf0000:
- /* Plane 15 private use */
- add_range(0xf0000, 0xffffd, "Co", "L");
- skip = 1;
- break;
-
- case 0x100000:
- /* Plane 16 private use */
- add_range(0x100000, 0x10fffd, "Co", "L");
- skip = 1;
- break;
- }
-
- if (skip)
- continue;
-
- /*
- * Add the code to the defined category.
- */
- ordered_range_insert(code, "Cp", 2);
-
- /*
- * Locate the first character property field.
- */
- for (i = 0; *s != 0 && i < 2; s++) {
- if (*s == ';')
- i++;
- }
- for (e = s; *e && *e != ';'; e++) ;
-
- ordered_range_insert(code, s, e - s);
-
- if (e - s == 2 && s[0] == 'L' && s[1] == 't') {
- is_title = 1;
- }
-
- /*
- * Locate the combining class code.
- */
- for (s = e; *s != 0 && i < 3; s++) {
- if (*s == ';')
- i++;
- }
-
- /*
- * Convert the combining class code from decimal.
- */
- for (ccl_code = 0, e = s; *e && *e != ';'; e++)
- ccl_code = (ccl_code * 10) + (*e - '0');
-
- /*
- * Add the code if it not 0.
- */
- if (ccl_code != 0)
- ordered_ccl_insert(code, ccl_code);
-
- /*
- * Locate the second character property field.
- */
- for (s = e; *s != 0 && i < 4; s++) {
- if (*s == ';')
- i++;
- }
- for (e = s; *e && *e != ';'; e++) ;
-
- ordered_range_insert(code, s, e - s);
-
- /*
- * Check for a decomposition.
- */
- s = ++e;
- if (*s != ';') {
- compat = *s == '<';
- if (compat) {
- /*
- * Skip compatibility formatting tag.
- */
- while (*s++ != '>');
- }
- /*
- * Collect the codes of the decomposition.
- */
- for (dectmp_size = 0; *s != ';'; ) {
- /*
- * Skip all leading non-hex digits.
- */
- while (!ishdigit(*s))
- s++;
-
- for (dectmp[dectmp_size] = 0; ishdigit(*s); s++) {
- dectmp[dectmp_size] <<= 4;
- if (*s >= '0' && *s <= '9')
- dectmp[dectmp_size] += *s - '0';
- else if (*s >= 'A' && *s <= 'F')
- dectmp[dectmp_size] += (*s - 'A') + 10;
- else if (*s >= 'a' && *s <= 'f')
- dectmp[dectmp_size] += (*s - 'a') + 10;
- }
- dectmp_size++;
- }
-
- /*
- * If there are any codes in the temporary decomposition array,
- * then add the character with its decomposition.
- */
- if (dectmp_size > 0) {
- if (!compat) {
- add_decomp(code, 0);
- }
- add_decomp(code, 1);
- }
- }
-
- /*
- * Skip to the number field.
- */
- for (i = 0; i < 3 && *s; s++) {
- if (*s == ';')
- i++;
- }
-
- /*
- * Scan the number in.
- */
- number[0] = number[1] = 0;
- for (e = s, neg = wnum = 0; *e && *e != ';'; e++) {
- if (*e == '-') {
- neg = 1;
- continue;
- }
-
- if (*e == '/') {
- /*
- * Move the denominator of the fraction.
- */
- if (neg)
- number[wnum] *= -1;
- neg = 0;
- e++;
- wnum++;
- }
- number[wnum] = (number[wnum] * 10) + (*e - '0');
- }
-
- if (e > s) {
- /*
- * Adjust the denominator in case of integers and add the number.
- */
- if (wnum == 0)
- number[1] = 1;
-
- add_number(code, number[0], number[1]);
- }
-
- /*
- * Skip to the start of the possible case mappings.
- */
- for (s = e, i = 0; i < 4 && *s; s++) {
- if (*s == ';')
- i++;
- }
-
- /*
- * Collect the case mappings.
- */
- cases[0] = cases[1] = cases[2] = 0;
- for (i = 0; i < 3; i++) {
- while (ishdigit(*s)) {
- cases[i] <<= 4;
- if (*s >= '0' && *s <= '9')
- cases[i] += *s - '0';
- else if (*s >= 'A' && *s <= 'F')
- cases[i] += (*s - 'A') + 10;
- else if (*s >= 'a' && *s <= 'f')
- cases[i] += (*s - 'a') + 10;
- s++;
- }
- if (*s == ';')
- s++;
- }
- if (is_title)
- /*
- * Add the upper and lower mappings for a title case character.
- */
- add_title(code);
- else if (cases[1])
- /*
- * Add the lower and title case mappings for the upper case
- * character.
- */
- add_upper(code);
- else if (cases[0])
- /*
- * Add the upper and title case mappings for the lower case
- * character.
- */
- add_lower(code);
- }
-}
-
-#if 0
-
-static _decomp_t *
-find_decomp(ac_uint4 code, short compat)
-{
- long l, r, m;
- _decomp_t *decs;
-
- l = 0;
- r = (compat ? kdecomps_used : decomps_used) - 1;
- decs = compat ? kdecomps : decomps;
- while (l <= r) {
- m = (l + r) >> 1;
- if (code > decs[m].code)
- l = m + 1;
- else if (code < decs[m].code)
- r = m - 1;
- else
- return &decs[m];
- }
- return 0;
-}
-
-static void
-decomp_it(_decomp_t *d, short compat)
-{
- ac_uint4 i;
- _decomp_t *dp;
-
- for (i = 0; i < d->used; i++) {
- if ((dp = find_decomp(d->decomp[i], compat)) != 0)
- decomp_it(dp, compat);
- else
- dectmp[dectmp_size++] = d->decomp[i];
- }
-}
-
-
-/*
- * Expand all decompositions by recursively decomposing each character
- * in the decomposition.
- */
-static void
-expand_decomp(void)
-{
- ac_uint4 i;
-
- for (i = 0; i < decomps_used; i++) {
- dectmp_size = 0;
- decomp_it(&decomps[i], 0);
- if (dectmp_size > 0)
- add_decomp(decomps[i].code, 0);
- }
-
- for (i = 0; i < kdecomps_used; i++) {
- dectmp_size = 0;
- decomp_it(&kdecomps[i], 1);
- if (dectmp_size > 0)
- add_decomp(kdecomps[i].code, 1);
- }
-}
-
-static int
-cmpcomps(const void *v_comp1, const void *v_comp2)
-{
- const _comp_t *comp1 = v_comp1, *comp2 = v_comp2;
- long diff = comp1->code1 - comp2->code1;
-
- if (!diff)
- diff = comp1->code2 - comp2->code2;
- return (int) diff;
-}
-
-#endif
-
-/*
- * Load composition exclusion data
- */
-static void
-read_compexdata(FILE *in)
-{
- ac_uint2 i;
- ac_uint4 code;
- char line[512], *s;
-
- (void) memset((char *) compexs, 0, sizeof(compexs));
-
- while (fgets(line, sizeof(line), in)) {
- if( (s=strchr(line, '\n')) ) *s = '\0';
- /*
- * Skip blank lines and lines that start with a '#'.
- */
- if (line[0] == 0 || line[0] == '#')
- continue;
-
- /*
- * Collect the code. Assume max 6 digits
- */
-
- for (s = line, i = code = 0; *s != '#' && i < 6; i++, s++) {
- if (isspace((unsigned char)*s)) break;
- code <<= 4;
- if (*s >= '0' && *s <= '9')
- code += *s - '0';
- else if (*s >= 'A' && *s <= 'F')
- code += (*s - 'A') + 10;
- else if (*s >= 'a' && *s <= 'f')
- code += (*s - 'a') + 10;
- }
- COMPEX_SET(code);
- }
-}
-
-#if 0
-
-/*
- * Creates array of compositions from decomposition array
- */
-static void
-create_comps(void)
-{
- ac_uint4 i, cu;
-
- comps = (_comp_t *) malloc(comps_used * sizeof(_comp_t));
-
- for (i = cu = 0; i < decomps_used; i++) {
- if (decomps[i].used != 2 || COMPEX_TEST(decomps[i].code))
- continue;
- comps[cu].comp = decomps[i].code;
- comps[cu].count = 2;
- comps[cu].code1 = decomps[i].decomp[0];
- comps[cu].code2 = decomps[i].decomp[1];
- cu++;
- }
- comps_used = cu;
- qsort(comps, comps_used, sizeof(_comp_t), cmpcomps);
-}
-
-#endif
-
-#if HARDCODE_DATA
-static void
-write_case(FILE *out, _case_t *tab, int num, int first)
-{
- int i;
-
- for (i=0; i<num; i++) {
- if (first) first = 0;
- else fprintf(out, ",");
- fprintf(out, "\n\t0x%08lx, 0x%08lx, 0x%08lx",
- (unsigned long) tab[i].key, (unsigned long) tab[i].other1,
- (unsigned long) tab[i].other2);
- }
-}
-
-#define PREF "static const "
-
-#endif
-
-static void
-write_cdata(char *opath)
-{
- FILE *out;
- ac_uint4 bytes;
- ac_uint4 i, idx, nprops;
-#if !(HARDCODE_DATA)
- ac_uint2 casecnt[2];
-#endif
- char path[BUFSIZ];
-#if HARDCODE_DATA
- int j, k;
-
- /*****************************************************************
- *
- * Generate the ctype data.
- *
- *****************************************************************/
-
- /*
- * Open the output file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "uctable.h", opath);
- if ((out = fopen(path, "w")) == 0)
- return;
-#else
- /*
- * Open the ctype.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "ctype.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-#endif
-
- /*
- * Collect the offsets for the properties. The offsets array is
- * on a 4-byte boundary to keep things efficient for architectures
- * that need such a thing.
- */
- for (i = idx = 0; i < NUMPROPS; i++) {
- propcnt[i] = (proptbl[i].used != 0) ? idx : 0xffff;
- idx += proptbl[i].used;
- }
-
- /*
- * Add the sentinel index which is used by the binary search as the upper
- * bound for a search.
- */
- propcnt[i] = idx;
-
- /*
- * Record the actual number of property lists. This may be different than
- * the number of offsets actually written because of aligning on a 4-byte
- * boundary.
- */
- hdr[1] = NUMPROPS;
-
- /*
- * Calculate the byte count needed and pad the property counts array to a
- * 4-byte boundary.
- */
- if ((bytes = sizeof(ac_uint2) * (NUMPROPS + 1)) & 3)
- bytes += 4 - (bytes & 3);
- nprops = bytes / sizeof(ac_uint2);
- bytes += sizeof(ac_uint4) * idx;
-
-#if HARDCODE_DATA
- fprintf(out,
- "/* This file was generated from a modified version UCData's ucgendat.\n"
- " *\n"
- " * DO NOT EDIT THIS FILE!\n"
- " * \n"
- " * Instead, compile ucgendat.c (bundled with PHP in ext/mbstring), download\n"
- " * the appropriate UnicodeData-x.x.x.txt and CompositionExclusions-x.x.x.txt\n"
- " * files from http://www.unicode.org/Public/ and run this program.\n"
- " *\n"
- " * More information can be found in the UCData package. Unfortunately,\n"
- " * the project's page doesn't seem to be live anymore, so you can use\n"
- " * OpenLDAPs modified copy (look in libraries/liblunicode/ucdata) */\n\n");
-
- fprintf(out, PREF "unsigned short _ucprop_size = %d;\n\n", NUMPROPS);
-
- fprintf(out, PREF "unsigned short _ucprop_offsets[] = {");
-
- for (i = 0; i<nprops; i++) {
- if (i) fprintf(out, ",");
- if (!(i&7)) fprintf(out, "\n\t");
- else fprintf(out, " ");
- fprintf(out, "0x%04x", propcnt[i]);
- }
- fprintf(out, "\n};\n\n");
-
- fprintf(out, PREF "unsigned int _ucprop_ranges[] = {");
-
- k = 0;
- for (i = 0; i < NUMPROPS; i++) {
- if (proptbl[i].used > 0) {
- for (j=0; j<proptbl[i].used; j++) {
- if (k) fprintf(out, ",");
- if (!(k&3)) fprintf(out,"\n\t");
- else fprintf(out, " ");
- k++;
- fprintf(out, "0x%08lx", (unsigned long) proptbl[i].ranges[j]);
- }
- }
- }
- fprintf(out, "\n};\n\n");
-#else
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write the byte count.
- */
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- /*
- * Write the property list counts.
- */
- fwrite((char *) propcnt, sizeof(ac_uint2), nprops, out);
-
- /*
- * Write the property lists.
- */
- for (i = 0; i < NUMPROPS; i++) {
- if (proptbl[i].used > 0)
- fwrite((char *) proptbl[i].ranges, sizeof(ac_uint4),
- proptbl[i].used, out);
- }
-
- fclose(out);
-#endif
-
- /*****************************************************************
- *
- * Generate the case mapping data.
- *
- *****************************************************************/
-
-#if HARDCODE_DATA
- fprintf(out, PREF "unsigned int _uccase_size = %ld;\n\n",
- (long) (upper_used + lower_used + title_used));
-
- fprintf(out,
- "/* Starting indexes of the case tables\n"
- " * UpperIndex = 0\n"
- " * LowerIndex = _uccase_len[0]\n"
- " * TitleIndex = LowerIndex + _uccase_len[1] */\n\n");
- fprintf(out, PREF "unsigned short _uccase_len[2] = {%ld, %ld};\n\n",
- (long) upper_used, (long) lower_used);
- fprintf(out, PREF "unsigned int _uccase_map[] = {");
-
- if (upper_used > 0)
- /*
- * Write the upper case table.
- */
- write_case(out, upper, upper_used, 1);
-
- if (lower_used > 0)
- /*
- * Write the lower case table.
- */
- write_case(out, lower, lower_used, !upper_used);
-
- if (title_used > 0)
- /*
- * Write the title case table.
- */
- write_case(out, title, title_used, !(upper_used||lower_used));
-
- if (!(upper_used || lower_used || title_used))
- fprintf(out, "\t0");
-
- fprintf(out, "\n};\n\n");
-#else
- /*
- * Open the case.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "case.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- /*
- * Write the case mapping tables.
- */
- hdr[1] = upper_used + lower_used + title_used;
- casecnt[0] = upper_used;
- casecnt[1] = lower_used;
-
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write the upper and lower case table sizes.
- */
- fwrite((char *) casecnt, sizeof(ac_uint2), 2, out);
-
- if (upper_used > 0)
- /*
- * Write the upper case table.
- */
- fwrite((char *) upper, sizeof(_case_t), upper_used, out);
-
- if (lower_used > 0)
- /*
- * Write the lower case table.
- */
- fwrite((char *) lower, sizeof(_case_t), lower_used, out);
-
- if (title_used > 0)
- /*
- * Write the title case table.
- */
- fwrite((char *) title, sizeof(_case_t), title_used, out);
-
- fclose(out);
-#endif
-
-#if 0
-
- /*****************************************************************
- *
- * Generate the composition data.
- *
- *****************************************************************/
-
- /*
- * Create compositions from decomposition data
- */
- create_comps();
-
-#if HARDCODE_DATA
- fprintf(out, PREF "ac_uint4 _uccomp_size = %ld;\n\n",
- comps_used * 4L);
-
- fprintf(out, PREF "ac_uint4 _uccomp_data[] = {");
-
- /*
- * Now, if comps exist, write them out.
- */
- if (comps_used > 0) {
- for (i=0; i<comps_used; i++) {
- if (i) fprintf(out, ",");
- fprintf(out, "\n\t0x%08lx, 0x%08lx, 0x%08lx, 0x%08lx",
- (unsigned long) comps[i].comp, (unsigned long) comps[i].count,
- (unsigned long) comps[i].code1, (unsigned long) comps[i].code2);
- }
- } else {
- fprintf(out, "\t0");
- }
- fprintf(out, "\n};\n\n");
-#else
- /*
- * Open the comp.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "comp.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- /*
- * Write the header.
- */
- hdr[1] = (ac_uint2) comps_used * 4;
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write out the byte count to maintain header size.
- */
- bytes = comps_used * sizeof(_comp_t);
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- /*
- * Now, if comps exist, write them out.
- */
- if (comps_used > 0)
- fwrite((char *) comps, sizeof(_comp_t), comps_used, out);
-
- fclose(out);
-#endif
-
- /*****************************************************************
- *
- * Generate the decomposition data.
- *
- *****************************************************************/
-
- /*
- * Fully expand all decompositions before generating the output file.
- */
- expand_decomp();
-
-#if HARDCODE_DATA
- fprintf(out, PREF "ac_uint4 _ucdcmp_size = %ld;\n\n",
- decomps_used * 2L);
-
- fprintf(out, PREF "ac_uint4 _ucdcmp_nodes[] = {");
-
- if (decomps_used) {
- /*
- * Write the list of decomp nodes.
- */
- for (i = idx = 0; i < decomps_used; i++) {
- fprintf(out, "\n\t0x%08lx, 0x%08lx,",
- (unsigned long) decomps[i].code, (unsigned long) idx);
- idx += decomps[i].used;
- }
-
- /*
- * Write the sentinel index as the last decomp node.
- */
- fprintf(out, "\n\t0x%08lx\n};\n\n", (unsigned long) idx);
-
- fprintf(out, PREF "ac_uint4 _ucdcmp_decomp[] = {");
- /*
- * Write the decompositions themselves.
- */
- k = 0;
- for (i = 0; i < decomps_used; i++)
- for (j=0; j<decomps[i].used; j++) {
- if (k) fprintf(out, ",");
- if (!(k&3)) fprintf(out,"\n\t");
- else fprintf(out, " ");
- k++;
- fprintf(out, "0x%08lx", (unsigned long) decomps[i].decomp[j]);
- }
- fprintf(out, "\n};\n\n");
- }
-#else
- /*
- * Open the decomp.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "decomp.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- hdr[1] = decomps_used;
-
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write a temporary byte count which will be calculated as the
- * decompositions are written out.
- */
- bytes = 0;
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- if (decomps_used) {
- /*
- * Write the list of decomp nodes.
- */
- for (i = idx = 0; i < decomps_used; i++) {
- fwrite((char *) &decomps[i].code, sizeof(ac_uint4), 1, out);
- fwrite((char *) &idx, sizeof(ac_uint4), 1, out);
- idx += decomps[i].used;
- }
-
- /*
- * Write the sentinel index as the last decomp node.
- */
- fwrite((char *) &idx, sizeof(ac_uint4), 1, out);
-
- /*
- * Write the decompositions themselves.
- */
- for (i = 0; i < decomps_used; i++)
- fwrite((char *) decomps[i].decomp, sizeof(ac_uint4),
- decomps[i].used, out);
-
- /*
- * Seek back to the beginning and write the byte count.
- */
- bytes = (sizeof(ac_uint4) * idx) +
- (sizeof(ac_uint4) * ((hdr[1] << 1) + 1));
- fseek(out, sizeof(ac_uint2) << 1, 0L);
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- fclose(out);
- }
-#endif
-
-#ifdef HARDCODE_DATA
- fprintf(out, PREF "ac_uint4 _uckdcmp_size = %ld;\n\n",
- kdecomps_used * 2L);
-
- fprintf(out, PREF "ac_uint4 _uckdcmp_nodes[] = {");
-
- if (kdecomps_used) {
- /*
- * Write the list of kdecomp nodes.
- */
- for (i = idx = 0; i < kdecomps_used; i++) {
- fprintf(out, "\n\t0x%08lx, 0x%08lx,",
- (unsigned long) kdecomps[i].code, (unsigned long) idx);
- idx += kdecomps[i].used;
- }
-
- /*
- * Write the sentinel index as the last decomp node.
- */
- fprintf(out, "\n\t0x%08lx\n};\n\n", (unsigned long) idx);
-
- fprintf(out, PREF "ac_uint4 _uckdcmp_decomp[] = {");
-
- /*
- * Write the decompositions themselves.
- */
- k = 0;
- for (i = 0; i < kdecomps_used; i++)
- for (j=0; j<kdecomps[i].used; j++) {
- if (k) fprintf(out, ",");
- if (!(k&3)) fprintf(out,"\n\t");
- else fprintf(out, " ");
- k++;
- fprintf(out, "0x%08lx", (unsigned long) kdecomps[i].decomp[j]);
- }
- fprintf(out, "\n};\n\n");
- }
-#else
- /*
- * Open the kdecomp.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "kdecomp.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- hdr[1] = kdecomps_used;
-
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write a temporary byte count which will be calculated as the
- * decompositions are written out.
- */
- bytes = 0;
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- if (kdecomps_used) {
- /*
- * Write the list of kdecomp nodes.
- */
- for (i = idx = 0; i < kdecomps_used; i++) {
- fwrite((char *) &kdecomps[i].code, sizeof(ac_uint4), 1, out);
- fwrite((char *) &idx, sizeof(ac_uint4), 1, out);
- idx += kdecomps[i].used;
- }
-
- /*
- * Write the sentinel index as the last decomp node.
- */
- fwrite((char *) &idx, sizeof(ac_uint4), 1, out);
-
- /*
- * Write the decompositions themselves.
- */
- for (i = 0; i < kdecomps_used; i++)
- fwrite((char *) kdecomps[i].decomp, sizeof(ac_uint4),
- kdecomps[i].used, out);
-
- /*
- * Seek back to the beginning and write the byte count.
- */
- bytes = (sizeof(ac_uint4) * idx) +
- (sizeof(ac_uint4) * ((hdr[1] << 1) + 1));
- fseek(out, sizeof(ac_uint2) << 1, 0L);
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- fclose(out);
- }
-#endif
-
- /*****************************************************************
- *
- * Generate the combining class data.
- *
- *****************************************************************/
-#ifdef HARDCODE_DATA
- fprintf(out, PREF "ac_uint4 _uccmcl_size = %ld;\n\n", (long) ccl_used);
-
- fprintf(out, PREF "ac_uint4 _uccmcl_nodes[] = {");
-
- if (ccl_used > 0) {
- /*
- * Write the combining class ranges out.
- */
- for (i = 0; i<ccl_used; i++) {
- if (i) fprintf(out, ",");
- if (!(i&3)) fprintf(out, "\n\t");
- else fprintf(out, " ");
- fprintf(out, "0x%08lx", (unsigned long) ccl[i]);
- }
- } else {
- fprintf(out, "\t0");
- }
- fprintf(out, "\n};\n\n");
-#else
- /*
- * Open the cmbcl.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "cmbcl.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- /*
- * Set the number of ranges used. Each range has a combining class which
- * means each entry is a 3-tuple.
- */
- hdr[1] = ccl_used / 3;
-
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write out the byte count to maintain header size.
- */
- bytes = ccl_used * sizeof(ac_uint4);
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- if (ccl_used > 0)
- /*
- * Write the combining class ranges out.
- */
- fwrite((char *) ccl, sizeof(ac_uint4), ccl_used, out);
-
- fclose(out);
-#endif
-
- /*****************************************************************
- *
- * Generate the number data.
- *
- *****************************************************************/
-
-#if HARDCODE_DATA
- fprintf(out, PREF "ac_uint4 _ucnum_size = %lu;\n\n",
- (unsigned long)ncodes_used<<1);
-
- fprintf(out, PREF "ac_uint4 _ucnum_nodes[] = {");
-
- /*
- * Now, if number mappings exist, write them out.
- */
- if (ncodes_used > 0) {
- for (i = 0; i<ncodes_used; i++) {
- if (i) fprintf(out, ",");
- if (!(i&1)) fprintf(out, "\n\t");
- else fprintf(out, " ");
- fprintf(out, "0x%08lx, 0x%08lx",
- (unsigned long) ncodes[i].code, (unsigned long) ncodes[i].idx);
- }
- fprintf(out, "\n};\n\n");
-
- fprintf(out, PREF "short _ucnum_vals[] = {");
- for (i = 0; i<nums_used; i++) {
- if (i) fprintf(out, ",");
- if (!(i&3)) fprintf(out, "\n\t");
- else fprintf(out, " ");
- if (nums[i].numerator < 0) {
- fprintf(out, "%6d, 0x%04x",
- nums[i].numerator, nums[i].denominator);
- } else {
- fprintf(out, "0x%04x, 0x%04x",
- nums[i].numerator, nums[i].denominator);
- }
- }
- fprintf(out, "\n};\n\n");
- }
-#else
- /*
- * Open the num.dat file.
- */
- snprintf(path, sizeof path, "%s" LDAP_DIRSEP "num.dat", opath);
- if ((out = fopen(path, "wb")) == 0)
- return;
-
- /*
- * The count part of the header will be the total number of codes that
- * have numbers.
- */
- hdr[1] = (ac_uint2) (ncodes_used << 1);
- bytes = (ncodes_used * sizeof(_codeidx_t)) + (nums_used * sizeof(_num_t));
-
- /*
- * Write the header.
- */
- fwrite((char *) hdr, sizeof(ac_uint2), 2, out);
-
- /*
- * Write out the byte count to maintain header size.
- */
- fwrite((char *) &bytes, sizeof(ac_uint4), 1, out);
-
- /*
- * Now, if number mappings exist, write them out.
- */
- if (ncodes_used > 0) {
- fwrite((char *) ncodes, sizeof(_codeidx_t), ncodes_used, out);
- fwrite((char *) nums, sizeof(_num_t), nums_used, out);
- }
-#endif
-
-#endif
-
- fclose(out);
-}
-
-static void
-usage(char *prog)
-{
- fprintf(stderr,
- "Usage: %s [-o output-directory|-x composition-exclusions]", prog);
- fprintf(stderr, " datafile1 datafile2 ...\n\n");
- fprintf(stderr,
- "-o output-directory\n\t\tWrite the output files to a different");
- fprintf(stderr, " directory (default: .).\n");
- fprintf(stderr,
- "-x composition-exclusion\n\t\tFile of composition codes");
- fprintf(stderr, " that should be excluded.\n");
- exit(1);
-}
-
-int
-main(int argc, char *argv[])
-{
- FILE *in;
- char *prog, *opath;
-
- prog = argv[1];
-
- opath = 0;
- in = stdin;
-
- argc--;
- argv++;
-
- while (argc > 0) {
- if (argv[0][0] == '-') {
- switch (argv[0][1]) {
- case 'o':
- argc--;
- argv++;
- opath = argv[0];
- break;
- case 'x':
- argc--;
- argv++;
- if ((in = fopen(argv[0], "r")) == 0)
- fprintf(stderr,
- "%s: unable to open composition exclusion file %s\n",
- prog, argv[0]);
- else {
- read_compexdata(in);
- fclose(in);
- in = 0;
- }
- break;
- default:
- usage(prog);
- }
- } else {
- if (in != stdin && in != NULL)
- fclose(in);
- if ((in = fopen(argv[0], "r")) == 0)
- fprintf(stderr, "%s: unable to open ctype file %s\n",
- prog, argv[0]);
- else {
- read_cdata(in);
- fclose(in);
- in = 0;
- }
- }
- argc--;
- argv++;
- }
-
- if (opath == 0)
- opath = ".";
- write_cdata(opath);
-
- return 0;
-}
diff --git a/ext/mbstring/ucgendat/ucgendat.php b/ext/mbstring/ucgendat/ucgendat.php
new file mode 100644
index 0000000000..4bb5b9b698
--- /dev/null
+++ b/ext/mbstring/ucgendat/ucgendat.php
@@ -0,0 +1,641 @@
+<?php error_reporting(E_ALL);
+
+/* This is based on the ucgendat.c file from the OpenLDAP project, licensed
+ * as follows. */
+
+/* Copyright 1998-2007 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available at
+ * <http://www.OpenLDAP.org/license.html>.
+ */
+
+/* Copyright 2001 Computing Research Labs, New Mexico State University
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+if ($argc < 2) {
+ echo "Usage: php ucgendata.php ./datadir\n";
+ echo "./datadir must contain:\n";
+ echo "UnicodeData.txt, CaseFolding.txt, SpecialCasing.txt and DerivedCoreProperties.txt\n";
+ return;
+}
+
+$dir = $argv[1];
+$unicodeDataFile = $dir . '/UnicodeData.txt';
+$caseFoldingFile = $dir . '/CaseFolding.txt';
+$specialCasingFile = $dir . '/SpecialCasing.txt';
+$derivedCorePropertiesFile = $dir . '/DerivedCoreProperties.txt';
+
+$files = [$unicodeDataFile, $caseFoldingFile, $specialCasingFile, $derivedCorePropertiesFile];
+foreach ($files as $file) {
+ if (!file_exists($file)) {
+ echo "File $file does not exist.\n";
+ return;
+ }
+}
+
+$outputFile = __DIR__ . "/../unicode_data.h";
+
+$data = new UnicodeData;
+parseUnicodeData($data, file_get_contents($unicodeDataFile));
+parseCaseFolding($data, file_get_contents($caseFoldingFile));
+parseSpecialCasing($data, file_get_contents($specialCasingFile));
+parseDerivedCoreProperties($data, file_get_contents($derivedCorePropertiesFile));
+file_put_contents($outputFile, generateData($data));
+
+class Range {
+ public $start;
+ public $end;
+
+ public function __construct(int $start, int $end) {
+ $this->start = $start;
+ $this->end = $end;
+ }
+}
+
+class UnicodeData {
+ public $propIndexes;
+ public $numProps;
+ public $propRanges;
+ public $caseMaps;
+ public $extraCaseData;
+
+ public function __construct() {
+ /*
+ * List of properties expected to be found in the Unicode Character Database.
+ */
+ $this->propIndexes = array_flip([
+ "Mn", "Mc", "Me", "Nd", "Nl", "No",
+ "Zs", "Zl", "Zp", "Cc", "Cf", "Cs",
+ "Co", "Cn", "Lu", "Ll", "Lt", "Lm",
+ "Lo", "Pc", "Pd", "Ps", "Pe", "Po",
+ "Sm", "Sc", "Sk", "So", "L", "R",
+ "EN", "ES", "ET", "AN", "CS", "B",
+ "S", "WS", "ON", "Pi", "Pf", "AL",
+ "Cased", "Case_Ignorable"
+ ]);
+ $this->numProps = count($this->propIndexes);
+
+ $this->propRanges = array_fill(0, $this->numProps, []);
+ $this->caseMaps = [
+ 'upper' => [],
+ 'lower' => [],
+ 'title' => [],
+ 'fold' => [],
+ ];
+ $this->extraCaseData = [];
+ }
+
+ function propToIndex(string $prop) : int {
+ /* Deal with directionality codes introduced in Unicode 3.0. */
+ if (in_array($prop, ["BN", "NSM", "PDF", "LRE", "LRO", "RLE", "RLO", "LRI", "RLI", "FSI", "PDI"])) {
+ /*
+ * Mark all of these as Other Neutral to preserve compatibility with
+ * older versions.
+ */
+ $prop = "ON";
+ }
+
+ if (!isset($this->propIndexes[$prop])) {
+ throw new Exception("Unknown property $prop");
+ }
+
+ return $this->propIndexes[$prop];
+ }
+
+ public function addProp(int $code, string $prop) {
+ $propIdx = self::propToIndex($prop);
+
+ // Check if this extends the last range
+ $ranges = $this->propRanges[$propIdx];
+ if (!empty($ranges)) {
+ $lastRange = $ranges[count($ranges) - 1];
+ if ($code === $lastRange->end + 1) {
+ $lastRange->end++;
+ return;
+ }
+ }
+
+ $this->propRanges[$propIdx][] = new Range($code, $code);
+ }
+
+ public function addPropRange(int $startCode, int $endCode, string $prop) {
+ $propIdx = self::propToIndex($prop);
+ $this->propRanges[$propIdx][] = new Range($startCode, $endCode);
+ }
+
+ public function addCaseMapping(string $case, int $origCode, int $mappedCode) {
+ $this->caseMaps[$case][$origCode] = $mappedCode;
+ }
+
+ public function compactRangeArray(array $ranges) : array {
+ // Sort by start codepoint
+ usort($ranges, function (Range $r1, Range $r2) {
+ return $r1->start <=> $r2->start;
+ });
+
+ $lastRange = new Range(-1, -1);
+ $newRanges = [];
+ foreach ($ranges as $range) {
+ if ($lastRange->end == -1) {
+ $lastRange = $range;
+ } else if ($range->start == $lastRange->end + 1) {
+ $lastRange->end = $range->end;
+ } else if ($range->start > $lastRange->end + 1) {
+ $newRanges[] = $lastRange;
+ $lastRange = $range;
+ } else {
+ throw new Exception(sprintf(
+ "Overlapping ranges [%x, %x] and [%x, %x]",
+ $lastRange->start, $lastRange->end,
+ $range->start, $range->end
+ ));
+ }
+ }
+ if ($lastRange->end != -1) {
+ $newRanges[] = $lastRange;
+ }
+ return $newRanges;
+ }
+
+ public function compactPropRanges() {
+ foreach ($this->propRanges as &$ranges) {
+ $ranges = $this->compactRangeArray($ranges);
+ }
+ }
+}
+
+function parseDataFile(string $input) {
+ $lines = explode("\n", $input);
+ foreach ($lines as $line) {
+ // Strip comments
+ if (false !== $hashPos = strpos($line, '#')) {
+ $line = substr($line, 0, $hashPos);
+ }
+
+ // Skip empty lines
+ $line = trim($line);
+ if ($line === '') {
+ continue;
+ }
+
+ $fields = array_map('trim', explode(';', $line));
+ yield $fields;
+ }
+}
+
+function parseUnicodeData(UnicodeData $data, string $input) : void {
+ $lines = parseDataFile($input);
+ foreach ($lines as $fields) {
+ if (count($fields) != 15) {
+ throw new Exception("Line does not contain 15 fields");
+ }
+
+ $code = intval($fields[0], 16);
+
+ $name = $fields[1];
+ if ($name === '') {
+ throw new Exception("Empty name");
+ }
+
+ if ($name[0] === '<' && $name !== '<control>') {
+ // This is a character range
+ $lines->next();
+ $nextFields = $lines->current();
+ $nextCode = intval($nextFields[0], 16);
+
+ $generalCategory = $fields[2];
+ $data->addPropRange($code, $nextCode, $generalCategory);
+
+ $bidiClass = $fields[4];
+ $data->addPropRange($code, $nextCode, $bidiClass);
+ continue;
+ }
+
+ $generalCategory = $fields[2];
+ $data->addProp($code, $generalCategory);
+
+ $bidiClass = $fields[4];
+ $data->addProp($code, $bidiClass);
+
+ $upperCase = intval($fields[12], 16);
+ $lowerCase = intval($fields[13], 16);
+ $titleCase = intval($fields[14], 16) ?: $upperCase;
+ if ($upperCase) {
+ $data->addCaseMapping('upper', $code, $upperCase);
+ }
+ if ($lowerCase) {
+ $data->addCaseMapping('lower', $code, $lowerCase);
+ }
+ if ($titleCase) {
+ $data->addCaseMapping('title', $code, $titleCase);
+ }
+ }
+}
+
+function parseCodes(string $strCodes) : array {
+ $codes = [];
+ foreach (explode(' ', $strCodes) as $strCode) {
+ $codes[] = intval($strCode, 16);
+ }
+ return $codes;
+}
+
+function parseCaseFolding(UnicodeData $data, string $input) : void {
+ foreach (parseDataFile($input) as $fields) {
+ if (count($fields) != 4) {
+ throw new Exception("Line does not contain 4 fields");
+ }
+
+ $code = intval($fields[0], 16);
+ $status = $fields[1];
+ if ($status == 'T') {
+ // Use language-agnostic case folding
+ continue;
+ }
+
+ if ($status == 'C' || $status == 'S') {
+ $foldCode = intval($fields[2], 16);
+ if (!isset($data->caseMaps['fold'][$code])) {
+ $data->addCaseMapping('fold', $code, $foldCode);
+ } else {
+ // Add simple mapping to full mapping data
+ assert(is_array($data->caseMaps['fold'][$code]));
+ $data->caseMaps['fold'][$code][0] = $foldCode;
+ }
+ } else if ($status == 'F') {
+ $foldCodes = parseCodes($fields[2]);
+ $existingFoldCode = $data->caseMaps['fold'][$code] ?? $code;
+ $data->caseMaps['fold'][$code] = array_merge([$code], $foldCodes);
+ } else {
+ assert(0);
+ }
+ }
+}
+
+function addSpecialCasing(UnicodeData $data, string $type, int $code, array $caseCodes) : void {
+ $simpleCaseCode = $data->caseMaps[$type][$code] ?? $code;
+ if (count($caseCodes) == 1) {
+ if ($caseCodes[0] != $simpleCaseCode) {
+ throw new Exception("Simple case code in special casing does not match");
+ }
+
+ // Special case: If a title-case character maps to itself, we may still have to store it,
+ // if there is a non-trivial upper-case mapping for it
+ if ($type == 'title' && $code == $caseCodes[0]
+ && ($data->caseMaps['upper'][$code] ?? $code) != $code) {
+ $data->caseMaps['title'][$code] = $code;
+ }
+ return;
+ }
+
+ if (count($caseCodes) > 3) {
+ throw new Exception("Special case mapping with more than 3 code points");
+ }
+
+ $data->caseMaps[$type][$code] = array_merge([$simpleCaseCode], $caseCodes);
+}
+
+function parseSpecialCasing(UnicodeData $data, string $input) : void {
+ foreach (parseDataFile($input) as $fields) {
+ if (count($fields) != 5 && count($fields) != 6) {
+ throw new Exception("Line does not contain 5 or 6 fields");
+ }
+
+ $code = intval($fields[0], 16);
+ $lower = parseCodes($fields[1]);
+ $title = parseCodes($fields[2]);
+ $upper = parseCodes($fields[3]);
+
+ $cond = $fields[4];
+ if ($cond) {
+ // Only use unconditional mappings
+ continue;
+ }
+
+ addSpecialCasing($data, 'lower', $code, $lower);
+ addSpecialCasing($data, 'upper', $code, $upper);
+
+ // Should happen last
+ addSpecialCasing($data, 'title', $code, $title);
+ }
+}
+
+function parseDerivedCoreProperties(UnicodeData $data, string $input) : void {
+ foreach (parseDataFile($input) as $fields) {
+ if (count($fields) != 2) {
+ throw new Exception("Line does not contain 2 fields");
+ }
+
+ $property = $fields[1];
+ if ($property != 'Cased' && $property != 'Case_Ignorable') {
+ continue;
+ }
+
+ $range = explode('..', $fields[0]);
+ if (count($range) == 2) {
+ $data->addPropRange(intval($range[0], 16), intval($range[1], 16), $property);
+ } else if (count($range) == 1) {
+ $data->addProp(intval($range[0], 16), $property);
+ } else {
+ throw new Exception("Invalid range");
+ }
+ }
+}
+
+function formatArray(array $values, int $width, string $format) : string {
+ $result = '';
+ $i = 0;
+ $c = count($values);
+ for ($i = 0; $i < $c; $i++) {
+ if ($i != 0) {
+ $result .= ',';
+ }
+
+ $result .= $i % $width == 0 ? "\n\t" : " ";
+ $result .= sprintf($format, $values[$i]);
+ }
+ return $result;
+}
+
+function formatShortHexArray(array $values, int $width) : string {
+ return formatArray($values, $width, "0x%04x");
+}
+function formatShortDecArray(array $values, int $width) : string {
+ return formatArray($values, $width, "% 5d");
+}
+function formatIntArray(array $values, int $width) : string {
+ return formatArray($values, $width, "0x%08x");
+}
+
+function generatePropData(UnicodeData $data) {
+ $data->compactPropRanges();
+
+ $propOffsets = [];
+ $idx = 0;
+ foreach ($data->propRanges as $ranges) {
+ $num = count($ranges);
+ $propOffsets[] = $num ? $idx : 0xffff;
+ $idx += 2*$num;
+ }
+
+ // Add sentinel for binary search
+ $propOffsets[] = $idx;
+
+ // TODO ucgendat.c pads the prop offsets to the next multiple of 4
+ // for rather debious reasons of alignment. This should probably be
+ // dropped
+ while (count($propOffsets) % 4 != 0) {
+ $propOffsets[] = 0;
+ }
+
+ $totalRanges = $idx;
+
+ $result = "";
+ $result .= "static const unsigned short _ucprop_size = $data->numProps;\n\n";
+ $result .= "static const unsigned short _ucprop_offsets[] = {";
+ $result .= formatShortHexArray($propOffsets, 8);
+ $result .= "\n};\n\n";
+
+ $values = [];
+ foreach ($data->propRanges as $ranges) {
+ foreach ($ranges as $range) {
+ $values[] = $range->start;
+ $values[] = $range->end;
+ }
+ }
+
+ $result .= "static const unsigned int _ucprop_ranges[] = {";
+ $result .= formatIntArray($values, 4);
+ $result .= "\n};\n\n";
+ return $result;
+}
+
+function flatten(array $array) {
+ $result = [];
+ foreach ($array as $arr) {
+ foreach ($arr as $v) {
+ $result[] = $v;
+ }
+ }
+ return $result;
+}
+
+function prepareCaseData(UnicodeData $data) {
+ // Don't store titlecase if it's the same as uppercase
+ foreach ($data->caseMaps['title'] as $code => $titleCode) {
+ if ($titleCode == ($data->caseMaps['upper'][$code] ?? $code)) {
+ unset($data->caseMaps['title'][$code]);
+ }
+ }
+
+ // Store full (multi-char) case mappings in a separate table and only
+ // store an index into it
+ foreach ($data->caseMaps as $type => $caseMap) {
+ foreach ($caseMap as $code => $caseCode) {
+ if (is_array($caseCode)) {
+ // -1 because the first entry is the simple case mapping
+ $len = count($caseCode) - 1;
+ $idx = count($data->extraCaseData);
+ $data->caseMaps[$type][$code] = ($len << 24) | $idx;
+
+ foreach ($caseCode as $c) {
+ $data->extraCaseData[] = $c;
+ }
+ }
+ }
+ }
+}
+
+function generateCaseMPH(string $name, array $map) {
+ $prefix = "_uccase_" . $name;
+ list($gTable, $table) = generateMPH($map, $fast = false);
+ echo "$name: n=", count($table), ", g=", count($gTable), "\n";
+
+ $result = "";
+ $result .= "static const unsigned {$prefix}_g_size = " . count($gTable) . ";\n";
+ $result .= "static const short {$prefix}_g[] = {";
+ $result .= formatShortDecArray($gTable, 8);
+ $result .= "\n};\n\n";
+ $result .= "static const unsigned {$prefix}_table_size = " . count($table) . ";\n";
+ $result .= "static const unsigned {$prefix}_table[] = {";
+ $result .= formatIntArray(flatten($table), 4);
+ $result .= "\n};\n\n";
+ return $result;
+}
+
+function generateCaseData(UnicodeData $data) {
+ prepareCaseData($data);
+
+ $result = "";
+ $result .= generateCaseMPH('upper', $data->caseMaps['upper']);
+ $result .= generateCaseMPH('lower', $data->caseMaps['lower']);
+ $result .= generateCaseMPH('title', $data->caseMaps['title']);
+ $result .= generateCaseMPH('fold', $data->caseMaps['fold']);
+ $result .= "static const unsigned _uccase_extra_table[] = {";
+ $result .= formatIntArray($data->extraCaseData, 4);
+ $result .= "\n};\n\n";
+ return $result;
+}
+
+function generateData(UnicodeData $data) {
+ $result = <<<'HEADER'
+/* This file was generated from a modified version UCData's ucgendat.
+ *
+ * DO NOT EDIT THIS FILE!
+ *
+ * Instead, compile ucgendat.c (bundled with PHP in ext/mbstring), download
+ * the appropriate UnicodeData-x.x.x.txt and CompositionExclusions-x.x.x.txt
+ * files from http://www.unicode.org/Public/ and run this program.
+ *
+ * More information can be found in the UCData package. Unfortunately,
+ * the project's page doesn't seem to be live anymore, so you can use
+ * OpenLDAPs modified copy (look in libraries/liblunicode/ucdata) */
+HEADER;
+ $result .= "\n\n" . generatePropData($data);
+ $result .= generateCaseData($data);
+
+ return $result;
+}
+
+/*
+ * Minimal Perfect Hash Generation
+ *
+ * Based on "Hash, displace, and compress" algorithm due to
+ * Belazzougui, Botelho and Dietzfelbinger.
+ *
+ * Hash function based on https://stackoverflow.com/a/12996028/385378.
+ * MPH implementation based on http://stevehanov.ca/blog/index.php?id=119.
+ */
+
+function hashInt(int $d, int $x) {
+ $x ^= $d;
+ $x = (($x >> 16) ^ $x) * 0x45d9f3b;
+ return $x & 0xffffffff;
+}
+
+function tryGenerateMPH(array $map, int $gSize) {
+ $tableSize = count($map);
+ $table = [];
+ $gTable = array_fill(0, $gSize, 0x7fff);
+ $buckets = [];
+
+ foreach ($map as $k => $v) {
+ $h = hashInt(0, $k) % $gSize;
+ $buckets[$h][] = [$k, $v];
+ }
+
+ // Sort by descending number of collisions
+ usort($buckets, function ($b1, $b2) {
+ return -(count($b1) <=> count($b2));
+ });
+
+ foreach ($buckets as $bucket) {
+ $collisions = count($bucket);
+ if ($collisions <= 1) {
+ continue;
+ }
+
+ // Try values of $d until all elements placed in different slots
+ $d = 1;
+ $i = 0;
+ $used = [];
+ while ($i < $collisions) {
+ if ($d > 0x7fff) {
+ return [];
+ }
+
+ list($k) = $bucket[$i];
+ $slot = hashInt($d, $k) % $tableSize;
+ if (isset($table[$slot]) || isset($used[$slot])) {
+ $d++;
+ $i = 0;
+ $used = [];
+ } else {
+ $i++;
+ $used[$slot] = true;
+ }
+ }
+
+ $g = hashInt(0, $bucket[0][0]) % $gSize;
+ $gTable[$g] = $d;
+ foreach ($bucket as $elem) {
+ $table[hashInt($d, $elem[0]) % $tableSize] = $elem;
+ }
+ }
+
+ $freeSlots = [];
+ for ($i = 0; $i < $tableSize; $i++) {
+ if (!isset($table[$i])) {
+ $freeSlots[] = $i;
+ }
+ }
+
+ // For buckets with only one element, we directly store the index
+ $freeIdx = 0;
+ foreach ($buckets as $bucket) {
+ if (count($bucket) != 1) {
+ continue;
+ }
+
+ $elem = $bucket[0];
+ $slot = $freeSlots[$freeIdx++];
+ $table[$slot] = $elem;
+
+ $g = hashInt(0, $elem[0]) % $gSize;
+ $gTable[$g] = -$slot;
+ }
+
+ ksort($gTable);
+ ksort($table);
+
+ return [$gTable, $table];
+}
+
+function generateMPH(array $map, bool $fast) {
+ if ($fast) {
+ // Check size starting lambda=5.0 in 0.5 increments
+ for ($lambda = 5.0;; $lambda -= 0.5) {
+ $m = (int) (count($map) / $lambda);
+ $tmpMph = tryGenerateMPH($map, $m);
+ if (!empty($tmpMph)) {
+ $mph = $tmpMph;
+ break;
+ }
+ }
+ } else {
+ // Check all sizes starting lambda=7.0
+ $m = (int) (count($map) / 7.0);
+ for (;; $m++) {
+ $tmpMph = tryGenerateMPH($map, $m);
+ if (!empty($tmpMph)) {
+ $mph = $tmpMph;
+ break;
+ }
+ }
+ }
+
+ return $mph;
+}
diff --git a/ext/mbstring/ucgendat/uctest.php b/ext/mbstring/ucgendat/uctest.php
new file mode 100644
index 0000000000..62a4e71c5e
--- /dev/null
+++ b/ext/mbstring/ucgendat/uctest.php
@@ -0,0 +1,131 @@
+<?php error_reporting(E_ALL);
+
+$dir = __DIR__;
+$unicodeDataFile = $dir . '/UnicodeData.txt';
+$caseFoldingFile = $dir . '/CaseFolding.txt';
+$specialCasingFile = $dir . '/SpecialCasing.txt';
+
+$files = [$unicodeDataFile, $caseFoldingFile, $specialCasingFile];
+foreach ($files as $file) {
+ if (!file_exists($file)) {
+ echo "File $file does not exist.\n";
+ return;
+ }
+}
+
+testUnicodeData(file_get_contents($unicodeDataFile));
+testCaseFolding(file_get_contents($caseFoldingFile));
+testSpecialCasing(file_get_contents($specialCasingFile));
+
+function parseDataFile(string $input) {
+ $lines = explode("\n", $input);
+ foreach ($lines as $line) {
+ // Strip comments
+ if (false !== $hashPos = strpos($line, '#')) {
+ $line = substr($line, 0, $hashPos);
+ }
+
+ // Skip empty lines
+ $line = trim($line);
+ if ($line === '') {
+ continue;
+ }
+
+ $fields = array_map('trim', explode(';', $line));
+ yield $fields;
+ }
+}
+
+function parseCodes(string $strCodes) : array {
+ $codes = [];
+ foreach (explode(' ', $strCodes) as $strCode) {
+ $codes[] = intval($strCode, 16);
+ }
+ return $codes;
+}
+
+function testCaseMap($type, int $origCode, array $newCodes) {
+ $origChar = mb_chr($origCode);
+ $newStr = "";
+ foreach ($newCodes as $newCode) {
+ $newStr .= mb_chr($newCode);
+ }
+
+ $mbNewStr = mb_convert_case($origChar, $type);
+ if ($mbNewStr !== $newStr) {
+ echo "$type: $mbNewStr != $newStr\n";
+ }
+}
+
+function testSimpleCaseMap($type, int $origCode, int $newCode) {
+ if ($newCode) {
+ testCaseMap($type, $origCode, [$newCode]);
+ } else {
+ testCaseMap($type, $origCode, [$origCode]);
+ }
+}
+
+function testUnicodeData(string $input) {
+ $uppers = [];
+ $folds = [];
+
+ foreach (parseDataFile($input) as $fields) {
+ assert(count($fields) == 15);
+
+ $code = intval($fields[0], 16);
+ $upperCase = intval($fields[12], 16);
+ $lowerCase = intval($fields[13], 16);
+ $titleCase = intval($fields[14], 16);
+ testSimpleCaseMap(MB_CASE_UPPER_SIMPLE, $code, $upperCase);
+ testSimpleCaseMap(MB_CASE_LOWER_SIMPLE, $code, $lowerCase);
+
+ // Unfortunately MB_CASE_TITLE does not actually return the title case, even when passed
+ // only a single character. It does ad-hoc magic based on the character class, so that
+ // certain characters, such as roman numerals or circled characters will not be
+ // title-cased.
+ //testSimpleCaseMap(MB_CASE_TITLE_SIMPLE, $code, $titleCase ?: $upperCase);
+
+ $chr = mb_chr($code);
+ $upper = mb_strtoupper($chr);
+ $uppers[$upper][] = $chr;
+ $fold = mb_convert_case($chr, 3);
+ $folds[$fold][] = $chr;
+ }
+}
+
+function testCaseFolding(string $input) {
+ foreach (parseDataFile($input) as $fields) {
+ assert(count($fields) == 4);
+
+ $code = intval($fields[0], 16);
+ $status = $fields[1];
+ if ($status == 'C' || $status == 'S') {
+ $foldCode = intval($fields[2], 16);
+ testSimpleCaseMap(MB_CASE_FOLD_SIMPLE, $code, $foldCode);
+ } else if ($status == 'F') {
+ $foldCodes = parseCodes($fields[2]);
+ testCaseMap(MB_CASE_FOLD, $code, $foldCodes);
+ }
+ }
+}
+
+function testSpecialCasing(string $input) {
+ foreach (parseDataFile($input) as $fields) {
+ assert(count($fields) >= 5);
+
+ $code = intval($fields[0], 16);
+ $lower = parseCodes($fields[1]);
+ $title = parseCodes($fields[2]);
+ $upper = parseCodes($fields[3]);
+
+ $cond = $fields[4];
+ if ($cond) {
+ // We don't support conditional mappings
+ continue;
+ }
+
+ testCaseMap(MB_CASE_LOWER, $code, $lower);
+ testCaseMap(MB_CASE_UPPER, $code, $upper);
+ testCaseMap(MB_CASE_TITLE, $code, $title);
+ }
+}
diff --git a/ext/mbstring/unicode_data.h b/ext/mbstring/unicode_data.h
index cad451c943..4f0b18653c 100644
--- a/ext/mbstring/unicode_data.h
+++ b/ext/mbstring/unicode_data.h
@@ -10,16 +10,15 @@
* the project's page doesn't seem to be live anymore, so you can use
* OpenLDAPs modified copy (look in libraries/liblunicode/ucdata) */
-static const unsigned short _ucprop_size = 50;
+static const unsigned short _ucprop_size = 44;
static const unsigned short _ucprop_offsets[] = {
- 0x0000, 0x025a, 0x039a, 0x03a4, 0x0412, 0x042a, 0x04a2, 0x04b0,
- 0x04b2, 0x04b4, 0x04b8, 0x04dc, 0x04de, 0xffff, 0x04e4, 0x09ca,
- 0x0ebc, 0x0ed0, 0x0f42, 0x12de, 0x12ea, 0x130c, 0x13a2, 0x1432,
- 0x1584, 0x1604, 0x1626, 0x1660, 0x17ba, 0x1b4a, 0x1bca, 0x1be2,
- 0x1bf4, 0x1c20, 0x1c2c, 0x1c46, 0x1c50, 0x1c56, 0x1c64, 0x200a,
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0x21d6, 0x26ee,
- 0x2704, 0x2718, 0x278a, 0x0000
+ 0x0000, 0x0272, 0x03be, 0x03c8, 0x043a, 0x0452, 0x04d8, 0x04e6,
+ 0x04e8, 0x04ea, 0x04ee, 0x0514, 0x0516, 0xffff, 0x051c, 0x0a0a,
+ 0x0f06, 0x0f1a, 0x0f8c, 0x1338, 0x1344, 0x1366, 0x13fc, 0x148c,
+ 0x15ea, 0x166a, 0x1690, 0x16ca, 0x1826, 0x1d74, 0x1df6, 0x1e0e,
+ 0x1e20, 0x1e4c, 0x1e5a, 0x1e74, 0x1e7e, 0x1e84, 0x1e92, 0x2256,
+ 0x226c, 0x2280, 0x22fa, 0x2410, 0x2724, 0x0000, 0x0000, 0x0000
};
static const unsigned int _ucprop_ranges[] = {
@@ -32,15 +31,16 @@ static const unsigned int _ucprop_ranges[] = {
0x000006e7, 0x000006e8, 0x000006ea, 0x000006ed,
0x00000711, 0x00000711, 0x00000730, 0x0000074a,
0x000007a6, 0x000007b0, 0x000007eb, 0x000007f3,
- 0x00000816, 0x00000819, 0x0000081b, 0x00000823,
- 0x00000825, 0x00000827, 0x00000829, 0x0000082d,
- 0x00000859, 0x0000085b, 0x000008d4, 0x000008e1,
- 0x000008e3, 0x00000902, 0x0000093a, 0x0000093a,
- 0x0000093c, 0x0000093c, 0x00000941, 0x00000948,
- 0x0000094d, 0x0000094d, 0x00000951, 0x00000957,
- 0x00000962, 0x00000963, 0x00000981, 0x00000981,
- 0x000009bc, 0x000009bc, 0x000009c1, 0x000009c4,
- 0x000009cd, 0x000009cd, 0x000009e2, 0x000009e3,
+ 0x000007fd, 0x000007fd, 0x00000816, 0x00000819,
+ 0x0000081b, 0x00000823, 0x00000825, 0x00000827,
+ 0x00000829, 0x0000082d, 0x00000859, 0x0000085b,
+ 0x000008d3, 0x000008e1, 0x000008e3, 0x00000902,
+ 0x0000093a, 0x0000093a, 0x0000093c, 0x0000093c,
+ 0x00000941, 0x00000948, 0x0000094d, 0x0000094d,
+ 0x00000951, 0x00000957, 0x00000962, 0x00000963,
+ 0x00000981, 0x00000981, 0x000009bc, 0x000009bc,
+ 0x000009c1, 0x000009c4, 0x000009cd, 0x000009cd,
+ 0x000009e2, 0x000009e3, 0x000009fe, 0x000009fe,
0x00000a01, 0x00000a02, 0x00000a3c, 0x00000a3c,
0x00000a41, 0x00000a42, 0x00000a47, 0x00000a48,
0x00000a4b, 0x00000a4d, 0x00000a51, 0x00000a51,
@@ -54,64 +54,65 @@ static const unsigned int _ucprop_ranges[] = {
0x00000b56, 0x00000b56, 0x00000b62, 0x00000b63,
0x00000b82, 0x00000b82, 0x00000bc0, 0x00000bc0,
0x00000bcd, 0x00000bcd, 0x00000c00, 0x00000c00,
- 0x00000c3e, 0x00000c40, 0x00000c46, 0x00000c48,
- 0x00000c4a, 0x00000c4d, 0x00000c55, 0x00000c56,
- 0x00000c62, 0x00000c63, 0x00000c81, 0x00000c81,
- 0x00000cbc, 0x00000cbc, 0x00000cbf, 0x00000cbf,
- 0x00000cc6, 0x00000cc6, 0x00000ccc, 0x00000ccd,
- 0x00000ce2, 0x00000ce3, 0x00000d00, 0x00000d01,
- 0x00000d3b, 0x00000d3c, 0x00000d41, 0x00000d44,
- 0x00000d4d, 0x00000d4d, 0x00000d62, 0x00000d63,
- 0x00000dca, 0x00000dca, 0x00000dd2, 0x00000dd4,
- 0x00000dd6, 0x00000dd6, 0x00000e31, 0x00000e31,
- 0x00000e34, 0x00000e3a, 0x00000e47, 0x00000e4e,
- 0x00000eb1, 0x00000eb1, 0x00000eb4, 0x00000eb9,
- 0x00000ebb, 0x00000ebc, 0x00000ec8, 0x00000ecd,
- 0x00000f18, 0x00000f19, 0x00000f35, 0x00000f35,
- 0x00000f37, 0x00000f37, 0x00000f39, 0x00000f39,
- 0x00000f71, 0x00000f7e, 0x00000f80, 0x00000f84,
- 0x00000f86, 0x00000f87, 0x00000f8d, 0x00000f97,
- 0x00000f99, 0x00000fbc, 0x00000fc6, 0x00000fc6,
- 0x0000102d, 0x00001030, 0x00001032, 0x00001037,
- 0x00001039, 0x0000103a, 0x0000103d, 0x0000103e,
- 0x00001058, 0x00001059, 0x0000105e, 0x00001060,
- 0x00001071, 0x00001074, 0x00001082, 0x00001082,
- 0x00001085, 0x00001086, 0x0000108d, 0x0000108d,
- 0x0000109d, 0x0000109d, 0x0000135d, 0x0000135f,
- 0x00001712, 0x00001714, 0x00001732, 0x00001734,
- 0x00001752, 0x00001753, 0x00001772, 0x00001773,
- 0x000017b4, 0x000017b5, 0x000017b7, 0x000017bd,
- 0x000017c6, 0x000017c6, 0x000017c9, 0x000017d3,
- 0x000017dd, 0x000017dd, 0x0000180b, 0x0000180d,
- 0x00001885, 0x00001886, 0x000018a9, 0x000018a9,
- 0x00001920, 0x00001922, 0x00001927, 0x00001928,
- 0x00001932, 0x00001932, 0x00001939, 0x0000193b,
- 0x00001a17, 0x00001a18, 0x00001a1b, 0x00001a1b,
- 0x00001a56, 0x00001a56, 0x00001a58, 0x00001a5e,
- 0x00001a60, 0x00001a60, 0x00001a62, 0x00001a62,
- 0x00001a65, 0x00001a6c, 0x00001a73, 0x00001a7c,
- 0x00001a7f, 0x00001a7f, 0x00001ab0, 0x00001abd,
- 0x00001b00, 0x00001b03, 0x00001b34, 0x00001b34,
- 0x00001b36, 0x00001b3a, 0x00001b3c, 0x00001b3c,
- 0x00001b42, 0x00001b42, 0x00001b6b, 0x00001b73,
- 0x00001b80, 0x00001b81, 0x00001ba2, 0x00001ba5,
- 0x00001ba8, 0x00001ba9, 0x00001bab, 0x00001bad,
- 0x00001be6, 0x00001be6, 0x00001be8, 0x00001be9,
- 0x00001bed, 0x00001bed, 0x00001bef, 0x00001bf1,
- 0x00001c2c, 0x00001c33, 0x00001c36, 0x00001c37,
- 0x00001cd0, 0x00001cd2, 0x00001cd4, 0x00001ce0,
- 0x00001ce2, 0x00001ce8, 0x00001ced, 0x00001ced,
- 0x00001cf4, 0x00001cf4, 0x00001cf8, 0x00001cf9,
- 0x00001dc0, 0x00001df9, 0x00001dfb, 0x00001dff,
- 0x000020d0, 0x000020dc, 0x000020e1, 0x000020e1,
- 0x000020e5, 0x000020f0, 0x00002cef, 0x00002cf1,
- 0x00002d7f, 0x00002d7f, 0x00002de0, 0x00002dff,
- 0x0000302a, 0x0000302d, 0x00003099, 0x0000309a,
- 0x0000a66f, 0x0000a66f, 0x0000a674, 0x0000a67d,
- 0x0000a69e, 0x0000a69f, 0x0000a6f0, 0x0000a6f1,
- 0x0000a802, 0x0000a802, 0x0000a806, 0x0000a806,
- 0x0000a80b, 0x0000a80b, 0x0000a825, 0x0000a826,
- 0x0000a8c4, 0x0000a8c5, 0x0000a8e0, 0x0000a8f1,
+ 0x00000c04, 0x00000c04, 0x00000c3e, 0x00000c40,
+ 0x00000c46, 0x00000c48, 0x00000c4a, 0x00000c4d,
+ 0x00000c55, 0x00000c56, 0x00000c62, 0x00000c63,
+ 0x00000c81, 0x00000c81, 0x00000cbc, 0x00000cbc,
+ 0x00000cbf, 0x00000cbf, 0x00000cc6, 0x00000cc6,
+ 0x00000ccc, 0x00000ccd, 0x00000ce2, 0x00000ce3,
+ 0x00000d00, 0x00000d01, 0x00000d3b, 0x00000d3c,
+ 0x00000d41, 0x00000d44, 0x00000d4d, 0x00000d4d,
+ 0x00000d62, 0x00000d63, 0x00000dca, 0x00000dca,
+ 0x00000dd2, 0x00000dd4, 0x00000dd6, 0x00000dd6,
+ 0x00000e31, 0x00000e31, 0x00000e34, 0x00000e3a,
+ 0x00000e47, 0x00000e4e, 0x00000eb1, 0x00000eb1,
+ 0x00000eb4, 0x00000eb9, 0x00000ebb, 0x00000ebc,
+ 0x00000ec8, 0x00000ecd, 0x00000f18, 0x00000f19,
+ 0x00000f35, 0x00000f35, 0x00000f37, 0x00000f37,
+ 0x00000f39, 0x00000f39, 0x00000f71, 0x00000f7e,
+ 0x00000f80, 0x00000f84, 0x00000f86, 0x00000f87,
+ 0x00000f8d, 0x00000f97, 0x00000f99, 0x00000fbc,
+ 0x00000fc6, 0x00000fc6, 0x0000102d, 0x00001030,
+ 0x00001032, 0x00001037, 0x00001039, 0x0000103a,
+ 0x0000103d, 0x0000103e, 0x00001058, 0x00001059,
+ 0x0000105e, 0x00001060, 0x00001071, 0x00001074,
+ 0x00001082, 0x00001082, 0x00001085, 0x00001086,
+ 0x0000108d, 0x0000108d, 0x0000109d, 0x0000109d,
+ 0x0000135d, 0x0000135f, 0x00001712, 0x00001714,
+ 0x00001732, 0x00001734, 0x00001752, 0x00001753,
+ 0x00001772, 0x00001773, 0x000017b4, 0x000017b5,
+ 0x000017b7, 0x000017bd, 0x000017c6, 0x000017c6,
+ 0x000017c9, 0x000017d3, 0x000017dd, 0x000017dd,
+ 0x0000180b, 0x0000180d, 0x00001885, 0x00001886,
+ 0x000018a9, 0x000018a9, 0x00001920, 0x00001922,
+ 0x00001927, 0x00001928, 0x00001932, 0x00001932,
+ 0x00001939, 0x0000193b, 0x00001a17, 0x00001a18,
+ 0x00001a1b, 0x00001a1b, 0x00001a56, 0x00001a56,
+ 0x00001a58, 0x00001a5e, 0x00001a60, 0x00001a60,
+ 0x00001a62, 0x00001a62, 0x00001a65, 0x00001a6c,
+ 0x00001a73, 0x00001a7c, 0x00001a7f, 0x00001a7f,
+ 0x00001ab0, 0x00001abd, 0x00001b00, 0x00001b03,
+ 0x00001b34, 0x00001b34, 0x00001b36, 0x00001b3a,
+ 0x00001b3c, 0x00001b3c, 0x00001b42, 0x00001b42,
+ 0x00001b6b, 0x00001b73, 0x00001b80, 0x00001b81,
+ 0x00001ba2, 0x00001ba5, 0x00001ba8, 0x00001ba9,
+ 0x00001bab, 0x00001bad, 0x00001be6, 0x00001be6,
+ 0x00001be8, 0x00001be9, 0x00001bed, 0x00001bed,
+ 0x00001bef, 0x00001bf1, 0x00001c2c, 0x00001c33,
+ 0x00001c36, 0x00001c37, 0x00001cd0, 0x00001cd2,
+ 0x00001cd4, 0x00001ce0, 0x00001ce2, 0x00001ce8,
+ 0x00001ced, 0x00001ced, 0x00001cf4, 0x00001cf4,
+ 0x00001cf8, 0x00001cf9, 0x00001dc0, 0x00001df9,
+ 0x00001dfb, 0x00001dff, 0x000020d0, 0x000020dc,
+ 0x000020e1, 0x000020e1, 0x000020e5, 0x000020f0,
+ 0x00002cef, 0x00002cf1, 0x00002d7f, 0x00002d7f,
+ 0x00002de0, 0x00002dff, 0x0000302a, 0x0000302d,
+ 0x00003099, 0x0000309a, 0x0000a66f, 0x0000a66f,
+ 0x0000a674, 0x0000a67d, 0x0000a69e, 0x0000a69f,
+ 0x0000a6f0, 0x0000a6f1, 0x0000a802, 0x0000a802,
+ 0x0000a806, 0x0000a806, 0x0000a80b, 0x0000a80b,
+ 0x0000a825, 0x0000a826, 0x0000a8c4, 0x0000a8c5,
+ 0x0000a8e0, 0x0000a8f1, 0x0000a8ff, 0x0000a8ff,
0x0000a926, 0x0000a92d, 0x0000a947, 0x0000a951,
0x0000a980, 0x0000a982, 0x0000a9b3, 0x0000a9b3,
0x0000a9b6, 0x0000a9b9, 0x0000a9bc, 0x0000a9bc,
@@ -129,30 +130,32 @@ static const unsigned int _ucprop_ranges[] = {
0x00010376, 0x0001037a, 0x00010a01, 0x00010a03,
0x00010a05, 0x00010a06, 0x00010a0c, 0x00010a0f,
0x00010a38, 0x00010a3a, 0x00010a3f, 0x00010a3f,
- 0x00010ae5, 0x00010ae6, 0x00011001, 0x00011001,
+ 0x00010ae5, 0x00010ae6, 0x00010d24, 0x00010d27,
+ 0x00010f46, 0x00010f50, 0x00011001, 0x00011001,
0x00011038, 0x00011046, 0x0001107f, 0x00011081,
0x000110b3, 0x000110b6, 0x000110b9, 0x000110ba,
0x00011100, 0x00011102, 0x00011127, 0x0001112b,
0x0001112d, 0x00011134, 0x00011173, 0x00011173,
0x00011180, 0x00011181, 0x000111b6, 0x000111be,
- 0x000111ca, 0x000111cc, 0x0001122f, 0x00011231,
+ 0x000111c9, 0x000111cc, 0x0001122f, 0x00011231,
0x00011234, 0x00011234, 0x00011236, 0x00011237,
0x0001123e, 0x0001123e, 0x000112df, 0x000112df,
0x000112e3, 0x000112ea, 0x00011300, 0x00011301,
- 0x0001133c, 0x0001133c, 0x00011340, 0x00011340,
+ 0x0001133b, 0x0001133c, 0x00011340, 0x00011340,
0x00011366, 0x0001136c, 0x00011370, 0x00011374,
0x00011438, 0x0001143f, 0x00011442, 0x00011444,
- 0x00011446, 0x00011446, 0x000114b3, 0x000114b8,
- 0x000114ba, 0x000114ba, 0x000114bf, 0x000114c0,
- 0x000114c2, 0x000114c3, 0x000115b2, 0x000115b5,
- 0x000115bc, 0x000115bd, 0x000115bf, 0x000115c0,
- 0x000115dc, 0x000115dd, 0x00011633, 0x0001163a,
- 0x0001163d, 0x0001163d, 0x0001163f, 0x00011640,
- 0x000116ab, 0x000116ab, 0x000116ad, 0x000116ad,
- 0x000116b0, 0x000116b5, 0x000116b7, 0x000116b7,
- 0x0001171d, 0x0001171f, 0x00011722, 0x00011725,
- 0x00011727, 0x0001172b, 0x00011a01, 0x00011a06,
- 0x00011a09, 0x00011a0a, 0x00011a33, 0x00011a38,
+ 0x00011446, 0x00011446, 0x0001145e, 0x0001145e,
+ 0x000114b3, 0x000114b8, 0x000114ba, 0x000114ba,
+ 0x000114bf, 0x000114c0, 0x000114c2, 0x000114c3,
+ 0x000115b2, 0x000115b5, 0x000115bc, 0x000115bd,
+ 0x000115bf, 0x000115c0, 0x000115dc, 0x000115dd,
+ 0x00011633, 0x0001163a, 0x0001163d, 0x0001163d,
+ 0x0001163f, 0x00011640, 0x000116ab, 0x000116ab,
+ 0x000116ad, 0x000116ad, 0x000116b0, 0x000116b5,
+ 0x000116b7, 0x000116b7, 0x0001171d, 0x0001171f,
+ 0x00011722, 0x00011725, 0x00011727, 0x0001172b,
+ 0x0001182f, 0x00011837, 0x00011839, 0x0001183a,
+ 0x00011a01, 0x00011a0a, 0x00011a33, 0x00011a38,
0x00011a3b, 0x00011a3e, 0x00011a47, 0x00011a47,
0x00011a51, 0x00011a56, 0x00011a59, 0x00011a5b,
0x00011a8a, 0x00011a96, 0x00011a98, 0x00011a99,
@@ -162,6 +165,8 @@ static const unsigned int _ucprop_ranges[] = {
0x00011cb5, 0x00011cb6, 0x00011d31, 0x00011d36,
0x00011d3a, 0x00011d3a, 0x00011d3c, 0x00011d3d,
0x00011d3f, 0x00011d45, 0x00011d47, 0x00011d47,
+ 0x00011d90, 0x00011d91, 0x00011d95, 0x00011d95,
+ 0x00011d97, 0x00011d97, 0x00011ef3, 0x00011ef4,
0x00016af0, 0x00016af4, 0x00016b30, 0x00016b36,
0x00016f8f, 0x00016f92, 0x0001bc9d, 0x0001bc9e,
0x0001d167, 0x0001d169, 0x0001d17b, 0x0001d182,
@@ -231,27 +236,30 @@ static const unsigned int _ucprop_ranges[] = {
0x0000abec, 0x0000abec, 0x00011000, 0x00011000,
0x00011002, 0x00011002, 0x00011082, 0x00011082,
0x000110b0, 0x000110b2, 0x000110b7, 0x000110b8,
- 0x0001112c, 0x0001112c, 0x00011182, 0x00011182,
- 0x000111b3, 0x000111b5, 0x000111bf, 0x000111c0,
- 0x0001122c, 0x0001122e, 0x00011232, 0x00011233,
- 0x00011235, 0x00011235, 0x000112e0, 0x000112e2,
- 0x00011302, 0x00011303, 0x0001133e, 0x0001133f,
- 0x00011341, 0x00011344, 0x00011347, 0x00011348,
- 0x0001134b, 0x0001134d, 0x00011357, 0x00011357,
- 0x00011362, 0x00011363, 0x00011435, 0x00011437,
- 0x00011440, 0x00011441, 0x00011445, 0x00011445,
- 0x000114b0, 0x000114b2, 0x000114b9, 0x000114b9,
- 0x000114bb, 0x000114be, 0x000114c1, 0x000114c1,
- 0x000115af, 0x000115b1, 0x000115b8, 0x000115bb,
- 0x000115be, 0x000115be, 0x00011630, 0x00011632,
- 0x0001163b, 0x0001163c, 0x0001163e, 0x0001163e,
- 0x000116ac, 0x000116ac, 0x000116ae, 0x000116af,
- 0x000116b6, 0x000116b6, 0x00011720, 0x00011721,
- 0x00011726, 0x00011726, 0x00011a07, 0x00011a08,
+ 0x0001112c, 0x0001112c, 0x00011145, 0x00011146,
+ 0x00011182, 0x00011182, 0x000111b3, 0x000111b5,
+ 0x000111bf, 0x000111c0, 0x0001122c, 0x0001122e,
+ 0x00011232, 0x00011233, 0x00011235, 0x00011235,
+ 0x000112e0, 0x000112e2, 0x00011302, 0x00011303,
+ 0x0001133e, 0x0001133f, 0x00011341, 0x00011344,
+ 0x00011347, 0x00011348, 0x0001134b, 0x0001134d,
+ 0x00011357, 0x00011357, 0x00011362, 0x00011363,
+ 0x00011435, 0x00011437, 0x00011440, 0x00011441,
+ 0x00011445, 0x00011445, 0x000114b0, 0x000114b2,
+ 0x000114b9, 0x000114b9, 0x000114bb, 0x000114be,
+ 0x000114c1, 0x000114c1, 0x000115af, 0x000115b1,
+ 0x000115b8, 0x000115bb, 0x000115be, 0x000115be,
+ 0x00011630, 0x00011632, 0x0001163b, 0x0001163c,
+ 0x0001163e, 0x0001163e, 0x000116ac, 0x000116ac,
+ 0x000116ae, 0x000116af, 0x000116b6, 0x000116b6,
+ 0x00011720, 0x00011721, 0x00011726, 0x00011726,
+ 0x0001182c, 0x0001182e, 0x00011838, 0x00011838,
0x00011a39, 0x00011a39, 0x00011a57, 0x00011a58,
0x00011a97, 0x00011a97, 0x00011c2f, 0x00011c2f,
0x00011c3e, 0x00011c3e, 0x00011ca9, 0x00011ca9,
0x00011cb1, 0x00011cb1, 0x00011cb4, 0x00011cb4,
+ 0x00011d8a, 0x00011d8e, 0x00011d93, 0x00011d94,
+ 0x00011d96, 0x00011d96, 0x00011ef5, 0x00011ef6,
0x00016f51, 0x00016f7e, 0x0001d165, 0x0001d166,
0x0001d16d, 0x0001d172, 0x00000488, 0x00000489,
0x00001abe, 0x00001abe, 0x000020dd, 0x000020e0,
@@ -275,13 +283,14 @@ static const unsigned int _ucprop_ranges[] = {
0x0000a9d0, 0x0000a9d9, 0x0000a9f0, 0x0000a9f9,
0x0000aa50, 0x0000aa59, 0x0000abf0, 0x0000abf9,
0x0000ff10, 0x0000ff19, 0x000104a0, 0x000104a9,
- 0x00011066, 0x0001106f, 0x000110f0, 0x000110f9,
- 0x00011136, 0x0001113f, 0x000111d0, 0x000111d9,
- 0x000112f0, 0x000112f9, 0x00011450, 0x00011459,
- 0x000114d0, 0x000114d9, 0x00011650, 0x00011659,
- 0x000116c0, 0x000116c9, 0x00011730, 0x00011739,
- 0x000118e0, 0x000118e9, 0x00011c50, 0x00011c59,
- 0x00011d50, 0x00011d59, 0x00016a60, 0x00016a69,
+ 0x00010d30, 0x00010d39, 0x00011066, 0x0001106f,
+ 0x000110f0, 0x000110f9, 0x00011136, 0x0001113f,
+ 0x000111d0, 0x000111d9, 0x000112f0, 0x000112f9,
+ 0x00011450, 0x00011459, 0x000114d0, 0x000114d9,
+ 0x00011650, 0x00011659, 0x000116c0, 0x000116c9,
+ 0x00011730, 0x00011739, 0x000118e0, 0x000118e9,
+ 0x00011c50, 0x00011c59, 0x00011d50, 0x00011d59,
+ 0x00011da0, 0x00011da9, 0x00016a60, 0x00016a69,
0x00016b50, 0x00016b59, 0x0001d7ce, 0x0001d7ff,
0x0001e950, 0x0001e959, 0x000016ee, 0x000016f0,
0x00002160, 0x00002182, 0x00002185, 0x00002188,
@@ -310,31 +319,35 @@ static const unsigned int _ucprop_ranges[] = {
0x00010879, 0x0001087f, 0x000108a7, 0x000108af,
0x000108fb, 0x000108ff, 0x00010916, 0x0001091b,
0x000109bc, 0x000109bd, 0x000109c0, 0x000109cf,
- 0x000109d2, 0x000109ff, 0x00010a40, 0x00010a47,
+ 0x000109d2, 0x000109ff, 0x00010a40, 0x00010a48,
0x00010a7d, 0x00010a7e, 0x00010a9d, 0x00010a9f,
0x00010aeb, 0x00010aef, 0x00010b58, 0x00010b5f,
0x00010b78, 0x00010b7f, 0x00010ba9, 0x00010baf,
0x00010cfa, 0x00010cff, 0x00010e60, 0x00010e7e,
+ 0x00010f1d, 0x00010f26, 0x00010f51, 0x00010f54,
0x00011052, 0x00011065, 0x000111e1, 0x000111f4,
0x0001173a, 0x0001173b, 0x000118ea, 0x000118f2,
0x00011c5a, 0x00011c6c, 0x00016b5b, 0x00016b61,
- 0x0001d360, 0x0001d371, 0x0001e8c7, 0x0001e8cf,
- 0x0001f100, 0x0001f10c, 0x00000020, 0x00000020,
- 0x000000a0, 0x000000a0, 0x00001680, 0x00001680,
- 0x00002000, 0x0000200a, 0x0000202f, 0x0000202f,
- 0x0000205f, 0x0000205f, 0x00003000, 0x00003000,
- 0x00002028, 0x00002028, 0x00002029, 0x00002029,
- 0x00000000, 0x0000001f, 0x0000007f, 0x0000009f,
- 0x000000ad, 0x000000ad, 0x00000600, 0x00000605,
- 0x0000061c, 0x0000061c, 0x000006dd, 0x000006dd,
- 0x0000070f, 0x0000070f, 0x000008e2, 0x000008e2,
- 0x0000180e, 0x0000180e, 0x0000200b, 0x0000200f,
- 0x0000202a, 0x0000202e, 0x00002060, 0x00002064,
- 0x00002066, 0x0000206f, 0x0000feff, 0x0000feff,
- 0x0000fff9, 0x0000fffb, 0x000110bd, 0x000110bd,
+ 0x00016e80, 0x00016e96, 0x0001d2e0, 0x0001d2f3,
+ 0x0001d360, 0x0001d378, 0x0001e8c7, 0x0001e8cf,
+ 0x0001ec71, 0x0001ecab, 0x0001ecad, 0x0001ecaf,
+ 0x0001ecb1, 0x0001ecb4, 0x0001f100, 0x0001f10c,
+ 0x00000020, 0x00000020, 0x000000a0, 0x000000a0,
+ 0x00001680, 0x00001680, 0x00002000, 0x0000200a,
+ 0x0000202f, 0x0000202f, 0x0000205f, 0x0000205f,
+ 0x00003000, 0x00003000, 0x00002028, 0x00002028,
+ 0x00002029, 0x00002029, 0x00000000, 0x0000001f,
+ 0x0000007f, 0x0000009f, 0x000000ad, 0x000000ad,
+ 0x00000600, 0x00000605, 0x0000061c, 0x0000061c,
+ 0x000006dd, 0x000006dd, 0x0000070f, 0x0000070f,
+ 0x000008e2, 0x000008e2, 0x0000180e, 0x0000180e,
+ 0x0000200b, 0x0000200f, 0x0000202a, 0x0000202e,
+ 0x00002060, 0x00002064, 0x00002066, 0x0000206f,
+ 0x0000feff, 0x0000feff, 0x0000fff9, 0x0000fffb,
+ 0x000110bd, 0x000110bd, 0x000110cd, 0x000110cd,
0x0001bca0, 0x0001bca3, 0x0001d173, 0x0001d17a,
0x000e0001, 0x000e0001, 0x000e0020, 0x000e007f,
- 0x00010000, 0x0010ffff, 0x0000e000, 0x0000f8ff,
+ 0x0000d800, 0x0000dfff, 0x0000e000, 0x0000f8ff,
0x000f0000, 0x000ffffd, 0x00100000, 0x0010fffd,
0x00000041, 0x0000005a, 0x000000c0, 0x000000d6,
0x000000d8, 0x000000de, 0x00000100, 0x00000100,
@@ -474,6 +487,7 @@ static const unsigned int _ucprop_ranges[] = {
0x0000052e, 0x0000052e, 0x00000531, 0x00000556,
0x000010a0, 0x000010c5, 0x000010c7, 0x000010c7,
0x000010cd, 0x000010cd, 0x000013a0, 0x000013f5,
+ 0x00001c90, 0x00001cba, 0x00001cbd, 0x00001cbf,
0x00001e00, 0x00001e00, 0x00001e02, 0x00001e02,
0x00001e04, 0x00001e04, 0x00001e06, 0x00001e06,
0x00001e08, 0x00001e08, 0x00001e0a, 0x00001e0a,
@@ -631,9 +645,10 @@ static const unsigned int _ucprop_ranges[] = {
0x0000a7a4, 0x0000a7a4, 0x0000a7a6, 0x0000a7a6,
0x0000a7a8, 0x0000a7a8, 0x0000a7aa, 0x0000a7ae,
0x0000a7b0, 0x0000a7b4, 0x0000a7b6, 0x0000a7b6,
- 0x0000ff21, 0x0000ff3a, 0x00010400, 0x00010427,
- 0x000104b0, 0x000104d3, 0x00010c80, 0x00010cb2,
- 0x000118a0, 0x000118bf, 0x0001d400, 0x0001d419,
+ 0x0000a7b8, 0x0000a7b8, 0x0000ff21, 0x0000ff3a,
+ 0x00010400, 0x00010427, 0x000104b0, 0x000104d3,
+ 0x00010c80, 0x00010cb2, 0x000118a0, 0x000118bf,
+ 0x00016e40, 0x00016e5f, 0x0001d400, 0x0001d419,
0x0001d434, 0x0001d44d, 0x0001d468, 0x0001d481,
0x0001d49c, 0x0001d49c, 0x0001d49e, 0x0001d49f,
0x0001d4a2, 0x0001d4a2, 0x0001d4a5, 0x0001d4a6,
@@ -784,7 +799,8 @@ static const unsigned int _ucprop_ranges[] = {
0x00000525, 0x00000525, 0x00000527, 0x00000527,
0x00000529, 0x00000529, 0x0000052b, 0x0000052b,
0x0000052d, 0x0000052d, 0x0000052f, 0x0000052f,
- 0x00000561, 0x00000587, 0x000013f8, 0x000013fd,
+ 0x00000560, 0x00000588, 0x000010d0, 0x000010fa,
+ 0x000010fd, 0x000010ff, 0x000013f8, 0x000013fd,
0x00001c80, 0x00001c88, 0x00001d00, 0x00001d2b,
0x00001d6b, 0x00001d77, 0x00001d79, 0x00001d9a,
0x00001e01, 0x00001e01, 0x00001e03, 0x00001e03,
@@ -945,134 +961,135 @@ static const unsigned int _ucprop_ranges[] = {
0x0000a79f, 0x0000a79f, 0x0000a7a1, 0x0000a7a1,
0x0000a7a3, 0x0000a7a3, 0x0000a7a5, 0x0000a7a5,
0x0000a7a7, 0x0000a7a7, 0x0000a7a9, 0x0000a7a9,
- 0x0000a7b5, 0x0000a7b5, 0x0000a7b7, 0x0000a7b7,
+ 0x0000a7af, 0x0000a7af, 0x0000a7b5, 0x0000a7b5,
+ 0x0000a7b7, 0x0000a7b7, 0x0000a7b9, 0x0000a7b9,
0x0000a7fa, 0x0000a7fa, 0x0000ab30, 0x0000ab5a,
0x0000ab60, 0x0000ab65, 0x0000ab70, 0x0000abbf,
0x0000fb00, 0x0000fb06, 0x0000fb13, 0x0000fb17,
0x0000ff41, 0x0000ff5a, 0x00010428, 0x0001044f,
0x000104d8, 0x000104fb, 0x00010cc0, 0x00010cf2,
- 0x000118c0, 0x000118df, 0x0001d41a, 0x0001d433,
- 0x0001d44e, 0x0001d454, 0x0001d456, 0x0001d467,
- 0x0001d482, 0x0001d49b, 0x0001d4b6, 0x0001d4b9,
- 0x0001d4bb, 0x0001d4bb, 0x0001d4bd, 0x0001d4c3,
- 0x0001d4c5, 0x0001d4cf, 0x0001d4ea, 0x0001d503,
- 0x0001d51e, 0x0001d537, 0x0001d552, 0x0001d56b,
- 0x0001d586, 0x0001d59f, 0x0001d5ba, 0x0001d5d3,
- 0x0001d5ee, 0x0001d607, 0x0001d622, 0x0001d63b,
- 0x0001d656, 0x0001d66f, 0x0001d68a, 0x0001d6a5,
- 0x0001d6c2, 0x0001d6da, 0x0001d6dc, 0x0001d6e1,
- 0x0001d6fc, 0x0001d714, 0x0001d716, 0x0001d71b,
- 0x0001d736, 0x0001d74e, 0x0001d750, 0x0001d755,
- 0x0001d770, 0x0001d788, 0x0001d78a, 0x0001d78f,
- 0x0001d7aa, 0x0001d7c2, 0x0001d7c4, 0x0001d7c9,
- 0x0001d7cb, 0x0001d7cb, 0x0001e922, 0x0001e943,
- 0x000001c5, 0x000001c5, 0x000001c8, 0x000001c8,
- 0x000001cb, 0x000001cb, 0x000001f2, 0x000001f2,
- 0x00001f88, 0x00001f8f, 0x00001f98, 0x00001f9f,
- 0x00001fa8, 0x00001faf, 0x00001fbc, 0x00001fbc,
- 0x00001fcc, 0x00001fcc, 0x00001ffc, 0x00001ffc,
- 0x000002b0, 0x000002c1, 0x000002c6, 0x000002d1,
- 0x000002e0, 0x000002e4, 0x000002ec, 0x000002ec,
- 0x000002ee, 0x000002ee, 0x00000374, 0x00000374,
- 0x0000037a, 0x0000037a, 0x00000559, 0x00000559,
- 0x00000640, 0x00000640, 0x000006e5, 0x000006e6,
- 0x000007f4, 0x000007f5, 0x000007fa, 0x000007fa,
- 0x0000081a, 0x0000081a, 0x00000824, 0x00000824,
- 0x00000828, 0x00000828, 0x00000971, 0x00000971,
- 0x00000e46, 0x00000e46, 0x00000ec6, 0x00000ec6,
- 0x000010fc, 0x000010fc, 0x000017d7, 0x000017d7,
- 0x00001843, 0x00001843, 0x00001aa7, 0x00001aa7,
- 0x00001c78, 0x00001c7d, 0x00001d2c, 0x00001d6a,
- 0x00001d78, 0x00001d78, 0x00001d9b, 0x00001dbf,
- 0x00002071, 0x00002071, 0x0000207f, 0x0000207f,
- 0x00002090, 0x0000209c, 0x00002c7c, 0x00002c7d,
- 0x00002d6f, 0x00002d6f, 0x00002e2f, 0x00002e2f,
- 0x00003005, 0x00003005, 0x00003031, 0x00003035,
- 0x0000303b, 0x0000303b, 0x0000309d, 0x0000309e,
- 0x000030fc, 0x000030fe, 0x0000a015, 0x0000a015,
- 0x0000a4f8, 0x0000a4fd, 0x0000a60c, 0x0000a60c,
- 0x0000a67f, 0x0000a67f, 0x0000a69c, 0x0000a69d,
- 0x0000a717, 0x0000a71f, 0x0000a770, 0x0000a770,
- 0x0000a788, 0x0000a788, 0x0000a7f8, 0x0000a7f9,
- 0x0000a9cf, 0x0000a9cf, 0x0000a9e6, 0x0000a9e6,
- 0x0000aa70, 0x0000aa70, 0x0000aadd, 0x0000aadd,
- 0x0000aaf3, 0x0000aaf4, 0x0000ab5c, 0x0000ab5f,
- 0x0000ff70, 0x0000ff70, 0x0000ff9e, 0x0000ff9f,
- 0x00016b40, 0x00016b43, 0x00016f93, 0x00016f9f,
- 0x00016fe0, 0x00016fe1, 0x000000aa, 0x000000aa,
- 0x000000ba, 0x000000ba, 0x000001bb, 0x000001bb,
- 0x000001c0, 0x000001c3, 0x00000294, 0x00000294,
- 0x000005d0, 0x000005ea, 0x000005f0, 0x000005f2,
- 0x00000620, 0x0000063f, 0x00000641, 0x0000064a,
- 0x0000066e, 0x0000066f, 0x00000671, 0x000006d3,
- 0x000006d5, 0x000006d5, 0x000006ee, 0x000006ef,
- 0x000006fa, 0x000006fc, 0x000006ff, 0x000006ff,
- 0x00000710, 0x00000710, 0x00000712, 0x0000072f,
- 0x0000074d, 0x000007a5, 0x000007b1, 0x000007b1,
- 0x000007ca, 0x000007ea, 0x00000800, 0x00000815,
- 0x00000840, 0x00000858, 0x00000860, 0x0000086a,
- 0x000008a0, 0x000008b4, 0x000008b6, 0x000008bd,
- 0x00000904, 0x00000939, 0x0000093d, 0x0000093d,
- 0x00000950, 0x00000950, 0x00000958, 0x00000961,
- 0x00000972, 0x00000980, 0x00000985, 0x0000098c,
- 0x0000098f, 0x00000990, 0x00000993, 0x000009a8,
- 0x000009aa, 0x000009b0, 0x000009b2, 0x000009b2,
- 0x000009b6, 0x000009b9, 0x000009bd, 0x000009bd,
- 0x000009ce, 0x000009ce, 0x000009dc, 0x000009dd,
- 0x000009df, 0x000009e1, 0x000009f0, 0x000009f1,
- 0x000009fc, 0x000009fc, 0x00000a05, 0x00000a0a,
- 0x00000a0f, 0x00000a10, 0x00000a13, 0x00000a28,
- 0x00000a2a, 0x00000a30, 0x00000a32, 0x00000a33,
- 0x00000a35, 0x00000a36, 0x00000a38, 0x00000a39,
- 0x00000a59, 0x00000a5c, 0x00000a5e, 0x00000a5e,
- 0x00000a72, 0x00000a74, 0x00000a85, 0x00000a8d,
- 0x00000a8f, 0x00000a91, 0x00000a93, 0x00000aa8,
- 0x00000aaa, 0x00000ab0, 0x00000ab2, 0x00000ab3,
- 0x00000ab5, 0x00000ab9, 0x00000abd, 0x00000abd,
- 0x00000ad0, 0x00000ad0, 0x00000ae0, 0x00000ae1,
- 0x00000af9, 0x00000af9, 0x00000b05, 0x00000b0c,
- 0x00000b0f, 0x00000b10, 0x00000b13, 0x00000b28,
- 0x00000b2a, 0x00000b30, 0x00000b32, 0x00000b33,
- 0x00000b35, 0x00000b39, 0x00000b3d, 0x00000b3d,
- 0x00000b5c, 0x00000b5d, 0x00000b5f, 0x00000b61,
- 0x00000b71, 0x00000b71, 0x00000b83, 0x00000b83,
- 0x00000b85, 0x00000b8a, 0x00000b8e, 0x00000b90,
- 0x00000b92, 0x00000b95, 0x00000b99, 0x00000b9a,
- 0x00000b9c, 0x00000b9c, 0x00000b9e, 0x00000b9f,
- 0x00000ba3, 0x00000ba4, 0x00000ba8, 0x00000baa,
- 0x00000bae, 0x00000bb9, 0x00000bd0, 0x00000bd0,
- 0x00000c05, 0x00000c0c, 0x00000c0e, 0x00000c10,
- 0x00000c12, 0x00000c28, 0x00000c2a, 0x00000c39,
- 0x00000c3d, 0x00000c3d, 0x00000c58, 0x00000c5a,
- 0x00000c60, 0x00000c61, 0x00000c80, 0x00000c80,
- 0x00000c85, 0x00000c8c, 0x00000c8e, 0x00000c90,
- 0x00000c92, 0x00000ca8, 0x00000caa, 0x00000cb3,
- 0x00000cb5, 0x00000cb9, 0x00000cbd, 0x00000cbd,
- 0x00000cde, 0x00000cde, 0x00000ce0, 0x00000ce1,
- 0x00000cf1, 0x00000cf2, 0x00000d05, 0x00000d0c,
- 0x00000d0e, 0x00000d10, 0x00000d12, 0x00000d3a,
- 0x00000d3d, 0x00000d3d, 0x00000d4e, 0x00000d4e,
- 0x00000d54, 0x00000d56, 0x00000d5f, 0x00000d61,
- 0x00000d7a, 0x00000d7f, 0x00000d85, 0x00000d96,
- 0x00000d9a, 0x00000db1, 0x00000db3, 0x00000dbb,
- 0x00000dbd, 0x00000dbd, 0x00000dc0, 0x00000dc6,
- 0x00000e01, 0x00000e30, 0x00000e32, 0x00000e33,
- 0x00000e40, 0x00000e45, 0x00000e81, 0x00000e82,
- 0x00000e84, 0x00000e84, 0x00000e87, 0x00000e88,
- 0x00000e8a, 0x00000e8a, 0x00000e8d, 0x00000e8d,
- 0x00000e94, 0x00000e97, 0x00000e99, 0x00000e9f,
- 0x00000ea1, 0x00000ea3, 0x00000ea5, 0x00000ea5,
- 0x00000ea7, 0x00000ea7, 0x00000eaa, 0x00000eab,
- 0x00000ead, 0x00000eb0, 0x00000eb2, 0x00000eb3,
- 0x00000ebd, 0x00000ebd, 0x00000ec0, 0x00000ec4,
- 0x00000edc, 0x00000edf, 0x00000f00, 0x00000f00,
- 0x00000f40, 0x00000f47, 0x00000f49, 0x00000f6c,
- 0x00000f88, 0x00000f8c, 0x00001000, 0x0000102a,
- 0x0000103f, 0x0000103f, 0x00001050, 0x00001055,
- 0x0000105a, 0x0000105d, 0x00001061, 0x00001061,
- 0x00001065, 0x00001066, 0x0000106e, 0x00001070,
- 0x00001075, 0x00001081, 0x0000108e, 0x0000108e,
- 0x000010d0, 0x000010fa, 0x000010fd, 0x00001248,
+ 0x000118c0, 0x000118df, 0x00016e60, 0x00016e7f,
+ 0x0001d41a, 0x0001d433, 0x0001d44e, 0x0001d454,
+ 0x0001d456, 0x0001d467, 0x0001d482, 0x0001d49b,
+ 0x0001d4b6, 0x0001d4b9, 0x0001d4bb, 0x0001d4bb,
+ 0x0001d4bd, 0x0001d4c3, 0x0001d4c5, 0x0001d4cf,
+ 0x0001d4ea, 0x0001d503, 0x0001d51e, 0x0001d537,
+ 0x0001d552, 0x0001d56b, 0x0001d586, 0x0001d59f,
+ 0x0001d5ba, 0x0001d5d3, 0x0001d5ee, 0x0001d607,
+ 0x0001d622, 0x0001d63b, 0x0001d656, 0x0001d66f,
+ 0x0001d68a, 0x0001d6a5, 0x0001d6c2, 0x0001d6da,
+ 0x0001d6dc, 0x0001d6e1, 0x0001d6fc, 0x0001d714,
+ 0x0001d716, 0x0001d71b, 0x0001d736, 0x0001d74e,
+ 0x0001d750, 0x0001d755, 0x0001d770, 0x0001d788,
+ 0x0001d78a, 0x0001d78f, 0x0001d7aa, 0x0001d7c2,
+ 0x0001d7c4, 0x0001d7c9, 0x0001d7cb, 0x0001d7cb,
+ 0x0001e922, 0x0001e943, 0x000001c5, 0x000001c5,
+ 0x000001c8, 0x000001c8, 0x000001cb, 0x000001cb,
+ 0x000001f2, 0x000001f2, 0x00001f88, 0x00001f8f,
+ 0x00001f98, 0x00001f9f, 0x00001fa8, 0x00001faf,
+ 0x00001fbc, 0x00001fbc, 0x00001fcc, 0x00001fcc,
+ 0x00001ffc, 0x00001ffc, 0x000002b0, 0x000002c1,
+ 0x000002c6, 0x000002d1, 0x000002e0, 0x000002e4,
+ 0x000002ec, 0x000002ec, 0x000002ee, 0x000002ee,
+ 0x00000374, 0x00000374, 0x0000037a, 0x0000037a,
+ 0x00000559, 0x00000559, 0x00000640, 0x00000640,
+ 0x000006e5, 0x000006e6, 0x000007f4, 0x000007f5,
+ 0x000007fa, 0x000007fa, 0x0000081a, 0x0000081a,
+ 0x00000824, 0x00000824, 0x00000828, 0x00000828,
+ 0x00000971, 0x00000971, 0x00000e46, 0x00000e46,
+ 0x00000ec6, 0x00000ec6, 0x000010fc, 0x000010fc,
+ 0x000017d7, 0x000017d7, 0x00001843, 0x00001843,
+ 0x00001aa7, 0x00001aa7, 0x00001c78, 0x00001c7d,
+ 0x00001d2c, 0x00001d6a, 0x00001d78, 0x00001d78,
+ 0x00001d9b, 0x00001dbf, 0x00002071, 0x00002071,
+ 0x0000207f, 0x0000207f, 0x00002090, 0x0000209c,
+ 0x00002c7c, 0x00002c7d, 0x00002d6f, 0x00002d6f,
+ 0x00002e2f, 0x00002e2f, 0x00003005, 0x00003005,
+ 0x00003031, 0x00003035, 0x0000303b, 0x0000303b,
+ 0x0000309d, 0x0000309e, 0x000030fc, 0x000030fe,
+ 0x0000a015, 0x0000a015, 0x0000a4f8, 0x0000a4fd,
+ 0x0000a60c, 0x0000a60c, 0x0000a67f, 0x0000a67f,
+ 0x0000a69c, 0x0000a69d, 0x0000a717, 0x0000a71f,
+ 0x0000a770, 0x0000a770, 0x0000a788, 0x0000a788,
+ 0x0000a7f8, 0x0000a7f9, 0x0000a9cf, 0x0000a9cf,
+ 0x0000a9e6, 0x0000a9e6, 0x0000aa70, 0x0000aa70,
+ 0x0000aadd, 0x0000aadd, 0x0000aaf3, 0x0000aaf4,
+ 0x0000ab5c, 0x0000ab5f, 0x0000ff70, 0x0000ff70,
+ 0x0000ff9e, 0x0000ff9f, 0x00016b40, 0x00016b43,
+ 0x00016f93, 0x00016f9f, 0x00016fe0, 0x00016fe1,
+ 0x000000aa, 0x000000aa, 0x000000ba, 0x000000ba,
+ 0x000001bb, 0x000001bb, 0x000001c0, 0x000001c3,
+ 0x00000294, 0x00000294, 0x000005d0, 0x000005ea,
+ 0x000005ef, 0x000005f2, 0x00000620, 0x0000063f,
+ 0x00000641, 0x0000064a, 0x0000066e, 0x0000066f,
+ 0x00000671, 0x000006d3, 0x000006d5, 0x000006d5,
+ 0x000006ee, 0x000006ef, 0x000006fa, 0x000006fc,
+ 0x000006ff, 0x000006ff, 0x00000710, 0x00000710,
+ 0x00000712, 0x0000072f, 0x0000074d, 0x000007a5,
+ 0x000007b1, 0x000007b1, 0x000007ca, 0x000007ea,
+ 0x00000800, 0x00000815, 0x00000840, 0x00000858,
+ 0x00000860, 0x0000086a, 0x000008a0, 0x000008b4,
+ 0x000008b6, 0x000008bd, 0x00000904, 0x00000939,
+ 0x0000093d, 0x0000093d, 0x00000950, 0x00000950,
+ 0x00000958, 0x00000961, 0x00000972, 0x00000980,
+ 0x00000985, 0x0000098c, 0x0000098f, 0x00000990,
+ 0x00000993, 0x000009a8, 0x000009aa, 0x000009b0,
+ 0x000009b2, 0x000009b2, 0x000009b6, 0x000009b9,
+ 0x000009bd, 0x000009bd, 0x000009ce, 0x000009ce,
+ 0x000009dc, 0x000009dd, 0x000009df, 0x000009e1,
+ 0x000009f0, 0x000009f1, 0x000009fc, 0x000009fc,
+ 0x00000a05, 0x00000a0a, 0x00000a0f, 0x00000a10,
+ 0x00000a13, 0x00000a28, 0x00000a2a, 0x00000a30,
+ 0x00000a32, 0x00000a33, 0x00000a35, 0x00000a36,
+ 0x00000a38, 0x00000a39, 0x00000a59, 0x00000a5c,
+ 0x00000a5e, 0x00000a5e, 0x00000a72, 0x00000a74,
+ 0x00000a85, 0x00000a8d, 0x00000a8f, 0x00000a91,
+ 0x00000a93, 0x00000aa8, 0x00000aaa, 0x00000ab0,
+ 0x00000ab2, 0x00000ab3, 0x00000ab5, 0x00000ab9,
+ 0x00000abd, 0x00000abd, 0x00000ad0, 0x00000ad0,
+ 0x00000ae0, 0x00000ae1, 0x00000af9, 0x00000af9,
+ 0x00000b05, 0x00000b0c, 0x00000b0f, 0x00000b10,
+ 0x00000b13, 0x00000b28, 0x00000b2a, 0x00000b30,
+ 0x00000b32, 0x00000b33, 0x00000b35, 0x00000b39,
+ 0x00000b3d, 0x00000b3d, 0x00000b5c, 0x00000b5d,
+ 0x00000b5f, 0x00000b61, 0x00000b71, 0x00000b71,
+ 0x00000b83, 0x00000b83, 0x00000b85, 0x00000b8a,
+ 0x00000b8e, 0x00000b90, 0x00000b92, 0x00000b95,
+ 0x00000b99, 0x00000b9a, 0x00000b9c, 0x00000b9c,
+ 0x00000b9e, 0x00000b9f, 0x00000ba3, 0x00000ba4,
+ 0x00000ba8, 0x00000baa, 0x00000bae, 0x00000bb9,
+ 0x00000bd0, 0x00000bd0, 0x00000c05, 0x00000c0c,
+ 0x00000c0e, 0x00000c10, 0x00000c12, 0x00000c28,
+ 0x00000c2a, 0x00000c39, 0x00000c3d, 0x00000c3d,
+ 0x00000c58, 0x00000c5a, 0x00000c60, 0x00000c61,
+ 0x00000c80, 0x00000c80, 0x00000c85, 0x00000c8c,
+ 0x00000c8e, 0x00000c90, 0x00000c92, 0x00000ca8,
+ 0x00000caa, 0x00000cb3, 0x00000cb5, 0x00000cb9,
+ 0x00000cbd, 0x00000cbd, 0x00000cde, 0x00000cde,
+ 0x00000ce0, 0x00000ce1, 0x00000cf1, 0x00000cf2,
+ 0x00000d05, 0x00000d0c, 0x00000d0e, 0x00000d10,
+ 0x00000d12, 0x00000d3a, 0x00000d3d, 0x00000d3d,
+ 0x00000d4e, 0x00000d4e, 0x00000d54, 0x00000d56,
+ 0x00000d5f, 0x00000d61, 0x00000d7a, 0x00000d7f,
+ 0x00000d85, 0x00000d96, 0x00000d9a, 0x00000db1,
+ 0x00000db3, 0x00000dbb, 0x00000dbd, 0x00000dbd,
+ 0x00000dc0, 0x00000dc6, 0x00000e01, 0x00000e30,
+ 0x00000e32, 0x00000e33, 0x00000e40, 0x00000e45,
+ 0x00000e81, 0x00000e82, 0x00000e84, 0x00000e84,
+ 0x00000e87, 0x00000e88, 0x00000e8a, 0x00000e8a,
+ 0x00000e8d, 0x00000e8d, 0x00000e94, 0x00000e97,
+ 0x00000e99, 0x00000e9f, 0x00000ea1, 0x00000ea3,
+ 0x00000ea5, 0x00000ea5, 0x00000ea7, 0x00000ea7,
+ 0x00000eaa, 0x00000eab, 0x00000ead, 0x00000eb0,
+ 0x00000eb2, 0x00000eb3, 0x00000ebd, 0x00000ebd,
+ 0x00000ec0, 0x00000ec4, 0x00000edc, 0x00000edf,
+ 0x00000f00, 0x00000f00, 0x00000f40, 0x00000f47,
+ 0x00000f49, 0x00000f6c, 0x00000f88, 0x00000f8c,
+ 0x00001000, 0x0000102a, 0x0000103f, 0x0000103f,
+ 0x00001050, 0x00001055, 0x0000105a, 0x0000105d,
+ 0x00001061, 0x00001061, 0x00001065, 0x00001066,
+ 0x0000106e, 0x00001070, 0x00001075, 0x00001081,
+ 0x0000108e, 0x0000108e, 0x00001100, 0x00001248,
0x0000124a, 0x0000124d, 0x00001250, 0x00001256,
0x00001258, 0x00001258, 0x0000125a, 0x0000125d,
0x00001260, 0x00001288, 0x0000128a, 0x0000128d,
@@ -1088,7 +1105,7 @@ static const unsigned int _ucprop_ranges[] = {
0x00001740, 0x00001751, 0x00001760, 0x0000176c,
0x0000176e, 0x00001770, 0x00001780, 0x000017b3,
0x000017dc, 0x000017dc, 0x00001820, 0x00001842,
- 0x00001844, 0x00001877, 0x00001880, 0x00001884,
+ 0x00001844, 0x00001878, 0x00001880, 0x00001884,
0x00001887, 0x000018a8, 0x000018aa, 0x000018aa,
0x000018b0, 0x000018f5, 0x00001900, 0x0000191e,
0x00001950, 0x0000196d, 0x00001970, 0x00001974,
@@ -1108,34 +1125,35 @@ static const unsigned int _ucprop_ranges[] = {
0x00003006, 0x00003006, 0x0000303c, 0x0000303c,
0x00003041, 0x00003096, 0x0000309f, 0x0000309f,
0x000030a1, 0x000030fa, 0x000030ff, 0x000030ff,
- 0x00003105, 0x0000312e, 0x00003131, 0x0000318e,
+ 0x00003105, 0x0000312f, 0x00003131, 0x0000318e,
0x000031a0, 0x000031ba, 0x000031f0, 0x000031ff,
- 0x00003400, 0x00004db5, 0x00004e00, 0x0000a014,
- 0x0000a016, 0x0000a48c, 0x0000a4d0, 0x0000a4f7,
- 0x0000a500, 0x0000a60b, 0x0000a610, 0x0000a61f,
- 0x0000a62a, 0x0000a62b, 0x0000a66e, 0x0000a66e,
- 0x0000a6a0, 0x0000a6e5, 0x0000a78f, 0x0000a78f,
- 0x0000a7f7, 0x0000a7f7, 0x0000a7fb, 0x0000a801,
- 0x0000a803, 0x0000a805, 0x0000a807, 0x0000a80a,
- 0x0000a80c, 0x0000a822, 0x0000a840, 0x0000a873,
- 0x0000a882, 0x0000a8b3, 0x0000a8f2, 0x0000a8f7,
- 0x0000a8fb, 0x0000a8fb, 0x0000a8fd, 0x0000a8fd,
- 0x0000a90a, 0x0000a925, 0x0000a930, 0x0000a946,
- 0x0000a960, 0x0000a97c, 0x0000a984, 0x0000a9b2,
- 0x0000a9e0, 0x0000a9e4, 0x0000a9e7, 0x0000a9ef,
- 0x0000a9fa, 0x0000a9fe, 0x0000aa00, 0x0000aa28,
- 0x0000aa40, 0x0000aa42, 0x0000aa44, 0x0000aa4b,
- 0x0000aa60, 0x0000aa6f, 0x0000aa71, 0x0000aa76,
- 0x0000aa7a, 0x0000aa7a, 0x0000aa7e, 0x0000aaaf,
- 0x0000aab1, 0x0000aab1, 0x0000aab5, 0x0000aab6,
- 0x0000aab9, 0x0000aabd, 0x0000aac0, 0x0000aac0,
- 0x0000aac2, 0x0000aac2, 0x0000aadb, 0x0000aadc,
- 0x0000aae0, 0x0000aaea, 0x0000aaf2, 0x0000aaf2,
- 0x0000ab01, 0x0000ab06, 0x0000ab09, 0x0000ab0e,
- 0x0000ab11, 0x0000ab16, 0x0000ab20, 0x0000ab26,
- 0x0000ab28, 0x0000ab2e, 0x0000abc0, 0x0000abe2,
- 0x0000ac00, 0x0000d7a3, 0x0000d7b0, 0x0000d7c6,
- 0x0000d7cb, 0x0000d7fb, 0x0000f900, 0x0000faff,
+ 0x00003400, 0x00004db5, 0x00004e00, 0x00009fef,
+ 0x0000a000, 0x0000a014, 0x0000a016, 0x0000a48c,
+ 0x0000a4d0, 0x0000a4f7, 0x0000a500, 0x0000a60b,
+ 0x0000a610, 0x0000a61f, 0x0000a62a, 0x0000a62b,
+ 0x0000a66e, 0x0000a66e, 0x0000a6a0, 0x0000a6e5,
+ 0x0000a78f, 0x0000a78f, 0x0000a7f7, 0x0000a7f7,
+ 0x0000a7fb, 0x0000a801, 0x0000a803, 0x0000a805,
+ 0x0000a807, 0x0000a80a, 0x0000a80c, 0x0000a822,
+ 0x0000a840, 0x0000a873, 0x0000a882, 0x0000a8b3,
+ 0x0000a8f2, 0x0000a8f7, 0x0000a8fb, 0x0000a8fb,
+ 0x0000a8fd, 0x0000a8fe, 0x0000a90a, 0x0000a925,
+ 0x0000a930, 0x0000a946, 0x0000a960, 0x0000a97c,
+ 0x0000a984, 0x0000a9b2, 0x0000a9e0, 0x0000a9e4,
+ 0x0000a9e7, 0x0000a9ef, 0x0000a9fa, 0x0000a9fe,
+ 0x0000aa00, 0x0000aa28, 0x0000aa40, 0x0000aa42,
+ 0x0000aa44, 0x0000aa4b, 0x0000aa60, 0x0000aa6f,
+ 0x0000aa71, 0x0000aa76, 0x0000aa7a, 0x0000aa7a,
+ 0x0000aa7e, 0x0000aaaf, 0x0000aab1, 0x0000aab1,
+ 0x0000aab5, 0x0000aab6, 0x0000aab9, 0x0000aabd,
+ 0x0000aac0, 0x0000aac0, 0x0000aac2, 0x0000aac2,
+ 0x0000aadb, 0x0000aadc, 0x0000aae0, 0x0000aaea,
+ 0x0000aaf2, 0x0000aaf2, 0x0000ab01, 0x0000ab06,
+ 0x0000ab09, 0x0000ab0e, 0x0000ab11, 0x0000ab16,
+ 0x0000ab20, 0x0000ab26, 0x0000ab28, 0x0000ab2e,
+ 0x0000abc0, 0x0000abe2, 0x0000ac00, 0x0000d7a3,
+ 0x0000d7b0, 0x0000d7c6, 0x0000d7cb, 0x0000d7fb,
+ 0x0000f900, 0x0000fa6d, 0x0000fa70, 0x0000fad9,
0x0000fb1d, 0x0000fb1d, 0x0000fb1f, 0x0000fb28,
0x0000fb2a, 0x0000fb36, 0x0000fb38, 0x0000fb3c,
0x0000fb3e, 0x0000fb3e, 0x0000fb40, 0x0000fb41,
@@ -1166,382 +1184,390 @@ static const unsigned int _ucprop_ranges[] = {
0x00010920, 0x00010939, 0x00010980, 0x000109b7,
0x000109be, 0x000109bf, 0x00010a00, 0x00010a00,
0x00010a10, 0x00010a13, 0x00010a15, 0x00010a17,
- 0x00010a19, 0x00010a33, 0x00010a60, 0x00010a7c,
+ 0x00010a19, 0x00010a35, 0x00010a60, 0x00010a7c,
0x00010a80, 0x00010a9c, 0x00010ac0, 0x00010ac7,
0x00010ac9, 0x00010ae4, 0x00010b00, 0x00010b35,
0x00010b40, 0x00010b55, 0x00010b60, 0x00010b72,
0x00010b80, 0x00010b91, 0x00010c00, 0x00010c48,
+ 0x00010d00, 0x00010d23, 0x00010f00, 0x00010f1c,
+ 0x00010f27, 0x00010f27, 0x00010f30, 0x00010f45,
0x00011003, 0x00011037, 0x00011083, 0x000110af,
0x000110d0, 0x000110e8, 0x00011103, 0x00011126,
- 0x00011150, 0x00011172, 0x00011176, 0x00011176,
- 0x00011183, 0x000111b2, 0x000111c1, 0x000111c4,
- 0x000111da, 0x000111da, 0x000111dc, 0x000111dc,
- 0x00011200, 0x00011211, 0x00011213, 0x0001122b,
- 0x00011280, 0x00011286, 0x00011288, 0x00011288,
- 0x0001128a, 0x0001128d, 0x0001128f, 0x0001129d,
- 0x0001129f, 0x000112a8, 0x000112b0, 0x000112de,
- 0x00011305, 0x0001130c, 0x0001130f, 0x00011310,
- 0x00011313, 0x00011328, 0x0001132a, 0x00011330,
- 0x00011332, 0x00011333, 0x00011335, 0x00011339,
- 0x0001133d, 0x0001133d, 0x00011350, 0x00011350,
- 0x0001135d, 0x00011361, 0x00011400, 0x00011434,
- 0x00011447, 0x0001144a, 0x00011480, 0x000114af,
- 0x000114c4, 0x000114c5, 0x000114c7, 0x000114c7,
- 0x00011580, 0x000115ae, 0x000115d8, 0x000115db,
- 0x00011600, 0x0001162f, 0x00011644, 0x00011644,
- 0x00011680, 0x000116aa, 0x00011700, 0x00011719,
+ 0x00011144, 0x00011144, 0x00011150, 0x00011172,
+ 0x00011176, 0x00011176, 0x00011183, 0x000111b2,
+ 0x000111c1, 0x000111c4, 0x000111da, 0x000111da,
+ 0x000111dc, 0x000111dc, 0x00011200, 0x00011211,
+ 0x00011213, 0x0001122b, 0x00011280, 0x00011286,
+ 0x00011288, 0x00011288, 0x0001128a, 0x0001128d,
+ 0x0001128f, 0x0001129d, 0x0001129f, 0x000112a8,
+ 0x000112b0, 0x000112de, 0x00011305, 0x0001130c,
+ 0x0001130f, 0x00011310, 0x00011313, 0x00011328,
+ 0x0001132a, 0x00011330, 0x00011332, 0x00011333,
+ 0x00011335, 0x00011339, 0x0001133d, 0x0001133d,
+ 0x00011350, 0x00011350, 0x0001135d, 0x00011361,
+ 0x00011400, 0x00011434, 0x00011447, 0x0001144a,
+ 0x00011480, 0x000114af, 0x000114c4, 0x000114c5,
+ 0x000114c7, 0x000114c7, 0x00011580, 0x000115ae,
+ 0x000115d8, 0x000115db, 0x00011600, 0x0001162f,
+ 0x00011644, 0x00011644, 0x00011680, 0x000116aa,
+ 0x00011700, 0x0001171a, 0x00011800, 0x0001182b,
0x000118ff, 0x000118ff, 0x00011a00, 0x00011a00,
0x00011a0b, 0x00011a32, 0x00011a3a, 0x00011a3a,
0x00011a50, 0x00011a50, 0x00011a5c, 0x00011a83,
- 0x00011a86, 0x00011a89, 0x00011ac0, 0x00011af8,
- 0x00011c00, 0x00011c08, 0x00011c0a, 0x00011c2e,
- 0x00011c40, 0x00011c40, 0x00011c72, 0x00011c8f,
- 0x00011d00, 0x00011d06, 0x00011d08, 0x00011d09,
- 0x00011d0b, 0x00011d30, 0x00011d46, 0x00011d46,
+ 0x00011a86, 0x00011a89, 0x00011a9d, 0x00011a9d,
+ 0x00011ac0, 0x00011af8, 0x00011c00, 0x00011c08,
+ 0x00011c0a, 0x00011c2e, 0x00011c40, 0x00011c40,
+ 0x00011c72, 0x00011c8f, 0x00011d00, 0x00011d06,
+ 0x00011d08, 0x00011d09, 0x00011d0b, 0x00011d30,
+ 0x00011d46, 0x00011d46, 0x00011d60, 0x00011d65,
+ 0x00011d67, 0x00011d68, 0x00011d6a, 0x00011d89,
+ 0x00011d98, 0x00011d98, 0x00011ee0, 0x00011ef2,
0x00012000, 0x00012399, 0x00012480, 0x00012543,
0x00013000, 0x0001342e, 0x00014400, 0x00014646,
0x00016800, 0x00016a38, 0x00016a40, 0x00016a5e,
0x00016ad0, 0x00016aed, 0x00016b00, 0x00016b2f,
0x00016b63, 0x00016b77, 0x00016b7d, 0x00016b8f,
0x00016f00, 0x00016f44, 0x00016f50, 0x00016f50,
- 0x00017000, 0x00017000, 0x000187ec, 0x000187ec,
- 0x00018800, 0x00018af2, 0x0001b000, 0x0001b11e,
- 0x0001b170, 0x0001b2fb, 0x0001bc00, 0x0001bc6a,
- 0x0001bc70, 0x0001bc7c, 0x0001bc80, 0x0001bc88,
- 0x0001bc90, 0x0001bc99, 0x0001e800, 0x0001e8c4,
- 0x0001ee00, 0x0001ee03, 0x0001ee05, 0x0001ee1f,
- 0x0001ee21, 0x0001ee22, 0x0001ee24, 0x0001ee24,
- 0x0001ee27, 0x0001ee27, 0x0001ee29, 0x0001ee32,
- 0x0001ee34, 0x0001ee37, 0x0001ee39, 0x0001ee39,
- 0x0001ee3b, 0x0001ee3b, 0x0001ee42, 0x0001ee42,
- 0x0001ee47, 0x0001ee47, 0x0001ee49, 0x0001ee49,
- 0x0001ee4b, 0x0001ee4b, 0x0001ee4d, 0x0001ee4f,
- 0x0001ee51, 0x0001ee52, 0x0001ee54, 0x0001ee54,
- 0x0001ee57, 0x0001ee57, 0x0001ee59, 0x0001ee59,
- 0x0001ee5b, 0x0001ee5b, 0x0001ee5d, 0x0001ee5d,
- 0x0001ee5f, 0x0001ee5f, 0x0001ee61, 0x0001ee62,
- 0x0001ee64, 0x0001ee64, 0x0001ee67, 0x0001ee6a,
- 0x0001ee6c, 0x0001ee72, 0x0001ee74, 0x0001ee77,
- 0x0001ee79, 0x0001ee7c, 0x0001ee7e, 0x0001ee7e,
- 0x0001ee80, 0x0001ee89, 0x0001ee8b, 0x0001ee9b,
- 0x0001eea1, 0x0001eea3, 0x0001eea5, 0x0001eea9,
- 0x0001eeab, 0x0001eebb, 0x00020000, 0x0002a6d6,
- 0x0002a700, 0x0002a700, 0x0002b734, 0x0002b734,
- 0x0002b740, 0x0002b740, 0x0002b81d, 0x0002b81d,
- 0x0002b820, 0x0002b820, 0x0002cea1, 0x0002cea1,
- 0x0002ceb0, 0x0002ceb0, 0x0002ebe0, 0x0002ebe0,
- 0x0002f800, 0x0002fa1d, 0x0000005f, 0x0000005f,
- 0x0000203f, 0x00002040, 0x00002054, 0x00002054,
- 0x0000fe33, 0x0000fe34, 0x0000fe4d, 0x0000fe4f,
- 0x0000ff3f, 0x0000ff3f, 0x0000002d, 0x0000002d,
- 0x0000058a, 0x0000058a, 0x000005be, 0x000005be,
- 0x00001400, 0x00001400, 0x00001806, 0x00001806,
- 0x00002010, 0x00002015, 0x00002e17, 0x00002e17,
- 0x00002e1a, 0x00002e1a, 0x00002e3a, 0x00002e3b,
- 0x00002e40, 0x00002e40, 0x0000301c, 0x0000301c,
- 0x00003030, 0x00003030, 0x000030a0, 0x000030a0,
- 0x0000fe31, 0x0000fe32, 0x0000fe58, 0x0000fe58,
- 0x0000fe63, 0x0000fe63, 0x0000ff0d, 0x0000ff0d,
- 0x00000028, 0x00000028, 0x0000005b, 0x0000005b,
- 0x0000007b, 0x0000007b, 0x00000f3a, 0x00000f3a,
- 0x00000f3c, 0x00000f3c, 0x0000169b, 0x0000169b,
- 0x0000201a, 0x0000201a, 0x0000201e, 0x0000201e,
- 0x00002045, 0x00002045, 0x0000207d, 0x0000207d,
- 0x0000208d, 0x0000208d, 0x00002308, 0x00002308,
- 0x0000230a, 0x0000230a, 0x00002329, 0x00002329,
- 0x00002768, 0x00002768, 0x0000276a, 0x0000276a,
- 0x0000276c, 0x0000276c, 0x0000276e, 0x0000276e,
- 0x00002770, 0x00002770, 0x00002772, 0x00002772,
- 0x00002774, 0x00002774, 0x000027c5, 0x000027c5,
- 0x000027e6, 0x000027e6, 0x000027e8, 0x000027e8,
- 0x000027ea, 0x000027ea, 0x000027ec, 0x000027ec,
- 0x000027ee, 0x000027ee, 0x00002983, 0x00002983,
- 0x00002985, 0x00002985, 0x00002987, 0x00002987,
- 0x00002989, 0x00002989, 0x0000298b, 0x0000298b,
- 0x0000298d, 0x0000298d, 0x0000298f, 0x0000298f,
- 0x00002991, 0x00002991, 0x00002993, 0x00002993,
- 0x00002995, 0x00002995, 0x00002997, 0x00002997,
- 0x000029d8, 0x000029d8, 0x000029da, 0x000029da,
- 0x000029fc, 0x000029fc, 0x00002e22, 0x00002e22,
- 0x00002e24, 0x00002e24, 0x00002e26, 0x00002e26,
- 0x00002e28, 0x00002e28, 0x00002e42, 0x00002e42,
- 0x00003008, 0x00003008, 0x0000300a, 0x0000300a,
- 0x0000300c, 0x0000300c, 0x0000300e, 0x0000300e,
- 0x00003010, 0x00003010, 0x00003014, 0x00003014,
- 0x00003016, 0x00003016, 0x00003018, 0x00003018,
- 0x0000301a, 0x0000301a, 0x0000301d, 0x0000301d,
- 0x0000fd3f, 0x0000fd3f, 0x0000fe17, 0x0000fe17,
- 0x0000fe35, 0x0000fe35, 0x0000fe37, 0x0000fe37,
- 0x0000fe39, 0x0000fe39, 0x0000fe3b, 0x0000fe3b,
- 0x0000fe3d, 0x0000fe3d, 0x0000fe3f, 0x0000fe3f,
- 0x0000fe41, 0x0000fe41, 0x0000fe43, 0x0000fe43,
- 0x0000fe47, 0x0000fe47, 0x0000fe59, 0x0000fe59,
- 0x0000fe5b, 0x0000fe5b, 0x0000fe5d, 0x0000fe5d,
- 0x0000ff08, 0x0000ff08, 0x0000ff3b, 0x0000ff3b,
- 0x0000ff5b, 0x0000ff5b, 0x0000ff5f, 0x0000ff5f,
- 0x0000ff62, 0x0000ff62, 0x00000029, 0x00000029,
- 0x0000005d, 0x0000005d, 0x0000007d, 0x0000007d,
- 0x00000f3b, 0x00000f3b, 0x00000f3d, 0x00000f3d,
- 0x0000169c, 0x0000169c, 0x00002046, 0x00002046,
- 0x0000207e, 0x0000207e, 0x0000208e, 0x0000208e,
- 0x00002309, 0x00002309, 0x0000230b, 0x0000230b,
- 0x0000232a, 0x0000232a, 0x00002769, 0x00002769,
- 0x0000276b, 0x0000276b, 0x0000276d, 0x0000276d,
- 0x0000276f, 0x0000276f, 0x00002771, 0x00002771,
- 0x00002773, 0x00002773, 0x00002775, 0x00002775,
- 0x000027c6, 0x000027c6, 0x000027e7, 0x000027e7,
- 0x000027e9, 0x000027e9, 0x000027eb, 0x000027eb,
- 0x000027ed, 0x000027ed, 0x000027ef, 0x000027ef,
- 0x00002984, 0x00002984, 0x00002986, 0x00002986,
- 0x00002988, 0x00002988, 0x0000298a, 0x0000298a,
- 0x0000298c, 0x0000298c, 0x0000298e, 0x0000298e,
- 0x00002990, 0x00002990, 0x00002992, 0x00002992,
- 0x00002994, 0x00002994, 0x00002996, 0x00002996,
- 0x00002998, 0x00002998, 0x000029d9, 0x000029d9,
- 0x000029db, 0x000029db, 0x000029fd, 0x000029fd,
- 0x00002e23, 0x00002e23, 0x00002e25, 0x00002e25,
- 0x00002e27, 0x00002e27, 0x00002e29, 0x00002e29,
- 0x00003009, 0x00003009, 0x0000300b, 0x0000300b,
- 0x0000300d, 0x0000300d, 0x0000300f, 0x0000300f,
- 0x00003011, 0x00003011, 0x00003015, 0x00003015,
- 0x00003017, 0x00003017, 0x00003019, 0x00003019,
- 0x0000301b, 0x0000301b, 0x0000301e, 0x0000301f,
- 0x0000fd3e, 0x0000fd3e, 0x0000fe18, 0x0000fe18,
- 0x0000fe36, 0x0000fe36, 0x0000fe38, 0x0000fe38,
- 0x0000fe3a, 0x0000fe3a, 0x0000fe3c, 0x0000fe3c,
- 0x0000fe3e, 0x0000fe3e, 0x0000fe40, 0x0000fe40,
- 0x0000fe42, 0x0000fe42, 0x0000fe44, 0x0000fe44,
- 0x0000fe48, 0x0000fe48, 0x0000fe5a, 0x0000fe5a,
- 0x0000fe5c, 0x0000fe5c, 0x0000fe5e, 0x0000fe5e,
- 0x0000ff09, 0x0000ff09, 0x0000ff3d, 0x0000ff3d,
- 0x0000ff5d, 0x0000ff5d, 0x0000ff60, 0x0000ff60,
- 0x0000ff63, 0x0000ff63, 0x00000021, 0x00000023,
- 0x00000025, 0x00000027, 0x0000002a, 0x0000002a,
- 0x0000002c, 0x0000002c, 0x0000002e, 0x0000002f,
- 0x0000003a, 0x0000003b, 0x0000003f, 0x00000040,
- 0x0000005c, 0x0000005c, 0x000000a1, 0x000000a1,
- 0x000000a7, 0x000000a7, 0x000000b6, 0x000000b7,
- 0x000000bf, 0x000000bf, 0x0000037e, 0x0000037e,
- 0x00000387, 0x00000387, 0x0000055a, 0x0000055f,
- 0x00000589, 0x00000589, 0x000005c0, 0x000005c0,
- 0x000005c3, 0x000005c3, 0x000005c6, 0x000005c6,
- 0x000005f3, 0x000005f4, 0x00000609, 0x0000060a,
- 0x0000060c, 0x0000060d, 0x0000061b, 0x0000061b,
- 0x0000061e, 0x0000061f, 0x0000066a, 0x0000066d,
- 0x000006d4, 0x000006d4, 0x00000700, 0x0000070d,
- 0x000007f7, 0x000007f9, 0x00000830, 0x0000083e,
- 0x0000085e, 0x0000085e, 0x00000964, 0x00000965,
- 0x00000970, 0x00000970, 0x000009fd, 0x000009fd,
- 0x00000af0, 0x00000af0, 0x00000df4, 0x00000df4,
- 0x00000e4f, 0x00000e4f, 0x00000e5a, 0x00000e5b,
- 0x00000f04, 0x00000f12, 0x00000f14, 0x00000f14,
- 0x00000f85, 0x00000f85, 0x00000fd0, 0x00000fd4,
- 0x00000fd9, 0x00000fda, 0x0000104a, 0x0000104f,
- 0x000010fb, 0x000010fb, 0x00001360, 0x00001368,
- 0x0000166d, 0x0000166e, 0x000016eb, 0x000016ed,
- 0x00001735, 0x00001736, 0x000017d4, 0x000017d6,
- 0x000017d8, 0x000017da, 0x00001800, 0x00001805,
- 0x00001807, 0x0000180a, 0x00001944, 0x00001945,
- 0x00001a1e, 0x00001a1f, 0x00001aa0, 0x00001aa6,
- 0x00001aa8, 0x00001aad, 0x00001b5a, 0x00001b60,
- 0x00001bfc, 0x00001bff, 0x00001c3b, 0x00001c3f,
- 0x00001c7e, 0x00001c7f, 0x00001cc0, 0x00001cc7,
- 0x00001cd3, 0x00001cd3, 0x00002016, 0x00002017,
- 0x00002020, 0x00002027, 0x00002030, 0x00002038,
- 0x0000203b, 0x0000203e, 0x00002041, 0x00002043,
- 0x00002047, 0x00002051, 0x00002053, 0x00002053,
- 0x00002055, 0x0000205e, 0x00002cf9, 0x00002cfc,
- 0x00002cfe, 0x00002cff, 0x00002d70, 0x00002d70,
- 0x00002e00, 0x00002e01, 0x00002e06, 0x00002e08,
- 0x00002e0b, 0x00002e0b, 0x00002e0e, 0x00002e16,
- 0x00002e18, 0x00002e19, 0x00002e1b, 0x00002e1b,
- 0x00002e1e, 0x00002e1f, 0x00002e2a, 0x00002e2e,
- 0x00002e30, 0x00002e39, 0x00002e3c, 0x00002e3f,
- 0x00002e41, 0x00002e41, 0x00002e43, 0x00002e49,
- 0x00003001, 0x00003003, 0x0000303d, 0x0000303d,
- 0x000030fb, 0x000030fb, 0x0000a4fe, 0x0000a4ff,
- 0x0000a60d, 0x0000a60f, 0x0000a673, 0x0000a673,
- 0x0000a67e, 0x0000a67e, 0x0000a6f2, 0x0000a6f7,
- 0x0000a874, 0x0000a877, 0x0000a8ce, 0x0000a8cf,
- 0x0000a8f8, 0x0000a8fa, 0x0000a8fc, 0x0000a8fc,
- 0x0000a92e, 0x0000a92f, 0x0000a95f, 0x0000a95f,
- 0x0000a9c1, 0x0000a9cd, 0x0000a9de, 0x0000a9df,
- 0x0000aa5c, 0x0000aa5f, 0x0000aade, 0x0000aadf,
- 0x0000aaf0, 0x0000aaf1, 0x0000abeb, 0x0000abeb,
- 0x0000fe10, 0x0000fe16, 0x0000fe19, 0x0000fe19,
- 0x0000fe30, 0x0000fe30, 0x0000fe45, 0x0000fe46,
- 0x0000fe49, 0x0000fe4c, 0x0000fe50, 0x0000fe52,
- 0x0000fe54, 0x0000fe57, 0x0000fe5f, 0x0000fe61,
- 0x0000fe68, 0x0000fe68, 0x0000fe6a, 0x0000fe6b,
- 0x0000ff01, 0x0000ff03, 0x0000ff05, 0x0000ff07,
- 0x0000ff0a, 0x0000ff0a, 0x0000ff0c, 0x0000ff0c,
- 0x0000ff0e, 0x0000ff0f, 0x0000ff1a, 0x0000ff1b,
- 0x0000ff1f, 0x0000ff20, 0x0000ff3c, 0x0000ff3c,
- 0x0000ff61, 0x0000ff61, 0x0000ff64, 0x0000ff65,
- 0x00010100, 0x00010102, 0x0001039f, 0x0001039f,
- 0x000103d0, 0x000103d0, 0x0001056f, 0x0001056f,
- 0x00010857, 0x00010857, 0x0001091f, 0x0001091f,
- 0x0001093f, 0x0001093f, 0x00010a50, 0x00010a58,
- 0x00010a7f, 0x00010a7f, 0x00010af0, 0x00010af6,
- 0x00010b39, 0x00010b3f, 0x00010b99, 0x00010b9c,
+ 0x00017000, 0x000187f1, 0x00018800, 0x00018af2,
+ 0x0001b000, 0x0001b11e, 0x0001b170, 0x0001b2fb,
+ 0x0001bc00, 0x0001bc6a, 0x0001bc70, 0x0001bc7c,
+ 0x0001bc80, 0x0001bc88, 0x0001bc90, 0x0001bc99,
+ 0x0001e800, 0x0001e8c4, 0x0001ee00, 0x0001ee03,
+ 0x0001ee05, 0x0001ee1f, 0x0001ee21, 0x0001ee22,
+ 0x0001ee24, 0x0001ee24, 0x0001ee27, 0x0001ee27,
+ 0x0001ee29, 0x0001ee32, 0x0001ee34, 0x0001ee37,
+ 0x0001ee39, 0x0001ee39, 0x0001ee3b, 0x0001ee3b,
+ 0x0001ee42, 0x0001ee42, 0x0001ee47, 0x0001ee47,
+ 0x0001ee49, 0x0001ee49, 0x0001ee4b, 0x0001ee4b,
+ 0x0001ee4d, 0x0001ee4f, 0x0001ee51, 0x0001ee52,
+ 0x0001ee54, 0x0001ee54, 0x0001ee57, 0x0001ee57,
+ 0x0001ee59, 0x0001ee59, 0x0001ee5b, 0x0001ee5b,
+ 0x0001ee5d, 0x0001ee5d, 0x0001ee5f, 0x0001ee5f,
+ 0x0001ee61, 0x0001ee62, 0x0001ee64, 0x0001ee64,
+ 0x0001ee67, 0x0001ee6a, 0x0001ee6c, 0x0001ee72,
+ 0x0001ee74, 0x0001ee77, 0x0001ee79, 0x0001ee7c,
+ 0x0001ee7e, 0x0001ee7e, 0x0001ee80, 0x0001ee89,
+ 0x0001ee8b, 0x0001ee9b, 0x0001eea1, 0x0001eea3,
+ 0x0001eea5, 0x0001eea9, 0x0001eeab, 0x0001eebb,
+ 0x00020000, 0x0002a6d6, 0x0002a700, 0x0002b734,
+ 0x0002b740, 0x0002b81d, 0x0002b820, 0x0002cea1,
+ 0x0002ceb0, 0x0002ebe0, 0x0002f800, 0x0002fa1d,
+ 0x0000005f, 0x0000005f, 0x0000203f, 0x00002040,
+ 0x00002054, 0x00002054, 0x0000fe33, 0x0000fe34,
+ 0x0000fe4d, 0x0000fe4f, 0x0000ff3f, 0x0000ff3f,
+ 0x0000002d, 0x0000002d, 0x0000058a, 0x0000058a,
+ 0x000005be, 0x000005be, 0x00001400, 0x00001400,
+ 0x00001806, 0x00001806, 0x00002010, 0x00002015,
+ 0x00002e17, 0x00002e17, 0x00002e1a, 0x00002e1a,
+ 0x00002e3a, 0x00002e3b, 0x00002e40, 0x00002e40,
+ 0x0000301c, 0x0000301c, 0x00003030, 0x00003030,
+ 0x000030a0, 0x000030a0, 0x0000fe31, 0x0000fe32,
+ 0x0000fe58, 0x0000fe58, 0x0000fe63, 0x0000fe63,
+ 0x0000ff0d, 0x0000ff0d, 0x00000028, 0x00000028,
+ 0x0000005b, 0x0000005b, 0x0000007b, 0x0000007b,
+ 0x00000f3a, 0x00000f3a, 0x00000f3c, 0x00000f3c,
+ 0x0000169b, 0x0000169b, 0x0000201a, 0x0000201a,
+ 0x0000201e, 0x0000201e, 0x00002045, 0x00002045,
+ 0x0000207d, 0x0000207d, 0x0000208d, 0x0000208d,
+ 0x00002308, 0x00002308, 0x0000230a, 0x0000230a,
+ 0x00002329, 0x00002329, 0x00002768, 0x00002768,
+ 0x0000276a, 0x0000276a, 0x0000276c, 0x0000276c,
+ 0x0000276e, 0x0000276e, 0x00002770, 0x00002770,
+ 0x00002772, 0x00002772, 0x00002774, 0x00002774,
+ 0x000027c5, 0x000027c5, 0x000027e6, 0x000027e6,
+ 0x000027e8, 0x000027e8, 0x000027ea, 0x000027ea,
+ 0x000027ec, 0x000027ec, 0x000027ee, 0x000027ee,
+ 0x00002983, 0x00002983, 0x00002985, 0x00002985,
+ 0x00002987, 0x00002987, 0x00002989, 0x00002989,
+ 0x0000298b, 0x0000298b, 0x0000298d, 0x0000298d,
+ 0x0000298f, 0x0000298f, 0x00002991, 0x00002991,
+ 0x00002993, 0x00002993, 0x00002995, 0x00002995,
+ 0x00002997, 0x00002997, 0x000029d8, 0x000029d8,
+ 0x000029da, 0x000029da, 0x000029fc, 0x000029fc,
+ 0x00002e22, 0x00002e22, 0x00002e24, 0x00002e24,
+ 0x00002e26, 0x00002e26, 0x00002e28, 0x00002e28,
+ 0x00002e42, 0x00002e42, 0x00003008, 0x00003008,
+ 0x0000300a, 0x0000300a, 0x0000300c, 0x0000300c,
+ 0x0000300e, 0x0000300e, 0x00003010, 0x00003010,
+ 0x00003014, 0x00003014, 0x00003016, 0x00003016,
+ 0x00003018, 0x00003018, 0x0000301a, 0x0000301a,
+ 0x0000301d, 0x0000301d, 0x0000fd3f, 0x0000fd3f,
+ 0x0000fe17, 0x0000fe17, 0x0000fe35, 0x0000fe35,
+ 0x0000fe37, 0x0000fe37, 0x0000fe39, 0x0000fe39,
+ 0x0000fe3b, 0x0000fe3b, 0x0000fe3d, 0x0000fe3d,
+ 0x0000fe3f, 0x0000fe3f, 0x0000fe41, 0x0000fe41,
+ 0x0000fe43, 0x0000fe43, 0x0000fe47, 0x0000fe47,
+ 0x0000fe59, 0x0000fe59, 0x0000fe5b, 0x0000fe5b,
+ 0x0000fe5d, 0x0000fe5d, 0x0000ff08, 0x0000ff08,
+ 0x0000ff3b, 0x0000ff3b, 0x0000ff5b, 0x0000ff5b,
+ 0x0000ff5f, 0x0000ff5f, 0x0000ff62, 0x0000ff62,
+ 0x00000029, 0x00000029, 0x0000005d, 0x0000005d,
+ 0x0000007d, 0x0000007d, 0x00000f3b, 0x00000f3b,
+ 0x00000f3d, 0x00000f3d, 0x0000169c, 0x0000169c,
+ 0x00002046, 0x00002046, 0x0000207e, 0x0000207e,
+ 0x0000208e, 0x0000208e, 0x00002309, 0x00002309,
+ 0x0000230b, 0x0000230b, 0x0000232a, 0x0000232a,
+ 0x00002769, 0x00002769, 0x0000276b, 0x0000276b,
+ 0x0000276d, 0x0000276d, 0x0000276f, 0x0000276f,
+ 0x00002771, 0x00002771, 0x00002773, 0x00002773,
+ 0x00002775, 0x00002775, 0x000027c6, 0x000027c6,
+ 0x000027e7, 0x000027e7, 0x000027e9, 0x000027e9,
+ 0x000027eb, 0x000027eb, 0x000027ed, 0x000027ed,
+ 0x000027ef, 0x000027ef, 0x00002984, 0x00002984,
+ 0x00002986, 0x00002986, 0x00002988, 0x00002988,
+ 0x0000298a, 0x0000298a, 0x0000298c, 0x0000298c,
+ 0x0000298e, 0x0000298e, 0x00002990, 0x00002990,
+ 0x00002992, 0x00002992, 0x00002994, 0x00002994,
+ 0x00002996, 0x00002996, 0x00002998, 0x00002998,
+ 0x000029d9, 0x000029d9, 0x000029db, 0x000029db,
+ 0x000029fd, 0x000029fd, 0x00002e23, 0x00002e23,
+ 0x00002e25, 0x00002e25, 0x00002e27, 0x00002e27,
+ 0x00002e29, 0x00002e29, 0x00003009, 0x00003009,
+ 0x0000300b, 0x0000300b, 0x0000300d, 0x0000300d,
+ 0x0000300f, 0x0000300f, 0x00003011, 0x00003011,
+ 0x00003015, 0x00003015, 0x00003017, 0x00003017,
+ 0x00003019, 0x00003019, 0x0000301b, 0x0000301b,
+ 0x0000301e, 0x0000301f, 0x0000fd3e, 0x0000fd3e,
+ 0x0000fe18, 0x0000fe18, 0x0000fe36, 0x0000fe36,
+ 0x0000fe38, 0x0000fe38, 0x0000fe3a, 0x0000fe3a,
+ 0x0000fe3c, 0x0000fe3c, 0x0000fe3e, 0x0000fe3e,
+ 0x0000fe40, 0x0000fe40, 0x0000fe42, 0x0000fe42,
+ 0x0000fe44, 0x0000fe44, 0x0000fe48, 0x0000fe48,
+ 0x0000fe5a, 0x0000fe5a, 0x0000fe5c, 0x0000fe5c,
+ 0x0000fe5e, 0x0000fe5e, 0x0000ff09, 0x0000ff09,
+ 0x0000ff3d, 0x0000ff3d, 0x0000ff5d, 0x0000ff5d,
+ 0x0000ff60, 0x0000ff60, 0x0000ff63, 0x0000ff63,
+ 0x00000021, 0x00000023, 0x00000025, 0x00000027,
+ 0x0000002a, 0x0000002a, 0x0000002c, 0x0000002c,
+ 0x0000002e, 0x0000002f, 0x0000003a, 0x0000003b,
+ 0x0000003f, 0x00000040, 0x0000005c, 0x0000005c,
+ 0x000000a1, 0x000000a1, 0x000000a7, 0x000000a7,
+ 0x000000b6, 0x000000b7, 0x000000bf, 0x000000bf,
+ 0x0000037e, 0x0000037e, 0x00000387, 0x00000387,
+ 0x0000055a, 0x0000055f, 0x00000589, 0x00000589,
+ 0x000005c0, 0x000005c0, 0x000005c3, 0x000005c3,
+ 0x000005c6, 0x000005c6, 0x000005f3, 0x000005f4,
+ 0x00000609, 0x0000060a, 0x0000060c, 0x0000060d,
+ 0x0000061b, 0x0000061b, 0x0000061e, 0x0000061f,
+ 0x0000066a, 0x0000066d, 0x000006d4, 0x000006d4,
+ 0x00000700, 0x0000070d, 0x000007f7, 0x000007f9,
+ 0x00000830, 0x0000083e, 0x0000085e, 0x0000085e,
+ 0x00000964, 0x00000965, 0x00000970, 0x00000970,
+ 0x000009fd, 0x000009fd, 0x00000a76, 0x00000a76,
+ 0x00000af0, 0x00000af0, 0x00000c84, 0x00000c84,
+ 0x00000df4, 0x00000df4, 0x00000e4f, 0x00000e4f,
+ 0x00000e5a, 0x00000e5b, 0x00000f04, 0x00000f12,
+ 0x00000f14, 0x00000f14, 0x00000f85, 0x00000f85,
+ 0x00000fd0, 0x00000fd4, 0x00000fd9, 0x00000fda,
+ 0x0000104a, 0x0000104f, 0x000010fb, 0x000010fb,
+ 0x00001360, 0x00001368, 0x0000166d, 0x0000166e,
+ 0x000016eb, 0x000016ed, 0x00001735, 0x00001736,
+ 0x000017d4, 0x000017d6, 0x000017d8, 0x000017da,
+ 0x00001800, 0x00001805, 0x00001807, 0x0000180a,
+ 0x00001944, 0x00001945, 0x00001a1e, 0x00001a1f,
+ 0x00001aa0, 0x00001aa6, 0x00001aa8, 0x00001aad,
+ 0x00001b5a, 0x00001b60, 0x00001bfc, 0x00001bff,
+ 0x00001c3b, 0x00001c3f, 0x00001c7e, 0x00001c7f,
+ 0x00001cc0, 0x00001cc7, 0x00001cd3, 0x00001cd3,
+ 0x00002016, 0x00002017, 0x00002020, 0x00002027,
+ 0x00002030, 0x00002038, 0x0000203b, 0x0000203e,
+ 0x00002041, 0x00002043, 0x00002047, 0x00002051,
+ 0x00002053, 0x00002053, 0x00002055, 0x0000205e,
+ 0x00002cf9, 0x00002cfc, 0x00002cfe, 0x00002cff,
+ 0x00002d70, 0x00002d70, 0x00002e00, 0x00002e01,
+ 0x00002e06, 0x00002e08, 0x00002e0b, 0x00002e0b,
+ 0x00002e0e, 0x00002e16, 0x00002e18, 0x00002e19,
+ 0x00002e1b, 0x00002e1b, 0x00002e1e, 0x00002e1f,
+ 0x00002e2a, 0x00002e2e, 0x00002e30, 0x00002e39,
+ 0x00002e3c, 0x00002e3f, 0x00002e41, 0x00002e41,
+ 0x00002e43, 0x00002e4e, 0x00003001, 0x00003003,
+ 0x0000303d, 0x0000303d, 0x000030fb, 0x000030fb,
+ 0x0000a4fe, 0x0000a4ff, 0x0000a60d, 0x0000a60f,
+ 0x0000a673, 0x0000a673, 0x0000a67e, 0x0000a67e,
+ 0x0000a6f2, 0x0000a6f7, 0x0000a874, 0x0000a877,
+ 0x0000a8ce, 0x0000a8cf, 0x0000a8f8, 0x0000a8fa,
+ 0x0000a8fc, 0x0000a8fc, 0x0000a92e, 0x0000a92f,
+ 0x0000a95f, 0x0000a95f, 0x0000a9c1, 0x0000a9cd,
+ 0x0000a9de, 0x0000a9df, 0x0000aa5c, 0x0000aa5f,
+ 0x0000aade, 0x0000aadf, 0x0000aaf0, 0x0000aaf1,
+ 0x0000abeb, 0x0000abeb, 0x0000fe10, 0x0000fe16,
+ 0x0000fe19, 0x0000fe19, 0x0000fe30, 0x0000fe30,
+ 0x0000fe45, 0x0000fe46, 0x0000fe49, 0x0000fe4c,
+ 0x0000fe50, 0x0000fe52, 0x0000fe54, 0x0000fe57,
+ 0x0000fe5f, 0x0000fe61, 0x0000fe68, 0x0000fe68,
+ 0x0000fe6a, 0x0000fe6b, 0x0000ff01, 0x0000ff03,
+ 0x0000ff05, 0x0000ff07, 0x0000ff0a, 0x0000ff0a,
+ 0x0000ff0c, 0x0000ff0c, 0x0000ff0e, 0x0000ff0f,
+ 0x0000ff1a, 0x0000ff1b, 0x0000ff1f, 0x0000ff20,
+ 0x0000ff3c, 0x0000ff3c, 0x0000ff61, 0x0000ff61,
+ 0x0000ff64, 0x0000ff65, 0x00010100, 0x00010102,
+ 0x0001039f, 0x0001039f, 0x000103d0, 0x000103d0,
+ 0x0001056f, 0x0001056f, 0x00010857, 0x00010857,
+ 0x0001091f, 0x0001091f, 0x0001093f, 0x0001093f,
+ 0x00010a50, 0x00010a58, 0x00010a7f, 0x00010a7f,
+ 0x00010af0, 0x00010af6, 0x00010b39, 0x00010b3f,
+ 0x00010b99, 0x00010b9c, 0x00010f55, 0x00010f59,
0x00011047, 0x0001104d, 0x000110bb, 0x000110bc,
0x000110be, 0x000110c1, 0x00011140, 0x00011143,
- 0x00011174, 0x00011175, 0x000111c5, 0x000111c9,
+ 0x00011174, 0x00011175, 0x000111c5, 0x000111c8,
0x000111cd, 0x000111cd, 0x000111db, 0x000111db,
0x000111dd, 0x000111df, 0x00011238, 0x0001123d,
0x000112a9, 0x000112a9, 0x0001144b, 0x0001144f,
0x0001145b, 0x0001145b, 0x0001145d, 0x0001145d,
0x000114c6, 0x000114c6, 0x000115c1, 0x000115d7,
0x00011641, 0x00011643, 0x00011660, 0x0001166c,
- 0x0001173c, 0x0001173e, 0x00011a3f, 0x00011a46,
- 0x00011a9a, 0x00011a9c, 0x00011a9e, 0x00011aa2,
- 0x00011c41, 0x00011c45, 0x00011c70, 0x00011c71,
+ 0x0001173c, 0x0001173e, 0x0001183b, 0x0001183b,
+ 0x00011a3f, 0x00011a46, 0x00011a9a, 0x00011a9c,
+ 0x00011a9e, 0x00011aa2, 0x00011c41, 0x00011c45,
+ 0x00011c70, 0x00011c71, 0x00011ef7, 0x00011ef8,
0x00012470, 0x00012474, 0x00016a6e, 0x00016a6f,
0x00016af5, 0x00016af5, 0x00016b37, 0x00016b3b,
- 0x00016b44, 0x00016b44, 0x0001bc9f, 0x0001bc9f,
- 0x0001da87, 0x0001da8b, 0x0001e95e, 0x0001e95f,
- 0x0000002b, 0x0000002b, 0x0000003c, 0x0000003e,
- 0x0000007c, 0x0000007c, 0x0000007e, 0x0000007e,
- 0x000000ac, 0x000000ac, 0x000000b1, 0x000000b1,
- 0x000000d7, 0x000000d7, 0x000000f7, 0x000000f7,
- 0x000003f6, 0x000003f6, 0x00000606, 0x00000608,
- 0x00002044, 0x00002044, 0x00002052, 0x00002052,
- 0x0000207a, 0x0000207c, 0x0000208a, 0x0000208c,
- 0x00002118, 0x00002118, 0x00002140, 0x00002144,
- 0x0000214b, 0x0000214b, 0x00002190, 0x00002194,
- 0x0000219a, 0x0000219b, 0x000021a0, 0x000021a0,
- 0x000021a3, 0x000021a3, 0x000021a6, 0x000021a6,
- 0x000021ae, 0x000021ae, 0x000021ce, 0x000021cf,
- 0x000021d2, 0x000021d2, 0x000021d4, 0x000021d4,
- 0x000021f4, 0x000022ff, 0x00002320, 0x00002321,
- 0x0000237c, 0x0000237c, 0x0000239b, 0x000023b3,
- 0x000023dc, 0x000023e1, 0x000025b7, 0x000025b7,
- 0x000025c1, 0x000025c1, 0x000025f8, 0x000025ff,
- 0x0000266f, 0x0000266f, 0x000027c0, 0x000027c4,
- 0x000027c7, 0x000027e5, 0x000027f0, 0x000027ff,
- 0x00002900, 0x00002982, 0x00002999, 0x000029d7,
- 0x000029dc, 0x000029fb, 0x000029fe, 0x00002aff,
- 0x00002b30, 0x00002b44, 0x00002b47, 0x00002b4c,
- 0x0000fb29, 0x0000fb29, 0x0000fe62, 0x0000fe62,
- 0x0000fe64, 0x0000fe66, 0x0000ff0b, 0x0000ff0b,
- 0x0000ff1c, 0x0000ff1e, 0x0000ff5c, 0x0000ff5c,
- 0x0000ff5e, 0x0000ff5e, 0x0000ffe2, 0x0000ffe2,
- 0x0000ffe9, 0x0000ffec, 0x0001d6c1, 0x0001d6c1,
- 0x0001d6db, 0x0001d6db, 0x0001d6fb, 0x0001d6fb,
- 0x0001d715, 0x0001d715, 0x0001d735, 0x0001d735,
- 0x0001d74f, 0x0001d74f, 0x0001d76f, 0x0001d76f,
- 0x0001d789, 0x0001d789, 0x0001d7a9, 0x0001d7a9,
- 0x0001d7c3, 0x0001d7c3, 0x0001eef0, 0x0001eef1,
- 0x00000024, 0x00000024, 0x000000a2, 0x000000a5,
- 0x0000058f, 0x0000058f, 0x0000060b, 0x0000060b,
+ 0x00016b44, 0x00016b44, 0x00016e97, 0x00016e9a,
+ 0x0001bc9f, 0x0001bc9f, 0x0001da87, 0x0001da8b,
+ 0x0001e95e, 0x0001e95f, 0x0000002b, 0x0000002b,
+ 0x0000003c, 0x0000003e, 0x0000007c, 0x0000007c,
+ 0x0000007e, 0x0000007e, 0x000000ac, 0x000000ac,
+ 0x000000b1, 0x000000b1, 0x000000d7, 0x000000d7,
+ 0x000000f7, 0x000000f7, 0x000003f6, 0x000003f6,
+ 0x00000606, 0x00000608, 0x00002044, 0x00002044,
+ 0x00002052, 0x00002052, 0x0000207a, 0x0000207c,
+ 0x0000208a, 0x0000208c, 0x00002118, 0x00002118,
+ 0x00002140, 0x00002144, 0x0000214b, 0x0000214b,
+ 0x00002190, 0x00002194, 0x0000219a, 0x0000219b,
+ 0x000021a0, 0x000021a0, 0x000021a3, 0x000021a3,
+ 0x000021a6, 0x000021a6, 0x000021ae, 0x000021ae,
+ 0x000021ce, 0x000021cf, 0x000021d2, 0x000021d2,
+ 0x000021d4, 0x000021d4, 0x000021f4, 0x000022ff,
+ 0x00002320, 0x00002321, 0x0000237c, 0x0000237c,
+ 0x0000239b, 0x000023b3, 0x000023dc, 0x000023e1,
+ 0x000025b7, 0x000025b7, 0x000025c1, 0x000025c1,
+ 0x000025f8, 0x000025ff, 0x0000266f, 0x0000266f,
+ 0x000027c0, 0x000027c4, 0x000027c7, 0x000027e5,
+ 0x000027f0, 0x000027ff, 0x00002900, 0x00002982,
+ 0x00002999, 0x000029d7, 0x000029dc, 0x000029fb,
+ 0x000029fe, 0x00002aff, 0x00002b30, 0x00002b44,
+ 0x00002b47, 0x00002b4c, 0x0000fb29, 0x0000fb29,
+ 0x0000fe62, 0x0000fe62, 0x0000fe64, 0x0000fe66,
+ 0x0000ff0b, 0x0000ff0b, 0x0000ff1c, 0x0000ff1e,
+ 0x0000ff5c, 0x0000ff5c, 0x0000ff5e, 0x0000ff5e,
+ 0x0000ffe2, 0x0000ffe2, 0x0000ffe9, 0x0000ffec,
+ 0x0001d6c1, 0x0001d6c1, 0x0001d6db, 0x0001d6db,
+ 0x0001d6fb, 0x0001d6fb, 0x0001d715, 0x0001d715,
+ 0x0001d735, 0x0001d735, 0x0001d74f, 0x0001d74f,
+ 0x0001d76f, 0x0001d76f, 0x0001d789, 0x0001d789,
+ 0x0001d7a9, 0x0001d7a9, 0x0001d7c3, 0x0001d7c3,
+ 0x0001eef0, 0x0001eef1, 0x00000024, 0x00000024,
+ 0x000000a2, 0x000000a5, 0x0000058f, 0x0000058f,
+ 0x0000060b, 0x0000060b, 0x000007fe, 0x000007ff,
0x000009f2, 0x000009f3, 0x000009fb, 0x000009fb,
0x00000af1, 0x00000af1, 0x00000bf9, 0x00000bf9,
0x00000e3f, 0x00000e3f, 0x000017db, 0x000017db,
0x000020a0, 0x000020bf, 0x0000a838, 0x0000a838,
0x0000fdfc, 0x0000fdfc, 0x0000fe69, 0x0000fe69,
0x0000ff04, 0x0000ff04, 0x0000ffe0, 0x0000ffe1,
- 0x0000ffe5, 0x0000ffe6, 0x0000005e, 0x0000005e,
- 0x00000060, 0x00000060, 0x000000a8, 0x000000a8,
- 0x000000af, 0x000000af, 0x000000b4, 0x000000b4,
- 0x000000b8, 0x000000b8, 0x000002c2, 0x000002c5,
- 0x000002d2, 0x000002df, 0x000002e5, 0x000002eb,
- 0x000002ed, 0x000002ed, 0x000002ef, 0x000002ff,
- 0x00000375, 0x00000375, 0x00000384, 0x00000385,
- 0x00001fbd, 0x00001fbd, 0x00001fbf, 0x00001fc1,
- 0x00001fcd, 0x00001fcf, 0x00001fdd, 0x00001fdf,
- 0x00001fed, 0x00001fef, 0x00001ffd, 0x00001ffe,
- 0x0000309b, 0x0000309c, 0x0000a700, 0x0000a716,
- 0x0000a720, 0x0000a721, 0x0000a789, 0x0000a78a,
- 0x0000ab5b, 0x0000ab5b, 0x0000fbb2, 0x0000fbc1,
- 0x0000ff3e, 0x0000ff3e, 0x0000ff40, 0x0000ff40,
- 0x0000ffe3, 0x0000ffe3, 0x0001f3fb, 0x0001f3ff,
- 0x000000a6, 0x000000a6, 0x000000a9, 0x000000a9,
- 0x000000ae, 0x000000ae, 0x000000b0, 0x000000b0,
- 0x00000482, 0x00000482, 0x0000058d, 0x0000058e,
- 0x0000060e, 0x0000060f, 0x000006de, 0x000006de,
- 0x000006e9, 0x000006e9, 0x000006fd, 0x000006fe,
- 0x000007f6, 0x000007f6, 0x000009fa, 0x000009fa,
- 0x00000b70, 0x00000b70, 0x00000bf3, 0x00000bf8,
- 0x00000bfa, 0x00000bfa, 0x00000c7f, 0x00000c7f,
- 0x00000d4f, 0x00000d4f, 0x00000d79, 0x00000d79,
- 0x00000f01, 0x00000f03, 0x00000f13, 0x00000f13,
- 0x00000f15, 0x00000f17, 0x00000f1a, 0x00000f1f,
- 0x00000f34, 0x00000f34, 0x00000f36, 0x00000f36,
- 0x00000f38, 0x00000f38, 0x00000fbe, 0x00000fc5,
- 0x00000fc7, 0x00000fcc, 0x00000fce, 0x00000fcf,
- 0x00000fd5, 0x00000fd8, 0x0000109e, 0x0000109f,
- 0x00001390, 0x00001399, 0x00001940, 0x00001940,
- 0x000019de, 0x000019ff, 0x00001b61, 0x00001b6a,
- 0x00001b74, 0x00001b7c, 0x00002100, 0x00002101,
- 0x00002103, 0x00002106, 0x00002108, 0x00002109,
- 0x00002114, 0x00002114, 0x00002116, 0x00002117,
- 0x0000211e, 0x00002123, 0x00002125, 0x00002125,
- 0x00002127, 0x00002127, 0x00002129, 0x00002129,
- 0x0000212e, 0x0000212e, 0x0000213a, 0x0000213b,
- 0x0000214a, 0x0000214a, 0x0000214c, 0x0000214d,
- 0x0000214f, 0x0000214f, 0x0000218a, 0x0000218b,
- 0x00002195, 0x00002199, 0x0000219c, 0x0000219f,
- 0x000021a1, 0x000021a2, 0x000021a4, 0x000021a5,
- 0x000021a7, 0x000021ad, 0x000021af, 0x000021cd,
- 0x000021d0, 0x000021d1, 0x000021d3, 0x000021d3,
- 0x000021d5, 0x000021f3, 0x00002300, 0x00002307,
- 0x0000230c, 0x0000231f, 0x00002322, 0x00002328,
- 0x0000232b, 0x0000237b, 0x0000237d, 0x0000239a,
- 0x000023b4, 0x000023db, 0x000023e2, 0x00002426,
- 0x00002440, 0x0000244a, 0x0000249c, 0x000024e9,
- 0x00002500, 0x000025b6, 0x000025b8, 0x000025c0,
- 0x000025c2, 0x000025f7, 0x00002600, 0x0000266e,
- 0x00002670, 0x00002767, 0x00002794, 0x000027bf,
- 0x00002800, 0x000028ff, 0x00002b00, 0x00002b2f,
- 0x00002b45, 0x00002b46, 0x00002b4d, 0x00002b73,
- 0x00002b76, 0x00002b95, 0x00002b98, 0x00002bb9,
- 0x00002bbd, 0x00002bc8, 0x00002bca, 0x00002bd2,
- 0x00002bec, 0x00002bef, 0x00002ce5, 0x00002cea,
- 0x00002e80, 0x00002e99, 0x00002e9b, 0x00002ef3,
- 0x00002f00, 0x00002fd5, 0x00002ff0, 0x00002ffb,
- 0x00003004, 0x00003004, 0x00003012, 0x00003013,
- 0x00003020, 0x00003020, 0x00003036, 0x00003037,
- 0x0000303e, 0x0000303f, 0x00003190, 0x00003191,
- 0x00003196, 0x0000319f, 0x000031c0, 0x000031e3,
- 0x00003200, 0x0000321e, 0x0000322a, 0x00003247,
- 0x00003250, 0x00003250, 0x00003260, 0x0000327f,
- 0x0000328a, 0x000032b0, 0x000032c0, 0x000032fe,
- 0x00003300, 0x000033ff, 0x00004dc0, 0x00004dff,
- 0x0000a490, 0x0000a4c6, 0x0000a828, 0x0000a82b,
- 0x0000a836, 0x0000a837, 0x0000a839, 0x0000a839,
- 0x0000aa77, 0x0000aa79, 0x0000fdfd, 0x0000fdfd,
- 0x0000ffe4, 0x0000ffe4, 0x0000ffe8, 0x0000ffe8,
- 0x0000ffed, 0x0000ffee, 0x0000fffc, 0x0000fffd,
- 0x00010137, 0x0001013f, 0x00010179, 0x00010189,
- 0x0001018c, 0x0001018e, 0x00010190, 0x0001019b,
- 0x000101a0, 0x000101a0, 0x000101d0, 0x000101fc,
- 0x00010877, 0x00010878, 0x00010ac8, 0x00010ac8,
- 0x0001173f, 0x0001173f, 0x00016b3c, 0x00016b3f,
- 0x00016b45, 0x00016b45, 0x0001bc9c, 0x0001bc9c,
- 0x0001d000, 0x0001d0f5, 0x0001d100, 0x0001d126,
- 0x0001d129, 0x0001d164, 0x0001d16a, 0x0001d16c,
- 0x0001d183, 0x0001d184, 0x0001d18c, 0x0001d1a9,
- 0x0001d1ae, 0x0001d1e8, 0x0001d200, 0x0001d241,
- 0x0001d245, 0x0001d245, 0x0001d300, 0x0001d356,
- 0x0001d800, 0x0001d9ff, 0x0001da37, 0x0001da3a,
- 0x0001da6d, 0x0001da74, 0x0001da76, 0x0001da83,
- 0x0001da85, 0x0001da86, 0x0001f000, 0x0001f02b,
+ 0x0000ffe5, 0x0000ffe6, 0x0001ecb0, 0x0001ecb0,
+ 0x0000005e, 0x0000005e, 0x00000060, 0x00000060,
+ 0x000000a8, 0x000000a8, 0x000000af, 0x000000af,
+ 0x000000b4, 0x000000b4, 0x000000b8, 0x000000b8,
+ 0x000002c2, 0x000002c5, 0x000002d2, 0x000002df,
+ 0x000002e5, 0x000002eb, 0x000002ed, 0x000002ed,
+ 0x000002ef, 0x000002ff, 0x00000375, 0x00000375,
+ 0x00000384, 0x00000385, 0x00001fbd, 0x00001fbd,
+ 0x00001fbf, 0x00001fc1, 0x00001fcd, 0x00001fcf,
+ 0x00001fdd, 0x00001fdf, 0x00001fed, 0x00001fef,
+ 0x00001ffd, 0x00001ffe, 0x0000309b, 0x0000309c,
+ 0x0000a700, 0x0000a716, 0x0000a720, 0x0000a721,
+ 0x0000a789, 0x0000a78a, 0x0000ab5b, 0x0000ab5b,
+ 0x0000fbb2, 0x0000fbc1, 0x0000ff3e, 0x0000ff3e,
+ 0x0000ff40, 0x0000ff40, 0x0000ffe3, 0x0000ffe3,
+ 0x0001f3fb, 0x0001f3ff, 0x000000a6, 0x000000a6,
+ 0x000000a9, 0x000000a9, 0x000000ae, 0x000000ae,
+ 0x000000b0, 0x000000b0, 0x00000482, 0x00000482,
+ 0x0000058d, 0x0000058e, 0x0000060e, 0x0000060f,
+ 0x000006de, 0x000006de, 0x000006e9, 0x000006e9,
+ 0x000006fd, 0x000006fe, 0x000007f6, 0x000007f6,
+ 0x000009fa, 0x000009fa, 0x00000b70, 0x00000b70,
+ 0x00000bf3, 0x00000bf8, 0x00000bfa, 0x00000bfa,
+ 0x00000c7f, 0x00000c7f, 0x00000d4f, 0x00000d4f,
+ 0x00000d79, 0x00000d79, 0x00000f01, 0x00000f03,
+ 0x00000f13, 0x00000f13, 0x00000f15, 0x00000f17,
+ 0x00000f1a, 0x00000f1f, 0x00000f34, 0x00000f34,
+ 0x00000f36, 0x00000f36, 0x00000f38, 0x00000f38,
+ 0x00000fbe, 0x00000fc5, 0x00000fc7, 0x00000fcc,
+ 0x00000fce, 0x00000fcf, 0x00000fd5, 0x00000fd8,
+ 0x0000109e, 0x0000109f, 0x00001390, 0x00001399,
+ 0x00001940, 0x00001940, 0x000019de, 0x000019ff,
+ 0x00001b61, 0x00001b6a, 0x00001b74, 0x00001b7c,
+ 0x00002100, 0x00002101, 0x00002103, 0x00002106,
+ 0x00002108, 0x00002109, 0x00002114, 0x00002114,
+ 0x00002116, 0x00002117, 0x0000211e, 0x00002123,
+ 0x00002125, 0x00002125, 0x00002127, 0x00002127,
+ 0x00002129, 0x00002129, 0x0000212e, 0x0000212e,
+ 0x0000213a, 0x0000213b, 0x0000214a, 0x0000214a,
+ 0x0000214c, 0x0000214d, 0x0000214f, 0x0000214f,
+ 0x0000218a, 0x0000218b, 0x00002195, 0x00002199,
+ 0x0000219c, 0x0000219f, 0x000021a1, 0x000021a2,
+ 0x000021a4, 0x000021a5, 0x000021a7, 0x000021ad,
+ 0x000021af, 0x000021cd, 0x000021d0, 0x000021d1,
+ 0x000021d3, 0x000021d3, 0x000021d5, 0x000021f3,
+ 0x00002300, 0x00002307, 0x0000230c, 0x0000231f,
+ 0x00002322, 0x00002328, 0x0000232b, 0x0000237b,
+ 0x0000237d, 0x0000239a, 0x000023b4, 0x000023db,
+ 0x000023e2, 0x00002426, 0x00002440, 0x0000244a,
+ 0x0000249c, 0x000024e9, 0x00002500, 0x000025b6,
+ 0x000025b8, 0x000025c0, 0x000025c2, 0x000025f7,
+ 0x00002600, 0x0000266e, 0x00002670, 0x00002767,
+ 0x00002794, 0x000027bf, 0x00002800, 0x000028ff,
+ 0x00002b00, 0x00002b2f, 0x00002b45, 0x00002b46,
+ 0x00002b4d, 0x00002b73, 0x00002b76, 0x00002b95,
+ 0x00002b98, 0x00002bc8, 0x00002bca, 0x00002bfe,
+ 0x00002ce5, 0x00002cea, 0x00002e80, 0x00002e99,
+ 0x00002e9b, 0x00002ef3, 0x00002f00, 0x00002fd5,
+ 0x00002ff0, 0x00002ffb, 0x00003004, 0x00003004,
+ 0x00003012, 0x00003013, 0x00003020, 0x00003020,
+ 0x00003036, 0x00003037, 0x0000303e, 0x0000303f,
+ 0x00003190, 0x00003191, 0x00003196, 0x0000319f,
+ 0x000031c0, 0x000031e3, 0x00003200, 0x0000321e,
+ 0x0000322a, 0x00003247, 0x00003250, 0x00003250,
+ 0x00003260, 0x0000327f, 0x0000328a, 0x000032b0,
+ 0x000032c0, 0x000032fe, 0x00003300, 0x000033ff,
+ 0x00004dc0, 0x00004dff, 0x0000a490, 0x0000a4c6,
+ 0x0000a828, 0x0000a82b, 0x0000a836, 0x0000a837,
+ 0x0000a839, 0x0000a839, 0x0000aa77, 0x0000aa79,
+ 0x0000fdfd, 0x0000fdfd, 0x0000ffe4, 0x0000ffe4,
+ 0x0000ffe8, 0x0000ffe8, 0x0000ffed, 0x0000ffee,
+ 0x0000fffc, 0x0000fffd, 0x00010137, 0x0001013f,
+ 0x00010179, 0x00010189, 0x0001018c, 0x0001018e,
+ 0x00010190, 0x0001019b, 0x000101a0, 0x000101a0,
+ 0x000101d0, 0x000101fc, 0x00010877, 0x00010878,
+ 0x00010ac8, 0x00010ac8, 0x0001173f, 0x0001173f,
+ 0x00016b3c, 0x00016b3f, 0x00016b45, 0x00016b45,
+ 0x0001bc9c, 0x0001bc9c, 0x0001d000, 0x0001d0f5,
+ 0x0001d100, 0x0001d126, 0x0001d129, 0x0001d164,
+ 0x0001d16a, 0x0001d16c, 0x0001d183, 0x0001d184,
+ 0x0001d18c, 0x0001d1a9, 0x0001d1ae, 0x0001d1e8,
+ 0x0001d200, 0x0001d241, 0x0001d245, 0x0001d245,
+ 0x0001d300, 0x0001d356, 0x0001d800, 0x0001d9ff,
+ 0x0001da37, 0x0001da3a, 0x0001da6d, 0x0001da74,
+ 0x0001da76, 0x0001da83, 0x0001da85, 0x0001da86,
+ 0x0001ecac, 0x0001ecac, 0x0001f000, 0x0001f02b,
0x0001f030, 0x0001f093, 0x0001f0a0, 0x0001f0ae,
0x0001f0b1, 0x0001f0bf, 0x0001f0c1, 0x0001f0cf,
- 0x0001f0d1, 0x0001f0f5, 0x0001f110, 0x0001f12e,
- 0x0001f130, 0x0001f16b, 0x0001f170, 0x0001f1ac,
- 0x0001f1e6, 0x0001f202, 0x0001f210, 0x0001f23b,
- 0x0001f240, 0x0001f248, 0x0001f250, 0x0001f251,
- 0x0001f260, 0x0001f265, 0x0001f300, 0x0001f3fa,
- 0x0001f400, 0x0001f6d4, 0x0001f6e0, 0x0001f6ec,
- 0x0001f6f0, 0x0001f6f8, 0x0001f700, 0x0001f773,
- 0x0001f780, 0x0001f7d4, 0x0001f800, 0x0001f80b,
- 0x0001f810, 0x0001f847, 0x0001f850, 0x0001f859,
- 0x0001f860, 0x0001f887, 0x0001f890, 0x0001f8ad,
- 0x0001f900, 0x0001f90b, 0x0001f910, 0x0001f93e,
- 0x0001f940, 0x0001f94c, 0x0001f950, 0x0001f96b,
- 0x0001f980, 0x0001f997, 0x0001f9c0, 0x0001f9c0,
- 0x0001f9d0, 0x0001f9e6, 0x00000041, 0x0000005a,
+ 0x0001f0d1, 0x0001f0f5, 0x0001f110, 0x0001f16b,
+ 0x0001f170, 0x0001f1ac, 0x0001f1e6, 0x0001f202,
+ 0x0001f210, 0x0001f23b, 0x0001f240, 0x0001f248,
+ 0x0001f250, 0x0001f251, 0x0001f260, 0x0001f265,
+ 0x0001f300, 0x0001f3fa, 0x0001f400, 0x0001f6d4,
+ 0x0001f6e0, 0x0001f6ec, 0x0001f6f0, 0x0001f6f9,
+ 0x0001f700, 0x0001f773, 0x0001f780, 0x0001f7d8,
+ 0x0001f800, 0x0001f80b, 0x0001f810, 0x0001f847,
+ 0x0001f850, 0x0001f859, 0x0001f860, 0x0001f887,
+ 0x0001f890, 0x0001f8ad, 0x0001f900, 0x0001f90b,
+ 0x0001f910, 0x0001f93e, 0x0001f940, 0x0001f970,
+ 0x0001f973, 0x0001f976, 0x0001f97a, 0x0001f97a,
+ 0x0001f97c, 0x0001f9a2, 0x0001f9b0, 0x0001f9b9,
+ 0x0001f9c0, 0x0001f9c2, 0x0001f9d0, 0x0001f9ff,
+ 0x0001fa60, 0x0001fa6d, 0x00000041, 0x0000005a,
0x00000061, 0x0000007a, 0x000000aa, 0x000000aa,
0x000000b5, 0x000000b5, 0x000000ba, 0x000000ba,
0x000000c0, 0x000000d6, 0x000000d8, 0x000000f6,
@@ -1553,8 +1579,7 @@ static const unsigned int _ucprop_ranges[] = {
0x00000388, 0x0000038a, 0x0000038c, 0x0000038c,
0x0000038e, 0x000003a1, 0x000003a3, 0x000003f5,
0x000003f7, 0x00000482, 0x0000048a, 0x0000052f,
- 0x00000531, 0x00000556, 0x00000559, 0x0000055f,
- 0x00000561, 0x00000587, 0x00000589, 0x00000589,
+ 0x00000531, 0x00000556, 0x00000559, 0x00000589,
0x00000903, 0x00000939, 0x0000093b, 0x0000093b,
0x0000093d, 0x00000940, 0x00000949, 0x0000094c,
0x0000094e, 0x00000950, 0x00000958, 0x00000961,
@@ -1573,36 +1598,36 @@ static const unsigned int _ucprop_ranges[] = {
0x00000a35, 0x00000a36, 0x00000a38, 0x00000a39,
0x00000a3e, 0x00000a40, 0x00000a59, 0x00000a5c,
0x00000a5e, 0x00000a5e, 0x00000a66, 0x00000a6f,
- 0x00000a72, 0x00000a74, 0x00000a83, 0x00000a83,
- 0x00000a85, 0x00000a8d, 0x00000a8f, 0x00000a91,
- 0x00000a93, 0x00000aa8, 0x00000aaa, 0x00000ab0,
- 0x00000ab2, 0x00000ab3, 0x00000ab5, 0x00000ab9,
- 0x00000abd, 0x00000ac0, 0x00000ac9, 0x00000ac9,
- 0x00000acb, 0x00000acc, 0x00000ad0, 0x00000ad0,
- 0x00000ae0, 0x00000ae1, 0x00000ae6, 0x00000af0,
- 0x00000af9, 0x00000af9, 0x00000b02, 0x00000b03,
- 0x00000b05, 0x00000b0c, 0x00000b0f, 0x00000b10,
- 0x00000b13, 0x00000b28, 0x00000b2a, 0x00000b30,
- 0x00000b32, 0x00000b33, 0x00000b35, 0x00000b39,
- 0x00000b3d, 0x00000b3e, 0x00000b40, 0x00000b40,
- 0x00000b47, 0x00000b48, 0x00000b4b, 0x00000b4c,
- 0x00000b57, 0x00000b57, 0x00000b5c, 0x00000b5d,
- 0x00000b5f, 0x00000b61, 0x00000b66, 0x00000b77,
- 0x00000b83, 0x00000b83, 0x00000b85, 0x00000b8a,
- 0x00000b8e, 0x00000b90, 0x00000b92, 0x00000b95,
- 0x00000b99, 0x00000b9a, 0x00000b9c, 0x00000b9c,
- 0x00000b9e, 0x00000b9f, 0x00000ba3, 0x00000ba4,
- 0x00000ba8, 0x00000baa, 0x00000bae, 0x00000bb9,
- 0x00000bbe, 0x00000bbf, 0x00000bc1, 0x00000bc2,
- 0x00000bc6, 0x00000bc8, 0x00000bca, 0x00000bcc,
- 0x00000bd0, 0x00000bd0, 0x00000bd7, 0x00000bd7,
- 0x00000be6, 0x00000bf2, 0x00000c01, 0x00000c03,
- 0x00000c05, 0x00000c0c, 0x00000c0e, 0x00000c10,
- 0x00000c12, 0x00000c28, 0x00000c2a, 0x00000c39,
- 0x00000c3d, 0x00000c3d, 0x00000c41, 0x00000c44,
- 0x00000c58, 0x00000c5a, 0x00000c60, 0x00000c61,
- 0x00000c66, 0x00000c6f, 0x00000c7f, 0x00000c80,
- 0x00000c82, 0x00000c83, 0x00000c85, 0x00000c8c,
+ 0x00000a72, 0x00000a74, 0x00000a76, 0x00000a76,
+ 0x00000a83, 0x00000a83, 0x00000a85, 0x00000a8d,
+ 0x00000a8f, 0x00000a91, 0x00000a93, 0x00000aa8,
+ 0x00000aaa, 0x00000ab0, 0x00000ab2, 0x00000ab3,
+ 0x00000ab5, 0x00000ab9, 0x00000abd, 0x00000ac0,
+ 0x00000ac9, 0x00000ac9, 0x00000acb, 0x00000acc,
+ 0x00000ad0, 0x00000ad0, 0x00000ae0, 0x00000ae1,
+ 0x00000ae6, 0x00000af0, 0x00000af9, 0x00000af9,
+ 0x00000b02, 0x00000b03, 0x00000b05, 0x00000b0c,
+ 0x00000b0f, 0x00000b10, 0x00000b13, 0x00000b28,
+ 0x00000b2a, 0x00000b30, 0x00000b32, 0x00000b33,
+ 0x00000b35, 0x00000b39, 0x00000b3d, 0x00000b3e,
+ 0x00000b40, 0x00000b40, 0x00000b47, 0x00000b48,
+ 0x00000b4b, 0x00000b4c, 0x00000b57, 0x00000b57,
+ 0x00000b5c, 0x00000b5d, 0x00000b5f, 0x00000b61,
+ 0x00000b66, 0x00000b77, 0x00000b83, 0x00000b83,
+ 0x00000b85, 0x00000b8a, 0x00000b8e, 0x00000b90,
+ 0x00000b92, 0x00000b95, 0x00000b99, 0x00000b9a,
+ 0x00000b9c, 0x00000b9c, 0x00000b9e, 0x00000b9f,
+ 0x00000ba3, 0x00000ba4, 0x00000ba8, 0x00000baa,
+ 0x00000bae, 0x00000bb9, 0x00000bbe, 0x00000bbf,
+ 0x00000bc1, 0x00000bc2, 0x00000bc6, 0x00000bc8,
+ 0x00000bca, 0x00000bcc, 0x00000bd0, 0x00000bd0,
+ 0x00000bd7, 0x00000bd7, 0x00000be6, 0x00000bf2,
+ 0x00000c01, 0x00000c03, 0x00000c05, 0x00000c0c,
+ 0x00000c0e, 0x00000c10, 0x00000c12, 0x00000c28,
+ 0x00000c2a, 0x00000c39, 0x00000c3d, 0x00000c3d,
+ 0x00000c41, 0x00000c44, 0x00000c58, 0x00000c5a,
+ 0x00000c60, 0x00000c61, 0x00000c66, 0x00000c6f,
+ 0x00000c7f, 0x00000c80, 0x00000c82, 0x00000c8c,
0x00000c8e, 0x00000c90, 0x00000c92, 0x00000ca8,
0x00000caa, 0x00000cb3, 0x00000cb5, 0x00000cb9,
0x00000cbd, 0x00000cc4, 0x00000cc6, 0x00000cc8,
@@ -1662,7 +1687,7 @@ static const unsigned int _ucprop_ranges[] = {
0x000017be, 0x000017c5, 0x000017c7, 0x000017c8,
0x000017d4, 0x000017da, 0x000017dc, 0x000017dc,
0x000017e0, 0x000017e9, 0x00001810, 0x00001819,
- 0x00001820, 0x00001877, 0x00001880, 0x00001884,
+ 0x00001820, 0x00001878, 0x00001880, 0x00001884,
0x00001887, 0x000018a8, 0x000018aa, 0x000018aa,
0x000018b0, 0x000018f5, 0x00001900, 0x0000191e,
0x00001923, 0x00001926, 0x00001929, 0x0000192b,
@@ -1684,121 +1709,234 @@ static const unsigned int _ucprop_ranges[] = {
0x00001bee, 0x00001bee, 0x00001bf2, 0x00001bf3,
0x00001bfc, 0x00001c2b, 0x00001c34, 0x00001c35,
0x00001c3b, 0x00001c49, 0x00001c4d, 0x00001c88,
- 0x00001cc0, 0x00001cc7, 0x00001cd3, 0x00001cd3,
- 0x00001ce1, 0x00001ce1, 0x00001ce9, 0x00001cec,
- 0x00001cee, 0x00001cf3, 0x00001cf5, 0x00001cf7,
- 0x00001d00, 0x00001dbf, 0x00001e00, 0x00001f15,
- 0x00001f18, 0x00001f1d, 0x00001f20, 0x00001f45,
- 0x00001f48, 0x00001f4d, 0x00001f50, 0x00001f57,
- 0x00001f59, 0x00001f59, 0x00001f5b, 0x00001f5b,
- 0x00001f5d, 0x00001f5d, 0x00001f5f, 0x00001f7d,
- 0x00001f80, 0x00001fb4, 0x00001fb6, 0x00001fbc,
- 0x00001fbe, 0x00001fbe, 0x00001fc2, 0x00001fc4,
- 0x00001fc6, 0x00001fcc, 0x00001fd0, 0x00001fd3,
- 0x00001fd6, 0x00001fdb, 0x00001fe0, 0x00001fec,
- 0x00001ff2, 0x00001ff4, 0x00001ff6, 0x00001ffc,
- 0x0000200e, 0x0000200e, 0x00002071, 0x00002071,
- 0x0000207f, 0x0000207f, 0x00002090, 0x0000209c,
- 0x00002102, 0x00002102, 0x00002107, 0x00002107,
- 0x0000210a, 0x00002113, 0x00002115, 0x00002115,
- 0x00002119, 0x0000211d, 0x00002124, 0x00002124,
- 0x00002126, 0x00002126, 0x00002128, 0x00002128,
- 0x0000212a, 0x0000212d, 0x0000212f, 0x00002139,
- 0x0000213c, 0x0000213f, 0x00002145, 0x00002149,
- 0x0000214e, 0x0000214f, 0x00002160, 0x00002188,
- 0x00002336, 0x0000237a, 0x00002395, 0x00002395,
- 0x0000249c, 0x000024e9, 0x000026ac, 0x000026ac,
- 0x00002800, 0x000028ff, 0x00002c00, 0x00002c2e,
- 0x00002c30, 0x00002c5e, 0x00002c60, 0x00002ce4,
- 0x00002ceb, 0x00002cee, 0x00002cf2, 0x00002cf3,
- 0x00002d00, 0x00002d25, 0x00002d27, 0x00002d27,
- 0x00002d2d, 0x00002d2d, 0x00002d30, 0x00002d67,
- 0x00002d6f, 0x00002d70, 0x00002d80, 0x00002d96,
- 0x00002da0, 0x00002da6, 0x00002da8, 0x00002dae,
- 0x00002db0, 0x00002db6, 0x00002db8, 0x00002dbe,
- 0x00002dc0, 0x00002dc6, 0x00002dc8, 0x00002dce,
- 0x00002dd0, 0x00002dd6, 0x00002dd8, 0x00002dde,
- 0x00003005, 0x00003007, 0x00003021, 0x00003029,
- 0x0000302e, 0x0000302f, 0x00003031, 0x00003035,
- 0x00003038, 0x0000303c, 0x00003041, 0x00003096,
- 0x0000309d, 0x0000309f, 0x000030a1, 0x000030fa,
- 0x000030fc, 0x000030ff, 0x00003105, 0x0000312e,
- 0x00003131, 0x0000318e, 0x00003190, 0x000031ba,
- 0x000031f0, 0x0000321c, 0x00003220, 0x0000324f,
- 0x00003260, 0x0000327b, 0x0000327f, 0x000032b0,
- 0x000032c0, 0x000032cb, 0x000032d0, 0x000032fe,
- 0x00003300, 0x00003376, 0x0000337b, 0x000033dd,
- 0x000033e0, 0x000033fe, 0x00003400, 0x00004db5,
- 0x00004e00, 0x0000a48c, 0x0000a4d0, 0x0000a60c,
+ 0x00001c90, 0x00001cba, 0x00001cbd, 0x00001cc7,
+ 0x00001cd3, 0x00001cd3, 0x00001ce1, 0x00001ce1,
+ 0x00001ce9, 0x00001cec, 0x00001cee, 0x00001cf3,
+ 0x00001cf5, 0x00001cf7, 0x00001d00, 0x00001dbf,
+ 0x00001e00, 0x00001f15, 0x00001f18, 0x00001f1d,
+ 0x00001f20, 0x00001f45, 0x00001f48, 0x00001f4d,
+ 0x00001f50, 0x00001f57, 0x00001f59, 0x00001f59,
+ 0x00001f5b, 0x00001f5b, 0x00001f5d, 0x00001f5d,
+ 0x00001f5f, 0x00001f7d, 0x00001f80, 0x00001fb4,
+ 0x00001fb6, 0x00001fbc, 0x00001fbe, 0x00001fbe,
+ 0x00001fc2, 0x00001fc4, 0x00001fc6, 0x00001fcc,
+ 0x00001fd0, 0x00001fd3, 0x00001fd6, 0x00001fdb,
+ 0x00001fe0, 0x00001fec, 0x00001ff2, 0x00001ff4,
+ 0x00001ff6, 0x00001ffc, 0x0000200e, 0x0000200e,
+ 0x00002071, 0x00002071, 0x0000207f, 0x0000207f,
+ 0x00002090, 0x0000209c, 0x00002102, 0x00002102,
+ 0x00002107, 0x00002107, 0x0000210a, 0x00002113,
+ 0x00002115, 0x00002115, 0x00002119, 0x0000211d,
+ 0x00002124, 0x00002124, 0x00002126, 0x00002126,
+ 0x00002128, 0x00002128, 0x0000212a, 0x0000212d,
+ 0x0000212f, 0x00002139, 0x0000213c, 0x0000213f,
+ 0x00002145, 0x00002149, 0x0000214e, 0x0000214f,
+ 0x00002160, 0x00002188, 0x00002336, 0x0000237a,
+ 0x00002395, 0x00002395, 0x0000249c, 0x000024e9,
+ 0x000026ac, 0x000026ac, 0x00002800, 0x000028ff,
+ 0x00002c00, 0x00002c2e, 0x00002c30, 0x00002c5e,
+ 0x00002c60, 0x00002ce4, 0x00002ceb, 0x00002cee,
+ 0x00002cf2, 0x00002cf3, 0x00002d00, 0x00002d25,
+ 0x00002d27, 0x00002d27, 0x00002d2d, 0x00002d2d,
+ 0x00002d30, 0x00002d67, 0x00002d6f, 0x00002d70,
+ 0x00002d80, 0x00002d96, 0x00002da0, 0x00002da6,
+ 0x00002da8, 0x00002dae, 0x00002db0, 0x00002db6,
+ 0x00002db8, 0x00002dbe, 0x00002dc0, 0x00002dc6,
+ 0x00002dc8, 0x00002dce, 0x00002dd0, 0x00002dd6,
+ 0x00002dd8, 0x00002dde, 0x00003005, 0x00003007,
+ 0x00003021, 0x00003029, 0x0000302e, 0x0000302f,
+ 0x00003031, 0x00003035, 0x00003038, 0x0000303c,
+ 0x00003041, 0x00003096, 0x0000309d, 0x0000309f,
+ 0x000030a1, 0x000030fa, 0x000030fc, 0x000030ff,
+ 0x00003105, 0x0000312f, 0x00003131, 0x0000318e,
+ 0x00003190, 0x000031ba, 0x000031f0, 0x0000321c,
+ 0x00003220, 0x0000324f, 0x00003260, 0x0000327b,
+ 0x0000327f, 0x000032b0, 0x000032c0, 0x000032cb,
+ 0x000032d0, 0x000032fe, 0x00003300, 0x00003376,
+ 0x0000337b, 0x000033dd, 0x000033e0, 0x000033fe,
+ 0x00003400, 0x00004db5, 0x00004e00, 0x00009fef,
+ 0x0000a000, 0x0000a48c, 0x0000a4d0, 0x0000a60c,
0x0000a610, 0x0000a62b, 0x0000a640, 0x0000a66e,
0x0000a680, 0x0000a69d, 0x0000a6a0, 0x0000a6ef,
0x0000a6f2, 0x0000a6f7, 0x0000a722, 0x0000a787,
- 0x0000a789, 0x0000a7ae, 0x0000a7b0, 0x0000a7b7,
- 0x0000a7f7, 0x0000a801, 0x0000a803, 0x0000a805,
- 0x0000a807, 0x0000a80a, 0x0000a80c, 0x0000a824,
- 0x0000a827, 0x0000a827, 0x0000a830, 0x0000a837,
- 0x0000a840, 0x0000a873, 0x0000a880, 0x0000a8c3,
- 0x0000a8ce, 0x0000a8d9, 0x0000a8f2, 0x0000a8fd,
- 0x0000a900, 0x0000a925, 0x0000a92e, 0x0000a946,
- 0x0000a952, 0x0000a953, 0x0000a95f, 0x0000a97c,
- 0x0000a983, 0x0000a9b2, 0x0000a9b4, 0x0000a9b5,
- 0x0000a9ba, 0x0000a9bb, 0x0000a9bd, 0x0000a9cd,
- 0x0000a9cf, 0x0000a9d9, 0x0000a9de, 0x0000a9e4,
- 0x0000a9e6, 0x0000a9fe, 0x0000aa00, 0x0000aa28,
- 0x0000aa2f, 0x0000aa30, 0x0000aa33, 0x0000aa34,
- 0x0000aa40, 0x0000aa42, 0x0000aa44, 0x0000aa4b,
- 0x0000aa4d, 0x0000aa4d, 0x0000aa50, 0x0000aa59,
- 0x0000aa5c, 0x0000aa7b, 0x0000aa7d, 0x0000aaaf,
- 0x0000aab1, 0x0000aab1, 0x0000aab5, 0x0000aab6,
- 0x0000aab9, 0x0000aabd, 0x0000aac0, 0x0000aac0,
- 0x0000aac2, 0x0000aac2, 0x0000aadb, 0x0000aaeb,
- 0x0000aaee, 0x0000aaf5, 0x0000ab01, 0x0000ab06,
- 0x0000ab09, 0x0000ab0e, 0x0000ab11, 0x0000ab16,
- 0x0000ab20, 0x0000ab26, 0x0000ab28, 0x0000ab2e,
- 0x0000ab30, 0x0000ab65, 0x0000ab70, 0x0000abe4,
- 0x0000abe6, 0x0000abe7, 0x0000abe9, 0x0000abec,
- 0x0000abf0, 0x0000abf9, 0x0000ac00, 0x0000d7a3,
- 0x0000d7b0, 0x0000d7c6, 0x0000d7cb, 0x0000d7fb,
- 0x0000e000, 0x0000fb06, 0x0000fb13, 0x0000fb17,
- 0x0000ff21, 0x0000ff3a, 0x0000ff41, 0x0000ff5a,
- 0x0000ff66, 0x0000ffbe, 0x0000ffc2, 0x0000ffc7,
- 0x0000ffca, 0x0000ffcf, 0x0000ffd2, 0x0000ffd7,
- 0x0000ffda, 0x0000ffdc, 0x00010000, 0x0002a6d6,
- 0x0002a700, 0x0002a700, 0x0002b734, 0x0002b734,
- 0x0002b740, 0x0002b740, 0x0002b81d, 0x0002b81d,
- 0x0002b820, 0x0002b820, 0x0002cea1, 0x0002cea1,
- 0x0002ceb0, 0x0002ceb0, 0x0002ebe0, 0x0002ebe0,
- 0x0002f800, 0x0002fa1d, 0x000f0000, 0x000ffffd,
- 0x00100000, 0x0010fffd, 0x000005be, 0x000005be,
- 0x000005c0, 0x000005c0, 0x000005c3, 0x000005c3,
- 0x000005c6, 0x000005c6, 0x000005d0, 0x000005ea,
- 0x000005f0, 0x000005f4, 0x000007c0, 0x000007ea,
- 0x000007f4, 0x000007f5, 0x000007fa, 0x000007fa,
- 0x00000800, 0x00000815, 0x0000081a, 0x0000081a,
- 0x00000824, 0x00000824, 0x00000828, 0x00000828,
- 0x00000830, 0x0000083e, 0x00000840, 0x00000858,
- 0x0000085e, 0x0000085e, 0x0000200f, 0x0000200f,
- 0x0000fb1d, 0x0000fb1d, 0x0000fb1f, 0x0000fb28,
- 0x0000fb2a, 0x0000fb36, 0x0000fb38, 0x0000fb3c,
- 0x0000fb3e, 0x0000fb3e, 0x0000fb40, 0x0000fb41,
- 0x0000fb43, 0x0000fb44, 0x0000fb46, 0x0000fb4f,
- 0x00010800, 0x00010805, 0x00010808, 0x00010808,
- 0x0001080a, 0x00010835, 0x00010837, 0x00010838,
- 0x0001083c, 0x0001083c, 0x0001083f, 0x00010855,
- 0x00010857, 0x0001089e, 0x000108a7, 0x000108af,
- 0x000108e0, 0x000108f2, 0x000108f4, 0x000108f5,
- 0x000108fb, 0x0001091b, 0x00010920, 0x00010939,
- 0x0001093f, 0x0001093f, 0x00010980, 0x000109b7,
- 0x000109bc, 0x000109cf, 0x000109d2, 0x00010a00,
- 0x00010a10, 0x00010a13, 0x00010a15, 0x00010a17,
- 0x00010a19, 0x00010a33, 0x00010a40, 0x00010a47,
- 0x00010a50, 0x00010a58, 0x00010a60, 0x00010a9f,
- 0x00010ac0, 0x00010ae4, 0x00010aeb, 0x00010af6,
- 0x00010b00, 0x00010b35, 0x00010b40, 0x00010b55,
- 0x00010b58, 0x00010b72, 0x00010b78, 0x00010b91,
- 0x00010b99, 0x00010b9c, 0x00010ba9, 0x00010baf,
- 0x00010c00, 0x00010c48, 0x00010c80, 0x00010cb2,
- 0x00010cc0, 0x00010cf2, 0x00010cfa, 0x00010cff,
+ 0x0000a789, 0x0000a7b9, 0x0000a7f7, 0x0000a801,
+ 0x0000a803, 0x0000a805, 0x0000a807, 0x0000a80a,
+ 0x0000a80c, 0x0000a824, 0x0000a827, 0x0000a827,
+ 0x0000a830, 0x0000a837, 0x0000a840, 0x0000a873,
+ 0x0000a880, 0x0000a8c3, 0x0000a8ce, 0x0000a8d9,
+ 0x0000a8f2, 0x0000a8fe, 0x0000a900, 0x0000a925,
+ 0x0000a92e, 0x0000a946, 0x0000a952, 0x0000a953,
+ 0x0000a95f, 0x0000a97c, 0x0000a983, 0x0000a9b2,
+ 0x0000a9b4, 0x0000a9b5, 0x0000a9ba, 0x0000a9bb,
+ 0x0000a9bd, 0x0000a9cd, 0x0000a9cf, 0x0000a9d9,
+ 0x0000a9de, 0x0000a9e4, 0x0000a9e6, 0x0000a9fe,
+ 0x0000aa00, 0x0000aa28, 0x0000aa2f, 0x0000aa30,
+ 0x0000aa33, 0x0000aa34, 0x0000aa40, 0x0000aa42,
+ 0x0000aa44, 0x0000aa4b, 0x0000aa4d, 0x0000aa4d,
+ 0x0000aa50, 0x0000aa59, 0x0000aa5c, 0x0000aa7b,
+ 0x0000aa7d, 0x0000aaaf, 0x0000aab1, 0x0000aab1,
+ 0x0000aab5, 0x0000aab6, 0x0000aab9, 0x0000aabd,
+ 0x0000aac0, 0x0000aac0, 0x0000aac2, 0x0000aac2,
+ 0x0000aadb, 0x0000aaeb, 0x0000aaee, 0x0000aaf5,
+ 0x0000ab01, 0x0000ab06, 0x0000ab09, 0x0000ab0e,
+ 0x0000ab11, 0x0000ab16, 0x0000ab20, 0x0000ab26,
+ 0x0000ab28, 0x0000ab2e, 0x0000ab30, 0x0000ab65,
+ 0x0000ab70, 0x0000abe4, 0x0000abe6, 0x0000abe7,
+ 0x0000abe9, 0x0000abec, 0x0000abf0, 0x0000abf9,
+ 0x0000ac00, 0x0000d7a3, 0x0000d7b0, 0x0000d7c6,
+ 0x0000d7cb, 0x0000d7fb, 0x0000d800, 0x0000fa6d,
+ 0x0000fa70, 0x0000fad9, 0x0000fb00, 0x0000fb06,
+ 0x0000fb13, 0x0000fb17, 0x0000ff21, 0x0000ff3a,
+ 0x0000ff41, 0x0000ff5a, 0x0000ff66, 0x0000ffbe,
+ 0x0000ffc2, 0x0000ffc7, 0x0000ffca, 0x0000ffcf,
+ 0x0000ffd2, 0x0000ffd7, 0x0000ffda, 0x0000ffdc,
+ 0x00010000, 0x0001000b, 0x0001000d, 0x00010026,
+ 0x00010028, 0x0001003a, 0x0001003c, 0x0001003d,
+ 0x0001003f, 0x0001004d, 0x00010050, 0x0001005d,
+ 0x00010080, 0x000100fa, 0x00010100, 0x00010100,
+ 0x00010102, 0x00010102, 0x00010107, 0x00010133,
+ 0x00010137, 0x0001013f, 0x0001018d, 0x0001018e,
+ 0x000101d0, 0x000101fc, 0x00010280, 0x0001029c,
+ 0x000102a0, 0x000102d0, 0x00010300, 0x00010323,
+ 0x0001032d, 0x0001034a, 0x00010350, 0x00010375,
+ 0x00010380, 0x0001039d, 0x0001039f, 0x000103c3,
+ 0x000103c8, 0x000103d5, 0x00010400, 0x0001049d,
+ 0x000104a0, 0x000104a9, 0x000104b0, 0x000104d3,
+ 0x000104d8, 0x000104fb, 0x00010500, 0x00010527,
+ 0x00010530, 0x00010563, 0x0001056f, 0x0001056f,
+ 0x00010600, 0x00010736, 0x00010740, 0x00010755,
+ 0x00010760, 0x00010767, 0x00011000, 0x00011000,
+ 0x00011002, 0x00011037, 0x00011047, 0x0001104d,
+ 0x00011066, 0x0001106f, 0x00011082, 0x000110b2,
+ 0x000110b7, 0x000110b8, 0x000110bb, 0x000110c1,
+ 0x000110cd, 0x000110cd, 0x000110d0, 0x000110e8,
+ 0x000110f0, 0x000110f9, 0x00011103, 0x00011126,
+ 0x0001112c, 0x0001112c, 0x00011136, 0x00011146,
+ 0x00011150, 0x00011172, 0x00011174, 0x00011176,
+ 0x00011182, 0x000111b5, 0x000111bf, 0x000111c8,
+ 0x000111cd, 0x000111cd, 0x000111d0, 0x000111df,
+ 0x000111e1, 0x000111f4, 0x00011200, 0x00011211,
+ 0x00011213, 0x0001122e, 0x00011232, 0x00011233,
+ 0x00011235, 0x00011235, 0x00011238, 0x0001123d,
+ 0x00011280, 0x00011286, 0x00011288, 0x00011288,
+ 0x0001128a, 0x0001128d, 0x0001128f, 0x0001129d,
+ 0x0001129f, 0x000112a9, 0x000112b0, 0x000112de,
+ 0x000112e0, 0x000112e2, 0x000112f0, 0x000112f9,
+ 0x00011302, 0x00011303, 0x00011305, 0x0001130c,
+ 0x0001130f, 0x00011310, 0x00011313, 0x00011328,
+ 0x0001132a, 0x00011330, 0x00011332, 0x00011333,
+ 0x00011335, 0x00011339, 0x0001133d, 0x0001133f,
+ 0x00011341, 0x00011344, 0x00011347, 0x00011348,
+ 0x0001134b, 0x0001134d, 0x00011350, 0x00011350,
+ 0x00011357, 0x00011357, 0x0001135d, 0x00011363,
+ 0x00011400, 0x00011437, 0x00011440, 0x00011441,
+ 0x00011445, 0x00011445, 0x00011447, 0x00011459,
+ 0x0001145b, 0x0001145b, 0x0001145d, 0x0001145d,
+ 0x00011480, 0x000114b2, 0x000114b9, 0x000114b9,
+ 0x000114bb, 0x000114be, 0x000114c1, 0x000114c1,
+ 0x000114c4, 0x000114c7, 0x000114d0, 0x000114d9,
+ 0x00011580, 0x000115b1, 0x000115b8, 0x000115bb,
+ 0x000115be, 0x000115be, 0x000115c1, 0x000115db,
+ 0x00011600, 0x00011632, 0x0001163b, 0x0001163c,
+ 0x0001163e, 0x0001163e, 0x00011641, 0x00011644,
+ 0x00011650, 0x00011659, 0x00011680, 0x000116aa,
+ 0x000116ac, 0x000116ac, 0x000116ae, 0x000116af,
+ 0x000116b6, 0x000116b6, 0x000116c0, 0x000116c9,
+ 0x00011700, 0x0001171a, 0x00011720, 0x00011721,
+ 0x00011726, 0x00011726, 0x00011730, 0x0001173f,
+ 0x00011800, 0x0001182e, 0x00011838, 0x00011838,
+ 0x0001183b, 0x0001183b, 0x000118a0, 0x000118f2,
+ 0x000118ff, 0x000118ff, 0x00011a00, 0x00011a00,
+ 0x00011a07, 0x00011a08, 0x00011a0b, 0x00011a32,
+ 0x00011a39, 0x00011a3a, 0x00011a3f, 0x00011a46,
+ 0x00011a50, 0x00011a50, 0x00011a57, 0x00011a58,
+ 0x00011a5c, 0x00011a83, 0x00011a86, 0x00011a89,
+ 0x00011a97, 0x00011a97, 0x00011a9a, 0x00011aa2,
+ 0x00011ac0, 0x00011af8, 0x00011c00, 0x00011c08,
+ 0x00011c0a, 0x00011c2f, 0x00011c3e, 0x00011c45,
+ 0x00011c50, 0x00011c6c, 0x00011c70, 0x00011c8f,
+ 0x00011ca9, 0x00011ca9, 0x00011cb1, 0x00011cb1,
+ 0x00011cb4, 0x00011cb4, 0x00011d00, 0x00011d06,
+ 0x00011d08, 0x00011d09, 0x00011d0b, 0x00011d30,
+ 0x00011d46, 0x00011d46, 0x00011d50, 0x00011d59,
+ 0x00011d60, 0x00011d65, 0x00011d67, 0x00011d68,
+ 0x00011d6a, 0x00011d8e, 0x00011d93, 0x00011d94,
+ 0x00011d96, 0x00011d96, 0x00011d98, 0x00011d98,
+ 0x00011da0, 0x00011da9, 0x00011ee0, 0x00011ef2,
+ 0x00011ef5, 0x00011ef8, 0x00012000, 0x00012399,
+ 0x00012400, 0x0001246e, 0x00012470, 0x00012474,
+ 0x00012480, 0x00012543, 0x00013000, 0x0001342e,
+ 0x00014400, 0x00014646, 0x00016800, 0x00016a38,
+ 0x00016a40, 0x00016a5e, 0x00016a60, 0x00016a69,
+ 0x00016a6e, 0x00016a6f, 0x00016ad0, 0x00016aed,
+ 0x00016af5, 0x00016af5, 0x00016b00, 0x00016b2f,
+ 0x00016b37, 0x00016b45, 0x00016b50, 0x00016b59,
+ 0x00016b5b, 0x00016b61, 0x00016b63, 0x00016b77,
+ 0x00016b7d, 0x00016b8f, 0x00016e40, 0x00016e9a,
+ 0x00016f00, 0x00016f44, 0x00016f50, 0x00016f7e,
+ 0x00016f93, 0x00016f9f, 0x00016fe0, 0x00016fe1,
+ 0x00017000, 0x000187f1, 0x00018800, 0x00018af2,
+ 0x0001b000, 0x0001b11e, 0x0001b170, 0x0001b2fb,
+ 0x0001bc00, 0x0001bc6a, 0x0001bc70, 0x0001bc7c,
+ 0x0001bc80, 0x0001bc88, 0x0001bc90, 0x0001bc99,
+ 0x0001bc9c, 0x0001bc9c, 0x0001bc9f, 0x0001bc9f,
+ 0x0001d000, 0x0001d0f5, 0x0001d100, 0x0001d126,
+ 0x0001d129, 0x0001d166, 0x0001d16a, 0x0001d172,
+ 0x0001d183, 0x0001d184, 0x0001d18c, 0x0001d1a9,
+ 0x0001d1ae, 0x0001d1e8, 0x0001d2e0, 0x0001d2f3,
+ 0x0001d360, 0x0001d378, 0x0001d400, 0x0001d454,
+ 0x0001d456, 0x0001d49c, 0x0001d49e, 0x0001d49f,
+ 0x0001d4a2, 0x0001d4a2, 0x0001d4a5, 0x0001d4a6,
+ 0x0001d4a9, 0x0001d4ac, 0x0001d4ae, 0x0001d4b9,
+ 0x0001d4bb, 0x0001d4bb, 0x0001d4bd, 0x0001d4c3,
+ 0x0001d4c5, 0x0001d505, 0x0001d507, 0x0001d50a,
+ 0x0001d50d, 0x0001d514, 0x0001d516, 0x0001d51c,
+ 0x0001d51e, 0x0001d539, 0x0001d53b, 0x0001d53e,
+ 0x0001d540, 0x0001d544, 0x0001d546, 0x0001d546,
+ 0x0001d54a, 0x0001d550, 0x0001d552, 0x0001d6a5,
+ 0x0001d6a8, 0x0001d6da, 0x0001d6dc, 0x0001d714,
+ 0x0001d716, 0x0001d74e, 0x0001d750, 0x0001d788,
+ 0x0001d78a, 0x0001d7c2, 0x0001d7c4, 0x0001d7cb,
+ 0x0001d800, 0x0001d9ff, 0x0001da37, 0x0001da3a,
+ 0x0001da6d, 0x0001da74, 0x0001da76, 0x0001da83,
+ 0x0001da85, 0x0001da8b, 0x0001f110, 0x0001f12e,
+ 0x0001f130, 0x0001f169, 0x0001f170, 0x0001f1ac,
+ 0x0001f1e6, 0x0001f202, 0x0001f210, 0x0001f23b,
+ 0x0001f240, 0x0001f248, 0x0001f250, 0x0001f251,
+ 0x00020000, 0x0002a6d6, 0x0002a700, 0x0002b734,
+ 0x0002b740, 0x0002b81d, 0x0002b820, 0x0002cea1,
+ 0x0002ceb0, 0x0002ebe0, 0x0002f800, 0x0002fa1d,
+ 0x000f0000, 0x000ffffd, 0x00100000, 0x0010fffd,
+ 0x000005be, 0x000005be, 0x000005c0, 0x000005c0,
+ 0x000005c3, 0x000005c3, 0x000005c6, 0x000005c6,
+ 0x000005d0, 0x000005ea, 0x000005ef, 0x000005f4,
+ 0x000007c0, 0x000007ea, 0x000007f4, 0x000007f5,
+ 0x000007fa, 0x000007fa, 0x000007fe, 0x00000815,
+ 0x0000081a, 0x0000081a, 0x00000824, 0x00000824,
+ 0x00000828, 0x00000828, 0x00000830, 0x0000083e,
+ 0x00000840, 0x00000858, 0x0000085e, 0x0000085e,
+ 0x0000200f, 0x0000200f, 0x0000fb1d, 0x0000fb1d,
+ 0x0000fb1f, 0x0000fb28, 0x0000fb2a, 0x0000fb36,
+ 0x0000fb38, 0x0000fb3c, 0x0000fb3e, 0x0000fb3e,
+ 0x0000fb40, 0x0000fb41, 0x0000fb43, 0x0000fb44,
+ 0x0000fb46, 0x0000fb4f, 0x00010800, 0x00010805,
+ 0x00010808, 0x00010808, 0x0001080a, 0x00010835,
+ 0x00010837, 0x00010838, 0x0001083c, 0x0001083c,
+ 0x0001083f, 0x00010855, 0x00010857, 0x0001089e,
+ 0x000108a7, 0x000108af, 0x000108e0, 0x000108f2,
+ 0x000108f4, 0x000108f5, 0x000108fb, 0x0001091b,
+ 0x00010920, 0x00010939, 0x0001093f, 0x0001093f,
+ 0x00010980, 0x000109b7, 0x000109bc, 0x000109cf,
+ 0x000109d2, 0x00010a00, 0x00010a10, 0x00010a13,
+ 0x00010a15, 0x00010a17, 0x00010a19, 0x00010a35,
+ 0x00010a40, 0x00010a48, 0x00010a50, 0x00010a58,
+ 0x00010a60, 0x00010a9f, 0x00010ac0, 0x00010ae4,
+ 0x00010aeb, 0x00010af6, 0x00010b00, 0x00010b35,
+ 0x00010b40, 0x00010b55, 0x00010b58, 0x00010b72,
+ 0x00010b78, 0x00010b91, 0x00010b99, 0x00010b9c,
+ 0x00010ba9, 0x00010baf, 0x00010c00, 0x00010c48,
+ 0x00010c80, 0x00010cb2, 0x00010cc0, 0x00010cf2,
+ 0x00010cfa, 0x00010cff, 0x00010f00, 0x00010f27,
0x0001e800, 0x0001e8c4, 0x0001e8c7, 0x0001e8cf,
0x0001e900, 0x0001e943, 0x0001e950, 0x0001e959,
0x0001e95e, 0x0001e95f, 0x00000030, 0x00000039,
@@ -1825,67 +1963,69 @@ static const unsigned int _ucprop_ranges[] = {
0x0000ffe0, 0x0000ffe1, 0x0000ffe5, 0x0000ffe6,
0x00000600, 0x00000605, 0x00000660, 0x00000669,
0x0000066b, 0x0000066c, 0x000006dd, 0x000006dd,
- 0x000008e2, 0x000008e2, 0x00010e60, 0x00010e7e,
- 0x0000002c, 0x0000002c, 0x0000002e, 0x0000002f,
- 0x0000003a, 0x0000003a, 0x000000a0, 0x000000a0,
- 0x0000060c, 0x0000060c, 0x0000202f, 0x0000202f,
- 0x00002044, 0x00002044, 0x0000fe50, 0x0000fe50,
- 0x0000fe52, 0x0000fe52, 0x0000fe55, 0x0000fe55,
- 0x0000ff0c, 0x0000ff0c, 0x0000ff0e, 0x0000ff0f,
- 0x0000ff1a, 0x0000ff1a, 0x0000000a, 0x0000000a,
- 0x0000000d, 0x0000000d, 0x0000001c, 0x0000001e,
- 0x00000085, 0x00000085, 0x00002029, 0x00002029,
- 0x00000009, 0x00000009, 0x0000000b, 0x0000000b,
- 0x0000001f, 0x0000001f, 0x0000000c, 0x0000000c,
- 0x00000020, 0x00000020, 0x00001680, 0x00001680,
- 0x00002000, 0x0000200a, 0x00002028, 0x00002028,
- 0x0000205f, 0x0000205f, 0x00003000, 0x00003000,
- 0x00000000, 0x00000008, 0x0000000e, 0x0000001b,
- 0x00000021, 0x00000022, 0x00000026, 0x0000002a,
- 0x0000003b, 0x00000040, 0x0000005b, 0x00000060,
- 0x0000007b, 0x00000084, 0x00000086, 0x0000009f,
- 0x000000a1, 0x000000a1, 0x000000a6, 0x000000a9,
- 0x000000ab, 0x000000af, 0x000000b4, 0x000000b4,
- 0x000000b6, 0x000000b8, 0x000000bb, 0x000000bf,
- 0x000000d7, 0x000000d7, 0x000000f7, 0x000000f7,
- 0x000002b9, 0x000002ba, 0x000002c2, 0x000002cf,
- 0x000002d2, 0x000002df, 0x000002e5, 0x000002ed,
- 0x000002ef, 0x0000036f, 0x00000374, 0x00000375,
- 0x0000037e, 0x0000037e, 0x00000384, 0x00000385,
- 0x00000387, 0x00000387, 0x000003f6, 0x000003f6,
- 0x00000483, 0x00000489, 0x0000058a, 0x0000058a,
- 0x0000058d, 0x0000058e, 0x00000591, 0x000005bd,
- 0x000005bf, 0x000005bf, 0x000005c1, 0x000005c2,
- 0x000005c4, 0x000005c5, 0x000005c7, 0x000005c7,
- 0x00000606, 0x00000607, 0x0000060e, 0x0000061a,
- 0x0000064b, 0x0000065f, 0x00000670, 0x00000670,
- 0x000006d6, 0x000006dc, 0x000006de, 0x000006e4,
- 0x000006e7, 0x000006ed, 0x00000711, 0x00000711,
- 0x00000730, 0x0000074a, 0x000007a6, 0x000007b0,
- 0x000007eb, 0x000007f3, 0x000007f6, 0x000007f9,
+ 0x000008e2, 0x000008e2, 0x00010d30, 0x00010d39,
+ 0x00010e60, 0x00010e7e, 0x0000002c, 0x0000002c,
+ 0x0000002e, 0x0000002f, 0x0000003a, 0x0000003a,
+ 0x000000a0, 0x000000a0, 0x0000060c, 0x0000060c,
+ 0x0000202f, 0x0000202f, 0x00002044, 0x00002044,
+ 0x0000fe50, 0x0000fe50, 0x0000fe52, 0x0000fe52,
+ 0x0000fe55, 0x0000fe55, 0x0000ff0c, 0x0000ff0c,
+ 0x0000ff0e, 0x0000ff0f, 0x0000ff1a, 0x0000ff1a,
+ 0x0000000a, 0x0000000a, 0x0000000d, 0x0000000d,
+ 0x0000001c, 0x0000001e, 0x00000085, 0x00000085,
+ 0x00002029, 0x00002029, 0x00000009, 0x00000009,
+ 0x0000000b, 0x0000000b, 0x0000001f, 0x0000001f,
+ 0x0000000c, 0x0000000c, 0x00000020, 0x00000020,
+ 0x00001680, 0x00001680, 0x00002000, 0x0000200a,
+ 0x00002028, 0x00002028, 0x0000205f, 0x0000205f,
+ 0x00003000, 0x00003000, 0x00000000, 0x00000008,
+ 0x0000000e, 0x0000001b, 0x00000021, 0x00000022,
+ 0x00000026, 0x0000002a, 0x0000003b, 0x00000040,
+ 0x0000005b, 0x00000060, 0x0000007b, 0x00000084,
+ 0x00000086, 0x0000009f, 0x000000a1, 0x000000a1,
+ 0x000000a6, 0x000000a9, 0x000000ab, 0x000000af,
+ 0x000000b4, 0x000000b4, 0x000000b6, 0x000000b8,
+ 0x000000bb, 0x000000bf, 0x000000d7, 0x000000d7,
+ 0x000000f7, 0x000000f7, 0x000002b9, 0x000002ba,
+ 0x000002c2, 0x000002cf, 0x000002d2, 0x000002df,
+ 0x000002e5, 0x000002ed, 0x000002ef, 0x0000036f,
+ 0x00000374, 0x00000375, 0x0000037e, 0x0000037e,
+ 0x00000384, 0x00000385, 0x00000387, 0x00000387,
+ 0x000003f6, 0x000003f6, 0x00000483, 0x00000489,
+ 0x0000058a, 0x0000058a, 0x0000058d, 0x0000058e,
+ 0x00000591, 0x000005bd, 0x000005bf, 0x000005bf,
+ 0x000005c1, 0x000005c2, 0x000005c4, 0x000005c5,
+ 0x000005c7, 0x000005c7, 0x00000606, 0x00000607,
+ 0x0000060e, 0x0000061a, 0x0000064b, 0x0000065f,
+ 0x00000670, 0x00000670, 0x000006d6, 0x000006dc,
+ 0x000006de, 0x000006e4, 0x000006e7, 0x000006ed,
+ 0x00000711, 0x00000711, 0x00000730, 0x0000074a,
+ 0x000007a6, 0x000007b0, 0x000007eb, 0x000007f3,
+ 0x000007f6, 0x000007f9, 0x000007fd, 0x000007fd,
0x00000816, 0x00000819, 0x0000081b, 0x00000823,
0x00000825, 0x00000827, 0x00000829, 0x0000082d,
- 0x00000859, 0x0000085b, 0x000008d4, 0x000008e1,
+ 0x00000859, 0x0000085b, 0x000008d3, 0x000008e1,
0x000008e3, 0x00000902, 0x0000093a, 0x0000093a,
0x0000093c, 0x0000093c, 0x00000941, 0x00000948,
0x0000094d, 0x0000094d, 0x00000951, 0x00000957,
0x00000962, 0x00000963, 0x00000981, 0x00000981,
0x000009bc, 0x000009bc, 0x000009c1, 0x000009c4,
0x000009cd, 0x000009cd, 0x000009e2, 0x000009e3,
- 0x00000a01, 0x00000a02, 0x00000a3c, 0x00000a3c,
- 0x00000a41, 0x00000a42, 0x00000a47, 0x00000a48,
- 0x00000a4b, 0x00000a4d, 0x00000a51, 0x00000a51,
- 0x00000a70, 0x00000a71, 0x00000a75, 0x00000a75,
- 0x00000a81, 0x00000a82, 0x00000abc, 0x00000abc,
- 0x00000ac1, 0x00000ac5, 0x00000ac7, 0x00000ac8,
- 0x00000acd, 0x00000acd, 0x00000ae2, 0x00000ae3,
- 0x00000afa, 0x00000aff, 0x00000b01, 0x00000b01,
- 0x00000b3c, 0x00000b3c, 0x00000b3f, 0x00000b3f,
- 0x00000b41, 0x00000b44, 0x00000b4d, 0x00000b4d,
- 0x00000b56, 0x00000b56, 0x00000b62, 0x00000b63,
- 0x00000b82, 0x00000b82, 0x00000bc0, 0x00000bc0,
- 0x00000bcd, 0x00000bcd, 0x00000bf3, 0x00000bf8,
- 0x00000bfa, 0x00000bfa, 0x00000c00, 0x00000c00,
+ 0x000009fe, 0x000009fe, 0x00000a01, 0x00000a02,
+ 0x00000a3c, 0x00000a3c, 0x00000a41, 0x00000a42,
+ 0x00000a47, 0x00000a48, 0x00000a4b, 0x00000a4d,
+ 0x00000a51, 0x00000a51, 0x00000a70, 0x00000a71,
+ 0x00000a75, 0x00000a75, 0x00000a81, 0x00000a82,
+ 0x00000abc, 0x00000abc, 0x00000ac1, 0x00000ac5,
+ 0x00000ac7, 0x00000ac8, 0x00000acd, 0x00000acd,
+ 0x00000ae2, 0x00000ae3, 0x00000afa, 0x00000aff,
+ 0x00000b01, 0x00000b01, 0x00000b3c, 0x00000b3c,
+ 0x00000b3f, 0x00000b3f, 0x00000b41, 0x00000b44,
+ 0x00000b4d, 0x00000b4d, 0x00000b56, 0x00000b56,
+ 0x00000b62, 0x00000b63, 0x00000b82, 0x00000b82,
+ 0x00000bc0, 0x00000bc0, 0x00000bcd, 0x00000bcd,
+ 0x00000bf3, 0x00000bf8, 0x00000bfa, 0x00000bfa,
+ 0x00000c00, 0x00000c00, 0x00000c04, 0x00000c04,
0x00000c3e, 0x00000c40, 0x00000c46, 0x00000c48,
0x00000c4a, 0x00000c4d, 0x00000c55, 0x00000c56,
0x00000c62, 0x00000c63, 0x00000c78, 0x00000c7e,
@@ -1958,11 +2098,10 @@ static const unsigned int _ucprop_ranges[] = {
0x00002440, 0x0000244a, 0x00002460, 0x00002487,
0x000024ea, 0x000026ab, 0x000026ad, 0x000027ff,
0x00002900, 0x00002b73, 0x00002b76, 0x00002b95,
- 0x00002b98, 0x00002bb9, 0x00002bbd, 0x00002bc8,
- 0x00002bca, 0x00002bd2, 0x00002bec, 0x00002bef,
+ 0x00002b98, 0x00002bc8, 0x00002bca, 0x00002bfe,
0x00002ce5, 0x00002cea, 0x00002cef, 0x00002cf1,
0x00002cf9, 0x00002cff, 0x00002d7f, 0x00002d7f,
- 0x00002de0, 0x00002e49, 0x00002e80, 0x00002e99,
+ 0x00002de0, 0x00002e4e, 0x00002e80, 0x00002e99,
0x00002e9b, 0x00002ef3, 0x00002f00, 0x00002fd5,
0x00002ff0, 0x00002ffb, 0x00003001, 0x00003004,
0x00003008, 0x00003020, 0x0000302a, 0x0000302d,
@@ -1981,50 +2120,52 @@ static const unsigned int _ucprop_ranges[] = {
0x0000a806, 0x0000a806, 0x0000a80b, 0x0000a80b,
0x0000a825, 0x0000a826, 0x0000a828, 0x0000a82b,
0x0000a874, 0x0000a877, 0x0000a8c4, 0x0000a8c5,
- 0x0000a8e0, 0x0000a8f1, 0x0000a926, 0x0000a92d,
- 0x0000a947, 0x0000a951, 0x0000a980, 0x0000a982,
- 0x0000a9b3, 0x0000a9b3, 0x0000a9b6, 0x0000a9b9,
- 0x0000a9bc, 0x0000a9bc, 0x0000a9e5, 0x0000a9e5,
- 0x0000aa29, 0x0000aa2e, 0x0000aa31, 0x0000aa32,
- 0x0000aa35, 0x0000aa36, 0x0000aa43, 0x0000aa43,
- 0x0000aa4c, 0x0000aa4c, 0x0000aa7c, 0x0000aa7c,
- 0x0000aab0, 0x0000aab0, 0x0000aab2, 0x0000aab4,
- 0x0000aab7, 0x0000aab8, 0x0000aabe, 0x0000aabf,
- 0x0000aac1, 0x0000aac1, 0x0000aaec, 0x0000aaed,
- 0x0000aaf6, 0x0000aaf6, 0x0000abe5, 0x0000abe5,
- 0x0000abe8, 0x0000abe8, 0x0000abed, 0x0000abed,
- 0x0000fb1e, 0x0000fb1e, 0x0000fd3e, 0x0000fd3f,
- 0x0000fdfd, 0x0000fdfd, 0x0000fe00, 0x0000fe19,
- 0x0000fe20, 0x0000fe4f, 0x0000fe51, 0x0000fe51,
- 0x0000fe54, 0x0000fe54, 0x0000fe56, 0x0000fe5e,
- 0x0000fe60, 0x0000fe61, 0x0000fe64, 0x0000fe66,
- 0x0000fe68, 0x0000fe68, 0x0000fe6b, 0x0000fe6b,
- 0x0000feff, 0x0000feff, 0x0000ff01, 0x0000ff02,
- 0x0000ff06, 0x0000ff0a, 0x0000ff1b, 0x0000ff20,
- 0x0000ff3b, 0x0000ff40, 0x0000ff5b, 0x0000ff65,
- 0x0000ffe2, 0x0000ffe4, 0x0000ffe8, 0x0000ffee,
- 0x0000fff9, 0x0000fffd, 0x00010101, 0x00010101,
- 0x00010140, 0x0001018c, 0x00010190, 0x0001019b,
- 0x000101a0, 0x000101a0, 0x000101fd, 0x000101fd,
- 0x000102e0, 0x000102e0, 0x00010376, 0x0001037a,
- 0x0001091f, 0x0001091f, 0x00010a01, 0x00010a03,
- 0x00010a05, 0x00010a06, 0x00010a0c, 0x00010a0f,
- 0x00010a38, 0x00010a3a, 0x00010a3f, 0x00010a3f,
- 0x00010ae5, 0x00010ae6, 0x00010b39, 0x00010b3f,
- 0x00011001, 0x00011001, 0x00011038, 0x00011046,
- 0x00011052, 0x00011065, 0x0001107f, 0x00011081,
- 0x000110b3, 0x000110b6, 0x000110b9, 0x000110ba,
- 0x00011100, 0x00011102, 0x00011127, 0x0001112b,
- 0x0001112d, 0x00011134, 0x00011173, 0x00011173,
- 0x00011180, 0x00011181, 0x000111b6, 0x000111be,
- 0x000111ca, 0x000111cc, 0x0001122f, 0x00011231,
- 0x00011234, 0x00011234, 0x00011236, 0x00011237,
- 0x0001123e, 0x0001123e, 0x000112df, 0x000112df,
- 0x000112e3, 0x000112ea, 0x00011300, 0x00011301,
- 0x0001133c, 0x0001133c, 0x00011340, 0x00011340,
- 0x00011366, 0x0001136c, 0x00011370, 0x00011374,
- 0x00011438, 0x0001143f, 0x00011442, 0x00011444,
- 0x00011446, 0x00011446, 0x000114b3, 0x000114b8,
+ 0x0000a8e0, 0x0000a8f1, 0x0000a8ff, 0x0000a8ff,
+ 0x0000a926, 0x0000a92d, 0x0000a947, 0x0000a951,
+ 0x0000a980, 0x0000a982, 0x0000a9b3, 0x0000a9b3,
+ 0x0000a9b6, 0x0000a9b9, 0x0000a9bc, 0x0000a9bc,
+ 0x0000a9e5, 0x0000a9e5, 0x0000aa29, 0x0000aa2e,
+ 0x0000aa31, 0x0000aa32, 0x0000aa35, 0x0000aa36,
+ 0x0000aa43, 0x0000aa43, 0x0000aa4c, 0x0000aa4c,
+ 0x0000aa7c, 0x0000aa7c, 0x0000aab0, 0x0000aab0,
+ 0x0000aab2, 0x0000aab4, 0x0000aab7, 0x0000aab8,
+ 0x0000aabe, 0x0000aabf, 0x0000aac1, 0x0000aac1,
+ 0x0000aaec, 0x0000aaed, 0x0000aaf6, 0x0000aaf6,
+ 0x0000abe5, 0x0000abe5, 0x0000abe8, 0x0000abe8,
+ 0x0000abed, 0x0000abed, 0x0000fb1e, 0x0000fb1e,
+ 0x0000fd3e, 0x0000fd3f, 0x0000fdfd, 0x0000fdfd,
+ 0x0000fe00, 0x0000fe19, 0x0000fe20, 0x0000fe4f,
+ 0x0000fe51, 0x0000fe51, 0x0000fe54, 0x0000fe54,
+ 0x0000fe56, 0x0000fe5e, 0x0000fe60, 0x0000fe61,
+ 0x0000fe64, 0x0000fe66, 0x0000fe68, 0x0000fe68,
+ 0x0000fe6b, 0x0000fe6b, 0x0000feff, 0x0000feff,
+ 0x0000ff01, 0x0000ff02, 0x0000ff06, 0x0000ff0a,
+ 0x0000ff1b, 0x0000ff20, 0x0000ff3b, 0x0000ff40,
+ 0x0000ff5b, 0x0000ff65, 0x0000ffe2, 0x0000ffe4,
+ 0x0000ffe8, 0x0000ffee, 0x0000fff9, 0x0000fffd,
+ 0x00010101, 0x00010101, 0x00010140, 0x0001018c,
+ 0x00010190, 0x0001019b, 0x000101a0, 0x000101a0,
+ 0x000101fd, 0x000101fd, 0x000102e0, 0x000102e0,
+ 0x00010376, 0x0001037a, 0x0001091f, 0x0001091f,
+ 0x00010a01, 0x00010a03, 0x00010a05, 0x00010a06,
+ 0x00010a0c, 0x00010a0f, 0x00010a38, 0x00010a3a,
+ 0x00010a3f, 0x00010a3f, 0x00010ae5, 0x00010ae6,
+ 0x00010b39, 0x00010b3f, 0x00010d24, 0x00010d27,
+ 0x00010f46, 0x00010f50, 0x00011001, 0x00011001,
+ 0x00011038, 0x00011046, 0x00011052, 0x00011065,
+ 0x0001107f, 0x00011081, 0x000110b3, 0x000110b6,
+ 0x000110b9, 0x000110ba, 0x00011100, 0x00011102,
+ 0x00011127, 0x0001112b, 0x0001112d, 0x00011134,
+ 0x00011173, 0x00011173, 0x00011180, 0x00011181,
+ 0x000111b6, 0x000111be, 0x000111c9, 0x000111cc,
+ 0x0001122f, 0x00011231, 0x00011234, 0x00011234,
+ 0x00011236, 0x00011237, 0x0001123e, 0x0001123e,
+ 0x000112df, 0x000112df, 0x000112e3, 0x000112ea,
+ 0x00011300, 0x00011301, 0x0001133b, 0x0001133c,
+ 0x00011340, 0x00011340, 0x00011366, 0x0001136c,
+ 0x00011370, 0x00011374, 0x00011438, 0x0001143f,
+ 0x00011442, 0x00011444, 0x00011446, 0x00011446,
+ 0x0001145e, 0x0001145e, 0x000114b3, 0x000114b8,
0x000114ba, 0x000114ba, 0x000114bf, 0x000114c0,
0x000114c2, 0x000114c3, 0x000115b2, 0x000115b5,
0x000115bc, 0x000115bd, 0x000115bf, 0x000115c0,
@@ -2034,6 +2175,7 @@ static const unsigned int _ucprop_ranges[] = {
0x000116ad, 0x000116ad, 0x000116b0, 0x000116b5,
0x000116b7, 0x000116b7, 0x0001171d, 0x0001171f,
0x00011722, 0x00011725, 0x00011727, 0x0001172b,
+ 0x0001182f, 0x00011837, 0x00011839, 0x0001183a,
0x00011a01, 0x00011a06, 0x00011a09, 0x00011a0a,
0x00011a33, 0x00011a38, 0x00011a3b, 0x00011a3e,
0x00011a47, 0x00011a47, 0x00011a51, 0x00011a56,
@@ -2044,6 +2186,8 @@ static const unsigned int _ucprop_ranges[] = {
0x00011cb5, 0x00011cb6, 0x00011d31, 0x00011d36,
0x00011d3a, 0x00011d3a, 0x00011d3c, 0x00011d3d,
0x00011d3f, 0x00011d45, 0x00011d47, 0x00011d47,
+ 0x00011d90, 0x00011d91, 0x00011d95, 0x00011d95,
+ 0x00011d97, 0x00011d97, 0x00011ef3, 0x00011ef4,
0x00016af0, 0x00016af4, 0x00016b30, 0x00016b36,
0x00016f8f, 0x00016f92, 0x0001bc9d, 0x0001bc9e,
0x0001bca0, 0x0001bca3, 0x0001d167, 0x0001d169,
@@ -2062,457 +2206,18 @@ static const unsigned int _ucprop_ranges[] = {
0x0001f000, 0x0001f02b, 0x0001f030, 0x0001f093,
0x0001f0a0, 0x0001f0ae, 0x0001f0b1, 0x0001f0bf,
0x0001f0c1, 0x0001f0cf, 0x0001f0d1, 0x0001f0f5,
- 0x0001f10b, 0x0001f10c, 0x0001f16a, 0x0001f16b,
- 0x0001f260, 0x0001f265, 0x0001f300, 0x0001f6d4,
- 0x0001f6e0, 0x0001f6ec, 0x0001f6f0, 0x0001f6f8,
- 0x0001f700, 0x0001f773, 0x0001f780, 0x0001f7d4,
- 0x0001f800, 0x0001f80b, 0x0001f810, 0x0001f847,
- 0x0001f850, 0x0001f859, 0x0001f860, 0x0001f887,
- 0x0001f890, 0x0001f8ad, 0x0001f900, 0x0001f90b,
- 0x0001f910, 0x0001f93e, 0x0001f940, 0x0001f94c,
- 0x0001f950, 0x0001f96b, 0x0001f980, 0x0001f997,
- 0x0001f9c0, 0x0001f9c0, 0x0001f9d0, 0x0001f9e6,
- 0x000e0001, 0x000e0001, 0x000e0020, 0x000e007f,
- 0x000e0100, 0x000e01ef, 0x000000c0, 0x000000c5,
- 0x000000c7, 0x000000cf, 0x000000d1, 0x000000d6,
- 0x000000d9, 0x000000dd, 0x000000e0, 0x000000e5,
- 0x000000e7, 0x000000ef, 0x000000f1, 0x000000f6,
- 0x000000f9, 0x000000fd, 0x000000ff, 0x0000010f,
- 0x00000112, 0x00000125, 0x00000128, 0x00000130,
- 0x00000134, 0x00000137, 0x00000139, 0x0000013e,
- 0x00000143, 0x00000148, 0x0000014c, 0x00000151,
- 0x00000154, 0x00000165, 0x00000168, 0x0000017e,
- 0x000001a0, 0x000001a1, 0x000001af, 0x000001b0,
- 0x000001cd, 0x000001dc, 0x000001de, 0x000001e3,
- 0x000001e6, 0x000001f0, 0x000001f4, 0x000001f5,
- 0x000001f8, 0x0000021b, 0x0000021e, 0x0000021f,
- 0x00000226, 0x00000233, 0x00000340, 0x00000341,
- 0x00000343, 0x00000344, 0x00000374, 0x00000374,
- 0x0000037e, 0x0000037e, 0x00000385, 0x0000038a,
- 0x0000038c, 0x0000038c, 0x0000038e, 0x00000390,
- 0x000003aa, 0x000003b0, 0x000003ca, 0x000003ce,
- 0x000003d3, 0x000003d4, 0x00000400, 0x00000401,
- 0x00000403, 0x00000403, 0x00000407, 0x00000407,
- 0x0000040c, 0x0000040e, 0x00000419, 0x00000419,
- 0x00000439, 0x00000439, 0x00000450, 0x00000451,
- 0x00000453, 0x00000453, 0x00000457, 0x00000457,
- 0x0000045c, 0x0000045e, 0x00000476, 0x00000477,
- 0x000004c1, 0x000004c2, 0x000004d0, 0x000004d3,
- 0x000004d6, 0x000004d7, 0x000004da, 0x000004df,
- 0x000004e2, 0x000004e7, 0x000004ea, 0x000004f5,
- 0x000004f8, 0x000004f9, 0x00000622, 0x00000626,
- 0x000006c0, 0x000006c0, 0x000006c2, 0x000006c2,
- 0x000006d3, 0x000006d3, 0x00000929, 0x00000929,
- 0x00000931, 0x00000931, 0x00000934, 0x00000934,
- 0x00000958, 0x0000095f, 0x000009cb, 0x000009cc,
- 0x000009dc, 0x000009dd, 0x000009df, 0x000009df,
- 0x00000a33, 0x00000a33, 0x00000a36, 0x00000a36,
- 0x00000a59, 0x00000a5b, 0x00000a5e, 0x00000a5e,
- 0x00000b48, 0x00000b48, 0x00000b4b, 0x00000b4c,
- 0x00000b5c, 0x00000b5d, 0x00000b94, 0x00000b94,
- 0x00000bca, 0x00000bcc, 0x00000c48, 0x00000c48,
- 0x00000cc0, 0x00000cc0, 0x00000cc7, 0x00000cc8,
- 0x00000cca, 0x00000ccb, 0x00000d4a, 0x00000d4c,
- 0x00000dda, 0x00000dda, 0x00000ddc, 0x00000dde,
- 0x00000f43, 0x00000f43, 0x00000f4d, 0x00000f4d,
- 0x00000f52, 0x00000f52, 0x00000f57, 0x00000f57,
- 0x00000f5c, 0x00000f5c, 0x00000f69, 0x00000f69,
- 0x00000f73, 0x00000f73, 0x00000f75, 0x00000f76,
- 0x00000f78, 0x00000f78, 0x00000f81, 0x00000f81,
- 0x00000f93, 0x00000f93, 0x00000f9d, 0x00000f9d,
- 0x00000fa2, 0x00000fa2, 0x00000fa7, 0x00000fa7,
- 0x00000fac, 0x00000fac, 0x00000fb9, 0x00000fb9,
- 0x00001026, 0x00001026, 0x00001b06, 0x00001b06,
- 0x00001b08, 0x00001b08, 0x00001b0a, 0x00001b0a,
- 0x00001b0c, 0x00001b0c, 0x00001b0e, 0x00001b0e,
- 0x00001b12, 0x00001b12, 0x00001b3b, 0x00001b3b,
- 0x00001b3d, 0x00001b3d, 0x00001b40, 0x00001b41,
- 0x00001b43, 0x00001b43, 0x00001e00, 0x00001e99,
- 0x00001e9b, 0x00001e9b, 0x00001ea0, 0x00001ef9,
- 0x00001f00, 0x00001f15, 0x00001f18, 0x00001f1d,
- 0x00001f20, 0x00001f45, 0x00001f48, 0x00001f4d,
- 0x00001f50, 0x00001f57, 0x00001f59, 0x00001f59,
- 0x00001f5b, 0x00001f5b, 0x00001f5d, 0x00001f5d,
- 0x00001f5f, 0x00001f7d, 0x00001f80, 0x00001fb4,
- 0x00001fb6, 0x00001fbc, 0x00001fbe, 0x00001fbe,
- 0x00001fc1, 0x00001fc4, 0x00001fc6, 0x00001fd3,
- 0x00001fd6, 0x00001fdb, 0x00001fdd, 0x00001fef,
- 0x00001ff2, 0x00001ff4, 0x00001ff6, 0x00001ffd,
- 0x00002000, 0x00002001, 0x00002126, 0x00002126,
- 0x0000212a, 0x0000212b, 0x0000219a, 0x0000219b,
- 0x000021ae, 0x000021ae, 0x000021cd, 0x000021cf,
- 0x00002204, 0x00002204, 0x00002209, 0x00002209,
- 0x0000220c, 0x0000220c, 0x00002224, 0x00002224,
- 0x00002226, 0x00002226, 0x00002241, 0x00002241,
- 0x00002244, 0x00002244, 0x00002247, 0x00002247,
- 0x00002249, 0x00002249, 0x00002260, 0x00002260,
- 0x00002262, 0x00002262, 0x0000226d, 0x00002271,
- 0x00002274, 0x00002275, 0x00002278, 0x00002279,
- 0x00002280, 0x00002281, 0x00002284, 0x00002285,
- 0x00002288, 0x00002289, 0x000022ac, 0x000022af,
- 0x000022e0, 0x000022e3, 0x000022ea, 0x000022ed,
- 0x00002329, 0x0000232a, 0x00002adc, 0x00002adc,
- 0x0000304c, 0x0000304c, 0x0000304e, 0x0000304e,
- 0x00003050, 0x00003050, 0x00003052, 0x00003052,
- 0x00003054, 0x00003054, 0x00003056, 0x00003056,
- 0x00003058, 0x00003058, 0x0000305a, 0x0000305a,
- 0x0000305c, 0x0000305c, 0x0000305e, 0x0000305e,
- 0x00003060, 0x00003060, 0x00003062, 0x00003062,
- 0x00003065, 0x00003065, 0x00003067, 0x00003067,
- 0x00003069, 0x00003069, 0x00003070, 0x00003071,
- 0x00003073, 0x00003074, 0x00003076, 0x00003077,
- 0x00003079, 0x0000307a, 0x0000307c, 0x0000307d,
- 0x00003094, 0x00003094, 0x0000309e, 0x0000309e,
- 0x000030ac, 0x000030ac, 0x000030ae, 0x000030ae,
- 0x000030b0, 0x000030b0, 0x000030b2, 0x000030b2,
- 0x000030b4, 0x000030b4, 0x000030b6, 0x000030b6,
- 0x000030b8, 0x000030b8, 0x000030ba, 0x000030ba,
- 0x000030bc, 0x000030bc, 0x000030be, 0x000030be,
- 0x000030c0, 0x000030c0, 0x000030c2, 0x000030c2,
- 0x000030c5, 0x000030c5, 0x000030c7, 0x000030c7,
- 0x000030c9, 0x000030c9, 0x000030d0, 0x000030d1,
- 0x000030d3, 0x000030d4, 0x000030d6, 0x000030d7,
- 0x000030d9, 0x000030da, 0x000030dc, 0x000030dd,
- 0x000030f4, 0x000030f4, 0x000030f7, 0x000030fa,
- 0x000030fe, 0x000030fe, 0x0000f902, 0x0000fa0d,
- 0x0000fa10, 0x0000fa10, 0x0000fa12, 0x0000fa12,
- 0x0000fa15, 0x0000fa1e, 0x0000fa20, 0x0000fa20,
- 0x0000fa22, 0x0000fa22, 0x0000fa25, 0x0000fa26,
- 0x0000fa2a, 0x0000fa6d, 0x0000fa70, 0x0000fad9,
- 0x0000fb1d, 0x0000fb1d, 0x0000fb1f, 0x0000fb1f,
- 0x0000fb2a, 0x0000fb36, 0x0000fb38, 0x0000fb3c,
- 0x0000fb3e, 0x0000fb3e, 0x0000fb40, 0x0000fb41,
- 0x0000fb43, 0x0000fb44, 0x0000fb46, 0x0000fb4e,
- 0x0001109a, 0x0001109a, 0x0001109c, 0x0001109c,
- 0x000110ab, 0x000110ab, 0x0001112e, 0x0001112f,
- 0x0001134b, 0x0001134c, 0x000114bb, 0x000114bc,
- 0x000114be, 0x000114be, 0x000115ba, 0x000115bb,
- 0x0001d15e, 0x0001d164, 0x0001d1bb, 0x0001d1c0,
- 0x0002f800, 0x0002fa1d, 0x00000000, 0x00000377,
- 0x0000037a, 0x0000037f, 0x00000384, 0x0000038a,
- 0x0000038c, 0x0000038c, 0x0000038e, 0x000003a1,
- 0x000003a3, 0x0000052f, 0x00000531, 0x00000556,
- 0x00000559, 0x0000055f, 0x00000561, 0x00000587,
- 0x00000589, 0x0000058a, 0x0000058d, 0x0000058f,
- 0x00000591, 0x000005c7, 0x000005d0, 0x000005ea,
- 0x000005f0, 0x000005f4, 0x00000600, 0x0000061c,
- 0x0000061e, 0x0000070d, 0x0000070f, 0x0000074a,
- 0x0000074d, 0x000007b1, 0x000007c0, 0x000007fa,
- 0x00000800, 0x0000082d, 0x00000830, 0x0000083e,
- 0x00000840, 0x0000085b, 0x0000085e, 0x0000085e,
- 0x00000860, 0x0000086a, 0x000008a0, 0x000008b4,
- 0x000008b6, 0x000008bd, 0x000008d4, 0x00000983,
- 0x00000985, 0x0000098c, 0x0000098f, 0x00000990,
- 0x00000993, 0x000009a8, 0x000009aa, 0x000009b0,
- 0x000009b2, 0x000009b2, 0x000009b6, 0x000009b9,
- 0x000009bc, 0x000009c4, 0x000009c7, 0x000009c8,
- 0x000009cb, 0x000009ce, 0x000009d7, 0x000009d7,
- 0x000009dc, 0x000009dd, 0x000009df, 0x000009e3,
- 0x000009e6, 0x000009fd, 0x00000a01, 0x00000a03,
- 0x00000a05, 0x00000a0a, 0x00000a0f, 0x00000a10,
- 0x00000a13, 0x00000a28, 0x00000a2a, 0x00000a30,
- 0x00000a32, 0x00000a33, 0x00000a35, 0x00000a36,
- 0x00000a38, 0x00000a39, 0x00000a3c, 0x00000a3c,
- 0x00000a3e, 0x00000a42, 0x00000a47, 0x00000a48,
- 0x00000a4b, 0x00000a4d, 0x00000a51, 0x00000a51,
- 0x00000a59, 0x00000a5c, 0x00000a5e, 0x00000a5e,
- 0x00000a66, 0x00000a75, 0x00000a81, 0x00000a83,
- 0x00000a85, 0x00000a8d, 0x00000a8f, 0x00000a91,
- 0x00000a93, 0x00000aa8, 0x00000aaa, 0x00000ab0,
- 0x00000ab2, 0x00000ab3, 0x00000ab5, 0x00000ab9,
- 0x00000abc, 0x00000ac5, 0x00000ac7, 0x00000ac9,
- 0x00000acb, 0x00000acd, 0x00000ad0, 0x00000ad0,
- 0x00000ae0, 0x00000ae3, 0x00000ae6, 0x00000af1,
- 0x00000af9, 0x00000aff, 0x00000b01, 0x00000b03,
- 0x00000b05, 0x00000b0c, 0x00000b0f, 0x00000b10,
- 0x00000b13, 0x00000b28, 0x00000b2a, 0x00000b30,
- 0x00000b32, 0x00000b33, 0x00000b35, 0x00000b39,
- 0x00000b3c, 0x00000b44, 0x00000b47, 0x00000b48,
- 0x00000b4b, 0x00000b4d, 0x00000b56, 0x00000b57,
- 0x00000b5c, 0x00000b5d, 0x00000b5f, 0x00000b63,
- 0x00000b66, 0x00000b77, 0x00000b82, 0x00000b83,
- 0x00000b85, 0x00000b8a, 0x00000b8e, 0x00000b90,
- 0x00000b92, 0x00000b95, 0x00000b99, 0x00000b9a,
- 0x00000b9c, 0x00000b9c, 0x00000b9e, 0x00000b9f,
- 0x00000ba3, 0x00000ba4, 0x00000ba8, 0x00000baa,
- 0x00000bae, 0x00000bb9, 0x00000bbe, 0x00000bc2,
- 0x00000bc6, 0x00000bc8, 0x00000bca, 0x00000bcd,
- 0x00000bd0, 0x00000bd0, 0x00000bd7, 0x00000bd7,
- 0x00000be6, 0x00000bfa, 0x00000c00, 0x00000c03,
- 0x00000c05, 0x00000c0c, 0x00000c0e, 0x00000c10,
- 0x00000c12, 0x00000c28, 0x00000c2a, 0x00000c39,
- 0x00000c3d, 0x00000c44, 0x00000c46, 0x00000c48,
- 0x00000c4a, 0x00000c4d, 0x00000c55, 0x00000c56,
- 0x00000c58, 0x00000c5a, 0x00000c60, 0x00000c63,
- 0x00000c66, 0x00000c6f, 0x00000c78, 0x00000c83,
- 0x00000c85, 0x00000c8c, 0x00000c8e, 0x00000c90,
- 0x00000c92, 0x00000ca8, 0x00000caa, 0x00000cb3,
- 0x00000cb5, 0x00000cb9, 0x00000cbc, 0x00000cc4,
- 0x00000cc6, 0x00000cc8, 0x00000cca, 0x00000ccd,
- 0x00000cd5, 0x00000cd6, 0x00000cde, 0x00000cde,
- 0x00000ce0, 0x00000ce3, 0x00000ce6, 0x00000cef,
- 0x00000cf1, 0x00000cf2, 0x00000d00, 0x00000d03,
- 0x00000d05, 0x00000d0c, 0x00000d0e, 0x00000d10,
- 0x00000d12, 0x00000d44, 0x00000d46, 0x00000d48,
- 0x00000d4a, 0x00000d4f, 0x00000d54, 0x00000d63,
- 0x00000d66, 0x00000d7f, 0x00000d82, 0x00000d83,
- 0x00000d85, 0x00000d96, 0x00000d9a, 0x00000db1,
- 0x00000db3, 0x00000dbb, 0x00000dbd, 0x00000dbd,
- 0x00000dc0, 0x00000dc6, 0x00000dca, 0x00000dca,
- 0x00000dcf, 0x00000dd4, 0x00000dd6, 0x00000dd6,
- 0x00000dd8, 0x00000ddf, 0x00000de6, 0x00000def,
- 0x00000df2, 0x00000df4, 0x00000e01, 0x00000e3a,
- 0x00000e3f, 0x00000e5b, 0x00000e81, 0x00000e82,
- 0x00000e84, 0x00000e84, 0x00000e87, 0x00000e88,
- 0x00000e8a, 0x00000e8a, 0x00000e8d, 0x00000e8d,
- 0x00000e94, 0x00000e97, 0x00000e99, 0x00000e9f,
- 0x00000ea1, 0x00000ea3, 0x00000ea5, 0x00000ea5,
- 0x00000ea7, 0x00000ea7, 0x00000eaa, 0x00000eab,
- 0x00000ead, 0x00000eb9, 0x00000ebb, 0x00000ebd,
- 0x00000ec0, 0x00000ec4, 0x00000ec6, 0x00000ec6,
- 0x00000ec8, 0x00000ecd, 0x00000ed0, 0x00000ed9,
- 0x00000edc, 0x00000edf, 0x00000f00, 0x00000f47,
- 0x00000f49, 0x00000f6c, 0x00000f71, 0x00000f97,
- 0x00000f99, 0x00000fbc, 0x00000fbe, 0x00000fcc,
- 0x00000fce, 0x00000fda, 0x00001000, 0x000010c5,
- 0x000010c7, 0x000010c7, 0x000010cd, 0x000010cd,
- 0x000010d0, 0x00001248, 0x0000124a, 0x0000124d,
- 0x00001250, 0x00001256, 0x00001258, 0x00001258,
- 0x0000125a, 0x0000125d, 0x00001260, 0x00001288,
- 0x0000128a, 0x0000128d, 0x00001290, 0x000012b0,
- 0x000012b2, 0x000012b5, 0x000012b8, 0x000012be,
- 0x000012c0, 0x000012c0, 0x000012c2, 0x000012c5,
- 0x000012c8, 0x000012d6, 0x000012d8, 0x00001310,
- 0x00001312, 0x00001315, 0x00001318, 0x0000135a,
- 0x0000135d, 0x0000137c, 0x00001380, 0x00001399,
- 0x000013a0, 0x000013f5, 0x000013f8, 0x000013fd,
- 0x00001400, 0x0000169c, 0x000016a0, 0x000016f8,
- 0x00001700, 0x0000170c, 0x0000170e, 0x00001714,
- 0x00001720, 0x00001736, 0x00001740, 0x00001753,
- 0x00001760, 0x0000176c, 0x0000176e, 0x00001770,
- 0x00001772, 0x00001773, 0x00001780, 0x000017dd,
- 0x000017e0, 0x000017e9, 0x000017f0, 0x000017f9,
- 0x00001800, 0x0000180e, 0x00001810, 0x00001819,
- 0x00001820, 0x00001877, 0x00001880, 0x000018aa,
- 0x000018b0, 0x000018f5, 0x00001900, 0x0000191e,
- 0x00001920, 0x0000192b, 0x00001930, 0x0000193b,
- 0x00001940, 0x00001940, 0x00001944, 0x0000196d,
- 0x00001970, 0x00001974, 0x00001980, 0x000019ab,
- 0x000019b0, 0x000019c9, 0x000019d0, 0x000019da,
- 0x000019de, 0x00001a1b, 0x00001a1e, 0x00001a5e,
- 0x00001a60, 0x00001a7c, 0x00001a7f, 0x00001a89,
- 0x00001a90, 0x00001a99, 0x00001aa0, 0x00001aad,
- 0x00001ab0, 0x00001abe, 0x00001b00, 0x00001b4b,
- 0x00001b50, 0x00001b7c, 0x00001b80, 0x00001bf3,
- 0x00001bfc, 0x00001c37, 0x00001c3b, 0x00001c49,
- 0x00001c4d, 0x00001c88, 0x00001cc0, 0x00001cc7,
- 0x00001cd0, 0x00001cf9, 0x00001d00, 0x00001df9,
- 0x00001dfb, 0x00001f15, 0x00001f18, 0x00001f1d,
- 0x00001f20, 0x00001f45, 0x00001f48, 0x00001f4d,
- 0x00001f50, 0x00001f57, 0x00001f59, 0x00001f59,
- 0x00001f5b, 0x00001f5b, 0x00001f5d, 0x00001f5d,
- 0x00001f5f, 0x00001f7d, 0x00001f80, 0x00001fb4,
- 0x00001fb6, 0x00001fc4, 0x00001fc6, 0x00001fd3,
- 0x00001fd6, 0x00001fdb, 0x00001fdd, 0x00001fef,
- 0x00001ff2, 0x00001ff4, 0x00001ff6, 0x00001ffe,
- 0x00002000, 0x00002064, 0x00002066, 0x00002071,
- 0x00002074, 0x0000208e, 0x00002090, 0x0000209c,
- 0x000020a0, 0x000020bf, 0x000020d0, 0x000020f0,
- 0x00002100, 0x0000218b, 0x00002190, 0x00002426,
- 0x00002440, 0x0000244a, 0x00002460, 0x00002b73,
- 0x00002b76, 0x00002b95, 0x00002b98, 0x00002bb9,
- 0x00002bbd, 0x00002bc8, 0x00002bca, 0x00002bd2,
- 0x00002bec, 0x00002bef, 0x00002c00, 0x00002c2e,
- 0x00002c30, 0x00002c5e, 0x00002c60, 0x00002cf3,
- 0x00002cf9, 0x00002d25, 0x00002d27, 0x00002d27,
- 0x00002d2d, 0x00002d2d, 0x00002d30, 0x00002d67,
- 0x00002d6f, 0x00002d70, 0x00002d7f, 0x00002d96,
- 0x00002da0, 0x00002da6, 0x00002da8, 0x00002dae,
- 0x00002db0, 0x00002db6, 0x00002db8, 0x00002dbe,
- 0x00002dc0, 0x00002dc6, 0x00002dc8, 0x00002dce,
- 0x00002dd0, 0x00002dd6, 0x00002dd8, 0x00002dde,
- 0x00002de0, 0x00002e49, 0x00002e80, 0x00002e99,
- 0x00002e9b, 0x00002ef3, 0x00002f00, 0x00002fd5,
- 0x00002ff0, 0x00002ffb, 0x00003000, 0x0000303f,
- 0x00003041, 0x00003096, 0x00003099, 0x000030ff,
- 0x00003105, 0x0000312e, 0x00003131, 0x0000318e,
- 0x00003190, 0x000031ba, 0x000031c0, 0x000031e3,
- 0x000031f0, 0x0000321e, 0x00003220, 0x000032fe,
- 0x00003300, 0x000033ff, 0x00003400, 0x00004db5,
- 0x00004dc0, 0x00004dff, 0x00004e00, 0x00009fa5,
- 0x0000a000, 0x0000a48c, 0x0000a490, 0x0000a4c6,
- 0x0000a4d0, 0x0000a62b, 0x0000a640, 0x0000a6f7,
- 0x0000a700, 0x0000a7ae, 0x0000a7b0, 0x0000a7b7,
- 0x0000a7f7, 0x0000a82b, 0x0000a830, 0x0000a839,
- 0x0000a840, 0x0000a877, 0x0000a880, 0x0000a8c5,
- 0x0000a8ce, 0x0000a8d9, 0x0000a8e0, 0x0000a8fd,
- 0x0000a900, 0x0000a953, 0x0000a95f, 0x0000a97c,
- 0x0000a980, 0x0000a9cd, 0x0000a9cf, 0x0000a9d9,
- 0x0000a9de, 0x0000a9fe, 0x0000aa00, 0x0000aa36,
- 0x0000aa40, 0x0000aa4d, 0x0000aa50, 0x0000aa59,
- 0x0000aa5c, 0x0000aac2, 0x0000aadb, 0x0000aaf6,
- 0x0000ab01, 0x0000ab06, 0x0000ab09, 0x0000ab0e,
- 0x0000ab11, 0x0000ab16, 0x0000ab20, 0x0000ab26,
- 0x0000ab28, 0x0000ab2e, 0x0000ab30, 0x0000ab65,
- 0x0000ab70, 0x0000abed, 0x0000abf0, 0x0000abf9,
- 0x0000ac00, 0x0000d7a3, 0x0000d7b0, 0x0000d7c6,
- 0x0000d7cb, 0x0000d7fb, 0x0000f900, 0x0000fb06,
- 0x0000fb13, 0x0000fb17, 0x0000fb1d, 0x0000fb36,
- 0x0000fb38, 0x0000fb3c, 0x0000fb3e, 0x0000fb3e,
- 0x0000fb40, 0x0000fb41, 0x0000fb43, 0x0000fb44,
- 0x0000fb46, 0x0000fbc1, 0x0000fbd3, 0x0000fd3f,
- 0x0000fd50, 0x0000fd8f, 0x0000fd92, 0x0000fdc7,
- 0x0000fdf0, 0x0000fdfd, 0x0000fe00, 0x0000fe19,
- 0x0000fe20, 0x0000fe52, 0x0000fe54, 0x0000fe66,
- 0x0000fe68, 0x0000fe6b, 0x0000fe70, 0x0000fe74,
- 0x0000fe76, 0x0000fefc, 0x0000feff, 0x0000feff,
- 0x0000ff01, 0x0000ffbe, 0x0000ffc2, 0x0000ffc7,
- 0x0000ffca, 0x0000ffcf, 0x0000ffd2, 0x0000ffd7,
- 0x0000ffda, 0x0000ffdc, 0x0000ffe0, 0x0000ffe6,
- 0x0000ffe8, 0x0000ffee, 0x0000fff9, 0x0000fffd,
- 0x00010000, 0x0001000b, 0x0001000d, 0x00010026,
- 0x00010028, 0x0001003a, 0x0001003c, 0x0001003d,
- 0x0001003f, 0x0001004d, 0x00010050, 0x0001005d,
- 0x00010080, 0x000100fa, 0x00010100, 0x00010102,
- 0x00010107, 0x00010133, 0x00010137, 0x0001018e,
- 0x00010190, 0x0001019b, 0x000101a0, 0x000101a0,
- 0x000101d0, 0x000101fd, 0x00010280, 0x0001029c,
- 0x000102a0, 0x000102d0, 0x000102e0, 0x000102fb,
- 0x00010300, 0x00010323, 0x0001032d, 0x0001034a,
- 0x00010350, 0x0001037a, 0x00010380, 0x0001039d,
- 0x0001039f, 0x000103c3, 0x000103c8, 0x000103d5,
- 0x00010400, 0x0001049d, 0x000104a0, 0x000104a9,
- 0x000104b0, 0x000104d3, 0x000104d8, 0x000104fb,
- 0x00010500, 0x00010527, 0x00010530, 0x00010563,
- 0x0001056f, 0x0001056f, 0x00010600, 0x00010736,
- 0x00010740, 0x00010755, 0x00010760, 0x00010767,
- 0x00010800, 0x00010805, 0x00010808, 0x00010808,
- 0x0001080a, 0x00010835, 0x00010837, 0x00010838,
- 0x0001083c, 0x0001083c, 0x0001083f, 0x00010855,
- 0x00010857, 0x0001089e, 0x000108a7, 0x000108af,
- 0x000108e0, 0x000108f2, 0x000108f4, 0x000108f5,
- 0x000108fb, 0x0001091b, 0x0001091f, 0x00010939,
- 0x0001093f, 0x0001093f, 0x00010980, 0x000109b7,
- 0x000109bc, 0x000109cf, 0x000109d2, 0x00010a03,
- 0x00010a05, 0x00010a06, 0x00010a0c, 0x00010a13,
- 0x00010a15, 0x00010a17, 0x00010a19, 0x00010a33,
- 0x00010a38, 0x00010a3a, 0x00010a3f, 0x00010a47,
- 0x00010a50, 0x00010a58, 0x00010a60, 0x00010a9f,
- 0x00010ac0, 0x00010ae6, 0x00010aeb, 0x00010af6,
- 0x00010b00, 0x00010b35, 0x00010b39, 0x00010b55,
- 0x00010b58, 0x00010b72, 0x00010b78, 0x00010b91,
- 0x00010b99, 0x00010b9c, 0x00010ba9, 0x00010baf,
- 0x00010c00, 0x00010c48, 0x00010c80, 0x00010cb2,
- 0x00010cc0, 0x00010cf2, 0x00010cfa, 0x00010cff,
- 0x00010e60, 0x00010e7e, 0x00011000, 0x0001104d,
- 0x00011052, 0x0001106f, 0x0001107f, 0x000110c1,
- 0x000110d0, 0x000110e8, 0x000110f0, 0x000110f9,
- 0x00011100, 0x00011134, 0x00011136, 0x00011143,
- 0x00011150, 0x00011176, 0x00011180, 0x000111cd,
- 0x000111d0, 0x000111df, 0x000111e1, 0x000111f4,
- 0x00011200, 0x00011211, 0x00011213, 0x0001123e,
- 0x00011280, 0x00011286, 0x00011288, 0x00011288,
- 0x0001128a, 0x0001128d, 0x0001128f, 0x0001129d,
- 0x0001129f, 0x000112a9, 0x000112b0, 0x000112ea,
- 0x000112f0, 0x000112f9, 0x00011300, 0x00011303,
- 0x00011305, 0x0001130c, 0x0001130f, 0x00011310,
- 0x00011313, 0x00011328, 0x0001132a, 0x00011330,
- 0x00011332, 0x00011333, 0x00011335, 0x00011339,
- 0x0001133c, 0x00011344, 0x00011347, 0x00011348,
- 0x0001134b, 0x0001134d, 0x00011350, 0x00011350,
- 0x00011357, 0x00011357, 0x0001135d, 0x00011363,
- 0x00011366, 0x0001136c, 0x00011370, 0x00011374,
- 0x00011400, 0x00011459, 0x0001145b, 0x0001145b,
- 0x0001145d, 0x0001145d, 0x00011480, 0x000114c7,
- 0x000114d0, 0x000114d9, 0x00011580, 0x000115b5,
- 0x000115b8, 0x000115dd, 0x00011600, 0x00011644,
- 0x00011650, 0x00011659, 0x00011660, 0x0001166c,
- 0x00011680, 0x000116b7, 0x000116c0, 0x000116c9,
- 0x00011700, 0x00011719, 0x0001171d, 0x0001172b,
- 0x00011730, 0x0001173f, 0x000118a0, 0x000118f2,
- 0x000118ff, 0x000118ff, 0x00011a00, 0x00011a47,
- 0x00011a50, 0x00011a83, 0x00011a86, 0x00011a9c,
- 0x00011a9e, 0x00011aa2, 0x00011ac0, 0x00011af8,
- 0x00011c00, 0x00011c08, 0x00011c0a, 0x00011c36,
- 0x00011c38, 0x00011c45, 0x00011c50, 0x00011c6c,
- 0x00011c70, 0x00011c8f, 0x00011c92, 0x00011ca7,
- 0x00011ca9, 0x00011cb6, 0x00011d00, 0x00011d06,
- 0x00011d08, 0x00011d09, 0x00011d0b, 0x00011d36,
- 0x00011d3a, 0x00011d3a, 0x00011d3c, 0x00011d3d,
- 0x00011d3f, 0x00011d47, 0x00011d50, 0x00011d59,
- 0x00012000, 0x00012399, 0x00012400, 0x0001246e,
- 0x00012470, 0x00012474, 0x00012480, 0x00012543,
- 0x00013000, 0x0001342e, 0x00014400, 0x00014646,
- 0x00016800, 0x00016a38, 0x00016a40, 0x00016a5e,
- 0x00016a60, 0x00016a69, 0x00016a6e, 0x00016a6f,
- 0x00016ad0, 0x00016aed, 0x00016af0, 0x00016af5,
- 0x00016b00, 0x00016b45, 0x00016b50, 0x00016b59,
- 0x00016b5b, 0x00016b61, 0x00016b63, 0x00016b77,
- 0x00016b7d, 0x00016b8f, 0x00016f00, 0x00016f44,
- 0x00016f50, 0x00016f7e, 0x00016f8f, 0x00016f9f,
- 0x00016fe0, 0x00016fe1, 0x00017000, 0x00017000,
- 0x000187ec, 0x000187ec, 0x00018800, 0x00018af2,
- 0x0001b000, 0x0001b11e, 0x0001b170, 0x0001b2fb,
- 0x0001bc00, 0x0001bc6a, 0x0001bc70, 0x0001bc7c,
- 0x0001bc80, 0x0001bc88, 0x0001bc90, 0x0001bc99,
- 0x0001bc9c, 0x0001bca3, 0x0001d000, 0x0001d0f5,
- 0x0001d100, 0x0001d126, 0x0001d129, 0x0001d1e8,
- 0x0001d200, 0x0001d245, 0x0001d300, 0x0001d356,
- 0x0001d360, 0x0001d371, 0x0001d400, 0x0001d454,
- 0x0001d456, 0x0001d49c, 0x0001d49e, 0x0001d49f,
- 0x0001d4a2, 0x0001d4a2, 0x0001d4a5, 0x0001d4a6,
- 0x0001d4a9, 0x0001d4ac, 0x0001d4ae, 0x0001d4b9,
- 0x0001d4bb, 0x0001d4bb, 0x0001d4bd, 0x0001d4c3,
- 0x0001d4c5, 0x0001d505, 0x0001d507, 0x0001d50a,
- 0x0001d50d, 0x0001d514, 0x0001d516, 0x0001d51c,
- 0x0001d51e, 0x0001d539, 0x0001d53b, 0x0001d53e,
- 0x0001d540, 0x0001d544, 0x0001d546, 0x0001d546,
- 0x0001d54a, 0x0001d550, 0x0001d552, 0x0001d6a5,
- 0x0001d6a8, 0x0001d7cb, 0x0001d7ce, 0x0001da8b,
- 0x0001da9b, 0x0001da9f, 0x0001daa1, 0x0001daaf,
- 0x0001e000, 0x0001e006, 0x0001e008, 0x0001e018,
- 0x0001e01b, 0x0001e021, 0x0001e023, 0x0001e024,
- 0x0001e026, 0x0001e02a, 0x0001e800, 0x0001e8c4,
- 0x0001e8c7, 0x0001e8d6, 0x0001e900, 0x0001e94a,
- 0x0001e950, 0x0001e959, 0x0001e95e, 0x0001e95f,
- 0x0001ee00, 0x0001ee03, 0x0001ee05, 0x0001ee1f,
- 0x0001ee21, 0x0001ee22, 0x0001ee24, 0x0001ee24,
- 0x0001ee27, 0x0001ee27, 0x0001ee29, 0x0001ee32,
- 0x0001ee34, 0x0001ee37, 0x0001ee39, 0x0001ee39,
- 0x0001ee3b, 0x0001ee3b, 0x0001ee42, 0x0001ee42,
- 0x0001ee47, 0x0001ee47, 0x0001ee49, 0x0001ee49,
- 0x0001ee4b, 0x0001ee4b, 0x0001ee4d, 0x0001ee4f,
- 0x0001ee51, 0x0001ee52, 0x0001ee54, 0x0001ee54,
- 0x0001ee57, 0x0001ee57, 0x0001ee59, 0x0001ee59,
- 0x0001ee5b, 0x0001ee5b, 0x0001ee5d, 0x0001ee5d,
- 0x0001ee5f, 0x0001ee5f, 0x0001ee61, 0x0001ee62,
- 0x0001ee64, 0x0001ee64, 0x0001ee67, 0x0001ee6a,
- 0x0001ee6c, 0x0001ee72, 0x0001ee74, 0x0001ee77,
- 0x0001ee79, 0x0001ee7c, 0x0001ee7e, 0x0001ee7e,
- 0x0001ee80, 0x0001ee89, 0x0001ee8b, 0x0001ee9b,
- 0x0001eea1, 0x0001eea3, 0x0001eea5, 0x0001eea9,
- 0x0001eeab, 0x0001eebb, 0x0001eef0, 0x0001eef1,
- 0x0001f000, 0x0001f02b, 0x0001f030, 0x0001f093,
- 0x0001f0a0, 0x0001f0ae, 0x0001f0b1, 0x0001f0bf,
- 0x0001f0c1, 0x0001f0cf, 0x0001f0d1, 0x0001f0f5,
- 0x0001f100, 0x0001f10c, 0x0001f110, 0x0001f12e,
- 0x0001f130, 0x0001f16b, 0x0001f170, 0x0001f1ac,
- 0x0001f1e6, 0x0001f202, 0x0001f210, 0x0001f23b,
- 0x0001f240, 0x0001f248, 0x0001f250, 0x0001f251,
- 0x0001f260, 0x0001f265, 0x0001f300, 0x0001f6d4,
- 0x0001f6e0, 0x0001f6ec, 0x0001f6f0, 0x0001f6f8,
- 0x0001f700, 0x0001f773, 0x0001f780, 0x0001f7d4,
- 0x0001f800, 0x0001f80b, 0x0001f810, 0x0001f847,
- 0x0001f850, 0x0001f859, 0x0001f860, 0x0001f887,
- 0x0001f890, 0x0001f8ad, 0x0001f900, 0x0001f90b,
- 0x0001f910, 0x0001f93e, 0x0001f940, 0x0001f94c,
- 0x0001f950, 0x0001f96b, 0x0001f980, 0x0001f997,
- 0x0001f9c0, 0x0001f9c0, 0x0001f9d0, 0x0001f9e6,
- 0x00020000, 0x0002a6d6, 0x0002a700, 0x0002a700,
- 0x0002b734, 0x0002b734, 0x0002b740, 0x0002b740,
- 0x0002b81d, 0x0002b81d, 0x0002b820, 0x0002b820,
- 0x0002cea1, 0x0002cea1, 0x0002ceb0, 0x0002ceb0,
- 0x0002ebe0, 0x0002ebe0, 0x0002f800, 0x0002fa1d,
+ 0x0001f10b, 0x0001f10c, 0x0001f12f, 0x0001f12f,
+ 0x0001f16a, 0x0001f16b, 0x0001f260, 0x0001f265,
+ 0x0001f300, 0x0001f6d4, 0x0001f6e0, 0x0001f6ec,
+ 0x0001f6f0, 0x0001f6f9, 0x0001f700, 0x0001f773,
+ 0x0001f780, 0x0001f7d8, 0x0001f800, 0x0001f80b,
+ 0x0001f810, 0x0001f847, 0x0001f850, 0x0001f859,
+ 0x0001f860, 0x0001f887, 0x0001f890, 0x0001f8ad,
+ 0x0001f900, 0x0001f90b, 0x0001f910, 0x0001f93e,
+ 0x0001f940, 0x0001f970, 0x0001f973, 0x0001f976,
+ 0x0001f97a, 0x0001f97a, 0x0001f97c, 0x0001f9a2,
+ 0x0001f9b0, 0x0001f9b9, 0x0001f9c0, 0x0001f9c2,
+ 0x0001f9d0, 0x0001f9ff, 0x0001fa60, 0x0001fa6d,
0x000e0001, 0x000e0001, 0x000e0020, 0x000e007f,
0x000e0100, 0x000e01ef, 0x000000ab, 0x000000ab,
0x00002018, 0x00002018, 0x0000201b, 0x0000201c,
@@ -2537,6 +2242,8 @@ static const unsigned int _ucprop_ranges[] = {
0x0000fbd3, 0x0000fd3d, 0x0000fd50, 0x0000fd8f,
0x0000fd92, 0x0000fdc7, 0x0000fdf0, 0x0000fdfc,
0x0000fe70, 0x0000fe74, 0x0000fe76, 0x0000fefc,
+ 0x00010d00, 0x00010d23, 0x00010f30, 0x00010f45,
+ 0x00010f51, 0x00010f59, 0x0001ec71, 0x0001ecb4,
0x0001ee00, 0x0001ee03, 0x0001ee05, 0x0001ee1f,
0x0001ee21, 0x0001ee22, 0x0001ee24, 0x0001ee24,
0x0001ee27, 0x0001ee27, 0x0001ee29, 0x0001ee32,
@@ -2553,2639 +2260,2830 @@ static const unsigned int _ucprop_ranges[] = {
0x0001ee79, 0x0001ee7c, 0x0001ee7e, 0x0001ee7e,
0x0001ee80, 0x0001ee89, 0x0001ee8b, 0x0001ee9b,
0x0001eea1, 0x0001eea3, 0x0001eea5, 0x0001eea9,
- 0x0001eeab, 0x0001eebb
+ 0x0001eeab, 0x0001eebb, 0x00000041, 0x0000005a,
+ 0x00000061, 0x0000007a, 0x000000aa, 0x000000aa,
+ 0x000000b5, 0x000000b5, 0x000000ba, 0x000000ba,
+ 0x000000c0, 0x000000d6, 0x000000d8, 0x000000f6,
+ 0x000000f8, 0x000001ba, 0x000001bc, 0x000001bf,
+ 0x000001c4, 0x00000293, 0x00000295, 0x000002b8,
+ 0x000002c0, 0x000002c1, 0x000002e0, 0x000002e4,
+ 0x00000345, 0x00000345, 0x00000370, 0x00000373,
+ 0x00000376, 0x00000377, 0x0000037a, 0x0000037d,
+ 0x0000037f, 0x0000037f, 0x00000386, 0x00000386,
+ 0x00000388, 0x0000038a, 0x0000038c, 0x0000038c,
+ 0x0000038e, 0x000003a1, 0x000003a3, 0x000003f5,
+ 0x000003f7, 0x00000481, 0x0000048a, 0x0000052f,
+ 0x00000531, 0x00000556, 0x00000560, 0x00000588,
+ 0x000010a0, 0x000010c5, 0x000010c7, 0x000010c7,
+ 0x000010cd, 0x000010cd, 0x000010d0, 0x000010fa,
+ 0x000010fd, 0x000010ff, 0x000013a0, 0x000013f5,
+ 0x000013f8, 0x000013fd, 0x00001c80, 0x00001c88,
+ 0x00001c90, 0x00001cba, 0x00001cbd, 0x00001cbf,
+ 0x00001d00, 0x00001dbf, 0x00001e00, 0x00001f15,
+ 0x00001f18, 0x00001f1d, 0x00001f20, 0x00001f45,
+ 0x00001f48, 0x00001f4d, 0x00001f50, 0x00001f57,
+ 0x00001f59, 0x00001f59, 0x00001f5b, 0x00001f5b,
+ 0x00001f5d, 0x00001f5d, 0x00001f5f, 0x00001f7d,
+ 0x00001f80, 0x00001fb4, 0x00001fb6, 0x00001fbc,
+ 0x00001fbe, 0x00001fbe, 0x00001fc2, 0x00001fc4,
+ 0x00001fc6, 0x00001fcc, 0x00001fd0, 0x00001fd3,
+ 0x00001fd6, 0x00001fdb, 0x00001fe0, 0x00001fec,
+ 0x00001ff2, 0x00001ff4, 0x00001ff6, 0x00001ffc,
+ 0x00002071, 0x00002071, 0x0000207f, 0x0000207f,
+ 0x00002090, 0x0000209c, 0x00002102, 0x00002102,
+ 0x00002107, 0x00002107, 0x0000210a, 0x00002113,
+ 0x00002115, 0x00002115, 0x00002119, 0x0000211d,
+ 0x00002124, 0x00002124, 0x00002126, 0x00002126,
+ 0x00002128, 0x00002128, 0x0000212a, 0x0000212d,
+ 0x0000212f, 0x00002134, 0x00002139, 0x00002139,
+ 0x0000213c, 0x0000213f, 0x00002145, 0x00002149,
+ 0x0000214e, 0x0000214e, 0x00002160, 0x0000217f,
+ 0x00002183, 0x00002184, 0x000024b6, 0x000024e9,
+ 0x00002c00, 0x00002c2e, 0x00002c30, 0x00002c5e,
+ 0x00002c60, 0x00002ce4, 0x00002ceb, 0x00002cee,
+ 0x00002cf2, 0x00002cf3, 0x00002d00, 0x00002d25,
+ 0x00002d27, 0x00002d27, 0x00002d2d, 0x00002d2d,
+ 0x0000a640, 0x0000a66d, 0x0000a680, 0x0000a69d,
+ 0x0000a722, 0x0000a787, 0x0000a78b, 0x0000a78e,
+ 0x0000a790, 0x0000a7b9, 0x0000a7f8, 0x0000a7fa,
+ 0x0000ab30, 0x0000ab5a, 0x0000ab5c, 0x0000ab65,
+ 0x0000ab70, 0x0000abbf, 0x0000fb00, 0x0000fb06,
+ 0x0000fb13, 0x0000fb17, 0x0000ff21, 0x0000ff3a,
+ 0x0000ff41, 0x0000ff5a, 0x00010400, 0x0001044f,
+ 0x000104b0, 0x000104d3, 0x000104d8, 0x000104fb,
+ 0x00010c80, 0x00010cb2, 0x00010cc0, 0x00010cf2,
+ 0x000118a0, 0x000118df, 0x00016e40, 0x00016e7f,
+ 0x0001d400, 0x0001d454, 0x0001d456, 0x0001d49c,
+ 0x0001d49e, 0x0001d49f, 0x0001d4a2, 0x0001d4a2,
+ 0x0001d4a5, 0x0001d4a6, 0x0001d4a9, 0x0001d4ac,
+ 0x0001d4ae, 0x0001d4b9, 0x0001d4bb, 0x0001d4bb,
+ 0x0001d4bd, 0x0001d4c3, 0x0001d4c5, 0x0001d505,
+ 0x0001d507, 0x0001d50a, 0x0001d50d, 0x0001d514,
+ 0x0001d516, 0x0001d51c, 0x0001d51e, 0x0001d539,
+ 0x0001d53b, 0x0001d53e, 0x0001d540, 0x0001d544,
+ 0x0001d546, 0x0001d546, 0x0001d54a, 0x0001d550,
+ 0x0001d552, 0x0001d6a5, 0x0001d6a8, 0x0001d6c0,
+ 0x0001d6c2, 0x0001d6da, 0x0001d6dc, 0x0001d6fa,
+ 0x0001d6fc, 0x0001d714, 0x0001d716, 0x0001d734,
+ 0x0001d736, 0x0001d74e, 0x0001d750, 0x0001d76e,
+ 0x0001d770, 0x0001d788, 0x0001d78a, 0x0001d7a8,
+ 0x0001d7aa, 0x0001d7c2, 0x0001d7c4, 0x0001d7cb,
+ 0x0001e900, 0x0001e943, 0x0001f130, 0x0001f149,
+ 0x0001f150, 0x0001f169, 0x0001f170, 0x0001f189,
+ 0x00000027, 0x00000027, 0x0000002e, 0x0000002e,
+ 0x0000003a, 0x0000003a, 0x0000005e, 0x0000005e,
+ 0x00000060, 0x00000060, 0x000000a8, 0x000000a8,
+ 0x000000ad, 0x000000ad, 0x000000af, 0x000000af,
+ 0x000000b4, 0x000000b4, 0x000000b7, 0x000000b8,
+ 0x000002b0, 0x0000036f, 0x00000374, 0x00000375,
+ 0x0000037a, 0x0000037a, 0x00000384, 0x00000385,
+ 0x00000387, 0x00000387, 0x00000483, 0x00000489,
+ 0x00000559, 0x00000559, 0x00000591, 0x000005bd,
+ 0x000005bf, 0x000005bf, 0x000005c1, 0x000005c2,
+ 0x000005c4, 0x000005c5, 0x000005c7, 0x000005c7,
+ 0x000005f4, 0x000005f4, 0x00000600, 0x00000605,
+ 0x00000610, 0x0000061a, 0x0000061c, 0x0000061c,
+ 0x00000640, 0x00000640, 0x0000064b, 0x0000065f,
+ 0x00000670, 0x00000670, 0x000006d6, 0x000006dd,
+ 0x000006df, 0x000006e8, 0x000006ea, 0x000006ed,
+ 0x0000070f, 0x0000070f, 0x00000711, 0x00000711,
+ 0x00000730, 0x0000074a, 0x000007a6, 0x000007b0,
+ 0x000007eb, 0x000007f5, 0x000007fa, 0x000007fa,
+ 0x000007fd, 0x000007fd, 0x00000816, 0x0000082d,
+ 0x00000859, 0x0000085b, 0x000008d3, 0x00000902,
+ 0x0000093a, 0x0000093a, 0x0000093c, 0x0000093c,
+ 0x00000941, 0x00000948, 0x0000094d, 0x0000094d,
+ 0x00000951, 0x00000957, 0x00000962, 0x00000963,
+ 0x00000971, 0x00000971, 0x00000981, 0x00000981,
+ 0x000009bc, 0x000009bc, 0x000009c1, 0x000009c4,
+ 0x000009cd, 0x000009cd, 0x000009e2, 0x000009e3,
+ 0x000009fe, 0x000009fe, 0x00000a01, 0x00000a02,
+ 0x00000a3c, 0x00000a3c, 0x00000a41, 0x00000a42,
+ 0x00000a47, 0x00000a48, 0x00000a4b, 0x00000a4d,
+ 0x00000a51, 0x00000a51, 0x00000a70, 0x00000a71,
+ 0x00000a75, 0x00000a75, 0x00000a81, 0x00000a82,
+ 0x00000abc, 0x00000abc, 0x00000ac1, 0x00000ac5,
+ 0x00000ac7, 0x00000ac8, 0x00000acd, 0x00000acd,
+ 0x00000ae2, 0x00000ae3, 0x00000afa, 0x00000aff,
+ 0x00000b01, 0x00000b01, 0x00000b3c, 0x00000b3c,
+ 0x00000b3f, 0x00000b3f, 0x00000b41, 0x00000b44,
+ 0x00000b4d, 0x00000b4d, 0x00000b56, 0x00000b56,
+ 0x00000b62, 0x00000b63, 0x00000b82, 0x00000b82,
+ 0x00000bc0, 0x00000bc0, 0x00000bcd, 0x00000bcd,
+ 0x00000c00, 0x00000c00, 0x00000c04, 0x00000c04,
+ 0x00000c3e, 0x00000c40, 0x00000c46, 0x00000c48,
+ 0x00000c4a, 0x00000c4d, 0x00000c55, 0x00000c56,
+ 0x00000c62, 0x00000c63, 0x00000c81, 0x00000c81,
+ 0x00000cbc, 0x00000cbc, 0x00000cbf, 0x00000cbf,
+ 0x00000cc6, 0x00000cc6, 0x00000ccc, 0x00000ccd,
+ 0x00000ce2, 0x00000ce3, 0x00000d00, 0x00000d01,
+ 0x00000d3b, 0x00000d3c, 0x00000d41, 0x00000d44,
+ 0x00000d4d, 0x00000d4d, 0x00000d62, 0x00000d63,
+ 0x00000dca, 0x00000dca, 0x00000dd2, 0x00000dd4,
+ 0x00000dd6, 0x00000dd6, 0x00000e31, 0x00000e31,
+ 0x00000e34, 0x00000e3a, 0x00000e46, 0x00000e4e,
+ 0x00000eb1, 0x00000eb1, 0x00000eb4, 0x00000eb9,
+ 0x00000ebb, 0x00000ebc, 0x00000ec6, 0x00000ec6,
+ 0x00000ec8, 0x00000ecd, 0x00000f18, 0x00000f19,
+ 0x00000f35, 0x00000f35, 0x00000f37, 0x00000f37,
+ 0x00000f39, 0x00000f39, 0x00000f71, 0x00000f7e,
+ 0x00000f80, 0x00000f84, 0x00000f86, 0x00000f87,
+ 0x00000f8d, 0x00000f97, 0x00000f99, 0x00000fbc,
+ 0x00000fc6, 0x00000fc6, 0x0000102d, 0x00001030,
+ 0x00001032, 0x00001037, 0x00001039, 0x0000103a,
+ 0x0000103d, 0x0000103e, 0x00001058, 0x00001059,
+ 0x0000105e, 0x00001060, 0x00001071, 0x00001074,
+ 0x00001082, 0x00001082, 0x00001085, 0x00001086,
+ 0x0000108d, 0x0000108d, 0x0000109d, 0x0000109d,
+ 0x000010fc, 0x000010fc, 0x0000135d, 0x0000135f,
+ 0x00001712, 0x00001714, 0x00001732, 0x00001734,
+ 0x00001752, 0x00001753, 0x00001772, 0x00001773,
+ 0x000017b4, 0x000017b5, 0x000017b7, 0x000017bd,
+ 0x000017c6, 0x000017c6, 0x000017c9, 0x000017d3,
+ 0x000017d7, 0x000017d7, 0x000017dd, 0x000017dd,
+ 0x0000180b, 0x0000180e, 0x00001843, 0x00001843,
+ 0x00001885, 0x00001886, 0x000018a9, 0x000018a9,
+ 0x00001920, 0x00001922, 0x00001927, 0x00001928,
+ 0x00001932, 0x00001932, 0x00001939, 0x0000193b,
+ 0x00001a17, 0x00001a18, 0x00001a1b, 0x00001a1b,
+ 0x00001a56, 0x00001a56, 0x00001a58, 0x00001a5e,
+ 0x00001a60, 0x00001a60, 0x00001a62, 0x00001a62,
+ 0x00001a65, 0x00001a6c, 0x00001a73, 0x00001a7c,
+ 0x00001a7f, 0x00001a7f, 0x00001aa7, 0x00001aa7,
+ 0x00001ab0, 0x00001abe, 0x00001b00, 0x00001b03,
+ 0x00001b34, 0x00001b34, 0x00001b36, 0x00001b3a,
+ 0x00001b3c, 0x00001b3c, 0x00001b42, 0x00001b42,
+ 0x00001b6b, 0x00001b73, 0x00001b80, 0x00001b81,
+ 0x00001ba2, 0x00001ba5, 0x00001ba8, 0x00001ba9,
+ 0x00001bab, 0x00001bad, 0x00001be6, 0x00001be6,
+ 0x00001be8, 0x00001be9, 0x00001bed, 0x00001bed,
+ 0x00001bef, 0x00001bf1, 0x00001c2c, 0x00001c33,
+ 0x00001c36, 0x00001c37, 0x00001c78, 0x00001c7d,
+ 0x00001cd0, 0x00001cd2, 0x00001cd4, 0x00001ce0,
+ 0x00001ce2, 0x00001ce8, 0x00001ced, 0x00001ced,
+ 0x00001cf4, 0x00001cf4, 0x00001cf8, 0x00001cf9,
+ 0x00001d2c, 0x00001d6a, 0x00001d78, 0x00001d78,
+ 0x00001d9b, 0x00001df9, 0x00001dfb, 0x00001dff,
+ 0x00001fbd, 0x00001fbd, 0x00001fbf, 0x00001fc1,
+ 0x00001fcd, 0x00001fcf, 0x00001fdd, 0x00001fdf,
+ 0x00001fed, 0x00001fef, 0x00001ffd, 0x00001ffe,
+ 0x0000200b, 0x0000200f, 0x00002018, 0x00002019,
+ 0x00002024, 0x00002024, 0x00002027, 0x00002027,
+ 0x0000202a, 0x0000202e, 0x00002060, 0x00002064,
+ 0x00002066, 0x0000206f, 0x00002071, 0x00002071,
+ 0x0000207f, 0x0000207f, 0x00002090, 0x0000209c,
+ 0x000020d0, 0x000020f0, 0x00002c7c, 0x00002c7d,
+ 0x00002cef, 0x00002cf1, 0x00002d6f, 0x00002d6f,
+ 0x00002d7f, 0x00002d7f, 0x00002de0, 0x00002dff,
+ 0x00002e2f, 0x00002e2f, 0x00003005, 0x00003005,
+ 0x0000302a, 0x0000302d, 0x00003031, 0x00003035,
+ 0x0000303b, 0x0000303b, 0x00003099, 0x0000309e,
+ 0x000030fc, 0x000030fe, 0x0000a015, 0x0000a015,
+ 0x0000a4f8, 0x0000a4fd, 0x0000a60c, 0x0000a60c,
+ 0x0000a66f, 0x0000a672, 0x0000a674, 0x0000a67d,
+ 0x0000a67f, 0x0000a67f, 0x0000a69c, 0x0000a69f,
+ 0x0000a6f0, 0x0000a6f1, 0x0000a700, 0x0000a721,
+ 0x0000a770, 0x0000a770, 0x0000a788, 0x0000a78a,
+ 0x0000a7f8, 0x0000a7f9, 0x0000a802, 0x0000a802,
+ 0x0000a806, 0x0000a806, 0x0000a80b, 0x0000a80b,
+ 0x0000a825, 0x0000a826, 0x0000a8c4, 0x0000a8c5,
+ 0x0000a8e0, 0x0000a8f1, 0x0000a8ff, 0x0000a8ff,
+ 0x0000a926, 0x0000a92d, 0x0000a947, 0x0000a951,
+ 0x0000a980, 0x0000a982, 0x0000a9b3, 0x0000a9b3,
+ 0x0000a9b6, 0x0000a9b9, 0x0000a9bc, 0x0000a9bc,
+ 0x0000a9cf, 0x0000a9cf, 0x0000a9e5, 0x0000a9e6,
+ 0x0000aa29, 0x0000aa2e, 0x0000aa31, 0x0000aa32,
+ 0x0000aa35, 0x0000aa36, 0x0000aa43, 0x0000aa43,
+ 0x0000aa4c, 0x0000aa4c, 0x0000aa70, 0x0000aa70,
+ 0x0000aa7c, 0x0000aa7c, 0x0000aab0, 0x0000aab0,
+ 0x0000aab2, 0x0000aab4, 0x0000aab7, 0x0000aab8,
+ 0x0000aabe, 0x0000aabf, 0x0000aac1, 0x0000aac1,
+ 0x0000aadd, 0x0000aadd, 0x0000aaec, 0x0000aaed,
+ 0x0000aaf3, 0x0000aaf4, 0x0000aaf6, 0x0000aaf6,
+ 0x0000ab5b, 0x0000ab5f, 0x0000abe5, 0x0000abe5,
+ 0x0000abe8, 0x0000abe8, 0x0000abed, 0x0000abed,
+ 0x0000fb1e, 0x0000fb1e, 0x0000fbb2, 0x0000fbc1,
+ 0x0000fe00, 0x0000fe0f, 0x0000fe13, 0x0000fe13,
+ 0x0000fe20, 0x0000fe2f, 0x0000fe52, 0x0000fe52,
+ 0x0000fe55, 0x0000fe55, 0x0000feff, 0x0000feff,
+ 0x0000ff07, 0x0000ff07, 0x0000ff0e, 0x0000ff0e,
+ 0x0000ff1a, 0x0000ff1a, 0x0000ff3e, 0x0000ff3e,
+ 0x0000ff40, 0x0000ff40, 0x0000ff70, 0x0000ff70,
+ 0x0000ff9e, 0x0000ff9f, 0x0000ffe3, 0x0000ffe3,
+ 0x0000fff9, 0x0000fffb, 0x000101fd, 0x000101fd,
+ 0x000102e0, 0x000102e0, 0x00010376, 0x0001037a,
+ 0x00010a01, 0x00010a03, 0x00010a05, 0x00010a06,
+ 0x00010a0c, 0x00010a0f, 0x00010a38, 0x00010a3a,
+ 0x00010a3f, 0x00010a3f, 0x00010ae5, 0x00010ae6,
+ 0x00010d24, 0x00010d27, 0x00010f46, 0x00010f50,
+ 0x00011001, 0x00011001, 0x00011038, 0x00011046,
+ 0x0001107f, 0x00011081, 0x000110b3, 0x000110b6,
+ 0x000110b9, 0x000110ba, 0x000110bd, 0x000110bd,
+ 0x000110cd, 0x000110cd, 0x00011100, 0x00011102,
+ 0x00011127, 0x0001112b, 0x0001112d, 0x00011134,
+ 0x00011173, 0x00011173, 0x00011180, 0x00011181,
+ 0x000111b6, 0x000111be, 0x000111c9, 0x000111cc,
+ 0x0001122f, 0x00011231, 0x00011234, 0x00011234,
+ 0x00011236, 0x00011237, 0x0001123e, 0x0001123e,
+ 0x000112df, 0x000112df, 0x000112e3, 0x000112ea,
+ 0x00011300, 0x00011301, 0x0001133b, 0x0001133c,
+ 0x00011340, 0x00011340, 0x00011366, 0x0001136c,
+ 0x00011370, 0x00011374, 0x00011438, 0x0001143f,
+ 0x00011442, 0x00011444, 0x00011446, 0x00011446,
+ 0x0001145e, 0x0001145e, 0x000114b3, 0x000114b8,
+ 0x000114ba, 0x000114ba, 0x000114bf, 0x000114c0,
+ 0x000114c2, 0x000114c3, 0x000115b2, 0x000115b5,
+ 0x000115bc, 0x000115bd, 0x000115bf, 0x000115c0,
+ 0x000115dc, 0x000115dd, 0x00011633, 0x0001163a,
+ 0x0001163d, 0x0001163d, 0x0001163f, 0x00011640,
+ 0x000116ab, 0x000116ab, 0x000116ad, 0x000116ad,
+ 0x000116b0, 0x000116b5, 0x000116b7, 0x000116b7,
+ 0x0001171d, 0x0001171f, 0x00011722, 0x00011725,
+ 0x00011727, 0x0001172b, 0x0001182f, 0x00011837,
+ 0x00011839, 0x0001183a, 0x00011a01, 0x00011a0a,
+ 0x00011a33, 0x00011a38, 0x00011a3b, 0x00011a3e,
+ 0x00011a47, 0x00011a47, 0x00011a51, 0x00011a56,
+ 0x00011a59, 0x00011a5b, 0x00011a8a, 0x00011a96,
+ 0x00011a98, 0x00011a99, 0x00011c30, 0x00011c36,
+ 0x00011c38, 0x00011c3d, 0x00011c3f, 0x00011c3f,
+ 0x00011c92, 0x00011ca7, 0x00011caa, 0x00011cb0,
+ 0x00011cb2, 0x00011cb3, 0x00011cb5, 0x00011cb6,
+ 0x00011d31, 0x00011d36, 0x00011d3a, 0x00011d3a,
+ 0x00011d3c, 0x00011d3d, 0x00011d3f, 0x00011d45,
+ 0x00011d47, 0x00011d47, 0x00011d90, 0x00011d91,
+ 0x00011d95, 0x00011d95, 0x00011d97, 0x00011d97,
+ 0x00011ef3, 0x00011ef4, 0x00016af0, 0x00016af4,
+ 0x00016b30, 0x00016b36, 0x00016b40, 0x00016b43,
+ 0x00016f8f, 0x00016f9f, 0x00016fe0, 0x00016fe1,
+ 0x0001bc9d, 0x0001bc9e, 0x0001bca0, 0x0001bca3,
+ 0x0001d167, 0x0001d169, 0x0001d173, 0x0001d182,
+ 0x0001d185, 0x0001d18b, 0x0001d1aa, 0x0001d1ad,
+ 0x0001d242, 0x0001d244, 0x0001da00, 0x0001da36,
+ 0x0001da3b, 0x0001da6c, 0x0001da75, 0x0001da75,
+ 0x0001da84, 0x0001da84, 0x0001da9b, 0x0001da9f,
+ 0x0001daa1, 0x0001daaf, 0x0001e000, 0x0001e006,
+ 0x0001e008, 0x0001e018, 0x0001e01b, 0x0001e021,
+ 0x0001e023, 0x0001e024, 0x0001e026, 0x0001e02a,
+ 0x0001e8d0, 0x0001e8d6, 0x0001e944, 0x0001e94a,
+ 0x0001f3fb, 0x0001f3ff, 0x000e0001, 0x000e0001,
+ 0x000e0020, 0x000e007f, 0x000e0100, 0x000e01ef
+};
+
+static const unsigned _uccase_upper_g_size = 275;
+static const short _uccase_upper_g[] = {
+ 335, 2234, 8785, 768, 672, 77, 540, 3,
+ -29, 103, -1410, 520, 21, 8786, 8, 102,
+ 713, 129, 3090, 128, 2080, 256, 514, 7202,
+ 734, 9584, 4406, 616, 845, 112, 534, 40,
+ 14, 1034, 91, 199, 1143, 1070, 4097, 371,
+ 19, 1977, 71, 579, 260, 2073, 322, 61,
+ 106, 2198, 13184, 453, 1429, 4461, 47, 388,
+ 140, 66, 1493, 263, -796, 2992, -611, -1322,
+ 41, 18, 16, 163, -1319, 131, 15543, 3,
+ 20, 296, 3727, 4978, 8670, 58, 5, 615,
+ 515, 32, 62, -1, 268, 32767, 10729, -780,
+ -1362, 11, 180, 5454, 3, -233, 13, 307,
+ 220, 23, 352, 2268, 3718, 568, 451, 107,
+ 1252, 70, 54, 17, -167, 199, -1113, 2855,
+ -315, 48, 114, 38, 2870, 148, -812, 204,
+ 4, 347, 8, 1923, 166, 2466, 1793, 13,
+ 4865, 1434, 177, 121, 75, -177, 514, 32767,
+ 686, -334, 314, 3068, 64, 2035, 131, -264,
+ 820, 405, 241, 76, 617, 53, 231, 145,
+ 388, 158, 2, 26, 9, 1128, 1086, 289,
+ -1158, 365, -386, 5891, 1489, 74, 160, 192,
+ 563, 151, 1814, 267, 512, 33, 104, 1757,
+ 15, 2734, 4203, 16, 147, 330, 706, 373,
+ 268, -1175, 12817, -528, 3753, 10605, 128, 715,
+ 65, 3721, 57, 684, 256, 520, 562, 2,
+ 2063, 591, 1030, 277, 1957, 520, 203, 8470,
+ 3796, 305, 32767, 332, -733, 721, 244, 111,
+ 341, 69, -1184, 53, 35, 256, 512, 166,
+ 52, 2154, 522, 12, 2938, 4790, 256, 1,
+ 2804, -149, 209, 32767, 3264, -792, 623, 56,
+ 134, 1769, 3, -1285, 274, 2053, 384, 583,
+ 2960, 2, 319, 14002, 635, 233, 24227, 277,
+ 1433, 2361, -123, 514, 32767, 20, 391, 409,
+ 9, 17, 24, 192, 3076, 162, 2, 257,
+ 8, 347, 25
+};
+
+static const unsigned _uccase_upper_table_size = 1475;
+static const unsigned _uccase_upper_table[] = {
+ 0x000004d1, 0x000004d0, 0x0000a68f, 0x0000a68e,
+ 0x000118d8, 0x000118b8, 0x0000a7b9, 0x0000a7b8,
+ 0x000004fb, 0x000004fa, 0x0000abb0, 0x000013e0,
+ 0x00001ff7, 0x0300013e, 0x000001fb, 0x000001fa,
+ 0x000013fc, 0x000013f4, 0x00010cd9, 0x00010c99,
+ 0x00001ee9, 0x00001ee8, 0x000000f5, 0x000000d5,
+ 0x00010cf0, 0x00010cb0, 0x000010da, 0x00001c9a,
+ 0x0000a761, 0x0000a760, 0x00000247, 0x00000246,
+ 0x00000078, 0x00000058, 0x000010f2, 0x00001cb2,
+ 0x00002d13, 0x000010b3, 0x000024df, 0x000024c5,
+ 0x00001fa8, 0x02000103, 0x00016e69, 0x00016e49,
+ 0x00002ca7, 0x00002ca6, 0x0001043e, 0x00010416,
+ 0x00002d20, 0x000010c0, 0x00002c4e, 0x00002c1e,
+ 0x00002cc5, 0x00002cc4, 0x00001fb1, 0x00001fb9,
+ 0x000003fb, 0x000003fa, 0x0000a689, 0x0000a688,
+ 0x0000aba2, 0x000013d2, 0x00000461, 0x00000460,
+ 0x00001e8d, 0x00001e8c, 0x00001f7a, 0x00001fea,
+ 0x00002cb7, 0x00002cb6, 0x0001043b, 0x00010413,
+ 0x0000020f, 0x0000020e, 0x00010cec, 0x00010cac,
+ 0x00002179, 0x00002169, 0x00002174, 0x00002164,
+ 0x00010438, 0x00010410, 0x0000a7a7, 0x0000a7a6,
+ 0x0000abbc, 0x000013ec, 0x00000521, 0x00000520,
+ 0x00001f03, 0x00001f0b, 0x00001fb3, 0x02000048,
+ 0x00001c81, 0x00000414, 0x000004f5, 0x000004f4,
+ 0x00000283, 0x000001a9, 0x00001e2f, 0x00001e2e,
+ 0x000004ca, 0x000004c9, 0x00000584, 0x00000554,
+ 0x00010436, 0x0001040e, 0x00001e69, 0x00001e68,
+ 0x00001ee3, 0x00001ee2, 0x0000ab97, 0x000013c7,
+ 0x00001f77, 0x00001fdb, 0x0000021b, 0x0000021a,
+ 0x00001e87, 0x00001e86, 0x00010cc3, 0x00010c83,
+ 0x000003af, 0x0000038a, 0x000000ed, 0x000000cd,
+ 0x00001e96, 0x0200008b, 0x0000ab7b, 0x000013ab,
+ 0x000003b5, 0x00000395, 0x0001e93b, 0x0001e919,
+ 0x000004d5, 0x000004d4, 0x000118cd, 0x000118ad,
+ 0x000004a1, 0x000004a0, 0x0001042e, 0x00010406,
+ 0x00001eb3, 0x00001eb2, 0x0000aba4, 0x000013d4,
+ 0x00000433, 0x00000413, 0x00001f10, 0x00001f18,
+ 0x00000073, 0x00000053, 0x000004bf, 0x000004be,
+ 0x00002173, 0x00002163, 0x00001f13, 0x00001f1b,
+ 0x000003f1, 0x000003a1, 0x00002c47, 0x00002c17,
+ 0x00010ce0, 0x00010ca0, 0x000104f3, 0x000104cb,
+ 0x000024de, 0x000024c4, 0x00000469, 0x00000468,
+ 0x000010f3, 0x00001cb3, 0x0000a745, 0x0000a744,
+ 0x00001e81, 0x00001e80, 0x000010ff, 0x00001cbf,
+ 0x0000ab90, 0x000013c0, 0x0000fb16, 0x02000077,
+ 0x0001e932, 0x0001e910, 0x00016e79, 0x00016e59,
+ 0x00010cde, 0x00010c9e, 0x00000509, 0x00000508,
+ 0x00001f15, 0x00001f1d, 0x000004e1, 0x000004e0,
+ 0x00010cf1, 0x00010cb1, 0x00000440, 0x00000420,
+ 0x00001f05, 0x00001f0d, 0x00000192, 0x00000191,
+ 0x0000056c, 0x0000053c, 0x00001ebf, 0x00001ebe,
+ 0x000104e2, 0x000104ba, 0x00001e53, 0x00001e52,
+ 0x00000441, 0x00000421, 0x00010cd7, 0x00010c97,
+ 0x00001f84, 0x0200000c, 0x00001fe2, 0x030000be,
+ 0x000001b6, 0x000001b5, 0x000010df, 0x00001c9f,
+ 0x000003e3, 0x000003e2, 0x0000ff56, 0x0000ff36,
+ 0x000010f4, 0x00001cb4, 0x00010cdd, 0x00010c9d,
+ 0x0000a665, 0x0000a664, 0x00001f00, 0x00001f08,
+ 0x00016e64, 0x00016e44, 0x0000aba6, 0x000013d6,
+ 0x00002cbd, 0x00002cbc, 0x000003c7, 0x000003a7,
+ 0x00002d0e, 0x000010ae, 0x00002d17, 0x000010b7,
+ 0x000001ed, 0x000001ec, 0x0000a687, 0x0000a686,
+ 0x0000a79d, 0x0000a79c, 0x00002d0c, 0x000010ac,
+ 0x0000ab96, 0x000013c6, 0x0001044c, 0x00010424,
+ 0x00000513, 0x00000512, 0x000000f6, 0x000000d6,
+ 0x00010cca, 0x00010c8a, 0x0000ff49, 0x0000ff29,
+ 0x00001fd7, 0x030000ba, 0x00000475, 0x00000474,
+ 0x00001fd0, 0x00001fd8, 0x00002c31, 0x00002c01,
+ 0x00001f9c, 0x020000f7, 0x00000211, 0x00000210,
+ 0x0000ab89, 0x000013b9, 0x000003d0, 0x00000392,
+ 0x00001f20, 0x00001f28, 0x00000109, 0x00000108,
+ 0x00000573, 0x00000543, 0x000003d7, 0x000003cf,
+ 0x00001e45, 0x00001e44, 0x00002d03, 0x000010a3,
+ 0x00001e27, 0x00001e26, 0x00000456, 0x00000406,
+ 0x00001fe3, 0x030000c2, 0x0000a69b, 0x0000a69a,
+ 0x000004cc, 0x000004cb, 0x0000ab93, 0x000013c3,
+ 0x0001e942, 0x0001e920, 0x00001f44, 0x00001f4c,
+ 0x000000eb, 0x000000cb, 0x00010cc1, 0x00010c81,
+ 0x0000007a, 0x0000005a, 0x00000066, 0x00000046,
+ 0x00002c35, 0x00002c05, 0x000010d2, 0x00001c92,
+ 0x00000142, 0x00000141, 0x00001ef5, 0x00001ef4,
+ 0x00001e63, 0x00001e62, 0x0000ab8d, 0x000013bd,
+ 0x000003c5, 0x000003a5, 0x000104dc, 0x000104b4,
+ 0x000118c8, 0x000118a8, 0x0000a691, 0x0000a690,
+ 0x00002d1f, 0x000010bf, 0x000024d4, 0x000024ba,
+ 0x000000df, 0x02000051, 0x0000a661, 0x0000a660,
+ 0x000004a5, 0x000004a4, 0x00001f02, 0x00001f0a,
+ 0x0000016d, 0x0000016c, 0x00016e6b, 0x00016e4b,
+ 0x00002c9d, 0x00002c9c, 0x0000a693, 0x0000a692,
+ 0x00000167, 0x00000166, 0x0000a72f, 0x0000a72e,
+ 0x00001faf, 0x02000118, 0x00000473, 0x00000472,
+ 0x000024e4, 0x000024ca, 0x00000240, 0x00002c7f,
+ 0x00000517, 0x00000516, 0x00002ca5, 0x00002ca4,
+ 0x00001eff, 0x00001efe, 0x0000050d, 0x0000050c,
+ 0x0000ab82, 0x000013b2, 0x0000010b, 0x0000010a,
+ 0x000024e5, 0x000024cb, 0x00001fc2, 0x0200012a,
+ 0x000010dc, 0x00001c9c, 0x00000165, 0x00000164,
+ 0x00000280, 0x000001a6, 0x0000a76f, 0x0000a76e,
+ 0x00000079, 0x00000059, 0x00002c4b, 0x00002c1b,
+ 0x0001e92d, 0x0001e90b, 0x0000a787, 0x0000a786,
+ 0x0000006e, 0x0000004e, 0x00000077, 0x00000057,
+ 0x0001042c, 0x00010404, 0x000001fd, 0x000001fc,
+ 0x000000fc, 0x000000dc, 0x00002184, 0x00002183,
+ 0x00001ffc, 0x02000121, 0x0000028b, 0x000001b2,
+ 0x0000045f, 0x0000040f, 0x0000abbe, 0x000013ee,
+ 0x00001f82, 0x02000006, 0x00000288, 0x000001ae,
+ 0x00001c88, 0x0000a64a, 0x0000057d, 0x0000054d,
+ 0x00001e51, 0x00001e50, 0x00010432, 0x0001040a,
+ 0x00016e7c, 0x00016e5c, 0x00001e9b, 0x00001e60,
+ 0x00001e49, 0x00001e48, 0x00010429, 0x00010401,
+ 0x00002d19, 0x000010b9, 0x0000a757, 0x0000a756,
+ 0x00002c40, 0x00002c10, 0x00001f94, 0x02000024,
+ 0x000001d6, 0x000001d5, 0x00000063, 0x00000043,
+ 0x00002ca9, 0x00002ca8, 0x0001044b, 0x00010423,
+ 0x000013fd, 0x000013f5, 0x00002c3c, 0x00002c0c,
+ 0x00010cea, 0x00010caa, 0x0001e943, 0x0001e921,
+ 0x000118dc, 0x000118bc, 0x000003f5, 0x00000395,
+ 0x0000fb04, 0x03000061, 0x00002c8f, 0x00002c8e,
+ 0x0000011d, 0x0000011c, 0x00002cb1, 0x00002cb0,
+ 0x00010cc5, 0x00010c85, 0x0000fb14, 0x02000071,
+ 0x00000275, 0x0000019f, 0x00016e73, 0x00016e53,
+ 0x0000ab7d, 0x000013ad, 0x00002c3a, 0x00002c0a,
+ 0x00010428, 0x00010400, 0x00001f9d, 0x020000fa,
+ 0x00002d0d, 0x000010ad, 0x00000458, 0x00000408,
+ 0x000003bc, 0x0000039c, 0x00001e3d, 0x00001e3c,
+ 0x0000ab73, 0x000013a3, 0x00000163, 0x00000162,
+ 0x000003d5, 0x000003a6, 0x00000195, 0x000001f6,
+ 0x000004f3, 0x000004f2, 0x000004a3, 0x000004a2,
+ 0x00001fe6, 0x020000c9, 0x00001eb5, 0x00001eb4,
+ 0x00000451, 0x00000401, 0x00010ce3, 0x00010ca3,
+ 0x0000a749, 0x0000a748, 0x00000256, 0x00000189,
+ 0x00000201, 0x00000200, 0x00000567, 0x00000537,
+ 0x00002c32, 0x00002c02, 0x0000a651, 0x0000a650,
+ 0x00001fac, 0x0200010f, 0x00010cc8, 0x00010c88,
+ 0x00002d06, 0x000010a6, 0x000003ae, 0x00000389,
+ 0x000000ff, 0x00000178, 0x0000ab84, 0x000013b4,
+ 0x0000044d, 0x0000042d, 0x0001044d, 0x00010425,
+ 0x0000017c, 0x0000017b, 0x00002cc3, 0x00002cc2,
+ 0x0000044b, 0x0000042b, 0x00001fe5, 0x00001fec,
+ 0x000024e8, 0x000024ce, 0x00001d79, 0x0000a77d,
+ 0x00002caf, 0x00002cae, 0x000104db, 0x000104b3,
+ 0x00001e6d, 0x00001e6c, 0x00000446, 0x00000426,
+ 0x0000046b, 0x0000046a, 0x0000a75b, 0x0000a75a,
+ 0x00001f88, 0x020000d3, 0x000001ad, 0x000001ac,
+ 0x00001e13, 0x00001e12, 0x00000223, 0x00000222,
+ 0x0001e92e, 0x0001e90c, 0x000004a7, 0x000004a6,
+ 0x00002d05, 0x000010a5, 0x00000121, 0x00000120,
+ 0x00010434, 0x0001040c, 0x00000169, 0x00000168,
+ 0x00000495, 0x00000494, 0x00002c66, 0x0000023e,
+ 0x00001f07, 0x00001f0f, 0x00000171, 0x00000170,
+ 0x00000571, 0x00000541, 0x00000515, 0x00000514,
+ 0x0001e939, 0x0001e917, 0x00001e77, 0x00001e76,
+ 0x0000a643, 0x0000a642, 0x000004b9, 0x000004b8,
+ 0x00000225, 0x00000224, 0x00001e2d, 0x00001e2c,
+ 0x0000043b, 0x0000041b, 0x000010d9, 0x00001c99,
+ 0x0000014d, 0x0000014c, 0x00001e43, 0x00001e42,
+ 0x00016e60, 0x00016e40, 0x00010cdb, 0x00010c9b,
+ 0x0000014b, 0x0000014a, 0x000000e9, 0x000000c9,
+ 0x00001f8a, 0x020000d9, 0x00000505, 0x00000504,
+ 0x000004df, 0x000004de, 0x000024e6, 0x000024cc,
+ 0x00001e6b, 0x00001e6a, 0x0000a739, 0x0000a738,
+ 0x0000046f, 0x0000046e, 0x0000026f, 0x0000019c,
+ 0x000118cc, 0x000118ac, 0x00001e0f, 0x00001e0e,
+ 0x00000581, 0x00000551, 0x00001f8e, 0x020000e5,
+ 0x000000ef, 0x000000cf, 0x00000064, 0x00000044,
+ 0x00001fa4, 0x0200003c, 0x0000023f, 0x00002c7e,
+ 0x00001e57, 0x00001e56, 0x00000430, 0x00000410,
+ 0x000000e0, 0x000000c0, 0x000003ad, 0x00000388,
+ 0x00000269, 0x00000196, 0x00002cb5, 0x00002cb4,
+ 0x000104f0, 0x000104c8, 0x0000037c, 0x000003fe,
+ 0x000024db, 0x000024c1, 0x000000e1, 0x000000c1,
+ 0x000010db, 0x00001c9b, 0x000104f5, 0x000104cd,
+ 0x000104f7, 0x000104cf, 0x0000a747, 0x0000a746,
+ 0x000104ee, 0x000104c6, 0x00002c50, 0x00002c20,
+ 0x00001ff4, 0x02000133, 0x000118c3, 0x000118a3,
+ 0x0000ab75, 0x000013a5, 0x0000217e, 0x0000216e,
+ 0x00001fa9, 0x02000106, 0x000000fa, 0x000000da,
+ 0x00002c4a, 0x00002c1a, 0x00001ed5, 0x00001ed4,
+ 0x00001fc4, 0x0200012d, 0x000024d3, 0x000024b9,
+ 0x0000a729, 0x0000a728, 0x000001c5, 0x000001c4,
+ 0x0000a669, 0x0000a668, 0x00001e59, 0x00001e58,
+ 0x000010fd, 0x00001cbd, 0x00000570, 0x00000540,
+ 0x000003c2, 0x000003a3, 0x000024d1, 0x000024b7,
+ 0x0000217a, 0x0000216a, 0x00002d1b, 0x000010bb,
+ 0x000004d3, 0x000004d2, 0x00001f21, 0x00001f29,
+ 0x000001d2, 0x000001d1, 0x0000fb17, 0x0200007a,
+ 0x00002c45, 0x00002c15, 0x00010431, 0x00010409,
+ 0x0000046d, 0x0000046c, 0x0000056d, 0x0000053d,
+ 0x0000aba5, 0x000013d5, 0x00001f43, 0x00001f4b,
+ 0x00001f7b, 0x00001feb, 0x00002c3f, 0x00002c0f,
+ 0x0000abb7, 0x000013e7, 0x00001fd1, 0x00001fd9,
+ 0x000003f2, 0x000003f9, 0x00000455, 0x00000405,
+ 0x00010cc7, 0x00010c87, 0x000003b6, 0x00000396,
+ 0x000000e2, 0x000000c2, 0x0000a753, 0x0000a752,
+ 0x00002c9f, 0x00002c9e, 0x000003c9, 0x000003a9,
+ 0x000024dc, 0x000024c2, 0x0000013a, 0x00000139,
+ 0x00001e85, 0x00001e84, 0x00002cec, 0x00002ceb,
+ 0x000013fa, 0x000013f2, 0x00001fb7, 0x03000136,
+ 0x0000ab8e, 0x000013be, 0x00002c56, 0x00002c26,
+ 0x000104f4, 0x000104cc, 0x00001e33, 0x00001e32,
+ 0x00000575, 0x00000545, 0x0000ab9a, 0x000013ca,
+ 0x00001fe1, 0x00001fe9, 0x00001fcc, 0x0200011e,
+ 0x00001e4f, 0x00001e4e, 0x0000052b, 0x0000052a,
+ 0x00001fae, 0x02000115, 0x00002c85, 0x00002c84,
+ 0x0000044a, 0x0000042a, 0x0000ab80, 0x000013b0,
+ 0x000118db, 0x000118bb, 0x0000027d, 0x00002c64,
+ 0x00000129, 0x00000128, 0x000010e5, 0x00001ca5,
+ 0x0000a7a5, 0x0000a7a4, 0x00001f11, 0x00001f19,
+ 0x0000048b, 0x0000048a, 0x000010f1, 0x00001cb1,
+ 0x00002c37, 0x00002c07, 0x0001e937, 0x0001e915,
+ 0x0000a75d, 0x0000a75c, 0x00002cad, 0x00002cac,
+ 0x0000abbd, 0x000013ed, 0x0001e92c, 0x0001e90a,
+ 0x0000a649, 0x0000a648, 0x000004e7, 0x000004e6,
+ 0x00000074, 0x00000054, 0x000104e9, 0x000104c1,
+ 0x00001e09, 0x00001e08, 0x00000467, 0x00000466,
+ 0x000010ec, 0x00001cac, 0x0000022d, 0x0000022c,
+ 0x00000511, 0x00000510, 0x0000043f, 0x0000041f,
+ 0x00010ccd, 0x00010c8d, 0x0000015d, 0x0000015c,
+ 0x00000272, 0x0000019d, 0x00016e7d, 0x00016e5d,
+ 0x0000ab8a, 0x000013ba, 0x000003c3, 0x000003a3,
+ 0x00001d7d, 0x00002c63, 0x0000016b, 0x0000016a,
+ 0x00002cdf, 0x00002cde, 0x00001e83, 0x00001e82,
+ 0x0001042b, 0x00010403, 0x00001fa1, 0x02000033,
+ 0x00000471, 0x00000470, 0x0000abb2, 0x000013e2,
+ 0x0001043d, 0x00010415, 0x0000a793, 0x0000a792,
+ 0x00010449, 0x00010421, 0x00002ccf, 0x00002cce,
+ 0x00001f30, 0x00001f38, 0x00001e05, 0x00001e04,
+ 0x00010cf2, 0x00010cb2, 0x000010e1, 0x00001ca1,
+ 0x0000ff4a, 0x0000ff2a, 0x00001e95, 0x00001e94,
+ 0x00000434, 0x00000414, 0x00010ce6, 0x00010ca6,
+ 0x0000ff59, 0x0000ff39, 0x0000a68b, 0x0000a68a,
+ 0x00016e70, 0x00016e50, 0x0000ab78, 0x000013a8,
+ 0x000003cd, 0x0000038e, 0x0000026a, 0x0000a7ae,
+ 0x00002cc7, 0x00002cc6, 0x000104fb, 0x000104d3,
+ 0x00002c46, 0x00002c16, 0x00001f32, 0x00001f3a,
+ 0x0000017f, 0x00000053, 0x000004a9, 0x000004a8,
+ 0x000004bb, 0x000004ba, 0x00001edd, 0x00001edc,
+ 0x00001fd3, 0x030000b3, 0x00002cf3, 0x00002cf2,
+ 0x00000447, 0x00000427, 0x00010446, 0x0001041e,
+ 0x0000a7b7, 0x0000a7b6, 0x0000a727, 0x0000a726,
+ 0x000010d6, 0x00001c96, 0x000003bf, 0x0000039f,
+ 0x0000020b, 0x0000020a, 0x00002c55, 0x00002c25,
+ 0x00010ce1, 0x00010ca1, 0x0000ff4e, 0x0000ff2e,
+ 0x0000025c, 0x0000a7ab, 0x00016e63, 0x00016e43,
+ 0x000004b1, 0x000004b0, 0x0000ff4c, 0x0000ff2c,
+ 0x000024d0, 0x000024b6, 0x00016e7b, 0x00016e5b,
+ 0x00010cdf, 0x00010c9f, 0x000004b7, 0x000004b6,
+ 0x00001f92, 0x0200001e, 0x00002d1a, 0x000010ba,
+ 0x0000045b, 0x0000040b, 0x0000fb00, 0x02000054,
+ 0x00000263, 0x00000194, 0x00001e07, 0x00001e06,
+ 0x00001eb7, 0x00001eb6, 0x00000452, 0x00000402,
+ 0x000001eb, 0x000001ea, 0x0000a697, 0x0000a696,
+ 0x00000151, 0x00000150, 0x00000583, 0x00000553,
+ 0x000003b4, 0x00000394, 0x00002ca1, 0x00002ca0,
+ 0x00001e65, 0x00001e64, 0x000104e3, 0x000104bb,
+ 0x000024e2, 0x000024c8, 0x00000251, 0x00002c6d,
+ 0x0000a737, 0x0000a736, 0x000010ee, 0x00001cae,
+ 0x0000fb05, 0x02000065, 0x00010433, 0x0001040b,
+ 0x00016e6e, 0x00016e4e, 0x0000057f, 0x0000054f,
+ 0x00001e5f, 0x00001e5e, 0x000104eb, 0x000104c3,
+ 0x00002d0f, 0x000010af, 0x0000a741, 0x0000a740,
+ 0x00000242, 0x00000241, 0x0000006c, 0x0000004c,
+ 0x00001e37, 0x00001e36, 0x00016e62, 0x00016e42,
+ 0x000003ed, 0x000003ec, 0x000104f8, 0x000104d0,
+ 0x000000e4, 0x000000c4, 0x0000a765, 0x0000a764,
+ 0x0000abb4, 0x000013e4, 0x00000135, 0x00000134,
+ 0x00001ef1, 0x00001ef0, 0x0000a73d, 0x0000a73c,
+ 0x00010ccb, 0x00010c8b, 0x0000ff58, 0x0000ff38,
+ 0x00000250, 0x00002c6f, 0x00000155, 0x00000154,
+ 0x0000049b, 0x0000049a, 0x00001fad, 0x02000112,
+ 0x000003c4, 0x000003a4, 0x000118d6, 0x000118b6,
+ 0x00000580, 0x00000550, 0x00002d15, 0x000010b5,
+ 0x00001f78, 0x00001ff8, 0x0000a767, 0x0000a766,
+ 0x00016e72, 0x00016e52, 0x00002d0a, 0x000010aa,
+ 0x00000061, 0x00000041, 0x0000a759, 0x0000a758,
+ 0x0000ab7a, 0x000013aa, 0x000000f0, 0x000000d0,
+ 0x00001f42, 0x00001f4a, 0x00002c9b, 0x00002c9a,
+ 0x00001e25, 0x00001e24, 0x0000aba1, 0x000013d1,
+ 0x000118c7, 0x000118a7, 0x0000018c, 0x0000018b,
+ 0x00001e4d, 0x00001e4c, 0x000010e4, 0x00001ca4,
+ 0x000118d0, 0x000118b0, 0x00001ea7, 0x00001ea6,
+ 0x00010ceb, 0x00010cab, 0x000010d8, 0x00001c98,
+ 0x0000a64f, 0x0000a64e, 0x0001e929, 0x0001e907,
+ 0x0000011f, 0x0000011e, 0x0000ab94, 0x000013c4,
+ 0x00002d23, 0x000010c3, 0x0001e941, 0x0001e91f,
+ 0x00000345, 0x00000399, 0x0000ab77, 0x000013a7,
+ 0x00001ed1, 0x00001ed0, 0x0001e923, 0x0001e901,
+ 0x00001e1d, 0x00001e1c, 0x0000ab8f, 0x000013bf,
+ 0x00000582, 0x00000552, 0x00001f37, 0x00001f3f,
+ 0x00001fb2, 0x02000124, 0x00000249, 0x00000248,
+ 0x00001ec5, 0x00001ec4, 0x0000ff50, 0x0000ff30,
+ 0x00001e61, 0x00001e60, 0x0000043a, 0x0000041a,
+ 0x00000463, 0x00000462, 0x0000ff55, 0x0000ff35,
+ 0x00000215, 0x00000214, 0x00016e6d, 0x00016e4d,
+ 0x00010cda, 0x00010c9a, 0x00002175, 0x00002165,
+ 0x00001e6f, 0x00001e6e, 0x00000493, 0x00000492,
+ 0x00000587, 0x0200006b, 0x00002d09, 0x000010a9,
+ 0x00001f62, 0x00001f6a, 0x0000017a, 0x00000179,
+ 0x0000abaf, 0x000013df, 0x000118ce, 0x000118ae,
+ 0x000003b2, 0x00000392, 0x00001e0d, 0x00001e0c,
+ 0x000118da, 0x000118ba, 0x00002c3b, 0x00002c0b,
+ 0x00001f60, 0x00001f68, 0x00000117, 0x00000116,
+ 0x00001e3b, 0x00001e3a, 0x00000144, 0x00000143,
+ 0x0000ff5a, 0x0000ff3a, 0x0000029e, 0x0000a7b0,
+ 0x0000021f, 0x0000021e, 0x0000a79f, 0x0000a79e,
+ 0x000024e7, 0x000024cd, 0x000000e5, 0x000000c5,
+ 0x00016e66, 0x00016e46, 0x0000ab79, 0x000013a9,
+ 0x0000fb13, 0x0200006e, 0x00001f87, 0x02000015,
+ 0x0000a733, 0x0000a732, 0x0000fb06, 0x02000068,
+ 0x00002c3e, 0x00002c0e, 0x0001e93c, 0x0001e91a,
+ 0x0000ff53, 0x0000ff33, 0x0000a735, 0x0000a734,
+ 0x00002c42, 0x00002c12, 0x00001fb0, 0x00001fb8,
+ 0x00001e0b, 0x00001e0a, 0x00000577, 0x00000547,
+ 0x000004c2, 0x000004c1, 0x0000a7a3, 0x0000a7a2,
+ 0x000001e7, 0x000001e6, 0x0000044c, 0x0000042c,
+ 0x000010fe, 0x00001cbe, 0x00000229, 0x00000228,
+ 0x00001e93, 0x00001e92, 0x000001cc, 0x000001ca,
+ 0x000010e0, 0x00001ca0, 0x000118c2, 0x000118a2,
+ 0x00000072, 0x00000052, 0x000010f9, 0x00001cb9,
+ 0x00010cc4, 0x00010c84, 0x0000217d, 0x0000216d,
+ 0x000013fb, 0x000013f3, 0x000001bf, 0x000001f7,
+ 0x0000ab7c, 0x000013ac, 0x00001eb9, 0x00001eb8,
+ 0x0000028c, 0x00000245, 0x0000a791, 0x0000a790,
+ 0x000001ff, 0x000001fe, 0x00000459, 0x00000409,
+ 0x0001e936, 0x0001e914, 0x00001e7b, 0x00001e7a,
+ 0x000004e5, 0x000004e4, 0x00002c93, 0x00002c92,
+ 0x00001fe7, 0x030000cc, 0x00000101, 0x00000100,
+ 0x000003d1, 0x00000398, 0x0000abb9, 0x000013e9,
+ 0x0000ff44, 0x0000ff24, 0x00001e4b, 0x00001e4a,
+ 0x00000450, 0x00000400, 0x00010ce2, 0x00010ca2,
+ 0x000118cf, 0x000118af, 0x00001f91, 0x0200001b,
+ 0x00002c97, 0x00002c96, 0x00000564, 0x00000534,
+ 0x000003d6, 0x000003a0, 0x00010439, 0x00010411,
+ 0x00001fbe, 0x00000399, 0x00010cc9, 0x00010c89,
+ 0x000003cc, 0x0000038c, 0x000003dd, 0x000003dc,
+ 0x00002d04, 0x000010a4, 0x0000a72d, 0x0000a72c,
+ 0x0000044e, 0x0000042e, 0x00010442, 0x0001041a,
+ 0x00001f75, 0x00001fcb, 0x00002cd7, 0x00002cd6,
+ 0x00000449, 0x00000429, 0x0000006a, 0x0000004a,
+ 0x000001df, 0x000001de, 0x00000105, 0x00000104,
+ 0x0000abae, 0x000013de, 0x0000a65b, 0x0000a65a,
+ 0x00001ea9, 0x00001ea8, 0x00000445, 0x00000425,
+ 0x0000ab81, 0x000013b1, 0x00000140, 0x0000013f,
+ 0x00001efb, 0x00001efa, 0x00010cee, 0x00010cae,
+ 0x00002c89, 0x00002c88, 0x00000119, 0x00000118,
+ 0x0000a695, 0x0000a694, 0x000004b3, 0x000004b2,
+ 0x00000569, 0x00000539, 0x00002c51, 0x00002c21,
+ 0x00001e47, 0x00001e46, 0x0000015f, 0x0000015e,
+ 0x000001e9, 0x000001e8, 0x000118d2, 0x000118b2,
+ 0x00001f50, 0x0200009a, 0x00001e21, 0x00001e20,
+ 0x00002c34, 0x00002c04, 0x00000069, 0x00000049,
+ 0x0001e93e, 0x0001e91c, 0x00001ef3, 0x00001ef2,
+ 0x00002c59, 0x00002c29, 0x000010e9, 0x00001ca9,
+ 0x00000180, 0x00000243, 0x000001e3, 0x000001e2,
+ 0x00016e67, 0x00016e47, 0x00010ccc, 0x00010c8c,
+ 0x000104e4, 0x000104bc, 0x00000071, 0x00000051,
+ 0x000000f9, 0x000000d9, 0x0000ab9b, 0x000013cb,
+ 0x000003ce, 0x0000038f, 0x00001ee1, 0x00001ee0,
+ 0x0000019e, 0x00000220, 0x000010e7, 0x00001ca7,
+ 0x00002d1e, 0x000010be, 0x00010445, 0x0001041d,
+ 0x00001e35, 0x00001e34, 0x000010f8, 0x00001cb8,
+ 0x00000438, 0x00000418, 0x00001f55, 0x00001f5d,
+ 0x00016e77, 0x00016e57, 0x0000a76b, 0x0000a76a,
+ 0x000004d9, 0x000004d8, 0x00001fbc, 0x0200011b,
+ 0x00001e41, 0x00001e40, 0x00000146, 0x00000145,
+ 0x000010de, 0x00001c9e, 0x00001e89, 0x00001e88,
+ 0x00001e8f, 0x00001e8e, 0x000000e6, 0x000000c6,
+ 0x00010cd4, 0x00010c94, 0x0000022f, 0x0000022e,
+ 0x00001e91, 0x00001e90, 0x00002cbf, 0x00002cbe,
+ 0x0000057a, 0x0000054a, 0x00001ed3, 0x00001ed2,
+ 0x000024d9, 0x000024bf, 0x00001edf, 0x00001ede,
+ 0x0000a7b5, 0x0000a7b4, 0x00002d0b, 0x000010ab,
+ 0x0001e93a, 0x0001e918, 0x00001f95, 0x02000027,
+ 0x00001f41, 0x00001f49, 0x000118c5, 0x000118a5,
+ 0x00000259, 0x0000018f, 0x00016e6a, 0x00016e4a,
+ 0x0000ab76, 0x000013a6, 0x000003f8, 0x000003f7,
+ 0x000104d9, 0x000104b1, 0x000000ec, 0x000000cc,
+ 0x0000a66b, 0x0000a66a, 0x000010d3, 0x00001c93,
+ 0x000104f9, 0x000104d1, 0x00001e17, 0x00001e16,
+ 0x000003b0, 0x03000084, 0x000004ad, 0x000004ac,
+ 0x000003b3, 0x00000393, 0x00000253, 0x00000181,
+ 0x00001c82, 0x0000041e, 0x00010cce, 0x00010c8e,
+ 0x000003b8, 0x00000398, 0x0000a645, 0x0000a644,
+ 0x0000217b, 0x0000216b, 0x000104e7, 0x000104bf,
+ 0x0000044f, 0x0000042f, 0x0001e931, 0x0001e90f,
+ 0x0000013e, 0x0000013d, 0x0000ab99, 0x000013c9,
+ 0x000004c6, 0x000004c5, 0x000001d4, 0x000001d3,
+ 0x00016e61, 0x00016e41, 0x0000a657, 0x0000a656,
+ 0x0000217c, 0x0000216c, 0x000104f6, 0x000104ce,
+ 0x00001e3f, 0x00001e3e, 0x00000070, 0x00000050,
+ 0x000000e7, 0x000000c7, 0x000104e6, 0x000104be,
+ 0x000024e9, 0x000024cf, 0x00010cef, 0x00010caf,
+ 0x000004cf, 0x000004c0, 0x00000131, 0x00000049,
+ 0x00000107, 0x00000106, 0x00002d25, 0x000010c5,
+ 0x0000ab85, 0x000013b5, 0x00001ebb, 0x00001eba,
+ 0x00000271, 0x00002c6e, 0x00016e6c, 0x00016e4c,
+ 0x000000e8, 0x000000c8, 0x0000fb15, 0x02000074,
+ 0x0001e924, 0x0001e902, 0x00000133, 0x00000132,
+ 0x00000373, 0x00000372, 0x00000442, 0x00000422,
+ 0x000001c9, 0x000001c7, 0x00001fb6, 0x020000a9,
+ 0x00000561, 0x00000531, 0x0000ff51, 0x0000ff31,
+ 0x000104ed, 0x000104c5, 0x00001efd, 0x00001efc,
+ 0x00000578, 0x00000548, 0x0000ff46, 0x0000ff26,
+ 0x0000ff47, 0x0000ff27, 0x00001e98, 0x02000091,
+ 0x00002c38, 0x00002c08, 0x000001d0, 0x000001cf,
+ 0x000118d1, 0x000118b1, 0x000024d8, 0x000024be,
+ 0x00002c30, 0x00002c00, 0x00010ce9, 0x00010ca9,
+ 0x00001ebd, 0x00001ebc, 0x00001f31, 0x00001f39,
+ 0x0000010d, 0x0000010c, 0x0000abb1, 0x000013e1,
+ 0x0000aba7, 0x000013d7, 0x0001e93d, 0x0001e91b,
+ 0x0000a743, 0x0000a742, 0x0000ab7f, 0x000013af,
+ 0x00000437, 0x00000417, 0x0000024d, 0x0000024c,
+ 0x0000015b, 0x0000015a, 0x00002d01, 0x000010a1,
+ 0x000013f9, 0x000013f1, 0x00010443, 0x0001041b,
+ 0x00001e55, 0x00001e54, 0x0000a681, 0x0000a680,
+ 0x0000abac, 0x000013dc, 0x00002c83, 0x00002c82,
+ 0x000001f0, 0x02000088, 0x00000448, 0x00000428,
+ 0x00002178, 0x00002168, 0x000118c4, 0x000118a4,
+ 0x000000f8, 0x000000d8, 0x00002c81, 0x00002c80,
+ 0x00010ce4, 0x00010ca4, 0x000003c0, 0x000003a0,
+ 0x0001e92b, 0x0001e909, 0x00002cd5, 0x00002cd4,
+ 0x00002d07, 0x000010a7, 0x0000ab9c, 0x000013cc,
+ 0x000003bd, 0x0000039d, 0x0000a751, 0x0000a750,
+ 0x0000ab74, 0x000013a4, 0x000118c9, 0x000118a9,
+ 0x00001f22, 0x00001f2a, 0x000000ea, 0x000000ca,
+ 0x000004fd, 0x000004fc, 0x00000586, 0x00000556,
+ 0x00001ed9, 0x00001ed8, 0x00001e7f, 0x00001e7e,
+ 0x000118d7, 0x000118b7, 0x00001faa, 0x02000109,
+ 0x0000ff43, 0x0000ff23, 0x000003e5, 0x000003e4,
+ 0x0000043d, 0x0000041d, 0x000104da, 0x000104b2,
+ 0x000104df, 0x000104b7, 0x0000023c, 0x0000023b,
+ 0x00001f64, 0x00001f6c, 0x00010cd3, 0x00010c93,
+ 0x000003cb, 0x000003ab, 0x0001e93f, 0x0001e91d,
+ 0x0000a723, 0x0000a722, 0x0001043c, 0x00010414,
+ 0x0000ab91, 0x000013c1, 0x0001044e, 0x00010426,
+ 0x00000149, 0x0200007d, 0x00001ed7, 0x00001ed6,
+ 0x00001fd6, 0x020000b7, 0x00001f14, 0x00001f1c,
+ 0x0000a7a9, 0x0000a7a8, 0x00016e74, 0x00016e54,
+ 0x00002c49, 0x00002c19, 0x00000111, 0x00000110,
+ 0x00000068, 0x00000048, 0x0000045c, 0x0000040c,
+ 0x000000e3, 0x000000c3, 0x00000205, 0x00000204,
+ 0x000024da, 0x000024c0, 0x00002c5e, 0x00002c2e,
+ 0x000010ea, 0x00001caa, 0x0001044a, 0x00010422,
+ 0x0000029d, 0x0000a7b2, 0x00016e65, 0x00016e45,
+ 0x0000ab70, 0x000013a0, 0x00002171, 0x00002161,
+ 0x000104ea, 0x000104c2, 0x00016e71, 0x00016e51,
+ 0x000010d1, 0x00001c91, 0x00002c91, 0x00002c90,
+ 0x000001cb, 0x000001ca, 0x0000a73b, 0x0000a73a,
+ 0x00001e15, 0x00001e14, 0x00002c5a, 0x00002c2a,
+ 0x000104f1, 0x000104c9, 0x000001bd, 0x000001bc,
+ 0x0000006b, 0x0000004b, 0x00001f9f, 0x02000100,
+ 0x000104f2, 0x000104ca, 0x00001f70, 0x00001fba,
+ 0x0000a64d, 0x0000a64c, 0x00002d22, 0x000010c2,
+ 0x00001f9a, 0x020000f1, 0x000001f5, 0x000001f4,
+ 0x00002c53, 0x00002c23, 0x0000049f, 0x0000049e,
+ 0x00010441, 0x00010419, 0x00000292, 0x000001b7,
+ 0x00000436, 0x00000416, 0x0000052d, 0x0000052c,
+ 0x00001e75, 0x00001e74, 0x00001f79, 0x00001ff9,
+ 0x00016e7a, 0x00016e5a, 0x0000057e, 0x0000054e,
+ 0x00002d11, 0x000010b1, 0x00001f27, 0x00001f2f,
+ 0x00000125, 0x00000124, 0x00010ce8, 0x00010ca8,
+ 0x00002c4f, 0x00002c1f, 0x00001f45, 0x00001f4d,
+ 0x00001e03, 0x00001e02, 0x00002d18, 0x000010b8,
+ 0x0000ab9e, 0x000013ce, 0x0000ff52, 0x0000ff32,
+ 0x00001f65, 0x00001f6d, 0x0000a655, 0x0000a654,
+ 0x0000abb6, 0x000013e6, 0x00001f8f, 0x020000e8,
+ 0x000001f3, 0x000001f1, 0x00002c48, 0x00002c18,
+ 0x0000ab8b, 0x000013bb, 0x00001ee5, 0x00001ee4,
+ 0x000024d6, 0x000024bc, 0x00000203, 0x00000202,
+ 0x000010e2, 0x00001ca2, 0x0000214e, 0x00002132,
+ 0x0000024b, 0x0000024a, 0x00002cee, 0x00002ced,
+ 0x0000ab72, 0x000013a2, 0x00002d24, 0x000010c4,
+ 0x00001e5b, 0x00001e5a, 0x000001b4, 0x000001b3,
+ 0x0000ab86, 0x000013b6, 0x00001fc3, 0x0200004b,
+ 0x000003b1, 0x00000391, 0x00001e1f, 0x00001e1e,
+ 0x00016e78, 0x00016e58, 0x00000481, 0x00000480,
+ 0x00001f61, 0x00001f69, 0x000001a5, 0x000001a4,
+ 0x0000a663, 0x0000a662, 0x0000abab, 0x000013db,
+ 0x00001f7c, 0x00001ffa, 0x00001e9a, 0x02000097,
+ 0x00016e76, 0x00016e56, 0x00010cd6, 0x00010c96,
+ 0x0000ff42, 0x0000ff22, 0x00001ead, 0x00001eac,
+ 0x00010ced, 0x00010cad, 0x00002d12, 0x000010b2,
+ 0x0000ff57, 0x0000ff37, 0x0000a647, 0x0000a646,
+ 0x00001f85, 0x0200000f, 0x0000a76d, 0x0000a76c,
+ 0x00002d16, 0x000010b6, 0x000003b9, 0x00000399,
+ 0x0000a763, 0x0000a762, 0x00000579, 0x00000549,
+ 0x000004e9, 0x000004e8, 0x00001e73, 0x00001e72,
+ 0x00001e39, 0x00001e38, 0x00002c43, 0x00002c13,
+ 0x000004ed, 0x000004ec, 0x00001f99, 0x020000ee,
+ 0x000003f0, 0x0000039a, 0x0000a74f, 0x0000a74e,
+ 0x000010fa, 0x00001cba, 0x00000217, 0x00000216,
+ 0x000024dd, 0x000024c3, 0x0000a683, 0x0000a682,
+ 0x000004b5, 0x000004b4, 0x00002c33, 0x00002c03,
+ 0x00001f80, 0x02000000, 0x000000fe, 0x000000de,
+ 0x0000abb5, 0x000013e5, 0x0000217f, 0x0000216f,
+ 0x0000026c, 0x0000a7ad, 0x0000a769, 0x0000a768,
+ 0x0000abaa, 0x000013da, 0x0000045a, 0x0000040a,
+ 0x00001e71, 0x00001e70, 0x00001f97, 0x0200002d,
+ 0x0000056e, 0x0000053e, 0x00001ee7, 0x00001ee6,
+ 0x000118ca, 0x000118aa, 0x00000529, 0x00000528,
+ 0x00000566, 0x00000536, 0x00002c6c, 0x00002c6b,
+ 0x0000a68d, 0x0000a68c, 0x0000a783, 0x0000a782,
+ 0x000003c6, 0x000003a6, 0x00001edb, 0x00001eda,
+ 0x00001ff6, 0x020000d0, 0x00000209, 0x00000208,
+ 0x00000227, 0x00000226, 0x00000479, 0x00000478,
+ 0x0000ff45, 0x0000ff25, 0x00001f8b, 0x020000dc,
+ 0x000001ce, 0x000001cd, 0x0000057b, 0x0000054b,
+ 0x00001f73, 0x00001fc9, 0x00000261, 0x0000a7ac,
+ 0x00002cdd, 0x00002cdc, 0x0000ab88, 0x000013b8,
+ 0x00002d08, 0x000010a8, 0x0001e933, 0x0001e911,
+ 0x000004eb, 0x000004ea, 0x00000563, 0x00000533,
+ 0x00000435, 0x00000415, 0x00001ec7, 0x00001ec6,
+ 0x0000a797, 0x0000a796, 0x0000021d, 0x0000021c,
+ 0x0000047b, 0x0000047a, 0x00001f83, 0x02000009,
+ 0x000001c6, 0x000001c4, 0x000013f8, 0x000013f0,
+ 0x000118dd, 0x000118bd, 0x00001f56, 0x030000a5,
+ 0x00001f86, 0x02000012, 0x00002c57, 0x00002c27,
+ 0x00002d21, 0x000010c1, 0x000003be, 0x0000039e,
+ 0x00000527, 0x00000526, 0x0000047f, 0x0000047e,
+ 0x0000051f, 0x0000051e, 0x00001ecf, 0x00001ece,
+ 0x00001f04, 0x00001f0c, 0x00016e75, 0x00016e55,
+ 0x00010cd5, 0x00010c95, 0x00000507, 0x00000506,
+ 0x0001e926, 0x0001e904, 0x00001f81, 0x02000003,
+ 0x00002cd9, 0x00002cd8, 0x00000161, 0x00000160,
+ 0x000104fa, 0x000104d2, 0x00001e23, 0x00001e22,
+ 0x000118d4, 0x000118b4, 0x0000aba3, 0x000013d3,
+ 0x00001f51, 0x00001f59, 0x0000a659, 0x0000a658,
+ 0x000118df, 0x000118bf, 0x00002d2d, 0x000010cd,
+ 0x00001fe0, 0x00001fe8, 0x000001e5, 0x000001e4,
+ 0x00002c4c, 0x00002c1c, 0x000010d4, 0x00001c94,
+ 0x0000048d, 0x0000048c, 0x00001eab, 0x00001eaa,
+ 0x000003bb, 0x0000039b, 0x00000565, 0x00000535,
+ 0x000003ac, 0x00000386, 0x000024d7, 0x000024bd,
+ 0x00016e68, 0x00016e48, 0x000001ef, 0x000001ee,
+ 0x00000159, 0x00000158, 0x00001f53, 0x00001f5b,
+ 0x00000188, 0x00000187, 0x00002cc1, 0x00002cc0,
+ 0x00002cd3, 0x00002cd2, 0x0001e935, 0x0001e913,
+ 0x00001fab, 0x0200010c, 0x0000057c, 0x0000054c,
+ 0x0000ab98, 0x000013c8, 0x00010448, 0x00010420,
+ 0x00001f54, 0x030000a1, 0x000004f1, 0x000004f0,
+ 0x000004d7, 0x000004d6, 0x00001fd2, 0x030000af,
+ 0x000003e7, 0x000003e6, 0x00002c76, 0x00002c75,
+ 0x000010ef, 0x00001caf, 0x0000012d, 0x0000012c,
+ 0x00001ef9, 0x00001ef8, 0x00000123, 0x00000122,
+ 0x00002cc9, 0x00002cc8, 0x000003db, 0x000003da,
+ 0x0001e927, 0x0001e905, 0x0000012f, 0x0000012e,
+ 0x00000568, 0x00000538, 0x000003e1, 0x000003e0,
+ 0x0001e930, 0x0001e90e, 0x00000501, 0x00000500,
+ 0x00002c73, 0x00002c72, 0x00000177, 0x00000176,
+ 0x0001e928, 0x0001e906, 0x00001fa0, 0x02000030,
+ 0x000118de, 0x000118be, 0x00002c87, 0x00002c86,
+ 0x0001043f, 0x00010417, 0x000001f9, 0x000001f8,
+ 0x000000fd, 0x000000dd, 0x0000a65f, 0x0000a65e,
+ 0x00000075, 0x00000055, 0x000001dd, 0x0000018e,
+ 0x0000012b, 0x0000012a, 0x000010e8, 0x00001ca8,
+ 0x00000477, 0x00000476, 0x00001ecb, 0x00001eca,
+ 0x00000499, 0x00000498, 0x00000377, 0x00000376,
+ 0x00000103, 0x00000102, 0x0001e925, 0x0001e903,
+ 0x00002c95, 0x00002c94, 0x000010e6, 0x00001ca6,
+ 0x00002d14, 0x000010b4, 0x00001e5d, 0x00001e5c,
+ 0x000104e1, 0x000104b9, 0x00002cab, 0x00002caa,
+ 0x0000050b, 0x0000050a, 0x0000026b, 0x00002c62,
+ 0x00000173, 0x00000172, 0x000118d5, 0x000118b5,
+ 0x000004ce, 0x000004cd, 0x0000ab53, 0x0000a7b3,
+ 0x000001b9, 0x000001b8, 0x00000233, 0x00000232,
+ 0x0000014f, 0x0000014e, 0x00000219, 0x00000218,
+ 0x00000268, 0x00000197, 0x0000047d, 0x0000047c,
+ 0x00010cc0, 0x00010c80, 0x00010444, 0x0001041c,
+ 0x00000231, 0x00000230, 0x00001ec9, 0x00001ec8,
+ 0x00002cb3, 0x00002cb2, 0x00001eaf, 0x00001eae,
+ 0x00000266, 0x0000a7aa, 0x00000523, 0x00000522,
+ 0x00001c83, 0x00000421, 0x00002cb9, 0x00002cb8,
+ 0x0001042d, 0x00010405, 0x0000ff48, 0x0000ff28,
+ 0x00001c87, 0x00000462, 0x00002c4d, 0x00002c1d,
+ 0x00000260, 0x00000193, 0x0000a79b, 0x0000a79a,
+ 0x000004ab, 0x000004aa, 0x000003ef, 0x000003ee,
+ 0x00001f26, 0x00001f2e, 0x00000185, 0x00000184,
+ 0x00000457, 0x00000407, 0x0000ab92, 0x000013c2,
+ 0x00001f34, 0x00001f3c, 0x00001e79, 0x00001e78,
+ 0x0000037b, 0x000003fd, 0x00010cd0, 0x00010c90,
+ 0x00001ff3, 0x0200004e, 0x0001e92f, 0x0001e90d,
+ 0x000010f5, 0x00001cb5, 0x00001f36, 0x00001f3e,
+ 0x000003ba, 0x0000039a, 0x0001e938, 0x0001e916,
+ 0x000000f3, 0x000000d3, 0x0000ab87, 0x000013b7,
+ 0x0000052f, 0x0000052e, 0x00001e01, 0x00001e00,
+ 0x000118c6, 0x000118a6, 0x000118c0, 0x000118a0,
+ 0x00002c58, 0x00002c28, 0x0000fb02, 0x0200005a,
+ 0x0000a78c, 0x0000a78b, 0x0000037d, 0x000003ff,
+ 0x00002cbb, 0x00002cba, 0x000104ef, 0x000104c7,
+ 0x000001a3, 0x000001a2, 0x00000062, 0x00000042,
+ 0x0000abbf, 0x000013ef, 0x000003ca, 0x000003aa,
+ 0x00001eed, 0x00001eec, 0x00002c52, 0x00002c22,
+ 0x000003e9, 0x000003e8, 0x0000019a, 0x0000023d,
+ 0x0000025b, 0x00000190, 0x00001ea1, 0x00001ea0,
+ 0x0000056f, 0x0000053f, 0x00001fa2, 0x02000036,
+ 0x0000022b, 0x0000022a, 0x000004c8, 0x000004c7,
+ 0x00010cd2, 0x00010c92, 0x000003c1, 0x000003a1,
+ 0x0000028a, 0x000001b1, 0x000118d3, 0x000118b3,
+ 0x00002d02, 0x000010a2, 0x00000443, 0x00000423,
+ 0x0001044f, 0x00010427, 0x0000a781, 0x0000a780,
+ 0x00000562, 0x00000532, 0x00002cdb, 0x00002cda,
+ 0x00001fc7, 0x0300013a, 0x00000199, 0x00000198,
+ 0x00001c84, 0x00000422, 0x000004ef, 0x000004ee,
+ 0x00001f40, 0x00001f48, 0x00001f74, 0x00001fca,
+ 0x0000a641, 0x0000a640, 0x000104de, 0x000104b6,
+ 0x00001e67, 0x00001e66, 0x000118d9, 0x000118b9,
+ 0x0000049d, 0x0000049c, 0x000010e3, 0x00001ca3,
+ 0x0000fb03, 0x0300005d, 0x0001e92a, 0x0001e908,
+ 0x000004bd, 0x000004bc, 0x0000ab9f, 0x000013cf,
+ 0x00000519, 0x00000518, 0x000001a8, 0x000001a7,
+ 0x000000f4, 0x000000d4, 0x00000585, 0x00000555,
+ 0x00000454, 0x00000404, 0x00001f24, 0x00001f2c,
+ 0x0000a77a, 0x0000a779, 0x000004f9, 0x000004f8,
+ 0x00002ccd, 0x00002ccc, 0x00001f66, 0x00001f6e,
+ 0x000001da, 0x000001d9, 0x00000065, 0x00000045,
+ 0x0000aba9, 0x000013d9, 0x00001f71, 0x00001fbb,
+ 0x00001ef7, 0x00001ef6, 0x00000157, 0x00000156,
+ 0x0000abb8, 0x000013e8, 0x0000ff4d, 0x0000ff2d,
+ 0x00000252, 0x00002c70, 0x00016e7e, 0x00016e5e,
+ 0x00002d1d, 0x000010bd, 0x00002177, 0x00002167,
+ 0x000024e3, 0x000024c9, 0x0000a64b, 0x0000a64a,
+ 0x00000503, 0x00000502, 0x0000048f, 0x0000048e,
+ 0x000024e0, 0x000024c6, 0x00000153, 0x00000152,
+ 0x00000576, 0x00000546, 0x00002c54, 0x00002c24,
+ 0x00001f89, 0x020000d6, 0x00001f7d, 0x00001ffb,
+ 0x00001e2b, 0x00001e2a, 0x00002170, 0x00002160,
+ 0x00010430, 0x00010408, 0x00001eef, 0x00001eee,
+ 0x000000f2, 0x000000d2, 0x00000491, 0x00000490,
+ 0x0000a7a1, 0x0000a7a0, 0x000024d2, 0x000024b8,
+ 0x00002c68, 0x00002c67, 0x0000abad, 0x000013dd,
+ 0x0000a653, 0x0000a652, 0x0000a667, 0x0000a666,
+ 0x00001e8b, 0x00001e8a, 0x00010cdc, 0x00010c9c,
+ 0x0000ff41, 0x0000ff21, 0x0001e940, 0x0001e91e,
+ 0x00001f9b, 0x020000f4, 0x00001f57, 0x00001f5f,
+ 0x00002d00, 0x000010a0, 0x00001f01, 0x00001f09,
+ 0x00000148, 0x00000147, 0x0000056b, 0x0000053b,
+ 0x0000043e, 0x0000041e, 0x00001f9e, 0x020000fd,
+ 0x00001f72, 0x00001fc8, 0x000004e3, 0x000004e2,
+ 0x00002c61, 0x00002c60, 0x00001fa6, 0x02000042,
+ 0x00001fa7, 0x02000045, 0x0000006d, 0x0000004d,
+ 0x00010ce5, 0x00010ca5, 0x00001fc6, 0x020000ac,
+ 0x00000287, 0x0000a7b1, 0x00002c5d, 0x00002c2d,
+ 0x000010eb, 0x00001cab, 0x000003eb, 0x000003ea,
+ 0x00001f96, 0x0200002a, 0x00001c86, 0x0000042a,
+ 0x00000572, 0x00000542, 0x00000371, 0x00000370,
+ 0x000024d5, 0x000024bb, 0x00002ccb, 0x00002cca,
+ 0x000010d0, 0x00001c90, 0x00000444, 0x00000424,
+ 0x00001f25, 0x00001f2d, 0x00000115, 0x00000114,
+ 0x00001ec1, 0x00001ec0, 0x00002c5b, 0x00002c2b,
+ 0x00010447, 0x0001041f, 0x00001f67, 0x00001f6f,
+ 0x00016e6f, 0x00016e4f, 0x00002ce3, 0x00002ce2,
+ 0x00001fa5, 0x0200003f, 0x00001e31, 0x00001e30,
+ 0x00002c3d, 0x00002c0d, 0x00010cd8, 0x00010c98,
+ 0x0000ff4f, 0x0000ff2f, 0x00001ea5, 0x00001ea4,
+ 0x00000453, 0x00000403, 0x00000497, 0x00000496,
+ 0x0000013c, 0x0000013b, 0x0000a699, 0x0000a698,
+ 0x000010f7, 0x00001cb7, 0x00010cc6, 0x00010c86,
+ 0x00000175, 0x00000174, 0x00001f06, 0x00001f0e,
+ 0x0000010f, 0x0000010e, 0x00002d10, 0x000010b0,
+ 0x00002c39, 0x00002c09, 0x000003f3, 0x0000037f,
+ 0x00001f8c, 0x020000df, 0x00016e7f, 0x00016e5f,
+ 0x0000051b, 0x0000051a, 0x00001f12, 0x00001f1a,
+ 0x0000a785, 0x0000a784, 0x00000525, 0x00000524,
+ 0x0000aba0, 0x000013d0, 0x000104dd, 0x000104b5,
+ 0x000001c8, 0x000001c7, 0x0000056a, 0x0000053a,
+ 0x00010ccf, 0x00010c8f, 0x000104e5, 0x000104bd,
+ 0x00001ea3, 0x00001ea2, 0x00001f76, 0x00001fda,
+ 0x000010d5, 0x00001c95, 0x00000137, 0x00000136,
+ 0x00000265, 0x0000a78d, 0x00002ca3, 0x00002ca2,
+ 0x00001e29, 0x00001e28, 0x0000a75f, 0x0000a75e,
+ 0x00001f63, 0x00001f6b, 0x000004af, 0x000004ae,
+ 0x0000ab71, 0x000013a1, 0x000104e8, 0x000104c0,
+ 0x000003c8, 0x000003a8, 0x0000a77c, 0x0000a77b,
+ 0x0000ab83, 0x000013b3, 0x00002d1c, 0x000010bc,
+ 0x00010435, 0x0001040d, 0x00001e19, 0x00001e18,
+ 0x000004db, 0x000004da, 0x0000ab95, 0x000013c5,
+ 0x00001ff2, 0x02000130, 0x00001e7d, 0x00001e7c,
+ 0x0000011b, 0x0000011a, 0x00010cc2, 0x00010c82,
+ 0x00001fa3, 0x02000039, 0x000001d8, 0x000001d7,
+ 0x000000b5, 0x0000039c, 0x000010dd, 0x00001c9d,
+ 0x00000213, 0x00000212, 0x00000257, 0x0000018a,
+ 0x0000051d, 0x0000051c, 0x00010ce7, 0x00010ca7,
+ 0x000003d9, 0x000003d8, 0x0000020d, 0x0000020c,
+ 0x00002ce1, 0x00002ce0, 0x000104e0, 0x000104b8,
+ 0x00001e99, 0x02000094, 0x000118c1, 0x000118a1,
+ 0x0000016f, 0x0000016e, 0x0000abba, 0x000013ea,
+ 0x00002c65, 0x0000023a, 0x00001f52, 0x0300009d,
+ 0x00001f33, 0x00001f3b, 0x000004dd, 0x000004dc,
+ 0x000000fb, 0x000000db, 0x00001fb4, 0x02000127,
+ 0x00001e1b, 0x00001e1a, 0x0000a66d, 0x0000a66c,
+ 0x00001eeb, 0x00001eea, 0x00002c99, 0x00002c98,
+ 0x000001b0, 0x000001af, 0x00000432, 0x00000412,
+ 0x0000aba8, 0x000013d8, 0x0000a74b, 0x0000a74a,
+ 0x00001e97, 0x0200008e, 0x0000a725, 0x0000a724,
+ 0x000010d7, 0x00001c97, 0x000003b7, 0x00000397,
+ 0x00001f93, 0x02000021, 0x000000ee, 0x000000ce,
+ 0x00001e11, 0x00001e10, 0x00002c5c, 0x00002c2c,
+ 0x00001f23, 0x00001f2b, 0x000004f7, 0x000004f6,
+ 0x0000a73f, 0x0000a73e, 0x000004ff, 0x000004fe,
+ 0x00001f35, 0x00001f3d, 0x0000017e, 0x0000017d,
+ 0x0000050f, 0x0000050e, 0x00000113, 0x00000112,
+ 0x00001ec3, 0x00001ec2, 0x000001f2, 0x000001f1,
+ 0x000000f1, 0x000000d1, 0x00002cd1, 0x00002cd0,
+ 0x0000ff54, 0x0000ff34, 0x00002c8b, 0x00002c8a,
+ 0x000010f6, 0x00001cb6, 0x0000abb3, 0x000013e3,
+ 0x00000390, 0x03000080, 0x000024e1, 0x000024c7,
+ 0x00002c8d, 0x00002c8c, 0x00010cd1, 0x00010c91,
+ 0x00001f98, 0x020000eb, 0x0001e934, 0x0001e912,
+ 0x00001f90, 0x02000018, 0x000118cb, 0x000118ab,
+ 0x00000431, 0x00000411, 0x0001042f, 0x00010407,
+ 0x0000a74d, 0x0000a74c, 0x00001eb1, 0x00001eb0,
+ 0x00002c6a, 0x00002c69, 0x0000fb01, 0x02000057,
+ 0x000001dc, 0x000001db, 0x00001ecd, 0x00001ecc,
+ 0x00000439, 0x00000419, 0x0000045d, 0x0000040d,
+ 0x0000a799, 0x0000a798, 0x00002c41, 0x00002c11,
+ 0x0000ab9d, 0x000013cd, 0x0001043a, 0x00010412,
+ 0x00000067, 0x00000047, 0x0000006f, 0x0000004f,
+ 0x000004c4, 0x000004c3, 0x00002176, 0x00002166,
+ 0x0001e922, 0x0001e900, 0x00001c80, 0x00000412,
+ 0x000010f0, 0x00001cb0, 0x00001f8d, 0x020000e2,
+ 0x0000024f, 0x0000024e, 0x00000127, 0x00000126,
+ 0x000001a1, 0x000001a0, 0x0000043c, 0x0000041c,
+ 0x00001fe4, 0x020000c6, 0x00002d27, 0x000010c7,
+ 0x00000207, 0x00000206, 0x00002c44, 0x00002c14,
+ 0x0000a65d, 0x0000a65c, 0x0000a72b, 0x0000a72a,
+ 0x0000ab7e, 0x000013ae, 0x00000465, 0x00000464,
+ 0x000104d8, 0x000104b0, 0x000001e1, 0x000001e0,
+ 0x00002c36, 0x00002c06, 0x0000abbb, 0x000013eb,
+ 0x000104ec, 0x000104c4, 0x0000ff4b, 0x0000ff2b,
+ 0x0000045e, 0x0000040e, 0x0000ab8c, 0x000013bc,
+ 0x00000289, 0x00000244, 0x00000254, 0x00000186,
+ 0x0000a685, 0x0000a684, 0x000010ed, 0x00001cad,
+ 0x00002172, 0x00002162, 0x00010437, 0x0001040f,
+ 0x0000a77f, 0x0000a77e, 0x00000574, 0x00000544,
+ 0x000003df, 0x000003de, 0x0001042a, 0x00010402,
+ 0x00001c85, 0x00000422, 0x0000a755, 0x0000a754,
+ 0x00000076, 0x00000056, 0x00010440, 0x00010418,
+ 0x00000183, 0x00000182
};
-static const unsigned int _uccase_size = 2621;
+static const unsigned _uccase_lower_g_size = 226;
+static const short _uccase_lower_g[] = {
+ 378, 492, 185, 1753, 339, 6625, 945, 16446,
+ 65, 1293, 18, 11220, 1036, 427, 550, 32,
+ 133, 1629, 44, -55, 674, 19, 3949, 999,
+ 2, -1322, 799, 1563, 17679, -1376, 61, 8474,
+ 17, 6429, 7526, 1989, 4806, 2240, 569, 123,
+ 7, 3273, 3641, 1058, 750, 5194, 5, 4168,
+ 348, 515, 1355, 1127, 43, 8505, 14, 6476,
+ 1223, 1245, 1705, 10707, 15, 2869, 33, 1441,
+ 8845, 25, 7125, 2629, 1, -1039, 505, 252,
+ 14983, 1438, 48, 156, 1131, 1079, 1404, 831,
+ 553, 836, 278, 32767, 551, 1351, 14260, 22101,
+ 682, 3477, 2, 18384, 61, 5915, 536, 473,
+ 43, 10714, 20, 612, 536, 3622, 528, 1334,
+ 104, 3202, 23, 437, 5395, 29, 3132, 432,
+ 5, -610, 518, 111, 7221, 857, 40, 4247,
+ 318, 1678, 2930, 24758, 66, 30739, 348, -1000,
+ 3271, 1220, 17653, 14959, 1306, 1059, 209, -102,
+ 219, 2132, 752, 2322, 43, 3295, 6, 10838,
+ 450, 5742, 614, 1121, 48, 5015, 7, 3227,
+ 895, 86, 7694, 5597, 2, 1432, 5512, 77,
+ 3964, 3372, 77, -813, 610, 16149, 1418, 3255,
+ 2, 976, 263, -336, 1806, 3, 5294, 4036,
+ 547, 1524, 1, -33, 40, 8455, 1218, 8552,
+ 368, 889, 2, 1502, 3441, 7654, 80, 10953,
+ 293, 3783, 32, 2996, 525, 68, 1729, 4606,
+ 8, -496, 1483, 51, 6480, 1116, 9, -1339,
+ 3265, 3526, 3995, 356, 1, 4243, 650, 2662,
+ 5467, 1209, 4058, 24424, 374, 610, 216, -125,
+ 3604, 1707
+};
-/* Starting indexes of the case tables
- * UpperIndex = 0
- * LowerIndex = _uccase_len[0]
- * TitleIndex = LowerIndex + _uccase_len[1] */
+static const unsigned _uccase_lower_table_size = 1383;
+static const unsigned _uccase_lower_table[] = {
+ 0x000010a9, 0x00002d09, 0x00000130, 0x02000142,
+ 0x00002c1f, 0x00002c4f, 0x000013dc, 0x0000abac,
+ 0x00016e56, 0x00016e76, 0x00000048, 0x00000068,
+ 0x00002cd0, 0x00002cd1, 0x000013d3, 0x0000aba3,
+ 0x00000460, 0x00000461, 0x00001e20, 0x00001e21,
+ 0x00001ee4, 0x00001ee5, 0x00001cb4, 0x000010f4,
+ 0x00002126, 0x000003c9, 0x00001ffc, 0x00001ff3,
+ 0x0000216d, 0x0000217d, 0x00001fba, 0x00001f70,
+ 0x00001f59, 0x00001f51, 0x000013ed, 0x0000abbd,
+ 0x00010c93, 0x00010cd3, 0x00001e68, 0x00001e69,
+ 0x000000d8, 0x000000f8, 0x0000ff28, 0x0000ff48,
+ 0x00000480, 0x00000481, 0x0000040c, 0x0000045c,
+ 0x0000050a, 0x0000050b, 0x00000218, 0x00000219,
+ 0x000104d3, 0x000104fb, 0x00000230, 0x00000231,
+ 0x00001ef8, 0x00001ef9, 0x00010405, 0x0001042d,
+ 0x00000421, 0x00000441, 0x00000393, 0x000003b3,
+ 0x00000512, 0x00000513, 0x000104c8, 0x000104f0,
+ 0x00002c9e, 0x00002c9f, 0x00001fc8, 0x00001f72,
+ 0x00001f2e, 0x00001f26, 0x00010404, 0x0001042c,
+ 0x000010c1, 0x00002d21, 0x00001e46, 0x00001e47,
+ 0x00002c82, 0x00002c83, 0x0000053e, 0x0000056e,
+ 0x00000228, 0x00000229, 0x000024ce, 0x000024e8,
+ 0x000010b0, 0x00002d10, 0x00002cca, 0x00002ccb,
+ 0x00000141, 0x00000142, 0x000010bd, 0x00002d1d,
+ 0x00001f9b, 0x00001f93, 0x000104cb, 0x000104f3,
+ 0x00000472, 0x00000473, 0x000013df, 0x0000abaf,
+ 0x0000a648, 0x0000a649, 0x00016e42, 0x00016e62,
+ 0x00001fe8, 0x00001fe0, 0x00002c07, 0x00002c37,
+ 0x000118a7, 0x000118c7, 0x00002c16, 0x00002c46,
+ 0x000001fa, 0x000001fb, 0x00002c0d, 0x00002c3d,
+ 0x00000184, 0x00000185, 0x0000a66a, 0x0000a66b,
+ 0x000024bb, 0x000024d5, 0x00001f0c, 0x00001f04,
+ 0x000001c8, 0x000001c9, 0x0000a732, 0x0000a733,
+ 0x00001e04, 0x00001e05, 0x00010cab, 0x00010ceb,
+ 0x000001a4, 0x000001a5, 0x00000492, 0x00000493,
+ 0x0000021c, 0x0000021d, 0x00000056, 0x00000076,
+ 0x00002cde, 0x00002cdf, 0x000013c8, 0x0000ab98,
+ 0x0000040b, 0x0000045b, 0x00001c91, 0x000010d1,
+ 0x000024b8, 0x000024d2, 0x00001f3c, 0x00001f34,
+ 0x00000426, 0x00000446, 0x00002c2a, 0x00002c5a,
+ 0x0000a742, 0x0000a743, 0x0000a73c, 0x0000a73d,
+ 0x000000cf, 0x000000ef, 0x00002ca8, 0x00002ca9,
+ 0x00002cbe, 0x00002cbf, 0x000003aa, 0x000003ca,
+ 0x0000048a, 0x0000048b, 0x000013c0, 0x0000ab90,
+ 0x00001ffb, 0x00001f7d, 0x00001e10, 0x00001e11,
+ 0x00002c17, 0x00002c47, 0x00000520, 0x00000521,
+ 0x00000187, 0x00000188, 0x000013da, 0x0000abaa,
+ 0x0000a664, 0x0000a665, 0x0000a73a, 0x0000a73b,
+ 0x00002c9c, 0x00002c9d, 0x000104be, 0x000104e6,
+ 0x00002cbc, 0x00002cbd, 0x00001ca7, 0x000010e7,
+ 0x000001ea, 0x000001eb, 0x00000246, 0x00000247,
+ 0x000104c6, 0x000104ee, 0x00000551, 0x00000581,
+ 0x000024ba, 0x000024d4, 0x00000506, 0x00000507,
+ 0x00002c06, 0x00002c36, 0x0000053d, 0x0000056d,
+ 0x00016e50, 0x00016e70, 0x00001e2c, 0x00001e2d,
+ 0x0000ff32, 0x0000ff52, 0x00001ed2, 0x00001ed3,
+ 0x0000053f, 0x0000056f, 0x00001cae, 0x000010ee,
+ 0x0000015c, 0x0000015d, 0x00010c82, 0x00010cc2,
+ 0x00000476, 0x00000477, 0x0000ff23, 0x0000ff43,
+ 0x0001041a, 0x00010442, 0x0000a728, 0x0000a729,
+ 0x00002c62, 0x0000026b, 0x00001f6f, 0x00001f67,
+ 0x000118bf, 0x000118df, 0x00000403, 0x00000453,
+ 0x00001e3a, 0x00001e3b, 0x000104ca, 0x000104f2,
+ 0x0000052e, 0x0000052f, 0x000004d0, 0x000004d1,
+ 0x0000a652, 0x0000a653, 0x00001ee6, 0x00001ee7,
+ 0x000013bd, 0x0000ab8d, 0x000001b8, 0x000001b9,
+ 0x000004de, 0x000004df, 0x00001e34, 0x00001e35,
+ 0x000104c1, 0x000104e9, 0x0000046a, 0x0000046b,
+ 0x000013c1, 0x0000ab91, 0x0000040d, 0x0000045d,
+ 0x0000ff21, 0x0000ff41, 0x00010421, 0x00010449,
+ 0x000013d4, 0x0000aba4, 0x00001e54, 0x00001e55,
+ 0x00000134, 0x00000135, 0x00002c11, 0x00002c41,
+ 0x0000042f, 0x0000044f, 0x00016e47, 0x00016e67,
+ 0x0000a766, 0x0000a767, 0x0000a79e, 0x0000a79f,
+ 0x00001fd8, 0x00001fd0, 0x000104b3, 0x000104db,
+ 0x00010caa, 0x00010cea, 0x000013ad, 0x0000ab7d,
+ 0x000001f7, 0x000001bf, 0x000003a6, 0x000003c6,
+ 0x0000a660, 0x0000a661, 0x000118b9, 0x000118d9,
+ 0x00002c24, 0x00002c54, 0x000003f4, 0x000003b8,
+ 0x0000051e, 0x0000051f, 0x000118aa, 0x000118ca,
+ 0x000118bc, 0x000118dc, 0x00000415, 0x00000435,
+ 0x000000ca, 0x000000ea, 0x0000022a, 0x0000022b,
+ 0x000004aa, 0x000004ab, 0x000013e1, 0x0000abb1,
+ 0x00001ec4, 0x00001ec5, 0x0000011a, 0x0000011b,
+ 0x00010424, 0x0001044c, 0x00001e0c, 0x00001e0d,
+ 0x0000a696, 0x0000a697, 0x000010bc, 0x00002d1c,
+ 0x0000019c, 0x0000026f, 0x000104bf, 0x000104e7,
+ 0x000118bb, 0x000118db, 0x00010408, 0x00010430,
+ 0x0000024a, 0x0000024b, 0x00000412, 0x00000432,
+ 0x000013e0, 0x0000abb0, 0x00000046, 0x00000066,
+ 0x00002cce, 0x00002ccf, 0x0000051c, 0x0000051d,
+ 0x000013ac, 0x0000ab7c, 0x000010be, 0x00002d1e,
+ 0x00000196, 0x00000269, 0x000010ba, 0x00002d1a,
+ 0x00010ca5, 0x00010ce5, 0x00001fbb, 0x00001f71,
+ 0x0001e90e, 0x0001e930, 0x0000a7b0, 0x0000029e,
+ 0x000010c4, 0x00002d24, 0x00001cb7, 0x000010f7,
+ 0x00016e55, 0x00016e75, 0x00001caa, 0x000010ea,
+ 0x00000172, 0x00000173, 0x00001e14, 0x00001e15,
+ 0x0000041a, 0x0000043a, 0x0001e917, 0x0001e939,
+ 0x00000556, 0x00000586, 0x0000a79a, 0x0000a79b,
+ 0x00002c84, 0x00002c85, 0x0001e909, 0x0001e92b,
+ 0x00001fcb, 0x00001f75, 0x00016e4c, 0x00016e6c,
+ 0x0000ff2b, 0x0000ff4b, 0x00000547, 0x00000577,
+ 0x000013f5, 0x000013fd, 0x000013cc, 0x0000ab9c,
+ 0x00000128, 0x00000129, 0x000013b5, 0x0000ab85,
+ 0x0000ff25, 0x0000ff45, 0x00001f0e, 0x00001f06,
+ 0x00001edc, 0x00001edd, 0x00002cda, 0x00002cdb,
+ 0x00002c6e, 0x00000271, 0x000000d3, 0x000000f3,
+ 0x0000216b, 0x0000217b, 0x000024c8, 0x000024e2,
+ 0x000001fe, 0x000001ff, 0x0000039c, 0x000003bc,
+ 0x000013ab, 0x0000ab7b, 0x00002160, 0x00002170,
+ 0x00001e00, 0x00001e01, 0x00001c9b, 0x000010db,
+ 0x0000048c, 0x0000048d, 0x00010ca0, 0x00010ce0,
+ 0x00010c99, 0x00010cd9, 0x0000a782, 0x0000a783,
+ 0x00001cbd, 0x000010fd, 0x0001e906, 0x0001e928,
+ 0x000004c5, 0x000004c6, 0x000001b2, 0x0000028b,
+ 0x00001f9c, 0x00001f94, 0x000104cf, 0x000104f7,
+ 0x000104b6, 0x000104de, 0x00002c19, 0x00002c49,
+ 0x0000a686, 0x0000a687, 0x00001e6e, 0x00001e6f,
+ 0x00000110, 0x00000111, 0x000013a8, 0x0000ab78,
+ 0x0000012c, 0x0000012d, 0x0000a77d, 0x00001d79,
+ 0x00010c85, 0x00010cc5, 0x0000a76a, 0x0000a76b,
+ 0x00000404, 0x00000454, 0x0001040d, 0x00010435,
+ 0x00001f6d, 0x00001f65, 0x00001c97, 0x000010d7,
+ 0x000013d2, 0x0000aba2, 0x0000a76e, 0x0000a76f,
+ 0x000024bd, 0x000024d7, 0x000013a7, 0x0000ab77,
+ 0x00000392, 0x000003b2, 0x00010c86, 0x00010cc6,
+ 0x00000496, 0x00000497, 0x00002cb0, 0x00002cb1,
+ 0x00001c99, 0x000010d9, 0x000003e2, 0x000003e3,
+ 0x0000004b, 0x0000006b, 0x0000a77e, 0x0000a77f,
+ 0x0000a65e, 0x0000a65f, 0x00001feb, 0x00001f7b,
+ 0x00000145, 0x00000146, 0x000118bd, 0x000118dd,
+ 0x000024c9, 0x000024e3, 0x0000a7a8, 0x0000a7a9,
+ 0x0000038c, 0x000003cc, 0x00000102, 0x00000103,
+ 0x00002c08, 0x00002c38, 0x0000a64e, 0x0000a64f,
+ 0x000003f9, 0x000003f2, 0x0001e920, 0x0001e942,
+ 0x00000544, 0x00000574, 0x000003f7, 0x000003f8,
+ 0x00000241, 0x00000242, 0x00000108, 0x00000109,
+ 0x00001f29, 0x00001f21, 0x00001fab, 0x00001fa3,
+ 0x00010411, 0x00010439, 0x00001e7c, 0x00001e7d,
+ 0x00001cb0, 0x000010f0, 0x00010402, 0x0001042a,
+ 0x000010b4, 0x00002d14, 0x00000132, 0x00000133,
+ 0x000013e5, 0x0000abb5, 0x0000042e, 0x0000044e,
+ 0x00010c8a, 0x00010cca, 0x00001ca8, 0x000010e8,
+ 0x00001e4c, 0x00001e4d, 0x00001fae, 0x00001fa6,
+ 0x00000422, 0x00000442, 0x000003fa, 0x000003fb,
+ 0x00001eb4, 0x00001eb5, 0x0000a7b6, 0x0000a7b7,
+ 0x000001b5, 0x000001b6, 0x000001e0, 0x000001e1,
+ 0x000118b8, 0x000118d8, 0x00000508, 0x00000509,
+ 0x00016e5e, 0x00016e7e, 0x000104c5, 0x000104ed,
+ 0x000013d8, 0x0000aba8, 0x000118ba, 0x000118da,
+ 0x000024ca, 0x000024e4, 0x00001f49, 0x00001f41,
+ 0x00016e41, 0x00016e61, 0x0000010c, 0x0000010d,
+ 0x0000021a, 0x0000021b, 0x0000a7a0, 0x0000a7a1,
+ 0x00001e0a, 0x00001e0b, 0x000004c9, 0x000004ca,
+ 0x00001f99, 0x00001f91, 0x00010415, 0x0001043d,
+ 0x000001c5, 0x000001c6, 0x00001ff9, 0x00001f79,
+ 0x0000053b, 0x0000056b, 0x00001c96, 0x000010d6,
+ 0x00002c70, 0x00000252, 0x00000042, 0x00000062,
+ 0x00000424, 0x00000444, 0x00001f8f, 0x00001f87,
+ 0x00001e60, 0x00001e61, 0x00016e52, 0x00016e72,
+ 0x0000041f, 0x0000043f, 0x00002ca0, 0x00002ca1,
+ 0x0000a668, 0x0000a669, 0x0000014a, 0x0000014b,
+ 0x000013b7, 0x0000ab87, 0x000003a0, 0x000003c0,
+ 0x000004b8, 0x000004b9, 0x00010cb2, 0x00010cf2,
+ 0x000013b3, 0x0000ab83, 0x000001b3, 0x000001b4,
+ 0x00001f3f, 0x00001f37, 0x000013f2, 0x000013fa,
+ 0x000000cb, 0x000000eb, 0x0000015e, 0x0000015f,
+ 0x00000041, 0x00000061, 0x000003fe, 0x0000037c,
+ 0x000104c0, 0x000104e8, 0x000004c3, 0x000004c4,
+ 0x00010c81, 0x00010cc1, 0x0000ff37, 0x0000ff57,
+ 0x00002c29, 0x00002c59, 0x00001fb9, 0x00001fb1,
+ 0x0000a698, 0x0000a699, 0x00002c20, 0x00002c50,
+ 0x0000019d, 0x00000272, 0x00000528, 0x00000529,
+ 0x00010ca8, 0x00010ce8, 0x00000136, 0x00000137,
+ 0x00010c92, 0x00010cd2, 0x0000042d, 0x0000044d,
+ 0x000013e2, 0x0000abb2, 0x00001c92, 0x000010d2,
+ 0x00010cb1, 0x00010cf1, 0x00001cad, 0x000010ed,
+ 0x000000c3, 0x000000e3, 0x0000a748, 0x0000a749,
+ 0x00000402, 0x00000452, 0x000001ee, 0x000001ef,
+ 0x0000a758, 0x0000a759, 0x000013dd, 0x0000abad,
+ 0x000118b1, 0x000118d1, 0x0000013d, 0x0000013e,
+ 0x000010ab, 0x00002d0b, 0x00001cb5, 0x000010f5,
+ 0x000104cd, 0x000104f5, 0x00001ca5, 0x000010e5,
+ 0x0000012a, 0x0000012b, 0x00002c8c, 0x00002c8d,
+ 0x00000429, 0x00000449, 0x000013cf, 0x0000ab9f,
+ 0x000118a6, 0x000118c6, 0x00002c14, 0x00002c44,
+ 0x00000147, 0x00000148, 0x000004f6, 0x000004f7,
+ 0x00002165, 0x00002175, 0x00000118, 0x00000119,
+ 0x0000023e, 0x00002c66, 0x00010c9a, 0x00010cda,
+ 0x00001e5c, 0x00001e5d, 0x000118a9, 0x000118c9,
+ 0x00000222, 0x00000223, 0x00000411, 0x00000431,
+ 0x00001cb3, 0x000010f3, 0x000013e6, 0x0000abb6,
+ 0x00010410, 0x00010438, 0x0000a7b2, 0x0000029d,
+ 0x00002c6d, 0x00000251, 0x00001f5d, 0x00001f55,
+ 0x00016e59, 0x00016e79, 0x0000a762, 0x0000a763,
+ 0x00000413, 0x00000433, 0x000013c7, 0x0000ab97,
+ 0x0000a740, 0x0000a741, 0x0001e908, 0x0001e92a,
+ 0x00002c12, 0x00002c42, 0x00002c92, 0x00002c93,
+ 0x00000395, 0x000003b5, 0x000004e0, 0x000004e1,
+ 0x000010b6, 0x00002d16, 0x00002cd2, 0x00002cd3,
+ 0x0000ff24, 0x0000ff44, 0x0000047e, 0x0000047f,
+ 0x000010b8, 0x00002d18, 0x0000024e, 0x0000024f,
+ 0x000013bb, 0x0000ab8b, 0x000004be, 0x000004bf,
+ 0x000001a9, 0x00000283, 0x000004dc, 0x000004dd,
+ 0x000000d2, 0x000000f2, 0x000010a0, 0x00002d00,
+ 0x000003e8, 0x000003e9, 0x00000536, 0x00000566,
+ 0x00016e5a, 0x00016e7a, 0x0000051a, 0x0000051b,
+ 0x00010425, 0x0001044d, 0x00001f9d, 0x00001f95,
+ 0x00000208, 0x00000209, 0x0000a756, 0x0000a757,
+ 0x00001e26, 0x00001e27, 0x000000d5, 0x000000f5,
+ 0x000013aa, 0x0000ab7a, 0x00010ca1, 0x00010ce1,
+ 0x000024cb, 0x000024e5, 0x00001e80, 0x00001e81,
+ 0x00000394, 0x000003b4, 0x00001f0b, 0x00001f03,
+ 0x000118ae, 0x000118ce, 0x00001e3e, 0x00001e3f,
+ 0x00000408, 0x00000458, 0x000004b2, 0x000004b3,
+ 0x000104c4, 0x000104ec, 0x00010ca2, 0x00010ce2,
+ 0x00001e86, 0x00001e87, 0x0001e918, 0x0001e93a,
+ 0x00016e44, 0x00016e64, 0x000003cf, 0x000003d7,
+ 0x00002c0e, 0x00002c3e, 0x0000a7a6, 0x0000a7a7,
+ 0x0000038a, 0x000003af, 0x000118a0, 0x000118c0,
+ 0x000118ad, 0x000118cd, 0x0000a684, 0x0000a685,
+ 0x00001f98, 0x00001f90, 0x00000468, 0x00000469,
+ 0x000013a2, 0x0000ab72, 0x0000a754, 0x0000a755,
+ 0x0000041d, 0x0000043d, 0x00001fcc, 0x00001fc3,
+ 0x0000212a, 0x0000006b, 0x000001b7, 0x00000292,
+ 0x00010413, 0x0001043b, 0x00001e4e, 0x00001e4f,
+ 0x00001e1e, 0x00001e1f, 0x000001af, 0x000001b0,
+ 0x0000004f, 0x0000006f, 0x0000a680, 0x0000a681,
+ 0x000000d9, 0x000000f9, 0x00000398, 0x000003b8,
+ 0x00002c69, 0x00002c6a, 0x000004ba, 0x000004bb,
+ 0x0000015a, 0x0000015b, 0x00002c88, 0x00002c89,
+ 0x00000427, 0x00000447, 0x000001cb, 0x000001cc,
+ 0x00000216, 0x00000217, 0x00002c26, 0x00002c56,
+ 0x000118a2, 0x000118c2, 0x0001e907, 0x0001e929,
+ 0x000118be, 0x000118de, 0x00001fbc, 0x00001fb3,
+ 0x000004e6, 0x000004e7, 0x00001ed8, 0x00001ed9,
+ 0x000013f3, 0x000013fb, 0x00000498, 0x00000499,
+ 0x000024c5, 0x000024df, 0x000000c4, 0x000000e4,
+ 0x00010c9f, 0x00010cdf, 0x00016e5d, 0x00016e7d,
+ 0x0000013f, 0x00000140, 0x00010caf, 0x00010cef,
+ 0x00001cb2, 0x000010f2, 0x0000050c, 0x0000050d,
+ 0x0000004d, 0x0000006d, 0x00000052, 0x00000072,
+ 0x00001eb8, 0x00001eb9, 0x00001cb8, 0x000010f8,
+ 0x000024cf, 0x000024e9, 0x00001c9a, 0x000010da,
+ 0x00001f0a, 0x00001f02, 0x0000ff3a, 0x0000ff5a,
+ 0x00000397, 0x000003b7, 0x00000524, 0x00000525,
+ 0x00001cab, 0x000010eb, 0x0000a722, 0x0000a723,
+ 0x00002c05, 0x00002c35, 0x00002c6b, 0x00002c6c,
+ 0x0000a650, 0x0000a651, 0x0000004c, 0x0000006c,
+ 0x00001e84, 0x00001e85, 0x00002ca4, 0x00002ca5,
+ 0x00001f9f, 0x00001f97, 0x000118b4, 0x000118d4,
+ 0x00001eea, 0x00001eeb, 0x00000204, 0x00000205,
+ 0x00001f5b, 0x00001f53, 0x000010b1, 0x00002d11,
+ 0x00001ca4, 0x000010e4, 0x00000405, 0x00000455,
+ 0x00001f2a, 0x00001f22, 0x00000114, 0x00000115,
+ 0x000024b7, 0x000024d1, 0x000001cf, 0x000001d0,
+ 0x00000156, 0x00000157, 0x00001ea0, 0x00001ea1,
+ 0x00001c95, 0x000010d5, 0x000010a5, 0x00002d05,
+ 0x00002169, 0x00002179, 0x00001f28, 0x00001f20,
+ 0x000003e4, 0x000003e5, 0x00000526, 0x00000527,
+ 0x00001e70, 0x00001e71, 0x0000a7ae, 0x0000026a,
+ 0x000004c1, 0x000004c2, 0x0000042a, 0x0000044a,
+ 0x00001ede, 0x00001edf, 0x0000a78b, 0x0000a78c,
+ 0x0000a726, 0x0000a727, 0x0000ff39, 0x0000ff59,
+ 0x0000a73e, 0x0000a73f, 0x0000a72e, 0x0000a72f,
+ 0x00010403, 0x0001042b, 0x00010ca7, 0x00010ce7,
+ 0x000003a3, 0x000003c3, 0x000104ce, 0x000104f6,
+ 0x00001efc, 0x00001efd, 0x00002c18, 0x00002c48,
+ 0x00001eb6, 0x00001eb7, 0x0000020e, 0x0000020f,
+ 0x000013ef, 0x0000abbf, 0x000013a3, 0x0000ab73,
+ 0x00000189, 0x00000256, 0x0000ff36, 0x0000ff56,
+ 0x000004ac, 0x000004ad, 0x00002c09, 0x00002c39,
+ 0x00001f1b, 0x00001f13, 0x00002cae, 0x00002caf,
+ 0x0001e904, 0x0001e926, 0x000000c7, 0x000000e7,
+ 0x00000406, 0x00000456, 0x000024bc, 0x000024d6,
+ 0x000010b9, 0x00002d19, 0x00002c90, 0x00002c91,
+ 0x00000478, 0x00000479, 0x00001efa, 0x00001efb,
+ 0x00000139, 0x0000013a, 0x00002c0b, 0x00002c3b,
+ 0x00001caf, 0x000010ef, 0x000004ee, 0x000004ef,
+ 0x00001c98, 0x000010d8, 0x00000178, 0x000000ff,
+ 0x0000a7b1, 0x00000287, 0x00001cbf, 0x000010ff,
+ 0x0001041c, 0x00010444, 0x0000017b, 0x0000017c,
+ 0x00001e74, 0x00001e75, 0x00000399, 0x000003b9,
+ 0x00001f0d, 0x00001f05, 0x000118b7, 0x000118d7,
+ 0x000003a9, 0x000003c9, 0x00001e76, 0x00001e77,
+ 0x000013b8, 0x0000ab88, 0x00016e43, 0x00016e63,
+ 0x00001ca3, 0x000010e3, 0x000001db, 0x000001dc,
+ 0x0001e91c, 0x0001e93e, 0x0000041e, 0x0000043e,
+ 0x0001e90f, 0x0001e931, 0x00000120, 0x00000121,
+ 0x000001e8, 0x000001e9, 0x00000370, 0x00000371,
+ 0x00001ea4, 0x00001ea5, 0x000118ac, 0x000118cc,
+ 0x000024c0, 0x000024da, 0x000010a2, 0x00002d02,
+ 0x000003e0, 0x000003e1, 0x000013a6, 0x0000ab76,
+ 0x0000a7ad, 0x0000026c, 0x00001ec8, 0x00001ec9,
+ 0x000003da, 0x000003db, 0x00000416, 0x00000436,
+ 0x0001e913, 0x0001e935, 0x00001ca2, 0x000010e2,
+ 0x0000a7b8, 0x0000a7b9, 0x000013d0, 0x0000aba0,
+ 0x00010426, 0x0001044e, 0x000013eb, 0x0000abbb,
+ 0x000000d0, 0x000000f0, 0x00002c9a, 0x00002c9b,
+ 0x0000054d, 0x0000057d, 0x0001e901, 0x0001e923,
+ 0x000003a7, 0x000003c7, 0x000001a0, 0x000001a1,
+ 0x00001f3a, 0x00001f32, 0x0000040e, 0x0000045e,
+ 0x000004ea, 0x000004eb, 0x000013e3, 0x0000abb3,
+ 0x00000162, 0x00000163, 0x0000ff35, 0x0000ff55,
+ 0x00002c01, 0x00002c31, 0x0000023d, 0x0000019a,
+ 0x000013cd, 0x0000ab9d, 0x0000a666, 0x0000a667,
+ 0x0000039e, 0x000003be, 0x000004a0, 0x000004a1,
+ 0x000010c5, 0x00002d25, 0x000024c4, 0x000024de,
+ 0x000010a6, 0x00002d06, 0x00010cae, 0x00010cee,
+ 0x00002c2c, 0x00002c5c, 0x00000044, 0x00000064,
+ 0x00002ccc, 0x00002ccd, 0x00001e2e, 0x00001e2f,
+ 0x00002132, 0x0000214e, 0x00016e4f, 0x00016e6f,
+ 0x00000179, 0x0000017a, 0x00001e48, 0x00001e49,
+ 0x00016e58, 0x00016e78, 0x000004a6, 0x000004a7,
+ 0x00001f09, 0x00001f01, 0x00001cb6, 0x000010f6,
+ 0x00016e48, 0x00016e68, 0x0000039a, 0x000003ba,
+ 0x0000041b, 0x0000043b, 0x0000018a, 0x00000257,
+ 0x00000158, 0x00000159, 0x00000462, 0x00000463,
+ 0x0000216a, 0x0000217a, 0x0001e91e, 0x0001e940,
+ 0x000000c0, 0x000000e0, 0x00000176, 0x00000177,
+ 0x000013ce, 0x0000ab9e, 0x00001e52, 0x00001e53,
+ 0x000010bf, 0x00002d1f, 0x00001f38, 0x00001f30,
+ 0x000001f6, 0x00000195, 0x00002cc2, 0x00002cc3,
+ 0x000010b5, 0x00002d15, 0x00000490, 0x00000491,
+ 0x000004bc, 0x000004bd, 0x00010c8d, 0x00010ccd,
+ 0x000013a9, 0x0000ab79, 0x000004fa, 0x000004fb,
+ 0x00000504, 0x00000505, 0x00002cd8, 0x00002cd9,
+ 0x00001ee0, 0x00001ee1, 0x00002166, 0x00002176,
+ 0x00001e6a, 0x00001e6b, 0x00000054, 0x00000074,
+ 0x00002cdc, 0x00002cdd, 0x00001e78, 0x00001e79,
+ 0x00000419, 0x00000439, 0x000118b2, 0x000118d2,
+ 0x0001e903, 0x0001e925, 0x000104c2, 0x000104ea,
+ 0x000001d7, 0x000001d8, 0x00000540, 0x00000570,
+ 0x00002c1b, 0x00002c4b, 0x000003e6, 0x000003e7,
+ 0x000000cc, 0x000000ec, 0x000010c2, 0x00002d22,
+ 0x00002c27, 0x00002c57, 0x0000004a, 0x0000006a,
+ 0x00001eba, 0x00001ebb, 0x0000013b, 0x0000013c,
+ 0x000004b4, 0x000004b5, 0x00001ca1, 0x000010e1,
+ 0x000024c7, 0x000024e1, 0x000013b9, 0x0000ab89,
+ 0x00002161, 0x00002171, 0x000000dd, 0x000000fd,
+ 0x000013d5, 0x0000aba5, 0x000024c3, 0x000024dd,
+ 0x00001e82, 0x00001e83, 0x000001c7, 0x000001c9,
+ 0x00000510, 0x00000511, 0x0000020c, 0x0000020d,
+ 0x00010cad, 0x00010ced, 0x00000248, 0x00000249,
+ 0x0000a7b3, 0x0000ab53, 0x00000417, 0x00000437,
+ 0x00000058, 0x00000078, 0x00002ce0, 0x00002ce1,
+ 0x000013ec, 0x0000abbc, 0x00010c88, 0x00010cc8,
+ 0x00001e22, 0x00001e23, 0x0000a694, 0x0000a695,
+ 0x0000ff2e, 0x0000ff4e, 0x0000038e, 0x000003cd,
+ 0x00000418, 0x00000438, 0x000013c5, 0x0000ab95,
+ 0x00001e94, 0x00001e95, 0x00000116, 0x00000117,
+ 0x00002c86, 0x00002c87, 0x0000a734, 0x0000a735,
+ 0x00010417, 0x0001043f, 0x0000a7a2, 0x0000a7a3,
+ 0x000013ca, 0x0000ab9a, 0x000001a6, 0x00000280,
+ 0x000004f4, 0x000004f5, 0x0000a760, 0x0000a761,
+ 0x00001f18, 0x00001f10, 0x00002c64, 0x0000027d,
+ 0x00000541, 0x00000571, 0x00000049, 0x00000069,
+ 0x00000152, 0x00000153, 0x000003ec, 0x000003ed,
+ 0x0001e914, 0x0001e936, 0x00002c23, 0x00002c53,
+ 0x00001ed0, 0x00001ed1, 0x00001c9e, 0x000010de,
+ 0x00001f1c, 0x00001f14, 0x00001e06, 0x00001e07,
+ 0x00001ef2, 0x00001ef3, 0x00000057, 0x00000077,
+ 0x00000206, 0x00000207, 0x000003d8, 0x000003d9,
+ 0x0000047a, 0x0000047b, 0x00001ffa, 0x00001f7c,
+ 0x00000051, 0x00000071, 0x000013c9, 0x0000ab99,
+ 0x0000a640, 0x0000a641, 0x0001e919, 0x0001e93b,
+ 0x00000053, 0x00000073, 0x0000a7a4, 0x0000a7a5,
+ 0x00001e56, 0x00001e57, 0x00002ced, 0x00002cee,
+ 0x00016e5f, 0x00016e7f, 0x00010416, 0x0001043e,
+ 0x0000a78d, 0x00000265, 0x00010c95, 0x00010cd5,
+ 0x00000546, 0x00000576, 0x00000555, 0x00000585,
+ 0x00001fac, 0x00001fa4, 0x00001f6a, 0x00001f62,
+ 0x000003dc, 0x000003dd, 0x00000548, 0x00000578,
+ 0x00016e54, 0x00016e74, 0x00000552, 0x00000582,
+ 0x0000ff2f, 0x0000ff4f, 0x00001fa9, 0x00001fa1,
+ 0x00010406, 0x0001042e, 0x000013d7, 0x0000aba7,
+ 0x000001e6, 0x000001e7, 0x00010cac, 0x00010cec,
+ 0x00010c8b, 0x00010ccb, 0x00000181, 0x00000253,
+ 0x000024c2, 0x000024dc, 0x00000407, 0x00000457,
+ 0x000001d1, 0x000001d2, 0x00010c83, 0x00010cc3,
+ 0x000104b4, 0x000104dc, 0x00001ecc, 0x00001ecd,
+ 0x000104c3, 0x000104eb, 0x0000042b, 0x0000044b,
+ 0x00002c80, 0x00002c81, 0x00001c9c, 0x000010dc,
+ 0x00001e4a, 0x00001e4b, 0x000013d9, 0x0000aba9,
+ 0x000013e7, 0x0000abb7, 0x00001eda, 0x00001edb,
+ 0x000003ea, 0x000003eb, 0x00001cbe, 0x000010fe,
+ 0x00001e16, 0x00001e17, 0x00010cb0, 0x00010cf0,
+ 0x0000049c, 0x0000049d, 0x0000a654, 0x0000a655,
+ 0x00002cb2, 0x00002cb3, 0x000013af, 0x0000ab7f,
+ 0x0001e910, 0x0001e932, 0x000004ec, 0x000004ed,
+ 0x0000a656, 0x0000a657, 0x000000c6, 0x000000e6,
+ 0x00010423, 0x0001044b, 0x0000021e, 0x0000021f,
+ 0x00010c94, 0x00010cd4, 0x0000a798, 0x0000a799,
+ 0x0001e900, 0x0001e922, 0x00001c9d, 0x000010dd,
+ 0x0000a75e, 0x0000a75f, 0x00010407, 0x0001042f,
+ 0x00002c22, 0x00002c52, 0x00016e4e, 0x00016e6e,
+ 0x0000053c, 0x0000056c, 0x00001efe, 0x00001eff,
+ 0x00002c0c, 0x00002c3c, 0x00001e8e, 0x00001e8f,
+ 0x00000414, 0x00000434, 0x000013ee, 0x0000abbe,
+ 0x00000059, 0x00000079, 0x000004c7, 0x000004c8,
+ 0x00001c9f, 0x000010df, 0x000118a4, 0x000118c4,
+ 0x0000212b, 0x000000e5, 0x000004f8, 0x000004f9,
+ 0x00001eac, 0x00001ead, 0x000003ff, 0x0000037d,
+ 0x00000542, 0x00000572, 0x00002c02, 0x00002c32,
+ 0x000000de, 0x000000fe, 0x00002cb4, 0x00002cb5,
+ 0x00001c93, 0x000010d3, 0x000004cd, 0x000004ce,
+ 0x000010c3, 0x00002d23, 0x00001e2a, 0x00001e2b,
+ 0x0000ff33, 0x0000ff53, 0x00002c1d, 0x00002c4d,
+ 0x0000040f, 0x0000045f, 0x0000a764, 0x0000a765,
+ 0x0000a79c, 0x0000a79d, 0x0000ff26, 0x0000ff46,
+ 0x00001f2d, 0x00001f25, 0x00001e1a, 0x00001e1b,
+ 0x000000d6, 0x000000f6, 0x000013b6, 0x0000ab86,
+ 0x00010420, 0x00010448, 0x00000532, 0x00000562,
+ 0x00000182, 0x00000183, 0x0000a768, 0x0000a769,
+ 0x00001f8c, 0x00001f84, 0x00016e40, 0x00016e60,
+ 0x00002c2d, 0x00002c5d, 0x0001041b, 0x00010443,
+ 0x00001f0f, 0x00001f07, 0x000104bd, 0x000104e5,
+ 0x000004a4, 0x000004a5, 0x0000a72c, 0x0000a72d,
+ 0x0000a646, 0x0000a647, 0x00000401, 0x00000451,
+ 0x000000cd, 0x000000ed, 0x00000533, 0x00000563,
+ 0x0000a74c, 0x0000a74d, 0x00000545, 0x00000575,
+ 0x00000400, 0x00000450, 0x00002168, 0x00002178,
+ 0x000024cd, 0x000024e7, 0x000004d6, 0x000004d7,
+ 0x00001e8a, 0x00001e8b, 0x0000024c, 0x0000024d,
+ 0x00010c9b, 0x00010cdb, 0x000004cb, 0x000004cc,
+ 0x000024bf, 0x000024d9, 0x00001ca0, 0x000010e0,
+ 0x000001d9, 0x000001da, 0x000013de, 0x0000abae,
+ 0x00001eb2, 0x00001eb3, 0x0000a68e, 0x0000a68f,
+ 0x00001e64, 0x00001e65, 0x0000a746, 0x0000a747,
+ 0x000013a4, 0x0000ab74, 0x0000a74e, 0x0000a74f,
+ 0x00000166, 0x00000167, 0x00001fec, 0x00001fe5,
+ 0x00000106, 0x00000107, 0x000104bb, 0x000104e3,
+ 0x0000005a, 0x0000007a, 0x00002ce2, 0x00002ce3,
+ 0x00010c9c, 0x00010cdc, 0x0000014e, 0x0000014f,
+ 0x000118ab, 0x000118cb, 0x00010418, 0x00010440,
+ 0x00001f3e, 0x00001f36, 0x000013bf, 0x0000ab8f,
+ 0x00000543, 0x00000573, 0x00001e66, 0x00001e67,
+ 0x00002cac, 0x00002cad, 0x00000043, 0x00000063,
+ 0x000004b6, 0x000004b7, 0x000004f0, 0x000004f1,
+ 0x0000a752, 0x0000a753, 0x00001eae, 0x00001eaf,
+ 0x00000150, 0x00000151, 0x00010c8e, 0x00010cce,
+ 0x000001a7, 0x000001a8, 0x00000100, 0x00000101,
+ 0x000104c7, 0x000104ef, 0x000001c4, 0x000001c6,
+ 0x000013f0, 0x000013f8, 0x000004da, 0x000004db,
+ 0x0000a692, 0x0000a693, 0x00001fd9, 0x00001fd1,
+ 0x000104b2, 0x000104da, 0x00000531, 0x00000561,
+ 0x00000522, 0x00000523, 0x0000a7ac, 0x00000261,
+ 0x0000054b, 0x0000057b, 0x0000a750, 0x0000a751,
+ 0x0000054f, 0x0000057f, 0x0001041d, 0x00010445,
+ 0x00000200, 0x00000201, 0x0000a786, 0x0000a787,
+ 0x00001f2b, 0x00001f23, 0x00001e5e, 0x00001e5f,
+ 0x0001040a, 0x00010432, 0x000104c9, 0x000104f1,
+ 0x00000122, 0x00000123, 0x000013f4, 0x000013fc,
+ 0x00001ea6, 0x00001ea7, 0x00000174, 0x00000175,
+ 0x00001f9e, 0x00001f96, 0x00001e50, 0x00001e51,
+ 0x00002c2e, 0x00002c5e, 0x0001040e, 0x00010436,
+ 0x000104b9, 0x000104e1, 0x0000039d, 0x000003bd,
+ 0x00002183, 0x00002184, 0x00002c6f, 0x00000250,
+ 0x00000190, 0x0000025b, 0x000010a4, 0x00002d04,
+ 0x0000039f, 0x000003bf, 0x00000389, 0x000003ae,
+ 0x00001e12, 0x00001e13, 0x0000a644, 0x0000a645,
+ 0x00001ec0, 0x00001ec1, 0x00000494, 0x00000495,
+ 0x000104ba, 0x000104e2, 0x00000050, 0x00000070,
+ 0x00001e32, 0x00001e33, 0x0000ff2d, 0x0000ff4d,
+ 0x00000423, 0x00000443, 0x00016e4a, 0x00016e6a,
+ 0x0000004e, 0x0000006e, 0x00010427, 0x0001044f,
+ 0x00002c0f, 0x00002c3f, 0x0000023b, 0x0000023c,
+ 0x00001f1d, 0x00001f15, 0x00001f08, 0x00001f00,
+ 0x00001f4c, 0x00001f44, 0x00010c87, 0x00010cc7,
+ 0x000004f2, 0x000004f3, 0x00001c94, 0x000010d4,
+ 0x0000a7aa, 0x00000266, 0x00001f68, 0x00001f60,
+ 0x0000046e, 0x0000046f, 0x00016e49, 0x00016e69,
+ 0x00001faf, 0x00001fa7, 0x000001cd, 0x000001ce,
+ 0x00000514, 0x00000515, 0x0000046c, 0x0000046d,
+ 0x000118b5, 0x000118d5, 0x00002c1c, 0x00002c4c,
+ 0x00001ea8, 0x00001ea9, 0x000003de, 0x000003df,
+ 0x00002c04, 0x00002c34, 0x00001fa8, 0x00001fa0,
+ 0x00002cb8, 0x00002cb9, 0x00000553, 0x00000583,
+ 0x0000041c, 0x0000043c, 0x00001f5f, 0x00001f57,
+ 0x000010b7, 0x00002d17, 0x00000212, 0x00000213,
+ 0x000013d1, 0x0000aba1, 0x0001041e, 0x00010446,
+ 0x00000243, 0x00000180, 0x0000a690, 0x0000a691,
+ 0x00001cba, 0x000010fa, 0x00000391, 0x000003b1,
+ 0x0001e90b, 0x0001e92d, 0x00001f39, 0x00001f31,
+ 0x00001e7e, 0x00001e7f, 0x00001f69, 0x00001f61,
+ 0x00000516, 0x00000517, 0x00000535, 0x00000565,
+ 0x00010401, 0x00010429, 0x0000a7b4, 0x0000a7b5,
+ 0x000118a8, 0x000118c8, 0x000004a8, 0x000004a9,
+ 0x000010a7, 0x00002d07, 0x000013be, 0x0000ab8e,
+ 0x00001eaa, 0x00001eab, 0x00010ca6, 0x00010ce6,
+ 0x0001e921, 0x0001e943, 0x00010c97, 0x00010cd7,
+ 0x0000a744, 0x0000a745, 0x000013b4, 0x0000ab84,
+ 0x00001e9e, 0x000000df, 0x000010c0, 0x00002d20,
+ 0x000013c4, 0x0000ab94, 0x00001eb0, 0x00001eb1,
+ 0x00001f8e, 0x00001f86, 0x00001f89, 0x00001f81,
+ 0x0001e90d, 0x0001e92f, 0x000003a8, 0x000003c8,
+ 0x00001ece, 0x00001ecf, 0x0000ff2a, 0x0000ff4a,
+ 0x0000a66c, 0x0000a66d, 0x0001e91a, 0x0001e93c,
+ 0x0000010e, 0x0000010f, 0x00002c96, 0x00002c97,
+ 0x0000037f, 0x000003f3, 0x00000534, 0x00000564,
+ 0x0000049e, 0x0000049f, 0x00002cb6, 0x00002cb7,
+ 0x00002c25, 0x00002c55, 0x0000047c, 0x0000047d,
+ 0x000013ea, 0x0000abba, 0x00010414, 0x0001043c,
+ 0x0000a780, 0x0000a781, 0x000001a2, 0x000001a3,
+ 0x0001e915, 0x0001e937, 0x00010400, 0x00010428,
+ 0x000024c6, 0x000024e0, 0x00001e92, 0x00001e93,
+ 0x000001ac, 0x000001ad, 0x00002c15, 0x00002c45,
+ 0x000000c9, 0x000000e9, 0x00002c21, 0x00002c51,
+ 0x00001cb9, 0x000010f9, 0x000001bc, 0x000001bd,
+ 0x00016e4d, 0x00016e6d, 0x00000518, 0x00000519,
+ 0x00002cf2, 0x00002cf3, 0x00001cb1, 0x000010f1,
+ 0x000004ae, 0x000004af, 0x000010b2, 0x00002d12,
+ 0x00002c28, 0x00002c58, 0x000001fc, 0x000001fd,
+ 0x0001e912, 0x0001e934, 0x0000a662, 0x0000a663,
+ 0x000000d1, 0x000000f1, 0x000000d4, 0x000000f4,
+ 0x000013c3, 0x0000ab93, 0x00000186, 0x00000254,
+ 0x00000538, 0x00000568, 0x0000011c, 0x0000011d,
+ 0x00002cba, 0x00002cbb, 0x00001ea2, 0x00001ea3,
+ 0x000104cc, 0x000104f4, 0x00000193, 0x00000260,
+ 0x0001040f, 0x00010437, 0x00000202, 0x00000203,
+ 0x00010c8f, 0x00010ccf, 0x00010c8c, 0x00010ccc,
+ 0x00001e1c, 0x00001e1d, 0x0000a65a, 0x0000a65b,
+ 0x00000550, 0x00000580, 0x00000245, 0x0000028c,
+ 0x00001f19, 0x00001f11, 0x000000c1, 0x000000e1,
+ 0x00001e40, 0x00001e41, 0x00001f2c, 0x00001f24,
+ 0x00000466, 0x00000467, 0x00002cc4, 0x00002cc5,
+ 0x000024b9, 0x000024d3, 0x00001e8c, 0x00001e8d,
+ 0x00001e90, 0x00001e91, 0x000004b0, 0x000004b1,
+ 0x000001b1, 0x0000028a, 0x000003fd, 0x0000037b,
+ 0x000001f2, 0x000001f3, 0x000000c2, 0x000000e2,
+ 0x00000502, 0x00000503, 0x0000022e, 0x0000022f,
+ 0x000013b1, 0x0000ab81, 0x0000017d, 0x0000017e,
+ 0x00010c89, 0x00010cc9, 0x000013a0, 0x0000ab70,
+ 0x00001ca9, 0x000010e9, 0x00000164, 0x00000165,
+ 0x00002c00, 0x00002c30, 0x00001ef4, 0x00001ef5,
+ 0x00002cc0, 0x00002cc1, 0x0000a68c, 0x0000a68d,
+ 0x00001e24, 0x00001e25, 0x00000372, 0x00000373,
+ 0x0000052c, 0x0000052d, 0x000010c7, 0x00002d27,
+ 0x00001e28, 0x00001e29, 0x00001f48, 0x00001f40,
+ 0x000003a4, 0x000003c4, 0x00010c9e, 0x00010cde,
+ 0x00001ca6, 0x000010e6, 0x00001e44, 0x00001e45,
+ 0x0000018b, 0x0000018c, 0x00000047, 0x00000067,
+ 0x00001f6e, 0x00001f66, 0x0000a75c, 0x0000a75d,
+ 0x00001ebe, 0x00001ebf, 0x00001fda, 0x00001f76,
+ 0x00001e62, 0x00001e63, 0x000118a5, 0x000118c5,
+ 0x00002c1a, 0x00002c4a, 0x000010a8, 0x00002d08,
+ 0x00002c7f, 0x00000240, 0x00016e51, 0x00016e71,
+ 0x00001cac, 0x000010ec, 0x000001f1, 0x000001f3,
+ 0x00000554, 0x00000584, 0x00001e0e, 0x00001e0f,
+ 0x000013a1, 0x0000ab71, 0x00000055, 0x00000075,
+ 0x00000154, 0x00000155, 0x00010c90, 0x00010cd0,
+ 0x00002cc8, 0x00002cc9, 0x0000a658, 0x0000a659,
+ 0x0000048e, 0x0000048f, 0x00001e7a, 0x00001e7b,
+ 0x000003a1, 0x000003c1, 0x00001f3d, 0x00001f35,
+ 0x000000c8, 0x000000e8, 0x00002c10, 0x00002c40,
+ 0x00001f4a, 0x00001f42, 0x0000042c, 0x0000044c,
+ 0x00002163, 0x00002173, 0x00016e46, 0x00016e66,
+ 0x00001faa, 0x00001fa2, 0x00000104, 0x00000105,
+ 0x00001ed4, 0x00001ed5, 0x0000a64c, 0x0000a64d,
+ 0x0001041f, 0x00010447, 0x00001e88, 0x00001e89,
+ 0x0000039b, 0x000003bb, 0x000104b0, 0x000104d8,
+ 0x000010ae, 0x00002d0e, 0x0000a64a, 0x0000a64b,
+ 0x00002caa, 0x00002cab, 0x000001e2, 0x000001e3,
+ 0x00016e45, 0x00016e65, 0x000004e8, 0x000004e9,
+ 0x000104d2, 0x000104fa, 0x0000ff38, 0x0000ff58,
+ 0x00001ed6, 0x00001ed7, 0x00000376, 0x00000377,
+ 0x0000a76c, 0x0000a76d, 0x00001e38, 0x00001e39,
+ 0x0000023a, 0x00002c65, 0x00000464, 0x00000465,
+ 0x00000500, 0x00000501, 0x0000a69a, 0x0000a69b,
+ 0x00001f4b, 0x00001f43, 0x000001ca, 0x000001cc,
+ 0x00000539, 0x00000569, 0x00001e6c, 0x00001e6d,
+ 0x00000124, 0x00000125, 0x0001e90c, 0x0001e92e,
+ 0x0000216f, 0x0000217f, 0x0001e91d, 0x0001e93f,
+ 0x00001f1a, 0x00001f12, 0x0000a72a, 0x0000a72b,
+ 0x00001f9a, 0x00001f92, 0x00000470, 0x00000471,
+ 0x00002cc6, 0x00002cc7, 0x00010409, 0x00010431,
+ 0x000013c6, 0x0000ab96, 0x00000388, 0x000003ad,
+ 0x000013e4, 0x0000abb4, 0x000118b3, 0x000118d3,
+ 0x00002c1e, 0x00002c4e, 0x0000054e, 0x0000057e,
+ 0x000104d0, 0x000104f8, 0x0000038f, 0x000003ce,
+ 0x000118b0, 0x000118d0, 0x00001ec2, 0x00001ec3,
+ 0x00000194, 0x00000263, 0x00001ff8, 0x00001f78,
+ 0x0001e902, 0x0001e924, 0x000010ad, 0x00002d0d,
+ 0x00001ec6, 0x00001ec7, 0x00001ee8, 0x00001ee9,
+ 0x000104b8, 0x000104e0, 0x00001f3b, 0x00001f33,
+ 0x0000a77b, 0x0000a77c, 0x00001f88, 0x00001f80,
+ 0x00010c80, 0x00010cc0, 0x000013e9, 0x0000abb9,
+ 0x0001e916, 0x0001e938, 0x0000012e, 0x0000012f,
+ 0x00002c98, 0x00002c99, 0x00002167, 0x00002177,
+ 0x000013f1, 0x000013f9, 0x0001040b, 0x00010433,
+ 0x0000a7ab, 0x0000025c, 0x0000a74a, 0x0000a74b,
+ 0x00002c7e, 0x0000023f, 0x00016e57, 0x00016e77,
+ 0x0000a682, 0x0000a683, 0x00002ca2, 0x00002ca3,
+ 0x0000a736, 0x0000a737, 0x000000c5, 0x000000e5,
+ 0x00002c63, 0x00001d7d, 0x000000dc, 0x000000fc,
+ 0x0000a790, 0x0000a791, 0x00002c67, 0x00002c68,
+ 0x0001e90a, 0x0001e92c, 0x00010422, 0x0001044a,
+ 0x000001e4, 0x000001e5, 0x0000ff22, 0x0000ff42,
+ 0x000104bc, 0x000104e4, 0x00000220, 0x0000019e,
+ 0x000010cd, 0x00002d2d, 0x00001eca, 0x00001ecb,
+ 0x000004c0, 0x000004cf, 0x0001e905, 0x0001e927,
+ 0x00016e4b, 0x00016e6b, 0x000024cc, 0x000024e6,
+ 0x00010ca9, 0x00010ce9, 0x0000010a, 0x0000010b,
+ 0x0000053a, 0x0000056a, 0x00002c0a, 0x00002c3a,
+ 0x00000168, 0x00000169, 0x00001fca, 0x00001f74,
+ 0x00002c75, 0x00002c76, 0x000013c2, 0x0000ab92,
+ 0x00010412, 0x0001043a, 0x000003ee, 0x000003ef,
+ 0x000013ba, 0x0000ab8a, 0x000004d2, 0x000004d3,
+ 0x000004e4, 0x000004e5, 0x0000a688, 0x0000a689,
+ 0x0000016c, 0x0000016d, 0x00000396, 0x000003b6,
+ 0x00001ee2, 0x00001ee3, 0x0000022c, 0x0000022d,
+ 0x00001e42, 0x00001e43, 0x00001f4d, 0x00001f45,
+ 0x0000a779, 0x0000a77a, 0x0000019f, 0x00000275,
+ 0x00001fb8, 0x00001fb0, 0x00001e30, 0x00001e31,
+ 0x00016e5c, 0x00016e7c, 0x00001f6c, 0x00001f64,
+ 0x00002ceb, 0x00002cec, 0x000001ae, 0x00000288,
+ 0x000001f4, 0x000001f5, 0x00000112, 0x00000113,
+ 0x000003ab, 0x000003cb, 0x000118a1, 0x000118c1,
+ 0x000024c1, 0x000024db, 0x000010aa, 0x00002d0a,
+ 0x00010ca3, 0x00010ce3, 0x00002c8e, 0x00002c8f,
+ 0x00001ef0, 0x00001ef1, 0x00001f8d, 0x00001f85,
+ 0x000010af, 0x00002d0f, 0x00000425, 0x00000445,
+ 0x000004e2, 0x000004e3, 0x0000a68a, 0x0000a68b,
+ 0x000004d8, 0x000004d9, 0x00000409, 0x00000459,
+ 0x0000052a, 0x0000052b, 0x0001e911, 0x0001e933,
+ 0x000000ce, 0x000000ee, 0x00001e02, 0x00001e03,
+ 0x000010b3, 0x00002d13, 0x00000143, 0x00000144,
+ 0x000004fc, 0x000004fd, 0x0000016e, 0x0000016f,
+ 0x00001f8a, 0x00001f82, 0x0000216c, 0x0000217c,
+ 0x00016e5b, 0x00016e7b, 0x0000054c, 0x0000057c,
+ 0x00002cd6, 0x00002cd7, 0x000104b7, 0x000104df,
+ 0x00001fc9, 0x00001f73, 0x000118a3, 0x000118c3,
+ 0x00001e08, 0x00001e09, 0x000001f8, 0x000001f9,
+ 0x00010ca4, 0x00010ce4, 0x000013b0, 0x0000ab80,
+ 0x0000a75a, 0x0000a75b, 0x00002c72, 0x00002c73,
+ 0x00000244, 0x00000289, 0x00000420, 0x00000440,
+ 0x00002c03, 0x00002c33, 0x00010c98, 0x00010cd8,
+ 0x0000018e, 0x000001dd, 0x00001eec, 0x00001eed,
+ 0x00000410, 0x00000430, 0x00000226, 0x00000227,
+ 0x000013cb, 0x0000ab9b, 0x00002cd4, 0x00002cd5,
+ 0x00010c9d, 0x00010cdd, 0x00000210, 0x00000211,
+ 0x000010a1, 0x00002d01, 0x00000126, 0x00000127,
+ 0x0000ff2c, 0x0000ff4c, 0x00000428, 0x00000448,
+ 0x0001e91b, 0x0001e93d, 0x000010bb, 0x00002d1b,
+ 0x00000170, 0x00000171, 0x00001ef6, 0x00001ef7,
+ 0x00000474, 0x00000475, 0x000013bc, 0x0000ab8c,
+ 0x00010419, 0x00010441, 0x00001ebc, 0x00001ebd,
+ 0x0000a65c, 0x0000a65d, 0x00001e58, 0x00001e59,
+ 0x000118af, 0x000118cf, 0x000004fe, 0x000004ff,
+ 0x00001e72, 0x00001e73, 0x00010c96, 0x00010cd6,
+ 0x00000537, 0x00000567, 0x00001c90, 0x000010d0,
+ 0x00001e5a, 0x00001e5b, 0x00001fe9, 0x00001fe1,
+ 0x00000197, 0x00000268, 0x00001f8b, 0x00001f83,
+ 0x0000016a, 0x0000016b, 0x000001ec, 0x000001ed,
+ 0x00002c8a, 0x00002c8b, 0x00002164, 0x00002174,
+ 0x0000040a, 0x0000045a, 0x000000da, 0x000000fa,
+ 0x0000a796, 0x0000a797, 0x00002c94, 0x00002c95,
+ 0x000013ae, 0x0000ab7e, 0x00001fad, 0x00001fa5,
+ 0x00000160, 0x00000161, 0x0000ff30, 0x0000ff50,
+ 0x000104b5, 0x000104dd, 0x00000549, 0x00000579,
+ 0x00000191, 0x00000192, 0x0000a784, 0x0000a785,
+ 0x00000232, 0x00000233, 0x00002c13, 0x00002c43,
+ 0x0000ff27, 0x0000ff47, 0x0001040c, 0x00010434,
+ 0x0000a724, 0x0000a725, 0x00000386, 0x000003ac,
+ 0x000013e8, 0x0000abb8, 0x000118b6, 0x000118d6,
+ 0x000024b6, 0x000024d0, 0x00001e36, 0x00001e37,
+ 0x0000ff29, 0x0000ff49, 0x000013d6, 0x0000aba6,
+ 0x0000020a, 0x0000020b, 0x000000db, 0x000000fb,
+ 0x00001fdb, 0x00001f77, 0x0000018f, 0x00000259,
+ 0x000001d3, 0x000001d4, 0x000010a3, 0x00002d03,
+ 0x00001e3c, 0x00001e3d, 0x00001fea, 0x00001f7a,
+ 0x000004a2, 0x000004a3, 0x000003a5, 0x000003c5,
+ 0x000024be, 0x000024d8, 0x000004d4, 0x000004d5,
+ 0x000013db, 0x0000abab, 0x000013b2, 0x0000ab82,
+ 0x00010c91, 0x00010cd1, 0x0000a792, 0x0000a793,
+ 0x0000ff34, 0x0000ff54, 0x00002c2b, 0x00002c5b,
+ 0x0001e91f, 0x0001e941, 0x0000011e, 0x0000011f,
+ 0x0000a738, 0x0000a739, 0x0000216e, 0x0000217e,
+ 0x000013a5, 0x0000ab75, 0x00001eee, 0x00001eef,
+ 0x00001e18, 0x00001e19, 0x0000a642, 0x0000a643,
+ 0x00002ca6, 0x00002ca7, 0x0000054a, 0x0000057a,
+ 0x000001de, 0x000001df, 0x000104b1, 0x000104d9,
+ 0x00000214, 0x00000215, 0x000001d5, 0x000001d6,
+ 0x00016e53, 0x00016e73, 0x00001f6b, 0x00001f63,
+ 0x00002c60, 0x00002c61, 0x0000ff31, 0x0000ff51,
+ 0x000010ac, 0x00002d0c, 0x00000224, 0x00000225,
+ 0x0000014c, 0x0000014d, 0x000104d1, 0x000104f9,
+ 0x00010c84, 0x00010cc4, 0x00000198, 0x00000199,
+ 0x00002162, 0x00002172, 0x00001f2f, 0x00001f27,
+ 0x0000049a, 0x0000049b, 0x00000045, 0x00000065,
+ 0x0000050e, 0x0000050f
+};
-static const unsigned short _uccase_len[2] = {1273, 1317};
+static const unsigned _uccase_title_g_size = 35;
+static const short _uccase_title_g[] = {
+ -106, -10, 537, 2066, -30, -87, 280, 735,
+ 1417, 32767, -103, 1741, 1318, 7204, -21, -13,
+ 850, 32, 160, 32767, -44, 406, 784, 13403,
+ -15, -107, 12, 320, 2114, -41, -100, 1643,
+ 1548, 1350, -117
+};
+
+static const unsigned _uccase_title_table_size = 135;
+static const unsigned _uccase_title_table[] = {
+ 0x00001fbc, 0x00001fbc, 0x000010d6, 0x000010d6,
+ 0x00001f83, 0x00001f8b, 0x000010e8, 0x000010e8,
+ 0x00001f80, 0x00001f88, 0x000010e2, 0x000010e2,
+ 0x00001faf, 0x00001faf, 0x00001f81, 0x00001f89,
+ 0x000001f1, 0x000001f2, 0x000010d8, 0x000010d8,
+ 0x000010f5, 0x000010f5, 0x00001fc2, 0x02000177,
+ 0x000010dc, 0x000010dc, 0x0000fb06, 0x0200015c,
+ 0x00001f90, 0x00001f98, 0x0000fb16, 0x0200016b,
+ 0x00001f98, 0x00001f98, 0x000001c8, 0x000001c8,
+ 0x00001f95, 0x00001f9d, 0x00001f94, 0x00001f9c,
+ 0x000001c9, 0x000001c8, 0x0000fb15, 0x02000168,
+ 0x000010ff, 0x000010ff, 0x00001f9e, 0x00001f9e,
+ 0x00001ff2, 0x0200017d, 0x000010d2, 0x000010d2,
+ 0x000010f1, 0x000010f1, 0x000001c5, 0x000001c5,
+ 0x00001fb4, 0x02000174, 0x000010d7, 0x000010d7,
+ 0x0000fb14, 0x02000165, 0x00001ff3, 0x00001ffc,
+ 0x000010e4, 0x000010e4, 0x00001f92, 0x00001f9a,
+ 0x000010d3, 0x000010d3, 0x00001fb7, 0x03000183,
+ 0x000010db, 0x000010db, 0x00001fb3, 0x00001fbc,
+ 0x00001fb2, 0x02000171, 0x000001c6, 0x000001c5,
+ 0x00001faa, 0x00001faa, 0x0000fb13, 0x02000162,
+ 0x00001f9f, 0x00001f9f, 0x000010f3, 0x000010f3,
+ 0x0000fb03, 0x03000151, 0x00001f82, 0x00001f8a,
+ 0x000010f4, 0x000010f4, 0x00001f8b, 0x00001f8b,
+ 0x000010e1, 0x000010e1, 0x00001f8e, 0x00001f8e,
+ 0x000010f0, 0x000010f0, 0x00001fa1, 0x00001fa9,
+ 0x00001f88, 0x00001f88, 0x000010f6, 0x000010f6,
+ 0x000010df, 0x000010df, 0x00001ff7, 0x0300018b,
+ 0x00001ffc, 0x00001ffc, 0x000010f9, 0x000010f9,
+ 0x000001f3, 0x000001f2, 0x00001f89, 0x00001f89,
+ 0x000010fe, 0x000010fe, 0x00001f91, 0x00001f99,
+ 0x00001fc3, 0x00001fcc, 0x00001fcc, 0x00001fcc,
+ 0x00001f86, 0x00001f8e, 0x00001fc4, 0x0200017a,
+ 0x00000587, 0x0200015f, 0x000010f8, 0x000010f8,
+ 0x000010ed, 0x000010ed, 0x00001fab, 0x00001fab,
+ 0x000010e0, 0x000010e0, 0x000010e3, 0x000010e3,
+ 0x000001cc, 0x000001cb, 0x00001fad, 0x00001fad,
+ 0x000010d0, 0x000010d0, 0x00001f8c, 0x00001f8c,
+ 0x00001fa7, 0x00001faf, 0x000010f2, 0x000010f2,
+ 0x00001f99, 0x00001f99, 0x000001c7, 0x000001c8,
+ 0x00001fa2, 0x00001faa, 0x000010e9, 0x000010e9,
+ 0x00001fa5, 0x00001fad, 0x00001fa4, 0x00001fac,
+ 0x000010fd, 0x000010fd, 0x00001fa3, 0x00001fab,
+ 0x000001c4, 0x000001c5, 0x0000fb05, 0x02000159,
+ 0x000010ec, 0x000010ec, 0x00001f9a, 0x00001f9a,
+ 0x00001fae, 0x00001fae, 0x000010dd, 0x000010dd,
+ 0x00001f8a, 0x00001f8a, 0x000010ef, 0x000010ef,
+ 0x00001f87, 0x00001f8f, 0x00001f9b, 0x00001f9b,
+ 0x00001fa8, 0x00001fa8, 0x00001f8f, 0x00001f8f,
+ 0x000000df, 0x02000145, 0x000010d1, 0x000010d1,
+ 0x0000fb04, 0x03000155, 0x000010e7, 0x000010e7,
+ 0x000010d5, 0x000010d5, 0x0000fb02, 0x0200014e,
+ 0x00001f97, 0x00001f9f, 0x000010f7, 0x000010f7,
+ 0x0000fb01, 0x0200014b, 0x0000fb00, 0x02000148,
+ 0x00001f9c, 0x00001f9c, 0x00001f8d, 0x00001f8d,
+ 0x000010fa, 0x000010fa, 0x00001f96, 0x00001f9e,
+ 0x000001ca, 0x000001cb, 0x000010e6, 0x000010e6,
+ 0x00001f9d, 0x00001f9d, 0x000010ee, 0x000010ee,
+ 0x000010ea, 0x000010ea, 0x0000fb17, 0x0200016e,
+ 0x00001fa6, 0x00001fae, 0x000010de, 0x000010de,
+ 0x00001f85, 0x00001f8d, 0x00001fa0, 0x00001fa8,
+ 0x000010eb, 0x000010eb, 0x00001f84, 0x00001f8c,
+ 0x000010da, 0x000010da, 0x00001fa9, 0x00001fa9,
+ 0x000010d4, 0x000010d4, 0x00001fac, 0x00001fac,
+ 0x00001fc7, 0x03000187, 0x000010d9, 0x000010d9,
+ 0x00001ff4, 0x02000180, 0x000001cb, 0x000001cb,
+ 0x000001f2, 0x000001f2, 0x000010e5, 0x000010e5,
+ 0x00001f93, 0x00001f9b
+};
+
+static const unsigned _uccase_fold_g_size = 272;
+static const short _uccase_fold_g[] = {
+ 5, 935, 2, -1389, 333, 697, 1, 37,
+ 32767, 4350, 16, 73, 776, -581, -820, 15914,
+ 395, 2544, 2279, 193, 5, 1241, 170, 4107,
+ 16, 4010, 589, 1862, 5283, 5219, 5, 72,
+ 194, 2028, 2, 8007, 293, 32767, 1454, 190,
+ 166, 2400, 201, 1652, 37, 3315, 3553, 8210,
+ 34, 426, 1805, 32767, 1580, 422, 543, 4945,
+ -405, 32767, 129, 3092, 259, 193, 48, 7089,
+ 9, 937, 3517, 163, 517, 306, -428, 32767,
+ 7, 2061, 2, 4457, 2535, 693, 12, 1605,
+ -966, 243, 35, 1749, 424, -1422, 4, 967,
+ 178, 32767, 538, 1098, 67, 1623, 32767, 1304,
+ 16, 7261, 2068, -769, 831, 385, 1, 1165,
+ 113, 324, 52, 2846, 538, 154, 2, 5621,
+ 781, 360, 6268, 20557, 7, 4466, 26246, 438,
+ 478, 1029, 53, 5769, 2321, 313, 2, 1687,
+ 180, 1661, 8, 1241, -1276, 5430, 1, 772,
+ 8, 32767, 1072, 1248, 489, 5116, -163, -1362,
+ 1574, 762, 692, 11591, 23, 1869, 1007, -796,
+ 2829, 630, 36, 913, -489, 32767, 2, 898,
+ 274, 792, 4164, 57, 57, 794, 7131, 612,
+ 328, 636, 886, -1319, 55, 1022, 3, -1194,
+ 5351, 201, 90, 589, 32767, 1186, 16, 2432,
+ 1294, -220, 1531, 5978, 5, 3540, 126, 43,
+ 508, 980, 32767, 1797, 3, 17682, 787, -315,
+ 6813, 20635, 10, 8475, 3011, 109, 295, 5917,
+ 614, 8830, 8, 542, 589, 921, 554, 1967,
+ 4, 37, -1057, 15388, 3, 3, 17, 32767,
+ 8479, 632, 276, 6344, 1125, -1350, 16, 3063,
+ 4683, 1305, 115, 2520, 187, 32767, 1665, 617,
+ 760, 2298, -784, 32767, 8, 1978, 1826, 2630,
+ 495, 691, 273, 69, 9638, 53, 48, 2209,
+ 10918, -1282, 1, 118, 140, -1032, 397, 1235,
+ 1, 1558, 32767, 176, 17, 866, 315, 3650
+};
+
+static const unsigned _uccase_fold_table_size = 1480;
+static const unsigned _uccase_fold_table[] = {
+ 0x000004a8, 0x000004a9, 0x00001fe2, 0x0300028c,
+ 0x0000ff2b, 0x0000ff4b, 0x00001e32, 0x00001e33,
+ 0x000004dc, 0x000004dd, 0x0000aba0, 0x000013d0,
+ 0x00010422, 0x0001044a, 0x0001e913, 0x0001e935,
+ 0x00000538, 0x00000568, 0x00016e46, 0x00016e66,
+ 0x000000c0, 0x000000e0, 0x00016e48, 0x00016e68,
+ 0x0000042c, 0x0000044c, 0x00001e9e, 0x020001b5,
+ 0x00000172, 0x00000173, 0x00001ed2, 0x00001ed3,
+ 0x0000abaa, 0x000013da, 0x00001e82, 0x00001e83,
+ 0x000010ab, 0x00002d0b, 0x0000aba5, 0x000013d5,
+ 0x00002cd6, 0x00002cd7, 0x00002ceb, 0x00002cec,
+ 0x00001fd7, 0x03000288, 0x0000a784, 0x0000a785,
+ 0x000003d8, 0x000003d9, 0x0000a74c, 0x0000a74d,
+ 0x000118bc, 0x000118dc, 0x000024c3, 0x000024dd,
+ 0x00002c26, 0x00002c56, 0x000118b1, 0x000118d1,
+ 0x00001f3e, 0x00001f36, 0x00010c8c, 0x00010ccc,
+ 0x0001e908, 0x0001e92a, 0x00000345, 0x000003b9,
+ 0x000004d2, 0x000004d3, 0x000024bc, 0x000024d6,
+ 0x0000021c, 0x0000021d, 0x000003d1, 0x000003b8,
+ 0x00000510, 0x00000511, 0x0001041f, 0x00010447,
+ 0x0000abbd, 0x000013ed, 0x000003f5, 0x000003b5,
+ 0x00000422, 0x00000442, 0x00001fb4, 0x0200025d,
+ 0x0000016c, 0x0000016d, 0x0001040c, 0x00010434,
+ 0x0000a722, 0x0000a723, 0x000004b4, 0x000004b5,
+ 0x000001c8, 0x000001c9, 0x000104c4, 0x000104ec,
+ 0x00000372, 0x00000373, 0x0000a724, 0x0000a725,
+ 0x00001fb8, 0x00001fb0, 0x0000a780, 0x0000a781,
+ 0x000010b1, 0x00002d11, 0x00010c89, 0x00010cc9,
+ 0x00000118, 0x00000119, 0x00000197, 0x00000268,
+ 0x000004e0, 0x000004e1, 0x00001cb1, 0x000010f1,
+ 0x00001f08, 0x00001f00, 0x00001fe4, 0x02000294,
+ 0x00000196, 0x00000269, 0x0000216b, 0x0000217b,
+ 0x000004da, 0x000004db, 0x000118a4, 0x000118c4,
+ 0x00000212, 0x00000213, 0x0000ff27, 0x0000ff47,
+ 0x00001e58, 0x00001e59, 0x0000a7b4, 0x0000a7b5,
+ 0x00000543, 0x00000573, 0x0000a78b, 0x0000a78c,
+ 0x0000042a, 0x0000044a, 0x00001fa4, 0x02000233,
+ 0x00000162, 0x00000163, 0x00000419, 0x00000439,
+ 0x0000a736, 0x0000a737, 0x00001e84, 0x00001e85,
+ 0x00001e70, 0x00001e71, 0x00001e3e, 0x00001e3f,
+ 0x0000053d, 0x0000056d, 0x000010c1, 0x00002d21,
+ 0x00001fb6, 0x02000260, 0x000003dc, 0x000003dd,
+ 0x0000a686, 0x0000a687, 0x0000042e, 0x0000044e,
+ 0x000003a6, 0x000003c6, 0x00001eee, 0x00001eef,
+ 0x000104b0, 0x000104d8, 0x0000a664, 0x0000a665,
+ 0x00010c8f, 0x00010ccf, 0x00001fec, 0x00001fe5,
+ 0x00000149, 0x02000195, 0x00000389, 0x000003ae,
+ 0x00001e12, 0x00001e13, 0x00001f9e, 0x02000221,
+ 0x0000021a, 0x0000021b, 0x0000ab82, 0x000013b2,
+ 0x00001e56, 0x00001e57, 0x00001f3c, 0x00001f34,
+ 0x0000a73e, 0x0000a73f, 0x000000cd, 0x000000ed,
+ 0x00001fe7, 0x0300029a, 0x0000a796, 0x0000a797,
+ 0x0000016a, 0x0000016b, 0x0000ff33, 0x0000ff53,
+ 0x0000aba6, 0x000013d6, 0x00001e8c, 0x00001e8d,
+ 0x00010c9c, 0x00010cdc, 0x0000021e, 0x0000021f,
+ 0x00001cb2, 0x000010f2, 0x00001ec6, 0x00001ec7,
+ 0x0000ab8d, 0x000013bd, 0x0001e917, 0x0001e939,
+ 0x0000a758, 0x0000a759, 0x0000011c, 0x0000011d,
+ 0x00000470, 0x00000471, 0x0000016e, 0x0000016f,
+ 0x00010c85, 0x00010cc5, 0x00001e16, 0x00001e17,
+ 0x00000542, 0x00000572, 0x00001e60, 0x00001e61,
+ 0x0000019f, 0x00000275, 0x00001c83, 0x00000441,
+ 0x00000520, 0x00000521, 0x00016e5f, 0x00016e7f,
+ 0x000104d1, 0x000104f9, 0x00001eb4, 0x00001eb5,
+ 0x00010c99, 0x00010cd9, 0x00001f2c, 0x00001f24,
+ 0x000024cf, 0x000024e9, 0x00000055, 0x00000075,
+ 0x00000476, 0x00000477, 0x00001e78, 0x00001e79,
+ 0x000010b0, 0x00002d10, 0x00002c1f, 0x00002c4f,
+ 0x00000498, 0x00000499, 0x00002cd0, 0x00002cd1,
+ 0x000010bd, 0x00002d1d, 0x0000fb04, 0x030002be,
+ 0x00002cde, 0x00002cdf, 0x0001e910, 0x0001e932,
+ 0x00001ed6, 0x00001ed7, 0x000000cf, 0x000000ef,
+ 0x00001f4d, 0x00001f45, 0x0000a762, 0x0000a763,
+ 0x00000418, 0x00000438, 0x000104b9, 0x000104e1,
+ 0x00002c2e, 0x00002c5e, 0x00001fd8, 0x00001fd0,
+ 0x00000549, 0x00000579, 0x0000017f, 0x00000073,
+ 0x00001ca3, 0x000010e3, 0x0000fb13, 0x020002c8,
+ 0x0000a786, 0x0000a787, 0x0000216c, 0x0000217c,
+ 0x00002126, 0x000003c9, 0x000104c1, 0x000104e9,
+ 0x00010caf, 0x00010cef, 0x00001ed4, 0x00001ed5,
+ 0x000118a0, 0x000118c0, 0x000004cb, 0x000004cc,
+ 0x00002c0f, 0x00002c3f, 0x00016e5b, 0x00016e7b,
+ 0x00001fa7, 0x0200023c, 0x000104b5, 0x000104dd,
+ 0x000004ae, 0x000004af, 0x00010ca5, 0x00010ce5,
+ 0x00001f6a, 0x00001f62, 0x0000abb3, 0x000013e3,
+ 0x0000ab78, 0x000013a8, 0x000104be, 0x000104e6,
+ 0x00001fc6, 0x02000273, 0x00016e5c, 0x00016e7c,
+ 0x000003fe, 0x0000037c, 0x000004a4, 0x000004a5,
+ 0x00001eba, 0x00001ebb, 0x000010c2, 0x00002d22,
+ 0x000003f7, 0x000003f8, 0x00000051, 0x00000071,
+ 0x00000056, 0x00000076, 0x00001f54, 0x030001bf,
+ 0x00000398, 0x000003b8, 0x00001f0f, 0x00001f07,
+ 0x00001e0a, 0x00001e0b, 0x000024c2, 0x000024dc,
+ 0x0000023b, 0x0000023c, 0x0000ab88, 0x000013b8,
+ 0x00001e66, 0x00001e67, 0x00016e50, 0x00016e70,
+ 0x000001d3, 0x000001d4, 0x000004c0, 0x000004cf,
+ 0x00001feb, 0x00001f7b, 0x0000053e, 0x0000056e,
+ 0x00001f98, 0x0200020f, 0x0000abb1, 0x000013e1,
+ 0x00001f3d, 0x00001f35, 0x00000524, 0x00000525,
+ 0x000001ee, 0x000001ef, 0x00000410, 0x00000430,
+ 0x00001caa, 0x000010ea, 0x0000a680, 0x0000a681,
+ 0x00001ff9, 0x00001f79, 0x0000ab83, 0x000013b3,
+ 0x00001f6d, 0x00001f65, 0x0000a7ae, 0x0000026a,
+ 0x00001e8e, 0x00001e8f, 0x000001e4, 0x000001e5,
+ 0x0001e91c, 0x0001e93e, 0x00001f56, 0x030001c3,
+ 0x00001f49, 0x00001f41, 0x0000ff38, 0x0000ff58,
+ 0x000010a7, 0x00002d07, 0x00000504, 0x00000505,
+ 0x000000d8, 0x000000f8, 0x000118bf, 0x000118df,
+ 0x00000502, 0x00000503, 0x00002c6e, 0x00000271,
+ 0x00010c9f, 0x00010cdf, 0x00002c75, 0x00002c76,
+ 0x00016e5a, 0x00016e7a, 0x00002c0d, 0x00002c3d,
+ 0x00000206, 0x00000207, 0x000000dd, 0x000000fd,
+ 0x000004c1, 0x000004c2, 0x00001f9b, 0x02000218,
+ 0x0000049e, 0x0000049f, 0x00010ca0, 0x00010ce0,
+ 0x00001e90, 0x00001e91, 0x000003a4, 0x000003c4,
+ 0x00010c98, 0x00010cd8, 0x00010cae, 0x00010cee,
+ 0x00001f81, 0x020001ca, 0x0000a744, 0x0000a745,
+ 0x00001f83, 0x020001d0, 0x0000a768, 0x0000a769,
+ 0x000024c6, 0x000024e0, 0x000010c4, 0x00002d24,
+ 0x00001f96, 0x02000209, 0x000001db, 0x000001dc,
+ 0x00001fd9, 0x00001fd1, 0x00001ff2, 0x0200029e,
+ 0x000024cb, 0x000024e5, 0x0001040e, 0x00010436,
+ 0x000004ee, 0x000004ef, 0x00000104, 0x00000105,
+ 0x000104cb, 0x000104f3, 0x00000112, 0x00000113,
+ 0x00000550, 0x00000580, 0x00000116, 0x00000117,
+ 0x00000490, 0x00000491, 0x00001f92, 0x020001fd,
+ 0x0000a650, 0x0000a651, 0x00000194, 0x00000263,
+ 0x00001e36, 0x00001e37, 0x000104c0, 0x000104e8,
+ 0x0000aba8, 0x000013d8, 0x00001e92, 0x00001e93,
+ 0x000001de, 0x000001df, 0x00000545, 0x00000575,
+ 0x0000038e, 0x000003cd, 0x000004de, 0x000004df,
+ 0x00001f69, 0x00001f61, 0x00002c6f, 0x00000250,
+ 0x000003f0, 0x000003ba, 0x0000048e, 0x0000048f,
+ 0x00001eb6, 0x00001eb7, 0x00000053, 0x00000073,
+ 0x0000004d, 0x0000006d, 0x00002163, 0x00002173,
+ 0x00001f2a, 0x00001f22, 0x0000a658, 0x0000a659,
+ 0x0000a652, 0x0000a653, 0x00000041, 0x00000061,
+ 0x00001e06, 0x00001e07, 0x000024c8, 0x000024e2,
+ 0x0000022e, 0x0000022f, 0x0000017d, 0x0000017e,
+ 0x00000552, 0x00000582, 0x00000402, 0x00000452,
+ 0x00000400, 0x00000450, 0x00001c82, 0x0000043e,
+ 0x00010cb1, 0x00010cf1, 0x0000a68c, 0x0000a68d,
+ 0x00000427, 0x00000447, 0x000104c9, 0x000104f1,
+ 0x0000ab73, 0x000013a3, 0x0000ab9b, 0x000013cb,
+ 0x000004b0, 0x000004b1, 0x0000fb01, 0x020002b4,
+ 0x00001ca6, 0x000010e6, 0x0000fb16, 0x020002d1,
+ 0x000000ce, 0x000000ee, 0x0001e915, 0x0001e937,
+ 0x0000aba9, 0x000013d9, 0x00002cb0, 0x00002cb1,
+ 0x00000130, 0x02000192, 0x000104d3, 0x000104fb,
+ 0x00001ffb, 0x00001f7d, 0x000001fc, 0x000001fd,
+ 0x0000a766, 0x0000a767, 0x0000ff34, 0x0000ff54,
+ 0x000010b6, 0x00002d16, 0x00002c00, 0x00002c30,
+ 0x00000049, 0x00000069, 0x00010423, 0x0001044b,
+ 0x00001f4b, 0x00001f43, 0x0000014c, 0x0000014d,
+ 0x00001e6e, 0x00001e6f, 0x00001c93, 0x000010d3,
+ 0x000024b7, 0x000024d1, 0x0001e91e, 0x0001e940,
+ 0x00000492, 0x00000493, 0x00000512, 0x00000513,
+ 0x00001e9b, 0x00001e61, 0x00016e54, 0x00016e74,
+ 0x000118af, 0x000118cf, 0x0000047e, 0x0000047f,
+ 0x000104c6, 0x000104ee, 0x00010c95, 0x00010cd5,
+ 0x00001c95, 0x000010d5, 0x00000462, 0x00000463,
+ 0x000118a8, 0x000118c8, 0x00010409, 0x00010431,
+ 0x00001f8d, 0x020001ee, 0x00002cb6, 0x00002cb7,
+ 0x00000132, 0x00000133, 0x000010be, 0x00002d1e,
+ 0x00001f91, 0x020001fa, 0x000001fe, 0x000001ff,
+ 0x00000059, 0x00000079, 0x00001ff8, 0x00001f78,
+ 0x00002c27, 0x00002c57, 0x00002c06, 0x00002c36,
+ 0x000024bf, 0x000024d9, 0x0000a7b8, 0x0000a7b9,
+ 0x0000015e, 0x0000015f, 0x0000014e, 0x0000014f,
+ 0x000010c5, 0x00002d25, 0x00001f48, 0x00001f40,
+ 0x00001e02, 0x00001e03, 0x000118b2, 0x000118d2,
+ 0x00001fd6, 0x02000285, 0x0000052c, 0x0000052d,
+ 0x0000020e, 0x0000020f, 0x0000216e, 0x0000217e,
+ 0x0000abae, 0x000013de, 0x00001e98, 0x020001ac,
+ 0x000010a6, 0x00002d06, 0x0000fb14, 0x020002cb,
+ 0x00000425, 0x00000445, 0x000003ff, 0x0000037d,
+ 0x00001fe9, 0x00001fe1, 0x000001a2, 0x000001a3,
+ 0x000118be, 0x000118de, 0x000004e4, 0x000004e5,
+ 0x00001cad, 0x000010ed, 0x0000040b, 0x0000045b,
+ 0x000104c7, 0x000104ef, 0x0000a660, 0x0000a661,
+ 0x0000013d, 0x0000013e, 0x000010a0, 0x00002d00,
+ 0x000010bf, 0x00002d1f, 0x00001fc3, 0x0200026d,
+ 0x000004e8, 0x000004e9, 0x00010425, 0x0001044d,
+ 0x000010a5, 0x00002d05, 0x00002c2d, 0x00002c5d,
+ 0x00010c9b, 0x00010cdb, 0x00000042, 0x00000062,
+ 0x00002c03, 0x00002c33, 0x00001c88, 0x0000a64b,
+ 0x00010c88, 0x00010cc8, 0x00000514, 0x00000515,
+ 0x000001d9, 0x000001da, 0x00000421, 0x00000441,
+ 0x00002c80, 0x00002c81, 0x00001eae, 0x00001eaf,
+ 0x00010ca6, 0x00010ce6, 0x000001b5, 0x000001b6,
+ 0x00000388, 0x000003ad, 0x00000464, 0x00000465,
+ 0x000000d5, 0x000000f5, 0x0000013f, 0x00000140,
+ 0x00010c80, 0x00010cc0, 0x00016e42, 0x00016e62,
+ 0x00001ca0, 0x000010e0, 0x00000224, 0x00000225,
+ 0x00000409, 0x00000459, 0x0000a666, 0x0000a667,
+ 0x00002ce0, 0x00002ce1, 0x0000a65e, 0x0000a65f,
+ 0x00010cac, 0x00010cec, 0x00000424, 0x00000444,
+ 0x000004e6, 0x000004e7, 0x00000174, 0x00000175,
+ 0x00000228, 0x00000229, 0x00001c94, 0x000010d4,
+ 0x00010cab, 0x00010ceb, 0x0000053f, 0x0000056f,
+ 0x0001e914, 0x0001e936, 0x00001c9a, 0x000010da,
+ 0x0000a648, 0x0000a649, 0x0000051c, 0x0000051d,
+ 0x00000178, 0x000000ff, 0x00016e59, 0x00016e79,
+ 0x00002c82, 0x00002c83, 0x00000556, 0x00000586,
+ 0x00001f68, 0x00001f60, 0x00000553, 0x00000583,
+ 0x00000386, 0x000003ac, 0x0000046c, 0x0000046d,
+ 0x000000c8, 0x000000e8, 0x000001a4, 0x000001a5,
+ 0x00000395, 0x000003b5, 0x00001ee0, 0x00001ee1,
+ 0x000010a9, 0x00002d09, 0x000104cd, 0x000104f5,
+ 0x00000170, 0x00000171, 0x000024c1, 0x000024db,
+ 0x0000a73a, 0x0000a73b, 0x0000a690, 0x0000a691,
+ 0x00000506, 0x00000507, 0x00001e30, 0x00001e31,
+ 0x00001e08, 0x00001e09, 0x00000164, 0x00000165,
+ 0x00000226, 0x00000227, 0x00002c60, 0x00002c61,
+ 0x00016e53, 0x00016e73, 0x00000044, 0x00000064,
+ 0x0000004f, 0x0000006f, 0x000001cb, 0x000001cc,
+ 0x00001fd2, 0x0300027d, 0x0000050c, 0x0000050d,
+ 0x00000176, 0x00000177, 0x000118ad, 0x000118cd,
+ 0x0000a78d, 0x00000265, 0x00001fdb, 0x00001f77,
+ 0x00001fc8, 0x00001f72, 0x0000abab, 0x000013db,
+ 0x00001ca8, 0x000010e8, 0x000104c5, 0x000104ed,
+ 0x000000c6, 0x000000e6, 0x000001ac, 0x000001ad,
+ 0x00001f59, 0x00001f51, 0x00002cb8, 0x00002cb9,
+ 0x000004b6, 0x000004b7, 0x00001fa0, 0x02000227,
+ 0x000010b2, 0x00002d12, 0x00000230, 0x00000231,
+ 0x00000045, 0x00000065, 0x00002c9c, 0x00002c9d,
+ 0x00002ca4, 0x00002ca5, 0x00002c08, 0x00002c38,
+ 0x000004e2, 0x000004e3, 0x00001ef0, 0x00001ef1,
+ 0x00002c6d, 0x00000251, 0x0000050a, 0x0000050b,
+ 0x00010c97, 0x00010cd7, 0x0000004c, 0x0000006c,
+ 0x000010cd, 0x00002d2d, 0x00001f0d, 0x00001f05,
+ 0x00000460, 0x00000461, 0x00001e40, 0x00001e41,
+ 0x000024cd, 0x000024e7, 0x0000024c, 0x0000024d,
+ 0x0001e921, 0x0001e943, 0x00001f9a, 0x02000215,
+ 0x000010ae, 0x00002d0e, 0x000104ca, 0x000104f2,
+ 0x000003b0, 0x0300019f, 0x0000abb6, 0x000013e6,
+ 0x0000054a, 0x0000057a, 0x00010ca2, 0x00010ce2,
+ 0x0000ab8b, 0x000013bb, 0x00001ee2, 0x00001ee3,
+ 0x00001e96, 0x020001a6, 0x00001fa6, 0x02000239,
+ 0x00001ca9, 0x000010e9, 0x00001f87, 0x020001dc,
+ 0x0000049a, 0x0000049b, 0x00002c9e, 0x00002c9f,
+ 0x00001e00, 0x00001e01, 0x0000053c, 0x0000056c,
+ 0x000004f6, 0x000004f7, 0x00001ef6, 0x00001ef7,
+ 0x00000222, 0x00000223, 0x0000a7a2, 0x0000a7a3,
+ 0x000003ea, 0x000003eb, 0x00016e55, 0x00016e75,
+ 0x00000208, 0x00000209, 0x00001edc, 0x00001edd,
+ 0x0000a68a, 0x0000a68b, 0x00001e46, 0x00001e47,
+ 0x000001a0, 0x000001a1, 0x00000150, 0x00000151,
+ 0x00002c9a, 0x00002c9b, 0x000004f0, 0x000004f1,
+ 0x00001f6e, 0x00001f66, 0x000118a9, 0x000118c9,
+ 0x00000396, 0x000003b6, 0x0000a692, 0x0000a693,
+ 0x000000c2, 0x000000e2, 0x0000a642, 0x0000a643,
+ 0x000024bb, 0x000024d5, 0x00010ca4, 0x00010ce4,
+ 0x0000ab95, 0x000013c5, 0x0000ff24, 0x0000ff44,
+ 0x000004c5, 0x000004c6, 0x0000a668, 0x0000a669,
+ 0x000004aa, 0x000004ab, 0x00000532, 0x00000562,
+ 0x00002c0b, 0x00002c3b, 0x0000a65c, 0x0000a65d,
+ 0x00001e0e, 0x00001e0f, 0x0000ab85, 0x000013b5,
+ 0x0000ff28, 0x0000ff48, 0x00002c19, 0x00002c49,
+ 0x00010c96, 0x00010cd6, 0x00001f1d, 0x00001f15,
+ 0x0000012a, 0x0000012b, 0x00001ede, 0x00001edf,
+ 0x00002c98, 0x00002c99, 0x0000041a, 0x0000043a,
+ 0x00000186, 0x00000254, 0x000024ce, 0x000024e8,
+ 0x00002c28, 0x00002c58, 0x0000050e, 0x0000050f,
+ 0x00001ec8, 0x00001ec9, 0x00010c8b, 0x00010ccb,
+ 0x00001cae, 0x000010ee, 0x0000ab90, 0x000013c0,
+ 0x000000d6, 0x000000f6, 0x00000114, 0x00000115,
+ 0x0000041d, 0x0000043d, 0x00010c86, 0x00010cc6,
+ 0x00001ec0, 0x00001ec1, 0x0001e904, 0x0001e926,
+ 0x00000544, 0x00000574, 0x0000a73c, 0x0000a73d,
+ 0x0000fb03, 0x030002ba, 0x0000ff29, 0x0000ff49,
+ 0x000001ea, 0x000001eb, 0x0000039f, 0x000003bf,
+ 0x0000a7aa, 0x00000266, 0x000000d0, 0x000000f0,
+ 0x0000ff26, 0x0000ff46, 0x000118a7, 0x000118c7,
+ 0x0000a760, 0x0000a761, 0x0000a698, 0x0000a699,
+ 0x00010421, 0x00010449, 0x00001cb6, 0x000010f6,
+ 0x00000401, 0x00000451, 0x00000522, 0x00000523,
+ 0x000003e0, 0x000003e1, 0x00002160, 0x00002170,
+ 0x0001040f, 0x00010437, 0x00001cb9, 0x000010f9,
+ 0x0000004e, 0x0000006e, 0x00001f85, 0x020001d6,
+ 0x0000a64a, 0x0000a64b, 0x00000472, 0x00000473,
+ 0x00000546, 0x00000576, 0x00000551, 0x00000581,
+ 0x00016e4d, 0x00016e6d, 0x00001f8b, 0x020001e8,
+ 0x00001ec2, 0x00001ec3, 0x00001e8a, 0x00001e8b,
+ 0x0000a7b2, 0x0000029d, 0x000003c2, 0x000003c3,
+ 0x00000496, 0x00000497, 0x00002c23, 0x00002c53,
+ 0x00002c13, 0x00002c43, 0x0001e912, 0x0001e934,
+ 0x0000a79a, 0x0000a79b, 0x00002cae, 0x00002caf,
+ 0x00002c67, 0x00002c68, 0x000003a8, 0x000003c8,
+ 0x000003e6, 0x000003e7, 0x00001f50, 0x020001b8,
+ 0x000013f9, 0x000013f1, 0x00016e56, 0x00016e76,
+ 0x000004f8, 0x000004f9, 0x00001fa1, 0x0200022a,
+ 0x00000122, 0x00000123, 0x0001e91b, 0x0001e93d,
+ 0x00000124, 0x00000125, 0x00001ea0, 0x00001ea1,
+ 0x00002c72, 0x00002c73, 0x00010c91, 0x00010cd1,
+ 0x00001e76, 0x00001e77, 0x00001f82, 0x020001cd,
+ 0x00000189, 0x00000256, 0x000001b2, 0x0000028b,
+ 0x0000fb06, 0x020002c5, 0x00010c90, 0x00010cd0,
+ 0x00001c99, 0x000010d9, 0x00001fa8, 0x0200023f,
+ 0x00000191, 0x00000192, 0x0000ab98, 0x000013c8,
+ 0x00001e72, 0x00001e73, 0x00000102, 0x00000103,
+ 0x00001e99, 0x020001af, 0x00001f93, 0x02000200,
+ 0x000004fe, 0x000004ff, 0x00001ef8, 0x00001ef9,
+ 0x0000ff22, 0x0000ff42, 0x00001e22, 0x00001e23,
+ 0x000003d5, 0x000003c6, 0x00000052, 0x00000072,
+ 0x00000126, 0x00000127, 0x00001c90, 0x000010d0,
+ 0x0000ab76, 0x000013a6, 0x00001e48, 0x00001e49,
+ 0x00001fe3, 0x03000290, 0x00001e04, 0x00001e05,
+ 0x00002c2c, 0x00002c5c, 0x000003a7, 0x000003c7,
+ 0x00016e4e, 0x00016e6e, 0x00016e5d, 0x00016e7d,
+ 0x0000039e, 0x000003be, 0x0000a764, 0x0000a765,
+ 0x0000a696, 0x0000a697, 0x00002c62, 0x0000026b,
+ 0x00002132, 0x0000214e, 0x00002ccc, 0x00002ccd,
+ 0x0000042f, 0x0000044f, 0x00001c81, 0x00000434,
+ 0x00001fb3, 0x0200025a, 0x00010411, 0x00010439,
+ 0x0000a646, 0x0000a647, 0x00001ca4, 0x000010e4,
+ 0x000001c5, 0x000001c6, 0x00002c1c, 0x00002c4c,
+ 0x0000017b, 0x0000017c, 0x00001e3a, 0x00001e3b,
+ 0x0000023e, 0x00002c66, 0x00002c70, 0x00000252,
+ 0x0000a7b6, 0x0000a7b7, 0x00001f2e, 0x00001f26,
+ 0x000104c8, 0x000104f0, 0x00010420, 0x00010448,
+ 0x000000cb, 0x000000eb, 0x00000528, 0x00000529,
+ 0x0000018e, 0x000001dd, 0x0001e902, 0x0001e924,
+ 0x000104ba, 0x000104e2, 0x00002c94, 0x00002c95,
+ 0x00001f8a, 0x020001e5, 0x00000243, 0x00000180,
+ 0x000104ce, 0x000104f6, 0x00000478, 0x00000479,
+ 0x000000de, 0x000000fe, 0x000118b3, 0x000118d3,
+ 0x0000fb02, 0x020002b7, 0x0000216f, 0x0000217f,
+ 0x00001eda, 0x00001edb, 0x00010cb2, 0x00010cf2,
+ 0x00002cc0, 0x00002cc1, 0x0000ff36, 0x0000ff56,
+ 0x0000a756, 0x0000a757, 0x000024c4, 0x000024de,
+ 0x000001d7, 0x000001d8, 0x00001ea2, 0x00001ea3,
+ 0x00001e2a, 0x00001e2b, 0x000003a3, 0x000003c3,
+ 0x00002c10, 0x00002c40, 0x000104bd, 0x000104e5,
+ 0x0000a782, 0x0000a783, 0x000104c2, 0x000104ea,
+ 0x00002ca6, 0x00002ca7, 0x00001f90, 0x020001f7,
+ 0x00001f80, 0x020001c7, 0x0000053a, 0x0000056a,
+ 0x00001f88, 0x020001df, 0x0001040d, 0x00010435,
+ 0x0001e918, 0x0001e93a, 0x0000a742, 0x0000a743,
+ 0x00000190, 0x0000025b, 0x0000054b, 0x0000057b,
+ 0x00002165, 0x00002175, 0x0000a72c, 0x0000a72d,
+ 0x00001ed8, 0x00001ed9, 0x000001b8, 0x000001b9,
+ 0x00000415, 0x00000435, 0x00002cca, 0x00002ccb,
+ 0x00001e68, 0x00001e69, 0x000010ad, 0x00002d0d,
+ 0x0000041e, 0x0000043e, 0x000003da, 0x000003db,
+ 0x0000fb00, 0x020002b1, 0x00000108, 0x00000109,
+ 0x0000a68e, 0x0000a68f, 0x00002c1a, 0x00002c4a,
+ 0x00001e1a, 0x00001e1b, 0x00001c9b, 0x000010db,
+ 0x000013fb, 0x000013f3, 0x00002c11, 0x00002c41,
+ 0x00000143, 0x00000144, 0x00000058, 0x00000078,
+ 0x000024b6, 0x000024d0, 0x0000ab8e, 0x000013be,
+ 0x00002c25, 0x00002c55, 0x00000391, 0x000003b1,
+ 0x000001a9, 0x00000283, 0x0000a694, 0x0000a695,
+ 0x00000120, 0x00000121, 0x0000ab81, 0x000013b1,
+ 0x00010c93, 0x00010cd3, 0x0000a7ad, 0x0000026c,
+ 0x000010c7, 0x00002d27, 0x0000abb4, 0x000013e4,
+ 0x00000548, 0x00000578, 0x00002cac, 0x00002cad,
+ 0x00010424, 0x0001044c, 0x00002cd4, 0x00002cd5,
+ 0x0000041c, 0x0000043c, 0x00001ff4, 0x020002a4,
+ 0x00000047, 0x00000067, 0x0000a75a, 0x0000a75b,
+ 0x0000ff31, 0x0000ff51, 0x0000011a, 0x0000011b,
+ 0x000024b8, 0x000024d2, 0x00002c24, 0x00002c54,
+ 0x00000541, 0x00000571, 0x000013fd, 0x000013f5,
+ 0x000118a1, 0x000118c1, 0x00001f5f, 0x00001f57,
+ 0x000003e8, 0x000003e9, 0x000104b2, 0x000104da,
+ 0x000003cf, 0x000003d7, 0x00002c17, 0x00002c47,
+ 0x00001c80, 0x00000432, 0x000013f8, 0x000013f0,
+ 0x00001e26, 0x00001e27, 0x000000d1, 0x000000f1,
+ 0x000003e2, 0x000003e3, 0x000118b5, 0x000118d5,
+ 0x0001e90a, 0x0001e92c, 0x0000abbb, 0x000013eb,
+ 0x0000020c, 0x0000020d, 0x0000a72a, 0x0000a72b,
+ 0x000001f6, 0x00000195, 0x00010c9a, 0x00010cda,
+ 0x00001f19, 0x00001f11, 0x00002cd2, 0x00002cd3,
+ 0x00000468, 0x00000469, 0x00002c8c, 0x00002c8d,
+ 0x00002c09, 0x00002c39, 0x0000a76e, 0x0000a76f,
+ 0x0000ab94, 0x000013c4, 0x00000200, 0x00000201,
+ 0x00001fc9, 0x00001f73, 0x00002c22, 0x00002c52,
+ 0x00001faf, 0x02000254, 0x00002c7f, 0x00000240,
+ 0x00001fe6, 0x02000297, 0x00010419, 0x00010441,
+ 0x0000a69a, 0x0000a69b, 0x000004d0, 0x000004d1,
+ 0x00000128, 0x00000129, 0x00001f97, 0x0200020c,
+ 0x00000158, 0x00000159, 0x00001ff3, 0x020002a1,
+ 0x000001d1, 0x000001d2, 0x00000533, 0x00000563,
+ 0x00002c8e, 0x00002c8f, 0x00000420, 0x00000440,
+ 0x00001f1c, 0x00001f14, 0x00016e58, 0x00016e78,
+ 0x000104b8, 0x000104e0, 0x0000a734, 0x0000a735,
+ 0x00001e86, 0x00001e87, 0x000118a5, 0x000118c5,
+ 0x0000ab77, 0x000013a7, 0x00000370, 0x00000371,
+ 0x00001e6c, 0x00001e6d, 0x00001fbc, 0x02000267,
+ 0x00010408, 0x00010430, 0x0000a684, 0x0000a685,
+ 0x00001f89, 0x020001e2, 0x00000179, 0x0000017a,
+ 0x00010401, 0x00010429, 0x00010c82, 0x00010cc2,
+ 0x00016e57, 0x00016e77, 0x00001f0c, 0x00001f04,
+ 0x000118a6, 0x000118c6, 0x00001fb7, 0x03000263,
+ 0x00010403, 0x0001042b, 0x000004d6, 0x000004d7,
+ 0x000010c3, 0x00002d23, 0x00000210, 0x00000211,
+ 0x00002cdc, 0x00002cdd, 0x00001e5c, 0x00001e5d,
+ 0x00000048, 0x00000068, 0x0001e911, 0x0001e933,
+ 0x000001d5, 0x000001d6, 0x00000426, 0x00000446,
+ 0x00000043, 0x00000063, 0x00000160, 0x00000161,
+ 0x0000216d, 0x0000217d, 0x0000a732, 0x0000a733,
+ 0x0000054e, 0x0000057e, 0x00010c94, 0x00010cd4,
+ 0x0000abad, 0x000013dd, 0x00000376, 0x00000377,
+ 0x00000241, 0x00000242, 0x00002c92, 0x00002c93,
+ 0x0000004b, 0x0000006b, 0x0000a682, 0x0000a683,
+ 0x00000408, 0x00000458, 0x00000202, 0x00000203,
+ 0x000104bb, 0x000104e3, 0x00010413, 0x0001043b,
+ 0x0000ab7f, 0x000013af, 0x0000aba4, 0x000013d4,
+ 0x00001f29, 0x00001f21, 0x0000041b, 0x0000043b,
+ 0x000003ee, 0x000003ef, 0x0000015a, 0x0000015b,
+ 0x0000a65a, 0x0000a65b, 0x00000216, 0x00000217,
+ 0x0000046e, 0x0000046f, 0x00010ca7, 0x00010ce7,
+ 0x00001c97, 0x000010d7, 0x00001c96, 0x000010d6,
+ 0x0000ab89, 0x000013b9, 0x00010407, 0x0001042f,
+ 0x00001e3c, 0x00001e3d, 0x00000166, 0x00000167,
+ 0x00001ee6, 0x00001ee7, 0x000004a6, 0x000004a7,
+ 0x00010ca1, 0x00010ce1, 0x000104b4, 0x000104dc,
+ 0x0000ab75, 0x000013a5, 0x00002cda, 0x00002cdb,
+ 0x0000a7b0, 0x0000029e, 0x00001fba, 0x00001f70,
+ 0x0000ff30, 0x0000ff50, 0x0000039d, 0x000003bd,
+ 0x000004a0, 0x000004a1, 0x00010404, 0x0001042c,
+ 0x00010406, 0x0001042e, 0x00002c2a, 0x00002c5a,
+ 0x00001f9c, 0x0200021b, 0x00001f0a, 0x00001f02,
+ 0x00001fda, 0x00001f76, 0x0001e900, 0x0001e922,
+ 0x000000d9, 0x000000f9, 0x000003d6, 0x000003c0,
+ 0x0000012e, 0x0000012f, 0x00016e4b, 0x00016e6b,
+ 0x0000ab87, 0x000013b7, 0x00001e5a, 0x00001e5b,
+ 0x000001ae, 0x00000288, 0x0000023d, 0x0000019a,
+ 0x00010c8d, 0x00010ccd, 0x00016e4a, 0x00016e6a,
+ 0x00010c84, 0x00010cc4, 0x00000393, 0x000003b3,
+ 0x0000a779, 0x0000a77a, 0x0000abac, 0x000013dc,
+ 0x00010ca3, 0x00010ce3, 0x000001e6, 0x000001e7,
+ 0x0000ab7b, 0x000013ab, 0x0000ab96, 0x000013c6,
+ 0x00001f38, 0x00001f30, 0x00001fc4, 0x02000270,
+ 0x00000539, 0x00000569, 0x00000531, 0x00000561,
+ 0x000004a2, 0x000004a3, 0x00000136, 0x00000137,
+ 0x000001e0, 0x000001e1, 0x00010414, 0x0001043c,
+ 0x00001fe8, 0x00001fe0, 0x00010c9e, 0x00010cde,
+ 0x0000ff3a, 0x0000ff5a, 0x00000139, 0x0000013a,
+ 0x0000a7a6, 0x0000a7a7, 0x00001e14, 0x00001e15,
+ 0x0000ab91, 0x000013c1, 0x00000390, 0x0300019b,
+ 0x0000ab8a, 0x000013ba, 0x00001e64, 0x00001e65,
+ 0x00002c07, 0x00002c37, 0x000104c3, 0x000104eb,
+ 0x00016e47, 0x00016e67, 0x0000a77d, 0x00001d79,
+ 0x00002c90, 0x00002c91, 0x0000ff35, 0x0000ff55,
+ 0x00001eb0, 0x00001eb1, 0x00000480, 0x00000481,
+ 0x00016e44, 0x00016e64, 0x00002c1d, 0x00002c4d,
+ 0x000000b5, 0x000003bc, 0x00001cb4, 0x000010f4,
+ 0x00016e4f, 0x00016e6f, 0x00001fc2, 0x0200026a,
+ 0x0000ff37, 0x0000ff57, 0x000003d0, 0x000003b2,
+ 0x0000ab86, 0x000013b6, 0x00000534, 0x00000564,
+ 0x000001e2, 0x000001e3, 0x000118b0, 0x000118d0,
+ 0x00010c92, 0x00010cd2, 0x00000555, 0x00000585,
+ 0x00001fcb, 0x00001f75, 0x00016e40, 0x00016e60,
+ 0x0000ff23, 0x0000ff43, 0x000004d8, 0x000004d9,
+ 0x000104d2, 0x000104fa, 0x000024ba, 0x000024d4,
+ 0x00001f3b, 0x00001f33, 0x00001e62, 0x00001e63,
+ 0x00001f1b, 0x00001f13, 0x000004bc, 0x000004bd,
+ 0x0000ab80, 0x000013b0, 0x00000428, 0x00000448,
+ 0x0000a79e, 0x0000a79f, 0x0000004a, 0x0000006a,
+ 0x00001e20, 0x00001e21, 0x00002cb4, 0x00002cb5,
+ 0x00001e28, 0x00001e29, 0x0000040c, 0x0000045c,
+ 0x00000414, 0x00000434, 0x00002c64, 0x0000027d,
+ 0x00001ece, 0x00001ecf, 0x00001ffc, 0x020002ae,
+ 0x00001ed0, 0x00001ed1, 0x0000216a, 0x0000217a,
+ 0x0000a76a, 0x0000a76b, 0x00000110, 0x00000111,
+ 0x00001eb2, 0x00001eb3, 0x000104bc, 0x000104e4,
+ 0x00001e1e, 0x00001e1f, 0x00000404, 0x00000454,
+ 0x00000245, 0x0000028c, 0x0000fb15, 0x020002ce,
+ 0x00000220, 0x0000019e, 0x000118ae, 0x000118ce,
+ 0x000024c7, 0x000024e1, 0x00000218, 0x00000219,
+ 0x0000abba, 0x000013ea, 0x0000040f, 0x0000045f,
+ 0x00001fcc, 0x0200027a, 0x000004be, 0x000004bf,
+ 0x0000fb17, 0x020002d4, 0x00002caa, 0x00002cab,
+ 0x00000397, 0x000003b7, 0x00000168, 0x00000169,
+ 0x00002c05, 0x00002c35, 0x0000ab8c, 0x000013bc,
+ 0x000010b5, 0x00002d15, 0x0000040e, 0x0000045e,
+ 0x0000ab9e, 0x000013ce, 0x00002cc4, 0x00002cc5,
+ 0x00001ca2, 0x000010e2, 0x000000c9, 0x000000e9,
+ 0x000104b1, 0x000104d9, 0x00001cbf, 0x000010ff,
+ 0x000004ba, 0x000004bb, 0x00001eaa, 0x00001eab,
+ 0x0000ff39, 0x0000ff59, 0x00002c14, 0x00002c44,
+ 0x000104b3, 0x000104db, 0x0001e90f, 0x0001e931,
+ 0x00010c81, 0x00010cc1, 0x0000053b, 0x0000056b,
+ 0x0000040a, 0x0000045a, 0x000004d4, 0x000004d5,
+ 0x000024ca, 0x000024e4, 0x0000212a, 0x0000006b,
+ 0x00001fc7, 0x03000276, 0x0000a64e, 0x0000a64f,
+ 0x000118b7, 0x000118d7, 0x00002c01, 0x00002c31,
+ 0x0000042b, 0x0000044b, 0x000118a2, 0x000118c2,
+ 0x00002c1b, 0x00002c4b, 0x00001f99, 0x02000212,
+ 0x00001c86, 0x0000044a, 0x0000a7ab, 0x0000025c,
+ 0x00001f86, 0x020001d9, 0x0000ab93, 0x000013c3,
+ 0x0000a7a0, 0x0000a7a1, 0x00001c9e, 0x000010de,
+ 0x0000a7a8, 0x0000a7a9, 0x00001fca, 0x00001f74,
+ 0x0001040b, 0x00010433, 0x000118ba, 0x000118da,
+ 0x0000a75e, 0x0000a75f, 0x00001f8f, 0x020001f4,
+ 0x000001fa, 0x000001fb, 0x00002c04, 0x00002c34,
+ 0x00000403, 0x00000453, 0x00001f1a, 0x00001f12,
+ 0x00001ff7, 0x030002aa, 0x000010bb, 0x00002d1b,
+ 0x00002c12, 0x00002c42, 0x00001e7e, 0x00001e7f,
+ 0x0000014a, 0x0000014b, 0x00000214, 0x00000215,
+ 0x0000037f, 0x000003f3, 0x00001e6a, 0x00001e6b,
+ 0x00001eec, 0x00001eed, 0x0000abb9, 0x000013e9,
+ 0x00001fa5, 0x02000236, 0x0000038f, 0x000003ce,
+ 0x00000535, 0x00000565, 0x00001fd3, 0x03000281,
+ 0x0000ab8f, 0x000013bf, 0x00001c9c, 0x000010dc,
+ 0x00001e97, 0x020001a9, 0x00001f6c, 0x00001f64,
+ 0x00010417, 0x0001043f, 0x00002162, 0x00002172,
+ 0x00002c88, 0x00002c89, 0x00010415, 0x0001043d,
+ 0x000104b6, 0x000104de, 0x00001caf, 0x000010ef,
+ 0x00002cbc, 0x00002cbd, 0x00001ebc, 0x00001ebd,
+ 0x00002c15, 0x00002c45, 0x000001cf, 0x000001d0,
+ 0x00002167, 0x00002177, 0x0000ab9a, 0x000013ca,
+ 0x00001ffa, 0x00001f7c, 0x0000020a, 0x0000020b,
+ 0x00002c0c, 0x00002c3c, 0x00001e0c, 0x00001e0d,
+ 0x000010a8, 0x00002d08, 0x00000147, 0x00000148,
+ 0x0000ff2f, 0x0000ff4f, 0x00001e7c, 0x00001e7d,
+ 0x00001f4a, 0x00001f42, 0x0000a7ac, 0x00000261,
+ 0x00001c87, 0x00000463, 0x00000474, 0x00000475,
+ 0x00000406, 0x00000456, 0x000024cc, 0x000024e6,
+ 0x00001fab, 0x02000248, 0x0001e905, 0x0001e927,
+ 0x00001e9a, 0x020001b2, 0x000010a4, 0x00002d04,
+ 0x0000054d, 0x0000057d, 0x00001cac, 0x000010ec,
+ 0x0000ff25, 0x0000ff45, 0x00001e24, 0x00001e25,
+ 0x00000411, 0x00000431, 0x0000abb5, 0x000013e5,
+ 0x00002cb2, 0x00002cb3, 0x00001ca5, 0x000010e5,
+ 0x000118a3, 0x000118c3, 0x00002164, 0x00002174,
+ 0x000003a1, 0x000003c1, 0x0000a74e, 0x0000a74f,
+ 0x000118b8, 0x000118d8, 0x0000ff2e, 0x0000ff4e,
+ 0x00002c02, 0x00002c32, 0x0000054f, 0x0000057f,
+ 0x00010427, 0x0001044f, 0x0000a740, 0x0000a741,
+ 0x000000c5, 0x000000e5, 0x00001f84, 0x020001d3,
+ 0x000010b9, 0x00002d19, 0x0001e91f, 0x0001e941,
+ 0x000024c9, 0x000024e3, 0x0000013b, 0x0000013c,
+ 0x00000516, 0x00000517, 0x0000a654, 0x0000a655,
+ 0x0000a656, 0x0000a657, 0x00000405, 0x00000455,
+ 0x00002c29, 0x00002c59, 0x000010a2, 0x00002d02,
+ 0x00000540, 0x00000570, 0x000010a3, 0x00002d03,
+ 0x00000466, 0x00000467, 0x00001fb9, 0x00001fb1,
+ 0x00010416, 0x0001043e, 0x0000ab97, 0x000013c7,
+ 0x00002cba, 0x00002cbb, 0x00001ef4, 0x00001ef5,
+ 0x000003e4, 0x000003e5, 0x000004c9, 0x000004ca,
+ 0x0000a66c, 0x0000a66d, 0x00000054, 0x00000074,
+ 0x00000246, 0x00000247, 0x0000ab7a, 0x000013aa,
+ 0x00002c0a, 0x00002c3a, 0x000004ec, 0x000004ed,
+ 0x0001e90e, 0x0001e930, 0x000000d3, 0x000000f3,
+ 0x00001fa9, 0x02000242, 0x00001f2b, 0x00001f23,
+ 0x0000fb05, 0x020002c2, 0x00002c6b, 0x00002c6c,
+ 0x00000537, 0x00000567, 0x000010b7, 0x00002d17,
+ 0x0000a77e, 0x0000a77f, 0x00010cad, 0x00010ced,
+ 0x0000040d, 0x0000045d, 0x00002c0e, 0x00002c3e,
+ 0x00000547, 0x00000577, 0x00001f4c, 0x00001f44,
+ 0x000003a5, 0x000003c5, 0x0000038c, 0x000003cc,
+ 0x00001cb7, 0x000010f7, 0x00001eea, 0x00001eeb,
+ 0x000001a6, 0x00000280, 0x00001fad, 0x0200024e,
+ 0x00002c8a, 0x00002c8b, 0x00000134, 0x00000135,
+ 0x00010418, 0x00010440, 0x00010c87, 0x00010cc7,
+ 0x0000a662, 0x0000a663, 0x000001b3, 0x000001b4,
+ 0x0000015c, 0x0000015d, 0x000118b9, 0x000118d9,
+ 0x00000500, 0x00000501, 0x00010c8a, 0x00010cca,
+ 0x000010ac, 0x00002d0c, 0x0000022c, 0x0000022d,
+ 0x00001fbb, 0x00001f71, 0x00001e54, 0x00001e55,
+ 0x00000046, 0x00000066, 0x00002161, 0x00002171,
+ 0x00001cba, 0x000010fa, 0x0000051a, 0x0000051b,
+ 0x000001e8, 0x000001e9, 0x000118b4, 0x000118d4,
+ 0x00001f0b, 0x00001f03, 0x00001f8c, 0x020001eb,
+ 0x0000ab99, 0x000013c9, 0x00001e74, 0x00001e75,
+ 0x000003a0, 0x000003c0, 0x000010a1, 0x00002d01,
+ 0x00001f5d, 0x00001f55, 0x000000cc, 0x000000ec,
+ 0x0000041f, 0x0000043f, 0x0000aba1, 0x000013d1,
+ 0x00001ee4, 0x00001ee5, 0x00001f28, 0x00001f20,
+ 0x00001fb2, 0x02000257, 0x000000df, 0x0200018f,
+ 0x0000a66a, 0x0000a66b, 0x000010b3, 0x00002d13,
+ 0x0001e90b, 0x0001e92d, 0x00001e2c, 0x00001e2d,
+ 0x00001e34, 0x00001e35, 0x000004ea, 0x000004eb,
+ 0x0001041b, 0x00010443, 0x0000018f, 0x00000259,
+ 0x000001f0, 0x02000198, 0x00001e44, 0x00001e45,
+ 0x00002ca8, 0x00002ca9, 0x00000412, 0x00000432,
+ 0x000000c3, 0x000000e3, 0x0000052e, 0x0000052f,
+ 0x00001e52, 0x00001e53, 0x0000ab9d, 0x000013cd,
+ 0x00002168, 0x00002178, 0x00001f8e, 0x020001f1,
+ 0x00016e51, 0x00016e71, 0x000010aa, 0x00002d0a,
+ 0x000118ab, 0x000118cb, 0x0000038a, 0x000003af,
+ 0x0000aba7, 0x000013d7, 0x00000554, 0x00000584,
+ 0x000001cd, 0x000001ce, 0x00000193, 0x00000260,
+ 0x00000518, 0x00000519, 0x00001f6f, 0x00001f67,
+ 0x00001fac, 0x0200024b, 0x00001c91, 0x000010d1,
+ 0x00010426, 0x0001044e, 0x000001f4, 0x000001f5,
+ 0x00016e41, 0x00016e61, 0x00001e2e, 0x00001e2f,
+ 0x00002c2b, 0x00002c5b, 0x000004f4, 0x000004f5,
+ 0x00001efc, 0x00001efd, 0x0000022a, 0x0000022b,
+ 0x00002cd8, 0x00002cd9, 0x000003f4, 0x000003b8,
+ 0x00001e18, 0x00001e19, 0x000118bd, 0x000118dd,
+ 0x0000abb7, 0x000013e7, 0x000024c5, 0x000024df,
+ 0x00001e4c, 0x00001e4d, 0x000001c4, 0x000001c6,
+ 0x000004cd, 0x000004ce, 0x00002c84, 0x00002c85,
+ 0x00001ea8, 0x00001ea9, 0x000010bc, 0x00002d1c,
+ 0x0000ff2d, 0x0000ff4d, 0x00000394, 0x000003b4,
+ 0x00016e45, 0x00016e65, 0x000000ca, 0x000000ea,
+ 0x00000416, 0x00000436, 0x0001e91a, 0x0001e93c,
+ 0x00001cb8, 0x000010f8, 0x00001cb3, 0x000010f3,
+ 0x00001fa2, 0x0200022d, 0x0000abaf, 0x000013df,
+ 0x00001ca1, 0x000010e1, 0x0000010e, 0x0000010f,
+ 0x00016e43, 0x00016e63, 0x00002ca0, 0x00002ca1,
+ 0x0000ab79, 0x000013a9, 0x000004f2, 0x000004f3,
+ 0x00001ef2, 0x00001ef3, 0x000004ac, 0x000004ad,
+ 0x00000429, 0x00000449, 0x00010c9d, 0x00010cdd,
+ 0x0000a750, 0x0000a751, 0x0001e90d, 0x0001e92f,
+ 0x00001c98, 0x000010d8, 0x00010402, 0x0001042a,
+ 0x00001e42, 0x00001e43, 0x00000184, 0x00000185,
+ 0x00000154, 0x00000155, 0x0000ab84, 0x000013b4,
+ 0x00001e80, 0x00001e81, 0x00001c92, 0x000010d2,
+ 0x0001e90c, 0x0001e92e, 0x00000392, 0x000003b2,
+ 0x00001f2f, 0x00001f27, 0x000000d4, 0x000000f4,
+ 0x00000050, 0x00000070, 0x0001041a, 0x00010442,
+ 0x00000156, 0x00000157, 0x00001fea, 0x00001f7a,
+ 0x00001faa, 0x02000245, 0x00001cb5, 0x000010f5,
+ 0x0000039b, 0x000003bb, 0x0000a738, 0x0000a739,
+ 0x00000100, 0x00000101, 0x0000042d, 0x0000044d,
+ 0x0001040a, 0x00010432, 0x00001f3a, 0x00001f32,
+ 0x00001efa, 0x00001efb, 0x00000232, 0x00000233,
+ 0x00002c7e, 0x0000023f, 0x000001ec, 0x000001ed,
+ 0x00002c69, 0x00002c6a, 0x00010412, 0x0001043a,
+ 0x00001ca7, 0x000010e7, 0x0000047c, 0x0000047d,
+ 0x00001e4a, 0x00001e4b, 0x00000182, 0x00000183,
+ 0x00000423, 0x00000443, 0x000000c7, 0x000000e7,
+ 0x00000526, 0x00000527, 0x00001f09, 0x00001f01,
+ 0x000118b6, 0x000118d6, 0x00001f52, 0x030001bb,
+ 0x000004fc, 0x000004fd, 0x000000d2, 0x000000f2,
+ 0x0000018b, 0x0000018c, 0x000001b1, 0x0000028a,
+ 0x00002cce, 0x00002ccf, 0x00001e4e, 0x00001e4f,
+ 0x00001f18, 0x00001f10, 0x00010410, 0x00010438,
+ 0x00010400, 0x00010428, 0x0000048a, 0x0000048b,
+ 0x000000db, 0x000000fb, 0x00002ca2, 0x00002ca3,
+ 0x00002c1e, 0x00002c4e, 0x00001ea4, 0x00001ea5,
+ 0x00001eca, 0x00001ecb, 0x000004b2, 0x000004b3,
+ 0x0000039c, 0x000003bc, 0x000003de, 0x000003df,
+ 0x00001e88, 0x00001e89, 0x0000abbc, 0x000013ec,
+ 0x0000ff2c, 0x0000ff4c, 0x00002cbe, 0x00002cbf,
+ 0x00001e7a, 0x00001e7b, 0x000001bc, 0x000001bd,
+ 0x00002ce2, 0x00002ce3, 0x00000417, 0x00000437,
+ 0x0000a7b3, 0x0000ab53, 0x00001c85, 0x00000442,
+ 0x0001e920, 0x0001e942, 0x000118ac, 0x000118cc,
+ 0x0000abbe, 0x000013ee, 0x0000046a, 0x0000046b,
+ 0x00001c9d, 0x000010dd, 0x000004c7, 0x000004c8,
+ 0x00002ced, 0x00002cee, 0x0000048c, 0x0000048d,
+ 0x00001ff6, 0x020002a7, 0x000010b4, 0x00002d14,
+ 0x00001f3f, 0x00001f37, 0x00001f5b, 0x00001f53,
+ 0x000024b9, 0x000024d3, 0x000001ca, 0x000001cc,
+ 0x000004b8, 0x000004b9, 0x000004fa, 0x000004fb,
+ 0x00000106, 0x00000107, 0x0000ff2a, 0x0000ff4a,
+ 0x000001a7, 0x000001a8, 0x000001f2, 0x000001f3,
+ 0x000000dc, 0x000000fc, 0x0000011e, 0x0000011f,
+ 0x0000212b, 0x000000e5, 0x0000a688, 0x0000a689,
+ 0x000013fc, 0x000013f4, 0x00010ca8, 0x00010ce8,
+ 0x0001e907, 0x0001e929, 0x00000181, 0x00000253,
+ 0x00001eb8, 0x00001eb9, 0x00002183, 0x00002184,
+ 0x00001ee8, 0x00001ee9, 0x0000039a, 0x000003ba,
+ 0x0000a72e, 0x0000a72f, 0x0000054c, 0x0000057c,
+ 0x000118aa, 0x000118ca, 0x0000a7b1, 0x00000287,
+ 0x00001cbd, 0x000010fd, 0x00000248, 0x00000249,
+ 0x00001e38, 0x00001e39, 0x0000a79c, 0x0000a79d,
+ 0x0000ab7d, 0x000013ad, 0x0000049c, 0x0000049d,
+ 0x000118bb, 0x000118db, 0x000010af, 0x00002d0f,
+ 0x0001e916, 0x0001e938, 0x00002cf2, 0x00002cf3,
+ 0x000001f8, 0x000001f9, 0x0000023a, 0x00002c65,
+ 0x00000587, 0x020001a3, 0x000003ec, 0x000003ed,
+ 0x0000a74a, 0x0000a74b, 0x00002c21, 0x00002c51,
+ 0x0000a640, 0x0000a641, 0x0000ab72, 0x000013a2,
+ 0x0000052a, 0x0000052b, 0x0000018a, 0x00000257,
+ 0x000024bd, 0x000024d7, 0x00010cb0, 0x00010cf0,
+ 0x0000a746, 0x0000a747, 0x00001c9f, 0x000010df,
+ 0x000003fd, 0x0000037b, 0x0000ab71, 0x000013a1,
+ 0x0000047a, 0x0000047b, 0x000000da, 0x000000fa,
+ 0x000001b7, 0x00000292, 0x0001e901, 0x0001e923,
+ 0x00001f9f, 0x02000224, 0x00001ec4, 0x00001ec5,
+ 0x0000ab9c, 0x000013cc, 0x00002166, 0x00002176,
+ 0x00001e50, 0x00001e51, 0x00010caa, 0x00010cea,
+ 0x0000aba2, 0x000013d2, 0x00002c63, 0x00001d7d,
+ 0x0000ab7e, 0x000013ae, 0x0000abbf, 0x000013ef,
+ 0x00001f39, 0x00001f31, 0x00000536, 0x00000566,
+ 0x00001f9d, 0x0200021e, 0x0000a64c, 0x0000a64d,
+ 0x00000057, 0x00000077, 0x0000012c, 0x0000012d,
+ 0x00001cbe, 0x000010fe, 0x00000145, 0x00000146,
+ 0x000013fa, 0x000013f2, 0x0000019c, 0x0000026f,
+ 0x00016e49, 0x00016e69, 0x0000ab92, 0x000013c2,
+ 0x00002169, 0x00002179, 0x0001e903, 0x0001e925,
+ 0x0001e906, 0x0001e928, 0x0000ab9f, 0x000013cf,
+ 0x0000abb0, 0x000013e0, 0x0000024a, 0x0000024b,
+ 0x0000019d, 0x00000272, 0x00000413, 0x00000433,
+ 0x00002cc8, 0x00002cc9, 0x00001e94, 0x00001e95,
+ 0x000010c0, 0x00002d20, 0x00000407, 0x00000457,
+ 0x0000abb8, 0x000013e8, 0x0000a752, 0x0000a753,
+ 0x0000010a, 0x0000010b, 0x000004c3, 0x000004c4,
+ 0x00002c18, 0x00002c48, 0x000003a9, 0x000003c9,
+ 0x00016e4c, 0x00016e6c, 0x0000024e, 0x0000024f,
+ 0x000001c7, 0x000001c9, 0x000003aa, 0x000003ca,
+ 0x0000005a, 0x0000007a, 0x000003f1, 0x000003c1,
+ 0x00001f94, 0x02000203, 0x0000ab74, 0x000013a4,
+ 0x0000051e, 0x0000051f, 0x0000a77b, 0x0000a77c,
+ 0x0001e919, 0x0001e93b, 0x0000ff21, 0x0000ff41,
+ 0x00001ebe, 0x00001ebf, 0x00001eac, 0x00001ead,
+ 0x0000ff32, 0x0000ff52, 0x00001c84, 0x00000442,
+ 0x0000abb2, 0x000013e2, 0x00010c8e, 0x00010cce,
+ 0x000001f1, 0x000001f3, 0x00000508, 0x00000509,
+ 0x00002cc6, 0x00002cc7, 0x00010c83, 0x00010cc3,
+ 0x00001fbe, 0x000003b9, 0x000003ab, 0x000003cb,
+ 0x000003fa, 0x000003fb, 0x0000a76c, 0x0000a76d,
+ 0x00000141, 0x00000142, 0x00016e52, 0x00016e72,
+ 0x00002c16, 0x00002c46, 0x000104b7, 0x000104df,
+ 0x00001f0e, 0x00001f06, 0x0001e909, 0x0001e92b,
+ 0x00016e5e, 0x00016e7e, 0x00001f6b, 0x00001f63,
+ 0x0000a790, 0x0000a791, 0x0001041d, 0x00010445,
+ 0x000104cc, 0x000104f4, 0x0000ab7c, 0x000013ac,
+ 0x00001e5e, 0x00001e5f, 0x00001fae, 0x02000251,
+ 0x000001af, 0x000001b0, 0x00002c86, 0x00002c87,
+ 0x0000a798, 0x0000a799, 0x00001ea6, 0x00001ea7,
+ 0x0001041c, 0x00010444, 0x00001ecc, 0x00001ecd,
+ 0x0000a728, 0x0000a729, 0x00001efe, 0x00001eff,
+ 0x000010ba, 0x00002d1a, 0x000001f7, 0x000001bf,
+ 0x00001e10, 0x00001e11, 0x00002c20, 0x00002c50,
+ 0x00000494, 0x00000495, 0x00001e1c, 0x00001e1d,
+ 0x000104bf, 0x000104e7, 0x0000a754, 0x0000a755,
+ 0x000024be, 0x000024d8, 0x000104cf, 0x000104f7,
+ 0x0000aba3, 0x000013d3, 0x00000198, 0x00000199,
+ 0x00001f2d, 0x00001f25, 0x00000152, 0x00000153,
+ 0x00000187, 0x00000188, 0x0000a748, 0x0000a749,
+ 0x0000a792, 0x0000a793, 0x0000010c, 0x0000010d,
+ 0x00001cb0, 0x000010f0, 0x000000c1, 0x000000e1,
+ 0x00001fa3, 0x02000230, 0x0001e91d, 0x0001e93f,
+ 0x00001f95, 0x02000206, 0x00000244, 0x00000289,
+ 0x00002c96, 0x00002c97, 0x0000a644, 0x0000a645,
+ 0x00000399, 0x000003b9, 0x000104d0, 0x000104f8,
+ 0x0000a726, 0x0000a727, 0x000000c4, 0x000000e4,
+ 0x000024c0, 0x000024da, 0x00010405, 0x0001042d,
+ 0x00002cc2, 0x00002cc3, 0x00001cab, 0x000010eb,
+ 0x00010ca9, 0x00010ce9, 0x000010b8, 0x00002d18,
+ 0x0001041e, 0x00010446, 0x0000a75c, 0x0000a75d,
+ 0x00000204, 0x00000205, 0x000003f9, 0x000003f2,
+ 0x0000ab70, 0x000013a0, 0x0000a7a4, 0x0000a7a5
+};
-static const unsigned int _uccase_map[] = {
- 0x00000041, 0x00000061, 0x00000041,
- 0x00000042, 0x00000062, 0x00000042,
- 0x00000043, 0x00000063, 0x00000043,
- 0x00000044, 0x00000064, 0x00000044,
- 0x00000045, 0x00000065, 0x00000045,
- 0x00000046, 0x00000066, 0x00000046,
- 0x00000047, 0x00000067, 0x00000047,
- 0x00000048, 0x00000068, 0x00000048,
- 0x00000049, 0x00000069, 0x00000049,
- 0x0000004a, 0x0000006a, 0x0000004a,
- 0x0000004b, 0x0000006b, 0x0000004b,
- 0x0000004c, 0x0000006c, 0x0000004c,
- 0x0000004d, 0x0000006d, 0x0000004d,
- 0x0000004e, 0x0000006e, 0x0000004e,
- 0x0000004f, 0x0000006f, 0x0000004f,
- 0x00000050, 0x00000070, 0x00000050,
- 0x00000051, 0x00000071, 0x00000051,
- 0x00000052, 0x00000072, 0x00000052,
- 0x00000053, 0x00000073, 0x00000053,
- 0x00000054, 0x00000074, 0x00000054,
- 0x00000055, 0x00000075, 0x00000055,
- 0x00000056, 0x00000076, 0x00000056,
- 0x00000057, 0x00000077, 0x00000057,
- 0x00000058, 0x00000078, 0x00000058,
- 0x00000059, 0x00000079, 0x00000059,
- 0x0000005a, 0x0000007a, 0x0000005a,
- 0x000000c0, 0x000000e0, 0x000000c0,
- 0x000000c1, 0x000000e1, 0x000000c1,
- 0x000000c2, 0x000000e2, 0x000000c2,
- 0x000000c3, 0x000000e3, 0x000000c3,
- 0x000000c4, 0x000000e4, 0x000000c4,
- 0x000000c5, 0x000000e5, 0x000000c5,
- 0x000000c6, 0x000000e6, 0x000000c6,
- 0x000000c7, 0x000000e7, 0x000000c7,
- 0x000000c8, 0x000000e8, 0x000000c8,
- 0x000000c9, 0x000000e9, 0x000000c9,
- 0x000000ca, 0x000000ea, 0x000000ca,
- 0x000000cb, 0x000000eb, 0x000000cb,
- 0x000000cc, 0x000000ec, 0x000000cc,
- 0x000000cd, 0x000000ed, 0x000000cd,
- 0x000000ce, 0x000000ee, 0x000000ce,
- 0x000000cf, 0x000000ef, 0x000000cf,
- 0x000000d0, 0x000000f0, 0x000000d0,
- 0x000000d1, 0x000000f1, 0x000000d1,
- 0x000000d2, 0x000000f2, 0x000000d2,
- 0x000000d3, 0x000000f3, 0x000000d3,
- 0x000000d4, 0x000000f4, 0x000000d4,
- 0x000000d5, 0x000000f5, 0x000000d5,
- 0x000000d6, 0x000000f6, 0x000000d6,
- 0x000000d8, 0x000000f8, 0x000000d8,
- 0x000000d9, 0x000000f9, 0x000000d9,
- 0x000000da, 0x000000fa, 0x000000da,
- 0x000000db, 0x000000fb, 0x000000db,
- 0x000000dc, 0x000000fc, 0x000000dc,
- 0x000000dd, 0x000000fd, 0x000000dd,
- 0x000000de, 0x000000fe, 0x000000de,
- 0x00000100, 0x00000101, 0x00000100,
- 0x00000102, 0x00000103, 0x00000102,
- 0x00000104, 0x00000105, 0x00000104,
- 0x00000106, 0x00000107, 0x00000106,
- 0x00000108, 0x00000109, 0x00000108,
- 0x0000010a, 0x0000010b, 0x0000010a,
- 0x0000010c, 0x0000010d, 0x0000010c,
- 0x0000010e, 0x0000010f, 0x0000010e,
- 0x00000110, 0x00000111, 0x00000110,
- 0x00000112, 0x00000113, 0x00000112,
- 0x00000114, 0x00000115, 0x00000114,
- 0x00000116, 0x00000117, 0x00000116,
- 0x00000118, 0x00000119, 0x00000118,
- 0x0000011a, 0x0000011b, 0x0000011a,
- 0x0000011c, 0x0000011d, 0x0000011c,
- 0x0000011e, 0x0000011f, 0x0000011e,
- 0x00000120, 0x00000121, 0x00000120,
- 0x00000122, 0x00000123, 0x00000122,
- 0x00000124, 0x00000125, 0x00000124,
- 0x00000126, 0x00000127, 0x00000126,
- 0x00000128, 0x00000129, 0x00000128,
- 0x0000012a, 0x0000012b, 0x0000012a,
- 0x0000012c, 0x0000012d, 0x0000012c,
- 0x0000012e, 0x0000012f, 0x0000012e,
- 0x00000130, 0x00000069, 0x00000130,
- 0x00000132, 0x00000133, 0x00000132,
- 0x00000134, 0x00000135, 0x00000134,
- 0x00000136, 0x00000137, 0x00000136,
- 0x00000139, 0x0000013a, 0x00000139,
- 0x0000013b, 0x0000013c, 0x0000013b,
- 0x0000013d, 0x0000013e, 0x0000013d,
- 0x0000013f, 0x00000140, 0x0000013f,
- 0x00000141, 0x00000142, 0x00000141,
- 0x00000143, 0x00000144, 0x00000143,
- 0x00000145, 0x00000146, 0x00000145,
- 0x00000147, 0x00000148, 0x00000147,
- 0x0000014a, 0x0000014b, 0x0000014a,
- 0x0000014c, 0x0000014d, 0x0000014c,
- 0x0000014e, 0x0000014f, 0x0000014e,
- 0x00000150, 0x00000151, 0x00000150,
- 0x00000152, 0x00000153, 0x00000152,
- 0x00000154, 0x00000155, 0x00000154,
- 0x00000156, 0x00000157, 0x00000156,
- 0x00000158, 0x00000159, 0x00000158,
- 0x0000015a, 0x0000015b, 0x0000015a,
- 0x0000015c, 0x0000015d, 0x0000015c,
- 0x0000015e, 0x0000015f, 0x0000015e,
- 0x00000160, 0x00000161, 0x00000160,
- 0x00000162, 0x00000163, 0x00000162,
- 0x00000164, 0x00000165, 0x00000164,
- 0x00000166, 0x00000167, 0x00000166,
- 0x00000168, 0x00000169, 0x00000168,
- 0x0000016a, 0x0000016b, 0x0000016a,
- 0x0000016c, 0x0000016d, 0x0000016c,
- 0x0000016e, 0x0000016f, 0x0000016e,
- 0x00000170, 0x00000171, 0x00000170,
- 0x00000172, 0x00000173, 0x00000172,
- 0x00000174, 0x00000175, 0x00000174,
- 0x00000176, 0x00000177, 0x00000176,
- 0x00000178, 0x000000ff, 0x00000178,
- 0x00000179, 0x0000017a, 0x00000179,
- 0x0000017b, 0x0000017c, 0x0000017b,
- 0x0000017d, 0x0000017e, 0x0000017d,
- 0x00000181, 0x00000253, 0x00000181,
- 0x00000182, 0x00000183, 0x00000182,
- 0x00000184, 0x00000185, 0x00000184,
- 0x00000186, 0x00000254, 0x00000186,
- 0x00000187, 0x00000188, 0x00000187,
- 0x00000189, 0x00000256, 0x00000189,
- 0x0000018a, 0x00000257, 0x0000018a,
- 0x0000018b, 0x0000018c, 0x0000018b,
- 0x0000018e, 0x000001dd, 0x0000018e,
- 0x0000018f, 0x00000259, 0x0000018f,
- 0x00000190, 0x0000025b, 0x00000190,
- 0x00000191, 0x00000192, 0x00000191,
- 0x00000193, 0x00000260, 0x00000193,
- 0x00000194, 0x00000263, 0x00000194,
- 0x00000196, 0x00000269, 0x00000196,
- 0x00000197, 0x00000268, 0x00000197,
- 0x00000198, 0x00000199, 0x00000198,
- 0x0000019c, 0x0000026f, 0x0000019c,
- 0x0000019d, 0x00000272, 0x0000019d,
- 0x0000019f, 0x00000275, 0x0000019f,
- 0x000001a0, 0x000001a1, 0x000001a0,
- 0x000001a2, 0x000001a3, 0x000001a2,
- 0x000001a4, 0x000001a5, 0x000001a4,
- 0x000001a6, 0x00000280, 0x000001a6,
- 0x000001a7, 0x000001a8, 0x000001a7,
- 0x000001a9, 0x00000283, 0x000001a9,
- 0x000001ac, 0x000001ad, 0x000001ac,
- 0x000001ae, 0x00000288, 0x000001ae,
- 0x000001af, 0x000001b0, 0x000001af,
- 0x000001b1, 0x0000028a, 0x000001b1,
- 0x000001b2, 0x0000028b, 0x000001b2,
- 0x000001b3, 0x000001b4, 0x000001b3,
- 0x000001b5, 0x000001b6, 0x000001b5,
- 0x000001b7, 0x00000292, 0x000001b7,
- 0x000001b8, 0x000001b9, 0x000001b8,
- 0x000001bc, 0x000001bd, 0x000001bc,
- 0x000001c4, 0x000001c6, 0x000001c5,
- 0x000001c7, 0x000001c9, 0x000001c8,
- 0x000001ca, 0x000001cc, 0x000001cb,
- 0x000001cd, 0x000001ce, 0x000001cd,
- 0x000001cf, 0x000001d0, 0x000001cf,
- 0x000001d1, 0x000001d2, 0x000001d1,
- 0x000001d3, 0x000001d4, 0x000001d3,
- 0x000001d5, 0x000001d6, 0x000001d5,
- 0x000001d7, 0x000001d8, 0x000001d7,
- 0x000001d9, 0x000001da, 0x000001d9,
- 0x000001db, 0x000001dc, 0x000001db,
- 0x000001de, 0x000001df, 0x000001de,
- 0x000001e0, 0x000001e1, 0x000001e0,
- 0x000001e2, 0x000001e3, 0x000001e2,
- 0x000001e4, 0x000001e5, 0x000001e4,
- 0x000001e6, 0x000001e7, 0x000001e6,
- 0x000001e8, 0x000001e9, 0x000001e8,
- 0x000001ea, 0x000001eb, 0x000001ea,
- 0x000001ec, 0x000001ed, 0x000001ec,
- 0x000001ee, 0x000001ef, 0x000001ee,
- 0x000001f1, 0x000001f3, 0x000001f2,
- 0x000001f4, 0x000001f5, 0x000001f4,
- 0x000001f6, 0x00000195, 0x000001f6,
- 0x000001f7, 0x000001bf, 0x000001f7,
- 0x000001f8, 0x000001f9, 0x000001f8,
- 0x000001fa, 0x000001fb, 0x000001fa,
- 0x000001fc, 0x000001fd, 0x000001fc,
- 0x000001fe, 0x000001ff, 0x000001fe,
- 0x00000200, 0x00000201, 0x00000200,
- 0x00000202, 0x00000203, 0x00000202,
- 0x00000204, 0x00000205, 0x00000204,
- 0x00000206, 0x00000207, 0x00000206,
- 0x00000208, 0x00000209, 0x00000208,
- 0x0000020a, 0x0000020b, 0x0000020a,
- 0x0000020c, 0x0000020d, 0x0000020c,
- 0x0000020e, 0x0000020f, 0x0000020e,
- 0x00000210, 0x00000211, 0x00000210,
- 0x00000212, 0x00000213, 0x00000212,
- 0x00000214, 0x00000215, 0x00000214,
- 0x00000216, 0x00000217, 0x00000216,
- 0x00000218, 0x00000219, 0x00000218,
- 0x0000021a, 0x0000021b, 0x0000021a,
- 0x0000021c, 0x0000021d, 0x0000021c,
- 0x0000021e, 0x0000021f, 0x0000021e,
- 0x00000220, 0x0000019e, 0x00000220,
- 0x00000222, 0x00000223, 0x00000222,
- 0x00000224, 0x00000225, 0x00000224,
- 0x00000226, 0x00000227, 0x00000226,
- 0x00000228, 0x00000229, 0x00000228,
- 0x0000022a, 0x0000022b, 0x0000022a,
- 0x0000022c, 0x0000022d, 0x0000022c,
- 0x0000022e, 0x0000022f, 0x0000022e,
- 0x00000230, 0x00000231, 0x00000230,
- 0x00000232, 0x00000233, 0x00000232,
- 0x0000023a, 0x00002c65, 0x0000023a,
- 0x0000023b, 0x0000023c, 0x0000023b,
- 0x0000023d, 0x0000019a, 0x0000023d,
- 0x0000023e, 0x00002c66, 0x0000023e,
- 0x00000241, 0x00000242, 0x00000241,
- 0x00000243, 0x00000180, 0x00000243,
- 0x00000244, 0x00000289, 0x00000244,
- 0x00000245, 0x0000028c, 0x00000245,
- 0x00000246, 0x00000247, 0x00000246,
- 0x00000248, 0x00000249, 0x00000248,
- 0x0000024a, 0x0000024b, 0x0000024a,
- 0x0000024c, 0x0000024d, 0x0000024c,
- 0x0000024e, 0x0000024f, 0x0000024e,
- 0x00000370, 0x00000371, 0x00000370,
- 0x00000372, 0x00000373, 0x00000372,
- 0x00000376, 0x00000377, 0x00000376,
- 0x0000037f, 0x000003f3, 0x0000037f,
- 0x00000386, 0x000003ac, 0x00000386,
- 0x00000388, 0x000003ad, 0x00000388,
- 0x00000389, 0x000003ae, 0x00000389,
- 0x0000038a, 0x000003af, 0x0000038a,
- 0x0000038c, 0x000003cc, 0x0000038c,
- 0x0000038e, 0x000003cd, 0x0000038e,
- 0x0000038f, 0x000003ce, 0x0000038f,
- 0x00000391, 0x000003b1, 0x00000391,
- 0x00000392, 0x000003b2, 0x00000392,
- 0x00000393, 0x000003b3, 0x00000393,
- 0x00000394, 0x000003b4, 0x00000394,
- 0x00000395, 0x000003b5, 0x00000395,
- 0x00000396, 0x000003b6, 0x00000396,
- 0x00000397, 0x000003b7, 0x00000397,
- 0x00000398, 0x000003b8, 0x00000398,
- 0x00000399, 0x000003b9, 0x00000399,
- 0x0000039a, 0x000003ba, 0x0000039a,
- 0x0000039b, 0x000003bb, 0x0000039b,
- 0x0000039c, 0x000003bc, 0x0000039c,
- 0x0000039d, 0x000003bd, 0x0000039d,
- 0x0000039e, 0x000003be, 0x0000039e,
- 0x0000039f, 0x000003bf, 0x0000039f,
- 0x000003a0, 0x000003c0, 0x000003a0,
- 0x000003a1, 0x000003c1, 0x000003a1,
- 0x000003a3, 0x000003c3, 0x000003a3,
- 0x000003a4, 0x000003c4, 0x000003a4,
- 0x000003a5, 0x000003c5, 0x000003a5,
- 0x000003a6, 0x000003c6, 0x000003a6,
- 0x000003a7, 0x000003c7, 0x000003a7,
- 0x000003a8, 0x000003c8, 0x000003a8,
- 0x000003a9, 0x000003c9, 0x000003a9,
- 0x000003aa, 0x000003ca, 0x000003aa,
- 0x000003ab, 0x000003cb, 0x000003ab,
- 0x000003cf, 0x000003d7, 0x000003cf,
- 0x000003d8, 0x000003d9, 0x000003d8,
- 0x000003da, 0x000003db, 0x000003da,
- 0x000003dc, 0x000003dd, 0x000003dc,
- 0x000003de, 0x000003df, 0x000003de,
- 0x000003e0, 0x000003e1, 0x000003e0,
- 0x000003e2, 0x000003e3, 0x000003e2,
- 0x000003e4, 0x000003e5, 0x000003e4,
- 0x000003e6, 0x000003e7, 0x000003e6,
- 0x000003e8, 0x000003e9, 0x000003e8,
- 0x000003ea, 0x000003eb, 0x000003ea,
- 0x000003ec, 0x000003ed, 0x000003ec,
- 0x000003ee, 0x000003ef, 0x000003ee,
- 0x000003f4, 0x000003b8, 0x000003f4,
- 0x000003f7, 0x000003f8, 0x000003f7,
- 0x000003f9, 0x000003f2, 0x000003f9,
- 0x000003fa, 0x000003fb, 0x000003fa,
- 0x000003fd, 0x0000037b, 0x000003fd,
- 0x000003fe, 0x0000037c, 0x000003fe,
- 0x000003ff, 0x0000037d, 0x000003ff,
- 0x00000400, 0x00000450, 0x00000400,
- 0x00000401, 0x00000451, 0x00000401,
- 0x00000402, 0x00000452, 0x00000402,
- 0x00000403, 0x00000453, 0x00000403,
- 0x00000404, 0x00000454, 0x00000404,
- 0x00000405, 0x00000455, 0x00000405,
- 0x00000406, 0x00000456, 0x00000406,
- 0x00000407, 0x00000457, 0x00000407,
- 0x00000408, 0x00000458, 0x00000408,
- 0x00000409, 0x00000459, 0x00000409,
- 0x0000040a, 0x0000045a, 0x0000040a,
- 0x0000040b, 0x0000045b, 0x0000040b,
- 0x0000040c, 0x0000045c, 0x0000040c,
- 0x0000040d, 0x0000045d, 0x0000040d,
- 0x0000040e, 0x0000045e, 0x0000040e,
- 0x0000040f, 0x0000045f, 0x0000040f,
- 0x00000410, 0x00000430, 0x00000410,
- 0x00000411, 0x00000431, 0x00000411,
- 0x00000412, 0x00000432, 0x00000412,
- 0x00000413, 0x00000433, 0x00000413,
- 0x00000414, 0x00000434, 0x00000414,
- 0x00000415, 0x00000435, 0x00000415,
- 0x00000416, 0x00000436, 0x00000416,
- 0x00000417, 0x00000437, 0x00000417,
- 0x00000418, 0x00000438, 0x00000418,
- 0x00000419, 0x00000439, 0x00000419,
- 0x0000041a, 0x0000043a, 0x0000041a,
- 0x0000041b, 0x0000043b, 0x0000041b,
- 0x0000041c, 0x0000043c, 0x0000041c,
- 0x0000041d, 0x0000043d, 0x0000041d,
- 0x0000041e, 0x0000043e, 0x0000041e,
- 0x0000041f, 0x0000043f, 0x0000041f,
- 0x00000420, 0x00000440, 0x00000420,
- 0x00000421, 0x00000441, 0x00000421,
- 0x00000422, 0x00000442, 0x00000422,
- 0x00000423, 0x00000443, 0x00000423,
- 0x00000424, 0x00000444, 0x00000424,
- 0x00000425, 0x00000445, 0x00000425,
- 0x00000426, 0x00000446, 0x00000426,
- 0x00000427, 0x00000447, 0x00000427,
- 0x00000428, 0x00000448, 0x00000428,
- 0x00000429, 0x00000449, 0x00000429,
- 0x0000042a, 0x0000044a, 0x0000042a,
- 0x0000042b, 0x0000044b, 0x0000042b,
- 0x0000042c, 0x0000044c, 0x0000042c,
- 0x0000042d, 0x0000044d, 0x0000042d,
- 0x0000042e, 0x0000044e, 0x0000042e,
- 0x0000042f, 0x0000044f, 0x0000042f,
- 0x00000460, 0x00000461, 0x00000460,
- 0x00000462, 0x00000463, 0x00000462,
- 0x00000464, 0x00000465, 0x00000464,
- 0x00000466, 0x00000467, 0x00000466,
- 0x00000468, 0x00000469, 0x00000468,
- 0x0000046a, 0x0000046b, 0x0000046a,
- 0x0000046c, 0x0000046d, 0x0000046c,
- 0x0000046e, 0x0000046f, 0x0000046e,
- 0x00000470, 0x00000471, 0x00000470,
- 0x00000472, 0x00000473, 0x00000472,
- 0x00000474, 0x00000475, 0x00000474,
- 0x00000476, 0x00000477, 0x00000476,
- 0x00000478, 0x00000479, 0x00000478,
- 0x0000047a, 0x0000047b, 0x0000047a,
- 0x0000047c, 0x0000047d, 0x0000047c,
- 0x0000047e, 0x0000047f, 0x0000047e,
- 0x00000480, 0x00000481, 0x00000480,
- 0x0000048a, 0x0000048b, 0x0000048a,
- 0x0000048c, 0x0000048d, 0x0000048c,
- 0x0000048e, 0x0000048f, 0x0000048e,
- 0x00000490, 0x00000491, 0x00000490,
- 0x00000492, 0x00000493, 0x00000492,
- 0x00000494, 0x00000495, 0x00000494,
- 0x00000496, 0x00000497, 0x00000496,
- 0x00000498, 0x00000499, 0x00000498,
- 0x0000049a, 0x0000049b, 0x0000049a,
- 0x0000049c, 0x0000049d, 0x0000049c,
- 0x0000049e, 0x0000049f, 0x0000049e,
- 0x000004a0, 0x000004a1, 0x000004a0,
- 0x000004a2, 0x000004a3, 0x000004a2,
- 0x000004a4, 0x000004a5, 0x000004a4,
- 0x000004a6, 0x000004a7, 0x000004a6,
- 0x000004a8, 0x000004a9, 0x000004a8,
- 0x000004aa, 0x000004ab, 0x000004aa,
- 0x000004ac, 0x000004ad, 0x000004ac,
- 0x000004ae, 0x000004af, 0x000004ae,
- 0x000004b0, 0x000004b1, 0x000004b0,
- 0x000004b2, 0x000004b3, 0x000004b2,
- 0x000004b4, 0x000004b5, 0x000004b4,
- 0x000004b6, 0x000004b7, 0x000004b6,
- 0x000004b8, 0x000004b9, 0x000004b8,
- 0x000004ba, 0x000004bb, 0x000004ba,
- 0x000004bc, 0x000004bd, 0x000004bc,
- 0x000004be, 0x000004bf, 0x000004be,
- 0x000004c0, 0x000004cf, 0x000004c0,
- 0x000004c1, 0x000004c2, 0x000004c1,
- 0x000004c3, 0x000004c4, 0x000004c3,
- 0x000004c5, 0x000004c6, 0x000004c5,
- 0x000004c7, 0x000004c8, 0x000004c7,
- 0x000004c9, 0x000004ca, 0x000004c9,
- 0x000004cb, 0x000004cc, 0x000004cb,
- 0x000004cd, 0x000004ce, 0x000004cd,
- 0x000004d0, 0x000004d1, 0x000004d0,
- 0x000004d2, 0x000004d3, 0x000004d2,
- 0x000004d4, 0x000004d5, 0x000004d4,
- 0x000004d6, 0x000004d7, 0x000004d6,
- 0x000004d8, 0x000004d9, 0x000004d8,
- 0x000004da, 0x000004db, 0x000004da,
- 0x000004dc, 0x000004dd, 0x000004dc,
- 0x000004de, 0x000004df, 0x000004de,
- 0x000004e0, 0x000004e1, 0x000004e0,
- 0x000004e2, 0x000004e3, 0x000004e2,
- 0x000004e4, 0x000004e5, 0x000004e4,
- 0x000004e6, 0x000004e7, 0x000004e6,
- 0x000004e8, 0x000004e9, 0x000004e8,
- 0x000004ea, 0x000004eb, 0x000004ea,
- 0x000004ec, 0x000004ed, 0x000004ec,
- 0x000004ee, 0x000004ef, 0x000004ee,
- 0x000004f0, 0x000004f1, 0x000004f0,
- 0x000004f2, 0x000004f3, 0x000004f2,
- 0x000004f4, 0x000004f5, 0x000004f4,
- 0x000004f6, 0x000004f7, 0x000004f6,
- 0x000004f8, 0x000004f9, 0x000004f8,
- 0x000004fa, 0x000004fb, 0x000004fa,
- 0x000004fc, 0x000004fd, 0x000004fc,
- 0x000004fe, 0x000004ff, 0x000004fe,
- 0x00000500, 0x00000501, 0x00000500,
- 0x00000502, 0x00000503, 0x00000502,
- 0x00000504, 0x00000505, 0x00000504,
- 0x00000506, 0x00000507, 0x00000506,
- 0x00000508, 0x00000509, 0x00000508,
- 0x0000050a, 0x0000050b, 0x0000050a,
- 0x0000050c, 0x0000050d, 0x0000050c,
- 0x0000050e, 0x0000050f, 0x0000050e,
- 0x00000510, 0x00000511, 0x00000510,
- 0x00000512, 0x00000513, 0x00000512,
- 0x00000514, 0x00000515, 0x00000514,
- 0x00000516, 0x00000517, 0x00000516,
- 0x00000518, 0x00000519, 0x00000518,
- 0x0000051a, 0x0000051b, 0x0000051a,
- 0x0000051c, 0x0000051d, 0x0000051c,
- 0x0000051e, 0x0000051f, 0x0000051e,
- 0x00000520, 0x00000521, 0x00000520,
- 0x00000522, 0x00000523, 0x00000522,
- 0x00000524, 0x00000525, 0x00000524,
- 0x00000526, 0x00000527, 0x00000526,
- 0x00000528, 0x00000529, 0x00000528,
- 0x0000052a, 0x0000052b, 0x0000052a,
- 0x0000052c, 0x0000052d, 0x0000052c,
- 0x0000052e, 0x0000052f, 0x0000052e,
- 0x00000531, 0x00000561, 0x00000531,
- 0x00000532, 0x00000562, 0x00000532,
- 0x00000533, 0x00000563, 0x00000533,
- 0x00000534, 0x00000564, 0x00000534,
- 0x00000535, 0x00000565, 0x00000535,
- 0x00000536, 0x00000566, 0x00000536,
- 0x00000537, 0x00000567, 0x00000537,
- 0x00000538, 0x00000568, 0x00000538,
- 0x00000539, 0x00000569, 0x00000539,
- 0x0000053a, 0x0000056a, 0x0000053a,
- 0x0000053b, 0x0000056b, 0x0000053b,
- 0x0000053c, 0x0000056c, 0x0000053c,
- 0x0000053d, 0x0000056d, 0x0000053d,
- 0x0000053e, 0x0000056e, 0x0000053e,
- 0x0000053f, 0x0000056f, 0x0000053f,
- 0x00000540, 0x00000570, 0x00000540,
- 0x00000541, 0x00000571, 0x00000541,
- 0x00000542, 0x00000572, 0x00000542,
- 0x00000543, 0x00000573, 0x00000543,
- 0x00000544, 0x00000574, 0x00000544,
- 0x00000545, 0x00000575, 0x00000545,
- 0x00000546, 0x00000576, 0x00000546,
- 0x00000547, 0x00000577, 0x00000547,
- 0x00000548, 0x00000578, 0x00000548,
- 0x00000549, 0x00000579, 0x00000549,
- 0x0000054a, 0x0000057a, 0x0000054a,
- 0x0000054b, 0x0000057b, 0x0000054b,
- 0x0000054c, 0x0000057c, 0x0000054c,
- 0x0000054d, 0x0000057d, 0x0000054d,
- 0x0000054e, 0x0000057e, 0x0000054e,
- 0x0000054f, 0x0000057f, 0x0000054f,
- 0x00000550, 0x00000580, 0x00000550,
- 0x00000551, 0x00000581, 0x00000551,
- 0x00000552, 0x00000582, 0x00000552,
- 0x00000553, 0x00000583, 0x00000553,
- 0x00000554, 0x00000584, 0x00000554,
- 0x00000555, 0x00000585, 0x00000555,
- 0x00000556, 0x00000586, 0x00000556,
- 0x000010a0, 0x00002d00, 0x000010a0,
- 0x000010a1, 0x00002d01, 0x000010a1,
- 0x000010a2, 0x00002d02, 0x000010a2,
- 0x000010a3, 0x00002d03, 0x000010a3,
- 0x000010a4, 0x00002d04, 0x000010a4,
- 0x000010a5, 0x00002d05, 0x000010a5,
- 0x000010a6, 0x00002d06, 0x000010a6,
- 0x000010a7, 0x00002d07, 0x000010a7,
- 0x000010a8, 0x00002d08, 0x000010a8,
- 0x000010a9, 0x00002d09, 0x000010a9,
- 0x000010aa, 0x00002d0a, 0x000010aa,
- 0x000010ab, 0x00002d0b, 0x000010ab,
- 0x000010ac, 0x00002d0c, 0x000010ac,
- 0x000010ad, 0x00002d0d, 0x000010ad,
- 0x000010ae, 0x00002d0e, 0x000010ae,
- 0x000010af, 0x00002d0f, 0x000010af,
- 0x000010b0, 0x00002d10, 0x000010b0,
- 0x000010b1, 0x00002d11, 0x000010b1,
- 0x000010b2, 0x00002d12, 0x000010b2,
- 0x000010b3, 0x00002d13, 0x000010b3,
- 0x000010b4, 0x00002d14, 0x000010b4,
- 0x000010b5, 0x00002d15, 0x000010b5,
- 0x000010b6, 0x00002d16, 0x000010b6,
- 0x000010b7, 0x00002d17, 0x000010b7,
- 0x000010b8, 0x00002d18, 0x000010b8,
- 0x000010b9, 0x00002d19, 0x000010b9,
- 0x000010ba, 0x00002d1a, 0x000010ba,
- 0x000010bb, 0x00002d1b, 0x000010bb,
- 0x000010bc, 0x00002d1c, 0x000010bc,
- 0x000010bd, 0x00002d1d, 0x000010bd,
- 0x000010be, 0x00002d1e, 0x000010be,
- 0x000010bf, 0x00002d1f, 0x000010bf,
- 0x000010c0, 0x00002d20, 0x000010c0,
- 0x000010c1, 0x00002d21, 0x000010c1,
- 0x000010c2, 0x00002d22, 0x000010c2,
- 0x000010c3, 0x00002d23, 0x000010c3,
- 0x000010c4, 0x00002d24, 0x000010c4,
- 0x000010c5, 0x00002d25, 0x000010c5,
- 0x000010c7, 0x00002d27, 0x000010c7,
- 0x000010cd, 0x00002d2d, 0x000010cd,
- 0x000013a0, 0x0000ab70, 0x000013a0,
- 0x000013a1, 0x0000ab71, 0x000013a1,
- 0x000013a2, 0x0000ab72, 0x000013a2,
- 0x000013a3, 0x0000ab73, 0x000013a3,
- 0x000013a4, 0x0000ab74, 0x000013a4,
- 0x000013a5, 0x0000ab75, 0x000013a5,
- 0x000013a6, 0x0000ab76, 0x000013a6,
- 0x000013a7, 0x0000ab77, 0x000013a7,
- 0x000013a8, 0x0000ab78, 0x000013a8,
- 0x000013a9, 0x0000ab79, 0x000013a9,
- 0x000013aa, 0x0000ab7a, 0x000013aa,
- 0x000013ab, 0x0000ab7b, 0x000013ab,
- 0x000013ac, 0x0000ab7c, 0x000013ac,
- 0x000013ad, 0x0000ab7d, 0x000013ad,
- 0x000013ae, 0x0000ab7e, 0x000013ae,
- 0x000013af, 0x0000ab7f, 0x000013af,
- 0x000013b0, 0x0000ab80, 0x000013b0,
- 0x000013b1, 0x0000ab81, 0x000013b1,
- 0x000013b2, 0x0000ab82, 0x000013b2,
- 0x000013b3, 0x0000ab83, 0x000013b3,
- 0x000013b4, 0x0000ab84, 0x000013b4,
- 0x000013b5, 0x0000ab85, 0x000013b5,
- 0x000013b6, 0x0000ab86, 0x000013b6,
- 0x000013b7, 0x0000ab87, 0x000013b7,
- 0x000013b8, 0x0000ab88, 0x000013b8,
- 0x000013b9, 0x0000ab89, 0x000013b9,
- 0x000013ba, 0x0000ab8a, 0x000013ba,
- 0x000013bb, 0x0000ab8b, 0x000013bb,
- 0x000013bc, 0x0000ab8c, 0x000013bc,
- 0x000013bd, 0x0000ab8d, 0x000013bd,
- 0x000013be, 0x0000ab8e, 0x000013be,
- 0x000013bf, 0x0000ab8f, 0x000013bf,
- 0x000013c0, 0x0000ab90, 0x000013c0,
- 0x000013c1, 0x0000ab91, 0x000013c1,
- 0x000013c2, 0x0000ab92, 0x000013c2,
- 0x000013c3, 0x0000ab93, 0x000013c3,
- 0x000013c4, 0x0000ab94, 0x000013c4,
- 0x000013c5, 0x0000ab95, 0x000013c5,
- 0x000013c6, 0x0000ab96, 0x000013c6,
- 0x000013c7, 0x0000ab97, 0x000013c7,
- 0x000013c8, 0x0000ab98, 0x000013c8,
- 0x000013c9, 0x0000ab99, 0x000013c9,
- 0x000013ca, 0x0000ab9a, 0x000013ca,
- 0x000013cb, 0x0000ab9b, 0x000013cb,
- 0x000013cc, 0x0000ab9c, 0x000013cc,
- 0x000013cd, 0x0000ab9d, 0x000013cd,
- 0x000013ce, 0x0000ab9e, 0x000013ce,
- 0x000013cf, 0x0000ab9f, 0x000013cf,
- 0x000013d0, 0x0000aba0, 0x000013d0,
- 0x000013d1, 0x0000aba1, 0x000013d1,
- 0x000013d2, 0x0000aba2, 0x000013d2,
- 0x000013d3, 0x0000aba3, 0x000013d3,
- 0x000013d4, 0x0000aba4, 0x000013d4,
- 0x000013d5, 0x0000aba5, 0x000013d5,
- 0x000013d6, 0x0000aba6, 0x000013d6,
- 0x000013d7, 0x0000aba7, 0x000013d7,
- 0x000013d8, 0x0000aba8, 0x000013d8,
- 0x000013d9, 0x0000aba9, 0x000013d9,
- 0x000013da, 0x0000abaa, 0x000013da,
- 0x000013db, 0x0000abab, 0x000013db,
- 0x000013dc, 0x0000abac, 0x000013dc,
- 0x000013dd, 0x0000abad, 0x000013dd,
- 0x000013de, 0x0000abae, 0x000013de,
- 0x000013df, 0x0000abaf, 0x000013df,
- 0x000013e0, 0x0000abb0, 0x000013e0,
- 0x000013e1, 0x0000abb1, 0x000013e1,
- 0x000013e2, 0x0000abb2, 0x000013e2,
- 0x000013e3, 0x0000abb3, 0x000013e3,
- 0x000013e4, 0x0000abb4, 0x000013e4,
- 0x000013e5, 0x0000abb5, 0x000013e5,
- 0x000013e6, 0x0000abb6, 0x000013e6,
- 0x000013e7, 0x0000abb7, 0x000013e7,
- 0x000013e8, 0x0000abb8, 0x000013e8,
- 0x000013e9, 0x0000abb9, 0x000013e9,
- 0x000013ea, 0x0000abba, 0x000013ea,
- 0x000013eb, 0x0000abbb, 0x000013eb,
- 0x000013ec, 0x0000abbc, 0x000013ec,
- 0x000013ed, 0x0000abbd, 0x000013ed,
- 0x000013ee, 0x0000abbe, 0x000013ee,
- 0x000013ef, 0x0000abbf, 0x000013ef,
- 0x000013f0, 0x000013f8, 0x000013f0,
- 0x000013f1, 0x000013f9, 0x000013f1,
- 0x000013f2, 0x000013fa, 0x000013f2,
- 0x000013f3, 0x000013fb, 0x000013f3,
- 0x000013f4, 0x000013fc, 0x000013f4,
- 0x000013f5, 0x000013fd, 0x000013f5,
- 0x00001e00, 0x00001e01, 0x00001e00,
- 0x00001e02, 0x00001e03, 0x00001e02,
- 0x00001e04, 0x00001e05, 0x00001e04,
- 0x00001e06, 0x00001e07, 0x00001e06,
- 0x00001e08, 0x00001e09, 0x00001e08,
- 0x00001e0a, 0x00001e0b, 0x00001e0a,
- 0x00001e0c, 0x00001e0d, 0x00001e0c,
- 0x00001e0e, 0x00001e0f, 0x00001e0e,
- 0x00001e10, 0x00001e11, 0x00001e10,
- 0x00001e12, 0x00001e13, 0x00001e12,
- 0x00001e14, 0x00001e15, 0x00001e14,
- 0x00001e16, 0x00001e17, 0x00001e16,
- 0x00001e18, 0x00001e19, 0x00001e18,
- 0x00001e1a, 0x00001e1b, 0x00001e1a,
- 0x00001e1c, 0x00001e1d, 0x00001e1c,
- 0x00001e1e, 0x00001e1f, 0x00001e1e,
- 0x00001e20, 0x00001e21, 0x00001e20,
- 0x00001e22, 0x00001e23, 0x00001e22,
- 0x00001e24, 0x00001e25, 0x00001e24,
- 0x00001e26, 0x00001e27, 0x00001e26,
- 0x00001e28, 0x00001e29, 0x00001e28,
- 0x00001e2a, 0x00001e2b, 0x00001e2a,
- 0x00001e2c, 0x00001e2d, 0x00001e2c,
- 0x00001e2e, 0x00001e2f, 0x00001e2e,
- 0x00001e30, 0x00001e31, 0x00001e30,
- 0x00001e32, 0x00001e33, 0x00001e32,
- 0x00001e34, 0x00001e35, 0x00001e34,
- 0x00001e36, 0x00001e37, 0x00001e36,
- 0x00001e38, 0x00001e39, 0x00001e38,
- 0x00001e3a, 0x00001e3b, 0x00001e3a,
- 0x00001e3c, 0x00001e3d, 0x00001e3c,
- 0x00001e3e, 0x00001e3f, 0x00001e3e,
- 0x00001e40, 0x00001e41, 0x00001e40,
- 0x00001e42, 0x00001e43, 0x00001e42,
- 0x00001e44, 0x00001e45, 0x00001e44,
- 0x00001e46, 0x00001e47, 0x00001e46,
- 0x00001e48, 0x00001e49, 0x00001e48,
- 0x00001e4a, 0x00001e4b, 0x00001e4a,
- 0x00001e4c, 0x00001e4d, 0x00001e4c,
- 0x00001e4e, 0x00001e4f, 0x00001e4e,
- 0x00001e50, 0x00001e51, 0x00001e50,
- 0x00001e52, 0x00001e53, 0x00001e52,
- 0x00001e54, 0x00001e55, 0x00001e54,
- 0x00001e56, 0x00001e57, 0x00001e56,
- 0x00001e58, 0x00001e59, 0x00001e58,
- 0x00001e5a, 0x00001e5b, 0x00001e5a,
- 0x00001e5c, 0x00001e5d, 0x00001e5c,
- 0x00001e5e, 0x00001e5f, 0x00001e5e,
- 0x00001e60, 0x00001e61, 0x00001e60,
- 0x00001e62, 0x00001e63, 0x00001e62,
- 0x00001e64, 0x00001e65, 0x00001e64,
- 0x00001e66, 0x00001e67, 0x00001e66,
- 0x00001e68, 0x00001e69, 0x00001e68,
- 0x00001e6a, 0x00001e6b, 0x00001e6a,
- 0x00001e6c, 0x00001e6d, 0x00001e6c,
- 0x00001e6e, 0x00001e6f, 0x00001e6e,
- 0x00001e70, 0x00001e71, 0x00001e70,
- 0x00001e72, 0x00001e73, 0x00001e72,
- 0x00001e74, 0x00001e75, 0x00001e74,
- 0x00001e76, 0x00001e77, 0x00001e76,
- 0x00001e78, 0x00001e79, 0x00001e78,
- 0x00001e7a, 0x00001e7b, 0x00001e7a,
- 0x00001e7c, 0x00001e7d, 0x00001e7c,
- 0x00001e7e, 0x00001e7f, 0x00001e7e,
- 0x00001e80, 0x00001e81, 0x00001e80,
- 0x00001e82, 0x00001e83, 0x00001e82,
- 0x00001e84, 0x00001e85, 0x00001e84,
- 0x00001e86, 0x00001e87, 0x00001e86,
- 0x00001e88, 0x00001e89, 0x00001e88,
- 0x00001e8a, 0x00001e8b, 0x00001e8a,
- 0x00001e8c, 0x00001e8d, 0x00001e8c,
- 0x00001e8e, 0x00001e8f, 0x00001e8e,
- 0x00001e90, 0x00001e91, 0x00001e90,
- 0x00001e92, 0x00001e93, 0x00001e92,
- 0x00001e94, 0x00001e95, 0x00001e94,
- 0x00001e9e, 0x000000df, 0x00001e9e,
- 0x00001ea0, 0x00001ea1, 0x00001ea0,
- 0x00001ea2, 0x00001ea3, 0x00001ea2,
- 0x00001ea4, 0x00001ea5, 0x00001ea4,
- 0x00001ea6, 0x00001ea7, 0x00001ea6,
- 0x00001ea8, 0x00001ea9, 0x00001ea8,
- 0x00001eaa, 0x00001eab, 0x00001eaa,
- 0x00001eac, 0x00001ead, 0x00001eac,
- 0x00001eae, 0x00001eaf, 0x00001eae,
- 0x00001eb0, 0x00001eb1, 0x00001eb0,
- 0x00001eb2, 0x00001eb3, 0x00001eb2,
- 0x00001eb4, 0x00001eb5, 0x00001eb4,
- 0x00001eb6, 0x00001eb7, 0x00001eb6,
- 0x00001eb8, 0x00001eb9, 0x00001eb8,
- 0x00001eba, 0x00001ebb, 0x00001eba,
- 0x00001ebc, 0x00001ebd, 0x00001ebc,
- 0x00001ebe, 0x00001ebf, 0x00001ebe,
- 0x00001ec0, 0x00001ec1, 0x00001ec0,
- 0x00001ec2, 0x00001ec3, 0x00001ec2,
- 0x00001ec4, 0x00001ec5, 0x00001ec4,
- 0x00001ec6, 0x00001ec7, 0x00001ec6,
- 0x00001ec8, 0x00001ec9, 0x00001ec8,
- 0x00001eca, 0x00001ecb, 0x00001eca,
- 0x00001ecc, 0x00001ecd, 0x00001ecc,
- 0x00001ece, 0x00001ecf, 0x00001ece,
- 0x00001ed0, 0x00001ed1, 0x00001ed0,
- 0x00001ed2, 0x00001ed3, 0x00001ed2,
- 0x00001ed4, 0x00001ed5, 0x00001ed4,
- 0x00001ed6, 0x00001ed7, 0x00001ed6,
- 0x00001ed8, 0x00001ed9, 0x00001ed8,
- 0x00001eda, 0x00001edb, 0x00001eda,
- 0x00001edc, 0x00001edd, 0x00001edc,
- 0x00001ede, 0x00001edf, 0x00001ede,
- 0x00001ee0, 0x00001ee1, 0x00001ee0,
- 0x00001ee2, 0x00001ee3, 0x00001ee2,
- 0x00001ee4, 0x00001ee5, 0x00001ee4,
- 0x00001ee6, 0x00001ee7, 0x00001ee6,
- 0x00001ee8, 0x00001ee9, 0x00001ee8,
- 0x00001eea, 0x00001eeb, 0x00001eea,
- 0x00001eec, 0x00001eed, 0x00001eec,
- 0x00001eee, 0x00001eef, 0x00001eee,
- 0x00001ef0, 0x00001ef1, 0x00001ef0,
- 0x00001ef2, 0x00001ef3, 0x00001ef2,
- 0x00001ef4, 0x00001ef5, 0x00001ef4,
- 0x00001ef6, 0x00001ef7, 0x00001ef6,
- 0x00001ef8, 0x00001ef9, 0x00001ef8,
- 0x00001efa, 0x00001efb, 0x00001efa,
- 0x00001efc, 0x00001efd, 0x00001efc,
- 0x00001efe, 0x00001eff, 0x00001efe,
- 0x00001f08, 0x00001f00, 0x00001f08,
- 0x00001f09, 0x00001f01, 0x00001f09,
- 0x00001f0a, 0x00001f02, 0x00001f0a,
- 0x00001f0b, 0x00001f03, 0x00001f0b,
- 0x00001f0c, 0x00001f04, 0x00001f0c,
- 0x00001f0d, 0x00001f05, 0x00001f0d,
- 0x00001f0e, 0x00001f06, 0x00001f0e,
- 0x00001f0f, 0x00001f07, 0x00001f0f,
- 0x00001f18, 0x00001f10, 0x00001f18,
- 0x00001f19, 0x00001f11, 0x00001f19,
- 0x00001f1a, 0x00001f12, 0x00001f1a,
- 0x00001f1b, 0x00001f13, 0x00001f1b,
- 0x00001f1c, 0x00001f14, 0x00001f1c,
- 0x00001f1d, 0x00001f15, 0x00001f1d,
- 0x00001f28, 0x00001f20, 0x00001f28,
- 0x00001f29, 0x00001f21, 0x00001f29,
- 0x00001f2a, 0x00001f22, 0x00001f2a,
- 0x00001f2b, 0x00001f23, 0x00001f2b,
- 0x00001f2c, 0x00001f24, 0x00001f2c,
- 0x00001f2d, 0x00001f25, 0x00001f2d,
- 0x00001f2e, 0x00001f26, 0x00001f2e,
- 0x00001f2f, 0x00001f27, 0x00001f2f,
- 0x00001f38, 0x00001f30, 0x00001f38,
- 0x00001f39, 0x00001f31, 0x00001f39,
- 0x00001f3a, 0x00001f32, 0x00001f3a,
- 0x00001f3b, 0x00001f33, 0x00001f3b,
- 0x00001f3c, 0x00001f34, 0x00001f3c,
- 0x00001f3d, 0x00001f35, 0x00001f3d,
- 0x00001f3e, 0x00001f36, 0x00001f3e,
- 0x00001f3f, 0x00001f37, 0x00001f3f,
- 0x00001f48, 0x00001f40, 0x00001f48,
- 0x00001f49, 0x00001f41, 0x00001f49,
- 0x00001f4a, 0x00001f42, 0x00001f4a,
- 0x00001f4b, 0x00001f43, 0x00001f4b,
- 0x00001f4c, 0x00001f44, 0x00001f4c,
- 0x00001f4d, 0x00001f45, 0x00001f4d,
- 0x00001f59, 0x00001f51, 0x00001f59,
- 0x00001f5b, 0x00001f53, 0x00001f5b,
- 0x00001f5d, 0x00001f55, 0x00001f5d,
- 0x00001f5f, 0x00001f57, 0x00001f5f,
- 0x00001f68, 0x00001f60, 0x00001f68,
- 0x00001f69, 0x00001f61, 0x00001f69,
- 0x00001f6a, 0x00001f62, 0x00001f6a,
- 0x00001f6b, 0x00001f63, 0x00001f6b,
- 0x00001f6c, 0x00001f64, 0x00001f6c,
- 0x00001f6d, 0x00001f65, 0x00001f6d,
- 0x00001f6e, 0x00001f66, 0x00001f6e,
- 0x00001f6f, 0x00001f67, 0x00001f6f,
- 0x00001fb8, 0x00001fb0, 0x00001fb8,
- 0x00001fb9, 0x00001fb1, 0x00001fb9,
- 0x00001fba, 0x00001f70, 0x00001fba,
- 0x00001fbb, 0x00001f71, 0x00001fbb,
- 0x00001fc8, 0x00001f72, 0x00001fc8,
- 0x00001fc9, 0x00001f73, 0x00001fc9,
- 0x00001fca, 0x00001f74, 0x00001fca,
- 0x00001fcb, 0x00001f75, 0x00001fcb,
- 0x00001fd8, 0x00001fd0, 0x00001fd8,
- 0x00001fd9, 0x00001fd1, 0x00001fd9,
- 0x00001fda, 0x00001f76, 0x00001fda,
- 0x00001fdb, 0x00001f77, 0x00001fdb,
- 0x00001fe8, 0x00001fe0, 0x00001fe8,
- 0x00001fe9, 0x00001fe1, 0x00001fe9,
- 0x00001fea, 0x00001f7a, 0x00001fea,
- 0x00001feb, 0x00001f7b, 0x00001feb,
- 0x00001fec, 0x00001fe5, 0x00001fec,
- 0x00001ff8, 0x00001f78, 0x00001ff8,
- 0x00001ff9, 0x00001f79, 0x00001ff9,
- 0x00001ffa, 0x00001f7c, 0x00001ffa,
- 0x00001ffb, 0x00001f7d, 0x00001ffb,
- 0x00002126, 0x000003c9, 0x00002126,
- 0x0000212a, 0x0000006b, 0x0000212a,
- 0x0000212b, 0x000000e5, 0x0000212b,
- 0x00002132, 0x0000214e, 0x00002132,
- 0x00002160, 0x00002170, 0x00002160,
- 0x00002161, 0x00002171, 0x00002161,
- 0x00002162, 0x00002172, 0x00002162,
- 0x00002163, 0x00002173, 0x00002163,
- 0x00002164, 0x00002174, 0x00002164,
- 0x00002165, 0x00002175, 0x00002165,
- 0x00002166, 0x00002176, 0x00002166,
- 0x00002167, 0x00002177, 0x00002167,
- 0x00002168, 0x00002178, 0x00002168,
- 0x00002169, 0x00002179, 0x00002169,
- 0x0000216a, 0x0000217a, 0x0000216a,
- 0x0000216b, 0x0000217b, 0x0000216b,
- 0x0000216c, 0x0000217c, 0x0000216c,
- 0x0000216d, 0x0000217d, 0x0000216d,
- 0x0000216e, 0x0000217e, 0x0000216e,
- 0x0000216f, 0x0000217f, 0x0000216f,
- 0x00002183, 0x00002184, 0x00002183,
- 0x000024b6, 0x000024d0, 0x000024b6,
- 0x000024b7, 0x000024d1, 0x000024b7,
- 0x000024b8, 0x000024d2, 0x000024b8,
- 0x000024b9, 0x000024d3, 0x000024b9,
- 0x000024ba, 0x000024d4, 0x000024ba,
- 0x000024bb, 0x000024d5, 0x000024bb,
- 0x000024bc, 0x000024d6, 0x000024bc,
- 0x000024bd, 0x000024d7, 0x000024bd,
- 0x000024be, 0x000024d8, 0x000024be,
- 0x000024bf, 0x000024d9, 0x000024bf,
- 0x000024c0, 0x000024da, 0x000024c0,
- 0x000024c1, 0x000024db, 0x000024c1,
- 0x000024c2, 0x000024dc, 0x000024c2,
- 0x000024c3, 0x000024dd, 0x000024c3,
- 0x000024c4, 0x000024de, 0x000024c4,
- 0x000024c5, 0x000024df, 0x000024c5,
- 0x000024c6, 0x000024e0, 0x000024c6,
- 0x000024c7, 0x000024e1, 0x000024c7,
- 0x000024c8, 0x000024e2, 0x000024c8,
- 0x000024c9, 0x000024e3, 0x000024c9,
- 0x000024ca, 0x000024e4, 0x000024ca,
- 0x000024cb, 0x000024e5, 0x000024cb,
- 0x000024cc, 0x000024e6, 0x000024cc,
- 0x000024cd, 0x000024e7, 0x000024cd,
- 0x000024ce, 0x000024e8, 0x000024ce,
- 0x000024cf, 0x000024e9, 0x000024cf,
- 0x00002c00, 0x00002c30, 0x00002c00,
- 0x00002c01, 0x00002c31, 0x00002c01,
- 0x00002c02, 0x00002c32, 0x00002c02,
- 0x00002c03, 0x00002c33, 0x00002c03,
- 0x00002c04, 0x00002c34, 0x00002c04,
- 0x00002c05, 0x00002c35, 0x00002c05,
- 0x00002c06, 0x00002c36, 0x00002c06,
- 0x00002c07, 0x00002c37, 0x00002c07,
- 0x00002c08, 0x00002c38, 0x00002c08,
- 0x00002c09, 0x00002c39, 0x00002c09,
- 0x00002c0a, 0x00002c3a, 0x00002c0a,
- 0x00002c0b, 0x00002c3b, 0x00002c0b,
- 0x00002c0c, 0x00002c3c, 0x00002c0c,
- 0x00002c0d, 0x00002c3d, 0x00002c0d,
- 0x00002c0e, 0x00002c3e, 0x00002c0e,
- 0x00002c0f, 0x00002c3f, 0x00002c0f,
- 0x00002c10, 0x00002c40, 0x00002c10,
- 0x00002c11, 0x00002c41, 0x00002c11,
- 0x00002c12, 0x00002c42, 0x00002c12,
- 0x00002c13, 0x00002c43, 0x00002c13,
- 0x00002c14, 0x00002c44, 0x00002c14,
- 0x00002c15, 0x00002c45, 0x00002c15,
- 0x00002c16, 0x00002c46, 0x00002c16,
- 0x00002c17, 0x00002c47, 0x00002c17,
- 0x00002c18, 0x00002c48, 0x00002c18,
- 0x00002c19, 0x00002c49, 0x00002c19,
- 0x00002c1a, 0x00002c4a, 0x00002c1a,
- 0x00002c1b, 0x00002c4b, 0x00002c1b,
- 0x00002c1c, 0x00002c4c, 0x00002c1c,
- 0x00002c1d, 0x00002c4d, 0x00002c1d,
- 0x00002c1e, 0x00002c4e, 0x00002c1e,
- 0x00002c1f, 0x00002c4f, 0x00002c1f,
- 0x00002c20, 0x00002c50, 0x00002c20,
- 0x00002c21, 0x00002c51, 0x00002c21,
- 0x00002c22, 0x00002c52, 0x00002c22,
- 0x00002c23, 0x00002c53, 0x00002c23,
- 0x00002c24, 0x00002c54, 0x00002c24,
- 0x00002c25, 0x00002c55, 0x00002c25,
- 0x00002c26, 0x00002c56, 0x00002c26,
- 0x00002c27, 0x00002c57, 0x00002c27,
- 0x00002c28, 0x00002c58, 0x00002c28,
- 0x00002c29, 0x00002c59, 0x00002c29,
- 0x00002c2a, 0x00002c5a, 0x00002c2a,
- 0x00002c2b, 0x00002c5b, 0x00002c2b,
- 0x00002c2c, 0x00002c5c, 0x00002c2c,
- 0x00002c2d, 0x00002c5d, 0x00002c2d,
- 0x00002c2e, 0x00002c5e, 0x00002c2e,
- 0x00002c60, 0x00002c61, 0x00002c60,
- 0x00002c62, 0x0000026b, 0x00002c62,
- 0x00002c63, 0x00001d7d, 0x00002c63,
- 0x00002c64, 0x0000027d, 0x00002c64,
- 0x00002c67, 0x00002c68, 0x00002c67,
- 0x00002c69, 0x00002c6a, 0x00002c69,
- 0x00002c6b, 0x00002c6c, 0x00002c6b,
- 0x00002c6d, 0x00000251, 0x00002c6d,
- 0x00002c6e, 0x00000271, 0x00002c6e,
- 0x00002c6f, 0x00000250, 0x00002c6f,
- 0x00002c70, 0x00000252, 0x00002c70,
- 0x00002c72, 0x00002c73, 0x00002c72,
- 0x00002c75, 0x00002c76, 0x00002c75,
- 0x00002c7e, 0x0000023f, 0x00002c7e,
- 0x00002c7f, 0x00000240, 0x00002c7f,
- 0x00002c80, 0x00002c81, 0x00002c80,
- 0x00002c82, 0x00002c83, 0x00002c82,
- 0x00002c84, 0x00002c85, 0x00002c84,
- 0x00002c86, 0x00002c87, 0x00002c86,
- 0x00002c88, 0x00002c89, 0x00002c88,
- 0x00002c8a, 0x00002c8b, 0x00002c8a,
- 0x00002c8c, 0x00002c8d, 0x00002c8c,
- 0x00002c8e, 0x00002c8f, 0x00002c8e,
- 0x00002c90, 0x00002c91, 0x00002c90,
- 0x00002c92, 0x00002c93, 0x00002c92,
- 0x00002c94, 0x00002c95, 0x00002c94,
- 0x00002c96, 0x00002c97, 0x00002c96,
- 0x00002c98, 0x00002c99, 0x00002c98,
- 0x00002c9a, 0x00002c9b, 0x00002c9a,
- 0x00002c9c, 0x00002c9d, 0x00002c9c,
- 0x00002c9e, 0x00002c9f, 0x00002c9e,
- 0x00002ca0, 0x00002ca1, 0x00002ca0,
- 0x00002ca2, 0x00002ca3, 0x00002ca2,
- 0x00002ca4, 0x00002ca5, 0x00002ca4,
- 0x00002ca6, 0x00002ca7, 0x00002ca6,
- 0x00002ca8, 0x00002ca9, 0x00002ca8,
- 0x00002caa, 0x00002cab, 0x00002caa,
- 0x00002cac, 0x00002cad, 0x00002cac,
- 0x00002cae, 0x00002caf, 0x00002cae,
- 0x00002cb0, 0x00002cb1, 0x00002cb0,
- 0x00002cb2, 0x00002cb3, 0x00002cb2,
- 0x00002cb4, 0x00002cb5, 0x00002cb4,
- 0x00002cb6, 0x00002cb7, 0x00002cb6,
- 0x00002cb8, 0x00002cb9, 0x00002cb8,
- 0x00002cba, 0x00002cbb, 0x00002cba,
- 0x00002cbc, 0x00002cbd, 0x00002cbc,
- 0x00002cbe, 0x00002cbf, 0x00002cbe,
- 0x00002cc0, 0x00002cc1, 0x00002cc0,
- 0x00002cc2, 0x00002cc3, 0x00002cc2,
- 0x00002cc4, 0x00002cc5, 0x00002cc4,
- 0x00002cc6, 0x00002cc7, 0x00002cc6,
- 0x00002cc8, 0x00002cc9, 0x00002cc8,
- 0x00002cca, 0x00002ccb, 0x00002cca,
- 0x00002ccc, 0x00002ccd, 0x00002ccc,
- 0x00002cce, 0x00002ccf, 0x00002cce,
- 0x00002cd0, 0x00002cd1, 0x00002cd0,
- 0x00002cd2, 0x00002cd3, 0x00002cd2,
- 0x00002cd4, 0x00002cd5, 0x00002cd4,
- 0x00002cd6, 0x00002cd7, 0x00002cd6,
- 0x00002cd8, 0x00002cd9, 0x00002cd8,
- 0x00002cda, 0x00002cdb, 0x00002cda,
- 0x00002cdc, 0x00002cdd, 0x00002cdc,
- 0x00002cde, 0x00002cdf, 0x00002cde,
- 0x00002ce0, 0x00002ce1, 0x00002ce0,
- 0x00002ce2, 0x00002ce3, 0x00002ce2,
- 0x00002ceb, 0x00002cec, 0x00002ceb,
- 0x00002ced, 0x00002cee, 0x00002ced,
- 0x00002cf2, 0x00002cf3, 0x00002cf2,
- 0x0000a640, 0x0000a641, 0x0000a640,
- 0x0000a642, 0x0000a643, 0x0000a642,
- 0x0000a644, 0x0000a645, 0x0000a644,
- 0x0000a646, 0x0000a647, 0x0000a646,
- 0x0000a648, 0x0000a649, 0x0000a648,
- 0x0000a64a, 0x0000a64b, 0x0000a64a,
- 0x0000a64c, 0x0000a64d, 0x0000a64c,
- 0x0000a64e, 0x0000a64f, 0x0000a64e,
- 0x0000a650, 0x0000a651, 0x0000a650,
- 0x0000a652, 0x0000a653, 0x0000a652,
- 0x0000a654, 0x0000a655, 0x0000a654,
- 0x0000a656, 0x0000a657, 0x0000a656,
- 0x0000a658, 0x0000a659, 0x0000a658,
- 0x0000a65a, 0x0000a65b, 0x0000a65a,
- 0x0000a65c, 0x0000a65d, 0x0000a65c,
- 0x0000a65e, 0x0000a65f, 0x0000a65e,
- 0x0000a660, 0x0000a661, 0x0000a660,
- 0x0000a662, 0x0000a663, 0x0000a662,
- 0x0000a664, 0x0000a665, 0x0000a664,
- 0x0000a666, 0x0000a667, 0x0000a666,
- 0x0000a668, 0x0000a669, 0x0000a668,
- 0x0000a66a, 0x0000a66b, 0x0000a66a,
- 0x0000a66c, 0x0000a66d, 0x0000a66c,
- 0x0000a680, 0x0000a681, 0x0000a680,
- 0x0000a682, 0x0000a683, 0x0000a682,
- 0x0000a684, 0x0000a685, 0x0000a684,
- 0x0000a686, 0x0000a687, 0x0000a686,
- 0x0000a688, 0x0000a689, 0x0000a688,
- 0x0000a68a, 0x0000a68b, 0x0000a68a,
- 0x0000a68c, 0x0000a68d, 0x0000a68c,
- 0x0000a68e, 0x0000a68f, 0x0000a68e,
- 0x0000a690, 0x0000a691, 0x0000a690,
- 0x0000a692, 0x0000a693, 0x0000a692,
- 0x0000a694, 0x0000a695, 0x0000a694,
- 0x0000a696, 0x0000a697, 0x0000a696,
- 0x0000a698, 0x0000a699, 0x0000a698,
- 0x0000a69a, 0x0000a69b, 0x0000a69a,
- 0x0000a722, 0x0000a723, 0x0000a722,
- 0x0000a724, 0x0000a725, 0x0000a724,
- 0x0000a726, 0x0000a727, 0x0000a726,
- 0x0000a728, 0x0000a729, 0x0000a728,
- 0x0000a72a, 0x0000a72b, 0x0000a72a,
- 0x0000a72c, 0x0000a72d, 0x0000a72c,
- 0x0000a72e, 0x0000a72f, 0x0000a72e,
- 0x0000a732, 0x0000a733, 0x0000a732,
- 0x0000a734, 0x0000a735, 0x0000a734,
- 0x0000a736, 0x0000a737, 0x0000a736,
- 0x0000a738, 0x0000a739, 0x0000a738,
- 0x0000a73a, 0x0000a73b, 0x0000a73a,
- 0x0000a73c, 0x0000a73d, 0x0000a73c,
- 0x0000a73e, 0x0000a73f, 0x0000a73e,
- 0x0000a740, 0x0000a741, 0x0000a740,
- 0x0000a742, 0x0000a743, 0x0000a742,
- 0x0000a744, 0x0000a745, 0x0000a744,
- 0x0000a746, 0x0000a747, 0x0000a746,
- 0x0000a748, 0x0000a749, 0x0000a748,
- 0x0000a74a, 0x0000a74b, 0x0000a74a,
- 0x0000a74c, 0x0000a74d, 0x0000a74c,
- 0x0000a74e, 0x0000a74f, 0x0000a74e,
- 0x0000a750, 0x0000a751, 0x0000a750,
- 0x0000a752, 0x0000a753, 0x0000a752,
- 0x0000a754, 0x0000a755, 0x0000a754,
- 0x0000a756, 0x0000a757, 0x0000a756,
- 0x0000a758, 0x0000a759, 0x0000a758,
- 0x0000a75a, 0x0000a75b, 0x0000a75a,
- 0x0000a75c, 0x0000a75d, 0x0000a75c,
- 0x0000a75e, 0x0000a75f, 0x0000a75e,
- 0x0000a760, 0x0000a761, 0x0000a760,
- 0x0000a762, 0x0000a763, 0x0000a762,
- 0x0000a764, 0x0000a765, 0x0000a764,
- 0x0000a766, 0x0000a767, 0x0000a766,
- 0x0000a768, 0x0000a769, 0x0000a768,
- 0x0000a76a, 0x0000a76b, 0x0000a76a,
- 0x0000a76c, 0x0000a76d, 0x0000a76c,
- 0x0000a76e, 0x0000a76f, 0x0000a76e,
- 0x0000a779, 0x0000a77a, 0x0000a779,
- 0x0000a77b, 0x0000a77c, 0x0000a77b,
- 0x0000a77d, 0x00001d79, 0x0000a77d,
- 0x0000a77e, 0x0000a77f, 0x0000a77e,
- 0x0000a780, 0x0000a781, 0x0000a780,
- 0x0000a782, 0x0000a783, 0x0000a782,
- 0x0000a784, 0x0000a785, 0x0000a784,
- 0x0000a786, 0x0000a787, 0x0000a786,
- 0x0000a78b, 0x0000a78c, 0x0000a78b,
- 0x0000a78d, 0x00000265, 0x0000a78d,
- 0x0000a790, 0x0000a791, 0x0000a790,
- 0x0000a792, 0x0000a793, 0x0000a792,
- 0x0000a796, 0x0000a797, 0x0000a796,
- 0x0000a798, 0x0000a799, 0x0000a798,
- 0x0000a79a, 0x0000a79b, 0x0000a79a,
- 0x0000a79c, 0x0000a79d, 0x0000a79c,
- 0x0000a79e, 0x0000a79f, 0x0000a79e,
- 0x0000a7a0, 0x0000a7a1, 0x0000a7a0,
- 0x0000a7a2, 0x0000a7a3, 0x0000a7a2,
- 0x0000a7a4, 0x0000a7a5, 0x0000a7a4,
- 0x0000a7a6, 0x0000a7a7, 0x0000a7a6,
- 0x0000a7a8, 0x0000a7a9, 0x0000a7a8,
- 0x0000a7aa, 0x00000266, 0x0000a7aa,
- 0x0000a7ab, 0x0000025c, 0x0000a7ab,
- 0x0000a7ac, 0x00000261, 0x0000a7ac,
- 0x0000a7ad, 0x0000026c, 0x0000a7ad,
- 0x0000a7ae, 0x0000026a, 0x0000a7ae,
- 0x0000a7b0, 0x0000029e, 0x0000a7b0,
- 0x0000a7b1, 0x00000287, 0x0000a7b1,
- 0x0000a7b2, 0x0000029d, 0x0000a7b2,
- 0x0000a7b3, 0x0000ab53, 0x0000a7b3,
- 0x0000a7b4, 0x0000a7b5, 0x0000a7b4,
- 0x0000a7b6, 0x0000a7b7, 0x0000a7b6,
- 0x0000ff21, 0x0000ff41, 0x0000ff21,
- 0x0000ff22, 0x0000ff42, 0x0000ff22,
- 0x0000ff23, 0x0000ff43, 0x0000ff23,
- 0x0000ff24, 0x0000ff44, 0x0000ff24,
- 0x0000ff25, 0x0000ff45, 0x0000ff25,
- 0x0000ff26, 0x0000ff46, 0x0000ff26,
- 0x0000ff27, 0x0000ff47, 0x0000ff27,
- 0x0000ff28, 0x0000ff48, 0x0000ff28,
- 0x0000ff29, 0x0000ff49, 0x0000ff29,
- 0x0000ff2a, 0x0000ff4a, 0x0000ff2a,
- 0x0000ff2b, 0x0000ff4b, 0x0000ff2b,
- 0x0000ff2c, 0x0000ff4c, 0x0000ff2c,
- 0x0000ff2d, 0x0000ff4d, 0x0000ff2d,
- 0x0000ff2e, 0x0000ff4e, 0x0000ff2e,
- 0x0000ff2f, 0x0000ff4f, 0x0000ff2f,
- 0x0000ff30, 0x0000ff50, 0x0000ff30,
- 0x0000ff31, 0x0000ff51, 0x0000ff31,
- 0x0000ff32, 0x0000ff52, 0x0000ff32,
- 0x0000ff33, 0x0000ff53, 0x0000ff33,
- 0x0000ff34, 0x0000ff54, 0x0000ff34,
- 0x0000ff35, 0x0000ff55, 0x0000ff35,
- 0x0000ff36, 0x0000ff56, 0x0000ff36,
- 0x0000ff37, 0x0000ff57, 0x0000ff37,
- 0x0000ff38, 0x0000ff58, 0x0000ff38,
- 0x0000ff39, 0x0000ff59, 0x0000ff39,
- 0x0000ff3a, 0x0000ff5a, 0x0000ff3a,
- 0x00010400, 0x00010428, 0x00010400,
- 0x00010401, 0x00010429, 0x00010401,
- 0x00010402, 0x0001042a, 0x00010402,
- 0x00010403, 0x0001042b, 0x00010403,
- 0x00010404, 0x0001042c, 0x00010404,
- 0x00010405, 0x0001042d, 0x00010405,
- 0x00010406, 0x0001042e, 0x00010406,
- 0x00010407, 0x0001042f, 0x00010407,
- 0x00010408, 0x00010430, 0x00010408,
- 0x00010409, 0x00010431, 0x00010409,
- 0x0001040a, 0x00010432, 0x0001040a,
- 0x0001040b, 0x00010433, 0x0001040b,
- 0x0001040c, 0x00010434, 0x0001040c,
- 0x0001040d, 0x00010435, 0x0001040d,
- 0x0001040e, 0x00010436, 0x0001040e,
- 0x0001040f, 0x00010437, 0x0001040f,
- 0x00010410, 0x00010438, 0x00010410,
- 0x00010411, 0x00010439, 0x00010411,
- 0x00010412, 0x0001043a, 0x00010412,
- 0x00010413, 0x0001043b, 0x00010413,
- 0x00010414, 0x0001043c, 0x00010414,
- 0x00010415, 0x0001043d, 0x00010415,
- 0x00010416, 0x0001043e, 0x00010416,
- 0x00010417, 0x0001043f, 0x00010417,
- 0x00010418, 0x00010440, 0x00010418,
- 0x00010419, 0x00010441, 0x00010419,
- 0x0001041a, 0x00010442, 0x0001041a,
- 0x0001041b, 0x00010443, 0x0001041b,
- 0x0001041c, 0x00010444, 0x0001041c,
- 0x0001041d, 0x00010445, 0x0001041d,
- 0x0001041e, 0x00010446, 0x0001041e,
- 0x0001041f, 0x00010447, 0x0001041f,
- 0x00010420, 0x00010448, 0x00010420,
- 0x00010421, 0x00010449, 0x00010421,
- 0x00010422, 0x0001044a, 0x00010422,
- 0x00010423, 0x0001044b, 0x00010423,
- 0x00010424, 0x0001044c, 0x00010424,
- 0x00010425, 0x0001044d, 0x00010425,
- 0x00010426, 0x0001044e, 0x00010426,
- 0x00010427, 0x0001044f, 0x00010427,
- 0x000104b0, 0x000104d8, 0x000104b0,
- 0x000104b1, 0x000104d9, 0x000104b1,
- 0x000104b2, 0x000104da, 0x000104b2,
- 0x000104b3, 0x000104db, 0x000104b3,
- 0x000104b4, 0x000104dc, 0x000104b4,
- 0x000104b5, 0x000104dd, 0x000104b5,
- 0x000104b6, 0x000104de, 0x000104b6,
- 0x000104b7, 0x000104df, 0x000104b7,
- 0x000104b8, 0x000104e0, 0x000104b8,
- 0x000104b9, 0x000104e1, 0x000104b9,
- 0x000104ba, 0x000104e2, 0x000104ba,
- 0x000104bb, 0x000104e3, 0x000104bb,
- 0x000104bc, 0x000104e4, 0x000104bc,
- 0x000104bd, 0x000104e5, 0x000104bd,
- 0x000104be, 0x000104e6, 0x000104be,
- 0x000104bf, 0x000104e7, 0x000104bf,
- 0x000104c0, 0x000104e8, 0x000104c0,
- 0x000104c1, 0x000104e9, 0x000104c1,
- 0x000104c2, 0x000104ea, 0x000104c2,
- 0x000104c3, 0x000104eb, 0x000104c3,
- 0x000104c4, 0x000104ec, 0x000104c4,
- 0x000104c5, 0x000104ed, 0x000104c5,
- 0x000104c6, 0x000104ee, 0x000104c6,
- 0x000104c7, 0x000104ef, 0x000104c7,
- 0x000104c8, 0x000104f0, 0x000104c8,
- 0x000104c9, 0x000104f1, 0x000104c9,
- 0x000104ca, 0x000104f2, 0x000104ca,
- 0x000104cb, 0x000104f3, 0x000104cb,
- 0x000104cc, 0x000104f4, 0x000104cc,
- 0x000104cd, 0x000104f5, 0x000104cd,
- 0x000104ce, 0x000104f6, 0x000104ce,
- 0x000104cf, 0x000104f7, 0x000104cf,
- 0x000104d0, 0x000104f8, 0x000104d0,
- 0x000104d1, 0x000104f9, 0x000104d1,
- 0x000104d2, 0x000104fa, 0x000104d2,
- 0x000104d3, 0x000104fb, 0x000104d3,
- 0x00010c80, 0x00010cc0, 0x00010c80,
- 0x00010c81, 0x00010cc1, 0x00010c81,
- 0x00010c82, 0x00010cc2, 0x00010c82,
- 0x00010c83, 0x00010cc3, 0x00010c83,
- 0x00010c84, 0x00010cc4, 0x00010c84,
- 0x00010c85, 0x00010cc5, 0x00010c85,
- 0x00010c86, 0x00010cc6, 0x00010c86,
- 0x00010c87, 0x00010cc7, 0x00010c87,
- 0x00010c88, 0x00010cc8, 0x00010c88,
- 0x00010c89, 0x00010cc9, 0x00010c89,
- 0x00010c8a, 0x00010cca, 0x00010c8a,
- 0x00010c8b, 0x00010ccb, 0x00010c8b,
- 0x00010c8c, 0x00010ccc, 0x00010c8c,
- 0x00010c8d, 0x00010ccd, 0x00010c8d,
- 0x00010c8e, 0x00010cce, 0x00010c8e,
- 0x00010c8f, 0x00010ccf, 0x00010c8f,
- 0x00010c90, 0x00010cd0, 0x00010c90,
- 0x00010c91, 0x00010cd1, 0x00010c91,
- 0x00010c92, 0x00010cd2, 0x00010c92,
- 0x00010c93, 0x00010cd3, 0x00010c93,
- 0x00010c94, 0x00010cd4, 0x00010c94,
- 0x00010c95, 0x00010cd5, 0x00010c95,
- 0x00010c96, 0x00010cd6, 0x00010c96,
- 0x00010c97, 0x00010cd7, 0x00010c97,
- 0x00010c98, 0x00010cd8, 0x00010c98,
- 0x00010c99, 0x00010cd9, 0x00010c99,
- 0x00010c9a, 0x00010cda, 0x00010c9a,
- 0x00010c9b, 0x00010cdb, 0x00010c9b,
- 0x00010c9c, 0x00010cdc, 0x00010c9c,
- 0x00010c9d, 0x00010cdd, 0x00010c9d,
- 0x00010c9e, 0x00010cde, 0x00010c9e,
- 0x00010c9f, 0x00010cdf, 0x00010c9f,
- 0x00010ca0, 0x00010ce0, 0x00010ca0,
- 0x00010ca1, 0x00010ce1, 0x00010ca1,
- 0x00010ca2, 0x00010ce2, 0x00010ca2,
- 0x00010ca3, 0x00010ce3, 0x00010ca3,
- 0x00010ca4, 0x00010ce4, 0x00010ca4,
- 0x00010ca5, 0x00010ce5, 0x00010ca5,
- 0x00010ca6, 0x00010ce6, 0x00010ca6,
- 0x00010ca7, 0x00010ce7, 0x00010ca7,
- 0x00010ca8, 0x00010ce8, 0x00010ca8,
- 0x00010ca9, 0x00010ce9, 0x00010ca9,
- 0x00010caa, 0x00010cea, 0x00010caa,
- 0x00010cab, 0x00010ceb, 0x00010cab,
- 0x00010cac, 0x00010cec, 0x00010cac,
- 0x00010cad, 0x00010ced, 0x00010cad,
- 0x00010cae, 0x00010cee, 0x00010cae,
- 0x00010caf, 0x00010cef, 0x00010caf,
- 0x00010cb0, 0x00010cf0, 0x00010cb0,
- 0x00010cb1, 0x00010cf1, 0x00010cb1,
- 0x00010cb2, 0x00010cf2, 0x00010cb2,
- 0x000118a0, 0x000118c0, 0x000118a0,
- 0x000118a1, 0x000118c1, 0x000118a1,
- 0x000118a2, 0x000118c2, 0x000118a2,
- 0x000118a3, 0x000118c3, 0x000118a3,
- 0x000118a4, 0x000118c4, 0x000118a4,
- 0x000118a5, 0x000118c5, 0x000118a5,
- 0x000118a6, 0x000118c6, 0x000118a6,
- 0x000118a7, 0x000118c7, 0x000118a7,
- 0x000118a8, 0x000118c8, 0x000118a8,
- 0x000118a9, 0x000118c9, 0x000118a9,
- 0x000118aa, 0x000118ca, 0x000118aa,
- 0x000118ab, 0x000118cb, 0x000118ab,
- 0x000118ac, 0x000118cc, 0x000118ac,
- 0x000118ad, 0x000118cd, 0x000118ad,
- 0x000118ae, 0x000118ce, 0x000118ae,
- 0x000118af, 0x000118cf, 0x000118af,
- 0x000118b0, 0x000118d0, 0x000118b0,
- 0x000118b1, 0x000118d1, 0x000118b1,
- 0x000118b2, 0x000118d2, 0x000118b2,
- 0x000118b3, 0x000118d3, 0x000118b3,
- 0x000118b4, 0x000118d4, 0x000118b4,
- 0x000118b5, 0x000118d5, 0x000118b5,
- 0x000118b6, 0x000118d6, 0x000118b6,
- 0x000118b7, 0x000118d7, 0x000118b7,
- 0x000118b8, 0x000118d8, 0x000118b8,
- 0x000118b9, 0x000118d9, 0x000118b9,
- 0x000118ba, 0x000118da, 0x000118ba,
- 0x000118bb, 0x000118db, 0x000118bb,
- 0x000118bc, 0x000118dc, 0x000118bc,
- 0x000118bd, 0x000118dd, 0x000118bd,
- 0x000118be, 0x000118de, 0x000118be,
- 0x000118bf, 0x000118df, 0x000118bf,
- 0x0001e900, 0x0001e922, 0x0001e900,
- 0x0001e901, 0x0001e923, 0x0001e901,
- 0x0001e902, 0x0001e924, 0x0001e902,
- 0x0001e903, 0x0001e925, 0x0001e903,
- 0x0001e904, 0x0001e926, 0x0001e904,
- 0x0001e905, 0x0001e927, 0x0001e905,
- 0x0001e906, 0x0001e928, 0x0001e906,
- 0x0001e907, 0x0001e929, 0x0001e907,
- 0x0001e908, 0x0001e92a, 0x0001e908,
- 0x0001e909, 0x0001e92b, 0x0001e909,
- 0x0001e90a, 0x0001e92c, 0x0001e90a,
- 0x0001e90b, 0x0001e92d, 0x0001e90b,
- 0x0001e90c, 0x0001e92e, 0x0001e90c,
- 0x0001e90d, 0x0001e92f, 0x0001e90d,
- 0x0001e90e, 0x0001e930, 0x0001e90e,
- 0x0001e90f, 0x0001e931, 0x0001e90f,
- 0x0001e910, 0x0001e932, 0x0001e910,
- 0x0001e911, 0x0001e933, 0x0001e911,
- 0x0001e912, 0x0001e934, 0x0001e912,
- 0x0001e913, 0x0001e935, 0x0001e913,
- 0x0001e914, 0x0001e936, 0x0001e914,
- 0x0001e915, 0x0001e937, 0x0001e915,
- 0x0001e916, 0x0001e938, 0x0001e916,
- 0x0001e917, 0x0001e939, 0x0001e917,
- 0x0001e918, 0x0001e93a, 0x0001e918,
- 0x0001e919, 0x0001e93b, 0x0001e919,
- 0x0001e91a, 0x0001e93c, 0x0001e91a,
- 0x0001e91b, 0x0001e93d, 0x0001e91b,
- 0x0001e91c, 0x0001e93e, 0x0001e91c,
- 0x0001e91d, 0x0001e93f, 0x0001e91d,
- 0x0001e91e, 0x0001e940, 0x0001e91e,
- 0x0001e91f, 0x0001e941, 0x0001e91f,
- 0x0001e920, 0x0001e942, 0x0001e920,
- 0x0001e921, 0x0001e943, 0x0001e921,
- 0x00000061, 0x00000041, 0x00000041,
- 0x00000062, 0x00000042, 0x00000042,
- 0x00000063, 0x00000043, 0x00000043,
- 0x00000064, 0x00000044, 0x00000044,
- 0x00000065, 0x00000045, 0x00000045,
- 0x00000066, 0x00000046, 0x00000046,
- 0x00000067, 0x00000047, 0x00000047,
- 0x00000068, 0x00000048, 0x00000048,
- 0x00000069, 0x00000049, 0x00000049,
- 0x0000006a, 0x0000004a, 0x0000004a,
- 0x0000006b, 0x0000004b, 0x0000004b,
- 0x0000006c, 0x0000004c, 0x0000004c,
- 0x0000006d, 0x0000004d, 0x0000004d,
- 0x0000006e, 0x0000004e, 0x0000004e,
- 0x0000006f, 0x0000004f, 0x0000004f,
- 0x00000070, 0x00000050, 0x00000050,
- 0x00000071, 0x00000051, 0x00000051,
- 0x00000072, 0x00000052, 0x00000052,
- 0x00000073, 0x00000053, 0x00000053,
- 0x00000074, 0x00000054, 0x00000054,
- 0x00000075, 0x00000055, 0x00000055,
- 0x00000076, 0x00000056, 0x00000056,
- 0x00000077, 0x00000057, 0x00000057,
- 0x00000078, 0x00000058, 0x00000058,
- 0x00000079, 0x00000059, 0x00000059,
- 0x0000007a, 0x0000005a, 0x0000005a,
- 0x000000b5, 0x0000039c, 0x0000039c,
- 0x000000e0, 0x000000c0, 0x000000c0,
- 0x000000e1, 0x000000c1, 0x000000c1,
- 0x000000e2, 0x000000c2, 0x000000c2,
- 0x000000e3, 0x000000c3, 0x000000c3,
- 0x000000e4, 0x000000c4, 0x000000c4,
- 0x000000e5, 0x000000c5, 0x000000c5,
- 0x000000e6, 0x000000c6, 0x000000c6,
- 0x000000e7, 0x000000c7, 0x000000c7,
- 0x000000e8, 0x000000c8, 0x000000c8,
- 0x000000e9, 0x000000c9, 0x000000c9,
- 0x000000ea, 0x000000ca, 0x000000ca,
- 0x000000eb, 0x000000cb, 0x000000cb,
- 0x000000ec, 0x000000cc, 0x000000cc,
- 0x000000ed, 0x000000cd, 0x000000cd,
- 0x000000ee, 0x000000ce, 0x000000ce,
- 0x000000ef, 0x000000cf, 0x000000cf,
- 0x000000f0, 0x000000d0, 0x000000d0,
- 0x000000f1, 0x000000d1, 0x000000d1,
- 0x000000f2, 0x000000d2, 0x000000d2,
- 0x000000f3, 0x000000d3, 0x000000d3,
- 0x000000f4, 0x000000d4, 0x000000d4,
- 0x000000f5, 0x000000d5, 0x000000d5,
- 0x000000f6, 0x000000d6, 0x000000d6,
- 0x000000f8, 0x000000d8, 0x000000d8,
- 0x000000f9, 0x000000d9, 0x000000d9,
- 0x000000fa, 0x000000da, 0x000000da,
- 0x000000fb, 0x000000db, 0x000000db,
- 0x000000fc, 0x000000dc, 0x000000dc,
- 0x000000fd, 0x000000dd, 0x000000dd,
- 0x000000fe, 0x000000de, 0x000000de,
- 0x000000ff, 0x00000178, 0x00000178,
- 0x00000101, 0x00000100, 0x00000100,
- 0x00000103, 0x00000102, 0x00000102,
- 0x00000105, 0x00000104, 0x00000104,
- 0x00000107, 0x00000106, 0x00000106,
- 0x00000109, 0x00000108, 0x00000108,
- 0x0000010b, 0x0000010a, 0x0000010a,
- 0x0000010d, 0x0000010c, 0x0000010c,
- 0x0000010f, 0x0000010e, 0x0000010e,
- 0x00000111, 0x00000110, 0x00000110,
- 0x00000113, 0x00000112, 0x00000112,
- 0x00000115, 0x00000114, 0x00000114,
- 0x00000117, 0x00000116, 0x00000116,
- 0x00000119, 0x00000118, 0x00000118,
- 0x0000011b, 0x0000011a, 0x0000011a,
- 0x0000011d, 0x0000011c, 0x0000011c,
- 0x0000011f, 0x0000011e, 0x0000011e,
- 0x00000121, 0x00000120, 0x00000120,
- 0x00000123, 0x00000122, 0x00000122,
- 0x00000125, 0x00000124, 0x00000124,
- 0x00000127, 0x00000126, 0x00000126,
- 0x00000129, 0x00000128, 0x00000128,
- 0x0000012b, 0x0000012a, 0x0000012a,
- 0x0000012d, 0x0000012c, 0x0000012c,
- 0x0000012f, 0x0000012e, 0x0000012e,
- 0x00000131, 0x00000049, 0x00000049,
- 0x00000133, 0x00000132, 0x00000132,
- 0x00000135, 0x00000134, 0x00000134,
- 0x00000137, 0x00000136, 0x00000136,
- 0x0000013a, 0x00000139, 0x00000139,
- 0x0000013c, 0x0000013b, 0x0000013b,
- 0x0000013e, 0x0000013d, 0x0000013d,
- 0x00000140, 0x0000013f, 0x0000013f,
- 0x00000142, 0x00000141, 0x00000141,
- 0x00000144, 0x00000143, 0x00000143,
- 0x00000146, 0x00000145, 0x00000145,
- 0x00000148, 0x00000147, 0x00000147,
- 0x0000014b, 0x0000014a, 0x0000014a,
- 0x0000014d, 0x0000014c, 0x0000014c,
- 0x0000014f, 0x0000014e, 0x0000014e,
- 0x00000151, 0x00000150, 0x00000150,
- 0x00000153, 0x00000152, 0x00000152,
- 0x00000155, 0x00000154, 0x00000154,
- 0x00000157, 0x00000156, 0x00000156,
- 0x00000159, 0x00000158, 0x00000158,
- 0x0000015b, 0x0000015a, 0x0000015a,
- 0x0000015d, 0x0000015c, 0x0000015c,
- 0x0000015f, 0x0000015e, 0x0000015e,
- 0x00000161, 0x00000160, 0x00000160,
- 0x00000163, 0x00000162, 0x00000162,
- 0x00000165, 0x00000164, 0x00000164,
- 0x00000167, 0x00000166, 0x00000166,
- 0x00000169, 0x00000168, 0x00000168,
- 0x0000016b, 0x0000016a, 0x0000016a,
- 0x0000016d, 0x0000016c, 0x0000016c,
- 0x0000016f, 0x0000016e, 0x0000016e,
- 0x00000171, 0x00000170, 0x00000170,
- 0x00000173, 0x00000172, 0x00000172,
- 0x00000175, 0x00000174, 0x00000174,
- 0x00000177, 0x00000176, 0x00000176,
- 0x0000017a, 0x00000179, 0x00000179,
- 0x0000017c, 0x0000017b, 0x0000017b,
- 0x0000017e, 0x0000017d, 0x0000017d,
- 0x0000017f, 0x00000053, 0x00000053,
- 0x00000180, 0x00000243, 0x00000243,
- 0x00000183, 0x00000182, 0x00000182,
- 0x00000185, 0x00000184, 0x00000184,
- 0x00000188, 0x00000187, 0x00000187,
- 0x0000018c, 0x0000018b, 0x0000018b,
- 0x00000192, 0x00000191, 0x00000191,
- 0x00000195, 0x000001f6, 0x000001f6,
- 0x00000199, 0x00000198, 0x00000198,
- 0x0000019a, 0x0000023d, 0x0000023d,
- 0x0000019e, 0x00000220, 0x00000220,
- 0x000001a1, 0x000001a0, 0x000001a0,
- 0x000001a3, 0x000001a2, 0x000001a2,
- 0x000001a5, 0x000001a4, 0x000001a4,
- 0x000001a8, 0x000001a7, 0x000001a7,
- 0x000001ad, 0x000001ac, 0x000001ac,
- 0x000001b0, 0x000001af, 0x000001af,
- 0x000001b4, 0x000001b3, 0x000001b3,
- 0x000001b6, 0x000001b5, 0x000001b5,
- 0x000001b9, 0x000001b8, 0x000001b8,
- 0x000001bd, 0x000001bc, 0x000001bc,
- 0x000001bf, 0x000001f7, 0x000001f7,
- 0x000001c6, 0x000001c4, 0x000001c5,
- 0x000001c9, 0x000001c7, 0x000001c8,
- 0x000001cc, 0x000001ca, 0x000001cb,
- 0x000001ce, 0x000001cd, 0x000001cd,
- 0x000001d0, 0x000001cf, 0x000001cf,
- 0x000001d2, 0x000001d1, 0x000001d1,
- 0x000001d4, 0x000001d3, 0x000001d3,
- 0x000001d6, 0x000001d5, 0x000001d5,
- 0x000001d8, 0x000001d7, 0x000001d7,
- 0x000001da, 0x000001d9, 0x000001d9,
- 0x000001dc, 0x000001db, 0x000001db,
- 0x000001dd, 0x0000018e, 0x0000018e,
- 0x000001df, 0x000001de, 0x000001de,
- 0x000001e1, 0x000001e0, 0x000001e0,
- 0x000001e3, 0x000001e2, 0x000001e2,
- 0x000001e5, 0x000001e4, 0x000001e4,
- 0x000001e7, 0x000001e6, 0x000001e6,
- 0x000001e9, 0x000001e8, 0x000001e8,
- 0x000001eb, 0x000001ea, 0x000001ea,
- 0x000001ed, 0x000001ec, 0x000001ec,
- 0x000001ef, 0x000001ee, 0x000001ee,
- 0x000001f3, 0x000001f1, 0x000001f2,
- 0x000001f5, 0x000001f4, 0x000001f4,
- 0x000001f9, 0x000001f8, 0x000001f8,
- 0x000001fb, 0x000001fa, 0x000001fa,
- 0x000001fd, 0x000001fc, 0x000001fc,
- 0x000001ff, 0x000001fe, 0x000001fe,
- 0x00000201, 0x00000200, 0x00000200,
- 0x00000203, 0x00000202, 0x00000202,
- 0x00000205, 0x00000204, 0x00000204,
- 0x00000207, 0x00000206, 0x00000206,
- 0x00000209, 0x00000208, 0x00000208,
- 0x0000020b, 0x0000020a, 0x0000020a,
- 0x0000020d, 0x0000020c, 0x0000020c,
- 0x0000020f, 0x0000020e, 0x0000020e,
- 0x00000211, 0x00000210, 0x00000210,
- 0x00000213, 0x00000212, 0x00000212,
- 0x00000215, 0x00000214, 0x00000214,
- 0x00000217, 0x00000216, 0x00000216,
- 0x00000219, 0x00000218, 0x00000218,
- 0x0000021b, 0x0000021a, 0x0000021a,
- 0x0000021d, 0x0000021c, 0x0000021c,
- 0x0000021f, 0x0000021e, 0x0000021e,
- 0x00000223, 0x00000222, 0x00000222,
- 0x00000225, 0x00000224, 0x00000224,
- 0x00000227, 0x00000226, 0x00000226,
- 0x00000229, 0x00000228, 0x00000228,
- 0x0000022b, 0x0000022a, 0x0000022a,
- 0x0000022d, 0x0000022c, 0x0000022c,
- 0x0000022f, 0x0000022e, 0x0000022e,
- 0x00000231, 0x00000230, 0x00000230,
- 0x00000233, 0x00000232, 0x00000232,
- 0x0000023c, 0x0000023b, 0x0000023b,
- 0x0000023f, 0x00002c7e, 0x00002c7e,
- 0x00000240, 0x00002c7f, 0x00002c7f,
- 0x00000242, 0x00000241, 0x00000241,
- 0x00000247, 0x00000246, 0x00000246,
- 0x00000249, 0x00000248, 0x00000248,
- 0x0000024b, 0x0000024a, 0x0000024a,
- 0x0000024d, 0x0000024c, 0x0000024c,
- 0x0000024f, 0x0000024e, 0x0000024e,
- 0x00000250, 0x00002c6f, 0x00002c6f,
- 0x00000251, 0x00002c6d, 0x00002c6d,
- 0x00000252, 0x00002c70, 0x00002c70,
- 0x00000253, 0x00000181, 0x00000181,
- 0x00000254, 0x00000186, 0x00000186,
- 0x00000256, 0x00000189, 0x00000189,
- 0x00000257, 0x0000018a, 0x0000018a,
- 0x00000259, 0x0000018f, 0x0000018f,
- 0x0000025b, 0x00000190, 0x00000190,
- 0x0000025c, 0x0000a7ab, 0x0000a7ab,
- 0x00000260, 0x00000193, 0x00000193,
- 0x00000261, 0x0000a7ac, 0x0000a7ac,
- 0x00000263, 0x00000194, 0x00000194,
- 0x00000265, 0x0000a78d, 0x0000a78d,
- 0x00000266, 0x0000a7aa, 0x0000a7aa,
- 0x00000268, 0x00000197, 0x00000197,
- 0x00000269, 0x00000196, 0x00000196,
- 0x0000026a, 0x0000a7ae, 0x0000a7ae,
- 0x0000026b, 0x00002c62, 0x00002c62,
- 0x0000026c, 0x0000a7ad, 0x0000a7ad,
- 0x0000026f, 0x0000019c, 0x0000019c,
- 0x00000271, 0x00002c6e, 0x00002c6e,
- 0x00000272, 0x0000019d, 0x0000019d,
- 0x00000275, 0x0000019f, 0x0000019f,
- 0x0000027d, 0x00002c64, 0x00002c64,
- 0x00000280, 0x000001a6, 0x000001a6,
- 0x00000283, 0x000001a9, 0x000001a9,
- 0x00000287, 0x0000a7b1, 0x0000a7b1,
- 0x00000288, 0x000001ae, 0x000001ae,
- 0x00000289, 0x00000244, 0x00000244,
- 0x0000028a, 0x000001b1, 0x000001b1,
- 0x0000028b, 0x000001b2, 0x000001b2,
- 0x0000028c, 0x00000245, 0x00000245,
- 0x00000292, 0x000001b7, 0x000001b7,
- 0x0000029d, 0x0000a7b2, 0x0000a7b2,
- 0x0000029e, 0x0000a7b0, 0x0000a7b0,
- 0x00000345, 0x00000399, 0x00000399,
- 0x00000371, 0x00000370, 0x00000370,
- 0x00000373, 0x00000372, 0x00000372,
- 0x00000377, 0x00000376, 0x00000376,
- 0x0000037b, 0x000003fd, 0x000003fd,
- 0x0000037c, 0x000003fe, 0x000003fe,
- 0x0000037d, 0x000003ff, 0x000003ff,
- 0x000003ac, 0x00000386, 0x00000386,
- 0x000003ad, 0x00000388, 0x00000388,
- 0x000003ae, 0x00000389, 0x00000389,
- 0x000003af, 0x0000038a, 0x0000038a,
- 0x000003b1, 0x00000391, 0x00000391,
- 0x000003b2, 0x00000392, 0x00000392,
- 0x000003b3, 0x00000393, 0x00000393,
- 0x000003b4, 0x00000394, 0x00000394,
- 0x000003b5, 0x00000395, 0x00000395,
- 0x000003b6, 0x00000396, 0x00000396,
- 0x000003b7, 0x00000397, 0x00000397,
- 0x000003b8, 0x00000398, 0x00000398,
- 0x000003b9, 0x00000399, 0x00000399,
- 0x000003ba, 0x0000039a, 0x0000039a,
- 0x000003bb, 0x0000039b, 0x0000039b,
- 0x000003bc, 0x0000039c, 0x0000039c,
- 0x000003bd, 0x0000039d, 0x0000039d,
- 0x000003be, 0x0000039e, 0x0000039e,
- 0x000003bf, 0x0000039f, 0x0000039f,
- 0x000003c0, 0x000003a0, 0x000003a0,
- 0x000003c1, 0x000003a1, 0x000003a1,
- 0x000003c2, 0x000003a3, 0x000003a3,
- 0x000003c3, 0x000003a3, 0x000003a3,
- 0x000003c4, 0x000003a4, 0x000003a4,
- 0x000003c5, 0x000003a5, 0x000003a5,
- 0x000003c6, 0x000003a6, 0x000003a6,
- 0x000003c7, 0x000003a7, 0x000003a7,
- 0x000003c8, 0x000003a8, 0x000003a8,
- 0x000003c9, 0x000003a9, 0x000003a9,
- 0x000003ca, 0x000003aa, 0x000003aa,
- 0x000003cb, 0x000003ab, 0x000003ab,
- 0x000003cc, 0x0000038c, 0x0000038c,
- 0x000003cd, 0x0000038e, 0x0000038e,
- 0x000003ce, 0x0000038f, 0x0000038f,
- 0x000003d0, 0x00000392, 0x00000392,
- 0x000003d1, 0x00000398, 0x00000398,
- 0x000003d5, 0x000003a6, 0x000003a6,
- 0x000003d6, 0x000003a0, 0x000003a0,
- 0x000003d7, 0x000003cf, 0x000003cf,
- 0x000003d9, 0x000003d8, 0x000003d8,
- 0x000003db, 0x000003da, 0x000003da,
- 0x000003dd, 0x000003dc, 0x000003dc,
- 0x000003df, 0x000003de, 0x000003de,
- 0x000003e1, 0x000003e0, 0x000003e0,
- 0x000003e3, 0x000003e2, 0x000003e2,
- 0x000003e5, 0x000003e4, 0x000003e4,
- 0x000003e7, 0x000003e6, 0x000003e6,
- 0x000003e9, 0x000003e8, 0x000003e8,
- 0x000003eb, 0x000003ea, 0x000003ea,
- 0x000003ed, 0x000003ec, 0x000003ec,
- 0x000003ef, 0x000003ee, 0x000003ee,
- 0x000003f0, 0x0000039a, 0x0000039a,
- 0x000003f1, 0x000003a1, 0x000003a1,
- 0x000003f2, 0x000003f9, 0x000003f9,
- 0x000003f3, 0x0000037f, 0x0000037f,
- 0x000003f5, 0x00000395, 0x00000395,
- 0x000003f8, 0x000003f7, 0x000003f7,
- 0x000003fb, 0x000003fa, 0x000003fa,
- 0x00000430, 0x00000410, 0x00000410,
- 0x00000431, 0x00000411, 0x00000411,
- 0x00000432, 0x00000412, 0x00000412,
- 0x00000433, 0x00000413, 0x00000413,
- 0x00000434, 0x00000414, 0x00000414,
- 0x00000435, 0x00000415, 0x00000415,
- 0x00000436, 0x00000416, 0x00000416,
- 0x00000437, 0x00000417, 0x00000417,
- 0x00000438, 0x00000418, 0x00000418,
- 0x00000439, 0x00000419, 0x00000419,
- 0x0000043a, 0x0000041a, 0x0000041a,
- 0x0000043b, 0x0000041b, 0x0000041b,
- 0x0000043c, 0x0000041c, 0x0000041c,
- 0x0000043d, 0x0000041d, 0x0000041d,
- 0x0000043e, 0x0000041e, 0x0000041e,
- 0x0000043f, 0x0000041f, 0x0000041f,
- 0x00000440, 0x00000420, 0x00000420,
- 0x00000441, 0x00000421, 0x00000421,
- 0x00000442, 0x00000422, 0x00000422,
- 0x00000443, 0x00000423, 0x00000423,
- 0x00000444, 0x00000424, 0x00000424,
- 0x00000445, 0x00000425, 0x00000425,
- 0x00000446, 0x00000426, 0x00000426,
- 0x00000447, 0x00000427, 0x00000427,
- 0x00000448, 0x00000428, 0x00000428,
- 0x00000449, 0x00000429, 0x00000429,
- 0x0000044a, 0x0000042a, 0x0000042a,
- 0x0000044b, 0x0000042b, 0x0000042b,
- 0x0000044c, 0x0000042c, 0x0000042c,
- 0x0000044d, 0x0000042d, 0x0000042d,
- 0x0000044e, 0x0000042e, 0x0000042e,
- 0x0000044f, 0x0000042f, 0x0000042f,
- 0x00000450, 0x00000400, 0x00000400,
- 0x00000451, 0x00000401, 0x00000401,
- 0x00000452, 0x00000402, 0x00000402,
- 0x00000453, 0x00000403, 0x00000403,
- 0x00000454, 0x00000404, 0x00000404,
- 0x00000455, 0x00000405, 0x00000405,
- 0x00000456, 0x00000406, 0x00000406,
- 0x00000457, 0x00000407, 0x00000407,
- 0x00000458, 0x00000408, 0x00000408,
- 0x00000459, 0x00000409, 0x00000409,
- 0x0000045a, 0x0000040a, 0x0000040a,
- 0x0000045b, 0x0000040b, 0x0000040b,
- 0x0000045c, 0x0000040c, 0x0000040c,
- 0x0000045d, 0x0000040d, 0x0000040d,
- 0x0000045e, 0x0000040e, 0x0000040e,
- 0x0000045f, 0x0000040f, 0x0000040f,
- 0x00000461, 0x00000460, 0x00000460,
- 0x00000463, 0x00000462, 0x00000462,
- 0x00000465, 0x00000464, 0x00000464,
- 0x00000467, 0x00000466, 0x00000466,
- 0x00000469, 0x00000468, 0x00000468,
- 0x0000046b, 0x0000046a, 0x0000046a,
- 0x0000046d, 0x0000046c, 0x0000046c,
- 0x0000046f, 0x0000046e, 0x0000046e,
- 0x00000471, 0x00000470, 0x00000470,
- 0x00000473, 0x00000472, 0x00000472,
- 0x00000475, 0x00000474, 0x00000474,
- 0x00000477, 0x00000476, 0x00000476,
- 0x00000479, 0x00000478, 0x00000478,
- 0x0000047b, 0x0000047a, 0x0000047a,
- 0x0000047d, 0x0000047c, 0x0000047c,
- 0x0000047f, 0x0000047e, 0x0000047e,
- 0x00000481, 0x00000480, 0x00000480,
- 0x0000048b, 0x0000048a, 0x0000048a,
- 0x0000048d, 0x0000048c, 0x0000048c,
- 0x0000048f, 0x0000048e, 0x0000048e,
- 0x00000491, 0x00000490, 0x00000490,
- 0x00000493, 0x00000492, 0x00000492,
- 0x00000495, 0x00000494, 0x00000494,
- 0x00000497, 0x00000496, 0x00000496,
- 0x00000499, 0x00000498, 0x00000498,
- 0x0000049b, 0x0000049a, 0x0000049a,
- 0x0000049d, 0x0000049c, 0x0000049c,
- 0x0000049f, 0x0000049e, 0x0000049e,
- 0x000004a1, 0x000004a0, 0x000004a0,
- 0x000004a3, 0x000004a2, 0x000004a2,
- 0x000004a5, 0x000004a4, 0x000004a4,
- 0x000004a7, 0x000004a6, 0x000004a6,
- 0x000004a9, 0x000004a8, 0x000004a8,
- 0x000004ab, 0x000004aa, 0x000004aa,
- 0x000004ad, 0x000004ac, 0x000004ac,
- 0x000004af, 0x000004ae, 0x000004ae,
- 0x000004b1, 0x000004b0, 0x000004b0,
- 0x000004b3, 0x000004b2, 0x000004b2,
- 0x000004b5, 0x000004b4, 0x000004b4,
- 0x000004b7, 0x000004b6, 0x000004b6,
- 0x000004b9, 0x000004b8, 0x000004b8,
- 0x000004bb, 0x000004ba, 0x000004ba,
- 0x000004bd, 0x000004bc, 0x000004bc,
- 0x000004bf, 0x000004be, 0x000004be,
- 0x000004c2, 0x000004c1, 0x000004c1,
- 0x000004c4, 0x000004c3, 0x000004c3,
- 0x000004c6, 0x000004c5, 0x000004c5,
- 0x000004c8, 0x000004c7, 0x000004c7,
- 0x000004ca, 0x000004c9, 0x000004c9,
- 0x000004cc, 0x000004cb, 0x000004cb,
- 0x000004ce, 0x000004cd, 0x000004cd,
- 0x000004cf, 0x000004c0, 0x000004c0,
- 0x000004d1, 0x000004d0, 0x000004d0,
- 0x000004d3, 0x000004d2, 0x000004d2,
- 0x000004d5, 0x000004d4, 0x000004d4,
- 0x000004d7, 0x000004d6, 0x000004d6,
- 0x000004d9, 0x000004d8, 0x000004d8,
- 0x000004db, 0x000004da, 0x000004da,
- 0x000004dd, 0x000004dc, 0x000004dc,
- 0x000004df, 0x000004de, 0x000004de,
- 0x000004e1, 0x000004e0, 0x000004e0,
- 0x000004e3, 0x000004e2, 0x000004e2,
- 0x000004e5, 0x000004e4, 0x000004e4,
- 0x000004e7, 0x000004e6, 0x000004e6,
- 0x000004e9, 0x000004e8, 0x000004e8,
- 0x000004eb, 0x000004ea, 0x000004ea,
- 0x000004ed, 0x000004ec, 0x000004ec,
- 0x000004ef, 0x000004ee, 0x000004ee,
- 0x000004f1, 0x000004f0, 0x000004f0,
- 0x000004f3, 0x000004f2, 0x000004f2,
- 0x000004f5, 0x000004f4, 0x000004f4,
- 0x000004f7, 0x000004f6, 0x000004f6,
- 0x000004f9, 0x000004f8, 0x000004f8,
- 0x000004fb, 0x000004fa, 0x000004fa,
- 0x000004fd, 0x000004fc, 0x000004fc,
- 0x000004ff, 0x000004fe, 0x000004fe,
- 0x00000501, 0x00000500, 0x00000500,
- 0x00000503, 0x00000502, 0x00000502,
- 0x00000505, 0x00000504, 0x00000504,
- 0x00000507, 0x00000506, 0x00000506,
- 0x00000509, 0x00000508, 0x00000508,
- 0x0000050b, 0x0000050a, 0x0000050a,
- 0x0000050d, 0x0000050c, 0x0000050c,
- 0x0000050f, 0x0000050e, 0x0000050e,
- 0x00000511, 0x00000510, 0x00000510,
- 0x00000513, 0x00000512, 0x00000512,
- 0x00000515, 0x00000514, 0x00000514,
- 0x00000517, 0x00000516, 0x00000516,
- 0x00000519, 0x00000518, 0x00000518,
- 0x0000051b, 0x0000051a, 0x0000051a,
- 0x0000051d, 0x0000051c, 0x0000051c,
- 0x0000051f, 0x0000051e, 0x0000051e,
- 0x00000521, 0x00000520, 0x00000520,
- 0x00000523, 0x00000522, 0x00000522,
- 0x00000525, 0x00000524, 0x00000524,
- 0x00000527, 0x00000526, 0x00000526,
- 0x00000529, 0x00000528, 0x00000528,
- 0x0000052b, 0x0000052a, 0x0000052a,
- 0x0000052d, 0x0000052c, 0x0000052c,
- 0x0000052f, 0x0000052e, 0x0000052e,
- 0x00000561, 0x00000531, 0x00000531,
- 0x00000562, 0x00000532, 0x00000532,
- 0x00000563, 0x00000533, 0x00000533,
- 0x00000564, 0x00000534, 0x00000534,
- 0x00000565, 0x00000535, 0x00000535,
- 0x00000566, 0x00000536, 0x00000536,
- 0x00000567, 0x00000537, 0x00000537,
- 0x00000568, 0x00000538, 0x00000538,
- 0x00000569, 0x00000539, 0x00000539,
- 0x0000056a, 0x0000053a, 0x0000053a,
- 0x0000056b, 0x0000053b, 0x0000053b,
- 0x0000056c, 0x0000053c, 0x0000053c,
- 0x0000056d, 0x0000053d, 0x0000053d,
- 0x0000056e, 0x0000053e, 0x0000053e,
- 0x0000056f, 0x0000053f, 0x0000053f,
- 0x00000570, 0x00000540, 0x00000540,
- 0x00000571, 0x00000541, 0x00000541,
- 0x00000572, 0x00000542, 0x00000542,
- 0x00000573, 0x00000543, 0x00000543,
- 0x00000574, 0x00000544, 0x00000544,
- 0x00000575, 0x00000545, 0x00000545,
- 0x00000576, 0x00000546, 0x00000546,
- 0x00000577, 0x00000547, 0x00000547,
- 0x00000578, 0x00000548, 0x00000548,
- 0x00000579, 0x00000549, 0x00000549,
- 0x0000057a, 0x0000054a, 0x0000054a,
- 0x0000057b, 0x0000054b, 0x0000054b,
- 0x0000057c, 0x0000054c, 0x0000054c,
- 0x0000057d, 0x0000054d, 0x0000054d,
- 0x0000057e, 0x0000054e, 0x0000054e,
- 0x0000057f, 0x0000054f, 0x0000054f,
- 0x00000580, 0x00000550, 0x00000550,
- 0x00000581, 0x00000551, 0x00000551,
- 0x00000582, 0x00000552, 0x00000552,
- 0x00000583, 0x00000553, 0x00000553,
- 0x00000584, 0x00000554, 0x00000554,
- 0x00000585, 0x00000555, 0x00000555,
- 0x00000586, 0x00000556, 0x00000556,
- 0x000013f8, 0x000013f0, 0x000013f0,
- 0x000013f9, 0x000013f1, 0x000013f1,
- 0x000013fa, 0x000013f2, 0x000013f2,
- 0x000013fb, 0x000013f3, 0x000013f3,
- 0x000013fc, 0x000013f4, 0x000013f4,
- 0x000013fd, 0x000013f5, 0x000013f5,
- 0x00001c80, 0x00000412, 0x00000412,
- 0x00001c81, 0x00000414, 0x00000414,
- 0x00001c82, 0x0000041e, 0x0000041e,
- 0x00001c83, 0x00000421, 0x00000421,
- 0x00001c84, 0x00000422, 0x00000422,
- 0x00001c85, 0x00000422, 0x00000422,
- 0x00001c86, 0x0000042a, 0x0000042a,
- 0x00001c87, 0x00000462, 0x00000462,
- 0x00001c88, 0x0000a64a, 0x0000a64a,
- 0x00001d79, 0x0000a77d, 0x0000a77d,
- 0x00001d7d, 0x00002c63, 0x00002c63,
- 0x00001e01, 0x00001e00, 0x00001e00,
- 0x00001e03, 0x00001e02, 0x00001e02,
- 0x00001e05, 0x00001e04, 0x00001e04,
- 0x00001e07, 0x00001e06, 0x00001e06,
- 0x00001e09, 0x00001e08, 0x00001e08,
- 0x00001e0b, 0x00001e0a, 0x00001e0a,
- 0x00001e0d, 0x00001e0c, 0x00001e0c,
- 0x00001e0f, 0x00001e0e, 0x00001e0e,
- 0x00001e11, 0x00001e10, 0x00001e10,
- 0x00001e13, 0x00001e12, 0x00001e12,
- 0x00001e15, 0x00001e14, 0x00001e14,
- 0x00001e17, 0x00001e16, 0x00001e16,
- 0x00001e19, 0x00001e18, 0x00001e18,
- 0x00001e1b, 0x00001e1a, 0x00001e1a,
- 0x00001e1d, 0x00001e1c, 0x00001e1c,
- 0x00001e1f, 0x00001e1e, 0x00001e1e,
- 0x00001e21, 0x00001e20, 0x00001e20,
- 0x00001e23, 0x00001e22, 0x00001e22,
- 0x00001e25, 0x00001e24, 0x00001e24,
- 0x00001e27, 0x00001e26, 0x00001e26,
- 0x00001e29, 0x00001e28, 0x00001e28,
- 0x00001e2b, 0x00001e2a, 0x00001e2a,
- 0x00001e2d, 0x00001e2c, 0x00001e2c,
- 0x00001e2f, 0x00001e2e, 0x00001e2e,
- 0x00001e31, 0x00001e30, 0x00001e30,
- 0x00001e33, 0x00001e32, 0x00001e32,
- 0x00001e35, 0x00001e34, 0x00001e34,
- 0x00001e37, 0x00001e36, 0x00001e36,
- 0x00001e39, 0x00001e38, 0x00001e38,
- 0x00001e3b, 0x00001e3a, 0x00001e3a,
- 0x00001e3d, 0x00001e3c, 0x00001e3c,
- 0x00001e3f, 0x00001e3e, 0x00001e3e,
- 0x00001e41, 0x00001e40, 0x00001e40,
- 0x00001e43, 0x00001e42, 0x00001e42,
- 0x00001e45, 0x00001e44, 0x00001e44,
- 0x00001e47, 0x00001e46, 0x00001e46,
- 0x00001e49, 0x00001e48, 0x00001e48,
- 0x00001e4b, 0x00001e4a, 0x00001e4a,
- 0x00001e4d, 0x00001e4c, 0x00001e4c,
- 0x00001e4f, 0x00001e4e, 0x00001e4e,
- 0x00001e51, 0x00001e50, 0x00001e50,
- 0x00001e53, 0x00001e52, 0x00001e52,
- 0x00001e55, 0x00001e54, 0x00001e54,
- 0x00001e57, 0x00001e56, 0x00001e56,
- 0x00001e59, 0x00001e58, 0x00001e58,
- 0x00001e5b, 0x00001e5a, 0x00001e5a,
- 0x00001e5d, 0x00001e5c, 0x00001e5c,
- 0x00001e5f, 0x00001e5e, 0x00001e5e,
- 0x00001e61, 0x00001e60, 0x00001e60,
- 0x00001e63, 0x00001e62, 0x00001e62,
- 0x00001e65, 0x00001e64, 0x00001e64,
- 0x00001e67, 0x00001e66, 0x00001e66,
- 0x00001e69, 0x00001e68, 0x00001e68,
- 0x00001e6b, 0x00001e6a, 0x00001e6a,
- 0x00001e6d, 0x00001e6c, 0x00001e6c,
- 0x00001e6f, 0x00001e6e, 0x00001e6e,
- 0x00001e71, 0x00001e70, 0x00001e70,
- 0x00001e73, 0x00001e72, 0x00001e72,
- 0x00001e75, 0x00001e74, 0x00001e74,
- 0x00001e77, 0x00001e76, 0x00001e76,
- 0x00001e79, 0x00001e78, 0x00001e78,
- 0x00001e7b, 0x00001e7a, 0x00001e7a,
- 0x00001e7d, 0x00001e7c, 0x00001e7c,
- 0x00001e7f, 0x00001e7e, 0x00001e7e,
- 0x00001e81, 0x00001e80, 0x00001e80,
- 0x00001e83, 0x00001e82, 0x00001e82,
- 0x00001e85, 0x00001e84, 0x00001e84,
- 0x00001e87, 0x00001e86, 0x00001e86,
- 0x00001e89, 0x00001e88, 0x00001e88,
- 0x00001e8b, 0x00001e8a, 0x00001e8a,
- 0x00001e8d, 0x00001e8c, 0x00001e8c,
- 0x00001e8f, 0x00001e8e, 0x00001e8e,
- 0x00001e91, 0x00001e90, 0x00001e90,
- 0x00001e93, 0x00001e92, 0x00001e92,
- 0x00001e95, 0x00001e94, 0x00001e94,
- 0x00001e9b, 0x00001e60, 0x00001e60,
- 0x00001ea1, 0x00001ea0, 0x00001ea0,
- 0x00001ea3, 0x00001ea2, 0x00001ea2,
- 0x00001ea5, 0x00001ea4, 0x00001ea4,
- 0x00001ea7, 0x00001ea6, 0x00001ea6,
- 0x00001ea9, 0x00001ea8, 0x00001ea8,
- 0x00001eab, 0x00001eaa, 0x00001eaa,
- 0x00001ead, 0x00001eac, 0x00001eac,
- 0x00001eaf, 0x00001eae, 0x00001eae,
- 0x00001eb1, 0x00001eb0, 0x00001eb0,
- 0x00001eb3, 0x00001eb2, 0x00001eb2,
- 0x00001eb5, 0x00001eb4, 0x00001eb4,
- 0x00001eb7, 0x00001eb6, 0x00001eb6,
- 0x00001eb9, 0x00001eb8, 0x00001eb8,
- 0x00001ebb, 0x00001eba, 0x00001eba,
- 0x00001ebd, 0x00001ebc, 0x00001ebc,
- 0x00001ebf, 0x00001ebe, 0x00001ebe,
- 0x00001ec1, 0x00001ec0, 0x00001ec0,
- 0x00001ec3, 0x00001ec2, 0x00001ec2,
- 0x00001ec5, 0x00001ec4, 0x00001ec4,
- 0x00001ec7, 0x00001ec6, 0x00001ec6,
- 0x00001ec9, 0x00001ec8, 0x00001ec8,
- 0x00001ecb, 0x00001eca, 0x00001eca,
- 0x00001ecd, 0x00001ecc, 0x00001ecc,
- 0x00001ecf, 0x00001ece, 0x00001ece,
- 0x00001ed1, 0x00001ed0, 0x00001ed0,
- 0x00001ed3, 0x00001ed2, 0x00001ed2,
- 0x00001ed5, 0x00001ed4, 0x00001ed4,
- 0x00001ed7, 0x00001ed6, 0x00001ed6,
- 0x00001ed9, 0x00001ed8, 0x00001ed8,
- 0x00001edb, 0x00001eda, 0x00001eda,
- 0x00001edd, 0x00001edc, 0x00001edc,
- 0x00001edf, 0x00001ede, 0x00001ede,
- 0x00001ee1, 0x00001ee0, 0x00001ee0,
- 0x00001ee3, 0x00001ee2, 0x00001ee2,
- 0x00001ee5, 0x00001ee4, 0x00001ee4,
- 0x00001ee7, 0x00001ee6, 0x00001ee6,
- 0x00001ee9, 0x00001ee8, 0x00001ee8,
- 0x00001eeb, 0x00001eea, 0x00001eea,
- 0x00001eed, 0x00001eec, 0x00001eec,
- 0x00001eef, 0x00001eee, 0x00001eee,
- 0x00001ef1, 0x00001ef0, 0x00001ef0,
- 0x00001ef3, 0x00001ef2, 0x00001ef2,
- 0x00001ef5, 0x00001ef4, 0x00001ef4,
- 0x00001ef7, 0x00001ef6, 0x00001ef6,
- 0x00001ef9, 0x00001ef8, 0x00001ef8,
- 0x00001efb, 0x00001efa, 0x00001efa,
- 0x00001efd, 0x00001efc, 0x00001efc,
- 0x00001eff, 0x00001efe, 0x00001efe,
- 0x00001f00, 0x00001f08, 0x00001f08,
- 0x00001f01, 0x00001f09, 0x00001f09,
- 0x00001f02, 0x00001f0a, 0x00001f0a,
- 0x00001f03, 0x00001f0b, 0x00001f0b,
- 0x00001f04, 0x00001f0c, 0x00001f0c,
- 0x00001f05, 0x00001f0d, 0x00001f0d,
- 0x00001f06, 0x00001f0e, 0x00001f0e,
- 0x00001f07, 0x00001f0f, 0x00001f0f,
- 0x00001f10, 0x00001f18, 0x00001f18,
- 0x00001f11, 0x00001f19, 0x00001f19,
- 0x00001f12, 0x00001f1a, 0x00001f1a,
- 0x00001f13, 0x00001f1b, 0x00001f1b,
- 0x00001f14, 0x00001f1c, 0x00001f1c,
- 0x00001f15, 0x00001f1d, 0x00001f1d,
- 0x00001f20, 0x00001f28, 0x00001f28,
- 0x00001f21, 0x00001f29, 0x00001f29,
- 0x00001f22, 0x00001f2a, 0x00001f2a,
- 0x00001f23, 0x00001f2b, 0x00001f2b,
- 0x00001f24, 0x00001f2c, 0x00001f2c,
- 0x00001f25, 0x00001f2d, 0x00001f2d,
- 0x00001f26, 0x00001f2e, 0x00001f2e,
- 0x00001f27, 0x00001f2f, 0x00001f2f,
- 0x00001f30, 0x00001f38, 0x00001f38,
- 0x00001f31, 0x00001f39, 0x00001f39,
- 0x00001f32, 0x00001f3a, 0x00001f3a,
- 0x00001f33, 0x00001f3b, 0x00001f3b,
- 0x00001f34, 0x00001f3c, 0x00001f3c,
- 0x00001f35, 0x00001f3d, 0x00001f3d,
- 0x00001f36, 0x00001f3e, 0x00001f3e,
- 0x00001f37, 0x00001f3f, 0x00001f3f,
- 0x00001f40, 0x00001f48, 0x00001f48,
- 0x00001f41, 0x00001f49, 0x00001f49,
- 0x00001f42, 0x00001f4a, 0x00001f4a,
- 0x00001f43, 0x00001f4b, 0x00001f4b,
- 0x00001f44, 0x00001f4c, 0x00001f4c,
- 0x00001f45, 0x00001f4d, 0x00001f4d,
- 0x00001f51, 0x00001f59, 0x00001f59,
- 0x00001f53, 0x00001f5b, 0x00001f5b,
- 0x00001f55, 0x00001f5d, 0x00001f5d,
- 0x00001f57, 0x00001f5f, 0x00001f5f,
- 0x00001f60, 0x00001f68, 0x00001f68,
- 0x00001f61, 0x00001f69, 0x00001f69,
- 0x00001f62, 0x00001f6a, 0x00001f6a,
- 0x00001f63, 0x00001f6b, 0x00001f6b,
- 0x00001f64, 0x00001f6c, 0x00001f6c,
- 0x00001f65, 0x00001f6d, 0x00001f6d,
- 0x00001f66, 0x00001f6e, 0x00001f6e,
- 0x00001f67, 0x00001f6f, 0x00001f6f,
- 0x00001f70, 0x00001fba, 0x00001fba,
- 0x00001f71, 0x00001fbb, 0x00001fbb,
- 0x00001f72, 0x00001fc8, 0x00001fc8,
- 0x00001f73, 0x00001fc9, 0x00001fc9,
- 0x00001f74, 0x00001fca, 0x00001fca,
- 0x00001f75, 0x00001fcb, 0x00001fcb,
- 0x00001f76, 0x00001fda, 0x00001fda,
- 0x00001f77, 0x00001fdb, 0x00001fdb,
- 0x00001f78, 0x00001ff8, 0x00001ff8,
- 0x00001f79, 0x00001ff9, 0x00001ff9,
- 0x00001f7a, 0x00001fea, 0x00001fea,
- 0x00001f7b, 0x00001feb, 0x00001feb,
- 0x00001f7c, 0x00001ffa, 0x00001ffa,
- 0x00001f7d, 0x00001ffb, 0x00001ffb,
- 0x00001f80, 0x00001f88, 0x00001f88,
- 0x00001f81, 0x00001f89, 0x00001f89,
- 0x00001f82, 0x00001f8a, 0x00001f8a,
- 0x00001f83, 0x00001f8b, 0x00001f8b,
- 0x00001f84, 0x00001f8c, 0x00001f8c,
- 0x00001f85, 0x00001f8d, 0x00001f8d,
- 0x00001f86, 0x00001f8e, 0x00001f8e,
- 0x00001f87, 0x00001f8f, 0x00001f8f,
- 0x00001f90, 0x00001f98, 0x00001f98,
- 0x00001f91, 0x00001f99, 0x00001f99,
- 0x00001f92, 0x00001f9a, 0x00001f9a,
- 0x00001f93, 0x00001f9b, 0x00001f9b,
- 0x00001f94, 0x00001f9c, 0x00001f9c,
- 0x00001f95, 0x00001f9d, 0x00001f9d,
- 0x00001f96, 0x00001f9e, 0x00001f9e,
- 0x00001f97, 0x00001f9f, 0x00001f9f,
- 0x00001fa0, 0x00001fa8, 0x00001fa8,
- 0x00001fa1, 0x00001fa9, 0x00001fa9,
- 0x00001fa2, 0x00001faa, 0x00001faa,
- 0x00001fa3, 0x00001fab, 0x00001fab,
- 0x00001fa4, 0x00001fac, 0x00001fac,
- 0x00001fa5, 0x00001fad, 0x00001fad,
- 0x00001fa6, 0x00001fae, 0x00001fae,
- 0x00001fa7, 0x00001faf, 0x00001faf,
- 0x00001fb0, 0x00001fb8, 0x00001fb8,
- 0x00001fb1, 0x00001fb9, 0x00001fb9,
- 0x00001fb3, 0x00001fbc, 0x00001fbc,
- 0x00001fbe, 0x00000399, 0x00000399,
- 0x00001fc3, 0x00001fcc, 0x00001fcc,
- 0x00001fd0, 0x00001fd8, 0x00001fd8,
- 0x00001fd1, 0x00001fd9, 0x00001fd9,
- 0x00001fe0, 0x00001fe8, 0x00001fe8,
- 0x00001fe1, 0x00001fe9, 0x00001fe9,
- 0x00001fe5, 0x00001fec, 0x00001fec,
- 0x00001ff3, 0x00001ffc, 0x00001ffc,
- 0x0000214e, 0x00002132, 0x00002132,
- 0x00002170, 0x00002160, 0x00002160,
- 0x00002171, 0x00002161, 0x00002161,
- 0x00002172, 0x00002162, 0x00002162,
- 0x00002173, 0x00002163, 0x00002163,
- 0x00002174, 0x00002164, 0x00002164,
- 0x00002175, 0x00002165, 0x00002165,
- 0x00002176, 0x00002166, 0x00002166,
- 0x00002177, 0x00002167, 0x00002167,
- 0x00002178, 0x00002168, 0x00002168,
- 0x00002179, 0x00002169, 0x00002169,
- 0x0000217a, 0x0000216a, 0x0000216a,
- 0x0000217b, 0x0000216b, 0x0000216b,
- 0x0000217c, 0x0000216c, 0x0000216c,
- 0x0000217d, 0x0000216d, 0x0000216d,
- 0x0000217e, 0x0000216e, 0x0000216e,
- 0x0000217f, 0x0000216f, 0x0000216f,
- 0x00002184, 0x00002183, 0x00002183,
- 0x000024d0, 0x000024b6, 0x000024b6,
- 0x000024d1, 0x000024b7, 0x000024b7,
- 0x000024d2, 0x000024b8, 0x000024b8,
- 0x000024d3, 0x000024b9, 0x000024b9,
- 0x000024d4, 0x000024ba, 0x000024ba,
- 0x000024d5, 0x000024bb, 0x000024bb,
- 0x000024d6, 0x000024bc, 0x000024bc,
- 0x000024d7, 0x000024bd, 0x000024bd,
- 0x000024d8, 0x000024be, 0x000024be,
- 0x000024d9, 0x000024bf, 0x000024bf,
- 0x000024da, 0x000024c0, 0x000024c0,
- 0x000024db, 0x000024c1, 0x000024c1,
- 0x000024dc, 0x000024c2, 0x000024c2,
- 0x000024dd, 0x000024c3, 0x000024c3,
- 0x000024de, 0x000024c4, 0x000024c4,
- 0x000024df, 0x000024c5, 0x000024c5,
- 0x000024e0, 0x000024c6, 0x000024c6,
- 0x000024e1, 0x000024c7, 0x000024c7,
- 0x000024e2, 0x000024c8, 0x000024c8,
- 0x000024e3, 0x000024c9, 0x000024c9,
- 0x000024e4, 0x000024ca, 0x000024ca,
- 0x000024e5, 0x000024cb, 0x000024cb,
- 0x000024e6, 0x000024cc, 0x000024cc,
- 0x000024e7, 0x000024cd, 0x000024cd,
- 0x000024e8, 0x000024ce, 0x000024ce,
- 0x000024e9, 0x000024cf, 0x000024cf,
- 0x00002c30, 0x00002c00, 0x00002c00,
- 0x00002c31, 0x00002c01, 0x00002c01,
- 0x00002c32, 0x00002c02, 0x00002c02,
- 0x00002c33, 0x00002c03, 0x00002c03,
- 0x00002c34, 0x00002c04, 0x00002c04,
- 0x00002c35, 0x00002c05, 0x00002c05,
- 0x00002c36, 0x00002c06, 0x00002c06,
- 0x00002c37, 0x00002c07, 0x00002c07,
- 0x00002c38, 0x00002c08, 0x00002c08,
- 0x00002c39, 0x00002c09, 0x00002c09,
- 0x00002c3a, 0x00002c0a, 0x00002c0a,
- 0x00002c3b, 0x00002c0b, 0x00002c0b,
- 0x00002c3c, 0x00002c0c, 0x00002c0c,
- 0x00002c3d, 0x00002c0d, 0x00002c0d,
- 0x00002c3e, 0x00002c0e, 0x00002c0e,
- 0x00002c3f, 0x00002c0f, 0x00002c0f,
- 0x00002c40, 0x00002c10, 0x00002c10,
- 0x00002c41, 0x00002c11, 0x00002c11,
- 0x00002c42, 0x00002c12, 0x00002c12,
- 0x00002c43, 0x00002c13, 0x00002c13,
- 0x00002c44, 0x00002c14, 0x00002c14,
- 0x00002c45, 0x00002c15, 0x00002c15,
- 0x00002c46, 0x00002c16, 0x00002c16,
- 0x00002c47, 0x00002c17, 0x00002c17,
- 0x00002c48, 0x00002c18, 0x00002c18,
- 0x00002c49, 0x00002c19, 0x00002c19,
- 0x00002c4a, 0x00002c1a, 0x00002c1a,
- 0x00002c4b, 0x00002c1b, 0x00002c1b,
- 0x00002c4c, 0x00002c1c, 0x00002c1c,
- 0x00002c4d, 0x00002c1d, 0x00002c1d,
- 0x00002c4e, 0x00002c1e, 0x00002c1e,
- 0x00002c4f, 0x00002c1f, 0x00002c1f,
- 0x00002c50, 0x00002c20, 0x00002c20,
- 0x00002c51, 0x00002c21, 0x00002c21,
- 0x00002c52, 0x00002c22, 0x00002c22,
- 0x00002c53, 0x00002c23, 0x00002c23,
- 0x00002c54, 0x00002c24, 0x00002c24,
- 0x00002c55, 0x00002c25, 0x00002c25,
- 0x00002c56, 0x00002c26, 0x00002c26,
- 0x00002c57, 0x00002c27, 0x00002c27,
- 0x00002c58, 0x00002c28, 0x00002c28,
- 0x00002c59, 0x00002c29, 0x00002c29,
- 0x00002c5a, 0x00002c2a, 0x00002c2a,
- 0x00002c5b, 0x00002c2b, 0x00002c2b,
- 0x00002c5c, 0x00002c2c, 0x00002c2c,
- 0x00002c5d, 0x00002c2d, 0x00002c2d,
- 0x00002c5e, 0x00002c2e, 0x00002c2e,
- 0x00002c61, 0x00002c60, 0x00002c60,
- 0x00002c65, 0x0000023a, 0x0000023a,
- 0x00002c66, 0x0000023e, 0x0000023e,
- 0x00002c68, 0x00002c67, 0x00002c67,
- 0x00002c6a, 0x00002c69, 0x00002c69,
- 0x00002c6c, 0x00002c6b, 0x00002c6b,
- 0x00002c73, 0x00002c72, 0x00002c72,
- 0x00002c76, 0x00002c75, 0x00002c75,
- 0x00002c81, 0x00002c80, 0x00002c80,
- 0x00002c83, 0x00002c82, 0x00002c82,
- 0x00002c85, 0x00002c84, 0x00002c84,
- 0x00002c87, 0x00002c86, 0x00002c86,
- 0x00002c89, 0x00002c88, 0x00002c88,
- 0x00002c8b, 0x00002c8a, 0x00002c8a,
- 0x00002c8d, 0x00002c8c, 0x00002c8c,
- 0x00002c8f, 0x00002c8e, 0x00002c8e,
- 0x00002c91, 0x00002c90, 0x00002c90,
- 0x00002c93, 0x00002c92, 0x00002c92,
- 0x00002c95, 0x00002c94, 0x00002c94,
- 0x00002c97, 0x00002c96, 0x00002c96,
- 0x00002c99, 0x00002c98, 0x00002c98,
- 0x00002c9b, 0x00002c9a, 0x00002c9a,
- 0x00002c9d, 0x00002c9c, 0x00002c9c,
- 0x00002c9f, 0x00002c9e, 0x00002c9e,
- 0x00002ca1, 0x00002ca0, 0x00002ca0,
- 0x00002ca3, 0x00002ca2, 0x00002ca2,
- 0x00002ca5, 0x00002ca4, 0x00002ca4,
- 0x00002ca7, 0x00002ca6, 0x00002ca6,
- 0x00002ca9, 0x00002ca8, 0x00002ca8,
- 0x00002cab, 0x00002caa, 0x00002caa,
- 0x00002cad, 0x00002cac, 0x00002cac,
- 0x00002caf, 0x00002cae, 0x00002cae,
- 0x00002cb1, 0x00002cb0, 0x00002cb0,
- 0x00002cb3, 0x00002cb2, 0x00002cb2,
- 0x00002cb5, 0x00002cb4, 0x00002cb4,
- 0x00002cb7, 0x00002cb6, 0x00002cb6,
- 0x00002cb9, 0x00002cb8, 0x00002cb8,
- 0x00002cbb, 0x00002cba, 0x00002cba,
- 0x00002cbd, 0x00002cbc, 0x00002cbc,
- 0x00002cbf, 0x00002cbe, 0x00002cbe,
- 0x00002cc1, 0x00002cc0, 0x00002cc0,
- 0x00002cc3, 0x00002cc2, 0x00002cc2,
- 0x00002cc5, 0x00002cc4, 0x00002cc4,
- 0x00002cc7, 0x00002cc6, 0x00002cc6,
- 0x00002cc9, 0x00002cc8, 0x00002cc8,
- 0x00002ccb, 0x00002cca, 0x00002cca,
- 0x00002ccd, 0x00002ccc, 0x00002ccc,
- 0x00002ccf, 0x00002cce, 0x00002cce,
- 0x00002cd1, 0x00002cd0, 0x00002cd0,
- 0x00002cd3, 0x00002cd2, 0x00002cd2,
- 0x00002cd5, 0x00002cd4, 0x00002cd4,
- 0x00002cd7, 0x00002cd6, 0x00002cd6,
- 0x00002cd9, 0x00002cd8, 0x00002cd8,
- 0x00002cdb, 0x00002cda, 0x00002cda,
- 0x00002cdd, 0x00002cdc, 0x00002cdc,
- 0x00002cdf, 0x00002cde, 0x00002cde,
- 0x00002ce1, 0x00002ce0, 0x00002ce0,
- 0x00002ce3, 0x00002ce2, 0x00002ce2,
- 0x00002cec, 0x00002ceb, 0x00002ceb,
- 0x00002cee, 0x00002ced, 0x00002ced,
- 0x00002cf3, 0x00002cf2, 0x00002cf2,
- 0x00002d00, 0x000010a0, 0x000010a0,
- 0x00002d01, 0x000010a1, 0x000010a1,
- 0x00002d02, 0x000010a2, 0x000010a2,
- 0x00002d03, 0x000010a3, 0x000010a3,
- 0x00002d04, 0x000010a4, 0x000010a4,
- 0x00002d05, 0x000010a5, 0x000010a5,
- 0x00002d06, 0x000010a6, 0x000010a6,
- 0x00002d07, 0x000010a7, 0x000010a7,
- 0x00002d08, 0x000010a8, 0x000010a8,
- 0x00002d09, 0x000010a9, 0x000010a9,
- 0x00002d0a, 0x000010aa, 0x000010aa,
- 0x00002d0b, 0x000010ab, 0x000010ab,
- 0x00002d0c, 0x000010ac, 0x000010ac,
- 0x00002d0d, 0x000010ad, 0x000010ad,
- 0x00002d0e, 0x000010ae, 0x000010ae,
- 0x00002d0f, 0x000010af, 0x000010af,
- 0x00002d10, 0x000010b0, 0x000010b0,
- 0x00002d11, 0x000010b1, 0x000010b1,
- 0x00002d12, 0x000010b2, 0x000010b2,
- 0x00002d13, 0x000010b3, 0x000010b3,
- 0x00002d14, 0x000010b4, 0x000010b4,
- 0x00002d15, 0x000010b5, 0x000010b5,
- 0x00002d16, 0x000010b6, 0x000010b6,
- 0x00002d17, 0x000010b7, 0x000010b7,
- 0x00002d18, 0x000010b8, 0x000010b8,
- 0x00002d19, 0x000010b9, 0x000010b9,
- 0x00002d1a, 0x000010ba, 0x000010ba,
- 0x00002d1b, 0x000010bb, 0x000010bb,
- 0x00002d1c, 0x000010bc, 0x000010bc,
- 0x00002d1d, 0x000010bd, 0x000010bd,
- 0x00002d1e, 0x000010be, 0x000010be,
- 0x00002d1f, 0x000010bf, 0x000010bf,
- 0x00002d20, 0x000010c0, 0x000010c0,
- 0x00002d21, 0x000010c1, 0x000010c1,
- 0x00002d22, 0x000010c2, 0x000010c2,
- 0x00002d23, 0x000010c3, 0x000010c3,
- 0x00002d24, 0x000010c4, 0x000010c4,
- 0x00002d25, 0x000010c5, 0x000010c5,
- 0x00002d27, 0x000010c7, 0x000010c7,
- 0x00002d2d, 0x000010cd, 0x000010cd,
- 0x0000a641, 0x0000a640, 0x0000a640,
- 0x0000a643, 0x0000a642, 0x0000a642,
- 0x0000a645, 0x0000a644, 0x0000a644,
- 0x0000a647, 0x0000a646, 0x0000a646,
- 0x0000a649, 0x0000a648, 0x0000a648,
- 0x0000a64b, 0x0000a64a, 0x0000a64a,
- 0x0000a64d, 0x0000a64c, 0x0000a64c,
- 0x0000a64f, 0x0000a64e, 0x0000a64e,
- 0x0000a651, 0x0000a650, 0x0000a650,
- 0x0000a653, 0x0000a652, 0x0000a652,
- 0x0000a655, 0x0000a654, 0x0000a654,
- 0x0000a657, 0x0000a656, 0x0000a656,
- 0x0000a659, 0x0000a658, 0x0000a658,
- 0x0000a65b, 0x0000a65a, 0x0000a65a,
- 0x0000a65d, 0x0000a65c, 0x0000a65c,
- 0x0000a65f, 0x0000a65e, 0x0000a65e,
- 0x0000a661, 0x0000a660, 0x0000a660,
- 0x0000a663, 0x0000a662, 0x0000a662,
- 0x0000a665, 0x0000a664, 0x0000a664,
- 0x0000a667, 0x0000a666, 0x0000a666,
- 0x0000a669, 0x0000a668, 0x0000a668,
- 0x0000a66b, 0x0000a66a, 0x0000a66a,
- 0x0000a66d, 0x0000a66c, 0x0000a66c,
- 0x0000a681, 0x0000a680, 0x0000a680,
- 0x0000a683, 0x0000a682, 0x0000a682,
- 0x0000a685, 0x0000a684, 0x0000a684,
- 0x0000a687, 0x0000a686, 0x0000a686,
- 0x0000a689, 0x0000a688, 0x0000a688,
- 0x0000a68b, 0x0000a68a, 0x0000a68a,
- 0x0000a68d, 0x0000a68c, 0x0000a68c,
- 0x0000a68f, 0x0000a68e, 0x0000a68e,
- 0x0000a691, 0x0000a690, 0x0000a690,
- 0x0000a693, 0x0000a692, 0x0000a692,
- 0x0000a695, 0x0000a694, 0x0000a694,
- 0x0000a697, 0x0000a696, 0x0000a696,
- 0x0000a699, 0x0000a698, 0x0000a698,
- 0x0000a69b, 0x0000a69a, 0x0000a69a,
- 0x0000a723, 0x0000a722, 0x0000a722,
- 0x0000a725, 0x0000a724, 0x0000a724,
- 0x0000a727, 0x0000a726, 0x0000a726,
- 0x0000a729, 0x0000a728, 0x0000a728,
- 0x0000a72b, 0x0000a72a, 0x0000a72a,
- 0x0000a72d, 0x0000a72c, 0x0000a72c,
- 0x0000a72f, 0x0000a72e, 0x0000a72e,
- 0x0000a733, 0x0000a732, 0x0000a732,
- 0x0000a735, 0x0000a734, 0x0000a734,
- 0x0000a737, 0x0000a736, 0x0000a736,
- 0x0000a739, 0x0000a738, 0x0000a738,
- 0x0000a73b, 0x0000a73a, 0x0000a73a,
- 0x0000a73d, 0x0000a73c, 0x0000a73c,
- 0x0000a73f, 0x0000a73e, 0x0000a73e,
- 0x0000a741, 0x0000a740, 0x0000a740,
- 0x0000a743, 0x0000a742, 0x0000a742,
- 0x0000a745, 0x0000a744, 0x0000a744,
- 0x0000a747, 0x0000a746, 0x0000a746,
- 0x0000a749, 0x0000a748, 0x0000a748,
- 0x0000a74b, 0x0000a74a, 0x0000a74a,
- 0x0000a74d, 0x0000a74c, 0x0000a74c,
- 0x0000a74f, 0x0000a74e, 0x0000a74e,
- 0x0000a751, 0x0000a750, 0x0000a750,
- 0x0000a753, 0x0000a752, 0x0000a752,
- 0x0000a755, 0x0000a754, 0x0000a754,
- 0x0000a757, 0x0000a756, 0x0000a756,
- 0x0000a759, 0x0000a758, 0x0000a758,
- 0x0000a75b, 0x0000a75a, 0x0000a75a,
- 0x0000a75d, 0x0000a75c, 0x0000a75c,
- 0x0000a75f, 0x0000a75e, 0x0000a75e,
- 0x0000a761, 0x0000a760, 0x0000a760,
- 0x0000a763, 0x0000a762, 0x0000a762,
- 0x0000a765, 0x0000a764, 0x0000a764,
- 0x0000a767, 0x0000a766, 0x0000a766,
- 0x0000a769, 0x0000a768, 0x0000a768,
- 0x0000a76b, 0x0000a76a, 0x0000a76a,
- 0x0000a76d, 0x0000a76c, 0x0000a76c,
- 0x0000a76f, 0x0000a76e, 0x0000a76e,
- 0x0000a77a, 0x0000a779, 0x0000a779,
- 0x0000a77c, 0x0000a77b, 0x0000a77b,
- 0x0000a77f, 0x0000a77e, 0x0000a77e,
- 0x0000a781, 0x0000a780, 0x0000a780,
- 0x0000a783, 0x0000a782, 0x0000a782,
- 0x0000a785, 0x0000a784, 0x0000a784,
- 0x0000a787, 0x0000a786, 0x0000a786,
- 0x0000a78c, 0x0000a78b, 0x0000a78b,
- 0x0000a791, 0x0000a790, 0x0000a790,
- 0x0000a793, 0x0000a792, 0x0000a792,
- 0x0000a797, 0x0000a796, 0x0000a796,
- 0x0000a799, 0x0000a798, 0x0000a798,
- 0x0000a79b, 0x0000a79a, 0x0000a79a,
- 0x0000a79d, 0x0000a79c, 0x0000a79c,
- 0x0000a79f, 0x0000a79e, 0x0000a79e,
- 0x0000a7a1, 0x0000a7a0, 0x0000a7a0,
- 0x0000a7a3, 0x0000a7a2, 0x0000a7a2,
- 0x0000a7a5, 0x0000a7a4, 0x0000a7a4,
- 0x0000a7a7, 0x0000a7a6, 0x0000a7a6,
- 0x0000a7a9, 0x0000a7a8, 0x0000a7a8,
- 0x0000a7b5, 0x0000a7b4, 0x0000a7b4,
- 0x0000a7b7, 0x0000a7b6, 0x0000a7b6,
- 0x0000ab53, 0x0000a7b3, 0x0000a7b3,
- 0x0000ab70, 0x000013a0, 0x000013a0,
- 0x0000ab71, 0x000013a1, 0x000013a1,
- 0x0000ab72, 0x000013a2, 0x000013a2,
- 0x0000ab73, 0x000013a3, 0x000013a3,
- 0x0000ab74, 0x000013a4, 0x000013a4,
- 0x0000ab75, 0x000013a5, 0x000013a5,
- 0x0000ab76, 0x000013a6, 0x000013a6,
- 0x0000ab77, 0x000013a7, 0x000013a7,
- 0x0000ab78, 0x000013a8, 0x000013a8,
- 0x0000ab79, 0x000013a9, 0x000013a9,
- 0x0000ab7a, 0x000013aa, 0x000013aa,
- 0x0000ab7b, 0x000013ab, 0x000013ab,
- 0x0000ab7c, 0x000013ac, 0x000013ac,
- 0x0000ab7d, 0x000013ad, 0x000013ad,
- 0x0000ab7e, 0x000013ae, 0x000013ae,
- 0x0000ab7f, 0x000013af, 0x000013af,
- 0x0000ab80, 0x000013b0, 0x000013b0,
- 0x0000ab81, 0x000013b1, 0x000013b1,
- 0x0000ab82, 0x000013b2, 0x000013b2,
- 0x0000ab83, 0x000013b3, 0x000013b3,
- 0x0000ab84, 0x000013b4, 0x000013b4,
- 0x0000ab85, 0x000013b5, 0x000013b5,
- 0x0000ab86, 0x000013b6, 0x000013b6,
- 0x0000ab87, 0x000013b7, 0x000013b7,
- 0x0000ab88, 0x000013b8, 0x000013b8,
- 0x0000ab89, 0x000013b9, 0x000013b9,
- 0x0000ab8a, 0x000013ba, 0x000013ba,
- 0x0000ab8b, 0x000013bb, 0x000013bb,
- 0x0000ab8c, 0x000013bc, 0x000013bc,
- 0x0000ab8d, 0x000013bd, 0x000013bd,
- 0x0000ab8e, 0x000013be, 0x000013be,
- 0x0000ab8f, 0x000013bf, 0x000013bf,
- 0x0000ab90, 0x000013c0, 0x000013c0,
- 0x0000ab91, 0x000013c1, 0x000013c1,
- 0x0000ab92, 0x000013c2, 0x000013c2,
- 0x0000ab93, 0x000013c3, 0x000013c3,
- 0x0000ab94, 0x000013c4, 0x000013c4,
- 0x0000ab95, 0x000013c5, 0x000013c5,
- 0x0000ab96, 0x000013c6, 0x000013c6,
- 0x0000ab97, 0x000013c7, 0x000013c7,
- 0x0000ab98, 0x000013c8, 0x000013c8,
- 0x0000ab99, 0x000013c9, 0x000013c9,
- 0x0000ab9a, 0x000013ca, 0x000013ca,
- 0x0000ab9b, 0x000013cb, 0x000013cb,
- 0x0000ab9c, 0x000013cc, 0x000013cc,
- 0x0000ab9d, 0x000013cd, 0x000013cd,
- 0x0000ab9e, 0x000013ce, 0x000013ce,
- 0x0000ab9f, 0x000013cf, 0x000013cf,
- 0x0000aba0, 0x000013d0, 0x000013d0,
- 0x0000aba1, 0x000013d1, 0x000013d1,
- 0x0000aba2, 0x000013d2, 0x000013d2,
- 0x0000aba3, 0x000013d3, 0x000013d3,
- 0x0000aba4, 0x000013d4, 0x000013d4,
- 0x0000aba5, 0x000013d5, 0x000013d5,
- 0x0000aba6, 0x000013d6, 0x000013d6,
- 0x0000aba7, 0x000013d7, 0x000013d7,
- 0x0000aba8, 0x000013d8, 0x000013d8,
- 0x0000aba9, 0x000013d9, 0x000013d9,
- 0x0000abaa, 0x000013da, 0x000013da,
- 0x0000abab, 0x000013db, 0x000013db,
- 0x0000abac, 0x000013dc, 0x000013dc,
- 0x0000abad, 0x000013dd, 0x000013dd,
- 0x0000abae, 0x000013de, 0x000013de,
- 0x0000abaf, 0x000013df, 0x000013df,
- 0x0000abb0, 0x000013e0, 0x000013e0,
- 0x0000abb1, 0x000013e1, 0x000013e1,
- 0x0000abb2, 0x000013e2, 0x000013e2,
- 0x0000abb3, 0x000013e3, 0x000013e3,
- 0x0000abb4, 0x000013e4, 0x000013e4,
- 0x0000abb5, 0x000013e5, 0x000013e5,
- 0x0000abb6, 0x000013e6, 0x000013e6,
- 0x0000abb7, 0x000013e7, 0x000013e7,
- 0x0000abb8, 0x000013e8, 0x000013e8,
- 0x0000abb9, 0x000013e9, 0x000013e9,
- 0x0000abba, 0x000013ea, 0x000013ea,
- 0x0000abbb, 0x000013eb, 0x000013eb,
- 0x0000abbc, 0x000013ec, 0x000013ec,
- 0x0000abbd, 0x000013ed, 0x000013ed,
- 0x0000abbe, 0x000013ee, 0x000013ee,
- 0x0000abbf, 0x000013ef, 0x000013ef,
- 0x0000ff41, 0x0000ff21, 0x0000ff21,
- 0x0000ff42, 0x0000ff22, 0x0000ff22,
- 0x0000ff43, 0x0000ff23, 0x0000ff23,
- 0x0000ff44, 0x0000ff24, 0x0000ff24,
- 0x0000ff45, 0x0000ff25, 0x0000ff25,
- 0x0000ff46, 0x0000ff26, 0x0000ff26,
- 0x0000ff47, 0x0000ff27, 0x0000ff27,
- 0x0000ff48, 0x0000ff28, 0x0000ff28,
- 0x0000ff49, 0x0000ff29, 0x0000ff29,
- 0x0000ff4a, 0x0000ff2a, 0x0000ff2a,
- 0x0000ff4b, 0x0000ff2b, 0x0000ff2b,
- 0x0000ff4c, 0x0000ff2c, 0x0000ff2c,
- 0x0000ff4d, 0x0000ff2d, 0x0000ff2d,
- 0x0000ff4e, 0x0000ff2e, 0x0000ff2e,
- 0x0000ff4f, 0x0000ff2f, 0x0000ff2f,
- 0x0000ff50, 0x0000ff30, 0x0000ff30,
- 0x0000ff51, 0x0000ff31, 0x0000ff31,
- 0x0000ff52, 0x0000ff32, 0x0000ff32,
- 0x0000ff53, 0x0000ff33, 0x0000ff33,
- 0x0000ff54, 0x0000ff34, 0x0000ff34,
- 0x0000ff55, 0x0000ff35, 0x0000ff35,
- 0x0000ff56, 0x0000ff36, 0x0000ff36,
- 0x0000ff57, 0x0000ff37, 0x0000ff37,
- 0x0000ff58, 0x0000ff38, 0x0000ff38,
- 0x0000ff59, 0x0000ff39, 0x0000ff39,
- 0x0000ff5a, 0x0000ff3a, 0x0000ff3a,
- 0x00010428, 0x00010400, 0x00010400,
- 0x00010429, 0x00010401, 0x00010401,
- 0x0001042a, 0x00010402, 0x00010402,
- 0x0001042b, 0x00010403, 0x00010403,
- 0x0001042c, 0x00010404, 0x00010404,
- 0x0001042d, 0x00010405, 0x00010405,
- 0x0001042e, 0x00010406, 0x00010406,
- 0x0001042f, 0x00010407, 0x00010407,
- 0x00010430, 0x00010408, 0x00010408,
- 0x00010431, 0x00010409, 0x00010409,
- 0x00010432, 0x0001040a, 0x0001040a,
- 0x00010433, 0x0001040b, 0x0001040b,
- 0x00010434, 0x0001040c, 0x0001040c,
- 0x00010435, 0x0001040d, 0x0001040d,
- 0x00010436, 0x0001040e, 0x0001040e,
- 0x00010437, 0x0001040f, 0x0001040f,
- 0x00010438, 0x00010410, 0x00010410,
- 0x00010439, 0x00010411, 0x00010411,
- 0x0001043a, 0x00010412, 0x00010412,
- 0x0001043b, 0x00010413, 0x00010413,
- 0x0001043c, 0x00010414, 0x00010414,
- 0x0001043d, 0x00010415, 0x00010415,
- 0x0001043e, 0x00010416, 0x00010416,
- 0x0001043f, 0x00010417, 0x00010417,
- 0x00010440, 0x00010418, 0x00010418,
- 0x00010441, 0x00010419, 0x00010419,
- 0x00010442, 0x0001041a, 0x0001041a,
- 0x00010443, 0x0001041b, 0x0001041b,
- 0x00010444, 0x0001041c, 0x0001041c,
- 0x00010445, 0x0001041d, 0x0001041d,
- 0x00010446, 0x0001041e, 0x0001041e,
- 0x00010447, 0x0001041f, 0x0001041f,
- 0x00010448, 0x00010420, 0x00010420,
- 0x00010449, 0x00010421, 0x00010421,
- 0x0001044a, 0x00010422, 0x00010422,
- 0x0001044b, 0x00010423, 0x00010423,
- 0x0001044c, 0x00010424, 0x00010424,
- 0x0001044d, 0x00010425, 0x00010425,
- 0x0001044e, 0x00010426, 0x00010426,
- 0x0001044f, 0x00010427, 0x00010427,
- 0x000104d8, 0x000104b0, 0x000104b0,
- 0x000104d9, 0x000104b1, 0x000104b1,
- 0x000104da, 0x000104b2, 0x000104b2,
- 0x000104db, 0x000104b3, 0x000104b3,
- 0x000104dc, 0x000104b4, 0x000104b4,
- 0x000104dd, 0x000104b5, 0x000104b5,
- 0x000104de, 0x000104b6, 0x000104b6,
- 0x000104df, 0x000104b7, 0x000104b7,
- 0x000104e0, 0x000104b8, 0x000104b8,
- 0x000104e1, 0x000104b9, 0x000104b9,
- 0x000104e2, 0x000104ba, 0x000104ba,
- 0x000104e3, 0x000104bb, 0x000104bb,
- 0x000104e4, 0x000104bc, 0x000104bc,
- 0x000104e5, 0x000104bd, 0x000104bd,
- 0x000104e6, 0x000104be, 0x000104be,
- 0x000104e7, 0x000104bf, 0x000104bf,
- 0x000104e8, 0x000104c0, 0x000104c0,
- 0x000104e9, 0x000104c1, 0x000104c1,
- 0x000104ea, 0x000104c2, 0x000104c2,
- 0x000104eb, 0x000104c3, 0x000104c3,
- 0x000104ec, 0x000104c4, 0x000104c4,
- 0x000104ed, 0x000104c5, 0x000104c5,
- 0x000104ee, 0x000104c6, 0x000104c6,
- 0x000104ef, 0x000104c7, 0x000104c7,
- 0x000104f0, 0x000104c8, 0x000104c8,
- 0x000104f1, 0x000104c9, 0x000104c9,
- 0x000104f2, 0x000104ca, 0x000104ca,
- 0x000104f3, 0x000104cb, 0x000104cb,
- 0x000104f4, 0x000104cc, 0x000104cc,
- 0x000104f5, 0x000104cd, 0x000104cd,
- 0x000104f6, 0x000104ce, 0x000104ce,
- 0x000104f7, 0x000104cf, 0x000104cf,
- 0x000104f8, 0x000104d0, 0x000104d0,
- 0x000104f9, 0x000104d1, 0x000104d1,
- 0x000104fa, 0x000104d2, 0x000104d2,
- 0x000104fb, 0x000104d3, 0x000104d3,
- 0x00010cc0, 0x00010c80, 0x00010c80,
- 0x00010cc1, 0x00010c81, 0x00010c81,
- 0x00010cc2, 0x00010c82, 0x00010c82,
- 0x00010cc3, 0x00010c83, 0x00010c83,
- 0x00010cc4, 0x00010c84, 0x00010c84,
- 0x00010cc5, 0x00010c85, 0x00010c85,
- 0x00010cc6, 0x00010c86, 0x00010c86,
- 0x00010cc7, 0x00010c87, 0x00010c87,
- 0x00010cc8, 0x00010c88, 0x00010c88,
- 0x00010cc9, 0x00010c89, 0x00010c89,
- 0x00010cca, 0x00010c8a, 0x00010c8a,
- 0x00010ccb, 0x00010c8b, 0x00010c8b,
- 0x00010ccc, 0x00010c8c, 0x00010c8c,
- 0x00010ccd, 0x00010c8d, 0x00010c8d,
- 0x00010cce, 0x00010c8e, 0x00010c8e,
- 0x00010ccf, 0x00010c8f, 0x00010c8f,
- 0x00010cd0, 0x00010c90, 0x00010c90,
- 0x00010cd1, 0x00010c91, 0x00010c91,
- 0x00010cd2, 0x00010c92, 0x00010c92,
- 0x00010cd3, 0x00010c93, 0x00010c93,
- 0x00010cd4, 0x00010c94, 0x00010c94,
- 0x00010cd5, 0x00010c95, 0x00010c95,
- 0x00010cd6, 0x00010c96, 0x00010c96,
- 0x00010cd7, 0x00010c97, 0x00010c97,
- 0x00010cd8, 0x00010c98, 0x00010c98,
- 0x00010cd9, 0x00010c99, 0x00010c99,
- 0x00010cda, 0x00010c9a, 0x00010c9a,
- 0x00010cdb, 0x00010c9b, 0x00010c9b,
- 0x00010cdc, 0x00010c9c, 0x00010c9c,
- 0x00010cdd, 0x00010c9d, 0x00010c9d,
- 0x00010cde, 0x00010c9e, 0x00010c9e,
- 0x00010cdf, 0x00010c9f, 0x00010c9f,
- 0x00010ce0, 0x00010ca0, 0x00010ca0,
- 0x00010ce1, 0x00010ca1, 0x00010ca1,
- 0x00010ce2, 0x00010ca2, 0x00010ca2,
- 0x00010ce3, 0x00010ca3, 0x00010ca3,
- 0x00010ce4, 0x00010ca4, 0x00010ca4,
- 0x00010ce5, 0x00010ca5, 0x00010ca5,
- 0x00010ce6, 0x00010ca6, 0x00010ca6,
- 0x00010ce7, 0x00010ca7, 0x00010ca7,
- 0x00010ce8, 0x00010ca8, 0x00010ca8,
- 0x00010ce9, 0x00010ca9, 0x00010ca9,
- 0x00010cea, 0x00010caa, 0x00010caa,
- 0x00010ceb, 0x00010cab, 0x00010cab,
- 0x00010cec, 0x00010cac, 0x00010cac,
- 0x00010ced, 0x00010cad, 0x00010cad,
- 0x00010cee, 0x00010cae, 0x00010cae,
- 0x00010cef, 0x00010caf, 0x00010caf,
- 0x00010cf0, 0x00010cb0, 0x00010cb0,
- 0x00010cf1, 0x00010cb1, 0x00010cb1,
- 0x00010cf2, 0x00010cb2, 0x00010cb2,
- 0x000118c0, 0x000118a0, 0x000118a0,
- 0x000118c1, 0x000118a1, 0x000118a1,
- 0x000118c2, 0x000118a2, 0x000118a2,
- 0x000118c3, 0x000118a3, 0x000118a3,
- 0x000118c4, 0x000118a4, 0x000118a4,
- 0x000118c5, 0x000118a5, 0x000118a5,
- 0x000118c6, 0x000118a6, 0x000118a6,
- 0x000118c7, 0x000118a7, 0x000118a7,
- 0x000118c8, 0x000118a8, 0x000118a8,
- 0x000118c9, 0x000118a9, 0x000118a9,
- 0x000118ca, 0x000118aa, 0x000118aa,
- 0x000118cb, 0x000118ab, 0x000118ab,
- 0x000118cc, 0x000118ac, 0x000118ac,
- 0x000118cd, 0x000118ad, 0x000118ad,
- 0x000118ce, 0x000118ae, 0x000118ae,
- 0x000118cf, 0x000118af, 0x000118af,
- 0x000118d0, 0x000118b0, 0x000118b0,
- 0x000118d1, 0x000118b1, 0x000118b1,
- 0x000118d2, 0x000118b2, 0x000118b2,
- 0x000118d3, 0x000118b3, 0x000118b3,
- 0x000118d4, 0x000118b4, 0x000118b4,
- 0x000118d5, 0x000118b5, 0x000118b5,
- 0x000118d6, 0x000118b6, 0x000118b6,
- 0x000118d7, 0x000118b7, 0x000118b7,
- 0x000118d8, 0x000118b8, 0x000118b8,
- 0x000118d9, 0x000118b9, 0x000118b9,
- 0x000118da, 0x000118ba, 0x000118ba,
- 0x000118db, 0x000118bb, 0x000118bb,
- 0x000118dc, 0x000118bc, 0x000118bc,
- 0x000118dd, 0x000118bd, 0x000118bd,
- 0x000118de, 0x000118be, 0x000118be,
- 0x000118df, 0x000118bf, 0x000118bf,
- 0x0001e922, 0x0001e900, 0x0001e900,
- 0x0001e923, 0x0001e901, 0x0001e901,
- 0x0001e924, 0x0001e902, 0x0001e902,
- 0x0001e925, 0x0001e903, 0x0001e903,
- 0x0001e926, 0x0001e904, 0x0001e904,
- 0x0001e927, 0x0001e905, 0x0001e905,
- 0x0001e928, 0x0001e906, 0x0001e906,
- 0x0001e929, 0x0001e907, 0x0001e907,
- 0x0001e92a, 0x0001e908, 0x0001e908,
- 0x0001e92b, 0x0001e909, 0x0001e909,
- 0x0001e92c, 0x0001e90a, 0x0001e90a,
- 0x0001e92d, 0x0001e90b, 0x0001e90b,
- 0x0001e92e, 0x0001e90c, 0x0001e90c,
- 0x0001e92f, 0x0001e90d, 0x0001e90d,
- 0x0001e930, 0x0001e90e, 0x0001e90e,
- 0x0001e931, 0x0001e90f, 0x0001e90f,
- 0x0001e932, 0x0001e910, 0x0001e910,
- 0x0001e933, 0x0001e911, 0x0001e911,
- 0x0001e934, 0x0001e912, 0x0001e912,
- 0x0001e935, 0x0001e913, 0x0001e913,
- 0x0001e936, 0x0001e914, 0x0001e914,
- 0x0001e937, 0x0001e915, 0x0001e915,
- 0x0001e938, 0x0001e916, 0x0001e916,
- 0x0001e939, 0x0001e917, 0x0001e917,
- 0x0001e93a, 0x0001e918, 0x0001e918,
- 0x0001e93b, 0x0001e919, 0x0001e919,
- 0x0001e93c, 0x0001e91a, 0x0001e91a,
- 0x0001e93d, 0x0001e91b, 0x0001e91b,
- 0x0001e93e, 0x0001e91c, 0x0001e91c,
- 0x0001e93f, 0x0001e91d, 0x0001e91d,
- 0x0001e940, 0x0001e91e, 0x0001e91e,
- 0x0001e941, 0x0001e91f, 0x0001e91f,
- 0x0001e942, 0x0001e920, 0x0001e920,
- 0x0001e943, 0x0001e921, 0x0001e921,
- 0x000001c5, 0x000001c4, 0x000001c6,
- 0x000001c8, 0x000001c7, 0x000001c9,
- 0x000001cb, 0x000001ca, 0x000001cc,
- 0x000001f2, 0x000001f1, 0x000001f3,
- 0x00001f88, 0x00001f88, 0x00001f80,
- 0x00001f89, 0x00001f89, 0x00001f81,
- 0x00001f8a, 0x00001f8a, 0x00001f82,
- 0x00001f8b, 0x00001f8b, 0x00001f83,
- 0x00001f8c, 0x00001f8c, 0x00001f84,
- 0x00001f8d, 0x00001f8d, 0x00001f85,
- 0x00001f8e, 0x00001f8e, 0x00001f86,
- 0x00001f8f, 0x00001f8f, 0x00001f87,
- 0x00001f98, 0x00001f98, 0x00001f90,
- 0x00001f99, 0x00001f99, 0x00001f91,
- 0x00001f9a, 0x00001f9a, 0x00001f92,
- 0x00001f9b, 0x00001f9b, 0x00001f93,
- 0x00001f9c, 0x00001f9c, 0x00001f94,
- 0x00001f9d, 0x00001f9d, 0x00001f95,
- 0x00001f9e, 0x00001f9e, 0x00001f96,
- 0x00001f9f, 0x00001f9f, 0x00001f97,
- 0x00001fa8, 0x00001fa8, 0x00001fa0,
- 0x00001fa9, 0x00001fa9, 0x00001fa1,
- 0x00001faa, 0x00001faa, 0x00001fa2,
- 0x00001fab, 0x00001fab, 0x00001fa3,
- 0x00001fac, 0x00001fac, 0x00001fa4,
- 0x00001fad, 0x00001fad, 0x00001fa5,
- 0x00001fae, 0x00001fae, 0x00001fa6,
- 0x00001faf, 0x00001faf, 0x00001fa7,
- 0x00001fbc, 0x00001fbc, 0x00001fb3,
- 0x00001fcc, 0x00001fcc, 0x00001fc3,
- 0x00001ffc, 0x00001ffc, 0x00001ff3
+static const unsigned _uccase_extra_table[] = {
+ 0x00001f88, 0x00001f08, 0x00000399, 0x00001f89,
+ 0x00001f09, 0x00000399, 0x00001f8a, 0x00001f0a,
+ 0x00000399, 0x00001f8b, 0x00001f0b, 0x00000399,
+ 0x00001f8c, 0x00001f0c, 0x00000399, 0x00001f8d,
+ 0x00001f0d, 0x00000399, 0x00001f8e, 0x00001f0e,
+ 0x00000399, 0x00001f8f, 0x00001f0f, 0x00000399,
+ 0x00001f98, 0x00001f28, 0x00000399, 0x00001f99,
+ 0x00001f29, 0x00000399, 0x00001f9a, 0x00001f2a,
+ 0x00000399, 0x00001f9b, 0x00001f2b, 0x00000399,
+ 0x00001f9c, 0x00001f2c, 0x00000399, 0x00001f9d,
+ 0x00001f2d, 0x00000399, 0x00001f9e, 0x00001f2e,
+ 0x00000399, 0x00001f9f, 0x00001f2f, 0x00000399,
+ 0x00001fa8, 0x00001f68, 0x00000399, 0x00001fa9,
+ 0x00001f69, 0x00000399, 0x00001faa, 0x00001f6a,
+ 0x00000399, 0x00001fab, 0x00001f6b, 0x00000399,
+ 0x00001fac, 0x00001f6c, 0x00000399, 0x00001fad,
+ 0x00001f6d, 0x00000399, 0x00001fae, 0x00001f6e,
+ 0x00000399, 0x00001faf, 0x00001f6f, 0x00000399,
+ 0x00001fbc, 0x00000391, 0x00000399, 0x00001fcc,
+ 0x00000397, 0x00000399, 0x00001ffc, 0x000003a9,
+ 0x00000399, 0x000000df, 0x00000053, 0x00000053,
+ 0x0000fb00, 0x00000046, 0x00000046, 0x0000fb01,
+ 0x00000046, 0x00000049, 0x0000fb02, 0x00000046,
+ 0x0000004c, 0x0000fb03, 0x00000046, 0x00000046,
+ 0x00000049, 0x0000fb04, 0x00000046, 0x00000046,
+ 0x0000004c, 0x0000fb05, 0x00000053, 0x00000054,
+ 0x0000fb06, 0x00000053, 0x00000054, 0x00000587,
+ 0x00000535, 0x00000552, 0x0000fb13, 0x00000544,
+ 0x00000546, 0x0000fb14, 0x00000544, 0x00000535,
+ 0x0000fb15, 0x00000544, 0x0000053b, 0x0000fb16,
+ 0x0000054e, 0x00000546, 0x0000fb17, 0x00000544,
+ 0x0000053d, 0x00000149, 0x000002bc, 0x0000004e,
+ 0x00000390, 0x00000399, 0x00000308, 0x00000301,
+ 0x000003b0, 0x000003a5, 0x00000308, 0x00000301,
+ 0x000001f0, 0x0000004a, 0x0000030c, 0x00001e96,
+ 0x00000048, 0x00000331, 0x00001e97, 0x00000054,
+ 0x00000308, 0x00001e98, 0x00000057, 0x0000030a,
+ 0x00001e99, 0x00000059, 0x0000030a, 0x00001e9a,
+ 0x00000041, 0x000002be, 0x00001f50, 0x000003a5,
+ 0x00000313, 0x00001f52, 0x000003a5, 0x00000313,
+ 0x00000300, 0x00001f54, 0x000003a5, 0x00000313,
+ 0x00000301, 0x00001f56, 0x000003a5, 0x00000313,
+ 0x00000342, 0x00001fb6, 0x00000391, 0x00000342,
+ 0x00001fc6, 0x00000397, 0x00000342, 0x00001fd2,
+ 0x00000399, 0x00000308, 0x00000300, 0x00001fd3,
+ 0x00000399, 0x00000308, 0x00000301, 0x00001fd6,
+ 0x00000399, 0x00000342, 0x00001fd7, 0x00000399,
+ 0x00000308, 0x00000342, 0x00001fe2, 0x000003a5,
+ 0x00000308, 0x00000300, 0x00001fe3, 0x000003a5,
+ 0x00000308, 0x00000301, 0x00001fe4, 0x000003a1,
+ 0x00000313, 0x00001fe6, 0x000003a5, 0x00000342,
+ 0x00001fe7, 0x000003a5, 0x00000308, 0x00000342,
+ 0x00001ff6, 0x000003a9, 0x00000342, 0x00001f88,
+ 0x00001f08, 0x00000399, 0x00001f89, 0x00001f09,
+ 0x00000399, 0x00001f8a, 0x00001f0a, 0x00000399,
+ 0x00001f8b, 0x00001f0b, 0x00000399, 0x00001f8c,
+ 0x00001f0c, 0x00000399, 0x00001f8d, 0x00001f0d,
+ 0x00000399, 0x00001f8e, 0x00001f0e, 0x00000399,
+ 0x00001f8f, 0x00001f0f, 0x00000399, 0x00001f98,
+ 0x00001f28, 0x00000399, 0x00001f99, 0x00001f29,
+ 0x00000399, 0x00001f9a, 0x00001f2a, 0x00000399,
+ 0x00001f9b, 0x00001f2b, 0x00000399, 0x00001f9c,
+ 0x00001f2c, 0x00000399, 0x00001f9d, 0x00001f2d,
+ 0x00000399, 0x00001f9e, 0x00001f2e, 0x00000399,
+ 0x00001f9f, 0x00001f2f, 0x00000399, 0x00001fa8,
+ 0x00001f68, 0x00000399, 0x00001fa9, 0x00001f69,
+ 0x00000399, 0x00001faa, 0x00001f6a, 0x00000399,
+ 0x00001fab, 0x00001f6b, 0x00000399, 0x00001fac,
+ 0x00001f6c, 0x00000399, 0x00001fad, 0x00001f6d,
+ 0x00000399, 0x00001fae, 0x00001f6e, 0x00000399,
+ 0x00001faf, 0x00001f6f, 0x00000399, 0x00001fbc,
+ 0x00000391, 0x00000399, 0x00001fcc, 0x00000397,
+ 0x00000399, 0x00001ffc, 0x000003a9, 0x00000399,
+ 0x00001fb2, 0x00001fba, 0x00000399, 0x00001fb4,
+ 0x00000386, 0x00000399, 0x00001fc2, 0x00001fca,
+ 0x00000399, 0x00001fc4, 0x00000389, 0x00000399,
+ 0x00001ff2, 0x00001ffa, 0x00000399, 0x00001ff4,
+ 0x0000038f, 0x00000399, 0x00001fb7, 0x00000391,
+ 0x00000342, 0x00000399, 0x00001fc7, 0x00000397,
+ 0x00000342, 0x00000399, 0x00001ff7, 0x000003a9,
+ 0x00000342, 0x00000399, 0x00000069, 0x00000069,
+ 0x00000307, 0x000000df, 0x00000053, 0x00000073,
+ 0x0000fb00, 0x00000046, 0x00000066, 0x0000fb01,
+ 0x00000046, 0x00000069, 0x0000fb02, 0x00000046,
+ 0x0000006c, 0x0000fb03, 0x00000046, 0x00000066,
+ 0x00000069, 0x0000fb04, 0x00000046, 0x00000066,
+ 0x0000006c, 0x0000fb05, 0x00000053, 0x00000074,
+ 0x0000fb06, 0x00000053, 0x00000074, 0x00000587,
+ 0x00000535, 0x00000582, 0x0000fb13, 0x00000544,
+ 0x00000576, 0x0000fb14, 0x00000544, 0x00000565,
+ 0x0000fb15, 0x00000544, 0x0000056b, 0x0000fb16,
+ 0x0000054e, 0x00000576, 0x0000fb17, 0x00000544,
+ 0x0000056d, 0x00001fb2, 0x00001fba, 0x00000345,
+ 0x00001fb4, 0x00000386, 0x00000345, 0x00001fc2,
+ 0x00001fca, 0x00000345, 0x00001fc4, 0x00000389,
+ 0x00000345, 0x00001ff2, 0x00001ffa, 0x00000345,
+ 0x00001ff4, 0x0000038f, 0x00000345, 0x00001fb7,
+ 0x00000391, 0x00000342, 0x00000345, 0x00001fc7,
+ 0x00000397, 0x00000342, 0x00000345, 0x00001ff7,
+ 0x000003a9, 0x00000342, 0x00000345, 0x000000df,
+ 0x00000073, 0x00000073, 0x00000130, 0x00000069,
+ 0x00000307, 0x00000149, 0x000002bc, 0x0000006e,
+ 0x000001f0, 0x0000006a, 0x0000030c, 0x00000390,
+ 0x000003b9, 0x00000308, 0x00000301, 0x000003b0,
+ 0x000003c5, 0x00000308, 0x00000301, 0x00000587,
+ 0x00000565, 0x00000582, 0x00001e96, 0x00000068,
+ 0x00000331, 0x00001e97, 0x00000074, 0x00000308,
+ 0x00001e98, 0x00000077, 0x0000030a, 0x00001e99,
+ 0x00000079, 0x0000030a, 0x00001e9a, 0x00000061,
+ 0x000002be, 0x000000df, 0x00000073, 0x00000073,
+ 0x00001f50, 0x000003c5, 0x00000313, 0x00001f52,
+ 0x000003c5, 0x00000313, 0x00000300, 0x00001f54,
+ 0x000003c5, 0x00000313, 0x00000301, 0x00001f56,
+ 0x000003c5, 0x00000313, 0x00000342, 0x00001f80,
+ 0x00001f00, 0x000003b9, 0x00001f81, 0x00001f01,
+ 0x000003b9, 0x00001f82, 0x00001f02, 0x000003b9,
+ 0x00001f83, 0x00001f03, 0x000003b9, 0x00001f84,
+ 0x00001f04, 0x000003b9, 0x00001f85, 0x00001f05,
+ 0x000003b9, 0x00001f86, 0x00001f06, 0x000003b9,
+ 0x00001f87, 0x00001f07, 0x000003b9, 0x00001f80,
+ 0x00001f00, 0x000003b9, 0x00001f81, 0x00001f01,
+ 0x000003b9, 0x00001f82, 0x00001f02, 0x000003b9,
+ 0x00001f83, 0x00001f03, 0x000003b9, 0x00001f84,
+ 0x00001f04, 0x000003b9, 0x00001f85, 0x00001f05,
+ 0x000003b9, 0x00001f86, 0x00001f06, 0x000003b9,
+ 0x00001f87, 0x00001f07, 0x000003b9, 0x00001f90,
+ 0x00001f20, 0x000003b9, 0x00001f91, 0x00001f21,
+ 0x000003b9, 0x00001f92, 0x00001f22, 0x000003b9,
+ 0x00001f93, 0x00001f23, 0x000003b9, 0x00001f94,
+ 0x00001f24, 0x000003b9, 0x00001f95, 0x00001f25,
+ 0x000003b9, 0x00001f96, 0x00001f26, 0x000003b9,
+ 0x00001f97, 0x00001f27, 0x000003b9, 0x00001f90,
+ 0x00001f20, 0x000003b9, 0x00001f91, 0x00001f21,
+ 0x000003b9, 0x00001f92, 0x00001f22, 0x000003b9,
+ 0x00001f93, 0x00001f23, 0x000003b9, 0x00001f94,
+ 0x00001f24, 0x000003b9, 0x00001f95, 0x00001f25,
+ 0x000003b9, 0x00001f96, 0x00001f26, 0x000003b9,
+ 0x00001f97, 0x00001f27, 0x000003b9, 0x00001fa0,
+ 0x00001f60, 0x000003b9, 0x00001fa1, 0x00001f61,
+ 0x000003b9, 0x00001fa2, 0x00001f62, 0x000003b9,
+ 0x00001fa3, 0x00001f63, 0x000003b9, 0x00001fa4,
+ 0x00001f64, 0x000003b9, 0x00001fa5, 0x00001f65,
+ 0x000003b9, 0x00001fa6, 0x00001f66, 0x000003b9,
+ 0x00001fa7, 0x00001f67, 0x000003b9, 0x00001fa0,
+ 0x00001f60, 0x000003b9, 0x00001fa1, 0x00001f61,
+ 0x000003b9, 0x00001fa2, 0x00001f62, 0x000003b9,
+ 0x00001fa3, 0x00001f63, 0x000003b9, 0x00001fa4,
+ 0x00001f64, 0x000003b9, 0x00001fa5, 0x00001f65,
+ 0x000003b9, 0x00001fa6, 0x00001f66, 0x000003b9,
+ 0x00001fa7, 0x00001f67, 0x000003b9, 0x00001fb2,
+ 0x00001f70, 0x000003b9, 0x00001fb3, 0x000003b1,
+ 0x000003b9, 0x00001fb4, 0x000003ac, 0x000003b9,
+ 0x00001fb6, 0x000003b1, 0x00000342, 0x00001fb7,
+ 0x000003b1, 0x00000342, 0x000003b9, 0x00001fb3,
+ 0x000003b1, 0x000003b9, 0x00001fc2, 0x00001f74,
+ 0x000003b9, 0x00001fc3, 0x000003b7, 0x000003b9,
+ 0x00001fc4, 0x000003ae, 0x000003b9, 0x00001fc6,
+ 0x000003b7, 0x00000342, 0x00001fc7, 0x000003b7,
+ 0x00000342, 0x000003b9, 0x00001fc3, 0x000003b7,
+ 0x000003b9, 0x00001fd2, 0x000003b9, 0x00000308,
+ 0x00000300, 0x00001fd3, 0x000003b9, 0x00000308,
+ 0x00000301, 0x00001fd6, 0x000003b9, 0x00000342,
+ 0x00001fd7, 0x000003b9, 0x00000308, 0x00000342,
+ 0x00001fe2, 0x000003c5, 0x00000308, 0x00000300,
+ 0x00001fe3, 0x000003c5, 0x00000308, 0x00000301,
+ 0x00001fe4, 0x000003c1, 0x00000313, 0x00001fe6,
+ 0x000003c5, 0x00000342, 0x00001fe7, 0x000003c5,
+ 0x00000308, 0x00000342, 0x00001ff2, 0x00001f7c,
+ 0x000003b9, 0x00001ff3, 0x000003c9, 0x000003b9,
+ 0x00001ff4, 0x000003ce, 0x000003b9, 0x00001ff6,
+ 0x000003c9, 0x00000342, 0x00001ff7, 0x000003c9,
+ 0x00000342, 0x000003b9, 0x00001ff3, 0x000003c9,
+ 0x000003b9, 0x0000fb00, 0x00000066, 0x00000066,
+ 0x0000fb01, 0x00000066, 0x00000069, 0x0000fb02,
+ 0x00000066, 0x0000006c, 0x0000fb03, 0x00000066,
+ 0x00000066, 0x00000069, 0x0000fb04, 0x00000066,
+ 0x00000066, 0x0000006c, 0x0000fb05, 0x00000073,
+ 0x00000074, 0x0000fb06, 0x00000073, 0x00000074,
+ 0x0000fb13, 0x00000574, 0x00000576, 0x0000fb14,
+ 0x00000574, 0x00000565, 0x0000fb15, 0x00000574,
+ 0x0000056b, 0x0000fb16, 0x0000057e, 0x00000576,
+ 0x0000fb17, 0x00000574, 0x0000056d
};