diff options
48 files changed, 14203 insertions, 10850 deletions
@@ -20,8 +20,6 @@ Makefile.in *~ .libs/ .deps/ -testc -testcu -testp /build m4/*.m4 +debian/files diff --git a/CMakeLists.txt b/CMakeLists.txt index b40fb2c..9e1efe8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8) project(oniguruma C) set(PACKAGE onig) -set(PACKAGE_VERSION "6.5.0") +set(PACKAGE_VERSION "6.6.0") set(USE_COMBINATION_EXPLOSION_CHECK 0) set(USE_CRNL_AS_LINE_TERMINATOR 0) @@ -81,7 +81,7 @@ install_library(onig) install_header(src/oniguruma.h src/onigposix.h src/oniggnu.h) install_doc(doc/API doc/API.ja doc/RE doc/RE.ja doc/UNICODE_PROPERTIES) -install_data(AUTHORS COPYING HISTORY README) +install_data(AUTHORS COPYING HISTORY README.md) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc DESTINATION lib/pkgconfig) @@ -1,5 +1,24 @@ History +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) diff --git a/Makefile.am b/Makefile.am index b044f93..4703747 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src test sample -EXTRA_DIST = oniguruma.pc.in HISTORY README.ja README.md \ +EXTRA_DIST = oniguruma.pc.in HISTORY README_japanese README.md \ index.html index_ja.html \ CMakeLists.txt dist.info oniguruma.pc.cmake.in cmake/dist.cmake \ src/config.h.cmake.in \ @@ -1,6 +1,6 @@ -README 2017/07/08 +README 2017/08/25 -Oniguruma ---- (C) K.Kosako <kkosako0@gmail.com> +Oniguruma ---- (C) K.Kosako https://github.com/kkos/oniguruma @@ -179,16 +179,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> @@ -5,8 +5,8 @@ https://github.com/kkos/oniguruma FIXED Security Issues: -------------------------- - CVE-2017-9224, CVE-2017-9225, CVE-2017-9226 - CVE-2017-9227, CVE-2017-9228, CVE-2017-9229 + **CVE-2017-9224, CVE-2017-9225, CVE-2017-9226** + **CVE-2017-9227, CVE-2017-9228, CVE-2017-9229** Oniguruma is a regular expressions library. @@ -26,6 +26,21 @@ Supported character encodings: * CP1251: contributed by Byte +New feature of version 6.6.1 +-------------------------- + +* Fix definition of \X + + +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 backtrack. + + New feature of version 6.5.0 -------------------------- @@ -33,24 +48,24 @@ New feature of version 6.5.0 * NEW: \R (general newline) \N (no newline) * NEW: \O (true anychar) * NEW: if-then-else syntax (?(...)...\|...) -* NEW: Backreference validity checker (*original) +* NEW: Backreference validity checker (?(xxx)) (*original) * NEW: Absent repeater (?~absent) * NEW: Absent expression (?~|absent|expr) (*original) -* NEW: Absent range cutter (?~|absent) (*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) -* NEW: relative backref and relative call by positive number +* 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{.....} New feature of version 6.1.2 diff --git a/README.ja b/README_japanese index 826a8e7..28da31b 100644 --- a/README.ja +++ b/README_japanese @@ -1,4 +1,4 @@ -README.ja 2016/05/06 +README.ja 2017/08/25 µ´¼Ö ---- (C) K.Kosako <kkosako0@gmail.com> @@ -180,16 +180,4 @@ https://github.com/kkos/oniguruma 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/configure.ac b/configure.ac index efaf5e1..d585690 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT(onig, 6.5.0) +AC_INIT(onig, 6.6.1) AC_CONFIG_MACRO_DIR([m4]) @@ -24,7 +24,7 @@ fi dnl check for CRNL_AS_LINE_TERMINATOR AC_ARG_ENABLE(crnl-as-line-terminator, - [ --enable-crnl-as-line-terminator enable CR+NL as line terminator], + [ --enable-crnl-as-line-terminator deprecated], [crnl_as_line_terminator=$enableval]) if test "${crnl_as_line_terminator}" = yes; then AC_DEFINE(USE_CRNL_AS_LINE_TERMINATOR,1,[Define if enable CR+NL as line terminator]) diff --git a/debian/changelog b/debian/changelog index d7330ed..453ddab 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +libonig (6.6.1-1) unstable; urgency=medium + + * New upstream release. + - Refresh symbols file. + * Declare compliance with Debian Policy 4.1.0.0. (No changes needed). + * Remove missing README.ja from debian/libonig-dev.docs and + debian/libonig-dev.doc-base. + + -- Jörg Frings-Fürst <debian@jff-webhosting.net> Fri, 01 Sep 2017 19:57:42 +0200 + libonig (6.5.0-1) unstable; urgency=medium * New upstream release. diff --git a/debian/control b/debian/control index 6b25f28..e59bbc4 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: extra Maintainer: Jörg Frings-Fürst <debian@jff-webhosting.net> Build-Depends: debhelper (>= 10) -Standards-Version: 4.0.0 +Standards-Version: 4.1.0.0 Homepage: https://github.com/kkos/oniguruma Vcs-Git: https://anonscm.debian.org/cgit/collab-maint/libonig.git Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/libonig.git diff --git a/debian/libonig-dev.doc-base b/debian/libonig-dev.doc-base index 2c6bcf7..8dab269 100644 --- a/debian/libonig-dev.doc-base +++ b/debian/libonig-dev.doc-base @@ -10,7 +10,6 @@ Files: /usr/share/doc/libonig-dev/API.gz /usr/share/doc/libonig-dev/RE.gz /usr/share/doc/libonig-dev/RE.ja.gz /usr/share/doc/libonig-dev/README.gz - /usr/share/doc/libonig-dev/README.ja.gz Format: HTML Index: /usr/share/doc/libonig-dev/index.html diff --git a/debian/libonig-dev.docs b/debian/libonig-dev.docs index 856bacd..b8be5a0 100644 --- a/debian/libonig-dev.docs +++ b/debian/libonig-dev.docs @@ -1,6 +1,5 @@ AUTHORS README -README.ja doc/API doc/API.ja doc/FAQ diff --git a/debian/symbols b/debian/symbols index d3c085c..dd785d7 100644 --- a/debian/symbols +++ b/debian/symbols @@ -166,6 +166,7 @@ libonig.so.4 libonig4 #MINVER# onigenc_ascii_apply_all_case_fold@Base 5.9.5 onigenc_ascii_get_case_fold_codes_by_str@Base 5.9.5 onigenc_ascii_mbc_case_fold@Base 5.9.5 + onigenc_egcb_is_break_position@Base 6.6.1 onigenc_get_case_fold_codes_by_str_with_map@Base 5.9.5 onigenc_get_default_encoding@Base 5.9.5 onigenc_get_left_adjust_char_head@Base 5.9.5 @@ -174,6 +175,7 @@ libonig.so.4 libonig4 #MINVER# onigenc_get_right_adjust_char_head_with_prev@Base 5.9.5 onigenc_init@Base 5.9.5 onigenc_is_mbc_newline_0x0a@Base 5.9.5 + onigenc_is_mbc_word_ascii@Base 6.6.1 onigenc_is_valid_mbc_string@Base 6.1.0 onigenc_length_check_is_valid_mbc_string@Base 6.1.0 onigenc_mb2_code_to_mbc@Base 5.9.5 @@ -1,7 +1,7 @@ --- This file is part of LuaDist project name = "onig" -version = "6.5.0" +version = "6.6.1" desc = "Oniguruma is a regular expressions library." author = "K.Kosako" @@ -1,4 +1,4 @@ -Oniguruma API Version 6.1.0 2016/08/22 +Oniguruma API Version 6.6.0 2017/08/15 #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 @@ -1,4 +1,4 @@ -鬼車インターフェース Version 6.1.0 2016/08/22 +鬼車インターフェース Version 6.6.0 2017/08/15 #include <oniguruma.h> @@ -82,6 +82,15 @@ 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: æ–‡å—エンコーディング @@ -1,4 +1,4 @@ -Oniguruma Regular Expressions Version 6.5.0 2017/07/30 +Oniguruma Regular Expressions Version 6.6.0 2017/08/29 syntax: ONIG_SYNTAX_RUBY (default) @@ -80,6 +80,16 @@ syntax: ONIG_SYNTAX_RUBY (default) \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 @@ -139,6 +149,9 @@ 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 @@ -207,11 +220,19 @@ 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) option on/off + 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:subexp) option on/off for subexp (?:subexp) non-capturing group (subexp) capturing group @@ -245,24 +266,23 @@ syntax: ONIG_SYNTAX_RUBY (default) (?~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. + 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. + that does not include the string match with <absent>. ex. (?~|345|\d*) "12345678" ==> "12", "1", "" - (?~|absent) Absent cutter (* original) + (?~|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. + <absent>. - (?~|) Absent clear - Clear the effects caused by Absent cutters. - (* This operation is not cancelled by backtrack.) + (?~|) Range clear + Clear the effects caused by Absent stoppers. * Nested Absent functions are not supported and the behavior is undefined. @@ -273,7 +293,7 @@ syntax: ONIG_SYNTAX_RUBY (default) condition_exp can be a backreference number/name or a normal regular expression. - When condition_exp is a backreference, both then_exp and + 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. @@ -420,7 +440,7 @@ A-2. Original extensions A-3. Missing features compared with perl 5.8.0 + \N{name} - + \l,\u,\L,\U, \X, \C + + \l,\u,\L,\U,\C + (?{code}) + (??{code}) @@ -1,4 +1,4 @@ -鬼車 æ£è¦è¡¨ç¾ Version 6.5.0 2017/07/30 +鬼車 æ£è¦è¡¨ç¾ Version 6.6.0 2017/08/29 使用文法: ONIG_SYNTAX_RUBY (既定値) @@ -80,6 +80,16 @@ \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 @@ -139,10 +149,13 @@ $ 行末 \b å˜èªžå¢ƒç•Œ \B éžå˜èªžå¢ƒç•Œ + \y æ‹¡å¼µæ›¸è¨˜ç´ æˆ¿ 境界 + \Y æ‹¡å¼µæ›¸è¨˜ç´ æˆ¿ éžå¢ƒç•Œ + \A æ–‡å—列先é \Z æ–‡å—列末尾ã€ã¾ãŸã¯æ–‡å—列末尾ã®æ”¹è¡Œã®ç›´å‰ \z æ–‡å—列末尾 - \G ç…§åˆé–‹å§‹ä½ç½® + \G 探索開始ä½ç½® \K ä¿æŒ (çµæžœã®é–‹å§‹ä½ç½®ã‚’ã“ã®ä½ç½®ã«ä¿ã¤) @@ -205,11 +218,19 @@ 7. æ‹¡å¼µå¼é›†åˆ (?#...) 注釈 - (?imx-imx) å¤ç«‹ã‚ªãƒ—ション - i: 大文å—å°æ–‡å—ç…§åˆ - m: 複数行 - x: æ‹¡å¼µå½¢å¼ - (?imx-imx:å¼) å¼ã‚ªãƒ—ション + (?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:å¼) å¼ã‚ªãƒ—ション (å¼) æ•ç²å¼é›†åˆ (?:å¼) éžæ•ç²å¼é›†åˆ @@ -245,40 +266,39 @@ <ä¸åœ¨æ©Ÿèƒ½ç¾¤> (?~ä¸åœ¨å¼) ä¸åœ¨ç¹°ã‚Šè¿”ã— (*原案 ç”°ä¸å“²) - ã“ã‚Œã¯.*ã®ã‚ˆã†ã«(よりæ£ç¢ºã«ã¯\O*)動作ã™ã‚‹ãŒã€ä¸åœ¨å¼ã« + ã“ã‚Œã¯.*(よりæ£ç¢ºã«ã¯\O*)ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã« é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚ ã“ã‚Œã¯(?~|ä¸åœ¨å¼|\O*)ã®çœç•¥è¡¨è¨˜ã§ã‚る。 - \O*ã®éƒ¨åˆ†ã¯ãƒžãƒ«ãƒãƒ©ã‚¤ãƒ³ã‚ªãƒ—ション(?m)ã®å½±éŸ¿ã‚’å—ã‘ãªã„。 (?~|ä¸åœ¨å¼|å¼) ä¸åœ¨å¼ (* 原作) - ã“ã‚Œã¯"å¼"ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å—列を + ã“ã‚Œã¯<å¼>ã®ã‚ˆã†ã«å‹•ä½œã™ã‚‹ãŒã€<ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å—列を å«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚ 例 (?~|345|\d*) "12345678" ==> "12", "1", "" - (?~|ä¸åœ¨å¼) ä¸åœ¨åˆ‡æ– (* 原作) + (?~|ä¸åœ¨å¼) ä¸åœ¨åœæ¢ (* 原作) ã“ã®æ¼”ç®—åを通éŽã—ãŸå¾Œã¯ã€å¯¾è±¡æ–‡å—列ã®é©åˆç¯„囲ã®æœ€å¾ŒãŒ - ä¸åœ¨å¼ã«é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚ + <ä¸åœ¨å¼>ã«é©åˆã™ã‚‹æ–‡å—列をå«ã¾ãªã„範囲ã«åˆ¶é™ã•ã‚Œã‚‹ã€‚ - (?~|) ä¸åœ¨æ¶ˆåŽ» - ä¸åœ¨åˆ‡æ–ã®åŠ¹æžœã‚’消ã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚ - (* ã“ã®æ¼”ç®—åã®åŠ¹æžœã¯å¾Œé€€å†è©¦è¡Œã§ç„¡åŠ¹åŒ–ã•ã‚Œãªã„) + (?~|) 範囲消去 + ä¸åœ¨åœæ¢ã®åŠ¹æžœã‚’消ã—ã¦ã€åˆæœŸçŠ¶æ…‹ã«ã™ã‚‹ã€‚ - * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œåã¯ã‚µãƒãƒ¼ãƒˆã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚ + * ä¸åœ¨æ©Ÿèƒ½ã®å…¥ã‚Œåã«ã¯å¯¾å¿œã—ã¦ãŠã‚‰ãšã€æŒ™å‹•ã¯ä¸å®šã¨ã™ã‚‹ã€‚ (?(æ¡ä»¶å¼)æˆåŠŸå¼|失敗å¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã€å¤±æ•—ã™ã‚Œã°å¤±æ•—å¼ã‚’実行ã™ã‚‹ ã“ã®æ©Ÿèƒ½ã®å˜åœ¨ç†ç”±ã¯ã€æˆåŠŸå¼ãŒå¤±æ•—ã—ã¦ã‚‚失敗å¼ã«ã¯ è¡Œã‹ãªã„ã“ã¨ã€‚ã“ã‚Œã¯ä»–ã®æ£è¦è¡¨ç¾ã§æ›¸ãã“ã¨ãŒã§ããªã„。 - ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ã¨ãã€å¾Œæ–¹å‚照値ã®æœ‰åŠ¹æ€§ - を調ã¹ã‚‹(æ–‡å—列ã¨ãƒžãƒƒãƒãƒ³ã‚°ã¯ã—ãªã„)æ„味ã«ãªã‚‹ã€‚ + ã‚‚ã†ã²ã¨ã¤ã¯ã€æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã®ã¨ã〠+ 後方å‚照値ã®æœ‰åŠ¹æ€§ã‚’調ã¹ã‚‹(æ–‡å—列ã¨ç…§åˆã¯ã—ãªã„) + æ„味ã«ãªã‚‹ã€‚ (?(æ¡ä»¶å¼)æˆåŠŸå¼) æ¡ä»¶å¼ãŒæˆåŠŸã™ã‚Œã°æˆåŠŸå¼ã‚’実行ã™ã‚‹ (æ¡ä»¶å¼ãŒé€šå¸¸ã®å¼ã®ã¨ãã«ã¯ã€ã“ã®æ§‹æ–‡ã¯ä¸å¿…è¦ã ㌠今ã®ã¨ã“ã‚エラーã«ã¯ã—ãªã„。) - æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã¾ãŸã¯é€šå¸¸ã®å¼ã‚’使用ã§ãる。 + æ¡ä»¶å¼ã¯å¾Œæ–¹å‚ç…§ã®ç•ªå·/åå‰ã¾ãŸã¯æ™®é€šã®å¼ã‚’使用ã§ãる。 æ¡ä»¶å¼ãŒå¾Œæ–¹å‚ç…§ã®å ´åˆã€æˆåŠŸå¼ã¨å¤±æ•—å¼ã®ä¸¡æ–¹ã‚’çœç•¥å¯èƒ½ã§ã‚り〠ã“ã®å ´åˆã€å¾Œæ–¹å‚照値有効性を調ã¹ã‚‹(æˆåŠŸ/失敗)機能ã®ã¿ã«ãªã‚‹ã€‚ @@ -428,7 +448,7 @@ 補記 3. Perl 5.8.0ã¨æ¯”較ã—ã¦å˜åœ¨ã—ãªã„機能 + \N{name} - + \l,\u,\L,\U, \X, \C + + \l,\u,\L,\U,\C + (?{code}) + (??{code}) diff --git a/doc/UNICODE_PROPERTIES b/doc/UNICODE_PROPERTIES index dedc658..8521f0c 100644 --- a/doc/UNICODE_PROPERTIES +++ b/doc/UNICODE_PROPERTIES @@ -1,698 +1,698 @@ Unicode Properties (from Unicode Version: 8.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 + 15: ASCII_Hex_Digit + 16: Ahom + 17: Alphabetic + 18: Anatolian_Hieroglyphs + 19: Any + 20: Arabic + 21: Armenian + 22: Assigned + 23: Avestan + 24: Balinese + 25: Bamum + 26: Bassa_Vah + 27: Batak + 28: Bengali + 29: Bidi_Control + 30: Bopomofo + 31: Brahmi + 32: Braille + 33: Buginese + 34: Buhid + 35: C + 36: Canadian_Aboriginal + 37: Carian + 38: Case_Ignorable + 39: Cased + 40: Caucasian_Albanian + 41: Cc + 42: Cf + 43: Chakma + 44: Cham + 45: Changes_When_Casefolded + 46: Changes_When_Casemapped 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 -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 + 48: Changes_When_Titlecased + 49: Changes_When_Uppercased + 50: Cherokee + 51: Cn + 52: Co + 53: Common + 54: Coptic + 55: Cs + 56: Cuneiform + 57: Cypriot + 58: Cyrillic + 59: Dash + 60: Default_Ignorable_Code_Point + 61: Deprecated + 62: Deseret + 63: Devanagari + 64: Diacritic + 65: Duployan + 66: Egyptian_Hieroglyphs + 67: Elbasan + 68: Ethiopic + 69: Extender + 70: Georgian + 71: Glagolitic + 72: Gothic + 73: Grantha + 74: Grapheme_Base + 75: Grapheme_Extend + 76: Grapheme_Link + 77: Greek + 78: Gujarati + 79: Gurmukhi + 80: Han + 81: Hangul + 82: Hanunoo + 83: Hatran + 84: Hebrew + 85: Hex_Digit + 86: Hiragana + 87: Hyphen + 88: IDS_Binary_Operator + 89: IDS_Trinary_Operator + 90: ID_Continue + 91: ID_Start + 92: Ideographic + 93: Imperial_Aramaic + 94: Inherited + 95: Inscriptional_Pahlavi + 96: Inscriptional_Parthian + 97: Javanese + 98: Join_Control + 99: Kaithi +100: Kannada +101: Katakana +102: Kayah_Li +103: Kharoshthi +104: Khmer +105: Khojki +106: Khudawadi +107: L +108: LC +109: Lao +110: Latin +111: Lepcha +112: Limbu +113: Linear_A +114: Linear_B +115: Lisu +116: Ll +117: Lm +118: Lo +119: Logical_Order_Exception +120: Lowercase +121: Lt +122: Lu +123: Lycian +124: Lydian +125: M +126: Mahajani +127: Malayalam +128: Mandaic +129: Manichaean +130: Math +131: Mc +132: Me +133: Meetei_Mayek +134: Mende_Kikakui +135: Meroitic_Cursive +136: Meroitic_Hieroglyphs +137: Miao +138: Mn +139: Modi +140: Mongolian +141: Mro +142: Multani +143: Myanmar +144: N +145: Nabataean +146: Nd +147: New_Tai_Lue +148: Nko +149: Nl +150: No +151: Noncharacter_Code_Point +152: Ogham +153: Ol_Chiki +154: Old_Hungarian +155: Old_Italic +156: Old_North_Arabian +157: Old_Permic +158: Old_Persian +159: Old_South_Arabian +160: Old_Turkic +161: Oriya +162: Osmanya +163: Other_Alphabetic +164: Other_Default_Ignorable_Code_Point +165: Other_Grapheme_Extend +166: Other_ID_Continue +167: Other_ID_Start +168: Other_Lowercase +169: Other_Math +170: Other_Uppercase +171: P +172: Pahawh_Hmong +173: Palmyrene +174: Pattern_Syntax +175: Pattern_White_Space +176: Pau_Cin_Hau +177: Pc +178: Pd +179: Pe +180: Pf +181: Phags_Pa +182: Phoenician +183: Pi +184: Po +185: Ps +186: Psalter_Pahlavi +187: Quotation_Mark +188: Radical +189: Rejang +190: Runic +191: S +192: STerm +193: Samaritan +194: Saurashtra +195: Sc +196: Sharada +197: Shavian +198: Siddham +199: SignWriting +200: Sinhala +201: Sk +202: Sm +203: So +204: Soft_Dotted +205: Sora_Sompeng +206: Sundanese +207: Syloti_Nagri +208: Syriac +209: Tagalog +210: Tagbanwa +211: Tai_Le +212: Tai_Tham +213: Tai_Viet +214: Takri +215: Tamil +216: Telugu +217: Terminal_Punctuation +218: Thaana +219: Thai +220: Tibetan +221: Tifinagh +222: Tirhuta +223: Ugaritic +224: Unified_Ideograph +225: Unknown +226: Uppercase +227: Vai +228: Variation_Selector +229: Warang_Citi +230: White_Space +231: XID_Continue +232: XID_Start +233: Yi +234: Z +235: Zl +236: Zp +237: Zs + 40: Aghb + 15: AHex + 20: Arab + 93: Armi + 21: Armn + 23: Avst + 24: Bali + 25: Bamu + 26: Bass + 27: Batk + 28: Beng + 29: Bidi_C + 30: Bopo + 31: Brah + 32: Brai + 33: Bugi + 34: Buhd + 43: Cakm + 36: Cans + 37: Cari +108: Cased_Letter + 50: Cher + 38: CI +179: Close_Punctuation +125: Combining_Mark +177: Connector_Punctuation + 41: Control + 54: Copt + 57: Cprt +195: Currency_Symbol + 45: CWCF + 46: CWCM + 47: CWL + 48: CWT + 49: CWU + 58: Cyrl +178: Dash_Punctuation +146: Decimal_Number + 61: Dep + 63: Deva + 60: DI + 64: Dia + 62: Dsrt + 65: Dupl + 66: Egyp + 67: Elba +132: Enclosing_Mark + 68: Ethi + 69: Ext +180: Final_Punctuation + 42: Format + 70: Geor + 71: Glag + 72: Goth + 73: Gran + 74: Gr_Base + 77: Grek + 75: Gr_Ext + 76: Gr_Link + 78: Gujr + 79: Guru + 81: Hang + 80: Hani + 82: Hano + 83: Hatr + 84: Hebr + 85: Hex + 86: Hira + 18: Hluw +172: Hmng +154: Hung + 90: IDC + 92: Ideo + 91: IDS + 88: IDSB + 89: IDST +183: Initial_Punctuation +155: Ital + 97: Java + 98: Join_C +102: Kali +101: Kana +103: Khar +104: Khmr +105: Khoj +100: Knda + 99: Kthi +212: Lana +109: Laoo +110: Latn +111: Lepc +107: Letter +149: Letter_Number +112: Limb +113: Lina +114: Linb +235: Line_Separator +119: LOE +116: Lowercase_Letter +123: Lyci +124: Lydi +126: Mahj +128: Mand +129: Mani +125: Mark +202: Math_Symbol +134: Mend +135: Merc +136: Mero +127: Mlym +117: Modifier_Letter +201: Modifier_Symbol +140: Mong +141: Mroo +133: Mtei +142: Mult +143: Mymr +156: Narb +145: Nbat +151: NChar +148: Nkoo +138: Nonspacing_Mark +144: Number +163: OAlpha +164: ODI +152: Ogam +165: OGr_Ext +166: OIDC +167: OIDS +153: Olck +168: OLower +169: OMath +185: Open_Punctuation +160: Orkh +161: Orya +162: Osma + 35: Other +118: Other_Letter +150: Other_Number +184: Other_Punctuation +203: Other_Symbol +170: OUpper +173: Palm +236: Paragraph_Separator +174: Pat_Syn +175: Pat_WS +176: Pauc +157: Perm +181: Phag + 95: Phli +186: Phlp +182: Phnx +137: Plrd + 52: Private_Use + 96: Prti +171: Punctuation + 54: Qaac + 94: Qaai +187: QMark +189: Rjng +190: Runr +193: Samr +159: Sarb +194: Saur +204: SD +234: Separator +199: Sgnw +197: Shaw +196: Shrd +198: Sidd +106: Sind +200: Sinh +205: Sora +237: Space_Separator +131: Spacing_Mark +206: Sund + 55: Surrogate +207: Sylo +191: Symbol +208: Syrc +210: Tagb +214: Takr +211: Tale +147: Talu +215: Taml +213: Tavt +216: Telu +217: Term +221: Tfng +209: Tglg +218: Thaa +220: Tibt +222: Tirh +121: Titlecase_Letter +223: Ugar +224: UIdeo + 51: Unassigned +122: Uppercase_Letter +227: Vaii +228: VS +229: Wara +230: WSpace +231: XIDC +232: XIDS +158: Xpeo + 56: Xsux +233: Yiii + 94: Zinh + 53: Zyyy +225: Zzzz +238: In_Basic_Latin +239: In_Latin_1_Supplement +240: In_Latin_Extended_A +241: In_Latin_Extended_B +242: In_IPA_Extensions +243: In_Spacing_Modifier_Letters +244: In_Combining_Diacritical_Marks +245: In_Greek_and_Coptic +246: In_Cyrillic +247: In_Cyrillic_Supplement +248: In_Armenian +249: In_Hebrew +250: In_Arabic +251: In_Syriac +252: In_Arabic_Supplement +253: In_Thaana +254: In_NKo +255: In_Samaritan +256: In_Mandaic +257: In_Arabic_Extended_A +258: In_Devanagari +259: In_Bengali +260: In_Gurmukhi +261: In_Gujarati +262: In_Oriya +263: In_Tamil +264: In_Telugu +265: In_Kannada +266: In_Malayalam +267: In_Sinhala +268: In_Thai +269: In_Lao +270: In_Tibetan +271: In_Myanmar +272: In_Georgian +273: In_Hangul_Jamo +274: In_Ethiopic +275: In_Ethiopic_Supplement +276: In_Cherokee +277: In_Unified_Canadian_Aboriginal_Syllabics +278: In_Ogham +279: In_Runic +280: In_Tagalog +281: In_Hanunoo +282: In_Buhid +283: In_Tagbanwa +284: In_Khmer +285: In_Mongolian +286: In_Unified_Canadian_Aboriginal_Syllabics_Extended +287: In_Limbu +288: In_Tai_Le +289: In_New_Tai_Lue +290: In_Khmer_Symbols +291: In_Buginese +292: In_Tai_Tham +293: In_Combining_Diacritical_Marks_Extended +294: In_Balinese +295: In_Sundanese +296: In_Batak +297: In_Lepcha +298: In_Ol_Chiki +299: In_Sundanese_Supplement +300: In_Vedic_Extensions +301: In_Phonetic_Extensions +302: In_Phonetic_Extensions_Supplement +303: In_Combining_Diacritical_Marks_Supplement +304: In_Latin_Extended_Additional +305: In_Greek_Extended +306: In_General_Punctuation +307: In_Superscripts_and_Subscripts +308: In_Currency_Symbols +309: In_Combining_Diacritical_Marks_for_Symbols +310: In_Letterlike_Symbols +311: In_Number_Forms +312: In_Arrows +313: In_Mathematical_Operators +314: In_Miscellaneous_Technical +315: In_Control_Pictures +316: In_Optical_Character_Recognition +317: In_Enclosed_Alphanumerics +318: In_Box_Drawing +319: In_Block_Elements +320: In_Geometric_Shapes +321: In_Miscellaneous_Symbols +322: In_Dingbats +323: In_Miscellaneous_Mathematical_Symbols_A +324: In_Supplemental_Arrows_A +325: In_Braille_Patterns +326: In_Supplemental_Arrows_B +327: In_Miscellaneous_Mathematical_Symbols_B +328: In_Supplemental_Mathematical_Operators +329: In_Miscellaneous_Symbols_and_Arrows +330: In_Glagolitic +331: In_Latin_Extended_C +332: In_Coptic +333: In_Georgian_Supplement +334: In_Tifinagh +335: In_Ethiopic_Extended +336: In_Cyrillic_Extended_A +337: In_Supplemental_Punctuation +338: In_CJK_Radicals_Supplement +339: In_Kangxi_Radicals +340: In_Ideographic_Description_Characters +341: In_CJK_Symbols_and_Punctuation +342: In_Hiragana +343: In_Katakana +344: In_Bopomofo +345: In_Hangul_Compatibility_Jamo +346: In_Kanbun +347: In_Bopomofo_Extended +348: In_CJK_Strokes +349: In_Katakana_Phonetic_Extensions +350: In_Enclosed_CJK_Letters_and_Months +351: In_CJK_Compatibility +352: In_CJK_Unified_Ideographs_Extension_A +353: In_Yijing_Hexagram_Symbols +354: In_CJK_Unified_Ideographs +355: In_Yi_Syllables +356: In_Yi_Radicals +357: In_Lisu +358: In_Vai +359: In_Cyrillic_Extended_B +360: In_Bamum +361: In_Modifier_Tone_Letters +362: In_Latin_Extended_D +363: In_Syloti_Nagri +364: In_Common_Indic_Number_Forms +365: In_Phags_pa +366: In_Saurashtra +367: In_Devanagari_Extended +368: In_Kayah_Li +369: In_Rejang +370: In_Hangul_Jamo_Extended_A +371: In_Javanese +372: In_Myanmar_Extended_B +373: In_Cham +374: In_Myanmar_Extended_A +375: In_Tai_Viet +376: In_Meetei_Mayek_Extensions +377: In_Ethiopic_Extended_A +378: In_Latin_Extended_E +379: In_Cherokee_Supplement +380: In_Meetei_Mayek +381: In_Hangul_Syllables +382: In_Hangul_Jamo_Extended_B +383: In_High_Surrogates +384: In_High_Private_Use_Surrogates +385: In_Low_Surrogates +386: In_Private_Use_Area +387: In_CJK_Compatibility_Ideographs +388: In_Alphabetic_Presentation_Forms +389: In_Arabic_Presentation_Forms_A +390: In_Variation_Selectors +391: In_Vertical_Forms +392: In_Combining_Half_Marks +393: In_CJK_Compatibility_Forms +394: In_Small_Form_Variants +395: In_Arabic_Presentation_Forms_B +396: In_Halfwidth_and_Fullwidth_Forms +397: In_Specials +398: In_Linear_B_Syllabary +399: In_Linear_B_Ideograms +400: In_Aegean_Numbers +401: In_Ancient_Greek_Numbers +402: In_Ancient_Symbols +403: In_Phaistos_Disc +404: In_Lycian +405: In_Carian +406: In_Coptic_Epact_Numbers +407: In_Old_Italic +408: In_Gothic +409: In_Old_Permic +410: In_Ugaritic +411: In_Old_Persian +412: In_Deseret +413: In_Shavian +414: In_Osmanya +415: In_Elbasan +416: In_Caucasian_Albanian +417: In_Linear_A +418: In_Cypriot_Syllabary +419: In_Imperial_Aramaic +420: In_Palmyrene +421: In_Nabataean +422: In_Hatran +423: In_Phoenician +424: In_Lydian +425: In_Meroitic_Hieroglyphs +426: In_Meroitic_Cursive +427: In_Kharoshthi +428: In_Old_South_Arabian +429: In_Old_North_Arabian +430: In_Manichaean +431: In_Avestan +432: In_Inscriptional_Parthian +433: In_Inscriptional_Pahlavi +434: In_Psalter_Pahlavi +435: In_Old_Turkic +436: In_Old_Hungarian +437: In_Rumi_Numeral_Symbols +438: In_Brahmi +439: In_Kaithi +440: In_Sora_Sompeng +441: In_Chakma +442: In_Mahajani +443: In_Sharada +444: In_Sinhala_Archaic_Numbers +445: In_Khojki +446: In_Multani +447: In_Khudawadi +448: In_Grantha +449: In_Tirhuta +450: In_Siddham +451: In_Modi +452: In_Takri +453: In_Ahom +454: In_Warang_Citi +455: In_Pau_Cin_Hau +456: In_Cuneiform +457: In_Cuneiform_Numbers_and_Punctuation +458: In_Early_Dynastic_Cuneiform +459: In_Egyptian_Hieroglyphs +460: In_Anatolian_Hieroglyphs +461: In_Bamum_Supplement +462: In_Mro +463: In_Bassa_Vah +464: In_Pahawh_Hmong +465: In_Miao +466: In_Kana_Supplement +467: In_Duployan +468: In_Shorthand_Format_Controls +469: In_Byzantine_Musical_Symbols +470: In_Musical_Symbols +471: In_Ancient_Greek_Musical_Notation +472: In_Tai_Xuan_Jing_Symbols +473: In_Counting_Rod_Numerals +474: In_Mathematical_Alphanumeric_Symbols +475: In_Sutton_SignWriting +476: In_Mende_Kikakui +477: In_Arabic_Mathematical_Alphabetic_Symbols +478: In_Mahjong_Tiles +479: In_Domino_Tiles +480: In_Playing_Cards +481: In_Enclosed_Alphanumeric_Supplement +482: In_Enclosed_Ideographic_Supplement +483: In_Miscellaneous_Symbols_and_Pictographs +484: In_Emoticons +485: In_Ornamental_Dingbats +486: In_Transport_and_Map_Symbols +487: In_Alchemical_Symbols +488: In_Geometric_Shapes_Extended +489: In_Supplemental_Arrows_C +490: In_Supplemental_Symbols_and_Pictographs +491: In_CJK_Unified_Ideographs_Extension_B +492: In_CJK_Unified_Ideographs_Extension_C +493: In_CJK_Unified_Ideographs_Extension_D +494: In_CJK_Unified_Ideographs_Extension_E +495: In_CJK_Compatibility_Ideographs_Supplement +496: In_Tags +497: In_Variation_Selectors_Supplement +498: In_Supplementary_Private_Use_Area_A +499: In_Supplementary_Private_Use_Area_B +500: In_No_Block @@ -8,7 +8,7 @@ <h1>Oniguruma</h1> (<a href="index_ja.html">Japanese</a>) <p> -(c) K.Kosako, updated at: 2017/08/03 +(c) K.Kosako, updated at: 2017/08/30 </p> <dl> @@ -16,6 +16,8 @@ <dt><b>What's new</b> </font> <ul> +<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> diff --git a/index_ja.html b/index_ja.html index 52f0412..4e5265c 100644 --- a/index_ja.html +++ b/index_ja.html @@ -8,7 +8,7 @@ <h1>鬼車</h1> <p> -(c) K.Kosako, 最終更新: 2017/08/03 +(c) K.Kosako, 最終更新: 2017/08/30 </p> <dl> @@ -16,6 +16,8 @@ <dt><b>æ›´æ–°æƒ…å ±</b> </font> <ul> +<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> diff --git a/src/Makefile.am b/src/Makefile.am index 49f5f9f..be35b24 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,6 +38,8 @@ libonig_la_LDFLAGS = -version-info $(LTVERSION) EXTRA_DIST = koi8.c mktable.c \ unicode_fold_data.c unicode_property_data.c \ unicode_property_data_posix.c \ + unicode_egcb_data.c \ + make_unicode_egcb.sh make_unicode_egcb_data.py \ make_unicode_fold.sh make_unicode_fold_data.py \ make_unicode_property.sh make_unicode_property_data.py \ gperf_fold_key_conv.py gperf_unfold_key_conv.py \ diff --git a/src/euc_jp.c b/src/euc_jp.c index 3b54e95..756bdc7 100644 --- a/src/euc_jp.c +++ b/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-2017 K.Kosako <sndgk393 AT ybb DOT ne DOT jp> * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -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); } } } diff --git a/src/gperf_fold_key_conv.py b/src/gperf_fold_key_conv.py index bdf57ad..5267aa4 100755 --- a/src/gperf_fold_key_conv.py +++ b/src/gperf_fold_key_conv.py @@ -1,5 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +# gperf_fold_key_conv.py +# Copyright (c) 2016-2017 K.Kosako import sys import re diff --git a/src/gperf_unfold_key_conv.py b/src/gperf_unfold_key_conv.py index 34f9c2f..6f3ccb4 100755 --- a/src/gperf_unfold_key_conv.py +++ b/src/gperf_unfold_key_conv.py @@ -1,5 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +# gperf_unfold_key_conv.py +# Copyright (c) 2016-2017 K.Kosako import sys import re diff --git a/src/make_unicode_egcb.sh b/src/make_unicode_egcb.sh new file mode 100755 index 0000000..89cfa18 --- /dev/null +++ b/src/make_unicode_egcb.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +NAME=unicode_egcb_data + +./make_unicode_egcb_data.py > ${NAME}.c + +exit 0 diff --git a/src/make_unicode_egcb_data.py b/src/make_unicode_egcb_data.py new file mode 100755 index 0000000..3f958eb --- /dev/null +++ b/src/make_unicode_egcb_data.py @@ -0,0 +1,236 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# make_unicode_egcb_data.py +# Copyright (c) 2017 K.Kosako + +import sys +import re + +MAX_CODE_POINT = 0x10ffff + +PR_TOTAL_REG = re.compile("#\s*Total\s+(?:code\s+points|elements):") +PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") +PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)") +PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") +BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") +VERSION_REG = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt") + +VERSION_INFO = None +DIC = { } +PROPS = [] +PropIndex = { } + +def check_version_info(s): + global VERSION_INFO + m = VERSION_REG.match(s) + if m is not None: + VERSION_INFO = m.group(1) + +def print_ranges(ranges): + for (start, end) in ranges: + print "0x%06x, 0x%06x" % (start, end) + +def print_prop_and_index(prop, i): + print "%-35s %3d" % (prop + ',', i) + PropIndex[prop] = i + +def dic_find_by_value(dic, v): + for key, val in dic.items(): + if val == v: + return key + + return None + + +def normalize_ranges(in_ranges, sort=False): + if sort: + ranges = sorted(in_ranges) + else: + ranges = in_ranges + + r = [] + prev = None + for (start, end) in ranges: + if prev >= start - 1: + (pstart, pend) = r.pop() + end = max(pend, end) + start = pstart + + r.append((start, end)) + prev = end + + return r + +def inverse_ranges(in_ranges): + r = [] + prev = 0x000000 + for (start, end) in in_ranges: + if prev < start: + r.append((prev, start - 1)) + + prev = end + 1 + + if prev < MAX_CODE_POINT: + r.append((prev, MAX_CODE_POINT)) + + return r + +def add_ranges(r1, r2): + r = r1 + r2 + return normalize_ranges(r, True) + +def sub_one_range(one_range, rs): + r = [] + (s1, e1) = one_range + n = len(rs) + for i in range(0, n): + (s2, e2) = rs[i] + if s2 >= s1 and s2 <= e1: + if s2 > s1: + r.append((s1, s2 - 1)) + if e2 >= e1: + return r + + s1 = e2 + 1 + elif s2 < s1 and e2 >= s1: + if e2 < e1: + s1 = e2 + 1 + else: + return r + + r.append((s1, e1)) + return r + +def sub_ranges(r1, r2): + r = [] + for one_range in r1: + rs = sub_one_range(one_range, r2) + r.extend(rs) + + return r + +def add_ranges_in_dic(dic): + r = [] + for k, v in dic.items(): + r = r + v + + return normalize_ranges(r, True) + +def normalize_ranges_in_dic(dic, sort=False): + for k, v in dic.items(): + r = normalize_ranges(v, sort) + dic[k] = r + +def merge_dic(to_dic, from_dic): + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) + + to_dic.update(from_dic) + +def merge_props(to_props, from_props): + common = list(set(to_props) & set(from_props)) + if len(common) != 0: + print >> sys.stderr, "merge_props: collision: %s" % sorted(common) + + to_props.extend(from_props) + +def add_range_into_dic(dic, name, start, end): + d = dic.get(name, None) + if d is None: + d = [(start, end)] + dic[name] = d + else: + d.append((start, end)) + +def list_sub(a, b): + x = set(a) - set(b) + return list(x) + +def parse_properties(path): + with open(path, 'r') as f: + dic = { } + prop = None + props = [] + for line in f: + s = line.strip() + if len(s) == 0: + continue + + if s[0] == '#': + if VERSION_INFO is None: + check_version_info(s) + + m = PR_LINE_REG.match(s) + if m: + prop = m.group(3) + if m.group(2): + start = int(m.group(1), 16) + end = int(m.group(2), 16) + add_range_into_dic(dic, prop, start, end) + else: + start = int(m.group(1), 16) + add_range_into_dic(dic, prop, start, start) + + elif PR_TOTAL_REG.match(s) is not None: + props.append(prop) + + normalize_ranges_in_dic(dic) + return (dic, props) + + +### main ### +argv = sys.argv +argc = len(argv) + +dic, props = parse_properties('GraphemeBreakProperty.txt') +merge_dic(DIC, dic) +merge_props(PROPS, props) + +PROPS = sorted(PROPS) + +print '/* Copyright (c) 2017 K.Kosako */' +print '/* Generated by make_gcb_data.py. */' +print '' +if VERSION_INFO is not None: + print "#define GRAPHEME_BREAK_PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO) + print '' + +ranges = [] +for prop in PROPS: + rs = DIC[prop] + for (start, end) in rs: + ranges.append((start, end, prop)) + +ranges = sorted(ranges, key=lambda x: x[0]) + +prev = -1 +for (start, end, prop) in ranges: + if prev >= start: + raise ValueError("{2}:{0} - {1} range overlap prev value {3}".format(start, end, prop, prev)) + + +print '/*' +for prop in PROPS: + print "%s" % prop +print '*/' +print '' + +num_ranges = len(ranges) +print "static int EGCB_RANGE_NUM = %d;" % num_ranges + +print 'static EGCB_RANGE_TYPE EGCB_RANGES[] = {' +for i, (start, end, prop) in enumerate(ranges): + if i == num_ranges - 1: + comma = '' + else: + comma = ',' + + type_name = 'EGCB_' + prop + print " {0x%06x, 0x%06x, %s }%s" % (start, end, type_name, comma) + +print '};' + +sys.exit(0) diff --git a/src/make_unicode_fold_data.py b/src/make_unicode_fold_data.py index 3f7d416..f4ad321 100755 --- a/src/make_unicode_fold_data.py +++ b/src/make_unicode_fold_data.py @@ -1,5 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +# make_unicode_fold_data.py +# Copyright (c) 2016-2017 K.Kosako import sys import re @@ -15,7 +17,7 @@ DataName = 'OnigUnicodeFolds' ENCODING = 'utf-8' LINE_REG = re.compile("([0-9A-F]{1,6}); (.); ([0-9A-F]{1,6})(?: ([0-9A-F]{1,6}))?(?: ([0-9A-F]{1,6}))?;(?:\s*#\s*)(.*)") -VERSION_REG = re.compile("#.*-(\d\.\d\.\d)\.txt") +VERSION_REG = re.compile("#.*-(\d+\.\d+\.\d+)\.txt") VERSION_INFO = None diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py index 25ed092..51986b6 100755 --- a/src/make_unicode_property_data.py +++ b/src/make_unicode_property_data.py @@ -1,9 +1,13 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +# make_unicode_property_data.py +# Copyright (c) 2016-2017 K.Kosako import sys import re +INCLUDE_GRAPHEME_CLUSTER_DATA = False + POSIX_LIST = [ 'NEWLINE', 'Alpha', 'Blank', 'Cntrl', 'Digit', 'Graph', 'Lower', 'Print', 'Punct', 'Space', 'Upper', 'XDigit', 'Word', 'Alnum', 'ASCII' @@ -11,6 +15,8 @@ POSIX_LIST = [ MAX_CODE_POINT = 0x10ffff +GRAPHEME_CLUSTER_BREAK_NAME_PREFIX = 'Grapheme_Cluster_Break_' + UD_FIRST_REG = re.compile("<.+,\s*First>") UD_LAST_REG = re.compile("<.+,\s*Last>") PR_TOTAL_REG = re.compile("#\s*Total\s+code\s+points:") @@ -18,7 +24,7 @@ PR_LINE_REG = re.compile("([0-9A-Fa-f]+)(?:..([0-9A-Fa-f]+))?\s*;\s*(\w+)") PA_LINE_REG = re.compile("(\w+)\s*;\s*(\w+)") PVA_LINE_REG = re.compile("(sc|gc)\s*;\s*(\w+)\s*;\s*(\w+)(?:\s*;\s*(\w+))?") BL_LINE_REG = re.compile("([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+)\s*;\s*(.*)") -VERSION_REG = re.compile("#\s*.*-(\d\.\d\.\d)\.txt") +VERSION_REG = re.compile("#\s*.*-(\d+\.\d+\.\d+)\.txt") VERSION_INFO = None DIC = { } @@ -27,373 +33,377 @@ PropIndex = { } PROPERTY_NAME_MAX_LEN = 0 def normalize_prop_name(name): - name = re.sub(r'[ _]', '', name) - name = name.lower() - return name + name = re.sub(r'[ _]', '', name) + name = name.lower() + return name def fix_block_name(name): - s = re.sub(r'[- ]+', '_', name) - return 'In_' + s + s = re.sub(r'[- ]+', '_', name) + return 'In_' + s def check_version_info(s): - global VERSION_INFO - m = VERSION_REG.match(s) - if m is not None: - VERSION_INFO = m.group(1) + global VERSION_INFO + m = VERSION_REG.match(s) + if m is not None: + VERSION_INFO = m.group(1) def print_ranges(ranges): - for (start, end) in ranges: - print "0x%06x, 0x%06x" % (start, end) + for (start, end) in ranges: + print "0x%06x, 0x%06x" % (start, end) - print len(ranges) + print len(ranges) def print_prop_and_index(prop, i): - print "%-35s %3d" % (prop + ',', i) - PropIndex[prop] = i + print "%-35s %3d" % (prop + ',', i) + PropIndex[prop] = i -print_cache = { } +PRINT_CACHE = { } def print_property(prop, data, desc): - print '' - print "/* PROPERTY: '%s': %s */" % (prop, desc) + print '' + print "/* PROPERTY: '%s': %s */" % (prop, desc) - prev_prop = dic_find_by_value(print_cache, data) - if prev_prop is not None: - print "#define CR_%s CR_%s" % (prop, prev_prop) - else: - print_cache[prop] = data - print "static const OnigCodePoint" - print "CR_%s[] = { %d," % (prop, len(data)) - for (start, end) in data: - print "0x%04x, 0x%04x," % (start, end) + prev_prop = dic_find_by_value(PRINT_CACHE, data) + if prev_prop is not None: + print "#define CR_%s CR_%s" % (prop, prev_prop) + else: + PRINT_CACHE[prop] = data + print "static const OnigCodePoint" + print "CR_%s[] = { %d," % (prop, len(data)) + for (start, end) in data: + print "0x%04x, 0x%04x," % (start, end) - print "}; /* END of CR_%s */" % prop + print "}; /* END of CR_%s */" % prop def dic_find_by_value(dic, v): - for key, val in dic.items(): - if val == v: - return key + for key, val in dic.items(): + if val == v: + return key - return None + return None def normalize_ranges(in_ranges, sort=False): - if sort: - ranges = sorted(in_ranges) - else: - ranges = in_ranges + if sort: + ranges = sorted(in_ranges) + else: + ranges = in_ranges - r = [] - prev = None - for (start, end) in ranges: - if prev >= start - 1: - (pstart, pend) = r.pop() - end = max(pend, end) - start = pstart + r = [] + prev = None + for (start, end) in ranges: + if prev >= start - 1: + (pstart, pend) = r.pop() + end = max(pend, end) + start = pstart - r.append((start, end)) - prev = end + r.append((start, end)) + prev = end - return r + return r def inverse_ranges(in_ranges): - r = [] - prev = 0x000000 - for (start, end) in in_ranges: - if prev < start: - r.append((prev, start - 1)) + r = [] + prev = 0x000000 + for (start, end) in in_ranges: + if prev < start: + r.append((prev, start - 1)) - prev = end + 1 + prev = end + 1 - if prev < MAX_CODE_POINT: - r.append((prev, MAX_CODE_POINT)) + if prev < MAX_CODE_POINT: + r.append((prev, MAX_CODE_POINT)) - return r + return r def add_ranges(r1, r2): - r = r1 + r2 - return normalize_ranges(r, True) + r = r1 + r2 + return normalize_ranges(r, True) def sub_one_range(one_range, rs): - r = [] - (s1, e1) = one_range - n = len(rs) - for i in range(0, n): - (s2, e2) = rs[i] - if s2 >= s1 and s2 <= e1: - if s2 > s1: - r.append((s1, s2 - 1)) - if e2 >= e1: - return r - - s1 = e2 + 1 - elif s2 < s1 and e2 >= s1: - if e2 < e1: - s1 = e2 + 1 - else: - return r - - r.append((s1, e1)) - return r + r = [] + (s1, e1) = one_range + n = len(rs) + for i in range(0, n): + (s2, e2) = rs[i] + if s2 >= s1 and s2 <= e1: + if s2 > s1: + r.append((s1, s2 - 1)) + if e2 >= e1: + return r + + s1 = e2 + 1 + elif s2 < s1 and e2 >= s1: + if e2 < e1: + s1 = e2 + 1 + else: + return r + + r.append((s1, e1)) + return r def sub_ranges(r1, r2): - r = [] - for one_range in r1: - rs = sub_one_range(one_range, r2) - r.extend(rs) + r = [] + for one_range in r1: + rs = sub_one_range(one_range, r2) + r.extend(rs) - return r + return r def add_ranges_in_dic(dic): - r = [] - for k, v in dic.items(): - r = r + v + r = [] + for k, v in dic.items(): + r = r + v - return normalize_ranges(r, True) + return normalize_ranges(r, True) def normalize_ranges_in_dic(dic, sort=False): - for k, v in dic.items(): - r = normalize_ranges(v, sort) - dic[k] = r + for k, v in dic.items(): + r = normalize_ranges(v, sort) + dic[k] = r def merge_dic(to_dic, from_dic): - to_keys = to_dic.keys() - from_keys = from_dic.keys() - common = list(set(to_keys) & set(from_keys)) - if len(common) != 0: - print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) + to_keys = to_dic.keys() + from_keys = from_dic.keys() + common = list(set(to_keys) & set(from_keys)) + if len(common) != 0: + print >> sys.stderr, "merge_dic: collision: %s" % sorted(common) - to_dic.update(from_dic) + to_dic.update(from_dic) def merge_props(to_props, from_props): - common = list(set(to_props) & set(from_props)) - if len(common) != 0: - print >> sys.stderr, "merge_props: collision: %s" % sorted(common) + common = list(set(to_props) & set(from_props)) + if len(common) != 0: + print >> sys.stderr, "merge_props: collision: %s" % sorted(common) - to_props.extend(from_props) + to_props.extend(from_props) def add_range_into_dic(dic, name, start, end): - d = dic.get(name, None) - if d is None: - d = [(start, end)] - dic[name] = d - else: - d.append((start, end)) + d = dic.get(name, None) + if d is None: + d = [(start, end)] + dic[name] = d + else: + d.append((start, end)) def list_sub(a, b): - x = set(a) - set(b) - return list(x) + x = set(a) - set(b) + return list(x) def parse_unicode_data_file(f): + dic = { } + assigned = [] + for line in f: + s = line.strip() + if len(s) == 0: + continue + if s[0] == '#': + continue + + a = s.split(';') + code = int(a[0], 16) + desc = a[1] + prop = a[2] + if UD_FIRST_REG.match(desc) is not None: + start = code + end = None + elif UD_LAST_REG.match(desc) is not None: + end = code + else: + start = end = code + + if end is not None: + assigned.append((start, end)) + add_range_into_dic(dic, prop, start, end) + if len(prop) == 2: + add_range_into_dic(dic, prop[0:1], start, end) + + normalize_ranges_in_dic(dic) + return dic, assigned + +def parse_properties(path, klass, prop_prefix = None): + with open(path, 'r') as f: dic = { } - assigned = [] + prop = None + props = [] for line in f: - s = line.strip() - if len(s) == 0: - continue - if s[0] == '#': - continue - - a = s.split(';') - code = int(a[0], 16) - desc = a[1] - prop = a[2] - if UD_FIRST_REG.match(desc) is not None: - start = code - end = None - elif UD_LAST_REG.match(desc) is not None: - end = code + s = line.strip() + if len(s) == 0: + continue + + if s[0] == '#': + if VERSION_INFO is None: + check_version_info(s) + + m = PR_LINE_REG.match(s) + if m: + prop = m.group(3) + if prop_prefix is not None: + prop = prop_prefix + prop + + if m.group(2): + start = int(m.group(1), 16) + end = int(m.group(2), 16) + add_range_into_dic(dic, prop, start, end) else: - start = end = code - - if end is not None: - assigned.append((start, end)) - add_range_into_dic(dic, prop, start, end) - if len(prop) == 2: - add_range_into_dic(dic, prop[0:1], start, end) - - normalize_ranges_in_dic(dic) - return dic, assigned - -def parse_properties(path, klass): - with open(path, 'r') as f: - dic = { } - prop = None - props = [] - for line in f: - s = line.strip() - if len(s) == 0: - continue - - if s[0] == '#': - if VERSION_INFO is None: - check_version_info(s) - - m = PR_LINE_REG.match(s) - if m: - prop = m.group(3) - if m.group(2): - start = int(m.group(1), 16) - end = int(m.group(2), 16) - add_range_into_dic(dic, prop, start, end) - else: - start = int(m.group(1), 16) - add_range_into_dic(dic, prop, start, start) - - elif PR_TOTAL_REG.match(s) is not None: - KDIC[prop] = klass - props.append(prop) - - normalize_ranges_in_dic(dic) - return (dic, props) + start = int(m.group(1), 16) + add_range_into_dic(dic, prop, start, start) + + elif PR_TOTAL_REG.match(s) is not None: + KDIC[prop] = klass + props.append(prop) + + normalize_ranges_in_dic(dic) + return (dic, props) def parse_property_aliases(path): - a = { } - with open(path, 'r') as f: - for line in f: - s = line.strip() - if len(s) == 0: - continue + a = { } + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue - m = PA_LINE_REG.match(s) - if not(m): - continue + m = PA_LINE_REG.match(s) + if not(m): + continue - if m.group(1) == m.group(2): - continue + if m.group(1) == m.group(2): + continue - a[m.group(1)] = m.group(2) + a[m.group(1)] = m.group(2) - return a + return a def parse_property_value_aliases(path): - a = { } - with open(path, 'r') as f: - for line in f: - s = line.strip() - if len(s) == 0: - continue - - m = PVA_LINE_REG.match(s) - if not(m): - continue - - cat = m.group(1) - x2 = m.group(2) - x3 = m.group(3) - x4 = m.group(4) - if cat == 'sc': - if x2 != x3: - a[x2] = x3 - if x4 and x4 != x3: - a[x4] = x3 - else: - if x2 != x3: - a[x3] = x2 - if x4 and x4 != x2: - a[x4] = x2 - - return a + a = { } + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue + + m = PVA_LINE_REG.match(s) + if not(m): + continue + + cat = m.group(1) + x2 = m.group(2) + x3 = m.group(3) + x4 = m.group(4) + if cat == 'sc': + if x2 != x3: + a[x2] = x3 + if x4 and x4 != x3: + a[x4] = x3 + else: + if x2 != x3: + a[x3] = x2 + if x4 and x4 != x2: + a[x4] = x2 + + return a def parse_blocks(path): - dic = { } - blocks = [] - with open(path, 'r') as f: - for line in f: - s = line.strip() - if len(s) == 0: - continue - - m = BL_LINE_REG.match(s) - if not(m): - continue - - start = int(m.group(1), 16) - end = int(m.group(2), 16) - block = fix_block_name(m.group(3)) - add_range_into_dic(dic, block, start, end) - blocks.append(block) - - noblock = fix_block_name('No_Block') - dic[noblock] = inverse_ranges(add_ranges_in_dic(dic)) - blocks.append(noblock) - return dic, blocks + dic = { } + blocks = [] + with open(path, 'r') as f: + for line in f: + s = line.strip() + if len(s) == 0: + continue + + m = BL_LINE_REG.match(s) + if not(m): + continue + + start = int(m.group(1), 16) + end = int(m.group(2), 16) + block = fix_block_name(m.group(3)) + add_range_into_dic(dic, block, start, end) + blocks.append(block) + + noblock = fix_block_name('No_Block') + dic[noblock] = inverse_ranges(add_ranges_in_dic(dic)) + blocks.append(noblock) + return dic, blocks def add_primitive_props(assigned): - DIC['Assigned'] = normalize_ranges(assigned) - DIC['Any'] = [(0x000000, 0x10ffff)] - DIC['ASCII'] = [(0x000000, 0x00007f)] - DIC['NEWLINE'] = [(0x00000a, 0x00000a)] - DIC['Cn'] = inverse_ranges(DIC['Assigned']) - DIC['C'].extend(DIC['Cn']) - DIC['C'] = normalize_ranges(DIC['C'], True) - - d = [] - d.extend(DIC['Ll']) - d.extend(DIC['Lt']) - d.extend(DIC['Lu']) - DIC['LC'] = normalize_ranges(d, True) + DIC['Assigned'] = normalize_ranges(assigned) + DIC['Any'] = [(0x000000, 0x10ffff)] + DIC['ASCII'] = [(0x000000, 0x00007f)] + DIC['NEWLINE'] = [(0x00000a, 0x00000a)] + DIC['Cn'] = inverse_ranges(DIC['Assigned']) + DIC['C'].extend(DIC['Cn']) + DIC['C'] = normalize_ranges(DIC['C'], True) + + d = [] + d.extend(DIC['Ll']) + d.extend(DIC['Lt']) + d.extend(DIC['Lu']) + DIC['LC'] = normalize_ranges(d, True) def add_posix_props(dic): - alnum = [] - alnum.extend(dic['Alphabetic']) - alnum.extend(dic['Nd']) # Nd == Decimal_Number - alnum = normalize_ranges(alnum, True) - - blank = [(0x0009, 0x0009)] - blank.extend(dic['Zs']) # Zs == Space_Separator - blank = normalize_ranges(blank, True) - - word = [] - word.extend(dic['Alphabetic']) - word.extend(dic['M']) # M == Mark - word.extend(dic['Nd']) - word.extend(dic['Pc']) # Pc == Connector_Punctuation - word = normalize_ranges(word, True) - - graph = sub_ranges(dic['Any'], dic['White_Space']) - graph = sub_ranges(graph, dic['Cc']) - graph = sub_ranges(graph, dic['Cs']) # Cs == Surrogate - graph = sub_ranges(graph, dic['Cn']) # Cn == Unassigned - graph = normalize_ranges(graph, True) - - p = [] - p.extend(graph) - p.extend(dic['Zs']) - p = normalize_ranges(p, True) - - dic['Alpha'] = dic['Alphabetic'] - dic['Upper'] = dic['Uppercase'] - dic['Lower'] = dic['Lowercase'] - dic['Punct'] = dic['P'] # P == Punctuation - dic['Digit'] = dic['Nd'] - dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)] - dic['Alnum'] = alnum - dic['Space'] = dic['White_Space'] - dic['Blank'] = blank - dic['Cntrl'] = dic['Cc'] - dic['Word'] = word - dic['Graph'] = graph - dic['Print'] = p + alnum = [] + alnum.extend(dic['Alphabetic']) + alnum.extend(dic['Nd']) # Nd == Decimal_Number + alnum = normalize_ranges(alnum, True) + + blank = [(0x0009, 0x0009)] + blank.extend(dic['Zs']) # Zs == Space_Separator + blank = normalize_ranges(blank, True) + + word = [] + word.extend(dic['Alphabetic']) + word.extend(dic['M']) # M == Mark + word.extend(dic['Nd']) + word.extend(dic['Pc']) # Pc == Connector_Punctuation + word = normalize_ranges(word, True) + + graph = sub_ranges(dic['Any'], dic['White_Space']) + graph = sub_ranges(graph, dic['Cc']) + graph = sub_ranges(graph, dic['Cs']) # Cs == Surrogate + graph = sub_ranges(graph, dic['Cn']) # Cn == Unassigned + graph = normalize_ranges(graph, True) + + p = [] + p.extend(graph) + p.extend(dic['Zs']) + p = normalize_ranges(p, True) + + dic['Alpha'] = dic['Alphabetic'] + dic['Upper'] = dic['Uppercase'] + dic['Lower'] = dic['Lowercase'] + dic['Punct'] = dic['P'] # P == Punctuation + dic['Digit'] = dic['Nd'] + dic['XDigit'] = [(0x0030, 0x0039), (0x0041, 0x0046), (0x0061, 0x0066)] + dic['Alnum'] = alnum + dic['Space'] = dic['White_Space'] + dic['Blank'] = blank + dic['Cntrl'] = dic['Cc'] + dic['Word'] = word + dic['Graph'] = graph + dic['Print'] = p def set_max_prop_name(name): - global PROPERTY_NAME_MAX_LEN - n = len(name) - if n > PROPERTY_NAME_MAX_LEN: - PROPERTY_NAME_MAX_LEN = n + global PROPERTY_NAME_MAX_LEN + n = len(name) + if n > PROPERTY_NAME_MAX_LEN: + PROPERTY_NAME_MAX_LEN = n -LIST_COUNTER = 1 def entry_prop_name(name, index): - global LIST_COUNTER - set_max_prop_name(name) - if OUTPUT_LIST and index >= len(POSIX_LIST): - print >> UPF, "%3d: %s" % (LIST_COUNTER, name) - LIST_COUNTER += 1 + set_max_prop_name(name) + if OUTPUT_LIST_MODE and index >= len(POSIX_LIST): + print >> UPF, "%3d: %s" % (index, name) +def entry_and_print_prop_and_index(name, index): + entry_prop_name(name, index) + nname = normalize_prop_name(name) + print_prop_and_index(nname, index) ### main ### argv = sys.argv @@ -401,19 +411,18 @@ argc = len(argv) POSIX_ONLY = False if argc >= 2: - if argv[1] == '-posix': - POSIX_ONLY = True + if argv[1] == '-posix': + POSIX_ONLY = True -OUTPUT_LIST = not(POSIX_ONLY) +OUTPUT_LIST_MODE = not(POSIX_ONLY) with open('UnicodeData.txt', 'r') as f: - dic, assigned = parse_unicode_data_file(f) - DIC = dic - add_primitive_props(assigned) + dic, assigned = parse_unicode_data_file(f) + DIC = dic + add_primitive_props(assigned) PROPS = DIC.keys() PROPS = list_sub(PROPS, POSIX_LIST) -PROPS = sorted(PROPS) dic, props = parse_properties('DerivedCoreProperties.txt', 'Derived Property') merge_dic(DIC, dic) @@ -437,47 +446,59 @@ merge_dic(ALIASES, a) dic, BLOCKS = parse_blocks('Blocks.txt') merge_dic(DIC, dic) +if INCLUDE_GRAPHEME_CLUSTER_DATA: + dic, props = parse_properties('GraphemeBreakProperty.txt', + 'GraphemeBreak Property', + GRAPHEME_CLUSTER_BREAK_NAME_PREFIX) + merge_dic(DIC, dic) + merge_props(PROPS, props) + #prop = GRAPHEME_CLUSTER_BREAK_NAME_PREFIX + 'Other' + #DIC[prop] = inverse_ranges(add_ranges_in_dic(dic)) + #PROPS.append(prop) + #KDIC[prop] = 'GrapemeBreak Property' + add_posix_props(DIC) +PROPS = sorted(PROPS) s = '''%{ /* Generated by make_unicode_property_data.py. */ ''' print s for prop in POSIX_LIST: - print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop) + print_property(prop, DIC[prop], "POSIX [[:%s:]]" % prop) print '' if not(POSIX_ONLY): - for prop in PROPS: - klass = KDIC.get(prop, None) - if klass is None: - n = len(prop) - if n == 1: - klass = 'Major Category' - elif n == 2: - klass = 'General Category' - else: - klass = '-' + for prop in PROPS: + klass = KDIC.get(prop, None) + if klass is None: + n = len(prop) + if n == 1: + klass = 'Major Category' + elif n == 2: + klass = 'General Category' + else: + klass = '-' - print_property(prop, DIC[prop], klass) + print_property(prop, DIC[prop], klass) - for block in BLOCKS: - print_property(block, DIC[block], 'Block') + for block in BLOCKS: + print_property(block, DIC[block], 'Block') print '' print "static const OnigCodePoint*\nconst CodeRanges[] = {" for prop in POSIX_LIST: - print " CR_%s," % prop + print " CR_%s," % prop if not(POSIX_ONLY): - for prop in PROPS: - print " CR_%s," % prop + for prop in PROPS: + print " CR_%s," % prop - for prop in BLOCKS: - print " CR_%s," % prop + for prop in BLOCKS: + print " CR_%s," % prop s = '''}; %} @@ -489,57 +510,51 @@ struct PropertyNameCtype { ''' sys.stdout.write(s) -if OUTPUT_LIST: - UPF = open("UNICODE_PROPERTIES", "w") - if VERSION_INFO is not None: - print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO - print >> UPF, '' +if OUTPUT_LIST_MODE: + UPF = open("UNICODE_PROPERTIES", "w") + if VERSION_INFO is not None: + print >> UPF, "Unicode Properties (from Unicode Version: %s)" % VERSION_INFO + print >> UPF, '' index = -1 for prop in POSIX_LIST: index += 1 - entry_prop_name(prop, index) - prop = normalize_prop_name(prop) - print_prop_and_index(prop, index) + entry_and_print_prop_and_index(prop, index) if not(POSIX_ONLY): - for prop in PROPS: - index += 1 - entry_prop_name(prop, index) - prop = normalize_prop_name(prop) - print_prop_and_index(prop, index) - - NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items()) - NALIASES = sorted(NALIASES) - for (nk, k, v) in NALIASES: - nv = normalize_prop_name(v) - if PropIndex.get(nk, None) is not None: - print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v) - continue - index = PropIndex.get(nv, None) - if index is None: - #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v) - continue - - entry_prop_name(k, index) - print_prop_and_index(nk, index) - - for name in BLOCKS: - index += 1 - entry_prop_name(name, index) - name = normalize_prop_name(name) - print_prop_and_index(name, index) + for prop in PROPS: + index += 1 + entry_and_print_prop_and_index(prop, index) + + NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items()) + NALIASES = sorted(NALIASES) + for (nk, k, v) in NALIASES: + nv = normalize_prop_name(v) + if PropIndex.get(nk, None) is not None: + print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v) + continue + aindex = PropIndex.get(nv, None) + if aindex is None: + #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v) + continue + + entry_prop_name(k, aindex) + print_prop_and_index(nk, aindex) + + for name in BLOCKS: + index += 1 + entry_and_print_prop_and_index(name, index) print '%%' print '' if VERSION_INFO is not None: - print "#define PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO) - print '' + print "#define PROPERTY_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO) + print '' print "#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10) print "#define CODE_RANGES_NUM %d" % (index + 1) -if OUTPUT_LIST: - UPF.close() +if OUTPUT_LIST_MODE: + UPF.close() sys.exit(0) diff --git a/src/oniguruma.h b/src/oniguruma.h index bc8983f..dbcbbdb 100644 --- a/src/oniguruma.h +++ b/src/oniguruma.h @@ -35,8 +35,8 @@ extern "C" { #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 6 -#define ONIGURUMA_VERSION_MINOR 5 -#define ONIGURUMA_VERSION_TEENY 0 +#define ONIGURUMA_VERSION_MINOR 6 +#define ONIGURUMA_VERSION_TEENY 1 #ifdef __cplusplus # ifndef HAVE_PROTOTYPES @@ -270,7 +270,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) @@ -385,6 +385,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 +396,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)) @@ -501,6 +509,7 @@ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #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 */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ diff --git a/src/regcomp.c b/src/regcomp.c index 47023cb..ab5701c 100644 --- a/src/regcomp.c +++ b/src/regcomp.c @@ -277,7 +277,7 @@ unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) static int add_opcode(regex_t* reg, int opcode) { - BBUF_ADD1(reg, opcode); + BB_ADD1(reg, opcode); return 0; } @@ -287,7 +287,7 @@ add_state_check_num(regex_t* reg, int num) { StateCheckNumType n = (StateCheckNumType )num; - BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM); + BB_ADD(reg, &n, SIZE_STATE_CHECK_NUM); return 0; } #endif @@ -297,7 +297,7 @@ 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; } @@ -306,7 +306,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; } @@ -315,7 +315,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; } @@ -324,7 +324,7 @@ 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; } @@ -334,7 +334,7 @@ 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 @@ -342,7 +342,7 @@ add_pointer(regex_t* reg, void* addr) static int add_option(regex_t* reg, OnigOptionType option) { - BBUF_ADD(reg, &option, SIZE_OPTION); + BB_ADD(reg, &option, SIZE_OPTION); return 0; } @@ -351,7 +351,7 @@ add_save_type(regex_t* reg, enum SaveType type) { SaveType t = (SaveType )type; - BBUF_ADD(reg, &t, SIZE_SAVE_TYPE); + BB_ADD(reg, &t, SIZE_SAVE_TYPE); return 0; } @@ -360,7 +360,14 @@ add_update_var_type(regex_t* reg, enum UpdateVarType type) { UpdateVarType t = (UpdateVarType )type; - BBUF_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE); + BB_ADD(reg, &t, SIZE_UPDATE_VAR_TYPE); + return 0; +} + +static int +add_mode(regex_t* reg, ModeType mode) +{ + BB_ADD(reg, &mode, SIZE_MODE); return 0; } @@ -378,14 +385,14 @@ add_opcode_rel_addr(regex_t* reg, int opcode, int addr) static int add_bytes(regex_t* reg, UChar* bytes, int len) { - BBUF_ADD(reg, bytes, len); + BB_ADD(reg, bytes, len); return 0; } static int add_bitset(regex_t* reg, BitSetRef bs) { - BBUF_ADD(reg, bs, SIZE_BITSET); + BB_ADD(reg, bs, SIZE_BITSET); return 0; } @@ -492,7 +499,7 @@ compile_call(CallNode* node, regex_t* reg, ScanEnv* env) r = add_opcode(reg, OP_CALL); if (r != 0) return r; - r = unset_addr_list_add(env->unset_addr_list, BBUF_GET_OFFSET_POS(reg), + 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.*/); @@ -655,7 +662,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)); @@ -1400,7 +1407,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { r = add_opcode(reg, OP_CALL); if (r != 0) return r; - node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; + node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; NODE_STATUS_ADD(node, NST_ADDR_FIXED); r = add_abs_addr(reg, (int )node->m.called_addr); if (r != 0) return r; @@ -1418,7 +1425,7 @@ compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) if (NODE_IS_CALLED(node)) { r = add_opcode(reg, OP_CALL); if (r != 0) return r; - node->m.called_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; + node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; NODE_STATUS_ADD(node, NST_ADDR_FIXED); r = add_abs_addr(reg, (int )node->m.called_addr); if (r != 0) return r; @@ -1588,6 +1595,20 @@ compile_length_anchor_node(AnchorNode* node, regex_t* reg) len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT; 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: len = SIZE_OPCODE; break; @@ -1600,6 +1621,7 @@ static int 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; @@ -1609,13 +1631,34 @@ compile_anchor_node(AnchorNode* node, regex_t* reg, ScanEnv* env) 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_PREC_READ_START); if (r != 0) return r; @@ -1914,9 +1957,12 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) break; case ONIGENC_CTYPE_WORD: - if (CTYPE_(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; @@ -2038,8 +2084,6 @@ compile_tree(Node* node, regex_t* reg, ScanEnv* env) return r; } -#ifdef USE_NAMED_GROUP - static int noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) { @@ -2283,7 +2327,6 @@ disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) return onig_renumber_name_table(reg, map); } -#endif /* USE_NAMED_GROUP */ #ifdef USE_CALL static int @@ -2301,7 +2344,7 @@ unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg) 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; } @@ -2394,9 +2437,6 @@ get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) #endif case NODE_CTYPE: - *len = 1; - break; - case NODE_CCLASS: *len = 1; break; @@ -2496,7 +2536,8 @@ is_exclusive(Node* x, Node* y, regex_t* reg) switch (ytype) { case NODE_CTYPE: if (CTYPE_(y)->ctype == CTYPE_(x)->ctype && - CTYPE_(y)->not != CTYPE_(x)->not) + CTYPE_(y)->not != CTYPE_(x)->not && + CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode) return 1; else return 0; @@ -2523,6 +2564,7 @@ is_exclusive(Node* x, Node* y, regex_t* reg) case NODE_CCLASS: { + int range; CClassNode* xc = CCLASS_(x); switch (ytype) { case NODE_CTYPE: @@ -2534,9 +2576,10 @@ is_exclusive(Node* x, Node* y, regex_t* reg) case ONIGENC_CTYPE_WORD: 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; @@ -2545,18 +2588,18 @@ is_exclusive(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; @@ -2612,10 +2655,18 @@ is_exclusive(Node* x, Node* y, regex_t* reg) break; case ONIGENC_CTYPE_WORD: - if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) - return CTYPE_(y)->not; - else - return !(CTYPE_(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; @@ -2780,7 +2831,7 @@ check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); - if ((en->type & enclosure_mask) == 0) + if (((1<<en->type) & enclosure_mask) == 0) return 1; r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); @@ -3512,7 +3563,7 @@ divide_look_behind_alternatives(Node* node) np = node; while (IS_NOT_NULL(np = NODE_CDR(np))) { - insert_node = onig_node_new_anchor(anc_type); + insert_node = onig_node_new_anchor(anc_type, an->ascii_mode); CHECK_NULL_RETURN_MEMERR(insert_node); NODE_BODY(insert_node) = NODE_CAR(np); NODE_CAR(np) = insert_node; @@ -4150,22 +4201,19 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state) if (cn->by_number != 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->options, 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 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, @@ -4173,7 +4221,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state) return ONIGERR_UNDEFINED_NAME_REFERENCE; } } -#ifdef USE_NAMED_GROUP else { int *refs; @@ -4193,7 +4240,6 @@ setup_call_node_call(CallNode* cn, ScanEnv* env, int state) goto set_call_attr; } } -#endif return 0; } @@ -4579,18 +4625,22 @@ setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env) | BIT_NODE_CTYPE | BIT_NODE_ANCHOR | BIT_NODE_ENCLOSURE | BIT_NODE_QUANT \ | BIT_NODE_CALL ) -#define ALLOWED_ENCLOSURE_IN_LB ( ENCLOSURE_MEMORY | ENCLOSURE_OPTION ) -#define ALLOWED_ENCLOSURE_IN_LB_NOT ENCLOSURE_OPTION +#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_BOUND | ANCHOR_NOT_WORD_BOUND \ - | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) + | 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_BOUND \ - | ANCHOR_NOT_WORD_BOUND | ANCHOR_WORD_BEGIN | ANCHOR_WORD_END ) + | 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); @@ -5603,6 +5653,7 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) case NODE_CTYPE: { int i, min, max; + int range; max = ONIGENC_MBC_MAXLEN_DIST(env->enc); @@ -5614,15 +5665,19 @@ optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env) break; case ONIGENC_CTYPE_WORD: + range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; if (CTYPE_(node)->not != 0) { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + for (i = 0; i < range; i++) { if (! ONIGENC_IS_CODE_WORD(env->enc, i)) { add_char_opt_map_info(&opt->map, (UChar )i, env->enc); } } + for (i = range; i < SINGLE_BYTE_SIZE; i++) { + add_char_opt_map_info(&opt->map, (UChar )i, env->enc); + } } else { - for (i = 0; i < SINGLE_BYTE_SIZE; i++) { + for (i = 0; i < range; i++) { if (ONIGENC_IS_CODE_WORD(env->enc, i)) { add_char_opt_map_info(&opt->map, (UChar )i, env->enc); } @@ -6171,9 +6226,7 @@ onig_free_body(regex_t* reg) if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range); if (IS_NOT_NULL(REG_EXTP(reg))) xfree(REG_EXTP(reg)); -#ifdef USE_NAMED_GROUP onig_names_free(reg); -#endif } } @@ -6202,7 +6255,7 @@ onig_transfer(regex_t* to, regex_t* from) #ifdef ONIG_DEBUG_COMPILE 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 @@ -6229,7 +6282,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, if (reg->alloc == 0) { init_size = (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 @@ -6247,7 +6300,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, 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) && @@ -6259,7 +6311,6 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, if (r != 0) goto err; } -#endif r = check_backrefs(root, &scan_env); if (r != 0) goto err; @@ -6287,7 +6338,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, 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 @@ -6377,9 +6428,7 @@ 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); #endif @@ -6642,6 +6691,7 @@ onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) #define ARG_MEMNUM 4 #define ARG_OPTION 5 #define ARG_STATE_CHECK 6 +#define ARG_MODE 7 OnigOpInfoType OnigOpInfo[] = { { OP_FINISH, "finish", ARG_NON }, @@ -6666,7 +6716,9 @@ OnigOpInfoType OnigOpInfo[] = { { 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 }, @@ -6674,11 +6726,13 @@ OnigOpInfoType OnigOpInfo[] = { { 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_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_BEGIN_BUF, "begin-buf", ARG_NON }, { OP_END_BUF, "end-buf", ARG_NON }, { OP_BEGIN_LINE, "begin-line", ARG_NON }, @@ -6800,6 +6854,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, StateCheckNumType scn; OnigCodePoint code; OnigOptionType option; + ModeType mode; UChar *q; fprintf(f, "%s", op2name(*bp)); @@ -6840,6 +6895,12 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, bp += SIZE_STATE_CHECK_NUM; fprintf(f, ":%d", scn); break; + + case ARG_MODE: + mode = *((ModeType* )bp); + bp += SIZE_MODE; + fprintf(f, ":%d", mode); + break; } } else { @@ -6939,6 +7000,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, fprintf(f, ":%d:%d:%d", n, (int )code, len); break; +#ifdef USE_OP_CCLASS_NODE case OP_CCLASS_NODE: { CClassNode *cc; @@ -6948,6 +7010,7 @@ onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, fprintf(f, ":%p:%d", cc, n); } break; +#endif case OP_BACKREF_N_IC: mem = *((MemNumType* )bp); @@ -7082,7 +7145,7 @@ print_compiled_byte_code_list(FILE* f, regex_t* reg) } #endif -#ifdef ONIG_DEBUG_PARSE_TREE +#ifdef ONIG_DEBUG_PARSE static void Indent(FILE* f, int indent) @@ -7157,9 +7220,13 @@ print_indent_tree(FILE* f, Node* node, int indent) case ONIGENC_CTYPE_WORD: if (CTYPE_(node)->not != 0) - fputs("not word", f); + fputs("not word", f); else - fputs("word", f); + fputs("word", f); + + if (CTYPE_(node)->ascii_mode != 0) + fputs(" (ascii)", f); + break; default: @@ -7171,19 +7238,23 @@ print_indent_tree(FILE* f, Node* node, int indent) case NODE_ANCHOR: fprintf(f, "<anchor:%p> ", node); 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_BOUND: fputs("word bound", f); break; - case ANCHOR_NOT_WORD_BOUND: fputs("not word bound", f); break; + 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, NODE_BODY(node), indent + add); diff --git a/src/regenc.c b/src/regenc.c index 554a622..97b5052 100644 --- a/src/regenc.c +++ b/src/regenc.c @@ -841,6 +841,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/src/regenc.h b/src/regenc.h index abc26be..cda3bcd 100644 --- a/src/regenc.h +++ b/src/regenc.h @@ -71,6 +71,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,6 +111,7 @@ 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 */ @@ -143,6 +146,7 @@ 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_is_mbc_word_ascii P_((OnigEncoding enc, UChar* s, const 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)); @@ -158,6 +162,7 @@ ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const Onig 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)); +ONIG_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,8 +199,8 @@ 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); @@ -235,6 +240,8 @@ 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)) diff --git a/src/regerror.c b/src/regerror.c index a430e60..c0d2346 100644 --- a/src/regerror.c +++ b/src/regerror.c @@ -135,11 +135,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 +151,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: diff --git a/src/regexec.c b/src/regexec.c index e7dfb96..9dbef70 100644 --- a/src/regexec.c +++ b/src/regexec.c @@ -31,6 +31,9 @@ #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) \ (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ @@ -2002,6 +2005,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, MOP_OUT; break; +#ifdef USE_OP_CCLASS_NODE case OP_CCLASS_NODE: MOP_IN(OP_CCLASS_NODE); { OnigCodePoint code; @@ -2020,6 +2024,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, } MOP_OUT; break; +#endif case OP_ANYCHAR: MOP_IN(OP_ANYCHAR); DATA_ENSURE(1); @@ -2152,7 +2157,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, MOP_OUT; break; - case OP_NOT_WORD: MOP_IN(OP_NOT_WORD); + case OP_WORD_ASCII: MOP_IN(OP_WORD_ASCII); + DATA_ENSURE(1); + if (! ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; + + s += enclen(encode, s); + MOP_OUT; + break; + + case OP_NO_WORD: MOP_IN(OP_NO_WORD); DATA_ENSURE(1); if (ONIGENC_IS_MBC_WORD(encode, s, end)) goto fail; @@ -2161,38 +2175,57 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, MOP_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_NO_WORD_ASCII: MOP_IN(OP_NO_WORD_ASCII); + DATA_ENSURE(1); + if (ONIGENC_IS_MBC_WORD_ASCII(encode, s, end)) + goto fail; + + s += enclen(encode, s); + MOP_OUT; + break; + + case OP_WORD_BOUNDARY: MOP_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; 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: MOP_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; continue; @@ -2200,26 +2233,55 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, #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; + { + 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)) { + MOP_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; + { + 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)) { + MOP_OUT; + continue; + } } } goto fail; break; #endif + case OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + MOP_IN(OP_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) { + MOP_OUT; + continue; + } + goto fail; + break; + + case OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: + MOP_IN(OP_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY); + if (onigenc_egcb_is_break_position(encode, s, sprev, str, end)) + goto fail; + + MOP_OUT; + continue; + break; + case OP_BEGIN_BUF: MOP_IN(OP_BEGIN_BUF); if (! ON_STR_BEGIN(s)) goto fail; diff --git a/src/regint.h b/src/regint.h index 185f4b6..9dc1723 100644 --- a/src/regint.h +++ b/src/regint.h @@ -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,7 +56,6 @@ /* config */ /* spec. config */ -#define USE_NAMED_GROUP #define USE_CALL #define USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> */ #define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */ @@ -283,10 +282,17 @@ typedef unsigned int MemStatusType; #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) @@ -301,6 +307,21 @@ typedef unsigned int MemStatusType; #define IS_NOTEOL(option) ((option) & ONIG_OPTION_NOTEOL) #define IS_POSIX_REGION(option) ((option) & ONIG_OPTION_POSIX_REGION) +#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)))) + /* OP_SET_OPTION is required for these options. #define IS_DYNAMIC_OPTION(option) \ (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0) @@ -350,21 +371,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) {\ @@ -374,54 +395,54 @@ 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 BB_GET_BYTE(buf, pos) (buf)->p[(pos)] /* has body */ @@ -436,15 +457,21 @@ typedef struct _BBuf { #define ANCHOR_END_BUF (1<<7) #define ANCHOR_SEMI_END_BUF (1<<8) #define ANCHOR_END_LINE (1<<9) -#define ANCHOR_WORD_BOUND (1<<10) -#define ANCHOR_NOT_WORD_BOUND (1<<11) +#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_STAR (1<<14) /* ".*" optimize info */ #define ANCHOR_ANYCHAR_STAR_ML (1<<15) /* ".*" optimize info (multi-line) */ +#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 { @@ -473,7 +500,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 */ @@ -483,12 +512,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, @@ -580,6 +614,7 @@ 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) @@ -593,6 +628,7 @@ typedef int UpdateVarType; #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) @@ -604,6 +640,7 @@ typedef int UpdateVarType; #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)) @@ -624,6 +661,7 @@ typedef int UpdateVarType; #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_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE) #define SIZE_OP_PREC_READ_START SIZE_OPCODE #define SIZE_OP_PUSH_PREC_READ_NOT (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PREC_READ_END SIZE_OPCODE @@ -725,9 +763,6 @@ typedef struct { } 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); diff --git a/src/regparse.c b/src/regparse.c index 25291c5..1fb2357 100644 --- a/src/regparse.c +++ b/src/regparse.c @@ -50,6 +50,7 @@ OnigSyntaxType OnigSyntaxRuby = { 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_N_O_SUPER_DOT | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | @@ -163,7 +164,7 @@ bbuf_clone(BBuf** rto, BBuf* from) *rto = to = (BBuf* )xmalloc(sizeof(BBuf)); CHECK_NULL_RETURN_MEMERR(to); - r = BBUF_INIT(to, from->alloc); + r = BB_INIT(to, from->alloc); if (r != 0) { xfree(to->p); *rto = 0; @@ -288,7 +289,6 @@ onig_strcpy(UChar* dest, const UChar* src, const UChar* end) } } -#ifdef USE_NAMED_GROUP static UChar* strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) { @@ -307,7 +307,6 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) return r; } -#endif static int save_entry(ScanEnv* env, enum SaveType type, int* id) @@ -483,8 +482,6 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key, #endif /* USE_ST_LIBRARY */ -#ifdef USE_NAMED_GROUP - #define INIT_NAME_BACKREFS_ALLOC_NUM 8 typedef struct { @@ -965,49 +962,17 @@ onig_name_to_backref_number(regex_t* reg, const UChar* name, } } -#else /* USE_NAMED_GROUP */ - -extern int -onig_name_to_group_numbers(regex_t* reg, const UChar* name, - const UChar* name_end, int** nums) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_name_to_backref_number(regex_t* reg, const UChar* name, - const UChar* name_end, OnigRegion* region) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_foreach_name(regex_t* reg, - int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) -{ - return ONIG_NO_SUPPORT_CONFIG; -} - -extern int -onig_number_of_names(regex_t* reg) -{ - return 0; -} -#endif /* 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; -#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; } -#endif return 1; } @@ -1032,10 +997,8 @@ scan_env_clear(ScanEnv* env) #endif env->num_mem = 0; -#ifdef USE_NAMED_GROUP env->num_named = 0; -#endif - env->mem_alloc = 0; + env->mem_alloc = 0; env->mem_env_dynamic = (MemEnv* )NULL; xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); @@ -1204,7 +1167,6 @@ node_new(void) Node* node; node = (Node* )xmalloc(sizeof(Node)); - //xmemset(node, 0, sizeof(node->u.base)); xmemset(node, 0, sizeof(*node)); #ifdef DEBUG_NODE_FREE @@ -1218,7 +1180,6 @@ static void initialize_cclass(CClassNode* cc) { BITSET_CLEAR(cc->bs); - /* cc->base.flags = 0; */ cc->flags = 0; cc->mbuf = NULL; } @@ -1235,21 +1196,23 @@ node_new_cclass(void) } 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); NODE_SET_TYPE(node, NODE_CTYPE); - CTYPE_(node)->ctype = type; - CTYPE_(node)->not = not; + 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_ctype(CTYPE_ANYCHAR, 0); + Node* node = node_new_ctype(CTYPE_ANYCHAR, 0, ONIG_OPTION_NONE); return node; } @@ -1383,14 +1346,15 @@ make_alt(int n, Node* 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); NODE_SET_TYPE(node, NODE_ANCHOR); - ANCHOR_(node)->type = type; - ANCHOR_(node)->char_len = -1; + ANCHOR_(node)->type = type; + ANCHOR_(node)->char_len = -1; + ANCHOR_(node)->ascii_mode = ascii_mode; return node; } @@ -1506,7 +1470,7 @@ node_new_quantifier(int lower, int upper, int by_number) } static Node* -node_new_enclosure(int type) +node_new_enclosure(enum EnclosureType type) { Node* node = node_new(); CHECK_NULL_RETURN(node); @@ -1637,6 +1601,61 @@ node_new_keep(Node** node, ScanEnv* env) } 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) @@ -1663,26 +1682,26 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent, if (r != 0) goto err; x = make_list(4, ns); - if (IS_NULL(x)) goto err; + 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 err; + if (IS_NULL(x)) goto err0; ns[0] = x; x = node_new_quantifier(lower, upper, 0); - if (IS_NULL(x)) goto err; + 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 err; + if (IS_NULL(x)) goto err0; NODE_BODY(x) = ns[0]; ns[0] = x; @@ -1696,12 +1715,12 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent, if (r != 0) goto err; x = make_list(2, ns + 1); - if (IS_NULL(x)) goto err; + if (IS_NULL(x)) goto err0; ns[1] = x; ns[2] = NULL_NODE; x = make_alt(2, ns); - if (IS_NULL(x)) goto err; + if (IS_NULL(x)) goto err0; if (is_range_cutter != 0) NODE_STATUS_ADD(x, NST_SUPER); @@ -1709,6 +1728,8 @@ make_absent_engine(Node** node, int pre_save_right_id, Node* absent, *node = x; return ONIG_NORMAL; + err0: + r = ONIGERR_MEMORY; err: for (i = 0; i < 4; i++) onig_node_free(ns[i]); return r; @@ -1739,7 +1760,7 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id, if (r != 0) goto err; x = make_list(2, ns); - if (IS_NULL(x)) goto err; + if (IS_NULL(x)) goto err0; ns[0] = NULL_NODE; ns[1] = x; @@ -1748,12 +1769,68 @@ make_absent_tail(Node** node1, Node** node2, int pre_save_right_id, if (r != 0) goto err; x = make_alt(2, ns); - if (IS_NULL(x)) goto err; + 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, NST_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]); @@ -1790,6 +1867,9 @@ is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody, return 0; } + if (QUANT_(quant)->greedy == 0) + return 0; + body = NODE_BODY(quant); switch (NODE_TYPE(body)) { case NODE_STRING: @@ -1856,15 +1936,18 @@ make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* qua ns[2] = ns[3] = NULL_NODE; - r = make_absent_tail(&ns[2], &ns[3], id1, env); + r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, + id1, env); if (r != 0) goto err; - x = make_list(4, ns); - if (IS_NULL(x)) 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; @@ -1892,7 +1975,7 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, if (expr == NULL_NODE) { /* default expr \O* */ quant = node_new_quantifier(0, REPEAT_INFINITE, 0); - if (IS_NULL(quant)) goto err; + if (IS_NULL(quant)) goto err0; r = node_new_true_anychar(&body, env); if (r != 0) { @@ -1945,19 +2028,21 @@ make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, if (is_range_cutter != 0) { x = make_list(4, ns); - if (IS_NULL(x)) goto err; + 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 err; + 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; @@ -2143,7 +2228,7 @@ onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) num = 0; 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 */ @@ -2161,7 +2246,7 @@ 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) + OnigEncoding enc) { OnigCodePoint c; unsigned int num, val; @@ -2171,7 +2256,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, num = 0; while (! PEND && maxlen-- != 0) { PFETCH(c); - if (ONIGENC_IS_CODE_XDIGIT(enc, c)) { + if (IS_CODE_XDIGIT_ASCII(enc, c)) { val = (unsigned int )XDIGITVAL(enc,c); if ((INT_MAX_LIMIT - val) / 16UL < num) return -1; /* overflow */ @@ -2189,7 +2274,7 @@ scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen, static int scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, - OnigEncoding enc) + OnigEncoding enc) { OnigCodePoint c; unsigned int num, val; @@ -2199,7 +2284,7 @@ scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, num = 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 */ @@ -2216,8 +2301,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] @@ -2233,7 +2318,7 @@ new_code_range(BBuf** pbuf) bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); CHECK_NULL_RETURN_MEMERR(bbuf); - r = BBUF_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); + r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); if (r != 0) { xfree(bbuf); *pbuf = 0; @@ -2241,7 +2326,7 @@ new_code_range(BBuf** pbuf) } n = 0; - BBUF_WRITE_CODE_POINT(bbuf, 0, n); + BB_WRITE_CODE_POINT(bbuf, 0, n); return 0; } @@ -2304,19 +2389,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; } @@ -2369,7 +2454,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; \ @@ -2393,7 +2478,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) { @@ -2410,7 +2495,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); @@ -2435,7 +2520,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; @@ -2493,7 +2578,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); @@ -2556,7 +2641,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); @@ -2614,7 +2698,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); @@ -2661,7 +2744,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: @@ -2874,6 +2957,7 @@ enum TokenSyms { TK_GENERAL_NEWLINE, /* \R */ TK_NO_NEWLINE, /* \N */ TK_TRUE_ANYCHAR, /* \O */ + TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */ /* in cc */ TK_CC_CLOSE, @@ -3110,7 +3194,6 @@ enum REF_NUM { IS_REL_NUM = 2 }; -#ifdef USE_NAMED_GROUP #ifdef USE_BACKREF_WITH_LEVEL /* \k<name+n>, \k<name-n> @@ -3152,7 +3235,7 @@ 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)) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { *num_type = IS_ABS_NUM; digit_count++; } @@ -3181,7 +3264,7 @@ fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, } if (*num_type != IS_NOT_NUM) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { digit_count++; } else { @@ -3204,7 +3287,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; @@ -3284,7 +3367,7 @@ 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) *num_type = IS_ABS_NUM; else { @@ -3328,7 +3411,7 @@ fetch_name(OnigCodePoint start_code, UChar** src, UChar* end, } if (*num_type != IS_NOT_NUM) { - if (ONIGENC_IS_CODE_DIGIT(enc, c)) { + if (IS_CODE_DIGIT_ASCII(enc, c)) { digit_count++; } else { @@ -3384,111 +3467,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, - enum REF_NUM* num_type, int ref) -{ - int r, sign; - int digit_count; - 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); - - digit_count = 0; - *rname_end = name_end = end; - r = 0; - pnum_head = *src; - *num_type = IS_ABS_NUM; - 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)) { - *num_type = IS_ABS_NUM; - digit_count++; - } - else if (c == '-') { - if (ref == 1) { - *num_type = IS_REL_NUM; - sign = -1; - pnum_head = p; - } - else { - r = ONIGERR_INVALID_GROUP_NAME; - } - } - else if (c == '+') { - if (ref == 1) { - *num_type = IS_REL_NUM; - sign = 1; - pnum_head = p; - } - else { - r = ONIGERR_INVALID_GROUP_NAME; - } - } - 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)) - digit_count++; - else - r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; - } - if (r == 0 && c != end_code) { - r = ONIGERR_INVALID_GROUP_NAME; - name_end = end; - } - if (r == 0 && digit_count == 0) { - r = ONIGERR_INVALID_GROUP_NAME; - } - - 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) { - if (*num_type == IS_REL_NUM) { - 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) @@ -3521,7 +3499,7 @@ CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c) 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; @@ -3550,7 +3528,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; @@ -3699,7 +3677,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; } @@ -3726,7 +3704,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_XDIGIT(enc, c2)) + if (IS_CODE_XDIGIT_ASCII(enc, c2)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } @@ -3956,13 +3934,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 @@ -4041,6 +4031,11 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) 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: @@ -4086,7 +4081,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; } @@ -4111,7 +4106,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) num = scan_unsigned_hexadecimal_number(&p, end, 8, enc); if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; if (!PEND) { - if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK)) + if (IS_CODE_XDIGIT_ASCII(enc, PPEEK)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } @@ -4205,7 +4200,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); @@ -4277,7 +4271,6 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) PUNFETCH; } break; -#endif #ifdef USE_CALL case 'g': @@ -4531,8 +4524,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; @@ -4591,33 +4584,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: @@ -4631,14 +4731,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 < 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 < limit; c++) { if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } @@ -4647,34 +4751,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 < 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 < 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; @@ -4792,8 +4887,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; @@ -4827,7 +4921,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; @@ -4850,9 +4944,9 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, 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; @@ -4921,7 +5015,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; @@ -5282,19 +5376,17 @@ parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, } static int parse_subexp(Node** top, OnigToken* tok, int term, - UChar** src, UChar* end, ScanEnv* env); + UChar** src, UChar* end, ScanEnv* env); static int parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, - ScanEnv* env) + ScanEnv* env) { int r, num; Node *target; OnigOptionType option; OnigCodePoint c; -#ifdef USE_NAMED_GROUP int list_capture; -#endif OnigEncoding enc = env->enc; UChar* p = *src; @@ -5322,16 +5414,15 @@ parse_enclosure(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_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; @@ -5339,16 +5430,14 @@ parse_enclosure(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; @@ -5385,11 +5474,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, return ONIGERR_UNDEFINED_GROUP_OPTION; } } -#else - else { - return ONIGERR_UNDEFINED_GROUP_OPTION; - } -#endif break; case '~': @@ -5406,10 +5490,9 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; head_bar = 1; - if (PPEEK_IS(')')) { // (?~|) : absent clear + if (PPEEK_IS(')')) { // (?~|) : range clear PINC; - r = node_new_update_var_gimmick(np, UPDATE_VAR_RIGHT_RANGE_INIT, - 0, env); + r = make_range_clear(np, env); if (r != 0) return r; goto end; } @@ -5471,7 +5554,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, PFETCH(c); if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; - if (ONIGENC_IS_CODE_DIGIT(enc, c) + if (IS_CODE_DIGIT_ASCII(enc, c) || c == '-' || c == '+' || c == '<' || c == '\'') { UChar* name_end; int back_num; @@ -5647,7 +5730,6 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, 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 == '\'') { @@ -5656,7 +5738,7 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, } PUNFETCH; } -#endif + *np = node_new_memory(0); CHECK_NULL_RETURN_MEMERR(*np); num = scan_env_add_mem_entry(env); @@ -5678,6 +5760,7 @@ parse_enclosure(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; @@ -5713,6 +5796,11 @@ parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, 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; } @@ -5918,8 +6006,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; @@ -5998,8 +6085,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; @@ -6145,7 +6232,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; @@ -6253,7 +6340,11 @@ parse_exp(Node** np, OnigToken* tok, int term, #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: @@ -6289,6 +6380,11 @@ parse_exp(Node** np, OnigToken* tok, int term, 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; @@ -6356,8 +6452,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; @@ -6399,8 +6495,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; @@ -6492,9 +6588,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, int r; UChar* p; -#ifdef USE_NAMED_GROUP names_clear(reg); -#endif scan_env_clear(env); env->options = reg->options; @@ -6531,7 +6625,7 @@ onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, 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/src/regparse.h b/src/regparse.h index b7260ea..57219a4 100644 --- a/src/regparse.h +++ b/src/regparse.h @@ -100,10 +100,12 @@ enum GimmickType { #define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML) #define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF) -#define ENCLOSURE_MEMORY (1<<0) -#define ENCLOSURE_OPTION (1<<1) -#define ENCLOSURE_STOP_BACKTRACK (1<<2) -#define ENCLOSURE_IF_ELSE (1<<3) +enum EnclosureType { + ENCLOSURE_MEMORY = 0, + ENCLOSURE_OPTION = 1, + ENCLOSURE_STOP_BACKTRACK = 2, + ENCLOSURE_IF_ELSE = 3, +}; #define NODE_STRING_MARGIN 16 #define NODE_STRING_BUF_SIZE 24 /* sizeof(CClassNode) - sizeof(int)*4 */ @@ -125,7 +127,7 @@ enum GimmickType { (((node)->u.str.flag & STRING_DONT_GET_OPT_INFO) != 0) #define BACKREFS_P(br) \ - (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static); + (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static) #define QUANT_BODY_IS_NOT_EMPTY 0 #define QUANT_BODY_IS_EMPTY 1 @@ -233,7 +235,7 @@ typedef struct { int status; struct _Node* body; - int type; + enum EnclosureType type; union { struct { int regnum; @@ -301,6 +303,7 @@ typedef struct { int type; int char_len; + int ascii_mode; } AnchorNode; typedef struct { @@ -318,6 +321,7 @@ typedef struct { int ctype; int not; OnigOptionType options; + int ascii_mode; } CtypeNode; typedef struct { @@ -392,9 +396,7 @@ typedef struct { int has_call_zero; #endif int num_mem; -#ifdef USE_NAMED_GROUP int num_named; -#endif int mem_alloc; MemEnv mem_env_static[SCANENV_MEMENV_SIZE]; MemEnv* mem_env_dynamic; @@ -417,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)); @@ -435,7 +435,7 @@ 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_enclosure P_((int type)); -extern Node* onig_node_new_anchor 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)); @@ -448,9 +448,7 @@ extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClas extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node); #ifdef ONIG_DEBUG -#ifdef USE_NAMED_GROUP extern int onig_print_names(FILE*, regex_t*); #endif -#endif #endif /* REGPARSE_H */ diff --git a/src/regsyntax.c b/src/regsyntax.c index 6833e1d..83989b6 100644 --- a/src/regsyntax.c +++ b/src/regsyntax.c @@ -176,6 +176,7 @@ OnigSyntaxType OnigSyntaxPerl = { 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_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_CAPITAL_K_KEEP | @@ -206,6 +207,7 @@ OnigSyntaxType OnigSyntaxPerl_NG = { 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_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 | diff --git a/src/unicode.c b/src/unicode.c index 5b6b3e7..65de74a 100644 --- a/src/unicode.c +++ b/src/unicode.c @@ -664,3 +664,203 @@ onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, return n; } + + +#ifdef USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER + +enum EGCB_BREAK_TYPE { + EGCB_NOT_BREAK = 0, + EGCB_BREAK = 1, + EGCB_BREAK_UNDEF_E_MODIFIER = 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, + EGCB_E_Base = 9, + EGCB_E_Base_GAZ = 10, + EGCB_E_Modifier = 11, + EGCB_Glue_After_Zwj = 12, + 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 = EGCB_RANGE_NUM; low < high; ) { + x = (low + high) >> 1; + if (code > EGCB_RANGES[x].end) + low = x + 1; + else + high = x; + } + + type = (low < 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 ((from == EGCB_LVT || from == EGCB_T) && (to == 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 */ + if (to == EGCB_E_Modifier) { + if (from == EGCB_E_Base || from == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK; + if (from == EGCB_Extend) return EGCB_BREAK_UNDEF_E_MODIFIER; + goto GB999; + } + + /* GB11 */ + if (from == EGCB_ZWJ) { + if (to == EGCB_Glue_After_Zwj || to == EGCB_E_Base_GAZ) return EGCB_NOT_BREAK; + 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_E_MODIFIER: + 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_E_Base || type == EGCB_E_Base_GAZ) + return 0; + 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 */ +} diff --git a/src/unicode_egcb_data.c b/src/unicode_egcb_data.c new file mode 100644 index 0000000..144d9b3 --- /dev/null +++ b/src/unicode_egcb_data.c @@ -0,0 +1,1382 @@ +/* Copyright (c) 2017 K.Kosako */ +/* Generated by make_gcb_data.py. */ + +#define GRAPHEME_BREAK_PROPERTY_VERSION 10_0_0 + +/* +CR +Control +E_Base +E_Base_GAZ +E_Modifier +Extend +Glue_After_Zwj +L +LF +LV +LVT +Prepend +Regional_Indicator +SpacingMark +T +V +ZWJ +*/ + +static int EGCB_RANGE_NUM = 1354; +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 }, + {0x000816, 0x000819, EGCB_Extend }, + {0x00081b, 0x000823, EGCB_Extend }, + {0x000825, 0x000827, EGCB_Extend }, + {0x000829, 0x00082d, EGCB_Extend }, + {0x000859, 0x00085b, EGCB_Extend }, + {0x0008d4, 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 }, + {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 }, + {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 }, + {0x00261d, 0x00261d, EGCB_E_Base }, + {0x002640, 0x002640, EGCB_Glue_After_Zwj }, + {0x002642, 0x002642, EGCB_Glue_After_Zwj }, + {0x002695, 0x002696, EGCB_Glue_After_Zwj }, + {0x0026f9, 0x0026f9, EGCB_E_Base }, + {0x002708, 0x002708, EGCB_Glue_After_Zwj }, + {0x00270a, 0x00270d, EGCB_E_Base }, + {0x002764, 0x002764, EGCB_Glue_After_Zwj }, + {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 }, + {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 }, + {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 }, + {0x011100, 0x011102, EGCB_Extend }, + {0x011127, 0x01112b, EGCB_Extend }, + {0x01112c, 0x01112c, EGCB_SpacingMark }, + {0x01112d, 0x011134, EGCB_Extend }, + {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 }, + {0x0111ca, 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 }, + {0x01133c, 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 }, + {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 }, + {0x011a01, 0x011a06, EGCB_Extend }, + {0x011a07, 0x011a08, EGCB_SpacingMark }, + {0x011a09, 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 }, + {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 }, + {0x01f308, 0x01f308, EGCB_Glue_After_Zwj }, + {0x01f33e, 0x01f33e, EGCB_Glue_After_Zwj }, + {0x01f373, 0x01f373, EGCB_Glue_After_Zwj }, + {0x01f385, 0x01f385, EGCB_E_Base }, + {0x01f393, 0x01f393, EGCB_Glue_After_Zwj }, + {0x01f3a4, 0x01f3a4, EGCB_Glue_After_Zwj }, + {0x01f3a8, 0x01f3a8, EGCB_Glue_After_Zwj }, + {0x01f3c2, 0x01f3c4, EGCB_E_Base }, + {0x01f3c7, 0x01f3c7, EGCB_E_Base }, + {0x01f3ca, 0x01f3cc, EGCB_E_Base }, + {0x01f3eb, 0x01f3eb, EGCB_Glue_After_Zwj }, + {0x01f3ed, 0x01f3ed, EGCB_Glue_After_Zwj }, + {0x01f3fb, 0x01f3ff, EGCB_E_Modifier }, + {0x01f442, 0x01f443, EGCB_E_Base }, + {0x01f446, 0x01f450, EGCB_E_Base }, + {0x01f466, 0x01f469, EGCB_E_Base_GAZ }, + {0x01f46e, 0x01f46e, EGCB_E_Base }, + {0x01f470, 0x01f478, EGCB_E_Base }, + {0x01f47c, 0x01f47c, EGCB_E_Base }, + {0x01f481, 0x01f483, EGCB_E_Base }, + {0x01f485, 0x01f487, EGCB_E_Base }, + {0x01f48b, 0x01f48b, EGCB_Glue_After_Zwj }, + {0x01f4aa, 0x01f4aa, EGCB_E_Base }, + {0x01f4bb, 0x01f4bc, EGCB_Glue_After_Zwj }, + {0x01f527, 0x01f527, EGCB_Glue_After_Zwj }, + {0x01f52c, 0x01f52c, EGCB_Glue_After_Zwj }, + {0x01f574, 0x01f575, EGCB_E_Base }, + {0x01f57a, 0x01f57a, EGCB_E_Base }, + {0x01f590, 0x01f590, EGCB_E_Base }, + {0x01f595, 0x01f596, EGCB_E_Base }, + {0x01f5e8, 0x01f5e8, EGCB_Glue_After_Zwj }, + {0x01f645, 0x01f647, EGCB_E_Base }, + {0x01f64b, 0x01f64f, EGCB_E_Base }, + {0x01f680, 0x01f680, EGCB_Glue_After_Zwj }, + {0x01f692, 0x01f692, EGCB_Glue_After_Zwj }, + {0x01f6a3, 0x01f6a3, EGCB_E_Base }, + {0x01f6b4, 0x01f6b6, EGCB_E_Base }, + {0x01f6c0, 0x01f6c0, EGCB_E_Base }, + {0x01f6cc, 0x01f6cc, EGCB_E_Base }, + {0x01f918, 0x01f91c, EGCB_E_Base }, + {0x01f91e, 0x01f91f, EGCB_E_Base }, + {0x01f926, 0x01f926, EGCB_E_Base }, + {0x01f930, 0x01f939, EGCB_E_Base }, + {0x01f93d, 0x01f93e, EGCB_E_Base }, + {0x01f9d1, 0x01f9dd, EGCB_E_Base }, + {0x0e0000, 0x0e001f, EGCB_Control }, + {0x0e0020, 0x0e007f, EGCB_Extend }, + {0x0e0080, 0x0e00ff, EGCB_Control }, + {0x0e0100, 0x0e01ef, EGCB_Extend }, + {0x0e01f0, 0x0e0fff, EGCB_Control } +}; diff --git a/src/unicode_property_data.c b/src/unicode_property_data.c index 4ca438f..1807de4 100644 --- a/src/unicode_property_data.c +++ b/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.0.4 */ +/* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data.gperf */ /* Computed positions: -k'1-3,5-6,12,16,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -4766,12 +4766,102 @@ CR_ASCII[] = { 1, }; /* END of CR_ASCII */ +/* PROPERTY: 'ASCII_Hex_Digit': Binary Property */ +#define CR_ASCII_Hex_Digit CR_XDigit + +/* PROPERTY: 'Ahom': Script */ +static const OnigCodePoint +CR_Ahom[] = { 3, +0x11700, 0x11719, +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[] = { 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: '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: 'Assigned': - */ static const OnigCodePoint CR_Assigned[] = { 613, @@ -5390,6 +5480,104 @@ 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, 0x09fb, +}; /* END of CR_Bengali */ + +/* 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, 0x312d, +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, @@ -6011,6 +6199,513 @@ CR_C[] = { 616, 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[] = { 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 */ + +/* PROPERTY: 'Cased': Derived Property */ +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 */ + +/* 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 @@ -6036,6 +6731,2567 @@ CR_Cf[] = { 17, 0xe0020, 0xe007f, }; /* END of CR_Cf */ +/* PROPERTY: 'Chakma': Script */ +static const OnigCodePoint +CR_Chakma[] = { 2, +0x11100, 0x11134, +0x11136, 0x11143, +}; /* 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[] = { 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 */ + +/* PROPERTY: 'Changes_When_Casemapped': Derived Property */ +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 */ + +/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ +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 */ + +/* PROPERTY: 'Changes_When_Titlecased': Derived Property */ +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 */ + +/* PROPERTY: 'Changes_When_Uppercased': Derived Property */ +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 */ + +/* 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, @@ -6662,12 +9918,3243 @@ CR_Co[] = { 3, 0x100000, 0x10fffd, }; /* END of CR_Co */ +/* 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: '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[] = { 7, +0x0400, 0x0484, +0x0487, 0x052f, +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[] = { 9, +0x0149, 0x0149, +0x0673, 0x0673, +0x0f77, 0x0f77, +0x0f79, 0x0f79, +0x17a3, 0x17a4, +0x206a, 0x206f, +0x2329, 0x232a, +0xe0001, 0xe0001, +0xe007f, 0xe007f, +}; /* 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, 0xa8fd, +}; /* END of CR_Devanagari */ + +/* 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: '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: '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: '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: '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: 'Glagolitic': Script */ +static const OnigCodePoint +CR_Glagolitic[] = { 2, +0x2c00, 0x2c2e, +0x2c30, 0x2c5e, +}; /* 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[] = { 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_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_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: '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: '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: '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: '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: '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: '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, +0x05f0, 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, 0x1b001, +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[] = { 651, +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, +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, 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, 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, +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_ID_Continue */ + +/* PROPERTY: 'ID_Start': Derived Property */ +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, +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, +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, +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, +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, +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, +0x20000, 0x2a6d6, +0x2a700, 0x2b734, +0x2b740, 0x2b81d, +0x2b820, 0x2cea1, +0x2f800, 0x2fa1d, +}; /* END of CR_ID_Start */ + +/* 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: '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[] = { 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: '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[] = { 1, +0x11080, 0x110c1, +}; /* END of CR_Kaithi */ + +/* 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: '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, 0x10a33, +0x10a38, 0x10a3a, +0x10a3f, 0x10a47, +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, 0x1123d, +}; /* 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, @@ -7354,6 +13841,109 @@ CR_LC[] = { 122, 0x1d7c4, 0x1d7cb, }; /* 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[] = { 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: '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, @@ -8488,6 +15078,21 @@ CR_Lo[] = { 433, 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, @@ -9133,6 +15738,19 @@ CR_Lu[] = { 625, 0x1d7ca, 0x1d7ca, }; /* 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, @@ -9374,6 +15992,185 @@ CR_M[] = { 236, 0xe0100, 0xe01ef, }; /* END of CR_M */ +/* PROPERTY: 'Mahajani': Script */ +static const OnigCodePoint +CR_Mahajani[] = { 1, +0x11150, 0x11176, +}; /* END of CR_Mahajani */ + +/* 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: '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: '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, @@ -9536,6 +16333,43 @@ CR_Me[] = { 5, 0xa670, 0xa672, }; /* END of CR_Me */ +/* 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, @@ -9807,6 +16641,50 @@ CR_Mn[] = { 266, 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[] = { 6, +0x1800, 0x1801, +0x1804, 0x1804, +0x1806, 0x180e, +0x1810, 0x1819, +0x1820, 0x1877, +0x1880, 0x18aa, +}; /* 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, @@ -9923,9 +16801,31 @@ CR_N[] = { 111, 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: 'Nko': Script */ +static const OnigCodePoint +CR_Nko[] = { 1, +0x07c0, 0x07fa, +}; /* END of CR_Nko */ + /* PROPERTY: 'Nl': General Category */ static const OnigCodePoint CR_Nl[] = { 12, @@ -10006,9 +16906,597 @@ CR_No[] = { 58, 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: '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[] = { 1, +0x10300, 0x10323, +}; /* 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_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: '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[] = { 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: '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[] = { 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: '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[] = { 3, +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 +17622,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, @@ -10392,6 +17893,54 @@ 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: '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, @@ -10611,6 +18160,89 @@ CR_S[] = { 214, 0x1f9c0, 0x1f9c0, }; /* END of CR_S */ +/* PROPERTY: 'STerm': Binary Property */ +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 */ + +/* 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, 0xa8c4, +0xa8ce, 0xa8d9, +}; /* END of CR_Saurashtra */ + /* PROPERTY: 'Sc': General Category */ static const OnigCodePoint CR_Sc[] = { 17, @@ -10633,6 +18265,52 @@ CR_Sc[] = { 17, 0xffe5, 0xffe6, }; /* END of CR_Sc */ +/* 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, @@ -10911,3318 +18589,120 @@ CR_So[] = { 170, 0x1f9c0, 0x1f9c0, }; /* 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: 'Sora_Sompeng': Script */ static const OnigCodePoint -CR_Zl[] = { 1, -0x2028, 0x2028, -}; /* END of CR_Zl */ +CR_Sora_Sompeng[] = { 2, +0x110d0, 0x110e8, +0x110f0, 0x110f9, +}; /* END of CR_Sora_Sompeng */ -/* PROPERTY: 'Zp': General Category */ +/* PROPERTY: 'Sundanese': Script */ static const OnigCodePoint -CR_Zp[] = { 1, -0x2029, 0x2029, -}; /* END of CR_Zp */ +CR_Sundanese[] = { 2, +0x1b80, 0x1bbf, +0x1cc0, 0x1cc7, +}; /* END of CR_Sundanese */ -/* PROPERTY: 'Zs': General Category */ +/* PROPERTY: 'Syloti_Nagri': 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_Syloti_Nagri[] = { 1, +0xa800, 0xa82b, +}; /* END of CR_Syloti_Nagri */ -/* PROPERTY: 'Math': Derived Property */ +/* PROPERTY: 'Syriac': 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 - -/* PROPERTY: 'Uppercase': Derived Property */ -#define CR_Uppercase CR_Upper +CR_Syriac[] = { 3, +0x0700, 0x070d, +0x070f, 0x074a, +0x074d, 0x074f, +}; /* END of CR_Syriac */ -/* PROPERTY: 'Cased': Derived Property */ +/* PROPERTY: 'Tagalog': 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_Tagalog[] = { 2, +0x1700, 0x170c, +0x170e, 0x1714, +}; /* END of CR_Tagalog */ -/* PROPERTY: 'Case_Ignorable': Derived Property */ +/* PROPERTY: 'Tagbanwa': 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, +CR_Tagbanwa[] = { 3, +0x1760, 0x176c, +0x176e, 0x1770, 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 */ - -/* PROPERTY: 'Changes_When_Lowercased': Derived Property */ -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 */ +}; /* 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 +18712,838 @@ CR_ID_Start[] = { 555, 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, 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[] = { 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: '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, +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, +0x1039f, 0x1039f, +}; /* END of CR_Ugaritic */ + +/* PROPERTY: 'Unified_Ideograph': Binary Property */ +static const OnigCodePoint +CR_Unified_Ideograph[] = { 13, 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, -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, +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 */ +}; /* END of CR_Unified_Ideograph */ -/* PROPERTY: 'ID_Continue': Derived Property */ +/* PROPERTY: 'Unknown': Script */ static const OnigCodePoint -CR_ID_Continue[] = { 651, +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 */ + +/* 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[] = { 658, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, @@ -14704,7 +19561,7 @@ CR_ID_Continue[] = { 651, 0x02ee, 0x02ee, 0x0300, 0x0374, 0x0376, 0x0377, -0x037a, 0x037d, +0x037b, 0x037d, 0x037f, 0x037f, 0x0386, 0x038a, 0x038c, 0x038c, @@ -15034,7 +19891,8 @@ CR_ID_Continue[] = { 651, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, -0x3099, 0x309f, +0x3099, 0x309a, +0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, @@ -15099,16 +19957,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, @@ -15338,7 +20202,7 @@ CR_ID_Continue[] = { 651, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, -}; /* END of CR_ID_Continue */ +}; /* END of CR_XID_Continue */ /* PROPERTY: 'XID_Start': Derived Property */ static const OnigCodePoint @@ -15907,2523 +20771,6 @@ CR_XID_Start[] = { 562, 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 +20778,42 @@ 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 */ -static const OnigCodePoint -CR_Other_ID_Start[] = { 3, -0x2118, 0x2118, -0x212e, 0x212e, -0x309b, 0x309c, -}; /* END of CR_Other_ID_Start */ - -/* PROPERTY: 'Other_ID_Continue': Binary Property */ +/* PROPERTY: 'Z': Major Category */ static const OnigCodePoint -CR_Other_ID_Continue[] = { 4, -0x00b7, 0x00b7, -0x0387, 0x0387, -0x1369, 0x1371, -0x19da, 0x19da, -}; /* END of CR_Other_ID_Continue */ +CR_Z[] = { 8, +0x0020, 0x0020, +0x00a0, 0x00a0, +0x1680, 0x1680, +0x2000, 0x200a, +0x2028, 0x2029, +0x202f, 0x202f, +0x205f, 0x205f, +0x3000, 0x3000, +}; /* END of CR_Z */ -/* 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 @@ -22421,229 +22421,229 @@ const CodeRanges[] = { CR_Word, CR_Alnum, CR_ASCII, + CR_ASCII_Hex_Digit, + 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_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_Duployan, + CR_Egyptian_Hieroglyphs, + CR_Elbasan, + CR_Ethiopic, + CR_Extender, + CR_Georgian, + CR_Glagolitic, + CR_Gothic, + CR_Grantha, + CR_Grapheme_Base, + CR_Grapheme_Extend, + CR_Grapheme_Link, + CR_Greek, + CR_Gujarati, + CR_Gurmukhi, + CR_Han, + CR_Hangul, + 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_Malayalam, + CR_Mandaic, + CR_Manichaean, + CR_Math, CR_Mc, CR_Me, + 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_Nko, CR_Nl, CR_No, + CR_Noncharacter_Code_Point, + CR_Ogham, + CR_Ol_Chiki, + CR_Old_Hungarian, + CR_Old_Italic, + CR_Old_North_Arabian, + CR_Old_Permic, + CR_Old_Persian, + CR_Old_South_Arabian, + CR_Old_Turkic, + CR_Oriya, + 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_Ps, + CR_Psalter_Pahlavi, + CR_Quotation_Mark, + CR_Radical, + CR_Rejang, + CR_Runic, CR_S, + CR_STerm, + CR_Samaritan, + CR_Saurashtra, CR_Sc, + 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_Sora_Sompeng, + 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_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_Zl, + CR_Zp, + CR_Zs, CR_In_Basic_Latin, CR_In_Latin_1_Supplement, CR_In_Latin_Extended_A, @@ -23000,7 +23000,7 @@ hash (register const char *str, register unsigned int len) 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163 }; - register unsigned int hval = len; + register int hval = len; switch (hval) { @@ -23038,6 +23038,12 @@ hash (register const char *str, register unsigned int len) return hval + asso_values[(unsigned char)str[len - 1]]; } +#ifdef __GNUC__ +__inline +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif +#endif const struct PropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { @@ -23045,55 +23051,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le { {""}, - {"n", 34}, + {"n", 144}, {""}, - {"z", 51}, + {"z", 234}, {""}, {""}, {""}, {""}, - {"zzzz", 237}, + {"zzzz", 225}, - {"mn", 33}, + {"mn", 138}, - {"cn", 20}, + {"cn", 51}, {""}, {""}, {""}, - {"ci", 60}, + {"ci", 38}, - {"m", 30}, + {"m", 125}, {""}, - {"c", 17}, + {"c", 35}, {""}, {""}, {""}, {""}, {""}, {"inmanichaean", 430}, - {"mani", 185}, + {"mani", 129}, - {"mc", 31}, + {"mc", 131}, - {"cc", 18}, + {"cc", 41}, {""}, - {"qaai", 114}, + {"qaai", 94}, {""}, {""}, {""}, {""}, {""}, - {"qaac", 128}, + {"qaac", 54}, {""}, {""}, {""}, {""}, {""}, {""}, {"incham", 373}, {""}, {""}, {""}, {""}, - {"mandaic", 168}, + {"mandaic", 128}, {""}, {""}, - {"sm", 49}, + {"sm", 202}, {""}, - {"sc", 47}, + {"sc", 195}, {""}, {""}, {""}, {""}, - {"cans", 101}, + {"cans", 36}, {""}, {""}, {""}, {""}, {"ascii", 14}, @@ -23104,17 +23110,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"incuneiform", 456}, - {"s", 46}, + {"s", 191}, {"inarmenian", 248}, - {"zs", 54}, + {"zs", 237}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cs", 22}, + {"cs", 55}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"me", 32}, + {"me", 132}, {""}, {""}, {""}, {""}, {"incommonindicnumberforms", 364}, @@ -23128,7 +23134,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inipaextensions", 242}, {""}, {""}, {""}, {""}, - {"initialpunctuation", 43}, + {"initialpunctuation", 183}, {""}, {""}, {""}, {"inancientsymbols", 402}, @@ -23137,13 +23143,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inthaana", 253}, {""}, - {"cf", 19}, + {"cf", 42}, {""}, {"incuneiformnumbersandpunctuation", 457}, {""}, {""}, {""}, - {"mtei", 159}, + {"mtei", 133}, {""}, {"inspecials", 397}, @@ -23155,17 +23161,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inmiscellaneousmathematicalsymbolsa", 323}, {""}, {""}, {""}, - {"lm", 26}, + {"lm", 117}, - {"lina", 183}, + {"lina", 113}, - {"lc", 24}, + {"lc", 108}, {""}, {"inlycian", 404}, {""}, {""}, {""}, {""}, {""}, - {"lana", 151}, + {"lana", 212}, {""}, {"intaixuanjingsymbols", 472}, @@ -23175,14 +23181,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"alnum", 13}, {""}, - {"sterm", 233}, + {"sterm", 192}, {"intaitham", 292}, {"intransportandmapsymbols", 486}, {""}, - {"taile", 120}, + {"taile", 211}, {""}, {"inmalayalam", 266}, @@ -23201,20 +23207,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inmiscellaneoussymbolsandpictographs", 483}, {""}, {""}, - {"sinhala", 92}, + {"sinhala", 200}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"taiviet", 152}, + {"taiviet", 213}, {""}, {""}, - {"ext", 218}, + {"ext", 69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"latn", 75}, + {"latn", 110}, - {"latin", 75}, + {"latin", 110}, - {"ital", 111}, + {"ital", 155}, {"intamil", 263}, {""}, @@ -23222,7 +23228,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inmultani", 446}, {""}, - {"taml", 88}, + {"taml", 215}, {""}, {""}, {""}, {""}, {""}, {""}, {"inrunic", 279}, @@ -23230,17 +23236,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"incarian", 405}, {""}, - {"armn", 78}, + {"armn", 21}, {""}, - {"armi", 160}, + {"armi", 93}, - {"cari", 148}, + {"cari", 37}, {"inlatinextendedc", 331}, {""}, - {"armenian", 78}, + {"armenian", 21}, {"inmyanmar", 271}, @@ -23250,40 +23256,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inlatinextendeda", 240}, {""}, {""}, {""}, - {"carian", 148}, + {"carian", 37}, {""}, {""}, {"intaile", 288}, {""}, {""}, {""}, - {"tale", 120}, + {"tale", 211}, {""}, {""}, - {"arabic", 80}, + {"arabic", 20}, {""}, {""}, - {"l", 23}, + {"l", 107}, - {"nl", 36}, + {"nl", 149}, - {"zl", 52}, + {"zl", 235}, {""}, {"insyriac", 251}, {""}, - {"samr", 155}, + {"samr", 193}, {""}, - {"merc", 170}, + {"merc", 135}, {""}, {"inlinearbideograms", 399}, {""}, {""}, - {"samaritan", 155}, + {"samaritan", 193}, - {"lt", 28}, + {"lt", 121}, {""}, {""}, {"insharada", 443}, @@ -23295,12 +23301,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inruminumeralsymbols", 437}, {""}, {""}, - {"miao", 172}, + {"miao", 137}, {"inlatinextendede", 378}, {""}, {""}, {""}, - {"zinh", 114}, + {"zinh", 94}, {""}, {""}, {""}, {"inahom", 453}, @@ -23308,10 +23314,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"incherokee", 276}, - {"han", 109}, + {"han", 80}, {""}, {""}, - {"hani", 109}, + {"hani", 80}, {"inosmanya", 414}, @@ -23319,94 +23325,94 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cham", 150}, + {"cham", 44}, {""}, {"inmahajani", 442}, - {"osma", 124}, + {"osma", 162}, {""}, {""}, - {"manichaean", 185}, + {"manichaean", 129}, - {"term", 211}, + {"term", 217}, {""}, - {"sinh", 92}, + {"sinh", 200}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cntrl", 3}, {""}, {""}, {""}, {""}, - {"chakma", 169}, + {"chakma", 43}, {"insinhala", 267}, {""}, {""}, {""}, - {"tamil", 88}, + {"tamil", 215}, {"inethiopic", 274}, {""}, {""}, - {"connectorpunctuation", 39}, + {"connectorpunctuation", 177}, - {"shavian", 123}, + {"shavian", 197}, {""}, {""}, {""}, - {"joinc", 207}, + {"joinc", 98}, {"inenclosedalphanumerics", 317}, {""}, {""}, {""}, {""}, {""}, - {"ahex", 214}, + {"ahex", 15}, {"inlatinextendedadditional", 304}, - {"lineara", 183}, + {"lineara", 113}, {""}, {""}, {""}, {""}, {""}, {""}, {"inenclosedcjklettersandmonths", 350}, - {"hex", 213}, + {"hex", 85}, {""}, {""}, - {"thai", 93}, + {"thai", 219}, - {"mahj", 184}, + {"mahj", 126}, {""}, {""}, {""}, - {"math", 55}, + {"math", 130}, {""}, {""}, - {"ll", 25}, + {"ll", 116}, - {"thaa", 82}, + {"thaa", 218}, {""}, - {"hatran", 201}, + {"hatran", 83}, {""}, {""}, {""}, {""}, {""}, {""}, - {"mahajani", 184}, + {"mahajani", 126}, {"insinhalaarchaicnumbers", 444}, {""}, - {"taitham", 151}, + {"taitham", 212}, - {"thaana", 82}, + {"thaana", 218}, {""}, {""}, {""}, {""}, - {"ethi", 99}, + {"ethi", 68}, {"inenclosedalphanumericsupplement", 481}, {""}, {""}, {""}, {""}, - {"meroiticcursive", 170}, + {"meroiticcursive", 135}, {"inideographicdescriptioncharacters", 340}, {""}, {""}, {""}, - {"terminalpunctuation", 211}, + {"terminalpunctuation", 217}, {""}, {""}, {""}, {""}, {""}, {""}, {"inemoticons", 484}, @@ -23415,10 +23421,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"intifinagh", 334}, {""}, - {"asciihexdigit", 214}, + {"asciihexdigit", 15}, {""}, {""}, {""}, {""}, - {"tifinagh", 131}, + {"tifinagh", 221}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -23430,26 +23436,26 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"loe", 230}, + {"loe", 119}, {""}, {""}, {""}, {""}, {""}, {""}, - {"titlecaseletter", 28}, + {"titlecaseletter", 121}, {""}, {""}, - {"inscriptionalparthian", 162}, + {"inscriptionalparthian", 96}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oriya", 87}, + {"oriya", 161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hira", 106}, + {"hira", 86}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"sora", 174}, + {"sora", 205}, - {"mero", 171}, + {"mero", 136}, {""}, {""}, {""}, {""}, {"inarrows", 312}, @@ -23458,7 +23464,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inhiragana", 342}, {""}, {""}, {""}, {""}, {""}, {""}, - {"no", 37}, + {"no", 150}, {"inmahjongtiles", 478}, {""}, {""}, {""}, @@ -23466,45 +23472,45 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"innko", 254}, {""}, {""}, - {"co", 21}, + {"co", 52}, - {"cher", 100}, + {"cher", 50}, {""}, {""}, {"inmro", 462}, {""}, {""}, {""}, {""}, {""}, {""}, - {"common", 74}, + {"common", 53}, - {"cwcm", 65}, + {"cwcm", 46}, {""}, {""}, {""}, {"inmiao", 465}, {""}, {""}, {""}, {""}, - {"inscriptionalpahlavi", 163}, + {"inscriptionalpahlavi", 95}, {""}, {""}, {"inmathematicalalphanumericsymbols", 474}, - {"so", 50}, + {"so", 203}, {""}, - {"hano", 116}, + {"hano", 82}, - {"tirh", 197}, + {"tirh", 222}, {""}, {""}, {""}, {"inhatran", 422}, {"inolchiki", 298}, - {"ahom", 199}, + {"ahom", 16}, {""}, - {"di", 70}, + {"di", 60}, - {"hatr", 201}, + {"hatr", 83}, {""}, {"inogham", 278}, @@ -23516,41 +23522,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inmodi", 451}, {""}, - {"idc", 67}, + {"idc", 90}, - {"mand", 168}, + {"mand", 128}, {""}, {""}, {""}, {"inmandaic", 256}, - {"dia", 217}, + {"dia", 64}, - {"cwcf", 64}, + {"cwcf", 45}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"xidc", 69}, + {"xidc", 231}, {""}, {""}, - {"sind", 196}, + {"sind", 106}, {"newline", 0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"mend", 186}, + {"mend", 134}, {""}, {""}, {""}, - {"newtailue", 129}, + {"newtailue", 147}, {""}, {""}, {"inshorthandformatcontrols", 468}, {""}, {""}, {""}, - {"anatolianhieroglyphs", 200}, + {"anatolianhieroglyphs", 18}, - {"xids", 68}, + {"xids", 232}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ids", 66}, + {"ids", 91}, {""}, {""}, {""}, {""}, {""}, {"innewtailue", 289}, @@ -23561,7 +23567,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"insundanese", 295}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lo", 27}, + {"lo", 118}, {""}, {""}, {""}, {"indominotiles", 479}, @@ -23569,28 +23575,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inlao", 269}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lao", 94}, + {"lao", 109}, - {"laoo", 94}, + {"laoo", 109}, - {"mongolian", 105}, + {"mongolian", 140}, {""}, {""}, - {"cwt", 63}, + {"cwt", 48}, {""}, - {"idst", 224}, + {"idst", 89}, - {"format", 19}, + {"format", 42}, {""}, {""}, - {"lineseparator", 52}, + {"lineseparator", 235}, {""}, {""}, {""}, {""}, {""}, - {"letter", 23}, + {"letter", 107}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"idcontinue", 67}, + {"idcontinue", 90}, {""}, {""}, {"inanatolianhieroglyphs", 460}, @@ -23599,20 +23605,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inlydian", 424}, {""}, - {"pi", 43}, + {"pi", 183}, - {"nchar", 221}, + {"nchar", 151}, {""}, {""}, {""}, {""}, {"inspacingmodifierletters", 243}, - {"oalpha", 215}, + {"oalpha", 163}, {""}, {""}, {"indeseret", 412}, {""}, - {"pc", 39}, + {"pc", 177}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -23621,183 +23627,183 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inphaistosdisc", 403}, - {"joincontrol", 207}, + {"joincontrol", 98}, {"inlowsurrogates", 385}, {""}, - {"mro", 188}, + {"mro", 141}, - {"mroo", 188}, + {"mroo", 141}, {""}, {""}, {""}, - {"xidstart", 68}, + {"xidstart", 232}, {""}, {""}, {""}, {""}, {""}, - {"wara", 198}, + {"wara", 229}, {""}, {""}, {"inwarangciti", 454}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ps", 45}, + {"ps", 185}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"pe", 41}, + {"pe", 179}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cwl", 61}, + {"cwl", 47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incoptic", 332}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"diacritic", 217}, + {"diacritic", 64}, {""}, {""}, - {"pf", 42}, + {"pf", 180}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"space", 9}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hanunoo", 116}, + {"hanunoo", 82}, {""}, {""}, {"incyrillicextendeda", 336}, {""}, {""}, {""}, - {"odi", 227}, + {"odi", 164}, {""}, {""}, {""}, {""}, {""}, - {"modi", 187}, + {"modi", 139}, - {"oidc", 232}, + {"oidc", 166}, {"incopticepactnumbers", 406}, {""}, - {"palm", 191}, + {"palm", 173}, {"insundanesesupplement", 299}, - {"patws", 235}, + {"patws", 175}, {""}, {""}, {""}, {"inolditalic", 407}, {"inlepcha", 297}, - {"shaw", 123}, + {"shaw", 197}, {""}, - {"omath", 212}, + {"omath", 169}, {""}, {""}, {""}, {""}, {""}, {"alpha", 1}, {""}, {""}, {""}, {""}, {""}, - {"oids", 231}, + {"oids", 167}, {""}, {""}, {""}, - {"control", 18}, + {"control", 41}, - {"ideo", 216}, + {"ideo", 92}, - {"lepc", 141}, + {"lepc", 111}, - {"psalterpahlavi", 194}, + {"psalterpahlavi", 186}, - {"dsrt", 113}, + {"dsrt", 62}, {""}, - {"otheridcontinue", 232}, + {"otheridcontinue", 166}, {""}, {""}, {""}, {"inpalmyrene", 420}, - {"decimalnumber", 35}, + {"decimalnumber", 146}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"noncharactercodepoint", 221}, + {"noncharactercodepoint", 151}, - {"idstart", 66}, + {"idstart", 91}, - {"otheralphabetic", 215}, + {"otheralphabetic", 163}, - {"letternumber", 36}, + {"letternumber", 149}, {""}, {""}, {""}, {""}, - {"dash", 208}, + {"dash", 59}, {""}, {""}, - {"xidcontinue", 69}, + {"xidcontinue", 231}, {""}, {""}, {""}, - {"finalpunctuation", 42}, + {"finalpunctuation", 180}, - {"extender", 218}, + {"extender", 69}, {""}, {""}, {""}, - {"siddham", 195}, + {"siddham", 198}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inoldturkic", 435}, {""}, {""}, - {"sharada", 173}, + {"sharada", 196}, {""}, {""}, - {"whitespace", 205}, + {"whitespace", 230}, {""}, {""}, {""}, {""}, {"inmodifiertoneletters", 361}, {""}, - {"radical", 225}, + {"radical", 188}, {""}, - {"canadianaboriginal", 101}, + {"canadianaboriginal", 36}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inethiopicextendeda", 377}, - {"imperialaramaic", 160}, + {"imperialaramaic", 93}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"perm", 193}, + {"perm", 157}, - {"deseret", 113}, + {"deseret", 62}, {""}, {""}, {""}, {""}, - {"casedletter", 24}, + {"casedletter", 108}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inimperialaramaic", 419}, {""}, {""}, - {"otheridstart", 231}, + {"otheridstart", 167}, {""}, {""}, {""}, {""}, - {"prti", 162}, + {"prti", 96}, {""}, {""}, {""}, {""}, {""}, - {"cprt", 125}, + {"cprt", 57}, {""}, {""}, {""}, {""}, {""}, - {"othersymbol", 50}, + {"othersymbol", 203}, {""}, {""}, {""}, - {"coptic", 128}, + {"coptic", 54}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"otherlowercase", 219}, + {"otherlowercase", 168}, - {"phnx", 137}, + {"phnx", 182}, {""}, {""}, {""}, {"inphoenician", 423}, @@ -23808,35 +23814,35 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inlatin1supplement", 239}, {""}, {""}, {""}, - {"xpeo", 133}, + {"xpeo", 158}, {""}, {""}, {""}, {"ininscriptionalparthian", 432}, {"ininscriptionalpahlavi", 433}, - {"other", 17}, + {"other", 35}, - {"privateuse", 21}, + {"privateuse", 52}, {""}, {""}, {""}, {""}, - {"othernumber", 37}, + {"othernumber", 150}, {""}, {""}, {""}, {""}, {"inenclosedideographicsupplement", 482}, {""}, - {"copt", 128}, + {"copt", 54}, {""}, {""}, {""}, {""}, {"print", 7}, {""}, - {"cuneiform", 136}, + {"cuneiform", 56}, - {"olditalic", 111}, + {"olditalic", 155}, - {"xsux", 136}, + {"xsux", 56}, {""}, {""}, {""}, {"inmongolian", 285}, @@ -23844,28 +23850,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inancientgreekmusicalnotation", 471}, - {"sundanese", 140}, + {"sundanese", 206}, {"inoldnortharabian", 429}, {""}, - {"patternsyntax", 236}, + {"patternsyntax", 174}, {""}, {""}, - {"inherited", 114}, + {"inherited", 94}, {"ingrantha", 448}, {"inphoneticextensions", 301}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"saurashtra", 144}, + {"saurashtra", 194}, {""}, {""}, {""}, {""}, {""}, {"inancientgreeknumbers", 401}, {""}, {""}, {""}, {""}, {""}, - {"shrd", 173}, + {"shrd", 196}, {""}, {""}, {""}, {"inoldsoutharabian", 428}, @@ -23874,10 +23880,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inalphabeticpresentationforms", 388}, - {"spaceseparator", 54}, + {"spaceseparator", 237}, {""}, {""}, {""}, {""}, {""}, - {"olower", 219}, + {"olower", 168}, {""}, {"ingeneralpunctuation", 306}, @@ -23885,30 +23891,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inunifiedcanadianaboriginalsyllabics", 277}, {""}, - {"bamum", 157}, + {"bamum", 25}, {""}, {""}, {"inarabic", 250}, {""}, {""}, {""}, - {"phli", 163}, + {"phli", 95}, {"inphoneticextensionssupplement", 302}, {""}, - {"patternwhitespace", 235}, + {"patternwhitespace", 175}, {""}, {"inbasiclatin", 238}, {""}, - {"othermath", 212}, + {"othermath", 169}, - {"idsbinaryoperator", 223}, + {"idsbinaryoperator", 88}, {"inmathematicaloperators", 313}, - {"multani", 202}, + {"multani", 142}, {"ingujarati", 261}, {""}, {""}, {""}, {""}, @@ -23919,113 +23925,113 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"innumberforms", 311}, - {"nd", 35}, + {"nd", 146}, {""}, - {"yi", 110}, + {"yi", 233}, - {"lisu", 156}, + {"lisu", 115}, {""}, {""}, - {"yiii", 110}, + {"yiii", 233}, {""}, {"inpsalterpahlavi", 434}, {""}, {""}, {""}, - {"tagbanwa", 118}, + {"tagbanwa", 210}, {""}, {""}, {""}, {""}, {""}, - {"bass", 177}, + {"bass", 26}, {""}, {""}, {""}, {""}, - {"nbat", 190}, + {"nbat", 145}, {"inbyzantinemusicalsymbols", 469}, {""}, - {"closepunctuation", 41}, + {"closepunctuation", 179}, {""}, - {"tfng", 131}, + {"tfng", 221}, - {"otherletter", 27}, + {"otherletter", 118}, {""}, {""}, {""}, - {"sd", 229}, + {"sd", 204}, {""}, {""}, - {"lowercase", 57}, + {"lowercase", 120}, - {"sidd", 195}, + {"sidd", 198}, {""}, - {"nabataean", 190}, + {"nabataean", 145}, {""}, - {"lepcha", 141}, + {"lepcha", 111}, {"inarabicpresentationformsa", 389}, {""}, - {"modifierletter", 26}, + {"modifierletter", 117}, {"intags", 496}, - {"mult", 202}, + {"mult", 142}, {""}, {""}, {"insiddham", 450}, - {"talu", 129}, + {"talu", 147}, {""}, {""}, {""}, {""}, - {"cased", 59}, + {"cased", 39}, {""}, {"intibetan", 270}, {""}, {""}, {""}, {""}, {""}, {""}, - {"separator", 51}, + {"separator", 234}, {""}, - {"runic", 103}, + {"runic", 190}, {"inmiscellaneousmathematicalsymbolsb", 327}, {""}, {""}, {""}, {""}, - {"linb", 121}, + {"linb", 114}, {"inbraillepatterns", 325}, - {"oldpersian", 133}, + {"oldpersian", 158}, {""}, {"inugaritic", 410}, - {"telu", 89}, + {"telu", 216}, {""}, - {"limb", 119}, + {"limb", 112}, {""}, - {"oldpermic", 193}, + {"oldpermic", 157}, {""}, - {"bali", 135}, + {"bali", 24}, {"inmyanmarextendedb", 372}, - {"tibt", 95}, + {"tibt", 220}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"saur", 144}, + {"saur", 194}, {""}, {""}, {""}, - {"po", 44}, + {"po", 184}, {""}, - {"tibetan", 95}, + {"tibetan", 220}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24034,44 +24040,44 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inbalinese", 294}, - {"elba", 179}, + {"elba", 67}, {""}, {""}, {""}, {""}, - {"bengali", 84}, + {"bengali", 28}, - {"gran", 180}, + {"gran", 73}, {""}, {""}, {""}, - {"phoenician", 137}, + {"phoenician", 182}, {""}, {"ingurmukhi", 260}, {""}, {""}, - {"caseignorable", 60}, + {"caseignorable", 38}, {""}, {""}, {""}, {""}, - {"lyci", 147}, + {"lyci", 123}, {""}, {"inyijinghexagramsymbols", 353}, {""}, - {"mlym", 91}, + {"mlym", 127}, {""}, {""}, {""}, {""}, {""}, {""}, - {"lycian", 147}, + {"lycian", 123}, {""}, {""}, {""}, {""}, - {"elbasan", 179}, + {"elbasan", 67}, {""}, {""}, {""}, {""}, {""}, - {"balinese", 135}, + {"balinese", 24}, - {"narb", 189}, + {"narb", 156}, {""}, - {"brai", 126}, + {"brai", 32}, {""}, {""}, {"insuttonsignwriting", 475}, @@ -24079,30 +24085,30 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"insorasompeng", 440}, - {"malayalam", 91}, + {"malayalam", 127}, {""}, {""}, - {"arab", 80}, + {"arab", 20}, {""}, - {"brahmi", 167}, + {"brahmi", 31}, {""}, {"incountingrodnumerals", 473}, {""}, {""}, {""}, - {"rjng", 146}, + {"rjng", 189}, - {"mong", 105}, + {"mong", 140}, {""}, {""}, {""}, {"incyrillicsupplement", 247}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ogam", 102}, + {"ogam", 152}, {""}, - {"sarb", 161}, + {"sarb", 159}, {"lower", 6}, {""}, @@ -24110,15 +24116,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inrejang", 369}, {""}, {""}, {""}, {""}, {""}, - {"hmng", 181}, + {"hmng", 172}, {""}, {""}, - {"tirhuta", 197}, + {"tirhuta", 222}, - {"hang", 98}, + {"hang", 81}, {""}, {""}, {""}, {""}, - {"wspace", 205}, + {"wspace", 230}, {""}, {""}, {""}, {""}, {"inlatinextendedd", 362}, @@ -24129,52 +24135,52 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"incherokeesupplement", 379}, {""}, - {"mymr", 96}, + {"mymr", 143}, {""}, {""}, {""}, - {"vai", 143}, + {"vai", 227}, - {"vaii", 143}, + {"vaii", 227}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ethiopic", 99}, + {"ethiopic", 68}, {""}, - {"sylotinagri", 132}, + {"sylotinagri", 207}, {""}, {""}, {""}, {""}, - {"myanmar", 96}, + {"myanmar", 143}, {""}, - {"syrc", 81}, + {"syrc", 208}, {""}, {"inbrahmi", 438}, {""}, {""}, {""}, - {"mathsymbol", 49}, + {"mathsymbol", 202}, {""}, - {"runr", 103}, + {"runr", 190}, {""}, {""}, {""}, {""}, {""}, {"inshavian", 413}, - {"gothic", 112}, + {"gothic", 72}, {""}, {""}, {""}, {""}, {""}, - {"syriac", 81}, + {"syriac", 208}, - {"p", 38}, + {"p", 171}, {""}, - {"zp", 53}, + {"zp", 236}, {"induployan", 467}, {""}, - {"vs", 234}, + {"vs", 228}, {""}, {""}, {"ingreekandcoptic", 245}, @@ -24182,15 +24188,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"ingothic", 408}, {""}, {""}, - {"lowercaseletter", 25}, + {"lowercaseletter", 116}, {""}, {""}, {""}, {"inoriya", 262}, {""}, {""}, {""}, {""}, {""}, - {"grext", 71}, + {"grext", 75}, - {"linearb", 121}, + {"linearb", 114}, {"inyiradicals", 356}, {""}, @@ -24202,12 +24208,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"ingeometricshapes", 320}, {""}, - {"java", 158}, + {"java", 97}, {"inblockelements", 319}, {""}, - {"number", 34}, + {"number", 144}, {"incombininghalfmarks", 392}, @@ -24218,21 +24224,21 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inlinearbsyllabary", 398}, {""}, - {"osmanya", 124}, + {"osmanya", 162}, {""}, {""}, {""}, - {"avst", 153}, + {"avst", 23}, {""}, {""}, {""}, {""}, - {"hexdigit", 213}, + {"hexdigit", 85}, {""}, {""}, {""}, {"injavanese", 371}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cyrl", 77}, + {"cyrl", 58}, - {"avestan", 153}, + {"avestan", 23}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24240,10 +24246,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inornamentaldingbats", 485}, - {"tavt", 152}, + {"tavt", 213}, {""}, {""}, {""}, {""}, - {"javanese", 158}, + {"javanese", 97}, {"inethiopicextended", 335}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24258,7 +24264,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inarabicmathematicalalphabeticsymbols", 477}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hangul", 98}, + {"hangul", 81}, {""}, {"insuperscriptsandsubscripts", 307}, @@ -24273,10 +24279,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inoldpersian", 411}, {""}, {""}, - {"geor", 97}, + {"geor", 70}, {""}, - {"otherpunctuation", 44}, + {"otherpunctuation", 184}, {""}, {"inoldpermic", 409}, @@ -24284,10 +24290,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inalchemicalsymbols", 487}, - {"sylo", 132}, + {"sylo", 207}, {""}, - {"hiragana", 106}, + {"hiragana", 86}, {""}, {""}, {"word", 12}, @@ -24299,41 +24305,41 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"insmallformvariants", 394}, {""}, {""}, {""}, {""}, {""}, - {"sund", 140}, + {"sund", 206}, - {"brah", 167}, + {"brah", 31}, {""}, {"insupplementalmathematicaloperators", 328}, - {"glagolitic", 130}, + {"glagolitic", 71}, {""}, {""}, - {"braille", 126}, + {"braille", 32}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unassigned", 20}, + {"unassigned", 51}, - {"sgnw", 204}, + {"sgnw", 199}, {""}, {""}, {""}, - {"plrd", 172}, + {"plrd", 137}, {""}, {""}, {""}, - {"hebr", 79}, + {"hebr", 84}, - {"ogham", 102}, + {"ogham", 152}, {""}, {""}, {""}, {""}, - {"cyrillic", 77}, + {"cyrillic", 58}, {""}, {""}, {""}, - {"orya", 87}, + {"orya", 161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"grantha", 180}, + {"grantha", 73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24349,38 +24355,38 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inhanguljamoextendeda", 370}, {""}, {""}, - {"goth", 112}, + {"goth", 72}, - {"graphemebase", 72}, + {"graphemebase", 74}, {""}, - {"bidic", 206}, + {"bidic", 29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ogrext", 222}, + {"ogrext", 165}, {""}, {""}, {""}, {""}, {""}, {""}, - {"idsb", 223}, + {"idsb", 88}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"invariationselectorssupplement", 497}, - {"assigned", 16}, + {"assigned", 22}, {""}, {""}, {""}, - {"symbol", 46}, + {"symbol", 191}, {""}, {""}, {""}, {"ingreekextended", 305}, {""}, - {"pauc", 192}, + {"pauc", 176}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"meroitichieroglyphs", 171}, + {"meroitichieroglyphs", 136}, {""}, - {"logicalorderexception", 230}, + {"logicalorderexception", 119}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24399,17 +24405,17 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkannada", 265}, {""}, {""}, {""}, - {"kana", 107}, + {"kana", 101}, - {"phagspa", 138}, + {"phagspa", 181}, {""}, {""}, - {"cakm", 169}, + {"cakm", 43}, {"digit", 4}, {""}, {""}, {""}, {""}, - {"softdotted", 229}, + {"softdotted", 204}, {""}, {""}, {""}, {"inchakma", 441}, @@ -24423,13 +24429,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"warangciti", 198}, + {"warangciti", 229}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incjkcompatibilityforms", 393}, {""}, {""}, - {"idstrinaryoperator", 224}, + {"idstrinaryoperator", 89}, {""}, {"incjkcompatibilityideographs", 387}, @@ -24438,55 +24444,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkaithi", 439}, {""}, {""}, {""}, {""}, {""}, - {"takri", 175}, + {"takri", 214}, {""}, {""}, {""}, {""}, {""}, {""}, - {"phlp", 194}, + {"phlp", 186}, - {"mendekikakui", 186}, + {"mendekikakui", 134}, {""}, {"punct", 8}, {""}, {""}, - {"otherdefaultignorablecodepoint", 227}, + {"otherdefaultignorablecodepoint", 164}, {"inkatakana", 343}, {""}, {""}, {""}, {""}, {""}, {""}, {"graph", 5}, - {"lydi", 149}, + {"lydi", 124}, {""}, {""}, {""}, {""}, {""}, - {"pd", 40}, + {"pd", 178}, {""}, {"incjkstrokes", 348}, {""}, {""}, - {"lydian", 149}, + {"lydian", 124}, {""}, {""}, {""}, {""}, - {"sorasompeng", 174}, + {"sorasompeng", 205}, {""}, {"incjkcompatibilityideographssupplement", 495}, {""}, {""}, - {"meeteimayek", 159}, + {"meeteimayek", 133}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"otheruppercase", 220}, + {"otheruppercase", 170}, {""}, {""}, - {"kali", 145}, + {"kali", 102}, {""}, {""}, {"inhanguljamo", 273}, {""}, - {"ideographic", 216}, + {"ideographic", 92}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24498,10 +24504,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"hluw", 200}, + {"hluw", 18}, {""}, {""}, {""}, {""}, - {"patsyn", 236}, + {"patsyn", 174}, {""}, {""}, {"incombiningdiacriticalmarks", 244}, @@ -24512,7 +24518,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkanasupplement", 466}, {""}, - {"deprecated", 228}, + {"deprecated", 61}, {"inverticalforms", 391}, {""}, {""}, {""}, @@ -24526,24 +24532,24 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inbuhid", 282}, {""}, - {"alphabetic", 56}, + {"alphabetic", 17}, {""}, {""}, {""}, - {"oldhungarian", 203}, + {"oldhungarian", 154}, {""}, {""}, - {"mark", 30}, + {"mark", 125}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkharoshthi", 427}, {""}, {""}, {""}, {""}, {""}, - {"deva", 83}, + {"deva", 63}, {"invedicextensions", 300}, {""}, {""}, {""}, {""}, {""}, {""}, - {"devanagari", 83}, + {"devanagari", 63}, {"incombiningdiacriticalmarkssupplement", 303}, {""}, {""}, {""}, @@ -24554,7 +24560,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkhmer", 284}, {""}, {""}, {""}, - {"changeswhencasemapped", 65}, + {"changeswhencasemapped", 46}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24562,53 +24568,53 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"intakri", 452}, {""}, {""}, - {"dep", 228}, + {"dep", 61}, - {"takr", 175}, + {"takr", 214}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"changeswhencasefolded", 64}, + {"changeswhencasefolded", 45}, {""}, - {"kaithi", 165}, + {"kaithi", 99}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"phag", 138}, + {"phag", 181}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inpahawhhmong", 464}, {""}, - {"bidicontrol", 206}, + {"bidicontrol", 29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkhojki", 445}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bamu", 157}, + {"bamu", 25}, {"inbamum", 360}, - {"changeswhentitlecased", 63}, + {"changeswhentitlecased", 48}, {""}, {""}, {"inkhmersymbols", 290}, - {"uideo", 226}, + {"uideo", 224}, - {"lu", 29}, + {"lu", 122}, {""}, {""}, - {"kthi", 165}, + {"kthi", 99}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"limbu", 119}, + {"limbu", 112}, {""}, - {"defaultignorablecodepoint", 70}, + {"defaultignorablecodepoint", 60}, {""}, {""}, {""}, {"inplayingcards", 480}, @@ -24617,10 +24623,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inhebrew", 249}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"modifiersymbol", 48}, + {"modifiersymbol", 201}, {""}, {""}, {""}, {""}, {""}, - {"ugaritic", 122}, + {"ugaritic", 223}, {""}, {""}, {""}, {""}, {"inlisu", 357}, @@ -24631,27 +24637,27 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inprivateusearea", 386}, {""}, {""}, - {"olck", 142}, + {"olck", 153}, {""}, {""}, {""}, {"inbengali", 259}, {""}, {""}, - {"olchiki", 142}, + {"olchiki", 153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"caucasianalbanian", 176}, + {"caucasianalbanian", 40}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oldturkic", 164}, + {"oldturkic", 160}, - {"beng", 84}, + {"beng", 28}, {"intelugu", 264}, {""}, {""}, {""}, {""}, {""}, - {"hyphen", 209}, + {"hyphen", 87}, {""}, {""}, {"inbuginese", 291}, @@ -24661,16 +24667,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cypriot", 125}, + {"cypriot", 57}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inlimbu", 287}, {""}, {""}, - {"graphemeextend", 71}, + {"graphemeextend", 75}, {""}, {""}, - {"tagb", 118}, + {"tagb", 210}, {""}, {""}, {""}, {"incypriotsyllabary", 418}, @@ -24684,20 +24690,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkatakanaphoneticextensions", 349}, - {"glag", 130}, + {"glag", 71}, - {"combiningmark", 30}, + {"combiningmark", 125}, - {"palmyrene", 191}, + {"palmyrene", 173}, {""}, {"khmr", 104}, {""}, {""}, {""}, - {"khar", 134}, + {"khar", 103}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"ugar", 122}, + {"ugar", 223}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inarabicpresentationformsb", 395}, @@ -24706,40 +24712,40 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"insupplementaryprivateuseareaa", 498}, {""}, - {"variationselector", 234}, + {"variationselector", 228}, {""}, {""}, {""}, {""}, - {"nko", 139}, + {"nko", 148}, - {"nkoo", 139}, + {"nkoo", 148}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbamumsupplement", 461}, {""}, {""}, {""}, {""}, {""}, - {"tglg", 115}, + {"tglg", 209}, {""}, - {"any", 15}, + {"any", 19}, - {"enclosingmark", 32}, + {"enclosingmark", 132}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gujr", 86}, + {"gujr", 78}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"changeswhenlowercased", 61}, + {"changeswhenlowercased", 47}, {""}, {""}, {""}, {""}, - {"knda", 90}, + {"knda", 100}, - {"hung", 203}, + {"hung", 154}, - {"gujarati", 86}, + {"gujarati", 78}, {""}, {""}, - {"bopo", 108}, + {"bopo", 30}, {""}, {""}, {""}, {""}, {"inmendekikakui", 476}, @@ -24748,55 +24754,55 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inbopomofo", 344}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"kharoshthi", 134}, + {"kharoshthi", 103}, {""}, - {"kannada", 90}, + {"kannada", 100}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"khoj", 182}, + {"khoj", 105}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"cherokee", 100}, + {"cherokee", 50}, {""}, {""}, {""}, {"inlatinextendedb", 241}, {""}, {""}, {""}, {""}, {""}, - {"dashpunctuation", 40}, + {"dashpunctuation", 178}, {""}, {""}, - {"dupl", 178}, + {"dupl", 65}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inyisyllables", 355}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"georgian", 97}, + {"georgian", 70}, {""}, - {"rejang", 146}, + {"rejang", 189}, {""}, - {"oupper", 220}, + {"oupper", 170}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"aghb", 176}, + {"aghb", 40}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"khmer", 104}, {""}, {""}, - {"grbase", 72}, + {"grbase", 74}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"currencysymbol", 47}, + {"currencysymbol", 195}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24805,16 +24811,16 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"spacingmark", 31}, + {"spacingmark", 131}, {""}, - {"orkh", 164}, + {"orkh", 160}, {""}, {""}, {""}, {""}, {""}, - {"cwu", 62}, + {"cwu", 49}, {""}, - {"hebrew", 79}, + {"hebrew", 84}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24822,13 +24828,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"oldnortharabian", 189}, + {"oldnortharabian", 156}, {""}, {""}, {""}, {""}, {""}, {"incjksymbolsandpunctuation", 341}, {""}, {""}, - {"othergraphemeextend", 222}, + {"othergraphemeextend", 165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24836,15 +24842,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"indevanagariextended", 367}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"tagalog", 115}, + {"tagalog", 209}, {""}, {""}, {""}, {""}, {""}, {""}, - {"surrogate", 22}, + {"surrogate", 55}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bopomofo", 108}, + {"bopomofo", 30}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24855,10 +24861,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"uppercase", 58}, + {"uppercase", 226}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unifiedideograph", 226}, + {"unifiedideograph", 224}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24866,7 +24872,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inpaucinhau", 455}, - {"paucinhau", 192}, + {"paucinhau", 176}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24876,7 +24882,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"nonspacingmark", 33}, + {"nonspacingmark", 138}, {""}, {"inhanguljamoextendedb", 382}, @@ -24884,15 +24890,15 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inhighsurrogates", 383}, - {"punctuation", 38}, + {"punctuation", 171}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"openpunctuation", 45}, + {"openpunctuation", 185}, - {"bassavah", 177}, + {"bassavah", 26}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24917,23 +24923,23 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inmeroiticcursive", 426}, {""}, {""}, - {"signwriting", 204}, + {"signwriting", 199}, {""}, {""}, {"incjkradicalssupplement", 338}, {""}, - {"pahawhhmong", 181}, + {"pahawhhmong", 172}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkayahli", 368}, - {"uppercaseletter", 29}, + {"uppercaseletter", 122}, {""}, - {"batk", 166}, + {"batk", 27}, {""}, {""}, {""}, {""}, {"inbatak", 296}, @@ -24943,10 +24949,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"buhd", 117}, + {"buhd", 34}, {""}, {""}, {""}, {""}, {""}, - {"egyp", 154}, + {"egyp", 66}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24964,7 +24970,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"grek", 76}, + {"grek", 77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24977,7 +24983,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"bugi", 127}, + {"bugi", 33}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -24985,20 +24991,20 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"changeswhenuppercased", 62}, + {"changeswhenuppercased", 49}, {""}, {""}, {""}, - {"paragraphseparator", 53}, + {"paragraphseparator", 236}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"buginese", 127}, + {"buginese", 33}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"guru", 85}, + {"guru", 79}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25006,13 +25012,13 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"telugu", 89}, + {"telugu", 216}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"quotationmark", 210}, + {"quotationmark", 187}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25020,10 +25026,10 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {"inkhudawadi", 447}, {""}, {""}, {""}, {""}, {""}, - {"kayahli", 145}, + {"kayahli", 102}, {""}, - {"oldsoutharabian", 161}, + {"oldsoutharabian", 159}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25044,7 +25050,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"zyyy", 74}, + {"zyyy", 53}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25053,28 +25059,28 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"qmark", 210}, + {"qmark", 187}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"buhid", 117}, + {"buhid", 34}, - {"sk", 48}, + {"sk", 201}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"unknown", 237}, + {"unknown", 225}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"khudawadi", 196}, + {"khudawadi", 106}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"katakana", 107}, + {"katakana", 101}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25097,12 +25103,12 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"duployan", 178}, + {"duployan", 65}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"egyptianhieroglyphs", 154}, + {"egyptianhieroglyphs", 66}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25144,7 +25150,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"khojki", 182}, + {"khojki", 105}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25217,7 +25223,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"batak", 166}, + {"batak", 27}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25238,7 +25244,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"greek", 76}, + {"greek", 77}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25251,7 +25257,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"grlink", 73}, + {"grlink", 76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25266,7 +25272,7 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"gurmukhi", 85}, + {"gurmukhi", 79}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, @@ -25280,14 +25286,14 @@ unicode_lookup_property_name (register const char *str, register unsigned int le {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"graphemelink", 73} + {"graphemelink", 76} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - unsigned int key = hash (str, len); + register int key = hash (str, len); - if (key <= MAX_HASH_VALUE) + if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; diff --git a/src/unicode_property_data_posix.c b/src/unicode_property_data_posix.c index 83aabc6..1cf082b 100644 --- a/src/unicode_property_data_posix.c +++ b/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.0.4 */ +/* Command-line: 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 */ /* Computed positions: -k'1,3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -4879,6 +4879,12 @@ hash (register const char *str, register unsigned int len) return 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 const struct PropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { @@ -4919,9 +4925,9 @@ unicode_lookup_property_name (register const char *str, register unsigned int le if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { - unsigned int key = hash (str, len); + register int key = hash (str, len); - if (key <= MAX_HASH_VALUE) + if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..04918c1 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1,4 @@ +/test_utf8 +/testc +/testcu +/testp diff --git a/test/Makefile.am b/test/Makefile.am index fe48403..2930e7f 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -5,11 +5,13 @@ AM_LDFLAGS = -L$(prefix)/lib AM_CFLAGS = AM_CPPFLAGS = -I../src -I$(includedir) -TESTS = testc testp testcu +TESTS = test_utf8 testc testp testcu -check_PROGRAMS = testc testp testcu +check_PROGRAMS = test_utf8 testc testp testcu -test: testc testp testcu +test: test_utf8 testc testp testcu + @echo "[Oniguruma API, UTF-8 check]" + @./test_utf8 | grep RESULT @echo "[Oniguruma API, ASCII/EUC-JP check]" @./testc | grep RESULT @echo "[POSIX API, ASCII/EUC-JP check]" @@ -17,6 +19,9 @@ test: testc testp testcu @echo "[Oniguruma API, UTF-16 check]" @./testcu | grep RESULT +test_utf8_SOURCES = test_utf8.c +test_utf8_LDADD = $(lib_onig) + testc_SOURCES = testc.c testc_LDADD = $(lib_onig) diff --git a/test/test_utf8.c b/test/test_utf8.c new file mode 100644 index 0000000..31fcfcd --- /dev/null +++ b/test/test_utf8.c @@ -0,0 +1,1066 @@ +/* + * This program was generated by testconv.rb. + */ +#include "config.h" +#ifdef ONIG_ESCAPE_UCHAR_COLLISION +#undef ONIG_ESCAPE_UCHAR_COLLISION +#endif +#include <stdio.h> + +#include "oniguruma.h" + +#ifdef HAVE_STRING_H +# include <string.h> +#else +# include <strings.h> +#endif + +#define SLEN(s) strlen(s) + +static int nsucc = 0; +static int nfail = 0; +static int nerror = 0; + +static FILE* err_file; + +static OnigRegion* region; + +static void xx(char* pattern, char* str, int from, int to, int mem, int not, + int error_no) +{ + int r; + regex_t* reg; + OnigErrorInfo einfo; + + r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), + ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); + if (r) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r, &einfo); + fprintf(err_file, "ERROR: %s /%s/\n", s, pattern); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ %d\n", pattern, r); + nsucc++; + } + else { + fprintf(stdout, "FAIL(ERROR): /%s/ '%s', %d, %d\n", pattern, str, + error_no, r); + nfail++; + } + } + + return ; + } + + r = onig_search(reg, (UChar* )str, (UChar* )(str + SLEN(str)), + (UChar* )str, (UChar* )(str + SLEN(str)), + region, ONIG_OPTION_NONE); + if (r < ONIG_MISMATCH) { + char s[ONIG_MAX_ERROR_MESSAGE_LEN]; + + if (error_no == 0) { + onig_error_code_to_str((UChar* )s, r); + fprintf(err_file, "ERROR: %s\n", s); + nerror++; + } + else { + if (r == error_no) { + fprintf(stdout, "OK(ERROR): /%s/ '%s', %d\n", pattern, str, r); + nsucc++; + } + else { + fprintf(stdout, "FAIL ERROR NO: /%s/ '%s', %d, %d\n", pattern, str, + error_no, r); + nfail++; + } + } + + return ; + } + + if (r == ONIG_MISMATCH) { + if (not) { + fprintf(stdout, "OK(N): /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s'\n", pattern, str); + nfail++; + } + } + else { + if (not) { + fprintf(stdout, "FAIL(N): /%s/ '%s'\n", pattern, str); + nfail++; + } + else { + if (region->beg[mem] == from && region->end[mem] == to) { + fprintf(stdout, "OK: /%s/ '%s'\n", pattern, str); + nsucc++; + } + else { + fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", pattern, str, + from, to, region->beg[mem], region->end[mem]); + nfail++; + } + } + } + onig_free(reg); +} + +static void x2(char* pattern, char* str, int from, int to) +{ + xx(pattern, str, from, to, 0, 0, 0); +} + +static void x3(char* pattern, char* str, int from, int to, int mem) +{ + xx(pattern, str, from, to, mem, 0, 0); +} + +static void n(char* pattern, char* str) +{ + xx(pattern, str, 0, 0, 0, 1, 0); +} + +static void e(char* pattern, char* str, int error_no) +{ + xx(pattern, str, 0, 0, 0, 0, error_no); +} + +extern int main(int argc, char* argv[]) +{ + static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF8 }; + + onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); + + err_file = stdout; + + region = onig_region_new(); + + x2("", "", 0, 0); + x2("^", "", 0, 0); + x2("$", "", 0, 0); + x2("\\G", "", 0, 0); + x2("\\A", "", 0, 0); + x2("\\Z", "", 0, 0); + x2("\\z", "", 0, 0); + x2("^$", "", 0, 0); + x2("\\ca", "\001", 0, 1); + x2("\\C-b", "\002", 0, 1); + x2("\\c\\\\", "\034", 0, 1); + x2("q[\\c\\\\]", "q\034", 0, 2); + x2("", "a", 0, 0); + x2("a", "a", 0, 1); + x2("\\x61", "a", 0, 1); + x2("aa", "aa", 0, 2); + x2("aaa", "aaa", 0, 3); + x2("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 0, 35); + x2("ab", "ab", 0, 2); + x2("b", "ab", 1, 2); + x2("bc", "abc", 1, 3); + x2("(?i:#RET#)", "#INS##RET#", 5, 10); + x2("\\17", "\017", 0, 1); + x2("\\x1f", "\x1f", 0, 1); + x2("a(?#....\\\\JJJJ)b", "ab", 0, 2); + x2("(?x) G (o O(?-x)oO) g L", "GoOoOgLe", 0, 7); + x2(".", "a", 0, 1); + n(".", ""); + x2("..", "ab", 0, 2); + x2("\\w", "e", 0, 1); + n("\\W", "e"); + x2("\\s", " ", 0, 1); + x2("\\S", "b", 0, 1); + x2("\\d", "4", 0, 1); + n("\\D", "4"); + x2("\\b", "z ", 0, 0); + x2("\\b", " z", 1, 1); + x2("\\B", "zz ", 1, 1); + x2("\\B", "z ", 2, 2); + x2("\\B", " z", 0, 0); + x2("[ab]", "b", 0, 1); + n("[ab]", "c"); + x2("[a-z]", "t", 0, 1); + n("[^a]", "a"); + x2("[^a]", "\n", 0, 1); + x2("[]]", "]", 0, 1); + n("[^]]", "]"); + x2("[\\^]+", "0^^1", 1, 3); + x2("[b-]", "b", 0, 1); + x2("[b-]", "-", 0, 1); + x2("[\\w]", "z", 0, 1); + n("[\\w]", " "); + x2("[\\W]", "b$", 1, 2); + x2("[\\d]", "5", 0, 1); + n("[\\d]", "e"); + x2("[\\D]", "t", 0, 1); + n("[\\D]", "3"); + x2("[\\s]", " ", 0, 1); + n("[\\s]", "a"); + x2("[\\S]", "b", 0, 1); + n("[\\S]", " "); + x2("[\\w\\d]", "2", 0, 1); + n("[\\w\\d]", " "); + x2("[[:upper:]]", "B", 0, 1); + x2("[*[:xdigit:]+]", "+", 0, 1); + x2("[*[:xdigit:]+]", "GHIKK-9+*", 6, 7); + x2("[*[:xdigit:]+]", "-@^+", 3, 4); + n("[[:upper]]", "A"); + x2("[[:upper]]", ":", 0, 1); + x2("[\\044-\\047]", "\046", 0, 1); + x2("[\\x5a-\\x5c]", "\x5b", 0, 1); + x2("[\\x6A-\\x6D]", "\x6c", 0, 1); + n("[\\x6A-\\x6D]", "\x6E"); + n("^[0-9A-F]+ 0+ UNDEF ", "75F 00000000 SECT14A notype () External | _rb_apply"); + x2("[\\[]", "[", 0, 1); + x2("[\\]]", "]", 0, 1); + x2("[&]", "&", 0, 1); + x2("[[ab]]", "b", 0, 1); + x2("[[ab]c]", "c", 0, 1); + n("[[^a]]", "a"); + n("[^[a]]", "a"); + x2("[[ab]&&bc]", "b", 0, 1); + n("[[ab]&&bc]", "a"); + n("[[ab]&&bc]", "c"); + x2("[a-z&&b-y&&c-x]", "w", 0, 1); + n("[^a-z&&b-y&&c-x]", "w"); + x2("[[^a&&a]&&a-z]", "b", 0, 1); + n("[[^a&&a]&&a-z]", "a"); + x2("[[^a-z&&bcdef]&&[^c-g]]", "h", 0, 1); + n("[[^a-z&&bcdef]&&[^c-g]]", "c"); + x2("[^[^abc]&&[^cde]]", "c", 0, 1); + x2("[^[^abc]&&[^cde]]", "e", 0, 1); + n("[^[^abc]&&[^cde]]", "f"); + x2("[a-&&-a]", "-", 0, 1); + n("[a\\-&&\\-a]", "&"); + n("\\wabc", " abc"); + x2("a\\Wbc", "a bc", 0, 4); + x2("a.b.c", "aabbc", 0, 5); + x2(".\\wb\\W..c", "abb bcc", 0, 7); + x2("\\s\\wzzz", " zzzz", 0, 5); + x2("aa.b", "aabb", 0, 4); + n(".a", "ab"); + x2(".a", "aa", 0, 2); + x2("^a", "a", 0, 1); + x2("^a$", "a", 0, 1); + x2("^\\w$", "a", 0, 1); + n("^\\w$", " "); + x2("^\\wab$", "zab", 0, 3); + x2("^\\wabcdef$", "zabcdef", 0, 7); + x2("^\\w...def$", "zabcdef", 0, 7); + x2("\\w\\w\\s\\Waaa\\d", "aa aaa4", 0, 8); + x2("\\A\\Z", "", 0, 0); + x2("\\Axyz", "xyz", 0, 3); + x2("xyz\\Z", "xyz", 0, 3); + x2("xyz\\z", "xyz", 0, 3); + x2("a\\Z", "a", 0, 1); + x2("\\Gaz", "az", 0, 2); + n("\\Gz", "bza"); + n("az\\G", "az"); + n("az\\A", "az"); + n("a\\Az", "az"); + x2("\\^\\$", "^$", 0, 2); + x2("^x?y", "xy", 0, 2); + x2("^(x?y)", "xy", 0, 2); + x2("\\w", "_", 0, 1); + n("\\W", "_"); + x2("(?=z)z", "z", 0, 1); + n("(?=z).", "a"); + x2("(?!z)a", "a", 0, 1); + n("(?!z)a", "z"); + x2("(?i:a)", "a", 0, 1); + x2("(?i:a)", "A", 0, 1); + x2("(?i:A)", "a", 0, 1); + n("(?i:A)", "b"); + x2("(?i:[A-Z])", "a", 0, 1); + x2("(?i:[f-m])", "H", 0, 1); + x2("(?i:[f-m])", "h", 0, 1); + n("(?i:[f-m])", "e"); + x2("(?i:[A-c])", "D", 0, 1); + n("(?i:[^a-z])", "A"); + n("(?i:[^a-z])", "a"); + x2("(?i:[!-k])", "Z", 0, 1); + x2("(?i:[!-k])", "7", 0, 1); + x2("(?i:[T-}])", "b", 0, 1); + x2("(?i:[T-}])", "{", 0, 1); + x2("(?i:\\?a)", "?A", 0, 2); + x2("(?i:\\*A)", "*a", 0, 2); + n(".", "\n"); + x2("(?m:.)", "\n", 0, 1); + x2("(?m:a.)", "a\n", 0, 2); + x2("(?m:.b)", "a\nb", 1, 3); + x2(".*abc", "dddabdd\nddabc", 8, 13); + x2("(?m:.*abc)", "dddabddabc", 0, 10); + n("(?i)(?-i)a", "A"); + n("(?i)(?-i:a)", "A"); + x2("a?", "", 0, 0); + x2("a?", "b", 0, 0); + x2("a?", "a", 0, 1); + x2("a*", "", 0, 0); + x2("a*", "a", 0, 1); + x2("a*", "aaa", 0, 3); + x2("a*", "baaaa", 0, 0); + n("a+", ""); + x2("a+", "a", 0, 1); + x2("a+", "aaaa", 0, 4); + x2("a+", "aabbb", 0, 2); + x2("a+", "baaaa", 1, 5); + x2(".?", "", 0, 0); + x2(".?", "f", 0, 1); + x2(".?", "\n", 0, 0); + x2(".*", "", 0, 0); + x2(".*", "abcde", 0, 5); + x2(".+", "z", 0, 1); + x2(".+", "zdswer\n", 0, 6); + x2("(.*)a\\1f", "babfbac", 0, 4); + x2("(.*)a\\1f", "bacbabf", 3, 7); + x2("((.*)a\\2f)", "bacbabf", 3, 7); + x2("(.*)a\\1f", "baczzzzzz\nbazz\nzzzzbabf", 19, 23); + x2("a|b", "a", 0, 1); + x2("a|b", "b", 0, 1); + x2("|a", "a", 0, 0); + x2("(|a)", "a", 0, 0); + x2("ab|bc", "ab", 0, 2); + x2("ab|bc", "bc", 0, 2); + x2("z(?:ab|bc)", "zbc", 0, 3); + x2("a(?:ab|bc)c", "aabc", 0, 4); + x2("ab|(?:ac|az)", "az", 0, 2); + x2("a|b|c", "dc", 1, 2); + x2("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "pqr", 0, 2); + n("a|b|cd|efg|h|ijk|lmn|o|pq|rstuvwx|yz", "mn"); + x2("a|^z", "ba", 1, 2); + x2("a|^z", "za", 0, 1); + x2("a|\\Gz", "bza", 2, 3); + x2("a|\\Gz", "za", 0, 1); + x2("a|\\Az", "bza", 2, 3); + x2("a|\\Az", "za", 0, 1); + x2("a|b\\Z", "ba", 1, 2); + x2("a|b\\Z", "b", 0, 1); + x2("a|b\\z", "ba", 1, 2); + x2("a|b\\z", "b", 0, 1); + x2("\\w|\\s", " ", 0, 1); + n("\\w|\\w", " "); + x2("\\w|%", "%", 0, 1); + x2("\\w|[&$]", "&", 0, 1); + x2("[b-d]|[^e-z]", "a", 0, 1); + x2("(?:a|[c-f])|bz", "dz", 0, 1); + x2("(?:a|[c-f])|bz", "bz", 0, 2); + x2("abc|(?=zz)..f", "zzf", 0, 3); + x2("abc|(?!zz)..f", "abf", 0, 3); + x2("(?=za)..a|(?=zz)..a", "zza", 0, 3); + n("(?>a|abd)c", "abdc"); + x2("(?>abd|a)c", "abdc", 0, 4); + x2("a?|b", "a", 0, 1); + x2("a?|b", "b", 0, 0); + x2("a?|b", "", 0, 0); + x2("a*|b", "aa", 0, 2); + x2("a*|b*", "ba", 0, 0); + x2("a*|b*", "ab", 0, 1); + x2("a+|b*", "", 0, 0); + x2("a+|b*", "bbb", 0, 3); + x2("a+|b*", "abbb", 0, 1); + n("a+|b+", ""); + x2("(a|b)?", "b", 0, 1); + x2("(a|b)*", "ba", 0, 2); + x2("(a|b)+", "bab", 0, 3); + x2("(ab|ca)+", "caabbc", 0, 4); + x2("(ab|ca)+", "aabca", 1, 5); + x2("(ab|ca)+", "abzca", 0, 2); + x2("(a|bab)+", "ababa", 0, 5); + x2("(a|bab)+", "ba", 1, 2); + x2("(a|bab)+", "baaaba", 1, 4); + x2("(?:a|b)(?:a|b)", "ab", 0, 2); + x2("(?:a*|b*)(?:a*|b*)", "aaabbb", 0, 3); + x2("(?:a*|b*)(?:a+|b+)", "aaabbb", 0, 6); + x2("(?:a+|b+){2}", "aaabbb", 0, 6); + x2("h{0,}", "hhhh", 0, 4); + x2("(?:a+|b+){1,2}", "aaabbb", 0, 6); + n("ax{2}*a", "0axxxa1"); + n("a.{0,2}a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXa0"); + n("a.{0,2}?a", "0aXXXXa0"); + x2("^a{2,}?a$", "aaa", 0, 3); + x2("^[a-z]{2,}?$", "aaa", 0, 3); + x2("(?:a+|\\Ab*)cc", "cc", 0, 2); + n("(?:a+|\\Ab*)cc", "abcc"); + x2("(?:^a+|b+)*c", "aabbbabc", 6, 8); + x2("(?:^a+|b+)*c", "aabbbbc", 0, 7); + x2("a|(?i)c", "C", 0, 1); + x2("(?i)c|a", "C", 0, 1); + x2("(?i)c|a", "A", 0, 1); + x2("(?i:c)|a", "C", 0, 1); + n("(?i:c)|a", "A"); + x2("[abc]?", "abc", 0, 1); + x2("[abc]*", "abc", 0, 3); + x2("[^abc]*", "abc", 0, 0); + n("[^abc]+", "abc"); + x2("a?\?", "aaa", 0, 0); + x2("ba?\?b", "bab", 0, 3); + x2("a*?", "aaa", 0, 0); + x2("ba*?", "baa", 0, 1); + x2("ba*?b", "baab", 0, 4); + x2("a+?", "aaa", 0, 1); + x2("ba+?", "baa", 0, 2); + x2("ba+?b", "baab", 0, 4); + x2("(?:a?)?\?", "a", 0, 0); + x2("(?:a?\?)?", "a", 0, 0); + x2("(?:a?)+?", "aaa", 0, 1); + x2("(?:a+)?\?", "aaa", 0, 0); + x2("(?:a+)?\?b", "aaab", 0, 4); + x2("(?:ab)?{2}", "", 0, 0); + x2("(?:ab)?{2}", "ababa", 0, 4); + x2("(?:ab)*{0}", "ababa", 0, 0); + x2("(?:ab){3,}", "abababab", 0, 8); + n("(?:ab){3,}", "abab"); + x2("(?:ab){2,4}", "ababab", 0, 6); + x2("(?:ab){2,4}", "ababababab", 0, 8); + x2("(?:ab){2,4}?", "ababababab", 0, 4); + x2("(?:ab){,}", "ab{,}", 0, 5); + x2("(?:abc)+?{2}", "abcabcabc", 0, 6); + x2("(?:X*)(?i:xa)", "XXXa", 0, 4); + x2("(d+)([^abc]z)", "dddz", 0, 4); + x2("([^abc]*)([^abc]z)", "dddz", 0, 4); + x2("(\\w+)(\\wz)", "dddz", 0, 4); + x3("(a)", "a", 0, 1, 1); + x3("(ab)", "ab", 0, 2, 1); + x2("((ab))", "ab", 0, 2); + x3("((ab))", "ab", 0, 2, 1); + x3("((ab))", "ab", 0, 2, 2); + x3("((((((((((((((((((((ab))))))))))))))))))))", "ab", 0, 2, 20); + x3("(ab)(cd)", "abcd", 0, 2, 1); + x3("(ab)(cd)", "abcd", 2, 4, 2); + x3("()(a)bc(def)ghijk", "abcdefghijk", 3, 6, 3); + x3("(()(a)bc(def)ghijk)", "abcdefghijk", 3, 6, 4); + x2("(^a)", "a", 0, 1); + x3("(a)|(a)", "ba", 1, 2, 1); + x3("(^a)|(a)", "ba", 1, 2, 2); + x3("(a?)", "aaa", 0, 1, 1); + x3("(a*)", "aaa", 0, 3, 1); + x3("(a*)", "", 0, 0, 1); + x3("(a+)", "aaaaaaa", 0, 7, 1); + x3("(a+|b*)", "bbbaa", 0, 3, 1); + x3("(a+|b?)", "bbbaa", 0, 1, 1); + x3("(abc)?", "abc", 0, 3, 1); + x3("(abc)*", "abc", 0, 3, 1); + x3("(abc)+", "abc", 0, 3, 1); + x3("(xyz|abc)+", "abc", 0, 3, 1); + x3("([xyz][abc]|abc)+", "abc", 0, 3, 1); + x3("((?i:abc))", "AbC", 0, 3, 1); + x2("(abc)(?i:\\1)", "abcABC", 0, 6); + x3("((?m:a.c))", "a\nc", 0, 3, 1); + x3("((?=az)a)", "azb", 0, 1, 1); + x3("abc|(.abd)", "zabd", 0, 4, 1); + x2("(?:abc)|(ABC)", "abc", 0, 3); + x3("(?i:(abc))|(zzz)", "ABC", 0, 3, 1); + x3("a*(.)", "aaaaz", 4, 5, 1); + x3("a*?(.)", "aaaaz", 0, 1, 1); + x3("a*?(c)", "aaaac", 4, 5, 1); + x3("[bcd]a*(.)", "caaaaz", 5, 6, 1); + x3("(\\Abb)cc", "bbcc", 0, 2, 1); + n("(\\Abb)cc", "zbbcc"); + x3("(^bb)cc", "bbcc", 0, 2, 1); + n("(^bb)cc", "zbbcc"); + x3("cc(bb$)", "ccbb", 2, 4, 1); + n("cc(bb$)", "ccbbb"); + n("(\\1)", ""); + n("\\1(a)", "aa"); + n("(a(b)\\1)\\2+", "ababb"); + n("(?:(?:\\1|z)(a))+$", "zaa"); + x2("(?:(?:\\1|z)(a))+$", "zaaa", 0, 4); + x2("(a)(?=\\1)", "aa", 0, 1); + n("(a)$|\\1", "az"); + x2("(a)\\1", "aa", 0, 2); + n("(a)\\1", "ab"); + x2("(a?)\\1", "aa", 0, 2); + x2("(a?\?)\\1", "aa", 0, 0); + x2("(a*)\\1", "aaaaa", 0, 4); + x3("(a*)\\1", "aaaaa", 0, 2, 1); + x2("a(b*)\\1", "abbbb", 0, 5); + x2("a(b*)\\1", "ab", 0, 1); + x2("(a*)(b*)\\1\\2", "aaabbaaabb", 0, 10); + x2("(a*)(b*)\\2", "aaabbbb", 0, 7); + x2("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 8); + x3("(((((((a*)b))))))c\\7", "aaabcaaa", 0, 3, 7); + x2("(a)(b)(c)\\2\\1\\3", "abcbac", 0, 6); + x2("([a-d])\\1", "cc", 0, 2); + x2("(\\w\\d\\s)\\1", "f5 f5 ", 0, 6); + n("(\\w\\d\\s)\\1", "f5 f5"); + x2("(who|[a-c]{3})\\1", "whowho", 0, 6); + x2("...(who|[a-c]{3})\\1", "abcwhowho", 0, 9); + x2("(who|[a-c]{3})\\1", "cbccbc", 0, 6); + x2("(^a)\\1", "aa", 0, 2); + n("(^a)\\1", "baa"); + n("(a$)\\1", "aa"); + n("(ab\\Z)\\1", "ab"); + x2("(a*\\Z)\\1", "a", 1, 1); + x2(".(a*\\Z)\\1", "ba", 1, 2); + x3("(.(abc)\\2)", "zabcabc", 0, 7, 1); + x3("(.(..\\d.)\\2)", "z12341234", 0, 9, 1); + x2("((?i:az))\\1", "AzAz", 0, 4); + n("((?i:az))\\1", "Azaz"); + x2("(?<=a)b", "ab", 1, 2); + n("(?<=a)b", "bb"); + x2("(?<=a|b)b", "bb", 1, 2); + x2("(?<=a|bc)b", "bcb", 2, 3); + x2("(?<=a|bc)b", "ab", 1, 2); + x2("(?<=a|bc||defghij|klmnopq|r)z", "rz", 1, 2); + x3("(?<=(abc))d", "abcd", 0, 3, 1); + x2("(?<=(?i:abc))d", "ABCd", 3, 4); + x2("(a)\\g<1>", "aa", 0, 2); + x2("(?<!a)b", "cb", 1, 2); + n("(?<!a)b", "ab"); + x2("(?<!a|bc)b", "bbb", 0, 1); + n("(?<!a|bc)z", "bcz"); + x2("(?<name1>a)", "a", 0, 1); + x2("(?<name_2>ab)\\g<name_2>", "abab", 0, 4); + x2("(?<name_3>.zv.)\\k<name_3>", "azvbazvb", 0, 8); + x2("(?<=\\g<ab>)|-\\zEND (?<ab>XyZ)", "XyZ", 3, 3); + x2("(?<n>|a\\g<n>)+", "", 0, 0); + x2("(?<n>|\\(\\g<n>\\))+$", "()(())", 0, 6); + x3("\\g<n>(?<n>.){0}", "X", 0, 1, 1); + x2("\\g<n>(abc|df(?<n>.YZ){2,8}){0}", "XYZ", 0, 3); + x2("\\A(?<n>(a\\g<n>)|)\\z", "aaaa", 0, 4); + x2("(?<n>|\\g<m>\\g<n>)\\z|\\zEND (?<m>a|(b)\\g<m>)", "bbbbabba", 0, 8); + x2("(?<name1240>\\w+\\sx)a+\\k<name1240>", " fg xaaaaaaaafg x", 2, 18); + x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); + x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); + x2("((?<name1>\\d)|(?<name2>\\w))(\\k<name1>|\\k<name2>)", "ff", 0, 2); + x2("(?:(?<x>)|(?<x>efg))\\k<x>", "", 0, 0); + x2("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefgefg", 3, 9); + n("(?:(?<x>abc)|(?<x>efg))\\k<x>", "abcefg"); + x2("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "a-pyumpyum", 2, 10); + x3("(?:(?<n1>.)|(?<n1>..)|(?<n1>...)|(?<n1>....)|(?<n1>.....)|(?<n1>......)|(?<n1>.......)|(?<n1>........)|(?<n1>.........)|(?<n1>..........)|(?<n1>...........)|(?<n1>............)|(?<n1>.............)|(?<n1>..............))\\k<n1>$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); + x3("(?<name1>)(?<name2>)(?<name3>)(?<name4>)(?<name5>)(?<name6>)(?<name7>)(?<name8>)(?<name9>)(?<name10>)(?<name11>)(?<name12>)(?<name13>)(?<name14>)(?<name15>)(?<name16>aaa)(?<name17>)$", "aaa", 0, 3, 16); + x2("(?<foo>a|\\(\\g<foo>\\))", "a", 0, 1); + x2("(?<foo>a|\\(\\g<foo>\\))", "((((((a))))))", 0, 13); + x3("(?<foo>a|\\(\\g<foo>\\))", "((((((((a))))))))", 0, 17, 1); + x2("\\g<bar>|\\zEND(?<bar>.*abc$)", "abcxxxabc", 0, 9); + x2("\\g<1>|\\zEND(.a.)", "bac", 0, 3); + x3("\\g<_A>\\g<_A>|\\zEND(.a.)(?<_A>.b.)", "xbxyby", 3, 6, 1); + x2("\\A(?:\\g<pon>|\\g<pan>|\\zEND (?<pan>a|c\\g<pon>c)(?<pon>b|d\\g<pan>d))$", "cdcbcdc", 0, 7); + x2("\\A(?<n>|a\\g<m>)\\z|\\zEND (?<m>\\g<n>)", "aaaa", 0, 4); + x2("(?<n>(a|b\\g<n>c){3,5})", "baaaaca", 1, 5); + x2("(?<n>(a|b\\g<n>c){3,5})", "baaaacaaaaa", 0, 10); + x2("(?<pare>\\(([^\\(\\)]++|\\g<pare>)*+\\))", "((a))", 0, 5); + x2("()*\\1", "", 0, 0); + x2("(?:()|())*\\1\\2", "", 0, 0); + x3("(?:\\1a|())*", "a", 0, 0, 1); + x2("x((.)*)*x", "0x1x2x3", 1, 6); + x2("x((.)*)*x(?i:\\1)\\Z", "0x1x2x1X2", 1, 9); + x2("(?:()|()|()|()|()|())*\\2\\5", "", 0, 0); + x2("(?:()|()|()|(x)|()|())*\\2b\\5", "b", 0, 1); + x2("[0-9-a]", "-", 0, 1); // PR#44 + n("[0-9-a]", ":"); // PR#44 + x3("(\\(((?:[^(]|\\g<1>)*)\\))", "(abc)(abc)", 1, 4, 2); // PR#43 + x2("\\o{101}", "A", 0, 1); + x2("(?:\\k'+1'B|(A)C)*", "ACAB", 0, 4); // relative backref by postitive number + x2("\\g<+2>(abc)(ABC){0}", "ABCabc", 0, 6); // relative call by positive number + x2("A\\g'0'|B()", "AAAAB", 0, 5); + x3("(A\\g'0')|B", "AAAAB", 0, 5, 1); + x2("(a*)(?(1))aa", "aaaaa", 0, 5); + x2("(a*)(?(-1))aa", "aaaaa", 0, 5); + x2("(?<name>aaa)(?('name'))aa", "aaaaa", 0, 5); + x2("(a)(?(1)aa|bb)a", "aaaaa", 0, 4); + x2("(?:aa|())(?(<1>)aa|bb)a", "aabba", 0, 5); + x2("(?:aa|())(?('1')aa|bb|cc)a", "aacca", 0, 5); + x3("(a*)(?(1)aa|a)b", "aaab", 0, 1, 1); + n("(a)(?(1)a|b)c", "abc"); + x2("(a)(?(1)|)c", "ac", 0, 2); + n("(?()aaa|bbb)", "bbb"); + x2("(a)(?(1+0)b|c)d", "abd", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "ace", 0, 3); + x2("(?:(?'name'a)|(?'name'b))(?('name')c|d)e", "bce", 0, 3); + x2("\\R", "\r\n", 0, 2); + x2("\\R", "\r", 0, 1); + x2("\\R", "\n", 0, 1); + x2("\\R", "\x0b", 0, 1); + n("\\R\\n", "\r\n"); + x2("\\R", "\xc2\x85", 0, 2); + x2("\\N", "a", 0, 1); + n("\\N", "\n"); + n("(?m:\\N)", "\n"); + n("(?-m:\\N)", "\n"); + x2("\\O", "a", 0, 1); + x2("\\O", "\n", 0, 1); + x2("(?m:\\O)", "\n", 0, 1); + x2("(?-m:\\O)", "\n", 0, 1); + x2("\\K", "a", 0, 0); + x2("a\\K", "a", 1, 1); + x2("a\\Kb", "ab", 1, 2); + x2("(a\\Kb|ac\\Kd)", "acd", 2, 3); + x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10); + + x2("(?~)", "", 0, 0); + x2("(?~)", "A", 0, 0); + x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5); + x2("(?~(?:|aaa))", "aaa", 0, 0); + x2("(?~aaa|)", "aaa", 0, 0); + x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!! + x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5); + x2("(?~\\w+)zzzzz", "zzzzz", 0, 5); + x2("(?~\\w*)zzzzz", "zzzzz", 0, 5); + x2("(?~A.C|B)", "ABC", 0, 0); + x2("(?~XYZ|ABC)a", "ABCa", 1, 4); + x2("(?~XYZ|ABC)a", "aABCa", 0, 1); + x2("<[^>]*>(?~[<>])</[^>]*>", "<a>vvv</a> <b> </b>", 0, 10); + x2("(?~ab)", "ccc\ndab", 0, 5); + x2("(?m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); + + // absent with expr + x2("(?~|78|\\d*)", "123456789", 0, 6); + x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11); + x2("(?~|ab|.*)", "ccc\nddd", 0, 3); + x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5); + x2("(?~|ab|\\O{1,10})", "ab", 1, 2); + n("(?~|ab|\\O{2,10})", "ab"); + x2("(?~|abc|\\O{1,10})", "abc", 1, 3); + x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3); + x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10); + x2("(?~|aaa|)", "aaa", 0, 0); + x2("(?~||a*)", "aaaaaa", 0, 0); + x2("(?~||a*?)", "aaaaaa", 0, 0); + x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2); + x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5); + x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4); + n("(?~|c|a*+)a", "aaaaa"); + x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); + x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); + x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); + x2("(?~|abc|a*?)", "aaaabc", 0, 0); + + // absent range cutter + x2("(?~|abc)a*", "aaaaaabc", 0, 5); + x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); + x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); + x2("(?~|abc)aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?>(?~|abc))aaaa|aaaabc", "aaaabc", 0, 6); + x2("(?~|)a", "a", 0, 1); + n("(?~|a)a", "a"); + x2("(?~|a)(?~|)a", "a", 0, 1); + x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + + x2("", "ã‚", 0, 0); + x2("ã‚", "ã‚", 0, 3); + n("ã„", "ã‚"); + x2("ã†ã†", "ã†ã†", 0, 6); + x2("ã‚ã„ã†", "ã‚ã„ã†", 0, 9); + x2("ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", "ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“ã“", 0, 105); + x2("ã‚", "ã„ã‚", 3, 6); + x2("ã„ã†", "ã‚ã„ã†", 3, 9); + x2("\\xca\\xb8", "\xca\xb8", 0, 2); + x2(".", "ã‚", 0, 3); + x2("..", "ã‹ã", 0, 6); + x2("\\w", "ãŠ", 0, 3); + n("\\W", "ã‚"); + x2("[\\W]", "ã†$", 3, 4); + x2("\\S", "ã", 0, 3); + x2("\\S", "æ¼¢", 0, 3); + x2("\\b", "æ°— ", 0, 0); + x2("\\b", " ã»", 1, 1); + x2("\\B", "ã›ã ", 3, 3); + x2("\\B", "ㆠ", 4, 4); + x2("\\B", " ã„", 0, 0); + x2("[ãŸã¡]", "ã¡", 0, 3); + n("[ãªã«]", "ã¬"); + x2("[ã†-ãŠ]", "ãˆ", 0, 3); + n("[^ã‘]", "ã‘"); + x2("[\\w]", "ã", 0, 3); + n("[\\d]", "ãµ"); + x2("[\\D]", "ã¯", 0, 3); + n("[\\s]", "ã"); + x2("[\\S]", "ã¸", 0, 3); + x2("[\\w\\d]", "よ", 0, 3); + x2("[\\w\\d]", " よ", 3, 6); + n("\\w鬼車", " 鬼車"); + x2("鬼\\W車", "鬼 車", 0, 7); + x2("ã‚.ã„.ã†", "ã‚ã‚ã„ã„ã†", 0, 15); + x2(".\\wã†\\W..ãž", "ãˆã†ã† ã†ãžãž", 0, 19); + x2("\\s\\wã“ã“ã“", " ã“ã“ã“ã“", 0, 13); + x2("ã‚ã‚.ã‘", "ã‚ã‚ã‘ã‘", 0, 12); + n(".ã„", "ã„ãˆ"); + x2(".ãŠ", "ãŠãŠ", 0, 6); + x2("^ã‚", "ã‚", 0, 3); + x2("^ã‚€$", "ã‚€", 0, 3); + x2("^\\w$", "ã«", 0, 3); + x2("^\\wã‹ããã‘ã“$", "zã‹ããã‘ã“", 0, 16); + x2("^\\w...ã†ãˆãŠ$", "zã‚ã„ã†ã†ãˆãŠ", 0, 19); + x2("\\w\\w\\s\\WãŠãŠãŠ\\d", "a㊠ãŠãŠãŠ4", 0, 16); + x2("\\AãŸã¡ã¤", "ãŸã¡ã¤", 0, 9); + x2("ã‚€ã‚ã‚‚\\Z", "ã‚€ã‚ã‚‚", 0, 9); + x2("ã‹ãã\\z", "ã‹ãã", 0, 9); + x2("ã‹ãã\\Z", "ã‹ãã\n", 0, 9); + x2("\\Gã½ã´", "ã½ã´", 0, 6); + n("\\Gãˆ", "ã†ãˆãŠ"); + n("ã¨ã¦\\G", "ã¨ã¦"); + n("ã¾ã¿\\A", "ã¾ã¿"); + n("ã¾\\Aã¿", "ã¾ã¿"); + x2("(?=ã›)ã›", "ã›", 0, 3); + n("(?=ã†).", "ã„"); + x2("(?!ã†)ã‹", "ã‹", 0, 3); + n("(?!ã¨)ã‚", "ã¨"); + x2("(?i:ã‚)", "ã‚", 0, 3); + x2("(?i:ã¶ã¹)", "ã¶ã¹", 0, 6); + n("(?i:ã„)", "ã†"); + x2("(?m:よ.)", "よ\n", 0, 4); + x2("(?m:.ã‚)", "ã¾\nã‚", 3, 7); + x2("ã‚?", "", 0, 0); + x2("変?", "化", 0, 0); + x2("変?", "変", 0, 3); + x2("é‡*", "", 0, 0); + x2("é‡*", "é‡", 0, 3); + x2("å*", "ååå", 0, 9); + x2("馬*", "鹿馬馬馬馬", 0, 0); + n("å±±+", ""); + x2("æ²³+", "æ²³", 0, 3); + x2("時+", "時時時時", 0, 12); + x2("ãˆ+", "ãˆãˆã†ã†ã†", 0, 6); + x2("ã†+", "ãŠã†ã†ã†ã†", 3, 15); + x2(".?", "ãŸ", 0, 3); + x2(".*", "ã±ã´ã·ãº", 0, 12); + x2(".+", "ã‚", 0, 3); + x2(".+", "ã„ã†ãˆã‹\n", 0, 12); + x2("ã‚|ã„", "ã‚", 0, 3); + x2("ã‚|ã„", "ã„", 0, 3); + x2("ã‚ã„|ã„ã†", "ã‚ã„", 0, 6); + x2("ã‚ã„|ã„ã†", "ã„ã†", 0, 6); + x2("ã‚’(?:ã‹ã|ãã)", "ã‚’ã‹ã", 0, 9); + x2("ã‚’(?:ã‹ã|ãã)ã‘", "ã‚’ããã‘", 0, 12); + x2("ã‚ã„|(?:ã‚ã†|ã‚ã‚’)", "ã‚ã‚’", 0, 6); + x2("ã‚|ã„|ã†", "ãˆã†", 3, 6); + x2("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã", "ã—ã™ã›", 0, 9); + n("ã‚|ã„|ã†ãˆ|ãŠã‹ã|ã|ã‘ã“ã•|ã—ã™ã›|ã|ãŸã¡|ã¤ã¦ã¨ãªã«|ã¬ã", "ã™ã›"); + x2("ã‚|^ã‚", "ã¶ã‚", 3, 6); + x2("ã‚|^ã‚’", "ã‚’ã‚", 0, 3); + x2("鬼|\\G車", "ã‘車鬼", 6, 9); + x2("鬼|\\G車", "車鬼", 0, 3); + x2("鬼|\\A車", "b車鬼", 4, 7); + x2("鬼|\\A車", "車", 0, 3); + x2("鬼|車\\Z", "車鬼", 3, 6); + x2("鬼|車\\Z", "車", 0, 3); + x2("鬼|車\\Z", "車\n", 0, 3); + x2("鬼|車\\z", "車鬼", 3, 6); + x2("鬼|車\\z", "車", 0, 3); + x2("\\w|\\s", "ãŠ", 0, 3); + x2("\\w|%", "%ãŠ", 0, 1); + x2("\\w|[&$]", "ã†&", 0, 3); + x2("[ã„-ã‘]", "ã†", 0, 3); + x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‚", 0, 3); + x2("[ã„-ã‘]|[^ã‹-ã“]", "ã‹", 0, 3); + x2("[^ã‚]", "\n", 0, 1); + x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã†ã‚’", 0, 3); + x2("(?:ã‚|[ã†-ã])|ã„ã‚’", "ã„ã‚’", 0, 6); + x2("ã‚ã„ã†|(?=ã‘ã‘)..ã»", "ã‘ã‘ã»", 0, 9); + x2("ã‚ã„ã†|(?!ã‘ã‘)..ã»", "ã‚ã„ã»", 0, 9); + x2("(?=ã‚’ã‚)..ã‚|(?=ã‚’ã‚’)..ã‚", "ã‚’ã‚’ã‚", 0, 9); + x2("(?<=ã‚|ã„ã†)ã„", "ã„ã†ã„", 6, 9); + n("(?>ã‚|ã‚ã„ãˆ)ã†", "ã‚ã„ãˆã†"); + x2("(?>ã‚ã„ãˆ|ã‚)ã†", "ã‚ã„ãˆã†", 0, 12); + x2("ã‚?|ã„", "ã‚", 0, 3); + x2("ã‚?|ã„", "ã„", 0, 0); + x2("ã‚?|ã„", "", 0, 0); + x2("ã‚*|ã„", "ã‚ã‚", 0, 6); + x2("ã‚*|ã„*", "ã„ã‚", 0, 0); + x2("ã‚*|ã„*", "ã‚ã„", 0, 3); + x2("[aã‚]*|ã„*", "aã‚ã„ã„ã„", 0, 4); + x2("ã‚+|ã„*", "", 0, 0); + x2("ã‚+|ã„*", "ã„ã„ã„", 0, 9); + x2("ã‚+|ã„*", "ã‚ã„ã„ã„", 0, 3); + x2("ã‚+|ã„*", "aã‚ã„ã„ã„", 0, 0); + n("ã‚+|ã„+", ""); + x2("(ã‚|ã„)?", "ã„", 0, 3); + x2("(ã‚|ã„)*", "ã„ã‚", 0, 6); + x2("(ã‚|ã„)+", "ã„ã‚ã„", 0, 9); + x2("(ã‚ã„|ã†ã‚)+", "ã†ã‚ã‚ã„ã†ãˆ", 0, 12); + x2("(ã‚ã„|ã†ãˆ)+", "ã†ã‚ã‚ã„ã†ãˆ", 6, 18); + x2("(ã‚ã„|ã†ã‚)+", "ã‚ã‚ã„ã†ã‚", 3, 15); + x2("(ã‚ã„|ã†ã‚)+", "ã‚ã„ã‚’ã†ã‚", 0, 6); + x2("(ã‚ã„|ã†ã‚)+", "$$zzzzã‚ã„ã‚’ã†ã‚", 6, 12); + x2("(ã‚|ã„ã‚ã„)+", "ã‚ã„ã‚ã„ã‚", 0, 15); + x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚", 3, 6); + x2("(ã‚|ã„ã‚ã„)+", "ã„ã‚ã‚ã‚ã„ã‚", 3, 12); + x2("(?:ã‚|ã„)(?:ã‚|ã„)", "ã‚ã„", 0, 6); + x2("(?:ã‚*|ã„*)(?:ã‚*|ã„*)", "ã‚ã‚ã‚ã„ã„ã„", 0, 9); + x2("(?:ã‚*|ã„*)(?:ã‚+|ã„+)", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); + x2("(?:ã‚+|ã„+){2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); + x2("(?:ã‚+|ã„+){1,2}", "ã‚ã‚ã‚ã„ã„ã„", 0, 18); + x2("(?:ã‚+|\\Aã„*)ã†ã†", "ã†ã†", 0, 6); + n("(?:ã‚+|\\Aã„*)ã†ã†", "ã‚ã„ã†ã†"); + x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã‚ã„ã†", 18, 24); + x2("(?:^ã‚+|ã„+)*ã†", "ã‚ã‚ã„ã„ã„ã„ã†", 0, 21); + x2("ã†{0,}", "ã†ã†ã†ã†", 0, 12); + x2("ã‚|(?i)c", "C", 0, 1); + x2("(?i)c|ã‚", "C", 0, 1); + x2("(?i:ã‚)|a", "a", 0, 1); + n("(?i:ã‚)|a", "A"); + x2("[ã‚ã„ã†]?", "ã‚ã„ã†", 0, 3); + x2("[ã‚ã„ã†]*", "ã‚ã„ã†", 0, 9); + x2("[^ã‚ã„ã†]*", "ã‚ã„ã†", 0, 0); + n("[^ã‚ã„ã†]+", "ã‚ã„ã†"); + x2("ã‚?\?", "ã‚ã‚ã‚", 0, 0); + x2("ã„ã‚?\?ã„", "ã„ã‚ã„", 0, 9); + x2("ã‚*?", "ã‚ã‚ã‚", 0, 0); + x2("ã„ã‚*?", "ã„ã‚ã‚", 0, 3); + x2("ã„ã‚*?ã„", "ã„ã‚ã‚ã„", 0, 12); + x2("ã‚+?", "ã‚ã‚ã‚", 0, 3); + x2("ã„ã‚+?", "ã„ã‚ã‚", 0, 6); + x2("ã„ã‚+?ã„", "ã„ã‚ã‚ã„", 0, 12); + x2("(?:天?)?\?", "天", 0, 0); + x2("(?:天?\?)?", "天", 0, 0); + x2("(?:夢?)+?", "夢夢夢", 0, 3); + x2("(?:風+)?\?", "風風風", 0, 0); + x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 12); + x2("(?:ã‚ã„)?{2}", "", 0, 0); + x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 12); + x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0); + x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 24); + n("(?:鬼車){3,}", "鬼車鬼車"); + x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 18); + x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 24); + x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 12); + x2("(?:鬼車){,}", "鬼車{,}", 0, 9); + x2("(?:ã‹ãã)+?{2}", "ã‹ããã‹ããã‹ãã", 0, 18); + x3("(ç«)", "ç«", 0, 3, 1); + x3("(ç«æ°´)", "ç«æ°´", 0, 6, 1); + x2("((時間))", "時間", 0, 6); + x3("((風水))", "風水", 0, 6, 1); + x3("((昨日))", "昨日", 0, 6, 2); + x3("((((((((((((((((((((é‡å))))))))))))))))))))", "é‡å", 0, 6, 20); + x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 0, 6, 1); + x3("(ã‚ã„)(ã†ãˆ)", "ã‚ã„ã†ãˆ", 6, 12, 2); + x3("()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 3); + x3("(()(ã‚)ã„ã†(ãˆãŠã‹)ããã‘ã“)", "ã‚ã„ã†ãˆãŠã‹ããã‘ã“", 9, 18, 4); + x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 15, 27, 2); + x2("(^ã‚)", "ã‚", 0, 3); + x3("(ã‚)|(ã‚)", "ã„ã‚", 3, 6, 1); + x3("(^ã‚)|(ã‚)", "ã„ã‚", 3, 6, 2); + x3("(ã‚?)", "ã‚ã‚ã‚", 0, 3, 1); + x3("(ã¾*)", "ã¾ã¾ã¾", 0, 9, 1); + x3("(ã¨*)", "", 0, 0, 1); + x3("(ã‚‹+)", "ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹ã‚‹", 0, 21, 1); + x3("(ãµ+|ã¸*)", "ãµãµãµã¸ã¸", 0, 9, 1); + x3("(ã‚+|ã„?)", "ã„ã„ã„ã‚ã‚", 0, 3, 1); + x3("(ã‚ã„ã†)?", "ã‚ã„ã†", 0, 9, 1); + x3("(ã‚ã„ã†)*", "ã‚ã„ã†", 0, 9, 1); + x3("(ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1); + x3("(ã•ã—ã™|ã‚ã„ã†)+", "ã‚ã„ã†", 0, 9, 1); + x3("([ãªã«ã¬][ã‹ãã]|ã‹ãã)+", "ã‹ãã", 0, 9, 1); + x3("((?i:ã‚ã„ã†))", "ã‚ã„ã†", 0, 9, 1); + x3("((?m:ã‚.ã†))", "ã‚\nã†", 0, 7, 1); + x3("((?=ã‚ã‚“)ã‚)", "ã‚ã‚“ã„", 0, 3, 1); + x3("ã‚ã„ã†|(.ã‚ã„ãˆ)", "ã‚“ã‚ã„ãˆ", 0, 12, 1); + x3("ã‚*(.)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1); + x3("ã‚*?(.)", "ã‚ã‚ã‚ã‚ã‚“", 0, 3, 1); + x3("ã‚*?(ã‚“)", "ã‚ã‚ã‚ã‚ã‚“", 12, 15, 1); + x3("[ã„ã†ãˆ]ã‚*(.)", "ãˆã‚ã‚ã‚ã‚ã‚“", 15, 18, 1); + x3("(\\Aã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1); + n("(\\Aã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†"); + x3("(^ã„ã„)ã†ã†", "ã„ã„ã†ã†", 0, 6, 1); + n("(^ã„ã„)ã†ã†", "ã‚“ã„ã„ã†ã†"); + x3("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹", 6, 12, 1); + n("ã‚ã‚(ã‚‹ã‚‹$)", "ã‚ã‚ã‚‹ã‚‹ã‚‹"); + x2("(ç„¡)\\1", "ç„¡ç„¡", 0, 6); + n("(ç„¡)\\1", "ç„¡æ¦"); + x2("(空?)\\1", "空空", 0, 6); + x2("(空?\?)\\1", "空空", 0, 0); + x2("(空*)\\1", "空空空空空", 0, 12); + x3("(空*)\\1", "空空空空空", 0, 6, 1); + x2("ã‚(ã„*)\\1", "ã‚ã„ã„ã„ã„", 0, 15); + x2("ã‚(ã„*)\\1", "ã‚ã„", 0, 3); + x2("(ã‚*)(ã„*)\\1\\2", "ã‚ã‚ã‚ã„ã„ã‚ã‚ã‚ã„ã„", 0, 30); + x2("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 0, 21); + x3("(ã‚*)(ã„*)\\2", "ã‚ã‚ã‚ã„ã„ã„ã„", 9, 15, 2); + x2("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 24); + x3("(((((((ã½*)ãº))))))ã´\\7", "ã½ã½ã½ãºã´ã½ã½ã½", 0, 9, 7); + x2("(ã¯)(ã²)(ãµ)\\2\\1\\3", "ã¯ã²ãµã²ã¯ãµ", 0, 18); + x2("([ã-ã‘])\\1", "ãã", 0, 6); + x2("(\\w\\d\\s)\\1", "ã‚5 ã‚5 ", 0, 10); + n("(\\w\\d\\s)\\1", "ã‚5 ã‚5"); + x2("(誰?|[ã‚-ã†]{3})\\1", "誰?誰?", 0, 12); + x2("...(誰?|[ã‚-ã†]{3})\\1", "ã‚aã‚誰?誰?", 0, 19); + x2("(誰?|[ã‚-ã†]{3})\\1", "ã†ã„ã†ã†ã„ã†", 0, 18); + x2("(^ã“)\\1", "ã“ã“", 0, 6); + n("(^ã‚€)\\1", "ã‚むむ"); + n("(ã‚$)\\1", "ã‚ã‚"); + n("(ã‚ã„\\Z)\\1", "ã‚ã„"); + x2("(ã‚*\\Z)\\1", "ã‚", 3, 3); + x2(".(ã‚*\\Z)\\1", "ã„ã‚", 3, 6); + x3("(.(ã‚„ã„ゆ)\\2)", "zã‚„ã„ゆやã„ゆ", 0, 19, 1); + x3("(.(..\\d.)\\2)", "ã‚12341234", 0, 11, 1); + x2("((?i:ã‚vãš))\\1", "ã‚vãšã‚vãš", 0, 14); + x2("(?<æ„šã‹>変|\\(\\g<æ„šã‹>\\))", "((((((変))))))", 0, 15); + x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了 (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|è©è–©\\g<阿_1>è©è–©))$", "è©è–©è‡ªè©è–©è‡ªåœ¨è‡ªè©è–©è‡ªè©è–©", 0, 39); + x2("[[ã²ãµ]]", "ãµ", 0, 3); + x2("[[ã„ãŠã†]ã‹]", "ã‹", 0, 3); + n("[[^ã‚]]", "ã‚"); + n("[^[ã‚]]", "ã‚"); + x2("[^[^ã‚]]", "ã‚", 0, 3); + x2("[[ã‹ãã]&&ãã]", "ã", 0, 3); + n("[[ã‹ãã]&&ãã]", "ã‹"); + n("[[ã‹ãã]&&ãã]", "ã‘"); + x2("[ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘", 0, 3); + n("[^ã‚-ã‚“&&ã„-ã‚’&&ã†-ã‚‘]", "ã‚‘"); + x2("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã„", 0, 3); + n("[[^ã‚&&ã‚]&&ã‚-ã‚“]", "ã‚"); + x2("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã", 0, 3); + n("[[^ã‚-ã‚“&&ã„ã†ãˆãŠ]&&[^ã†-ã‹]]", "ã„"); + x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã†", 0, 3); + x2("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ãˆ", 0, 3); + n("[^[^ã‚ã„ã†]&&[^ã†ãˆãŠ]]", "ã‹"); + x2("[ã‚-&&-ã‚]", "-", 0, 1); + x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]q-w]", "ãˆ", 0, 3); + x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "f", 0, 1); + x2("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "g", 0, 1); + n("[^[^a-zã‚ã„ã†]&&[^bcdefgã†ãˆãŠ]g-w]", "2"); + x2("a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰</b>", 0, 44); + x2(".<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰<\\/b>", "a<b>ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰</b>", 0, 44); + x2("\\n?\\z", "ã“ã‚“ã«ã¡ã¯", 15, 15); + + x2("\\p{Hiragana}", "ã´", 0, 3); + n("\\P{Hiragana}", "ã´"); + + x2("\\p{Word}", "ã“", 0, 3); + n("\\p{^Word}", "ã“"); + x2("[\\p{Word}]", "ã“", 0, 3); + n("[\\p{^Word}]", "ã“"); + n("[^\\p{Word}]", "ã“"); + x2("[^\\p{^Word}]", "ã“", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "ã“", 0, 3); + x2("[^\\p{^Word}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Word}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Word}]&&[\\p{ASCII}]]", "ã“", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Word}]]", "ã“", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Word}]]", "ã“"); + x2("[^[\\p{^Word}]&&[^\\p{ASCII}]]", "ã“", 0, 3); + x2("[^\\x{104a}]", "ã“", 0, 3); + x2("[^\\p{^Word}&&[^\\x{104a}]]", "ã“", 0, 3); + x2("[^[\\p{^Word}]&&[^\\x{104a}]]", "ã“", 0, 3); + n("[^\\p{Word}||[^\\x{104a}]]", "ã“"); + + x2("\\p{^Cntrl}", "ã“", 0, 3); + n("\\p{Cntrl}", "ã“"); + x2("[\\p{^Cntrl}]", "ã“", 0, 3); + n("[\\p{Cntrl}]", "ã“"); + n("[^\\p{^Cntrl}]", "ã“"); + x2("[^\\p{Cntrl}]", "ã“", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "ã“", 0, 3); + x2("[^\\p{Cntrl}&&\\p{ASCII}]", "a", 0, 1); + n("[^\\p{^Cntrl}&&\\p{ASCII}]", "#"); + x2("[^[\\p{^Cntrl}]&&[\\p{ASCII}]]", "ã“", 0, 3); + x2("[^[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“", 0, 3); + n("[[\\p{ASCII}]&&[^\\p{Cntrl}]]", "ã“"); + n("[^[\\p{^Cntrl}]&&[^\\p{ASCII}]]", "ã“"); + n("[^\\p{^Cntrl}&&[^\\x{104a}]]", "ã“"); + n("[^[\\p{^Cntrl}]&&[^\\x{104a}]]", "ã“"); + n("[^\\p{Cntrl}||[^\\x{104a}]]", "ã“"); + + x2("(?-W:\\p{Word})", "ã“", 0, 3); + n("(?W:\\p{Word})", "ã“"); + x2("(?W:\\p{Word})", "k", 0, 1); + x2("(?-W:[[:word:]])", "ã“", 0, 3); + n("(?W:[[:word:]])", "ã“"); + x2("(?-D:\\p{Digit})", "3", 0, 3); + n("(?D:\\p{Digit})", "3"); + x2("(?-S:\\p{Space})", "\xc2\x85", 0, 2); + n("(?S:\\p{Space})", "\xc2\x85"); + x2("(?-P:\\p{Word})", "ã“", 0, 3); + n("(?P:\\p{Word})", "ã“"); + x2("(?-W:\\w)", "ã“", 0, 3); + n("(?W:\\w)", "ã“"); + x2("(?-W:\\w)", "k", 0, 1); + x2("(?W:\\w)", "k", 0, 1); + n("(?-W:\\W)", "ã“"); + x2("(?W:\\W)", "ã“", 0, 3); + n("(?-W:\\W)", "k"); + n("(?W:\\W)", "k"); + + x2("(?-W:\\b)", "ã“", 0, 0); + n("(?W:\\b)", "ã“"); + x2("(?-W:\\b)", "h", 0, 0); + x2("(?W:\\b)", "h", 0, 0); + n("(?-W:\\B)", "ã“"); + x2("(?W:\\B)", "ã“", 0, 0); + n("(?-W:\\B)", "h"); + n("(?W:\\B)", "h"); + x2("(?-P:\\b)", "ã“", 0, 0); + n("(?P:\\b)", "ã“"); + x2("(?-P:\\b)", "h", 0, 0); + x2("(?P:\\b)", "h", 0, 0); + n("(?-P:\\B)", "ã“"); + x2("(?P:\\B)", "ã“", 0, 0); + n("(?-P:\\B)", "h"); + n("(?P:\\B)", "h"); + + x2("\\p{InBasicLatin}", "\x41", 0, 1); + //x2("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA9", 0, 4); + //n("\\p{Grapheme_Cluster_Break_Regional_Indicator}", "\xF0\x9F\x87\xA5"); + + // extended grapheme cluster + + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^.\\y.$", "\x67\xCC\x88"); + x2(".\\Y.", "\x67\xCC\x88", 0, 3); + x2("\\y.\\Y.\\y", "\x67\xCC\x88", 0, 3); + // HANGUL SYLLABLE GAG + x2("\\y.\\y", "\xEA\xB0\x81", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^.\\Y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^.\\y.\\Y.$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2(".\\Y.", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n(".\\y.", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2(".\\Y.", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n(".\\y.", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2(".\\Y.", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n(".\\y.", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + // CR + LF + n("^\\X\\X$", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("^\\X\\X.$", "\x67\xCC\x88"); + x2("^\\X$", "\x67\xCC\x88", 0, 3); + // HANGUL CHOSEONG KIYEOK, HANGUL JUNGSEONG A, HANGUL JONGSEONG KIYEOK + x2("^\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8", 0, 9); + n("^\\X\\X\\X$", "\xE1\x84\x80\xE1\x85\xA1\xE1\x86\xA8"); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("^\\X$", "\xE0\xAE\xA8\xE0\xAE\xBF", 0, 6); + n("\\X\\X", "\xE0\xAE\xA8\xE0\xAE\xBF"); + // THAI CHARACTER KO KAI, THAI CHARACTER SARA AM + x2("^\\X$", "\xE0\xB8\x81\xE0\xB8\xB3", 0, 6); + n("\\X\\X", "\xE0\xB8\x81\xE0\xB8\xB3"); + // DEVANAGARI LETTER SSA, DEVANAGARI VOWEL SIGN I + x2("^\\X$", "\xE0\xA4\xB7\xE0\xA4\xBF", 0, 6); + n("\\X\\X", "\xE0\xA4\xB7\xE0\xA4\xBF"); + + n("^\\X.$", "\xE0\xAE\xA8\xE0\xAE\xBF"); + + + e("(?<abc>\\g<abc>)", "zzzz", ONIGERR_NEVER_ENDING_RECURSION); + e("(?<=(?>abc))", "abc", ONIGERR_INVALID_LOOK_BEHIND_PATTERN); + + fprintf(stdout, + "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", + nsucc, nfail, nerror, onig_version()); + + onig_region_free(region, 1); + onig_end(); + + return ((nfail == 0 && nerror == 0) ? 0 : -1); +} diff --git a/test/testc.c b/test/testc.c index 222c9cd..1a60c8a 100644 --- a/test/testc.c +++ b/test/testc.c @@ -639,6 +639,7 @@ extern int main(int argc, char* argv[]) x2("(?~ab)", "ccc\ndab", 0, 5); x2("(?m:(?~ab))", "ccc\ndab", 0, 5); x2("(?-m:(?~ab))", "ccc\ndab", 0, 5); + x2("(?~abc)xyz", "xyz012345678901234567890123456789abc", 0, 3); // absent with expr x2("(?~|78|\\d*)", "123456789", 0, 6); @@ -661,8 +662,9 @@ extern int main(int argc, char* argv[]) x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0); x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7); x2("(?~|abcd|(?>))", "zzzabcd", 0, 0); + x2("(?~|abc|a*?)", "aaaabc", 0, 0); - // absent range cutter + // absent stopper x2("(?~|abc)a*", "aaaaaabc", 0, 5); x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8); x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0); @@ -672,6 +674,21 @@ extern int main(int argc, char* argv[]) n("(?~|a)a", "a"); x2("(?~|a)(?~|)a", "a", 0, 1); x2("(?~|a).*(?~|)a", "bbbbbbbbbbbbbbbbbbbba", 0, 21); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaapqrabc", 0, 16); + x2("(?~|abc).*(xyz|pqr)(?~|)abc", "aaaaxyzaaaabcpqrabc", 11, 19); + n("\\A(?~|abc).*(xyz|pqrabc)(?~|)abc", "aaaaxyzaaaabcpqrabcabc"); + x2("(?~|a)(?~|)c|ab|a|", "ab", 0, 2); + x2("(?~|a)((?~|)c|ab|a|)", "ab", 0, 0); + x2("(?~|a)((?>(?~|))c|ab|a|)", "ab", 0, 0); + + // extended grapheme cluster + + // CR + LF + n(".\\y\\O", "\x0d\x0a"); + x2(".\\Y\\O", "\x0d\x0a", 0, 2); + n("\\X\\X", "\x0d\x0a"); + x2("^\\X$", "\x0d\x0a", 0, 2); + x2("^\\X\\X\\X$", "ab\x0d\x0a", 0, 4); /* < ifndef IGNORE_EUC_JP > diff --git a/test/testu.c b/test/testu.c index 6ff3a10..d037194 100644 --- a/test/testu.c +++ b/test/testu.c @@ -915,6 +915,46 @@ extern int main(int argc, char* argv[]) x2("\000\\\000R\000\000", "\x20\x29\000\000", 0, 2); n("\000\\\000R\000\000", "\x20\x2a\000\000"); + x2("\000\\\000w\000\000", "\x01\x00\000\000", 0, 2); + n("\000\\\000W\000\000", "\x01\x00\000\000"); + x2("\000\\\000d\000\000", "\x0b\x66\000\000", 0, 2); + n("\000\\\000D\000\000", "\x0b\x66\000\000"); + x2("\000\\\000s\000\000", "\x20\x01\000\000", 0, 2); + n("\000\\\000S\000\000", "\x20\x01\000\000"); + x2("\000\\\000b\000\000", "\x00\x20\x01\x00\000\000", 2, 2); + n("\000\\\000B\000\000", "\x01\x00\000\000"); + x2("\000\\\000B\000\000", "\x00\x20\000\000", 0, 0); + x2("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", + "\x0d\x30\000\000", 0, 2); + n("\000[\000[\000:\000g\000r\000a\000p\000h\000:\000]\000]\000\000", + "\x0a\x00\000\000"); + + // extended grapheme cluster + + // CR + LF + n("\000.\000\\\000y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000"); + x2("\000.\000\\\000Y\000\\\000O\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); + + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("\000^\000.\000\\\000y\000.\000$\000\000", "\x00\x67\x03\x08\000\000"); + x2("\000.\000\\\000Y\000.\000\000", "\x00\x67\x03\x08\000\000", 0, 4); + x2("\000\\\000y\000.\000\\\000Y\000.\000\\\000y\000\000", + "\x00\x67\x03\x08\000\000", 0, 4); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("\000.\000\\\000Y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); + n("\000.\000\\\000y\000.\000\000", "\x0B\xA8\x0B\xBF\000\000"); + + // CR + LF + n("\000\\\000X\000\\\000X\000\000", "\x00\x0d\x00\x0a\000\000"); + x2("\000^\000\\\000X\000$\000\000", "\x00\x0d\x00\x0a\000\000", 0, 4); + // LATIN SMALL LETTER G, COMBINING DIAERESIS + n("\000\\\000X\000\\\000X\000\000", "\x00\x67\x03\x08\000\000"); + x2("\000^\000\\\000X\000$\000\000", "\x00\x67\x03\x08\000\000", 0, 4); + // TAMIL LETTER NA, TAMIL VOWEL SIGN I, + x2("\000^\000\\\000X\000$\000\000", "\x0B\xA8\x0B\xBF\000\000", 0, 4); + n("\000\\\000X\000\\\000X\000\000", "\x0B\xA8\x0B\xBF\000\000"); + + fprintf(stdout, "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", nsucc, nfail, nerror, onig_version()); |