pax_global_header00006660000000000000000000000064132124233520014507gustar00rootroot0000000000000052 comment=75031662de5e1fb225a61da190f40ec9949e21a3 oniguruma-6.7.0/000077500000000000000000000000001321242335200135275ustar00rootroot00000000000000oniguruma-6.7.0/.gitignore000066400000000000000000000003401321242335200155140ustar00rootroot00000000000000Makefile autom4te.cache/ ltmain.sh stamp-h1 configure config.status config.h config.h.in onig-config libtool aclocal.m4 Makefile.in *.o *.obj *.so *.lo *.la *.pc *.log *.dll *.lib *.exe *.exp *~ .libs/ .deps/ /build m4/*.m4 oniguruma-6.7.0/AUTHORS000066400000000000000000000000401321242335200145710ustar00rootroot00000000000000 (K.Kosako) oniguruma-6.7.0/CMakeLists.txt000066400000000000000000000060701321242335200162720ustar00rootroot00000000000000 cmake_minimum_required(VERSION 2.8) # required for exports? cmake_minimum_required (VERSION 2.8.6) project(oniguruma C) set(PACKAGE onig) set(PACKAGE_VERSION "6.6.0") set(USE_COMBINATION_EXPLOSION_CHECK 0) set(USE_CRNL_AS_LINE_TERMINATOR 0) set(VERSION ${PACKAGE_VERSION}) if(MSVC) # Force to always compile with W4 if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") endif() elseif(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") elseif(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") endif() include(cmake/dist.cmake) include(CheckCSourceCompiles) include(CheckIncludeFiles) include(CheckFunctionExists) include(CheckSymbolExists) include(CheckTypeSize) include(TestBigEndian) check_function_exists(alloca HAVE_ALLOCA) check_include_files(alloca.h HAVE_ALLOCA_H) set(HAVE_PROTOTYPES 1) check_include_files(stdarg.h HAVE_STDARG_PROTOTYPES) check_include_files(stdint.h HAVE_STDINT_H) check_include_files(stdlib.h HAVE_STDLIB_H) check_include_files(strings.h HAVE_STRINGS_H) check_include_files(string.h HAVE_STRING_H) check_include_files(sys/times.h HAVE_SYS_TIMES_H) check_include_files(sys/time.h HAVE_SYS_TIME_H) check_include_files(sys/types.h HAVE_SYS_TYPES_H) check_include_files(unistd.h HAVE_UNISTD_H) check_include_files(inttypes.h HAVE_INTTYPES_H) check_type_size(int SIZEOF_INT) check_type_size(long SIZEOF_LONG) check_type_size(short SIZEOF_SHORT) check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/config.h) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/oniguruma.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc @ONLY) include_directories(${CMAKE_CURRENT_BINARY_DIR}) include_directories(${CMAKE_CURRENT_SOURCE_DIR}) set(_SRCS src/regint.h src/regparse.h src/regenc.h src/st.h src/regerror.c src/regparse.c src/regext.c src/regcomp.c src/regexec.c src/reggnu.c src/regenc.c src/regsyntax.c src/regtrav.c src/regversion.c src/st.c src/regposix.c src/regposerr.c src/onig_init.c src/unicode.c src/ascii.c src/utf8.c src/utf16_be.c src/utf16_le.c src/utf32_be.c src/utf32_le.c src/euc_jp.c src/sjis.c src/iso8859_1.c src/iso8859_2.c src/iso8859_3.c src/iso8859_4.c src/iso8859_5.c src/iso8859_6.c src/iso8859_7.c src/iso8859_8.c src/iso8859_9.c src/iso8859_10.c src/iso8859_11.c src/iso8859_13.c src/iso8859_14.c src/iso8859_15.c src/iso8859_16.c src/euc_tw.c src/euc_kr.c src/big5.c src/gb18030.c src/koi8_r.c src/cp1251.c src/euc_jp_prop.c src/sjis_prop.c src/unicode_unfold_key.c src/unicode_fold1_key.c src/unicode_fold2_key.c src/unicode_fold3_key.c) add_library(onig ${_SRCS}) 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.md) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/oniguruma.pc DESTINATION lib/pkgconfig) oniguruma-6.7.0/COPYING000066400000000000000000000026071321242335200145670ustar00rootroot00000000000000Oniguruma LICENSE ----------------- /*- * Copyright (c) 2002-2015 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ oniguruma-6.7.0/ChangeLog000066400000000000000000000000001321242335200152670ustar00rootroot00000000000000oniguruma-6.7.0/HISTORY000066400000000000000000003326731321242335200146310ustar00rootroot00000000000000History 2017/12/11: Version 6.7.0 2017/12/08: add ONIG_SYNTAX_ONIGURUMA (default syntax) 2017/12/05: restructure StackType 2017/11/13: implement subexp calls (?R), (?&name), (?-n), (?+n) for Perl syntax 2017/09/25: use string pool of gperf for Unicode Property lookup function 2017/09/16: fix #70: an empty greedy regex and a word boundary (.*\b) fails 2017/09/13: remove a stack type STK_POS 2017/09/08: fix #69: add a declaration of onig_end() 2017/09/07: fix #68: Compilation failure in out-of-source build 2017/09/03: [new] hexadecimal codepoint \uHHHH 2017/08/30: Version 6.6.1 2017/08/29: fix definition of \X to (?>\O(?:\Y\O)*) 2017/08/28: Version 6.6.0 2017/08/26: fix #67: can't compile with Visual Studio 2005 2017/08/24: rename Absent clear to Range clear 2017/08/21: [new] Extended Grapheme Cluster \X and boundary \y, \Y 2017/08/17: fix: invalid index(ctype) value assigned to Unicode Block properties 2017/08/16: --enable-crnl-as-line-terminator to be deprecated 2017/08/15: [new] ASCII only mode options (?WDSP) 2017/08/14: [new] ONIG_OPTION_XXXX_IS_ASCII options 2017/08/11: disable OP_CCLASS_NODE 2017/08/11: [spec] Absent clear restore previous range value at backtrack 2017/08/07: optimize for simple one char repetition in Absent expression 2017/08/07: fix: invalid impl. for reluctant repetition in Absent expression 2017/08/04: remove compile switch USE_NAMED_GROUP 2017/08/03: Version 6.5.0 2017/07/30: [new] support Absent clear (Absent functions) 2017/07/25: abolish configure option: --enable-combination-explosion-check 2017/07/23: [new] support Absent functions (?~...) 2017/07/14: fix #65: SIZEOF_SIZE_T doesn't exist on certain architecutres 2017/07/11: [new] support \O (true anychar) 2017/07/10: [new] support \K (keep) 2017/07/10: add new node type: NODE_GIMMICK 2017/07/07: [new] support \N (no newline) 2017/07/05: [new] support \R (general newline) 2017/07/05: [new] support if-then-else syntax 2017/07/04: [new] support backref validity checker 2017/07/03: Version 6.4.0 2017/06/30: fix memory leaks 2017/06/29: fix memory leaks 2017/06/28: change encoding of doc/XXXX.ja from EUC-JP to UTF-8 2017/06/28: update doc/RE, and doc/RE.ja 2017/06/26: fix fatal bug of endless repeat check on Windows 2017/06/26: PR #62 : add check for return values 2017/06/23: [new] support call zero (\g{0}) 2017/06/23: [new] support relative call by positive number 2017/06/23: [new] support relative back-reference by positive number 2017/06/15: fix #60 : check value type 2017/06/02: change output format for ONIG_DEBUG_COMPILE and ONIG_DEBUG_MATCH 2017/05/29: Version 6.3.0 2017/05/24: fix #60 : invalid state(CCS_VALUE) in parse_char_class() 2017/05/24: fix #59 : access to invalid address by reg->dmax value 2017/05/23: fix invalid increment of start position in onig_scan() 2017/05/23: fix #58 : access to invalid address by reg->dmin value 2017/05/23: fix #57 : DATA_ENSURE() check must be before data access 2017/05/22: fix #56 : return invalid result for codepoint 0xFFFFFFFF 2017/05/19: [new] add \o{17777777777} syntax. 2017/05/19: fix #55 : Byte value expressed in octal must be smaller than 256 2017/04/08: Version 6.2.0 2017/03/15: fix: size in xmemcpy in stack_double (PR #51) 2017/02/21: Initialize return value 2017/01/03: NEW API: add onig_set_capture_num_limit() 2017/01/03: change MemNumType from short int to int 2016/12/13: fix: [0-9-a] was not allowed as [0-9\-a] 2016/12/13: fix: illegal capture after recursive call 2016/12/13: fix: problem with optimization of \z 2016/12/13: fix: .* optimization 2016/12/13: Set a limit of parser recursion 2016/12/12: fix; that warnings are not shown properly 2016/12/12: fix: /[a-c#]+\W/ =~ "def#" fails when encoding is UTF-16/32 2016/12/12: fix: /[\x{0}-X]/i doesn't match properly when UTF-16/32 is used. 2016/12/11: Version 6.1.3 2016/12/11: fix: Syntax error: redirection unexpected (expecting word) #35 2016/11/07: Version 6.1.2 2016/10/25: allow word bound, word begin and word end in look-behind. 2016/10/19: add ONIG_OPTION_CHECK_VALIDITY_OF_STRING option. 2016/10/16: fix use after free node. 2016/10/10: fix memory leaks after parsing regexp error. 2016/09/22: implement many of is_valid_mbc_string(). 2016/09/02: Version 6.1.1 2016/08/31: fix segfault /W.?{888}{888}{888}\x00/ (found by libfuzzer) 2016/08/31: fix error unmatched close parenthesis for %{(.*?)} #23 2016/08/29: Version 6.1.0 2016/08/28: add contributed/libfuzzer-onig.cpp (thanks hannob) 2016/08/28: update LTVERSION 4:0:0 2016/08/28: NEW API: onigenc_is_valid_mbc_string(). 2016/08/27: add is_valid_mbc_string() member into OnigEncodingType. 2016/08/27: fix out of bounds read. 2016/08/26: fix out of bounds read. 2016/08/25: disable USE_INVALID_CODE_SCHEME. 2016/08/24: fix out of bounds read. 2016/08/23: doc/RE improved. 2016/08/22: add onig_scan() into doc/API. 2016/08/22: fix bug: Out of bounds read in onig_strcpy() #17 2016/08/21: fix bug: infinite loop of backreference and group. 2016/08/21: fix out of bounds read in mbc_to_code() #16 2016/08/18: doc/RE refinements. 2016/08/16: add onig_scan() (NEW API) 2016/08/16: reimplement match stack allocation for case too many repeat and too many captures in regexp. 2016/08/15: number of captures <= 32767 for bytecode representation. 2016/07/17: don't use int_map_backward for thread-safe. 2016/07/04: fix case of enclosed option in look-behind. 2016/07/04: fix ignore case in look-behind. 2016/05/23: fix memory leak in onig_unicode_define_user_property() 2016/05/20: declare variables at the top of scope. (thanks nmaya) 2016/05/09: Version 6.0.0 2016/05/05: add NEW API: onig_unicode_define_user_property() 2016/05/04: update Unicode data to 8.0.0 2016/05/02: change OnigCodePoint type to unsigned int. 2016/05/02: add doc/UNICODE_PROPERTIES. 2016/04/19: add error code ONIGERR_FAIL_TO_INITIALIZE. 2016/04/18: add make_win64/32.bat. 2016/04/18: fix bug of uninitialized regex_t value on error. 2016/04/16: reimplement Unicode case folding. 2016/04/11: update LTVERSION = 3.0.0 2016/04/05: remove all THREAD_ macro. 2016/04/05: add init member into OnigEncoding. (add onig_initialize()) 2016/03/28: remove state member of regex. 2016/03/25: move source files into src/ 2016/03/23: rename configre.in to configure.ac. 2015/11/17: fix memory leak. (thanks pigzang) 2015/07/13: change mail address. 2014/12/12: Version 5.9.6 2013/11/27: [impl] add onigenc_end_unicode(). (thanks Takenori Imoto) 2013/11/27: [impl] add onig_add_end_call(). (thanks Takenori Imoto) 2013/10/21: Version 5.9.5 2013/10/21: [impl] escape warnings for -Wall. (regparse.c) 2013/10/21: [bug] fixes an issue on Windows x64. (thanks Anatoliy Belsky) The issue was discovered in PHP, see https://bugs.php.net/64769. 2013/10/21: [impl] remove unused variable. (regcomp.c) 2013/04/04: Version 5.9.4 2013/04/04: [dev] remove Makefile.in from git repository. 2013/04/04: [dist] add oniguruma.pc.in file. (for pkg-config) (thanks Giulio Paci) 2012/10/26: Version 5.9.3 2012/10/15: remove warnings "test: =: unary operator expected" in ./configure. (thanks t_okazaki) 2012/10/15: fix print_tree ENCLOSE_OPTION bug. (thanks Suraj N. Kurapati) 2010/01/09: Version 5.9.2 2010/01/05: [bug] fix utf16be_code_to_mbc() and utf16le_code_to_mbc(). 2008/09/16: [bug] fix memory leaks in parse_exp(). 2008/08/01: [bug] fix memory leaks. 2008/06/17: [bug] invalid type of argument was used in onig_st_lookup_strend(). 2008/06/16: [bug] invalid CaseFoldMap entry in ISO-8859-5. 0xdf -> 0xde 2008/02/19: [new] add: onig_reg_init(). 2008/02/19: [new] add: onig_free_body(). 2008/02/19: [new] add: onig_new_without_alloc(). 2008/02/19: [API] rename onig_alloc_init() to onig_reg_init(), and argument type changed. 2008/01/31: [impl] move UTF16_IS_SURROGATE_XXX() to regenc.h. 2008/01/30: [bug] (thanks akr) fix euctw_islead(). 2008/01/23: [bug] update enc/koi8.c. 2007/12/22: Version 5.9.1 2007/12/21: [impl] add sprint_byte(). 2007/11/28: [bug] (thanks Andy Armstrong) don't overwrite error code in fetch_name(). 2007/11/12: [bug] utf8 mbc length of code 0xfe, 0xff are not 1, 2007/10/23: [spec] onig_enc_len() takes three arguments. (not used) 2007/10/15: [impl] (thanks Rui Hirokawa) add check HAVE_STDARG_H. 2007/09/07: [API] rename enc_len() to onig_enc_len() in oniguruma.h. 2007/09/04: [API] remove ONIGENC_ERR_XXXXX. 2007/09/03: [API] add error ONIGERR_INVALID_CODE_POINT_VALUE. 2007/09/03: [impl] change error message to "invaid code point value" for ONIGERR_INVALID_WIDE_CHAR_VALUE. 2007/09/03: [bug] xxx_code_to_mbclen() should return ONIGERR_INVALID_WIDE_CHAR_VALUE for invalid code point. ex. /[\x{7fffffff}]/ for ASCII encoding. 2007/08/28: [impl] remove "warning: no previous declaration ...". 2007/08/21: [impl] remove warnings in enc/mktable.c. 2007/08/20: [impl] remove "warning: unused parameter" 2007/08/20: [impl] remove "warning: comparison between signed and unsigned". 2007/08/06: [impl] remove clear_not_flag_cclass(). 2007/08/03: [bug] fix the case of undefined USE_NAMED_GROUP. 2007/08/02: [spec] add backref by number. 2007/08/01: [API] add OnigCtype. 2007/07/27: [spec] add USE_CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS. 2007/07/24: [impl] define PLATFORM_UNALIGNED_WORD_ACCESS. 2007/07/23: [dist] fix doc/FAQ.ja. 2007/07/14: Version 5.9.0 2007/07/13: [bug] add check into onig_reduce_nested_quantifier(). 2007/06/26: [spec] (thanks K.Takata) ONIG_OPTION_SINGLELINE: '$' -> '\Z' (as Perl) 2007/06/26: [dist] (thanks K.Takata) fix documents API and API.ja. 2007/06/19: [impl] remove IS_NOT_NULL() check before onig_node_free(). 2007/06/18: [bug] (thanks KUBO Takehiro) WORD_ALIGNMENT_SIZE must be sizeof(OnigCodePoint). 2007/06/18: [impl] rename CClassNode flags. 2007/06/18: [bug] initialization miss. 2007/06/13: [impl] change node type reference NXXXX. 2007/06/11: [impl] add node type bit. 2007/06/11: [spec] allow anchor in enclosed repeater. /(\z)*/ 2007/06/11: [impl] rename node types. 2007/06/08: [impl] remove OP_SET_OPTION_PUSH and OP_SET_OPTION from match_at(). 2007/06/07: [impl] use xvsnprintf(). 2007/06/06: [tune] don't set qn->next_head_exact for string first byte is zero. 2007/06/06: [impl] remove unused variables. 2007/06/04: Version 5.8.0 2007/06/04: [impl] add #ifndef vsnprintf into regint.h. 2007/05/31: [dist] add configure option '--enable-crnl-as-line-terminator'. 2007/05/30: [dist] add sample/crnl.c. 2007/05/30: [bug] should check USE_CRNL_AS_LINE_TERMINATOR case in onig_search(). 2007/05/29: [impl] move USE_CRNL_AS_LINE_TERMINATOR into regenc.h. 2007/05/29: [impl] should check USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE in forward_search_range() and backward_search_range(). 2007/04/27: Version 5.7.0 2007/04/20: [spec] add config USE_MATCH_RANGE_IS_COMPLETE_RANGE. 2007/04/20: [impl] refactoring in match_at(). 2007/04/12: Version 5.6.1 2007/04/12: [bug] must not use UChar in oniguruma.h. 2007/04/09: [impl] change STATE_CHECK_BUFF_MAX_SIZE value from 0x8000 to 0x4000. [ruby-core:10883] 2007/04/04: Version 5.6.0 (mourning for Hideo Takamatsu) 2007/04/03: [spec] add new notation (?'name'), \k'name', \g'name'. 2007/04/03: [impl] remove unused variable. 2007/03/26: [impl] add 'void' to function declarations. 2007/03/06: Version 5.5.3 2007/03/06: [bug] add #include for bcc32. (In bcc32, alloca() is declared in malloc.h.) 2007/03/02: [bug] invalid optimization for semi-end-buf in onig_search(). ex. /\n\Z/.match("aaaaaaaaaa\n") 2007/03/02: [impl] move range > start check position in end_buf process. 2007/01/09: Version 5.5.2 2007/01/09: [impl] rename USE_EXTERNAL_LOWER_CASE_CONV_TABLE. 2007/01/05: [tune] select_opt_exact_info() didn't work for empty info. ex. /.a/ make MAP info instead of EXACT info. 2006/12/28: [impl] add print_enc_string() for ONIG_DEBUG mode. 2006/12/22: Version 5.5.1 2006/12/22: [impl] rename ADD_PAD_TO_SHORT_BYTE_STRING . to USE_PAD_TO_SHORT_BYTE_CHAR. 2006/12/21: [spec] should check too short multibyte char in parse_exp(). add ADD_PAD_TO_SHORT_BYTE_STRING. ex. /\x00/ in UTF16 should be error. 2006/12/06: Version 5.5.0 2006/12/05: [bug] should add unfold-1 codes from folded code into onigenc_unicode_get_case_fold_codes_by_str(). (ex. "S" -> "s" -> 0x017f) 2006/12/05: [new] add flag ONIGENC_CASE_FOLD_TURKISH_AZERI and USE_UNICODE_CASE_FOLD_TURKISH_AZERI. (disabled in default) 2006/12/04: [spec] remove ONIGENC_CASE_FOLD_FULL. 2006/11/30: [impl] remove unnecessary check in xxx_mbc_case_fold(). 2006/11/29: Version 5.4.0 2006/11/28: [spec] INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR is enabled in default case fold status. 2006/11/28: [spec] rename ONIGENC_CASE_FOLD_MULTI_CHAR to INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR. 2006/11/28: [impl] remove USE_UNICODE_CASE_FOLD_MULTI_CHAR. 2006/11/28: [impl] remove Fold[123]Table and add FoldTable. 2006/11/27: [impl] change tool/unicode_fc.rb to see CaseFolding.txt. 2006/11/24: [bug] should call callback for to[j] <-> to[k] in onigenc_unicode_apply_all_case_fold(). 2006/11/22: Version 5.3.0 2006/11/22: [dist] add index_ja.html. 2006/11/22: [impl] undef ONIG_ESCAPE_UCHAR_COLLISION in regint.h and regenc.h. 2006/11/21: [bug] invalid array access. 2006/11/21: [impl] escape UChar collision from config.h. 2006/11/20: [new] add Hiragana/Katakana properties into Shift_JIS. 2006/11/20: [impl] fix CR_Katakana[] values in EUC-JP. 2006/11/17: [impl] declare strend hash table functions in regint.h. 2006/11/17: [impl] move property list functions to regenc.c. 2006/11/17: [new] add Hiragana/Katakana properties into EUC-JP. 2006/11/15: [impl] remove NOT_RUBY from AM_CFLAGS. 2006/11/14: Version 5.2.0 2006/11/14: [impl] remove program codes for Ruby. 2006/11/14: [impl] reduce program codes for Ruby. 2006/11/10: [bug] 0x24, 0x2b, 0x3c, 0x3d, 0x3e, 0x5e, 0x60, 0x7c, 0x7e should be [:punct:]. 2006/11/09: [new] (thanks Byte) add new character encoding CP1251. 2006/11/08: [impl] rename QUALIFIER -> QUANTIFIER. 2006/11/07: Version 5.1.0 2006/11/07: [dist] remove test.rb, testconv.rb and testconvu.rb. 2006/11/07: [bug] get_case_fold_codes_by_str() should handle 'Ss' and 'sS' combination for ess-tsett. 2006/11/07: [impl] apply_all_case_fold() doesn't need to return all case character combination for multi-character folding. (ONIGENC_CASE_FOLD_MULTI_CHAR) 2006/11/07: [bug] (thanks Byte) add { 0xa3, 0xb3 } to CaseFoldMap[] for KOI8-R. 2006/11/06: [spec] change ONIG_OPTION_FIND_LONGEST to search all of the string range. add USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE. 2006/11/02: [impl] re-implement expand_case_fold_string() for ONIGENC_CASE_FOLD_MULTI_CHAR. 2006/10/30: [impl] add NSTR_DONT_GET_OPTINFO flag. 2006/10/30: [impl] (thanks K.Takata) add THREAD_SYSTEM_INIT and THREAD_SYSTEM_END. 2006/10/30: [bug] (thanks Wolfgang Nadasi-Donner) invalid offset value was used in STATE_CHECK_BUFF_INIT(). 2006/10/27: [tune] speed up ONIGENC_MBC_CASE_FOLD() for UTF-16, UTF-32. (ASCII code check) 2006/10/27: [tune] (thanks Kornelius Kalnbach) String#scan for long string needs long time compare with old Ruby by initialization time for combination explosion check ex. ("test " * 100_000).scan(/\w*\s?/) change STATE_CHECK_BUFF_MAX_SIZE from 0x8000000 to 0x8000. reduce initialization area of state_check_buff. 2006/10/25: [impl] add DISABLE_CASE_FOLD_MULTI_CHAR(). 2006/10/23: Version 5.0.1 2006/10/23: [bug] should fold string in expand_case_fold_string(). 2006/10/23: [bug] (thanks Km) too many case fold/unfold expansion problem. don't expand and set ambig flag to the string node. (except ONIGENC_CASE_FOLD_MULTI_CHAR). 2006/10/23: [bug] (thanks K.Takata) invalid \p{Alnum}, \p{ASCII}, [:alnum:], [:ascii:]. fix OnigEncAsciiCtypeTable[] etc... 2006/10/23: [spec] (thanks K.Takata) add [:word:] POSIX bracket. 2006/10/23: [bug] (thanks K.Takata) \p{Word} doesn't work. 2006/10/20: [impl] don't expand for AMBIG_FLAG string in expand_case_fold_string(). 2006/10/19: Version 5.0.0 2006/10/18: [bug] ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM should be 13. 2006/10/18: [impl] remove unused functions. 2006/10/18: [dist] update documents. 2006/10/18: [API] move OnigMetaCharTableType to OnigSyntaxType. 2006/10/18: [dev] add too/unicode_fc.rb, unicode_pc.rb. 2006/10/18: [dist] remove MANIFEST-RUBY from distribution. 2006/10/18: [bug] return duplicated code in onigenc_unicode_get_case_fold_codes_by_str(). 2006/10/18 [API] remove ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS. 2006/10/18: [dev] add tool/19. 2006/10/18: [dist] remove target 19 from Makefile.am. 2006/10/17: [dist] add enc/unicode.c to target 19 of win32/Makefile. 2006/10/17: [impl] change type for escape VC++ warning. 2006/10/17: [API] rename ONIGENC_CASE_FOLD_NONE to ONIGENC_CASE_FOLD_MIN. 2006/10/17: [dist] remove INSTALL-RUBY from distribution. 2006/10/17: [dist] update LTVERSION to "2:0:0". 2006/10/17: [impl] remove warnings for [make CFLAGS="-g -O2 -Wall"] in the case USE_UNICODE_PROPERTIES and USE_UNICODE_CASE_FOLD_MULTI_CHAR are undefined. 2006/10/17: [impl] remove warnings for [make CFLAGS="-g -O2 -Wall"]. 2006/10/17: [impl] re-implement onigenc_unicode_apply_all_case_fold(). multi-char by case folded char-class is treated as caseless-string (ambig flag on). enable OP_EXACT1_IC and OP_EXACTN_IC. 2006/10/16: [bug] unfold expand for 1->2, 1->3 folding in onigenc_unicode_apply_all_case_fold(). add CaseFoldExpand_12[], CaseFoldExpand_13[]. 2006/10/16: [bug] (thanks Akinori Musha) first argument of rb_warn() should be format string. 2006/10/16: [impl] add msa.state_check_buff_size initialization in onig_search(). 2006/10/16: [spec] re-implement Unicode Caseless Match codes. 2006/10/10: [bug] should call onig_st_free_table() in onig_free_shared_cclass_table(). 2006/10/10: [impl] remove OnigCompCaseFoldCodes. 2006/10/10: [impl] remove onigenc_ascii_is_mbc_ambiguous() and onigenc_mbn_is_mbc_ambiguous(). 2006/10/10: [API] remove is_mbc_ambiguous() member from OnigEncodingType. 2006/10/10: [API] rename onig_set_default_ambig_flag() to onig_set_default_case_fold_flag(), onig_get_default_ambig_flag() to onig_get_default_case_fold_flag(), onig_get_ambig_flag() to onig_get_case_fold_flag(). 2006/10/10: [API] rename ambig_flag to case_fold_flag. 2006/10/10: [API] rename OnigAmbigType to OnigCaseFoldType. 2006/10/10: [impl] rename ONIGENC_IS_CODE_SB_WORD() to IS_CODE_SB_WORD() and move to regint.h. 2006/10/10: [impl] remove OP_WORD_SB and OP_WORD_MB. 2006/10/10: [impl] remove OP_EXACT1_IC and OP_EXACTN_IC from match_at(). 2006/10/10: [impl] should free new_str in expand_case_fold_string(). 2006/10/06: [dist] add test entries to sample/encode.c. 2006/10/06: [impl] re-implement caseless match (case-fold). 2006/10/06: [impl] expand string node by case fold variations. add expand_case_fold_string(). 2006/10/05: [spec] rename OnigCompAmbigCodeItem to OnigCaseFoldCodeItem. 2006/10/05: [spec] add apply_all_case_fold() and get_case_fold_codes_by_str() to OnigEncodingType. 2006/10/05: [spec] remove ambig_flag, get_all_pair_ambig_codes() and get_all_comp_ambig_codes() member from OnigEncodingType. 2006/10/03: [impl] rename mbc_to_normalize() to mbc_case_fold(). 2006/10/03: [spec] rename ONIGENC_AMBIGUOUS_MATCH_XXX to ONIGENC_CASE_FOLD_XXX. rename ONIGENC_CASE_FOLD_COMPOUND to ONIGENC_CASE_FOLD_MULTI_CHAR. 2006/10/02: [impl] remove all ONIG_RUBY_M17N part. 2006/09/29: [impl] initialize state_check_buff_size in STATE_CHECK_BUFF_INIT(). make valgrind happy. 2006/09/22: [impl] remove parse time ctype values (CTYPE_WORD etc...) 2006/09/22: [ruby] enable USE_BACKREF_AT_LEVEL for Ruby mode. 2006/09/22: [spec] (thanks Allan Odgaard) allow upper case letter as the first character of group name. fetch_name() and fetch_name_with_level() 2006/09/21: [impl] convert to ascii for parameter string in onig_error_code_to_str(). add enc member into OnigErrorInfo. 2006/09/21: [dist] update documents for Unicode Property. 2006/09/21: [new] add Unicode Properties. (enc/unicode.c) Any, Assigned, C, Cc, L, Lm, Arabic, Greek etc... 2006/09/21: [impl] add USE_UNICODE_PROPERTIES into regenc.h. 2006/09/21: [impl] remove USE_UNICODE_FULL_RANGE_CTYPE. 2006/09/20: [impl] change ONIGENC_CTYPE_XXXX to sequencial values. add BIT_CTYPE_XXXX bit flags to regenc.h. update XXXX_CtypeTable[] for BIT_CTYPE_ALNUM. 2006/09/19: [memo] move from CVS to Subversion (1.3.2). 2006/09/19: [impl] (thanks KOYAMA Tetsuji) HAVE_STDARG_PROTOTYPES was not defined in Mac OS X by Xcode 2.4(gcc 4.0.1) problem. [php-dev 1312] etc... 2006/09/15: [bug] (thanks Allan Odgaard) out of range access in bm_search_notrev(). (p < s) 2006/09/13: [impl] add ONIGENC_CTYPE_ENC_EXT flag. 2006/09/13: [spec] remove 'Is' prefix check for property name from fetch_char_property_to_ctype(). 2006/09/13: [API] add property_name_to_ctype member to OnigEncodingType. 2006/09/12: [spec][ruby] add ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY and ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT to OnigSyntaxRuby. 2006/09/08: Version 4.4.2 2006/09/08: [test] success in ruby 1.9.0 (2006-08-22) [i686-linux]. 2006/09/08: [bug] (thanks K.Takata) out of range access in bm_search_notrev(). 2006/09/04: [spec] (thanks K.Takata) allow look-behind in negative look-behind. ex. /(? (?:a*){n,n}, (?:a+){n,n} 2006/09/21: [impl] reduce (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} if backreference is not used. 2006/08/17: [bug] should check scan_env.num_call > 0 for backrefed pattern in combination explosion check. 2006/08/17: Version 4.3.0 2006/08/17: [test] success in ruby 1.9.0 (2006-07-28) [i686-linux]. 2006/08/17: [new] add config USE_COMBINATION_EXPLOSION_CHECK. check /(.+)*/, /(\s*foo\s*)*/ etc... [API] add num_comb_exp_check member in regex_t. [dist] change LTVERSION value to "1:0:0" in configure.in. 2006/08/15: [bug] OP_REPEAT_INC process in match_at(). should check repeat-count >= range-upper and range-upper may be infinite. 2006/08/11: Version 4.2.3 2006/08/11: [test] success in ruby 1.9.0 (2006-07-28) [i686-linux]. 2006/08/10: [impl] remove double call in set_qualifier(). 2006/08/10: [impl] remove by_number member in QualifierNode. 2006/08/09: [impl] remove a comma at the end of enum ReduceType for escape warning on Mac OS X. 2006/08/07: [impl] remove warning in regcomp.c. 2006/08/07: [spec] move definition of USE_BACKREF_AT_LEVEL into NOT_RUBY. 2006/08/03: Version 4.2.2 2006/08/03: [test] success in ruby 1.9.0 (2006-07-28) [i686-linux]. 2006/08/03: [bug] (thanks Hiroyuki Yamamoto) segmentation fault in regexec(). (POSIX API) 2006/08/02: [bug] combination of \G in look-ahead/look-behind and other anchors(\A, \z, \Z) cause invalid result. ex. /(?!\G)a\z/.match("ba") start arg. of MATCH_ARG_INIT() should be original arg. of onig_search(). 2006/07/31: Version 4.2.1 2006/07/31: [test] success in ruby 1.9.0 (2006-07-28) [i686-linux]. 2006/07/31: [bug] (thanks Kimura Minoru) re-implement bm_search_notrev(). 2006/07/31: [impl] bm_search_notrev() refactoring. 2006/07/31: [bug] (thanks Kimura Minoru) fix incomplete multibyte string in exact info. 2006/07/31: [impl] (thanks Seiji Masugata) remove cast in va_init_list() for Intel C Compiler. 2006/07/18: Version 4.2.0 2006/07/18: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/07/18: [new] (thanks Wolfgang Nadasi-Donner) add back reference with nest level. \k, \k 2006/07/11: [impl] change long to unsigned long for ONIG_OPTION_XXX and ONIG_SYN_XXX number literals. 2006/07/03: Version 4.1.2 2006/07/03: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/07/03: [spec] (thanks Wolfgang Nadasi-Donner) allow \G in look-behind. add ANCHOR_BEGIN_POSITION flag in setup_tree(). 2006/06/12: [impl] (thanks matz) fix cast from char* to const char* in onig_snprintf_with_pattern(). fix cast from char* to const char* for PopularQStr[] and ReduceQStr[]. 2006/05/22: Version 4.1.1 2006/05/22: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/05/22: [impl] add position string argument to STACK_BASE_CHECK(). 2006/05/22: [bug] (thanks NARUSE, Yui) add STK_NULL_CHECK_END to IS_TO_VOID_TARGET(). ex. core dump in /(?\(([^\(\)]++|\g)*+\))/.match('((a))') 2006/05/15: Version 4.1.0 2006/05/15: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/05/15: [impl] thread atomic changes for onig_end() and onig_free_node_list(). 2006/05/15: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2005/05/15: [dist] update API, API.ja, FAQ, FAQ.ja. 2006/05/15: [spec] remove onig_recompile(), onig_recompile_deluxe() and re_recompile_pattern(). add config USE_RECOMPILE_API. 2006/05/15: [impl] improved thread safe implementation of onig_search() and onig_match(). 2006/05/11: Version 4.0.4 2006/05/11: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/05/11: [bug] (thanks Yuji Kaneda) dead-lock in onig_end(). 2006/05/11: [dist] update index.html. 2006/05/08: Version 4.0.3 2006/05/08: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/05/08: [bug] (thanks Allan Odgaard) Segmentation fault in backward search. ex. /^\t.*$/ 2006/04/18: [dist] update index.html. 2006/04/05: [dist] update index.html. 2006/03/24: [dist] update doc/RE, doc/RE.ja. 2006/03/23: Version 4.0.2 2006/03/22: [test] success in ruby 1.9.0 (2006-03-01) [i686-linux]. 2006/03/22: [impl] add both of ONIG_OPTION_DONT_CAPTURE_GROUP and ONIG_OPTION_CAPTURE_GROUP check. 2006/03/22: [spec] add error code ONIGERR_INVALID_COMBINATION_OF_OPTIONS. 2006/03/22: [impl] remove USE_NAMED_GROUP condition from ONIG_OPTION_DONT_CAPTURE_GROUP check in parse_effect(). 2006/03/22: [new] add API onig_noname_group_capture_is_active(). 2006/03/01: [spec] rename regex object type from regex_t to OnigRegexType. add typedef OnigRegexType regex_t unless ONIG_ESCAPE_REGEX_T_COLLISION is defined. 2006/02/27: [spec] change ONIG_MAX_MULTI_BYTE_RANGES_NUM from 1000 to 10000. (for docdiff program) 2006/02/17: [dist] change COPYING year 2005 -> 2006. 2006/02/07: Version 4.0.1 2006/02/07: [test] success in ruby 1.9.0 (2005-11-28) [i686-linux]. 2006/02/07: [bug] memory leaks in onig_free_shared_cclass_table(). 2006/02/03: [ruby] add -m 0644 option to install command in "make 19". 2006/02/03: [impl] rename ANCHOR_ANYCHAR_STAR_PL to ANCHOR_ANYCHAR_STAR_ML. change from IS_POSIXLINE() to IS_MULTILINE() for ANCHOR_ANYCHAR_START/_ML decision in optimize_node_left(). 2006/01/26: [dist] update index.html for Oniguruma 2.5.3. 2006/01/25: [dist] update URL in index.html. 2006/01/24: Version 4.0.0 2006/01/24: [test] success in ruby 1.9.0 (2005-11-28) [i386-cygwin]. 2006/01/24: [test] success in ruby 1.9.0 (2005-11-28) [i686-linux]. 2006/01/24: [dist] remove warnings from sample/encode.c. 2006/01/24: [dist] change install description in README(.ja). 2006/01/24: [dist] remove re.c.XXX.patch from distribution and CVS. 2006/01/24: [dist] --- support shared library --- use GNU libtool/automake. change configure.in and add Makefile.am, sample/Makefile.am. add AUTHORS file. 2006/01/24: [dist] test programs return exit code -1 when test fails. 2006/01/24: [bug] (thanks KIMURA Koichi) invalid syntax definition in ONIG_SYNTAX_GREP. ONIG_SYN_OP_BRACE_INTERVAL -> ONIG_SYN_OP_ESC_BRACE_INTERVAL 2006/01/23: [dist] fix configure.in for onig-config. 2006/01/19: [new] add new config USE_UNICODE_ALL_LINE_TERMINATORS. (U+000d, U+0085, U+2028, U+2029) 2005/12/29: [dist] change pmatch array size to 25 in testconv.rb. 2005/12/26: [dist] fix name in test.rb. 2005/12/26: [dist] update index.html for 2.5.1. 2005/11/29: Version 3.9.1 2005/11/29: [test] success in ruby 1.9.0 (2005-11-28) [i686-linux]. 2005/11/24: [test] success in ruby 1.9.0 (2005-08-09) [i686-linux]. 2005/11/21: [test] success in ruby 1.9.0 (2005-11-20) [i386-cygwin]. 2005/11/21: [bug] (thanks Allan Odgaard) utf-8 character comments in extended mode leads invalid result. ex. /(?x)(?<= # o\n~) / fix onigenc_unicode_is_code_ctype() and utf8_is_code_ctype(). 2005/11/20: [bug] (thanks MATSUMOTO Satoshi) (thanks Isao Sonobe) begin-line anchor and BM search optimization leads invalid result in UTF-16/32. fix in set_optimize_exact_info(). 2005/11/20: Version 3.9.0 2005/11/20: [test] success in ruby 1.9.0 (2005-11-20) [i386-cygwin]. 2005/11/20: [test] success in ruby 1.9.0 (2005-10-18) [i386-cygwin]. 2005/11/20: [new] add new config USE_CRNL_AS_LINE_TERMINATOR. (!!! NO SUPPORT experimental option !!!) 2005/11/15: [bug] (thanks Allan Odgaard) tok->escape was not cleared in fetch_token_in_cc(). ex. [\s&&[^\n]] makes wrong result. 2005/10/18: [impl] (thanks nobu) change sjis_mbc_enc_len() and node_new_cclass_by_codepoint_range() scope to static. 2005/09/05: [dist] remove link to MultiFind. 2005/09/01: [dist] add link to yagrep. 2005/08/23: Version 3.8.9 2005/08/23: [test] success in ruby 1.9.0 (2005-08-09) [i686-linux]. 2005/08/23: [inst] fix Makefile.in for make ctest/ptest. 2005/08/23: Version 3.8.8 2005/08/23: [test] success in ruby 1.9.0 (2005-08-09) [i686-linux]. 2005/08/23: [impl] split is_code_in_cc() from onig_is_code_in_cc(). 2005/08/23: [impl] should check DATA_ENSURE() at OP_CCLASS_NODE in match_at(). 2005/08/23: [impl] (thanks akr) add ONIG_OPTION_MAXBIT for escape conflict with Ruby's option. 2005/08/22: [impl] escape GCC 4.0 warnings for testc.c. 2005/08/22: [bug] (thanks nobu, matz) [ruby-dev:26840] UTF-8 0xFE, 0xFF handling bug in code_is_in_cclass_node(). abort on /\S*/ =~ "\xfe" 2005/08/22: [impl] escape GCC 4.0 warnings for sample/*.c. 2005/08/22: [impl] fix testconvu.rb. 2005/08/22: [impl] escape GCC 4.0 warnings. 2005/08/09: Version 3.8.7 2005/08/09: [test] success in ruby 1.9.0 (2005-08-09) [i686-linux]. 2005/08/09: [bug] (thanks Allan Odgaard) should not call enc_len() for s == range in onig_search(). 2005/08/01: [dist] add mkdir $prefix, mkdir $exec_prefix to make install. 2005/07/27: Version 3.8.6 2005/07/27: [test] success in ruby 1.9.0 (2005-07-26) [i686-linux]. 2005/07/27: [impl] update onig-config.in. 2005/07/26: [new] (thanks Yen-Ju Chen) add Oniguruma configuration check program. (onig-config.in) 2005/07/14: Version 3.8.5 2005/07/14: [test] success in ruby 1.9.0 (2005-07-14) [i686-linux]. 2005/07/11: [test] success in ruby 1.9.0 (2005-07-04) [i686-linux]. 2005/07/11: [bug] (thanks nobu) [ruby-dev:26505] invalid handling for /\c\x/ and /\C-\x/. fix fetch_escaped_value(). 2005/07/05: [impl] (thanks Alexey Zakhlestine) escape GCC 4.0 warnings. 2005/07/01: Version 3.8.4 2005/07/01: [test] success in ruby 1.9.0 (2005-07-01) [i686-linux]. 2005/06/30: [test] success in ruby 1.9.0 (2005-06-28) [i686-linux]. 2005/06/30: [dist] add GB 18030 test to sample/encode.c. 2005/06/30: [impl] escape warning of gb18030_left_adjust_char_head(). 2005/06/30: [new] (contributed by KUBO Takehiro) add new character encoding ONIG_ENCODING_GB18030. 2005/06/30: [bug] invalid ctype check for multibyte encodings. ("graph", "print") fix onigenc_mb2/4_is_code_ctype(), eucjp_is_code_ctype() and sjis_is_code_ctype(). 2005/06/30: [bug] invalid conversion from code point to mbc in onigenc_mb4_code_to_mbc(). 2005/06/28: Version 3.8.3 2005/06/28: [test] success in ruby 1.9.0 (2005-06-28) [i686-linux]. 2005/06/27: [test] success in ruby 1.9.0 (2005-05-31) [i686-linux]. 2005/06/27: [bug] (thanks Wolfgang Nadasi-Donner) invalid check for never ending recursion. lower zero quantifier should be treated as a non-recursive call alternative. ex. /(?[^()]*(\(\g\)[^()]*)*)/ 2005/06/15: [impl] add divide_ambig_string_node_sub(). 2005/06/15: [dist] add a test to sample/encode.c. 2005/06/10: [new] add ONIG_SYNTAX_PERL_NG. (Perl + named group) 2005/06/01: Version 3.8.2 2005/06/01: [test] success in ruby 1.9.0 (2005-05-31) [i686-linux]. 2005/05/31: [dist] add doc/FAQ and doc/FAQ.ja. 2005/05/31: [impl] minor change in node_new(). 2005/05/30: [test] success in ruby 1.9.0 (2005-05-11) [i686-linux]. 2005/05/30: [bug] (thanks Allan Odgaard) FreeNodeList null check should be on thread-atomic in node_new(). 2005/05/11: Version 3.8.1 2005/05/11: [test] success in ruby 1.9.0 (2005-05-11) [i386-mswin32]. 2005/05/11: [dist] update win32/Makefile (make 19). 2005/05/11: [test] success in ruby 1.9.0 (2005-05-11) [i686-linux]. 2005/05/06: [test] success in ruby 1.9.0 (2005-05-06) [i686-linux]. 2005/05/06: [impl] (thanks nobu) [ruby-core:4815] add #ifdef USE_VARIABLE_META_CHARS to goto label. 2005/04/25: [test] success in ruby 1.9.0 (2005-04-25) [i686-linux]. 2005/04/25: [impl] change DEFAULT_WARN_FUNCTION and DEFAULT_VERB_WARN_FUNCTION to onig_rb_warn() and onig_rb_warning(). 2005/04/15: Version 3.8.0 2005/04/15: [test] success in ruby 1.9.0 (2005-04-14) [i686-linux]. 2005/04/01: [test] success in ruby 1.9.0 (2005-03-24) [i686-linux]. 2005/04/01: [impl] (thanks Joe Orton) (thanks Moriyoshi Koizumi) many const-ification to many *.[ch] files. 2005/03/25: Version 3.7.2 2005/03/25: [test] success in ruby 1.9.0 (2005-03-24) [i686-linux]. 2005/03/23: [test] success in ruby 1.9.0 (2005-03-20) [i686-linux]. 2005/03/23: [test] success in ruby 1.9.0 (2005-03-08) [i686-linux]. 2005/03/23: [new] add ONIG_SYNTAX_ASIS. 2005/03/23: [new] add ONIG_SYN_OP2_INEFFECTIVE_ESCAPE. 2005/03/09: [spec] rename MBCTYPE_XXX to RE_MBCTYPE_XXX. (GNU API) 2005/03/08: [test] success in ruby 1.9.0 (2005-03-08) [i686-linux]. 2005/03/08: [impl] (thanks matz) [ruby-dev:25783] should not allocate memory for key data in st.c. move st_*_strend() functions from st.c. fixed some potential memory leaks. (imported from Ruby 1.9 2005-03-08) 2005/03/07: Version 3.7.1 2005/03/07: [test] success in ruby 1.9.0 (2005-03-07) [i686-linux]. 2005/03/07: [impl] (thanks Rui Hirokawa) add ONIG_ESCAPE_UCHAR_COLLISION. rename UChar to OnigUChar in oniguruma.h. 2005/03/07: [impl] remove declarations for Ruby in oniggnu.h. 2005/03/05: [bug] ANCHOR_ANYCHAR_STAR didn't work in onig_search(). 2005/03/01: [dist] remove oniggnu.h from MANIFEST-RUBY. remove oniggnu.h from make 19. 2005/03/01: [bug] (thanks matz) [ruby-dev:25778] uninitialized member (OptEnv.backrefed_status) was used. 2005/02/19: Version 3.7.0 2005/02/19: [test] success in ruby 1.9.0 (2005-02-19) [i386-cygwin]. 2005/02/19: [new] (thanks Minero Aoki) add onig_region_set(). 2005/02/19: [API] change onig_region_init() to extern. 2005/02/19: [dist] remove reggnu.c from MANIFEST-RUBY. remove reggnu.c from make 19. 2005/02/19: [dist] update doc/API and doc/API.ja. 2005/02/19: [test] success in ruby 1.9.0 (2005-02-19) [i386-cygwin]. 2005/02/19: [impl] (thanks Alexey Zakhlestine) change UChar* to const UChar* in oniguruma.h, regenc.h and regparse.h. 2005/02/13: [impl] change UChar* to const UChar* in oniguruma.h and onigposix.h and st.h. 2005/02/12: [test] success in ruby 1.9.0 (2005-02-11) [i386-cygwin]. 2005/02/12: [bug] (thanks nobu) [ruby-dev:25676] type_cclass_hash() fix overrun. 2005/02/09: [test] success in ruby 1.9.0 (2005-02-09) [i686-linux]. 2005/02/09: [spec] add RE_OPTION_FIND_NOT_EMPTY etc.. to oniggnu.h. 2005/02/09: [dist] remove hash.c.patch. 2005/02/07: [impl] remove re_mbctab, mbctab_ascii etc... (USE_COMPATIBILITY_FOR_RUBY_EXTENSION_LIBRARY) 2005/02/04: Version 3.6.0 2005/02/04: [test] success in ruby 1.9.0 (2005-02-04) [i686-linux]. 2005/02/01: [bug] add key_free() call to st_free_table(). 2005/02/01: [new] add onig_get_default_ambig_flag() and onig_set_default_ambig_flag(). 2005/02/01: [dist] update MANIFEST-RUBY. 2005/01/31: [test] success in ruby 1.9.0 (2005-01-29) [i686-linux]. 2005/01/31: [spec] remove ONIGENC_AMBIGUOUS_MATCH_COMPOUND from ONIGENC_AMBIGUOUS_MATCH_DEFAULT. 2005/01/31: [dist] update Makefile.in (make 19). 2005/01/29: [memo] (thanks Kazuo Saito) Oniguruma 3.5.4 was merged to Ruby 1.9.0. 2005/01/28: [impl] (thanks UK-taniyama) add extern "C" { } directive to oniguruma.h, oniggnu.h and onigposix.h for C++. 2005/01/25: [impl] remove nested function call for xxx_code_to_mbclen(). (euc_kr.c, euc_tw.c, big5.c) 2005/01/19: Version 3.5.4 2005/01/19: [test] success in ruby 1.9.0 (2005-01-05) [i686-linux]. 2005/01/19: [bug] (thanks Isao Sonobe) callback function argument name_end of onig_foreach_name() was wrong. name key of name table should be null terminated for character encoding length. add strdup_with_null(), rename onig_strdup() to k_strdup(). use e->name_len in i_names(). 2005/01/17: [impl] (thanks UK-taniyama) add HAVE_SYS_TYPES_H to config.h.in. 2005/01/13: Version 3.5.3 2005/01/13: [test] success in ruby 1.9.0 (2005-01-05) [i686-linux]. 2005/01/13: [bug] ignore case match bug. ex. /s+/iu.match("SSSSS") ==> [4..5] fix OP_EXACT1_IC, OP_EXACTN_IC process. 2005/01/13: [bug] (thanks Isao Sonobe) ignore case match bug. ex. /is/iu.match("ss") fail. fix str_lower_case_match() etc. 2005/01/05: Version 3.5.2 2005/01/05: [test] success in ruby 1.9.0 (2005-01-05) [i686-linux]. 2005/01/05: [test] success in ruby 1.9.0 (2004-12-16) [i686-linux]. 2005/01/05: [bug] (thanks Isao Sonobe) ignore case match bug. ex. /s+/iu.match("sssss") ==> [4..5] fix OP_EXACT1_IC, OP_EXACTN_IC process. 2005/01/05: [bug] (thanks Isao Sonobe) group name table should be renumbered. add onig_renumber_name_table(). 2004/12/24: [dist] remove file onigcmpt200.h. 2004/12/17: Version 3.5.1 2004/12/17: [dist] add INSTALL-RUBY to archive. 2004/12/16: [test] success in ruby 1.9.0 (2004-12-16) [i686-linux]. 2004/12/16: [dist] update hash.c.patch. 2004/12/15: [bug] (thanks matz) char > 127 should be casted to unsigned char. (utf8.c) 2004/12/13: [impl] add HAVE_PROTOTYPES and HAVE_STDARG_PROTOTYPES definition to oniguruma.h in the case __cplusplus. 2004/12/06: [dist] update doc/RE and doc/RE.ja. 2004/12/03: [impl] (thanks nobu) st.h fix prototype for C++. 2004/12/03: Version 3.5.0 2004/12/02: [test] success in ruby 1.9.0 (2004-12-02) [i686-linux]. 2004/12/01: [test] success in ruby 1.9.0 (2004-12-01) [i386-mswin32]. 2004/12/01: [dist] add make targets 19 and 19up to win32/Makefile. 2004/12/01: [test] success in ruby 1.9.0 (2004-12-01) [i386-cygwin]. 2004/12/01: [test] success in ruby 1.9.0 (2004-12-01) [i686-linux]. 2004/12/01: [impl] double cast for escape warning in Cygwin. (HashDataType* )((void* )(&e)) in regparse.c 2004/12/01: [test] success in ruby 1.9.0 (2004-11-30) [i686-linux]. 2004/12/01: [tune] change implementation of clear_opt_map_info(). (which was 10-16% cost in gprof result for my test program) 2004/12/01: [dist] remove regex.c from distribution files. 2004/11/30: [memo] remove targets 16 and 18 from Makefile.in. 2004/11/30: [test] success in ruby 1.9.0 (2004-11-30) [i686-linux]. 2004/11/30: [inst] add "cp -p st.[ch] st.[ch].ruby_orig" to "make 19". 2004/11/30: [tune] map_position_value() return 20 if code is 0 and minimum enclen > 1. 2004/11/30: [test] success in ruby 1.9.0 (2004-11-29) [i686-linux]. 2004/11/30: [impl] minor changes for multi-thread in regexec.c and regcomp.c. 2004/11/30: [impl] change THREAD_PASS_LIMIT_COUNT value from 10 to 8. 2004/11/30: [impl] add THREAD_ATOMIC_XXX to FreeNodeList access in regparse.c 2004/11/29: [impl] add USE_MULTI_THREAD_SYSTEM. 2004/11/29: [memo] add hash.c.patch to CVS. 2004/11/29: [dist] change mail address to 'sndgk393 AT ...' 2004/11/29: [dist] add -s option (silent mode) to test.rb. 2004/11/29: [tune] change THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS value from 20 to 8. 2004/11/29: [inst] add make target "19up". 2004/11/29: [dist] change Oniguruma Home Page URL. 2004/11/29: [impl] remove onig_is_in_code_range_array(). 2004/11/29: [dist] fix doc/RE and RE.ja (character types). 2004/11/26: [dist] fix win32/Makefile. 2004/11/26: [dist] fix doc/RE and RE.ja (multibyte character types). 2004/11/26: [impl] add onig_free_shared_cclass_table(). 2004/11/26: [impl] move definition USE_UNICODE_FULL_RANGE_CTYPE to regenc.h. 2004/11/26: [impl] add opcode OP_CCLASS_NODE. 2004/11/26: [impl] move definition of CClassNode to regint.h. 2004/11/26: [impl] add type PointerType in regint.h. 2004/11/25: [impl] remove ONIGENC_CTYPE_MOD_NOT. 2004/11/25: [impl] rename onig_node_new_cclass_by_codepoint_range to node_new_cclass_by_codepoint_range. 2004/11/25: [impl] remove get_type_cc_node method from OnigEncodingType. 2004/11/25: [impl] move implementation of shared char-class from enc/*.c to regparse.c. 2004/11/25: [dist] add hash.c.patch for Ruby 1.9 hash.c change. 2004/11/22: [impl] change utf8_get_type_node(). 2004/11/22: [impl] add ONIGENC_CTYPE_MOD_NOT. 2004/11/22: [bug] (thanks MIYAMUKO Katsuyuki) ruby make test fail in HP-UX B.11.23 ia64. should use tok->u.code instead of tok->u.c in the case of TK_CODE_POINT. 2004/11/19: [bug] (thanks Yoshida Masato) invalid multibyte code causes segmentation fault. ex. /[\xFF-\xFF]/u 2004/11/19: [bug] (thanks Yoshida Masato) illegal check in char-class range in UTF-8. ex. s = "[\xC2\xA0-\xC3\xBE]" p(Regexp.new(s, nil, "u") =~ "\xC3\xBE") 2004/11/18: [impl] add onig_node_new_cclass_by_codepoint_range(). 2004/11/18: [impl] remove OnigCodePointRange type. (use OnigCodePoint[].) 2004/11/17: [bug] (thanks nobu) abort in "a".gsub(/a\Z/, "") fix ONIGENC_STEP_BACK() argument in onig_search(). 2004/11/16: [impl] add key2 member to st_table_entry in st.[ch]. change API of st for non-null terminated string key. 2004/11/16: [impl] add get_type_cc_node method to OnigEncodingType. 2004/11/15: [impl] add st.h and st.c from Ruby 1.9. use st-hash always. 2004/11/12: [impl] change member 'not' of CClassNode to 'flags'. add flags FLAG_CCLASS_NOT and FLAG_CCLASS_SHARE. 2004/11/12: [impl] add onig_is_in_code_range_array() to enc/unicode.c. 2004/11/12: [impl] fix CRWord in enc/unicode.c and MBWord in enc/utf8.c. 2004/11/11: [bug] fix enc/utf8.c. size 0 array initializer was compile error in VC++. 2004/11/09: [inst] (thanks Hiroki YAGITA) change installed file mode to 0644. 2004/11/09: [bug] (thanks UK-taniyama) wrong definitions GET_RELADDR_INC(), GET_ABSADDR_INC() etc... (NOT PLATFORM_UNALIGNED_WORD_ACCESS) 2004/11/09: [impl] type cast in regexec() for remove compile time warning. (WIN32, regposix.c) 2004/11/08: [spec] fix Unicode character types. 0x00ad (soft hyphen) should be [:cntrl:] and [:space:] type. [0x0009..0x000d], 0x0085 should be [:print:] type. 0x00ad should not be [:punct:] type. 2004/11/08: [inst] fix Makefile.in. (for make ctest/ptest/testcu) 2004/11/06: [impl] (thanks Kazuo Saito) too many alternatives pattern causes core dump. change implementation of onig_node_free(). 2004/11/05: [spec] rename ONIGERR_END_PATTERN_AT_BACKSLASH to ONIGERR_END_PATTERN_AT_ESCAPE. 2004/11/05: [impl] (thanks matz) escape compile time warnings for x86-64 Linux. StackIndex type int -> long 2004/11/05: [memo] (thanks Kazuo Saito) Oniguruma 3.4.0 was merged to Ruby 1.9.0. 2004/10/30: Version 3.4.0 2004/10/30: [test] success in ruby 1.9.0 (2004-09-24) [i686-linux]. 2004/10/30: [new] add hexadecimal digit char type. (\h, \H) syntax: ONIG_SYN_OP2_ESC_H_XDIGIT 2004/10/30: [bug] (thanks Guy Decoux) reluctant infinite repeat bug. ex. /^[a-z]{2,}?$/.match("aaa") fail. fix OP_REPEAT_INC_NG process in match_at(). 2004/10/18: Version 3.3.1 2004/10/18: [test] success in ruby 1.9.0 (2004-09-24) [i686-linux]. 2004/10/18: [impl] (thanks Imai Yasumasa) enclose #include by #ifndef __BORLANDC__. 2004/10/18: [bug] (thanks Imai Yasumasa) memory access violation in select_opt_exact_info(). 2004/09/25: [dist] fix doc/API and doc/API.ja. 2004/09/25: [bug] fix OP_SEMI_END_BUF process in match_at() for the case USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE is not defined. 2004/09/17: Version 3.3.0 2004/09/17: [dist] add COPYING to program source files. 2004/09/17: [test] success in ruby 1.9.0 (2004-07-23) [i686-linux]. 2004/09/17: [bug] (thanks Isao Sonobe) memory access violations in xxx_mbc_enc_len(), and xxx_mbc_to_normalize() and xxx_left_adjust_char_head(). add string range check in match_at() and onig_search(). 2004/09/08: [dist] change mail address format.(kosako AT sofnec ...) 2004/09/04: Version 3.2.9 2004/09/04: [test] success in ruby 1.9.0 (2004-07-23) [i686-linux]. 2004/09/04: [bug] (thanks Bob Kerstetter and Richard Koch) search fail in ignore case mode. fix str_lower_case_match(). 2004/09/04: [inst] (thanks Isao Sonobe) clear sample directory in 'make clean'. 2004/09/04: [bug] fix ONIGENC_AMBIGUOUS_MATCH_COMPOUND/ASCII/NONASCII meanings in XXXXX_mbc_to_normalize() and XXXXX_is_mbc_ambiguous(). 2004/08/28: [bug] fix ONIGENC_AMBIGUOUS_MATCH_COMPOUND/ASCII/NONASCII meanings in iso_8859_XX_mbc_to_normalize() and iso_8859_XX_is_mbc_ambiguous(). 2004/08/24: Version 3.2.8 2004/08/24: [test] success in ruby 1.9.0 (2004-07-23) [i686-linux]. 2004/08/24: [spec] add ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY. /a{n}?/ == /(?:a{n})?/ 2004/08/24: [dist] fix doc/RE and doc/RE.ja. 2004/08/24: [bug] (thanks starfish) memory leak in set_optimize_exact_info(). 2004/08/21: Version 3.2.7 2004/08/21: [test] success in ruby 1.8.2 (2004-07-28) [i686-linux]. (1.8.2 preview2) 2004/08/21: [test] success in ruby 1.9.0 (2004-07-23) [i686-linux]. 2004/08/21: [bug] (thanks Isao Sonobe) (thanks kage) memory access violation in bm_search_notrev(). (forgotten to merge from 2.X) 2004/07/24: Version 3.2.6 2004/07/24: [test] success in ruby 1.9.0 (2004-07-23) [i686-linux]. 2004/07/24: [test] success in ruby 1.8.2 (2004-07-16) [i686-linux]. 2004/07/24: [bug] fix warnings for regexec.c. (gcc 2.91.66) 2004/07/24: [memo] change version control system from Subversion to CVS 1.11.17. 2004/07/20: [bug] (thanks Isao Sonobe) illegal result in negative character class in ignore case mode. fix pair-ambig-codes process in parse_exp(). ex. /[^a]/i.match("A") 2004/07/20: [bug] (thanks Isao Sonobe) undefined bytecode error happens in UTF-16BE etc.. compile_length_cclass_node() was not consistent with compile_cclass_node(). 2004/07/01: Version 3.2.5 2004/07/01: [test] success in ruby 1.8.2 (2004-06-23) [i686-linux]. 2004/07/01: [new] add onig_get_syntax_{op,op2,behavior,options}. 2004/07/01: [bug] (thanks Isao Sonobe) invalid result in onig_capture_tree_traverse(). fix make_capture_history_tree(). 2004/06/29: Version 3.2.4 2004/06/29: [test] success in ruby 1.8.2 (2004-06-23) [i686-linux]. 2004/06/29: [new] (thanks Isao Sonobe) add onig_number_of_captures(). 2004/06/25: Version 3.2.3 2004/06/25: [test] success in ruby 1.8.2 (2004-06-23) [i686-linux]. 2004/06/25: [bug] (thanks Isao Sonobe) invalid result in onig_capture_tree_traverse(). fix make_capture_history_tree(). 2004/06/24: Version 3.2.2 2004/06/24: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/06/24: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/06/24: [test] success in ruby 1.8.2 (2004-06-23) [i686-linux]. 2004/06/24: [new] (thanks Isao Sonobe) add onig_number_of_capture_histories(). 2004/06/24: [bug] (thanks Isao Sonobe) invalid char position match in UTF-16 and UTF-32. add onigenc_always_false_is_allowed_reverse_match(). 2004/06/17: Version 3.2.1 2004/06/17: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/06/17: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/06/17: [test] success in ruby 1.8.2 (2004-05-18) [i686-linux]. 2004/06/17: [impl] should not use OP_REPEAT for (...)? even if target size is long. 2004/06/17: [bug] (thanks nobu) [ruby-dev:23703] should use STACK_AT() instead of stkp in OP_REPEAT_INC. add IN_VAR_REPEAT flag in setup_tree(). 2004/06/16: [impl] change select_opt_exact_info() to use ByteValTable[]. 2004/06/16: [impl] change map_position_value() table values. 2004/06/14: [impl] (thanks John Carter) RelAddrType, AbsAddrType and LengthType change from short int to int type for the very long string match. 2004/06/14: [bug] (thanks Greg A. Woods) fix nmatch argument of regexec() is smaller than reg->num_mem + 1 case. (POSIX API) 2004/06/14: [spec] (thanks Greg A. Woods) set pmatch to NULL if nmatch is 0 in regexec(). (POSIX API) 2004/06/10: Version 3.2.0 2004/06/10: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/06/10: [test] success in ruby 1.9.0 (2004-05-27) [i386-mswin32]. 2004/06/10: [test] success in ruby 1.8.2 (2004-05-18) [i686-linux]. 2004/06/10: [dist] add README.ja. 2004/06/10: [new] add onig_copy_encoding(). 2004/06/10: [API] add encoding argument to onig_set_meta_char(). add meta_char_table member to OnigEncodingType. 2004/06/08: [dist] add doc/API.ja. 2004/06/07: [API] add num_of_elements member to OnigCompileInfo. 2004/05/29: [memo] (thanks Kazuo Saito) Oniguruma 3.1.0 was merged to Ruby 1.9.0. 2004/05/26: [impl] rename NST_SIMPLE_REPEAT to NST_STOP_BT_SIMPLE_REPEAT. 2004/05/26: [impl] doesn't need to check that target's simple repeat-ness for EFFECT_MEMORY type node in setup_tree(). 2004/05/25: Version 3.1.0 2004/05/25: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/05/25: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/05/25: [test] success in ruby 1.9.0 (2004-05-23) [i686-linux]. 2004/05/25: [test] success in ruby 1.8.2 (2004-05-18) [i686-linux]. 2004/05/25: [bug] (thanks Masahiro Sakai) [ruby-dev:23560] ruby -ruri -ve 'URI::ABS_URI =~ "http://example.org/Andr\xC3\xA9"' nested STK_REPEAT type stack can't backtrack repeat_stk[]. add OP_REPEAT_INC_SG and OP_REPEAT_INC_NG_SG. 2004/05/25: [new] support UTF-32LE. (ONIG_ENCODING_UTF32_LE) 2004/05/25: [new] support UTF-32BE. (ONIG_ENCODING_UTF32_BE) 2004/05/24: [impl] divide enc/utf16.c to utf16_be.c and utf16_le.c. 2004/05/24: [impl] add enc/unicode.c. 2004/05/24: [API] change calling sequences of onig_new_deluxe() and onig_recompile_deluxe(). define OnigCompileInfo type. 2004/05/21: [impl] perform ensure process for rb_trap_exec() in match_at(). add onig_exec_trap() and CHECK_INTERRUPT_IN_MATCH_AT. 2004/05/21: [impl] add regex status check to onig_match(). 2004/05/21: [new] add onig_get_capture_tree() and onig_capture_tree_traverse(). 2004/05/20: [spec] (thanks Isao Sonobe) capture history return capture data tree. (see sample/listcap.c) 2004/05/19: [bug] (thanks Simon Strandgaard) Control-C does not work in matching process on Ruby. add calling of CHECK_INTERRUPT into match_at(). ex. /<(?:[^">]+|"[^"]*")+>/.match('') 2004/05/19: [bug] (thanks Simon Strandgaard) define virtual codepoint values for invalid encoding byte 0xfe and 0xff in UTF-8. ex. /\w+/u.match("%a\xffb\xfec%") ==> "a" 2004/05/19: [spec] (thanks Simon Strandgaard) too big backref number should be treated as a sequence of an octal char and number digits. ex. /b\3777\c/.match("b\3777\c") 2004/05/17: [spec] rename encoding names "UTF-16 BE" and "UTF-16 LE" to "UTF-16BE" and "UTF-16LE". 2004/05/17: [impl] move ismbchar() and mbclen() from oniguruma.h to oniggnu.h. 2004/05/17: [impl] rename onigenc_single_byte_is_allowed_reverse_match() to onigenc_always_true_is_allowed_reverse_match(). 2004/05/14: Version 3.0.0 2004/05/14: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/05/14: [test] success in ruby 1.9.0 (2004-05-14) [i686-linux]. 2004/05/14: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. (* need to edit parse.y: register int c; ---> int c; in yylex()) 2004/05/14: [impl] add regext.c. 2004/05/14: [spec] KOI8 is not included in library archive by default setup. 2004/05/14: [impl] implementation changes are completed for all encoding files. 2004/05/12: [impl] add divide_ambig_string_node(). ambiguous string is divided and normalized before optimization and compilation process. 2004/05/11: [dist] remove INSTALL-RUBY from distribution. 2004/04/28: [memo] (thanks Kazuo Saito) Oniguruma 2.2.8 was merged to Ruby 1.9.0. 2004/04/26: [spec] change value DEFAULT_MATCH_STACK_LIMIT_SIZE = 0 : unlimited 2004/04/26: [new] add onig_get_match_stack_limit_size() and onig_set_match_stack_limit_size(). 2004/04/26: [bug] add error check to re.c.181.patch and re.c.168.patch. 2004/04/23: [impl] remove ctype_support_level from OnigEncodingType. 2004/04/22: [spec] allow the range from single byte char to multibyte char in character class for implementation reason. ex. /[a-\xbb\xcc]/ in EUC-JP encoding. 2004/04/21: [impl] remove max_enc_len_by_first_byte() from OnigEncodingType. 2004/04/20: [new] add onig_copyright(). 2004/04/20: [impl] add regversion.c. 2004/04/15: [new] add onig_get_ambig_flag(). 2004/04/14: [bug] (thanks Isao Sonobe) undefined bytecode error happens if ONIG_OPTION_FIND_LONGEST is set. should finish matching process if find-condition is fail at OP_END in match_at(). 2004/04/12: [impl] add ambig_flag to regex_t. 2004/04/09: [impl] move onig_set_meta_char() to regsyntax.c. 2004/04/09: [bug] (thanks HIROSE Masaaki) fix onig_version(). 2004/04/08: [impl] add regsyntax.c. 2004/04/07: [new] support UTF-16 LE. (ONIG_ENCODING_UTF16_LE) 2004/04/05: [impl] add ONIGENC_CTYPE_NEWLINE. 2004/04/05: [memo] (thanks Kazuo Saito) Oniguruma 2.2.6 was merged to Ruby 1.9.0. 2004/04/02: [memo] Version 2.2.6 was released. 2004/03/26: [new] support UTF-16 BE. (ONIG_ENCODING_UTF16_BE) 2004/03/25: [spec] support non 8-bit encodings. 2004/03/16: [memo] 2.X branch for 8-bit encodings only. 2004/03/16: Version 2.2.5 2004/03/16: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/03/16: [test] success in ruby 1.9.0 (2004-02-24) [i686-linux]. 2004/03/16: [impl] add property name to error message of ONIGERR_INVALID_CHAR_PROPERTY_NAME. 2004/03/16: [spec] allow prefix 'Is' for \p{...} in ONIG_SYNTAX_PERL. add syntax op. ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS. 2004/03/15: [dist] add sample/syntax.c. 2004/03/15: [spec] support NOT op. in char property. \p{^...}, \P{^...}. add syntax op. ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT. 2004/03/15: [spec] rename ONIG_SYN_OP2_ESC_P_CHAR_PROPERTY to ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY. 2004/03/10: [impl] move ONIGERR_XXX from regenc.h to oniguruma.h, rename ONIGERR_XXX to ONIGENCERR_XXX in regenc.h. 2004/03/08: [impl] (thanks eban) replace defined(__CYGWIN__) to defined(__GNUC__). 2004/03/08: [bug] (thanks eban) [ruby-dev:23172] need to separate initialization for bcc32. 2004/03/06: [memo] (thanks Kazuo Saito) Oniguruma 2.2.4 was merged to Ruby 1.9.0. 2004/03/05: [API] change second argument type of onig_set_meta_char() from unsigned int to OnigCodePoint. 2004/03/05: [dist] (thanks Kazuo Saito) add MANIFEST-RUBY. 2004/03/04: Version 2.2.4 2004/03/04: [impl] (thanks Moriyoshi Koizumi) fix many warnings in Win32 VC++ with /W3 option. 2004/03/02: Version 2.2.3 2004/03/02: [bug] (thanks Isao Sonobe) return invalid capture region value if capture history is used. (OP_MEMORY_END_PUSH_REC bug) ex. /\g

(?@

\(\g\)){0}(?(?:\g

)*|){0}/ .match("((())())") 2004/03/02: [impl] (thanks Kazuo Saito) add :nodoc: to onig_stat_print() for RDoc. 2004/03/02: [impl] don't use ONIG_SOURCE_IS_WRAPPED. 2004/02/27: Version 2.2.2 2004/02/27: [impl] fix the position of onig_stat_print(). 2004/02/27: [impl] define ONIG_RUBY_DEFINE_GLOBAL_FUNCTION() in regint.h for ignored by RDoc. 2004/02/26: Version 2.2.1 2004/02/26: [bug] [bugs.php.net:#26677] (thanks behrens) invalid definition at onig_error_code_to_str() in the case of NOT HAVE_STDARG_PROTOTYPES. 2004/02/25: Version 2.2.0 2004/02/25: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/02/24: [test] success in ruby 1.9.0 (2004-02-24) [i686-linux]. 2004/02/24: [bug] undefined IS_BLANK() and IS_GRAPH() was used in onigenc_is_code_ctype() in the case of Ruby M17N. 2004/02/24: [new] support ISO-8859-16. (ONIG_ENCODING_ISO_8859_16) 2004/02/24: [bug] should not fold match for 0xdf in iso8859_6.c. 2004/02/24: [new] support ISO-8859-14. (ONIG_ENCODING_ISO_8859_14) 2004/02/23: [new] support ISO-8859-13. (ONIG_ENCODING_ISO_8859_13) 2004/02/23: [new] support ISO-8859-10. (ONIG_ENCODING_ISO_8859_10) 2004/02/20: [bug] fix iso_8859_4_mbc_is_case_ambig(). 2004/02/20: [new] support ISO-8859-9. (ONIG_ENCODING_ISO_8859_9) 2004/02/19: [bug] correct ctype tables for ISO-8859-3, ISO-8859-4, ISO-8859-6, ISO-8859-7, ISO-8859-8, KOI8_R. 2004/02/18: [bug] wrong replaced name OnigSyntaxGnuOnigex. 2004/02/17: [spec] check capture status for empty infinite loop. [ruby-dev:20224] etc... ex. /(?:\1a|())*/.match("a"), /(?:()|()|()|(x)|()|())*\2b\5/.match("b") add USE_INFINITE_REPEAT_MONOMANIAC_MEM_STATUS_CHECK. add OP_NULL_CHECK_END_MEMST, OP_NULL_CHECK_END_MEMST_PUSH. add stack type STK_NULL_CHECK_END. 2004/02/13: [impl] add OnigEncodingEUC_CN to enc/euc_kr.c. 2004/02/13: [bug] (thanks Simon Strandgaard) parsing of nested repeat was invalid. ex. /ab{2,3}*/ was /(?:a(?:b{2,3}))*/, should be /a(?:b{2,3}*)/ 2004/02/12: [bug] (thanks Simon Strandgaard) OP_REPEAT_INC_NG process in match_at() is wrong. ex. bad match /a.{0,2}?a/ =~ "0aXXXa0" 2004/02/12: [bug] (thanks Simon Strandgaard) wrong fetch after (?x) option. ex. "(?x)\ta .\n+b" 2004/02/12: [bug] (thanks Simon Strandgaard) [\^] is not a empty char class. 2004/02/09: [new] add onig_set_syntax_op(), onig_set_syntax_op2(), onig_set_syntax_behavior(), onig_set_syntax_options(). 2004/02/06: [dist] add a new target 'site' to Makefile.in. 2004/02/06: [dist] add index.html. 2004/02/03: [bug] oniggnu.h was not installed by 'make install'. 2004/02/02: Version 2.1.0 2004/02/02: [test] success in ruby 1.9.0 (2004-02-02) [i686-linux]. 2004/02/02: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/02/02: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2004/02/02: [new] support ISO-8859-11. (ONIG_ENCODING_ISO_8859_11) 2004/02/02: [new] support ISO-8859-5. (ONIG_ENCODING_ISO_8859_5) 2004/02/02: [impl] should check single byte encoding or not in and_cclass() and or_cclass(). 2004/01/30: [dist] add oniggnu.h. 2004/01/30: [bug] ISO-8859-7 0xb7 (middle dot) is Punct type. 2004/01/30: [new] support ISO-8859-8. (ONIG_ENCODING_ISO_8859_8) 2004/01/29: [new] support ISO-8859-7. (ONIG_ENCODING_ISO_8859_7) 2004/01/29: [new] support ISO-8859-6. (ONIG_ENCODING_ISO_8859_6) 2004/01/28: [new] support KOI8-R. (ONIG_ENCODING_KOI8_R) 2004/01/28: [new] support KOI8. (ONIG_ENCODING_KOI8) 2004/01/27: [dist] rename enc/isotable.c to enc/mktable.c. 2004/01/27: [new] support ISO-8859-4. (ONIG_ENCODING_ISO_8859_4) 2004/01/26: [new] support ISO-8859-3. (ONIG_ENCODING_ISO_8859_3) 2004/01/26: [bug] EncISO_8859_{1,15}_CtypeTable[256] was wrong. (0x80 - 0xff is not ASCII) 2004/01/23: [new] support ISO-8859-2. (ONIG_ENCODING_ISO_8859_2) 2004/01/23: [dist] add enc/isotable.c. 2004/01/22: [new] support EUC-TW. (ONIG_ENCODING_EUC_TW) 2004/01/22: [bug] definition of GET_ALIGNMENT_PAD_SIZE() and ALIGNMENT_RIGHT() was wrong. type casting should be unsigned int, not int. 2004/01/22: [impl] add defined(__x86_64) || defined(__x86_64__) to unaligned word access condition. (AMD64 ?) 2004/01/21: [dist] rename enc/eucjp.c to enc/euc_jp.c. 2004/01/21: [new] support EUC-KR. (ONIG_ENCODING_EUC_KR) 2004/01/20: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2004/01/20: [dist] change Makefile.in. 2004/01/20: [spec] add \p{...}, \P{...} in char class. 2004/01/20: [new] character property operators \p{...}, \P{...}. supported in ONIG_SYNTAX_JAVA and ONIG_SYNTAX_PERL. 2004/01/19: [spec] allow /a{,n}/ as /a{0,n}/. (but don't allow /a{,}/) 2004/01/19: [dist] rename onigcomp200.h to onigcmpt200.h. 2004/01/19: [dist] update re.c.168.patch. svn add re.c.181.patch. 2004/01/16: [dist] update sample/*.c for new API. 2004/01/16: [dist] add onigcomp200.h. (for old API compatibility) 2004/01/16: [dist] update documents API, RE and RE.ja. 2004/01/16: [spec] change prefix REG_ -> ONIG_, regex_ onig_, ENC_ -> ONIGENC, enc_ -> onigenc_. 2004/01/15: [impl] rename ENC_IS_MBC_E_WORD() to ENC_IS_MBC_WORD(). rename ENC_CTYPE_SUPPORT_LEVEL_SB_ONLY to ENC_CTYPE_SUPPORT_LEVEL_SB. 2004/01/14: [impl] rename UNALIGNED_WORD_ACCESS to PLATFORM_UNALIGNED_WORD_ACCESS. 2004/01/14: [impl] change MATCH_STACK_LIMIT_SIZE value from 200000 to 500000. 2004/01/13: [impl] remove ENC_CODE_TO_MBC_FIRST(enc,code) in regenc.h. remove code_to_mbc_first member in RegCharEncodingType. 2004/01/13: [impl] remove head byte bitset information in cclass->mbuf. 2003/12/26: [impl] change macro name ismb_xxxx() in enc/*.c for escape conflict. 2003/12/24: Version 2.0.0 2003/12/24: [spec] ignore case option is effective to numbered char. ex. /\x61/i =~ "A" 2003/12/24: [test] success in ruby 1.8.1 (2003-12-24) [i686-linux]. 2003/12/24: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2003/12/24: [test] success in ruby 1.8.0 (2003-08-08) [i386-mswin32]. 2003/12/24: [test] success in regex.c compile test on ruby-m17n. (but can't make miniruby because re.c patch fail.) 2003/12/24: [bug] (thanks H.Miyamoto) /[\W]/ was wrong in 1.9.5. 2003/12/22: [spec] implement fold match on UTF-8 encoding. 2003/12/19: [impl] add ctype_support_level and ctype_add_codes() member to RegCharEncoding type. 2003/12/19: [impl] add add_ctype_to_cc() in regparse.c. 2003/12/19: [impl] add enc_is_code_ctype() in REG_RUBY_M17N case. 2003/12/19: [impl] change ENC_CODE_TO_MBC() interface. 2003/12/18: [new] implement fold match. (variable number of char match in ignore case mode.) ex. German alphabet ess-tsett(U+00DF) match "SS" and "ss". 2003/12/17: [impl] refactoring of encoding system. 2003/12/17: [impl] add enc_init() in regenc.c. 2003/12/17: [new] support Big5. (REG_ENCODING_BIG5) 2003/12/16: [impl] change CodePoint from unsigned int to unsigned long. 2003/12/16: [new] support ISO 8859-15. (REG_ENCODING_ISO_8859_15) 2003/12/16: [impl] change P_() macro definition condition for Win32. 2003/12/16: [dist] add sample/encode.c 2003/12/16: [new] support ISO 8859-1. (REG_ENCODING_ISO_8859_1) 2003/12/15: [impl] rename IS_ENC_XXXX to ENC_IS_XXXX. 2003/12/15: [impl] rename RegDefaultCharEncoding to EncDefaultCharEncoding. 2003/12/15: [impl] divide encoding files. (enc/ascii.c, enc/utf8.c etc...) 2003/12/15: [bug] unexpected infinite loop in regex_snprintf_with_pattern(). change local var. type char* to UChar*. 2003/12/15: [impl] remove REG_MBLEN_TABLE[]. 2003/12/15: [spec] rename function prefix regex_get_prev_char_head(), regex_get_left_adjust_char_head() and regex_get_right_adjust_char_head() to enc_xxxxxx(). 2003/12/15: [impl] rename function prefixes in regenc.h from regex_ to enc_. 2003/12/12: [impl] remove USE_SBMB_CLASS. 2003/12/12: [impl] rename mb -> mbc, mblen() to enc_len(). 2003/12/12: [impl] rename WCINT to CodePoint. 2003/12/11: [impl] delete IS_XXXX() ctype macros from regint.h. 2003/12/11: [impl] add enc->wc_is_ctype() and RegAsciiCtypeTable[256]. 2003/12/11: [impl] remove RegAsciiCaseAmbigTable. 2003/12/10: [impl] use ENC_TO_LOWER() for ignore case comparison. 2003/12/08: [impl] *** re-defined RegCharEncoding in oniguruma.h. *** 2003/12/08: [impl] add USE_POSIX_REGION_OPTION to regint.h. 2003/12/08: [impl] add IS_ENC_WORD() to regenc.h. 2003/12/05: [impl] rename IS_CODE_XXXX() to IS_ENC_XXXX(). 2003/12/05: [impl] delete IS_CODE_WORD() from regenc.h. 2003/12/04: [spec] rename REG_SYN_OP_BACK_REF to REG_SYN_OP_DECIMAL_BACKREF. 2003/12/04: [spec] add (REG_SYN_OP_ESC_W_WORD | REG_SYN_OP_ESC_B_WORD_BOUND | REG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | REG_SYN_OP_BACK_REF) to RegSyntaxGrep. 2003/12/04: [spec] remove REG_ENCODING_DEFAULT and REGCODE_DEFAULT. 2003/12/04: [spec] move declarations of regex_get_default_encoding() and regex_set_default_encoding() from oniguruma.h to regenc.h. 2003/12/03: [new] add regex_get_default_encoding() and regex_set_default_encoding(). 2003/12/03: [spec] REG_ENCODING_DEFAULT meaning is changed. (current default value, not initial default value.) 2003/12/03: [spec] REGCODE_XXX is obsoleted. use REG_ENCODING_XXX. 2003/12/02: [memo] alias svnst='svn status | grep -v "^\?"' 2003/12/02: [spec] move regex_set_default_trans_table() declaration from oniguruma.h to regenc.h. (obsoleted API) 2003/12/02: [impl] move variables RegDefaultCharEncoding, DefaultTransTable and AmbiguityTable to regenc.c. 2003/12/01: [impl] add regex_continuous_sbmb() to regenc.c. 2003/12/01: [dist] add regenc.h and regenc.c. 2003/11/18: [dist] change testconv.rb. 2003/11/18: [bug] (thanks Masaru Tsuda) memory leak in parse_subexp(). 2003/11/18: [bug] (thanks Masaru Tsuda) memory leak in names_clear() and parse_char_class(). 2003/11/17: [bug] memory leak in parse_char_class(). 2003/11/17: [bug] (thanks Masaru Tsuda) OptExactInfo length should not over OPT_EXACT_MAXLEN. (concat_opt_exact_info_str()) 2003/11/12: Version 1.9.5 2003/11/12: [test] success in ruby 1.8.0 (2003-08-08) [i386-cygwin]. 2003/11/12: [test] success in ruby 1.8.1 (2003-11-11) [i686-linux]. 2003/11/12: [spec] add definition of REG_INEFFECTIVE_META_CHAR. 2003/11/11: [dist] add a sample program sample/sql.c. 2003/11/11: [new] add variable meta character. regex_set_meta_char() 2003/11/11: [spec] add syntax op. REG_SYN_OP_VARIABLE_META_CHARS. 2003/11/11: [spec] rename REG_SYN_OP_ESC_CAPITAL_Q_QUOTE to REG_SYN_OP2_ESC_CAPITAL_Q_QUOTE, REG_SYN_OP_QMARK_GROUP_EFFECT to REG_SYN_OP2_QMARK_GROUP_EFFECT. 2003/11/06: [impl] define THREAD_PASS as rb_thread_schedule() in Ruby mode. 2003/11/05: [spec] add syntax behavior REG_SYN_WARN_REDUNDANT_NESTED_REPEAT. 2003/11/05: [spec] rename REG_SYN_WARN_FOR_CC_OP_NOT_ESCAPED to REG_SYN_WARN_CC_OP_NOT_ESCAPED. 2003/11/04: [new] add regex_set_warn_func() and regex_set_verb_warn_func(). 2003/10/30: [new] add regex_name_to_backref_number(). (for multiplex definition name, see sample/names.c) 2003/10/30: [spec] add name_end and reg argument to callback function of regex_foreach_name(). (see sample/names.c) 2003/10/29: [spec] add syntax behavior REG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME. add error code REGERR_MULTIPLEX_DEFINED_NAME. 2003/10/14: [dist] modify sample/simple.c. 2003/10/03: [bug] (thanks nobu) [ruby-dev:21472] sub-anchor of optimization map info was wrong in concat_left_node_opt_info(). ex. /^(x?y)/ = "xy" fail. 2003/09/17: Version 1.9.4 2003/09/17: [spec] change specification of char-class range in ignore case mode follows with Ruby 1.8(2003-09-17). ex. /[H-c]/i ==> (H-Z, 0x5b-0x60, a-c)/i ==> H-Z, h-z, 0x5b-0x60, a-c, A-C 2003/09/16: [bug] (thanks Guy Decoux) remove env->option == option check in parse_effect(). change env->option for dynamic option in parse_exp(). (ex. bad match /(?i)(?-i)a/ =~ "A") 2003/09/12: [spec] rename REG_SYN_ALLOW_RANGE_OP_IN_CC to REG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC, REG_SYN_ESCAPE_IN_CC to REG_SYN_BACKSLASH_ESCAPE_IN_CC. 2003/09/11: [bug] change to IS_SYNTAX_OP2 at REG_SYN_OP2_ESC_GNU_BUF_ANCHOR. 2003/09/09: [spec] rename REG_SYN_OP2_ESC_M_BAR_META to REG_SYN_OP2_ESC_CAPITAL_M_BAR_META, REG_SYN_OP_ESC_Q_QUOTE to REG_SYN_OP_ESC_CAPITAL_Q_QUOTE, REG_SYN_OP_ESC_SUBEXP to REG_SYN_OP_ESC_LPAREN_SUBEXP, REG_SYN_OP_ESC_BUF_ANCHOR to REG_SYN_OP_ESC_AZ_BUF_ANCHOR, REG_SYN_OP_ESC_GNU_BUF_ANCHOR to REG_SYN_OP2_ESC_GNU_BUF_ANCHOR, REG_SYN_OP_ESC_CONTROL_CHAR to REG_SYN_OP_ESC_CONTROL_CHARS, REG_SYN_OP_ESC_WORD to REG_SYN_OP_ESC_W_WORD, REG_SYN_OP_ESC_WORD_BEGIN_END to REG_SYN_OP_ESC_LTGT_WORD_BEGIN_END, REG_SYN_OP_ESC_WORD_BOUND to REG_SYN_OP_ESC_B_WORD_BOUND, REG_SYN_OP_ESC_WHITE_SPACE to REG_SYN_OP_ESC_S_WHITE_SPACE, REG_SYN_OP_ESC_DIGIT to REG_SYN_OP_ESC_D_DIGIT, REG_SYN_OP_CC to REG_SYN_OP_BRACKET_CC, REG_SYN_OP2_CCLASS_SET to REG_SYN_OP2_CCLASS_SET_OP, REG_SYN_CONTEXT_INDEP_OPS to REG_SYN_CONTEXT_INDEP_REPEAT_OPS, REG_SYN_CONTEXT_INVALID_REPEAT_OPS to REG_SYN_CONTEXT_INVALID_REPEAT_OPS. add REG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR. 2003/09/08: [spec] rename REG_SYN_OP_ANYCHAR to REG_SYN_OP_DOT_ANYCHAR, REG_SYN_OP_0INF to REG_SYN_OP_ASTERISK_ZERO_INF, REG_SYN_OP_ESC_0INF to REG_SYN_OP_ESC_ASTERISK_ZERO_INF, REG_SYN_OP_1INF to REG_SYN_OP_PLUS_ONE_INF, REG_SYN_OP_ESC_1INF to REG_SYN_OP_ESC_PLUS_ONE_INF, REG_SYN_OP_0INF to REG_SYN_OP_QMARK_ZERO_ONE, REG_SYN_OP_ESC_0INF to REG_SYN_OP_ESC_QMARK_ZERO_ONE, REG_SYN_OP_INTERVAL to REG_SYN_OP_BRACE_INTERVAL, REG_SYN_OP_ESC_INTERVAL to REG_SYN_OP_ESC_BRACE_INTERVAL, REG_SYN_OP_SUBEXP to REG_SYN_OP_LPAREN_SUBEXP, REG_SYN_OP_ALT to REG_SYN_OP_VBAR_ALT, REG_SYN_OP_ESC_ALT to REG_SYN_OP_ESC_VBAR_ALT, REG_SYN_OP_NON_GREEDY to REG_SYN_OP_QMARK_NON_GREEDY, REG_SYN_OP_SUBEXP_EFFECT to REG_SYN_OP_QMARK_GROUP_EFFECT, REG_SYN_OP2_POSSESSIVE_{REPEAT,INTERVAL} to REG_SYN_OP2_PLUS_POSSESSIVE_{REPEAT,INTERVAL}, REG_SYN_OP2_SUBEXP_CALL to REG_SYN_OP2_ESC_G_SUBEXP_CALL, REG_SYN_OP2_NAMED_GROUP to REG_SYN_OP2_QMARK_LT_NAMED_GROUP and REG_SYN_OP2_ESC_K_NAMED_BACKREF. 2003/09/02: [tune] call reduce_nested_qualifier() after disabling capture for no-name group in noname_disable_map(). ex. /(a+)*(?...)/ 2003/09/02: [impl] include is forgotten to erase in regcomp.c. 2003/09/01: [dist] update doc/RE and doc/RE.ja. 2003/08/26: [bug] (thanks Guy Decoux) should not double free node at the case TK_CC_CC_OPEN in parse_char_class(). 2003/08/19: Version 1.9.3 2003/08/19: [inst] change re.c.180.patch. 2003/08/19: [impl] rename 'list of captures' to 'capture history'. 2003/08/19: [dist] add doc/RE.ja. (Japanese) 2003/08/19: [new] add regex_copy_syntax(). 2003/08/19: [spec] rename REG_SYN_OP2_ATMARK_LIST_OF_CAPTURES to REG_SYN_OP2_ATMARK_CAPTURE_HISTORY. 2003/08/18: [spec] (thanks nobu) don't use IMPORT in oniguruma.h and onigposix.h. 2003/08/18: [impl] (thanks nobu) change error output to stdout in testconv.rb. 2003/08/18: [inst] (thanks nobu) lacked $(srcdir) in Makefile.in. 2003/08/18: [bug] REG_MBLEN_TABLE[SJIS][0xFD-0xFF] should be 1. 2003/08/18: [bug] (thanks nobu) mbctab_sjis[0x80] should be 0. 2003/08/18: [bug] (thanks nobu) single/multi-byte decision was wrong in parse_char_class(). add regex_wc2mblen(). should not set fetched to 1 in TK_RAW_BYTE case. 2003/08/18: [bug] should update BitSet in the case inc_n >= 0 in add_wc_range_to_buf(). 2003/08/13: [bug] change re.c.180.patch for fix rb_reg_to_s() in re.c. 2003/08/11: [bug] should clear region->list in regex_region_resize(). 2003/08/08: Version 1.9.2 2003/08/08: [test] success in ruby 1.8.0 (2003-08-08) on Windows 2000 VC++ 6.0 and Cygwin. 2003/08/08: [impl] don't define macro vsnprintf for WIN32 platform, because definition is added in win32\win32.h. 2003/08/08: [test] success in ruby 1.8.0 and ruby 1.6.8(2003-08-03) on Linux. 2003/08/08: [dist] change re.c.180.patch and re.c.168.patch. 2003/08/08: [new] (thanks akr) implemented list of captures. (?@...), (?@...) 2003/08/07: [dist] add sample/listcap.c. 2003/08/06: [bug] OP_MEMORY_END_PUSH_REC case in match_at(). renewal of mem_start_stk[] should be after STACK_PUSH_MEM_END() call. 2003/07/29: [new] add regex_get_encoding(), regex_get_options() and regex_get_syntax(). 2003/07/25: [spec] (thanks akr) change group(...) to shy-group(?:...) if named group is used in the pattern. add REG_SYN_CAPTURE_ONLY_NAMED_GROUP. 2003/07/24: [spec] rename REG_OPTION_CAPTURE_ONLY_NAMED_GROUP to REG_OPTION_DONT_CAPTURE_GROUP. add REG_OPTION_CAPTURE_GROUP. 2003/07/17: [spec] rename REG_SYN_OP2_NAMED_SUBEXP to REG_SYN_OP2_NAMED_GROUP. 2003/07/17: [spec] add REGERR_EMPTY_GROUP_NAME. 2003/07/17: [spec] rename REGERR_INVALID_SUBEXP_NAME to REGERR_INVALID_CHAR_IN_GROUP_NAME. 2003/07/17: [spec] restrict usable chars of group name to alphabet, digit, '_' or multibyte-char in fetch_name(). [ruby-dev:20706] 2003/07/16: [impl] minor change of sample/names.c. 2003/07/14: [impl] rename USE_NAMED_SUBEXP to USE_NAMED_GROUP. 2003/07/14: [bug] add fetch_name() for USE_NAMED_SUBEXP off case. 2003/07/14: [API] add regex_number_of_names(). 2003/07/08: [impl] change error message for undefined group number call. 'undefined group reference: /(a)\g<2>/' --> 'undefined group <2> reference: /(a)\g<2>/' 2003/07/08: [dist] modify doc/RE. 2003/07/07: [impl] OP_SET_OPTION is not needed in compiled code. add IS_DYNAMIC_OPTION() to regint.h. 2003/07/07: [spec] called group should not ignore outside option (?i:...). ex. /(?i:(?(a)\2)){0}\g/.match("aA") add opcode OP_BACKREFN_IC and OP_BACKREF_MULTI_IC. set option status to effect memory in optimize_node_left(). 2003/07/07: [impl] add opcode OP_ANYCHAR_ML, OP_ANYCHAR_ML_STAR and OP_ANYCHAR_ML_START_PEEK_NEXT. 2003/07/07: [bug] (thanks nobu) REG_MBLEN_TABLE[SJIS][0x80] should be 1. 2003/07/07: [spec] rename REG_SYN_OP_QUOTE to REG_SYN_OP_ESC_Q_QUOTE. 2003/07/04: Version 1.9.1 2003/07/04: [new] add REG_OPTION_CAPTURE_ONLY_NAMED_GROUP. (thanks .NET) 2003/07/04: [spec] check mbuf member in the case of REG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC in parse_char_class(). 2003/07/04: [spec] typo REG_SYN_WARN_FOR_CC_OP_NOT_ESCAPEED. should be REG_SYN_WARN_FOR_CC_OP_NOT_ESCAPED. 2003/07/04: [bug] conflict values on REG_SYN_WARN_FOR_CC_OP_NOT_ESCAPEED and REG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC. (thanks nobu) 2003/07/03: [spec] add REG_SYN_OP_ESC_CONTROL_CHAR flag. 2003/07/03: [spec] remove REG_SYN_OP_ESC_OCTAL3 and REG_SYN_OP_ESC_X_HEX2 flag from RegSyntaxGnuRegex. 2003/07/03: [spec] remove REG_SYN_OP_NON_GREEDY flag from RegSyntaxGnuRegex. 2003/07/02: [dist] fix doc/RE. 2003/07/01: [impl] add config flag USE_VARIABLE_SYNTAX. (turn off variable syntax on Ruby) 2003/07/01: [spec] add syntax behavior REG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND. 2003/06/30: [spec] allow different length top-level alternatives in look-behind. ex. (?<=abc|abcd), (? (?>a*)b (thanks Jeffrey E. F. Friedl) 2003/06/02: [impl] remove multibyte-BitSet for OP_CCLASS_MB/OP_CCLASS_MB_NOT. 2003/05/30: [new] char class intersection operator &&[...] like Java(TM). (thanks akr) 2003/05/30: [bug] should use bbuf_free() for CClassNode in regex_node_free(). 2003/05/29: [bug] wrong usage of syntax REG_SYN_ALLOW_EMPTY_RANGE_IN_CC. /[d-a]/ should be error. 2003/05/28: [impl] optimize stop-backtrack compiled code. (/(?>a*)/, /(?>\w+)/ etc...) add OP_POP opcode. 2003/05/28: [new] possessive repeat operator. (?+, *+, ++, {n,m}+) 2003/05/27: [spec] '-' at beginning of char-class should be warn only if it is start of range. (ex. /[--a]/) 2003/05/27: [spec] should not warn for right bracket at beginning of pattern. ex. /]aaa/ 2003/05/27: [spec] change CCEND_ESC_WARN() from VERB_WARNING() to WARNING(). 2003/05/27: [spec] /[]aaa/ should be empty char-class error. /[]aaa]/ should be warn for 'without backslash'. (add char_exist_check() in regparse.c) 2003/05/26: [bug] OP_REPEAT in recursive subexp call. ex. /(?(a|b\gc){3,5})/.match("baaaaca") => "baaaaca" was wrong result. (should be "aaaa") 2003/05/26: [impl] add num_call member to regex_t. 2003/05/26: [impl] add repeat_range member to regex_t. (for delete upper,lower members from StackType.u.repeat) 2003/05/26: [bug] change print_names() to external regex_print_names(). 2003/05/26: [tune] change OP_NULL_CHECK_END process in match_at(). 2003/05/26: [spec] change CCEND_ESC_WARN() from WARNING() to VERB_WARNING(). 2003/05/26: [spec] remove POSIXLINE option. (?p:...) (be made the same as Ruby.) 2003/05/22: [spec] use OP_NULL_CHECK_XXX only if repeat is infinite. prev. /(?:()|()){0,10}\1\2/ =~ "" ==> FAIL now /(?:()|()){0,10}\1\2/ =~ "" ==> MATCH 2003/05/22: [impl] change target_empty setting condition in setup_tree(). 2003/05/19: [impl] avoid zero length repeat optimization. (thanks matz) /()*/ ==> /()?/, /()+/ ==> /()/ etc... 2003/05/19: [impl] minor changes for gcc -Wall. (-DREG_DEBUG_STATISTICS case) 2003/05/19: [spec] rename regex_foreach_names() to regex_foreach_name(). 2003/05/16: [new] add --with-statistics option to configure. 2003/05/16: [bug] move RegOpInfo[] definition to regint.h. 2003/05/16: [new] add regex_version(). 2003/05/14: Version 1.8.6 2003/05/14: [bug] use _vsnprintf() on Win32. 2003/05/14: [spec] define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE. (/\n$/ =~ "\n", /\n\Z/ =~ "\n") [ruby-dev:20125] 2003/05/14: [impl] minor changes for gcc -Wall. 2003/05/14: [impl] add string.h check in AC_CHECK_HEADERS(). 2003/05/13: [impl] minor changes for gcc -Wall. 2003/05/13: [impl] add regex_snprintf_with_pattern(). 2003/05/13: [spec] add warning for char class meta character without escape in Ruby mode ('[', '-', ']'). 2003/05/13: [impl] define WARNING() and VERB_WARNING() in regint.h. 2003/05/13: [bug] correct is_code_ascii() for /[[:ascii:]]/. 2003/05/12: [dist] add regular expression document (doc/RE). 2003/05/12: [spec] specification of $(END_LINE) was made the same as Ruby 1.8. [ruby-dev:20130] (thanks matz) 2003/05/12: [memo] shifted to Subversion(version 0.21.0) from CVS. 2003/03/19: Version 1.8.5 2003/03/19: [impl] change REG_EXTERN definition. (thanks nobu) 2003/03/19: [impl] abbreviation for long error_par in regex_error_code_to_str(). 2003/03/18: [dist] change re.c.XXX.patch for GNU regex API changes. 2003/03/18: [spec] change API regex_new(), regex_recompile() and regex_error_code_to_str(). change API re_compile_pattern() and re_recompile_pattern(). 2003/03/18: [spec] replace REGERR_END_PATTERN_AT_GROUP_{COMMENT|OPTION} to REGERR_END_PATTERN_IN_GROUP. 2003/03/17: [impl] should free err_arg. 2003/03/17: [bug] mistake(high -> to) in add_wc_range_to_buf(). 2003/03/17: [spec] add err_arg argument to regex_new() and regex_recompile(). for detail error message. (thanks akr) 2003/03/12: Version 1.8.4 2003/03/12: [tune] use cached value of effect node in get_min_match_length(). 2003/03/12: [bug] escaped alphabet should be TK_RAW_BYTE in fetch_token() and fetch_token_in_cc(). 2003/03/12: [spec] change named backref and subexp call format. backref: \k, call: \g (thanks akr) 2003/03/11: [inst] add regparse.[ch] in win32/Makefile. 2003/03/11: [bug] if UNALIGNED_WORD_ACCESS isn't set, then compile error in unset_addr_list_fix(). (thanks knu) 2003/03/10: [impl] divide regcomp.c to regcomp.c, regparse.c and regparse.h. 2003/03/10: [bug] should handle multi-byte code name in fetch_name(). 2003/03/10: [spec] remove REGERR_TABLE_FOR_IGNORE_CASE_IS_NOT_SETTED. 2003/03/10: [spec] support POSIX API option REG_NOSUB. add comp_options member to POSIX API regex_t. 2003/03/10: Version 1.8.3 2003/03/10: [bug] can not compile with Ruby 1.6.8. (inconsistent st.h with 1.6 and 1.8) use hash table on Ruby 1.8 only. 2003/03/10: [spec] forbid to use '\' in group name. 2003/03/08: [impl] remove check_backref_number(). 2003/03/08: [bug] called group in 0-repeat should not be eliminated from compile code. ex. /(?*n)(?){0}/ (thanks akr) add is_refered member to QualifierNode. 2003/03/07: [impl] use hash table(st.[ch]) for implementation of name table. (enable on Ruby in default) 2003/03/07: [new] add regex_foreach_names(). 2003/03/06: [impl] add member reg->stack_pop_level. 2003/03/06: [impl] add operator OP_MEMORY_START and member reg->backtrack_mem. 2003/03/06: [bug] if REG_OPTION_FIND_LONGEST or REG_OPTION_NOT_EMPTY, should handle backtrack of MEM_END. add OP_MEMORY_END_PUSH and OP_MEMORY_END_PUSH_REC. 2003/03/06: [impl] rename OP_MEMORY_END_PUSH to OP_MEMORY_END_MARK. 2003/03/06: [spec] change error messages. 2003/03/06: [tune] add tiny_pop check in STACK_POP. 2003/03/05: Version 1.8.2 2003/03/05: [impl] use cache info in EFFECT_MEMORY case in optimize_node_info(). 2003/03/05: [impl] add EFFECT_MEMORY node reference count check in optimize_node_left(). 2003/03/05: [impl] add min-len, max-len, char-len cache in EffectNode. 2003/03/05: [spec] allow to call in look behind. ex. /(?<=(?*a))/ 2003/03/05: [bug] forgotten N_ANCHOR case in check_backref_number(), subexp_inf_recursive_check_trav() etc... 2003/03/05: [impl] rename USE_ONIGURUMA_EXTENSION to USE_SBMB_CLASS. 2003/03/04: [impl] add CALL-node info in optimize_node_left(). 2003/03/04: [spec] prohibit left recursion of subexp call. ex. (?|(?*n)a) add subexp_inf_recursive_check_trav(). 2003/03/04: [spec] rename REG_SYN_STRICT_CHECK_BACKREF_NUMBER to REG_SYN_STRICT_CHECK_BACKREF 2003/03/03: [bug] /(?a(?*n)|)/ isn't infinite recursion. fix N_LIST case in subexp_recursive_check(). (thanks akr) 2003/03/03: [bug] /(?|(?*n))+/ segmentation fault. should re-allocate in unset_addr_list_add(). (thanks akr) 2003/03/01: Version 1.8.1 2003/03/01: [bug] change STACK_GET_MEM_START() and STACK_PUSH_MEM_END(). 2003/03/01: [new] add reg_name_to_group_numbers() to POSIX API. 2003/03/01: [impl] use OP_MEMORY_END_PUSH in callable subexp compiled code only if subexp is recursive. 2003/03/01: [spec] rename regex_name_to_backrefs() to regex_name_to_group_numbers(). 2003/02/28: [impl] use function stack_double() instead of macro. 2003/02/28: [new] subexp call. (?*name) (thanks akr) 2003/02/28: [spec] add match stack limit check. (MATCH_STACK_LIMIT_SIZE) 2003/02/28: [impl] check recursive subexp call. 2003/02/28: [impl] add opcode OP_MEMORY_END_PUSH for callable subexp. 2003/02/28: [impl] add opcode OP_CALL, OP_RETURN. add stack type STK_CALL_FRAME, STK_RETURN, STK_MEM_END. 2003/02/26: [spec] add new syntax behavior REG_SYN_STRICT_CHECK_BACKREF_NUMBER. if it is set, then error /(\1)/, /\1(..)/ etc... 2003/02/26: [spec] if backref number is greater than max group number, then return compile error. (REGERR_INVALID_BACKREF_NUMBER) 2003/02/26: [tune] bad implemented N_ALT case in get_min_match_length(). 2003/02/26: [dist] auto update testc.c and win32/testc.c in dist target. 2003/02/26: [impl] add -win option to testconv.rb. 2003/02/25: [spec] allow to assign same name to different group. add OP_BACKREF_MULTI. 2003/02/24: [impl] reduce redundant repeat of empty target. ex. /()*/ ==> /()?/, /()+/ ==> /()/, /(?:)+/ ==> // 2003/02/24: [impl] change condition in regex_is_allow_reverse_match(). 2003/02/24: [impl] convert i(/../, ...) functions in testconv.rb. 2003/02/24: [impl] change name table struct. 2003/02/22: Version 1.8.0 2003/02/22: [new] named subexp, named back reference. (thanks akr) define: (?...), back-ref: \g 2003/02/22: [impl] use str_node_can_be_split(). 2003/02/21: [dist] add sample/posix.c 2003/02/21: [spec] rename some error code symbols. 2003/02/21: [spec] max number of multibyte ranges(255) is small. 255 --> 1000. (thanks MoonWolf) 2003/02/20: [new] supported Basic Regular Expression(BRE) in POSIX API. (REG_EXTENDED option: Extended RE) 2003/02/20: [new] variable syntax. 2003/02/12: Version 1.7.2 2003/02/12: [bug] mismatch /\?a/i.match('?A'). check raw value in scan_make_node() and scan_backslash(). (thanks Nobu) 2003/02/12: [impl] rename 'max_mem' to 'num_mem' in regex_t. 2003/02/12: [impl] rename 'code' to 'enc' in regex_t. 2003/02/12: [spec] remove transtable argument in regex_new and regex_recompile. remove transtable member in regex_t. 2003/02/10: [inst] change backup file suffix name from '.orig' to '.ruby_orig'. (win32/Makefile) 2003/02/10: [spec] number check in scan_char_class() ignore-case mode. ex. /[\x58-\x64]/i 2003/02/10: [impl] don't use OP_MEMORY_END_PUSH (and STK_MEM_END). 2003/02/10: [impl] lift up head_exact value from child qualifier node to parent. 2003/02/10: [tune] change stack type values. 2003/02/10: [dist] add HISTORY. 2003/02/08: [tune] change stack type values. 2003/02/08: [tune] add STACK_BASE_CHECK(). 2003/02/08: [tune] add STACK_PUSH_ENSURED(). 2003/02/08: [dist] change contents of doc/API. 2003/02/07: [inst] change backup file suffix name from '.orig' to '.ruby_orig'. 2003/02/07: [spec] range in char-class should be same spec. with Ruby in ignore-case mode. (ex. /[A-c]/i == /[a-c]/i) (thanks MoonWolf) 2003/02/07: [spec] [!--] should be allowed. (thanks MoonWolf) 2003/02/07: [dist] refresh re.c.180.patch for re.c (2003-02-06). 2003/02/07: Version 1.7.1 2003/02/07: [impl] check first byte of string in ignore-case mode. (get_head_exact_node()) 2003/02/07: [impl] remove redundant statements in setup_tree(). 2003/02/06: [new] create Win32 DLL. 2003/02/06: [impl] use P_() macro for function prototype. 2003/02/06: [impl] add HAVE_PROTOTYPE, HAVE_STDARG_PROTOTYPES in configure.in and config.h.in. 2003/02/06: [spec] /[0-9-a]/ is allowed as usual char '-' and 'a' in Ruby. add USE_BETTER_COMPATIBILITY_FOR_ORIGINAL_REGEX in regint.h. (thanks MoonWolf) 2003/02/06: [spec] rename REG_MBCTYPE_XXXX to REG_ENCODING_XXXX in onigposix.h. 2003/02/05: [spec] rename MBCTYPE_XXXX to REG_MBCTYPE_XXXX in onigposix.h. 2003/02/05: [spec] add POSIX API error REG_EONIG_THREAD to onigposix.h. 2003/02/05: [dist] add .cvsignore file. 2003/02/04: Version 1.7 2003/02/04: [bug] typo miss in regex_region_copy(). 2003/02/04: [impl] change THREAD_PASS macro. (regint.h) 2003/02/04: [dist] add API document file doc/API. 2003/02/04: [tune] if sub_anchor has ANCHOR_BEGIN_LINE then set REG_OPTIMIZE_EXACT_BM in set_optimize_exact_info(). 2003/02/04: [spec] reimplement regex_clone() and it is obsoleted. 2003/02/04: [bug] add REGERR_OVER_THREAD_PASS_LIMIT_COUNT to regerror.c regposix.c. 2003/02/03: [bug] Hankaku-Kana may be second byte in Shift_JIS regex_is_allow_reverse_match(). 2003/02/03: [impl] add optimization type REG_OPTIMIZE_EXACT_BM_NOT_REV. remove exact_allow_reverse_match member in regex_t. 2003/02/03: [impl] add exact_allow_reverse_match member in regex_t. 2003/02/03: [impl] compile-search conflict in regex_search() is handled. 2003/02/01: [tune] decrease regex_region_clear() calling from regex_search(). 2003/02/01: [tune] remove region argument from match_at(). 2003/01/31: [tune] don't use strlen() in regexec() and regcomp(). 2003/01/31: [tune] decrease regex_reduce_chain() calling in regex_search(). 2003/01/31: [bug] STRING_CMP() in regexec.c was wrong in ignore-case. 2003/01/31: [impl] convert to lower-case char at string compile time. change SBTRANSCMP() in regexec.c. 2003/01/31: [impl] rename TTRANS() to TOLOWER(). 2003/01/30: [bug] .c.o --> .c.obj in win32\Makefile. 2003/01/30: [impl] add -DNOT_RUBY to Makefile.in. NOT_RUBY is refered in regint.h for escape double including config.h. 2003/01/30: [impl] when string hasn't case ambiguity, don't compile to ignore case opcode. 2003/01/29: [impl] add SJIS, UTF-8 test_sb() test. 2003/01/29: [dist] add INSTALL-RUBY file. 2003/01/28: [test] success in Cygwin, Ruby 1.8.0 (2003-01-27). 2003/01/24: [inst] add rback target to Makefile.in. 2003/01/24: [impl] change SBCMP() -> IS_NEWLINE() in match_at(). 2003/01/23: [impl] add encoding arg to scan_xxxx_number(). 2003/01/23: [impl] rename WCInt to WCINT. 2003/01/22: [bug] POSIX API regexec() was not thread safe. remove region member from POSIX regex_t. [new] add search time option REG_OPTION_POSIX_REGION. (region argument is treated as regmatch_t[] type) speed up regexec(). 2003/01/22: [memo] start CVS entry in my box. 2003/01/21: Version 1.6 2003/01/21: [test] Mac OS X 10.1, Ruby 1.8.0 (2003-01-20) 2003/01/20: [impl] add UTF-8 check to test.rb. (thanks UENO Katsuhiro) 2003/01/18: [impl] change REGION_NOTPOS to REG_REGION_NOTPOS in regex.h. 2003/01/17: [dist] add sample/simple.c. 2003/01/17: [inst] add configure option --with-rubydir. 2003/01/17: [bug] bad implemeted POSIX API options. default: /./ not match "\n", anchor not match "\n" REG_NEWLINE: /./ not match "\n", anchor match "\n" 2003/01/16: [impl] rewrite POSIX API regexec() for speed up. 2003/01/16: [impl] add region member to POSIX regex_t struct. 2003/01/16: [inst] rename library file from 'libregex.a' to 'libonig.a'. 2003/01/15: [dist] add testc.c to distribution file. 2003/01/15: [test] success in 'make rtest/ctest/ptest' on Windows 2000. 2003/01/15: [bug] change '/' to \' in win32/Makefile. 2003/01/14: [test] success in Ruby make test on Windows 2000. VC++6.0, Ruby 1.6.8 (2003-01-12) 2003/01/14: [inst] change Makefile.in and win32/Makefile. 2003/01/11: [inst] changes for Win32 platform. (regint.h, reggnu.c, regcomp.c) 2003/01/11: [dist] add win32 directory. (config.h, Makefile, testc.c) 2003/01/10: [inst] add onigposix.h to install target. (Makefile.in) 2003/01/10: [bug] lacked a comma in ESTRING[]. (regposerr.c) 2003/01/10: [bug] local variable name was wrong. buf -> tbuf (regerror()) 2003/01/10: [spec] remove REG_RUBY_M17N case from onigposix.h and regposix.c. 2003/01/09: Version 1.5 2003/01/09: [inst] replace Ruby re.c.XXX.patch files. (166 -> 168, 172 -> 180) 2003/01/09: [new] implement POSIX API. (thanks knu) (onigposix.h, regposix.c, regposerr.c) 2003/01/08: [spec] remove REGERR_END_PATTERN_AFTER_BACKSLASH in regex.h. 2003/01/08: [spec] region arg can be NULL in regex_search() and regex_match(). 2003/01/08: Version 1.4 2003/01/08: [inst] add test program converter (test.rb -> testc.c). 2003/01/08: [bug] move GET_WCINT() from regcomp.c to regint.h. 2003/01/07: [inst] add new test script (test.rb). 2002/12/30: [bug] wrong merge in multibyte mode (alt_merge_opt_exact_info()). 2002/12/28: [inst] add rtest target to Makefile.in. 2002/12/28: [bug] /\xfe/.match("\xfe") mismatch in multibyte mode. add "raw" flag arg to concat_opt_exact_info_str(). 2002/12/25: [bug] check condition was wrong in alt_merge_opt_map_info(). 2002/12/25: [impl] add threshold_len check in regex_search(). 2002/12/23: [bug] prec-read in alternative (/a|(?=z).f/.match("zf") => nil) 2002/12/23: [bug] \G in alternative (/a|\Gz/.match("bza") => "z"). add start member in MatchArg. (regexec.c) 2002/12/21: [impl] **** rewrite all optimization process. **** 2002/12/16: [impl] remove node subtype EFFECT_EMPTY. 2002/12/12: [impl] reconstruct node types. (regcomp.c) 2002/12/11: [impl] add regerror.c 2002/12/10: [bug] [ruby-dev:19042] (thanks Nobu) anchor(\G etc...) influenced outside of "|". (/a|\Gb/) 2002/11/30: [bug] [ruby-dev:18966] (thanks Nobu) char-class(\S, [^\s] etc...) optimize map-info was wrong. 2002/11/29: [bug] infinite loop on NULL-pointer str search (regex_search()). (thanks matz) 2002/11/29: [bug] change static -> extern (regex_chain_reduce()). 2002/11/29: [bug] change encoding to RegDefaultCharEncoding in re_recompile_pattern(). (adapt to re.c) 2002/04/24: [spec] USE_ONIGURUMA_EXTENSION is disabled in default. 2002/04/24: [new] add searching time option: REG_OPTION_NOTBOL/NOTEOL. add searching time option argument to regex_search() and regex_match(). (prepare for POSIX API) 2002/04/20: [impl] divide regex.c file into regcomp.c, regexec.c, reggnu.c and regint.h. 2002/04/09: [impl] move IS_MULTILINE() to outside of loop in OP_ANYCHAR_STAR. 2002/04/08: [impl] don't use OP_REPEAT operator for '??'. 2002/04/06: [impl] reduce redundant nested repeat operators(?,*,+,??,*?,+?). ex. (?:a*)?, (?:a??)* etc.. 2002/04/06: [spec] should not warn for /(?:a?)+?/. 2002/04/04: [spec] should allow fixed length alternative and repeat pattern in look-behind. ex. /(?<=(a|b){3})/ (thanks Guy Decoux) 2002/04/02: [spec] should warn for /(?:a+)?/ and /(?:a*)??/. (thanks akr) 2002/04/01: Version 1.3 2002/04/01: [dist] add COPYING. 2002/03/30: [spec] warn redundant nested repeat operator in Ruby verbose mode. ex. (?:a*)? 2002/03/30: [spec] nested repeat operator error check should be same with GNU regex. (thanks Guy Decoux) 2002/03/30: [new] add \x{hexadecimal-wide-char}. (thanks matz) 2002/03/27: [bug] MBCTYPE_XXX symbol values should be same with GNU regex. 2002/03/27: [impl] add THREAD_ATOMIC to regex_clone(), regex_init(), regex_end(). 2002/03/25: [spec] if encoding is utf-8, allow combination of singlebyte and multibyte code range in char class. (cancelled 2002/04/01: for M17N compatibility) 2002/03/25: [dist] description of the license condition is added to README. 2002/03/23: [bug] should set all bits of reg->mem_stats, if REG_OPTION_FIND_LONGEST or REG_OPTION_NOT_EMPTY. 2002/03/23: [new] add a new option REG_OPTION_NOT_EMPTY. 2002/03/20: [spec] allow incompleted left brace as an usual char. ex. /{/, /({)/, /a{2,3/ etc... 2002/03/20: [impl] serialize integer in bytecode. (switch by UNALIGNED_WORD_ACCESS in regex.c) 2002/03/20: [impl] change re_mbcinit() for REG_RUBY_M17N. 2002/03/19: [impl] word alignment of char class multi-byte code ranges. 2002/03/19: [impl] replace OP_EXACTMB4N with OP_EXACTMB3N. 2002/03/19: [bug] OP_CCLASS_MB_NOT process in matchAt() is wrong. 2002/03/19: [new] add re_mbctab[] for Ruby extension library compatibility. 2002/03/19: [spec] allow nested repeat operator, if operator is {n,m} type. 2002/03/19: [new] add REG_IS_PATTERN_ERROR(ecode) in regex.h 2002/03/18: [spec] /[a-b-c]/ should be error. 2002/03/18: [bug] /[\w-a]/ should be error. (thanks Guy Decoux) 2002/03/18: [bug] /[\]/ should be error. (thanks Guy Decoux) 2002/03/18: [bug] /()*/ etc.. should not be error. (thanks Guy Decoux) 2002/03/18: [spec] /a{1}*/ should not be error. (thanks Guy Decoux) 2002/03/18: [bug] ab{2}{3} was interpreded to (?:a(?:b{2})){3} (thanks Guy Decoux) 2002/03/18: [bug] abort /(?i)*a/ etc... (thanks Guy Decoux) 2002/03/18: [bug] abort /a|*/,/a|{1}/ etc... (thanks Guy Decoux) 2002/03/13: Version 1.2 2002/03/13: [test] success in rubicon/builtin/AllBuiltinTests.rb. (thanks rubicon) 2002/03/13: [bug] OP_EXACTMBN process in matchAt() is wrong. 2002/03/13: [bug] start argument of BackwardSearchRange() is wrong. 2002/03/12: [spec] change function name style from CamelCase to underline_separation. (includes API) 2002/03/12: [bug] if pattern has nested null-check, cause infinite loop. correct STACK_NULL_CHECK() macro. (thanks Guy Decoux) 2002/03/11: [bug] it is wrong that four numbers to continue as an octal value in scanBackSlash(). ex. /\0111/ (thanks matz) 2002/03/11: [new] \k (single-byte word char), \K (multi-byte char). 2002/03/09: [inst] add two targets to Makefile.in (166 and 172). 2002/03/09: [spec] decrease REG_MAX_BACKREF_NUM, REG_MAX_REPEAT_NUM values. 2002/03/08: [spec] allow use of "\A"(begin-buf) in look-behind. 2002/03/08: [impl] add a new opcode OP_PUSH_IF_PEEK_NEXT. 2002/03/08: [impl] add a new opcode OP_ANYCHAR_STAR_PEEK_NEXT. 2002/03/07: [spec] prohibit use of capture group "(...)" in negative look-behind. 2002/03/07: [inst] add configure.in, config.h.in, Makefile.in. 2002/03/07: [impl] call Init_REGEX_STAT() in RegexInit(). 2002/03/07: [spec] less length string match with negative look-behind. ex. /(? svn copy file:///home/kosako/svnreps/svnrep_onig/trunk file:///home/kosako/svnreps/svnrep_onig/tags/5.0.0 -m "ADD TAG: 5.0.0" svn propset svn:ignore -F .cvsignore . svn commit -m "..." cvs history -T cvs rtag "VERSION_X_X_X" oniguruma * write Makefile.am and configure.in. > aclocal > libtoolize or glibtoolize > automake --foreign --add-missing > autoconf > configure --with-rubydir=... CFLAGS="-O2 -Wall" VERSION = current:revision:age current: interface number (from 0) revision: implementation number of same interface (from 0) age: number of supported previous interfaces (if current only supported then age == 0) //END oniguruma-6.7.0/INSTALL000066400000000000000000000366101321242335200145660ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command `./configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. oniguruma-6.7.0/Makefile.am000066400000000000000000000021601321242335200155620ustar00rootroot00000000000000## Makefile.am for Oniguruma ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src test sample 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 \ doc/API doc/API.ja doc/RE doc/RE.ja doc/FAQ doc/FAQ.ja \ doc/UNICODE_PROPERTIES \ src/Makefile.windows src/config.h.win32 src/config.h.win64 \ windows/testc.c contributed/libfuzzer-onig.cpp bin_SCRIPTS = onig-config onig-config: onig-config.in do_subst = sed \ -e 's,[@]datadir[@],$(datadir),g' \ -e 's,[@]datarootdir[@],$(datarootdir),g' \ -e 's,[@]PACKAGE_VERSION[@],$(PACKAGE_VERSION),g' \ -e 's,[@]prefix[@],$(prefix),g' \ -e 's,[@]exec_prefix[@],$(exec_prefix),g' \ -e 's,[@]libdir[@],$(libdir),g' \ -e 's,[@]includedir[@],$(includedir),g' oniguruma.pc: $(srcdir)/oniguruma.pc.in Makefile $(do_subst) < $(srcdir)/oniguruma.pc.in > $(@) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = oniguruma.pc oniguruma-6.7.0/NEWS000066400000000000000000000000001321242335200142140ustar00rootroot00000000000000oniguruma-6.7.0/README000066400000000000000000000132221321242335200144070ustar00rootroot00000000000000README 2017/08/25 Oniguruma ---- (C) K.Kosako 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 --- Oniguruma is a regular expressions library. The characteristics of this library is that different character encoding for every regular expression object can be specified. Supported character encodings: ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, EUC-JP, EUC-TW, EUC-KR, EUC-CN, Shift_JIS, Big5, GB18030, KOI8-R, CP1251, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 * GB18030: contributed by KUBO Takehiro * CP1251: contributed by Byte ------------------------------------------------------------ License BSD license. Install Case 1: Unix and Cygwin platform 1. autoreconf -vfi (* case: configure script is not found.) 2. ./configure 3. make 4. make install * uninstall make uninstall * configuration check onig-config --cflags onig-config --libs onig-config --prefix onig-config --exec-prefix Case 2: Windows 64/32bit platform (Visual Studio) execute make_win64 or make_win32 src/onig_s.lib: static link library src/onig.dll: dynamic link library * test (ASCII/Shift_JIS) 1. cd src 2. copy ..\windows\testc.c . 3. nmake -f Makefile.windows ctest (I have checked by Visual Studio Community 2015) Regular Expressions See doc/RE (or doc/RE.ja for Japanese). Usage Include oniguruma.h in your program. (Oniguruma API) See doc/API for Oniguruma API. If you want to disable UChar type (== unsigned char) definition in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then include oniguruma.h. If you want to disable regex_t type definition in oniguruma.h, define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. Example of the compiling/linking command line in Unix or Cygwin, (prefix == /usr/local case) cc sample.c -L/usr/local/lib -lonig If you want to use static link library(onig_s.lib) in Win32, add option -DONIG_EXTERN=extern to C compiler. Sample Programs sample/simple.c example of the minimum (Oniguruma API) sample/names.c example of the named group callback. sample/encode.c example of some encodings. sample/listcap.c example of the capture history. sample/posix.c POSIX API sample. sample/sql.c example of the variable meta characters. (SQL-like pattern matching) sample/user_property.c example of user defined Unicode property. Test Programs sample/syntax.c Perl, Java and ASIS syntax test. sample/crnl.c --enable-crnl-as-line-terminator test Source Files oniguruma.h Oniguruma API header file. (public) onig-config.in configuration check program template. regenc.h character encodings framework header file. regint.h internal definitions regparse.h internal definitions for regparse.c and regcomp.c regcomp.c compiling and optimization functions regenc.c character encodings framework. regerror.c error message function regext.c extended API functions. (deluxe version API) regexec.c search and match functions regparse.c parsing functions. regsyntax.c pattern syntax functions and built-in syntax definitions. regtrav.c capture history tree data traverse functions. regversion.c version info function. st.h hash table functions header file st.c hash table functions oniggnu.h GNU regex API header file. (public) reggnu.c GNU regex API functions onigposix.h POSIX API header file. (public) regposerr.c POSIX error message function. regposix.c POSIX API functions. mktable.c character type table generator. ascii.c ASCII encoding. euc_jp.c EUC-JP encoding. euc_tw.c EUC-TW encoding. euc_kr.c EUC-KR, EUC-CN encoding. sjis.c Shift_JIS encoding. big5.c Big5 encoding. gb18030.c GB18030 encoding. koi8.c KOI8 encoding. koi8_r.c KOI8-R encoding. cp1251.c CP1251 encoding. iso8859_1.c ISO-8859-1 encoding. (Latin-1) iso8859_2.c ISO-8859-2 encoding. (Latin-2) iso8859_3.c ISO-8859-3 encoding. (Latin-3) iso8859_4.c ISO-8859-4 encoding. (Latin-4) iso8859_5.c ISO-8859-5 encoding. (Cyrillic) iso8859_6.c ISO-8859-6 encoding. (Arabic) iso8859_7.c ISO-8859-7 encoding. (Greek) iso8859_8.c ISO-8859-8 encoding. (Hebrew) iso8859_9.c ISO-8859-9 encoding. (Latin-5 or Turkish) iso8859_10.c ISO-8859-10 encoding. (Latin-6 or Nordic) iso8859_11.c ISO-8859-11 encoding. (Thai) iso8859_13.c ISO-8859-13 encoding. (Latin-7 or Baltic Rim) iso8859_14.c ISO-8859-14 encoding. (Latin-8 or Celtic) iso8859_15.c ISO-8859-15 encoding. (Latin-9 or West European with Euro) iso8859_16.c ISO-8859-16 encoding. (Latin-10 or South-Eastern European with Euro) utf8.c UTF-8 encoding. utf16_be.c UTF-16BE encoding. utf16_le.c UTF-16LE encoding. utf32_be.c UTF-32BE encoding. utf32_le.c UTF-32LE encoding. unicode.c common codes of Unicode encoding. win32/Makefile Makefile for Win32 (VC++) win32/config.h config.h for Win32 and I'm thankful to Akinori MUSHA. oniguruma-6.7.0/README.md000066400000000000000000000225651321242335200150200ustar00rootroot00000000000000Oniguruma ========= 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** Oniguruma is a regular expressions library. The characteristics of this library is that different character encoding for every regular expression object can be specified. Supported character encodings: ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, EUC-JP, EUC-TW, EUC-KR, EUC-CN, Shift_JIS, Big5, GB18030, KOI8-R, CP1251, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 * GB18030: contributed by KUBO Takehiro * CP1251: contributed by Byte New feature of version 6.7.0 -------------------------- * NEW: hexadecimal codepoint \uHHHH * NEW: add ONIG_SYNTAX_ONIGURUMA (== ONIG_SYNTAX_DEFAULT) * Disabled \N and \O on ONIG_SYNTAX_RUBY * Reduced object size 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 -------------------------- * NEW: \K (keep) * NEW: \R (general newline) \N (no newline) * NEW: \O (true anychar) * NEW: if-then-else syntax (?(...)...\|...) * NEW: Backreference validity checker (?(xxx)) (*original) * NEW: Absent repeater (?~absent) * NEW: Absent expression (?~|absent|expr) (*original) * NEW: Absent stopper (?~|absent) (*original) New feature of version 6.4.0 -------------------------- * Fix fatal problem of endless repeat on Windows * NEW: call zero (call the total regexp) \g<0> * NEW: relative backref/call by positive number \k<+n>, \g<+n> New feature of version 6.3.0 -------------------------- * NEW: octal codepoint \o{.....} New feature of version 6.1.2 -------------------------- * allow word bound, word begin and word end in look-behind. * NEW option: ONIG_OPTION_CHECK_VALIDITY_OF_STRING New feature of version 6.1 -------------------------- * improved doc/RE * NEW API: onig_scan() New feature of version 6.0 -------------------------- * Update Unicode 8.0 Property/Case-folding * NEW API: onig_unicode_define_user_property() License ------- BSD license. Install ------- ### Case 1: Unix and Cygwin platform 1. autoreconf -vfi (* case: configure script is not found.) 2. ./configure 3. make 4. make install * uninstall make uninstall * configuration check onig-config --cflags onig-config --libs onig-config --prefix onig-config --exec-prefix ### Case 2: Windows 64/32bit platform (Visual Studio) execute make_win64 or make_win32 onig_s.lib: static link library onig.dll: dynamic link library * test (ASCII/Shift_JIS) 1. cd src 2. copy ..\windows\testc.c . 3. nmake -f Makefile.windows ctest (I have checked by Visual Studio Community 2015) Regular Expressions ------------------- See [doc/RE](doc/RE) or [doc/RE.ja](doc/RE.ja) for Japanese. Usage ----- Include oniguruma.h in your program. (Oniguruma API) See doc/API for Oniguruma API. If you want to disable UChar type (== unsigned char) definition in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then include oniguruma.h. If you want to disable regex_t type definition in oniguruma.h, define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h. Example of the compiling/linking command line in Unix or Cygwin, (prefix == /usr/local case) cc sample.c -L/usr/local/lib -lonig If you want to use static link library(onig_s.lib) in Win32, add option -DONIG_EXTERN=extern to C compiler. Sample Programs --------------- |File |Description | |:---------------------|:-----------------------------------------| |sample/simple.c |example of the minimum (Oniguruma API) | |sample/names.c |example of the named group callback. | |sample/encode.c |example of some encodings. | |sample/listcap.c |example of the capture history. | |sample/posix.c |POSIX API sample. | |sample/scan.c |example of using onig_scan(). | |sample/sql.c |example of the variable meta characters. | |sample/user_property.c|example of user defined Unicode property. | Test Programs |File |Description | |:------------------|:--------------------------------------| |sample/syntax.c |Perl, Java and ASIS syntax test. | |sample/crnl.c |--enable-crnl-as-line-terminator test | Source Files ------------ |File |Description | |:------------------|:-------------------------------------------------------| |oniguruma.h |Oniguruma API header file (public) | |onig-config.in |configuration check program template | |regenc.h |character encodings framework header file | |regint.h |internal definitions | |regparse.h |internal definitions for regparse.c and regcomp.c | |regcomp.c |compiling and optimization functions | |regenc.c |character encodings framework | |regerror.c |error message function | |regext.c |extended API functions (deluxe version API) | |regexec.c |search and match functions | |regparse.c |parsing functions. | |regsyntax.c |pattern syntax functions and built-in syntax definitions| |regtrav.c |capture history tree data traverse functions | |regversion.c |version info function | |st.h |hash table functions header file | |st.c |hash table functions | |oniggnu.h |GNU regex API header file (public) | |reggnu.c |GNU regex API functions | |onigposix.h |POSIX API header file (public) | |regposerr.c |POSIX error message function | |regposix.c |POSIX API functions | |mktable.c |character type table generator | |ascii.c |ASCII encoding | |euc_jp.c |EUC-JP encoding | |euc_tw.c |EUC-TW encoding | |euc_kr.c |EUC-KR, EUC-CN encoding | |sjis.c |Shift_JIS encoding | |big5.c |Big5 encoding | |gb18030.c |GB18030 encoding | |koi8.c |KOI8 encoding | |koi8_r.c |KOI8-R encoding | |cp1251.c |CP1251 encoding | |iso8859_1.c |ISO-8859-1 (Latin-1) | |iso8859_2.c |ISO-8859-2 (Latin-2) | |iso8859_3.c |ISO-8859-3 (Latin-3) | |iso8859_4.c |ISO-8859-4 (Latin-4) | |iso8859_5.c |ISO-8859-5 (Cyrillic) | |iso8859_6.c |ISO-8859-6 (Arabic) | |iso8859_7.c |ISO-8859-7 (Greek) | |iso8859_8.c |ISO-8859-8 (Hebrew) | |iso8859_9.c |ISO-8859-9 (Latin-5 or Turkish) | |iso8859_10.c |ISO-8859-10 (Latin-6 or Nordic) | |iso8859_11.c |ISO-8859-11 (Thai) | |iso8859_13.c |ISO-8859-13 (Latin-7 or Baltic Rim) | |iso8859_14.c |ISO-8859-14 (Latin-8 or Celtic) | |iso8859_15.c |ISO-8859-15 (Latin-9 or West European with Euro) | |iso8859_16.c |ISO-8859-16 (Latin-10) | |utf8.c |UTF-8 encoding | |utf16_be.c |UTF-16BE encoding | |utf16_le.c |UTF-16LE encoding | |utf32_be.c |UTF-32BE encoding | |utf32_le.c |UTF-32LE encoding | |unicode.c |common codes of Unicode encoding | |unicode_fold_data.c|Unicode folding data | |win32/Makefile |Makefile for Win32 (VC++) | |win32/config.h |config.h for Win32 | oniguruma-6.7.0/README_japanese000066400000000000000000000132061321242335200162570ustar00rootroot00000000000000README.ja 2017/08/25 オエシヨ ---- (C) K.Kosako https://github.com/kkos/oniguruma オエシヨ、マタオオャノスクス・鬣、・ヨ・鬣熙ヌ、「、。」 、ウ、ホ・鬣、・ヨ・鬣熙ホニテトケ、マ。「、ス、、セ、、ホタオオャノスクス・ェ・ヨ・ク・ァ・ッ・ネ、エ、ネ、ヒ ハクサ・ィ・・ウ。シ・ヌ・」・・ー、サリト熙ヌ、ュ、、ウ、ネ、ヌ、「、。」 ・オ・ン。シ・ネ、キ、ニ、、、ハクサ・ィ・・ウ。シ・ヌ・」・・ー: ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, EUC-JP, EUC-TW, EUC-KR, EUC-CN, Shift_JIS, Big5, GB18030, KOI8-R, CP1251, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16 * GB18030: オラハンキヘホサ眛カ。 * CP1251: Byteサ眛カ。 ------------------------------------------------------------ ・鬣、・サ・・ケ BSD・鬣、・サ・・ケ ・、・・ケ・ネ。シ・ ・ア。シ・ケ」ア: Unix、ネCygwinエトカュ 1. autoreconf -vfi (* configure・ケ・ッ・・ラ・ネ、ャ、ハ、、、ネ、ュ、タ、ア) 2. ./configure 3. make 4. make install ・「・・、・・ケ・ネ。シ・ make uninstall ケスタョウホヌァ onig-config --cflags onig-config --libs onig-config --prefix onig-config --exec-prefix ・ア。シ・ケ」イ: Windows 64/32bit (Visual Studio)エトカュ make_win64 、「、、、、マ make_win32 、シツケヤ onig_s.lib: static link library onig.dll: dynamic link library * ニーコ・ニ・ケ・ネ (ASCII/Shift_JIS) 1. cd src 2. copy ..\windows\testc.c . 3. nmake -f Makefile.windows ctest (Visual Studio Community 2015 、ヌニーコウホヌァ) タオオャノスクス doc/RE.ja、サイセネ サネヘムハヒ。 サネヘム、ケ、・ラ・・ー・鬣爨ヌ。「oniguruma.h、・、・・ッ・。シ・ノ、ケ、(Oniguruma API、ホセケ)。」 Oniguruma API、ヒ、ト、、、ニ、マ。「doc/API.ja、サイセネ。」 oniguruma.h、ヌトオチ、オ、、ニ、、、キソフセUChar(== unsigned char)、フオク、ヒ、キ、ソ、、セケ 、ヒ、マ。「ONIG_ESCAPE_UCHAR_COLLISION、define、キ、ニ、ォ、駮niguruma.h、・、・・ッ・。シ・ノ 、ケ、、ウ、ネ。」、ウ、ホ、ネ、ュ、ヒ、マUChar、マトオチ、オ、、コ。「OnigUChar、ネ、、、ヲフセチー、ホトオチ、ホ、゚、ャ ヘュク、ヒ、ハ、。」 oniguruma.h、ヌトオチ、オ、、ニ、、、キソフセregex_t、フオク、ヒ、キ、ソ、、セケ遉ヒ、マ。「 ONIG_ESCAPE_REGEX_T_COLLISION、define、キ、ニ、ォ、駮niguruma.h、・、・・ッ・。シ・ノ 、ケ、、ウ、ネ。」、ウ、ホ、ネ、ュ、ヒ、マregex_t、マトオチ、オ、、コ。「OnigRegexType, OnigRegex、ネ、、、ヲ フセチー、ホトオチ、ホ、゚、ャヘュク、ヒ、ハ、。」 Unix/Cygwinセ螟ヌ・ウ・・ム・、・。「・・・ッ、ケ、セケ遉ホホ罍ァ (prefix、ャ/usr/local、ホ、ネ、ュ) cc sample.c -L/usr/local/lib -lonig GNU libtool、サネヘム、キ、ニ、、、、ホ、ヌ。「・ラ・鬣テ・ネ・ユ・ゥ。シ・爨ャカヲヘュ・鬣、・ヨ・鬣熙・オ・ン。シ・ネ、キ、ニ 、、、、ミ。「サネヘム、ヌ、ュ、、隍ヲ、ヒ、ハ、テ、ニ、、、。」 タナナェ・鬣、・ヨ・鬣熙ネカヲヘュ・鬣、・ヨ・鬣熙ホ、ノ、チ、鬢サネヘム、ケ、、ォ、サリト熙ケ、ハヒ。。「シツケヤサナタ、ヌ、ホ エトカュタ゚トハヒ。、ヒ、ト、、、ニ、マ。「シォハャ、ヌトエ、ル、ニイシ、オ、、。」 Win32、ヌ・ケ・ソ・ニ・」・テ・ッ・・・ッ・鬣、・ヨ・鬣(onig_s.lib)、・・・ッ、ケ、セケ遉ヒ、マ。「 ・ウ・・ム・、・、ケ、、ネ、ュ、ヒ -DONIG_EXTERN=extern 、・ウ・・ム・、・ーソ、ヒトノイテ、ケ、、ウ、ネ。」 サネヘムホ罕ラ・・ー・鬣 sample/simple.c コヌセョホ (Oniguruma API) sample/names.c フセチーノユ、ュ・ー・。シ・ラ・ウ。シ・・ミ・テ・ッサネヘムホ sample/encode.c エ、ト、ォ、ホハクサ・ィ・・ウ。シ・ヌ・」・・ーサネヘムホ sample/listcap.c ハ盖ヘヘホオ。ヌス、ホサネヘムホ sample/posix.c POSIX APIサネヘムホ sample/sql.c イトハム・皈ソハクサオ。ヌスサネヘムホ (SQL-like ・ム・ソ。シ・) sample/user_property.c ・譯シ・カトオチUnicode・ラ・・ム・ニ・」、ホサネヘムホ ・ニ・ケ・ネ・ラ・・ー・鬣 sample/syntax.c Perl。「Java。「ASISハクヒ。、ホ・ニ・ケ・ネ sample/crnl.c --enable-crnl-as-line-terminator ・ニ・ケ・ネ ・ス。シ・ケ・ユ・。・、・ oniguruma.h オエシヨAPI・リ・テ・タ (クウォ) onig-config.in onig-config・ラ・・ー・鬣 ・ニ・・ラ・。シ・ネ regenc.h ハクサ・ィ・・ウ。シ・ヌ・」・・ーマネチネ、゚・リ・テ・タ regint.h ニ篷タクタ regparse.h regparse.c、ネregcomp.c、ホ、ソ、皃ホニ篷タクタ regcomp.c ・ウ・・ム・、・。「コヌナャイスエリソ regenc.c ハクサ・ィ・・ウ。シ・ヌ・」・・ーマネチネ、゚ regerror.c ・ィ・鬘シ・皈テ・サ。シ・クエリソ regext.c ウネト・APIエリソ regexec.c ク。コ。「セネケ邏リソ regparse.c タオオャノスクス・ム・ソ。シ・イタマエリソ regsyntax.c タオオャノスクス・ム・ソ。シ・ハクヒ。エリソ。「チネケ、゚ハクヒ。トオチ regtrav.c ハ盖ヘヘホフレス茣エリソ regversion.c ネヌセハエリソ st.h ・マ・テ・キ・螂ニ。シ・ヨ・エリソタクタ st.c ・マ・テ・キ・螂ニ。シ・ヨ・エリソ oniggnu.h GNU regex API・リ・テ・タ (クウォ) reggnu.c GNU regex APIエリソ onigposix.h POSIX API・リ・テ・タ (クウォ) regposerr.c POSIX API・ィ・鬘シ・皈テ・サ。シ・クエリソ regposix.c POSIX APIエリソ mktable.c ハクサ・ソ・、・ラ・ニ。シ・ヨ・タクタョ・ラ・・ー・鬣 ascii.c ASCII ・ィ・・ウ。シ・ヌ・」・・ー euc_jp.c EUC-JP ・ィ・・ウ。シ・ヌ・」・・ー euc_tw.c EUC-TW ・ィ・・ウ。シ・ヌ・」・・ー euc_kr.c EUC-KR, EUC-CN ・ィ・・ウ。シ・ヌ・」・・ー sjis.c Shift_JIS ・ィ・・ウ。シ・ヌ・」・・ー big5.c Big5 ・ィ・・ウ。シ・ヌ・」・・ー gb18030.c GB18030 ・ィ・・ウ。シ・ヌ・」・・ー koi8.c KOI8 ・ィ・・ウ。シ・ヌ・」・・ー koi8_r.c KOI8-R ・ィ・・ウ。シ・ヌ・」・・ー cp1251.c CP1251 ・ィ・・ウ。シ・ヌ・」・・ー iso8859_1.c ISO-8859-1 (Latin-1) iso8859_2.c ISO-8859-2 (Latin-2) iso8859_3.c ISO-8859-3 (Latin-3) iso8859_4.c ISO-8859-4 (Latin-4) iso8859_5.c ISO-8859-5 (Cyrillic) iso8859_6.c ISO-8859-6 (Arabic) iso8859_7.c ISO-8859-7 (Greek) iso8859_8.c ISO-8859-8 (Hebrew) iso8859_9.c ISO-8859-9 (Latin-5 、゙、ソ、マ Turkish) iso8859_10.c ISO-8859-10 (Latin-6 、゙、ソ、マ Nordic) iso8859_11.c ISO-8859-11 (Thai) iso8859_13.c ISO-8859-13 (Latin-7 、゙、ソ、マ Baltic Rim) iso8859_14.c ISO-8859-14 (Latin-8 、゙、ソ、マ Celtic) iso8859_15.c ISO-8859-15 (Latin-9 、゙、ソ、マ West European with Euro) iso8859_16.c ISO-8859-16 (Latin-10 、゙、ソ、マ South-Eastern European with Euro) utf8.c UTF-8 ・ィ・・ウ。シ・ヌ・」・・ー utf16_be.c UTF-16BE ・ィ・・ウ。シ・ヌ・」・・ー utf16_le.c UTF-16LE ・ィ・・ウ。シ・ヌ・」・・ー utf32_be.c UTF-32BE ・ィ・・ウ。シ・ヌ・」・・ー utf32_le.c UTF-32LE ・ィ・・ウ。シ・ヌ・」・・ー unicode.c Unicode・ィ・・ウ。シ・ヌ・」・・ー、ホカヲトフス靉 win32/Makefile Win32ヘム Makefile (for VC++) win32/config.h Win32ヘム config.h and I'm thankful to Akinori MUSHA. oniguruma-6.7.0/cmake/000077500000000000000000000000001321242335200146075ustar00rootroot00000000000000oniguruma-6.7.0/cmake/dist.cmake000066400000000000000000000320741321242335200165620ustar00rootroot00000000000000# LuaDist CMake utility library. # Provides sane project defaults and macros common to LuaDist CMake builds. # # Copyright (C) 2007-2012 LuaDist. # by David Manura, Peter Drahoナ。 # Redistribution and use of this file is allowed according to the terms of the MIT license. # For details see the COPYRIGHT file distributed with LuaDist. # Please note that the package source code is licensed under its own license. ## Extract information from dist.info if ( NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/dist.info ) message ( FATAL_ERROR "Missing dist.info file (${CMAKE_CURRENT_SOURCE_DIR}/dist.info)." ) endif () file ( READ ${CMAKE_CURRENT_SOURCE_DIR}/dist.info DIST_INFO ) if ( "${DIST_INFO}" STREQUAL "" ) message ( FATAL_ERROR "Failed to load dist.info." ) endif () # Reads field `name` from dist.info string `DIST_INFO` into variable `var`. macro ( _parse_dist_field name var ) string ( REGEX REPLACE ".*${name}[ \t]?=[ \t]?[\"']([^\"']+)[\"'].*" "\\1" ${var} "${DIST_INFO}" ) if ( ${var} STREQUAL DIST_INFO ) message ( FATAL_ERROR "Failed to extract \"${var}\" from dist.info" ) endif () endmacro () # _parse_dist_field ( name DIST_NAME ) _parse_dist_field ( version DIST_VERSION ) _parse_dist_field ( license DIST_LICENSE ) _parse_dist_field ( author DIST_AUTHOR ) _parse_dist_field ( maintainer DIST_MAINTAINER ) _parse_dist_field ( url DIST_URL ) _parse_dist_field ( desc DIST_DESC ) message ( "DIST_NAME: ${DIST_NAME}") message ( "DIST_VERSION: ${DIST_VERSION}") message ( "DIST_LICENSE: ${DIST_LICENSE}") message ( "DIST_AUTHOR: ${DIST_AUTHOR}") message ( "DIST_MAINTAINER: ${DIST_MAINTAINER}") message ( "DIST_URL: ${DIST_URL}") message ( "DIST_DESC: ${DIST_DESC}") string ( REGEX REPLACE ".*depends[ \t]?=[ \t]?[\"']([^\"']+)[\"'].*" "\\1" DIST_DEPENDS ${DIST_INFO} ) if ( DIST_DEPENDS STREQUAL DIST_INFO ) set ( DIST_DEPENDS "" ) endif () message ( "DIST_DEPENDS: ${DIST_DEPENDS}") ## 2DO: Parse DIST_DEPENDS and try to install Dependencies with automatically using externalproject_add ## INSTALL DEFAULTS (Relative to CMAKE_INSTALL_PREFIX) # Primary paths set ( INSTALL_BIN bin CACHE PATH "Where to install binaries to." ) set ( INSTALL_LIB lib CACHE PATH "Where to install libraries to." ) set ( INSTALL_INC include CACHE PATH "Where to install headers to." ) set ( INSTALL_ETC etc CACHE PATH "Where to store configuration files" ) set ( INSTALL_SHARE share CACHE PATH "Directory for shared data." ) # Secondary paths option ( INSTALL_VERSION "Install runtime libraries and executables with version information." OFF) set ( INSTALL_DATA ${INSTALL_SHARE}/${DIST_NAME} CACHE PATH "Directory the package can store documentation, tests or other data in.") set ( INSTALL_DOC ${INSTALL_DATA}/doc CACHE PATH "Recommended directory to install documentation into.") set ( INSTALL_EXAMPLE ${INSTALL_DATA}/example CACHE PATH "Recommended directory to install examples into.") set ( INSTALL_TEST ${INSTALL_DATA}/test CACHE PATH "Recommended directory to install tests into.") set ( INSTALL_FOO ${INSTALL_DATA}/etc CACHE PATH "Where to install additional files") # Tweaks and other defaults # Setting CMAKE to use loose block and search for find modules in source directory set ( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true ) set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH} ) option ( BUILD_SHARED_LIBS "Build shared libraries" ON ) # In MSVC, prevent warnings that can occur when using standard libraries. if ( MSVC ) add_definitions ( -D_CRT_SECURE_NO_WARNINGS ) endif () # RPath and relative linking option ( USE_RPATH "Use relative linking." ON) if ( USE_RPATH ) string ( REGEX REPLACE "[^!/]+" ".." UP_DIR ${INSTALL_BIN} ) set ( CMAKE_SKIP_BUILD_RPATH FALSE CACHE STRING "" FORCE ) set ( CMAKE_BUILD_WITH_INSTALL_RPATH FALSE CACHE STRING "" FORCE ) set ( CMAKE_INSTALL_RPATH $ORIGIN/${UP_DIR}/${INSTALL_LIB} CACHE STRING "" FORCE ) set ( CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE STRING "" FORCE ) set ( CMAKE_INSTALL_NAME_DIR @executable_path/${UP_DIR}/${INSTALL_LIB} CACHE STRING "" FORCE ) endif () ## MACROS # Parser macro macro ( parse_arguments prefix arg_names option_names) set ( DEFAULT_ARGS ) foreach ( arg_name ${arg_names} ) set ( ${prefix}_${arg_name} ) endforeach () foreach ( option ${option_names} ) set ( ${prefix}_${option} FALSE ) endforeach () set ( current_arg_name DEFAULT_ARGS ) set ( current_arg_list ) foreach ( arg ${ARGN} ) set ( larg_names ${arg_names} ) list ( FIND larg_names "${arg}" is_arg_name ) if ( is_arg_name GREATER -1 ) set ( ${prefix}_${current_arg_name} ${current_arg_list} ) set ( current_arg_name ${arg} ) set ( current_arg_list ) else () set ( loption_names ${option_names} ) list ( FIND loption_names "${arg}" is_option ) if ( is_option GREATER -1 ) set ( ${prefix}_${arg} TRUE ) else () set ( current_arg_list ${current_arg_list} ${arg} ) endif () endif () endforeach () set ( ${prefix}_${current_arg_name} ${current_arg_list} ) endmacro () # install_executable ( executable_targets ) # Installs any executables generated using "add_executable". # USE: install_executable ( lua ) # NOTE: subdirectories are NOT supported set ( CPACK_COMPONENT_RUNTIME_DISPLAY_NAME "${DIST_NAME} Runtime" ) set ( CPACK_COMPONENT_RUNTIME_DESCRIPTION "Executables and runtime libraries. Installed into ${INSTALL_BIN}." ) macro ( install_executable ) foreach ( _file ${ARGN} ) if ( INSTALL_VERSION ) set_target_properties ( ${_file} PROPERTIES VERSION ${DIST_VERSION} SOVERSION ${DIST_VERSION} ) endif () install ( TARGETS ${_file} RUNTIME DESTINATION ${INSTALL_BIN} COMPONENT Runtime ) endforeach() endmacro () # install_library ( library_targets ) # Installs any libraries generated using "add_library" into apropriate places. # USE: install_library ( libexpat ) # NOTE: subdirectories are NOT supported set ( CPACK_COMPONENT_LIBRARY_DISPLAY_NAME "${DIST_NAME} Development Libraries" ) set ( CPACK_COMPONENT_LIBRARY_DESCRIPTION "Static and import libraries needed for development. Installed into ${INSTALL_LIB} or ${INSTALL_BIN}." ) macro ( install_library ) foreach ( _file ${ARGN} ) if ( INSTALL_VERSION ) set_target_properties ( ${_file} PROPERTIES VERSION ${DIST_VERSION} SOVERSION ${DIST_VERSION} ) endif () install ( TARGETS ${_file} RUNTIME DESTINATION ${INSTALL_BIN} COMPONENT Runtime LIBRARY DESTINATION ${INSTALL_LIB} COMPONENT Runtime ARCHIVE DESTINATION ${INSTALL_LIB} COMPONENT Library ) endforeach() endmacro () # helper function for various install_* functions, for PATTERN/REGEX args. macro ( _complete_install_args ) if ( NOT("${_ARG_PATTERN}" STREQUAL "") ) set ( _ARG_PATTERN PATTERN ${_ARG_PATTERN} ) endif () if ( NOT("${_ARG_REGEX}" STREQUAL "") ) set ( _ARG_REGEX REGEX ${_ARG_REGEX} ) endif () endmacro () # install_header ( files/directories [INTO destination] ) # Install a directories or files into header destination. # USE: install_header ( lua.h luaconf.h ) or install_header ( GL ) # USE: install_header ( mylib.h INTO mylib ) # For directories, supports optional PATTERN/REGEX arguments like install(). set ( CPACK_COMPONENT_HEADER_DISPLAY_NAME "${DIST_NAME} Development Headers" ) set ( CPACK_COMPONENT_HEADER_DESCRIPTION "Headers needed for development. Installed into ${INSTALL_INC}." ) macro ( install_header ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_INC}/${_ARG_INTO} COMPONENT Header ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_INC}/${_ARG_INTO} COMPONENT Header ) endif () endforeach() endmacro () # install_data ( files/directories [INTO destination] ) # This installs additional data files or directories. # USE: install_data ( extra data.dat ) # USE: install_data ( image1.png image2.png INTO images ) # For directories, supports optional PATTERN/REGEX arguments like install(). set ( CPACK_COMPONENT_DATA_DISPLAY_NAME "${DIST_NAME} Data" ) set ( CPACK_COMPONENT_DATA_DESCRIPTION "Application data. Installed into ${INSTALL_DATA}." ) macro ( install_data ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_DATA}/${_ARG_INTO} COMPONENT Data ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_DATA}/${_ARG_INTO} COMPONENT Data ) endif () endforeach() endmacro () # INSTALL_DOC ( files/directories [INTO destination] ) # This installs documentation content # USE: install_doc ( doc/ doc.pdf ) # USE: install_doc ( index.html INTO html ) # For directories, supports optional PATTERN/REGEX arguments like install(). set ( CPACK_COMPONENT_DOCUMENTATION_DISPLAY_NAME "${DIST_NAME} Documentation" ) set ( CPACK_COMPONENT_DOCUMENTATION_DESCRIPTION "Application documentation. Installed into ${INSTALL_DOC}." ) macro ( install_doc ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_DOC}/${_ARG_INTO} COMPONENT Documentation ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_DOC}/${_ARG_INTO} COMPONENT Documentation ) endif () endforeach() endmacro () # install_example ( files/directories [INTO destination] ) # This installs additional examples # USE: install_example ( examples/ exampleA ) # USE: install_example ( super_example super_data INTO super) # For directories, supports optional PATTERN/REGEX argument like install(). set ( CPACK_COMPONENT_EXAMPLE_DISPLAY_NAME "${DIST_NAME} Examples" ) set ( CPACK_COMPONENT_EXAMPLE_DESCRIPTION "Examples and their associated data. Installed into ${INSTALL_EXAMPLE}." ) macro ( install_example ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_EXAMPLE}/${_ARG_INTO} COMPONENT Example ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_EXAMPLE}/${_ARG_INTO} COMPONENT Example ) endif () endforeach() endmacro () # install_test ( files/directories [INTO destination] ) # This installs tests and test files, DOES NOT EXECUTE TESTS # USE: install_test ( my_test data.sql ) # USE: install_test ( feature_x_test INTO x ) # For directories, supports optional PATTERN/REGEX argument like install(). set ( CPACK_COMPONENT_TEST_DISPLAY_NAME "${DIST_NAME} Tests" ) set ( CPACK_COMPONENT_TEST_DESCRIPTION "Tests and associated data. Installed into ${INSTALL_TEST}." ) macro ( install_test ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_TEST}/${_ARG_INTO} COMPONENT Test ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_TEST}/${_ARG_INTO} COMPONENT Test ) endif () endforeach() endmacro () # install_foo ( files/directories [INTO destination] ) # This installs optional or otherwise unneeded content # USE: install_foo ( etc/ example.doc ) # USE: install_foo ( icon.png logo.png INTO icons) # For directories, supports optional PATTERN/REGEX argument like install(). set ( CPACK_COMPONENT_OTHER_DISPLAY_NAME "${DIST_NAME} Unspecified Content" ) set ( CPACK_COMPONENT_OTHER_DESCRIPTION "Other unspecified content. Installed into ${INSTALL_FOO}." ) macro ( install_foo ) parse_arguments ( _ARG "INTO;PATTERN;REGEX" "" ${ARGN} ) _complete_install_args() foreach ( _file ${_ARG_DEFAULT_ARGS} ) if ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${_file}" ) install ( DIRECTORY ${_file} DESTINATION ${INSTALL_FOO}/${_ARG_INTO} COMPONENT Other ${_ARG_PATTERN} ${_ARG_REGEX} ) else () install ( FILES ${_file} DESTINATION ${INSTALL_FOO}/${_ARG_INTO} COMPONENT Other ) endif () endforeach() endmacro () ## CTest defaults ## CPack defaults set ( CPACK_GENERATOR "ZIP" ) set ( CPACK_STRIP_FILES TRUE ) set ( CPACK_PACKAGE_NAME "${DIST_NAME}" ) set ( CPACK_PACKAGE_VERSION "${DIST_VERSION}") set ( CPACK_PACKAGE_VENDOR "LuaDist" ) set ( CPACK_COMPONENTS_ALL Runtime Library Header Data Documentation Example Other ) include ( CPack ) oniguruma-6.7.0/compile000077500000000000000000000162451321242335200151150ustar00rootroot00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: oniguruma-6.7.0/config.guess000077500000000000000000001247531321242335200160630ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-08-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: oniguruma-6.7.0/config.sub000077500000000000000000001064601321242335200155210ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2015 Free Software Foundation, Inc. timestamp='2015-08-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: oniguruma-6.7.0/configure.ac000066400000000000000000000044351321242335200160230ustar00rootroot00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT(onig, 6.7.0) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([-Wno-portability 1.14]) AC_CONFIG_HEADER(src/config.h) dnl default value for STATISTICS STATISTICS="" AC_ARG_WITH(statistics, [ --with-statistics take matching time statistical data], [ STATISTICS=-DONIG_DEBUG_STATISTICS ]) AC_SUBST(STATISTICS) dnl check for COMBINATION_EXPLOSION AC_ARG_ENABLE(combination-explosion-check, [ --enable-combination-explosion-check deprecated], [comb_expl_check=$enableval]) if test "${comb_expl_check}" = yes; then AC_DEFINE(USE_COMBINATION_EXPLOSION_CHECK,1,[Define if combination explosion check]) fi dnl check for CRNL_AS_LINE_TERMINATOR AC_ARG_ENABLE(crnl-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]) fi dnl Checks for programs. AC_PROG_CC AM_PROG_LIBTOOL LTVERSION="4:0:0" AC_SUBST(LTVERSION) AC_PROG_INSTALL AC_PROG_MAKE_SET dnl Checks for libraries. dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(stdlib.h string.h strings.h sys/time.h unistd.h sys/times.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(long, 4) AC_C_CONST AC_HEADER_TIME dnl Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_MEMCMP AC_CACHE_CHECK(for prototypes, _cv_have_prototypes, [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);], _cv_have_prototypes=yes, _cv_have_prototypes=no)]) if test "$_cv_have_prototypes" = yes; then AC_DEFINE(HAVE_PROTOTYPES,1,[Define if compilerr supports prototypes]) fi AC_CACHE_CHECK(for variable length prototypes and stdarg.h, _cv_stdarg, [AC_TRY_COMPILE([ #include int foo(int x, ...) { va_list va; va_start(va, x); va_arg(va, int); va_arg(va, char *); va_arg(va, double); return 0; } ], [return foo(10, "", 3.14);], _cv_stdarg=yes, _cv_stdarg=no)]) if test "$_cv_stdarg" = yes; then AC_DEFINE(HAVE_STDARG_PROTOTYPES,1,[Define if compiler supports stdarg prototypes]) fi AC_OUTPUT([Makefile src/Makefile test/Makefile sample/Makefile onig-config], [chmod +x onig-config]) oniguruma-6.7.0/contributed/000077500000000000000000000000001321242335200160515ustar00rootroot00000000000000oniguruma-6.7.0/contributed/libfuzzer-onig.cpp000066400000000000000000000017131321242335200215250ustar00rootroot00000000000000/* libfuzzer test code for oniguruma * author: Hanno Bテカck, license: CC0/public domain Usage: * compile oniguruma with something like ./configure CC=clang LD=clang CFLAGS="-fsanitize-coverage=edge -fsanitize=address" \ LDFLAGS="-fsanitize-coverage=edge -fsanitize=address" * Compile libfuzzer stub and link against static libonig.a and libFuzzer.a: clang++ libfuzzer-onig.cpp src/.libs/libonig.a libFuzzer.a -o libfuzzer-onig \ -fsanitize-coverage=edge -fsanitize=address * Put sample patterns in directory "in/" * Run ./libfuzzer-onig in Consult libfuzzer docs for further details and how to create libFuzzer.a: http://llvm.org/docs/LibFuzzer.html */ #include #include #include extern "C" int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size) { regex_t *reg; if (onig_new (®, Data, Data + Size, ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, 0) == 0) onig_free(reg); return 0; } oniguruma-6.7.0/depcomp000077500000000000000000000560161321242335200151140ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: oniguruma-6.7.0/dist.info000066400000000000000000000003461321242335200153520ustar00rootroot00000000000000--- This file is part of LuaDist project name = "onig" version = "6.7.0" desc = "Oniguruma is a regular expressions library." author = "K.Kosako" license = "BSD" url = "https://github.com/kkos/oniguruma" maintainer = "K.Kosako" oniguruma-6.7.0/doc/000077500000000000000000000000001321242335200142745ustar00rootroot00000000000000oniguruma-6.7.0/doc/API000066400000000000000000000465421321242335200146430ustar00rootroot00000000000000Oniguruma API Version 6.7.0 2017/12/08 #include # int onig_initialize(OnigEncoding use_encodings[], int num_encodings) Initialize library. You have to call it explicitly. * onig_init() is deprecated. arguments 1 use_encodings: array of encodings used in application. 2 num_encodings: number of encodings. # int onig_error_code_to_str(UChar* err_buf, int err_code, ...) Get error message string. If this function is used for onig_new(), don't call this after the pattern argument of onig_new() is freed. normal return: error message string length arguments 1 err_buf: error message string buffer. (required size: ONIG_MAX_ERROR_MESSAGE_LEN) 2 err_code: error code returned by other API functions. 3 err_info (optional): error info returned by onig_new(). # void onig_set_warn_func(OnigWarnFunc func) Set warning function. WARNING: '[', '-', ']' in character class without escape. ']' in pattern without escape. arguments 1 func: function pointer. void (*func)(char* warning_message) # void onig_set_verb_warn_func(OnigWarnFunc func) Set verbose warning function. WARNING: redundant nested repeat operator. arguments 1 func: function pointer. void (*func)(char* warning_message) # int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* err_info) Create a regex object. normal return: ONIG_NORMAL arguments 1 reg: return regex object's address. 2 pattern: regex pattern string. 3 pattern_end: terminate address of pattern. (pattern + pattern length) 4 option: compile time options. ONIG_OPTION_NONE no option ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' ONIG_OPTION_MULTILINE '.' match with newline ONIG_OPTION_IGNORECASE ambiguity match on ONIG_OPTION_EXTEND extended pattern form ONIG_OPTION_FIND_LONGEST find longest match ONIG_OPTION_FIND_NOT_EMPTY ignore empty match ONIG_OPTION_NEGATE_SINGLELINE clear ONIG_OPTION_SINGLELINE which is enabled on ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED, ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL_NG, ONIG_SYNTAX_JAVA 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 ONIG_ENCODING_ISO_8859_1 ISO 8859-1 ONIG_ENCODING_ISO_8859_2 ISO 8859-2 ONIG_ENCODING_ISO_8859_3 ISO 8859-3 ONIG_ENCODING_ISO_8859_4 ISO 8859-4 ONIG_ENCODING_ISO_8859_5 ISO 8859-5 ONIG_ENCODING_ISO_8859_6 ISO 8859-6 ONIG_ENCODING_ISO_8859_7 ISO 8859-7 ONIG_ENCODING_ISO_8859_8 ISO 8859-8 ONIG_ENCODING_ISO_8859_9 ISO 8859-9 ONIG_ENCODING_ISO_8859_10 ISO 8859-10 ONIG_ENCODING_ISO_8859_11 ISO 8859-11 ONIG_ENCODING_ISO_8859_13 ISO 8859-13 ONIG_ENCODING_ISO_8859_14 ISO 8859-14 ONIG_ENCODING_ISO_8859_15 ISO 8859-15 ONIG_ENCODING_ISO_8859_16 ISO 8859-16 ONIG_ENCODING_UTF8 UTF-8 ONIG_ENCODING_UTF16_BE UTF-16BE ONIG_ENCODING_UTF16_LE UTF-16LE ONIG_ENCODING_UTF32_BE UTF-32BE ONIG_ENCODING_UTF32_LE UTF-32LE ONIG_ENCODING_EUC_JP EUC-JP ONIG_ENCODING_EUC_TW EUC-TW ONIG_ENCODING_EUC_KR EUC-KR ONIG_ENCODING_EUC_CN EUC-CN ONIG_ENCODING_SJIS Shift_JIS ONIG_ENCODING_KOI8_R KOI8-R ONIG_ENCODING_CP1251 CP1251 ONIG_ENCODING_BIG5 Big5 ONIG_ENCODING_GB18030 GB18030 or any OnigEncodingType data address defined by user. 6 syntax: address of pattern syntax definition. ONIG_SYNTAX_ASIS plain text ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE ONIG_SYNTAX_EMACS Emacs ONIG_SYNTAX_GREP grep ONIG_SYNTAX_GNU_REGEX GNU regex ONIG_SYNTAX_JAVA Java (Sun java.util.regex) ONIG_SYNTAX_PERL Perl ONIG_SYNTAX_PERL_NG Perl + named group ONIG_SYNTAX_RUBY Ruby ONIG_SYNTAX_ONIGURUMA Oniguruma ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) onig_set_default_syntax() or any OnigSyntaxType data address defined by user. 7 err_info: address for return optional error info. Use this value as 3rd argument of onig_error_code_to_str(). # int onig_new_without_alloc(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* err_info) Create a regex object. reg object area is not allocated in this function. normal return: ONIG_NORMAL # int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo) Create a regex object. This function is deluxe version of onig_new(). normal return: ONIG_NORMAL arguments 1 reg: return address of regex object. 2 pattern: regex pattern string. 3 pattern_end: terminate address of pattern. (pattern + pattern length) 4 ci: compile time info. ci->num_of_elements: number of elements in ci. (current version: 5) ci->pattern_enc: pattern string character encoding. ci->target_enc: target string character encoding. ci->syntax: address of pattern syntax definition. ci->option: compile time option. ci->case_fold_flag: character matching case fold bit flag for ONIG_OPTION_IGNORECASE mode. ONIGENC_CASE_FOLD_MIN: minimum ONIGENC_CASE_FOLD_DEFAULT: minimum onig_set_default_case_fold_flag() 5 err_info: address for return optional error info. Use this value as 3rd argument of onig_error_code_to_str(). Different character encoding combination is allowed for the following cases only. pattern_enc: ASCII, ISO_8859_1 target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE pattern_enc: UTF16_BE/LE target_enc: UTF16_LE/BE pattern_enc: UTF32_BE/LE target_enc: UTF32_LE/BE # void onig_free(regex_t* reg) Free memory used by regex object. arguments 1 reg: regex object. # void onig_free_body(regex_t* reg) Free memory used by regex object. (Except reg oneself.) arguments 1 reg: regex object. # int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) Search string and return search result and matching region. normal return: match position offset (i.e. p - str >= 0) not found: ONIG_MISMATCH (< 0) arguments 1 reg: regex object 2 str: target string 3 end: terminate address of target string 4 start: search start address of target string 5 range: search terminate address of target string in forward search (start <= searched string < range) in backward search (range <= searched string <= start) 6 region: address for return group match range info (NULL is allowed) 7 option: search time option ONIG_OPTION_NOTBOL string head(str) isn't considered as begin of line ONIG_OPTION_NOTEOL string end (end) isn't considered as end of line ONIG_OPTION_POSIX_REGION region argument is regmatch_t[] of POSIX API. # int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, OnigOptionType option) Match string and return result and matching region. normal return: match length (>= 0) not match: ONIG_MISMATCH ( < 0) arguments 1 reg: regex object 2 str: target string 3 end: terminate address of target string 4 at: match address of target string 5 region: address for return group match range info (NULL is allowed) 6 option: search time option ONIG_OPTION_NOTBOL string head(str) isn't considered as begin of line ONIG_OPTION_NOTEOL string end (end) isn't considered as end of line ONIG_OPTION_POSIX_REGION region argument is regmatch_t[] type of POSIX API. # int onig_scan(regex_t* reg, const UChar* str, const UChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg) Scan string and callback with matching region. normal return: number of matching times error: error code interruption: return value of callback function (!= 0) arguments 1 reg: regex object 2 str: target string 3 end: terminate address of target string 4 region: address for return group match range info (NULL is allowed) 5 option: search time option 6 scan_callback: callback function (defined by user) 7 callback_arg: optional argument passed to callback # OnigRegion* onig_region_new(void) Create a region. # void onig_region_free(OnigRegion* region, int free_self) Free memory used by region. arguments 1 region: target region 2 free_self: [1: free all, 0: free memory used in region but not self] # void onig_region_copy(OnigRegion* to, OnigRegion* from) Copy contents of region. arguments 1 to: target region 2 from: source region # void onig_region_clear(OnigRegion* region) Clear contents of region. arguments 1 region: target region # int onig_region_resize(OnigRegion* region, int n) Resize group range area of region. normal return: ONIG_NORMAL arguments 1 region: target region 2 n: new size # int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, int** num_list) Return the group number list of the name. Named subexp is defined by (?....). normal return: number of groups for the name. (ex. /(?..)(?..)/ ==> 2) name not found: -1 arguments 1 reg: regex object. 2 name: group name. 3 name_end: terminate address of group name. 4 num_list: return list of group number. # int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, OnigRegion *region) Return the group number corresponding to the named backref (\k). If two or more regions for the groups of the name are effective, the greatest number in it is obtained. normal return: group number. arguments 1 reg: regex object. 2 name: group name. 3 name_end: terminate address of group name. 4 region: search/match result region. # int onig_foreach_name(regex_t* reg, int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), void* arg) Iterate function call for all names. normal return: 0 error: func's return value. arguments 1 reg: regex object. 2 func: callback function. func(name, name_end, , , reg, arg); if func does not return 0, then iteration is stopped. 3 arg: argument for func. # int onig_number_of_names(regex_t* reg) Return the number of names defined in the pattern. Multiple definitions of one name is counted as one. arguments 1 reg: regex object. # OnigEncoding onig_get_encoding(regex_t* reg) # OnigOptionType onig_get_options(regex_t* reg) # OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) # OnigSyntaxType* onig_get_syntax(regex_t* reg) Return a value of the regex object. arguments 1 reg: regex object. # int onig_number_of_captures(regex_t* reg) Return the number of capture group in the pattern. arguments 1 reg: regex object. # int onig_number_of_capture_histories(regex_t* reg) Return the number of capture history defined in the pattern. You can't use capture history if ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY is disabled in the pattern syntax.(disabled in the default syntax) arguments 1 reg: regex object. # OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) Return the root node of capture history data tree. This value is undefined if matching has faild. arguments 1 region: matching result. # int onig_capture_tree_traverse(OnigRegion* region, int at, int(*func)(int,int,int,int,int,void*), void* arg) Traverse and callback in capture history data tree. normal return: 0 error: callback func's return value. arguments 1 region: match region data. 2 at: callback position. ONIG_TRAVERSE_CALLBACK_AT_FIRST: callback first, then traverse children. ONIG_TRAVERSE_CALLBACK_AT_LAST: traverse children first, then callback. ONIG_TRAVERSE_CALLBACK_AT_BOTH: callback first, then traverse children, and at last callback again. 3 func: callback function. if func does not return 0, then traverse is stopped. int func(int group, int beg, int end, int level, int at, void* arg) group: group number beg: capture start position end: capture end position level: nest level (from 0) at: callback position ONIG_TRAVERSE_CALLBACK_AT_FIRST ONIG_TRAVERSE_CALLBACK_AT_LAST arg: optional callback argument 4 arg; optional callback argument. # int onig_noname_group_capture_is_active(regex_t* reg) Return noname group capture activity. active: 1 inactive: 0 arguments 1 reg: regex object. if option ONIG_OPTION_DONT_CAPTURE_GROUP == ON --> inactive if the regex pattern have named group and syntax ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP == ON and option ONIG_OPTION_CAPTURE_GROUP == OFF --> inactive else --> active # UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) Return previous character head address. arguments 1 enc: character encoding 2 start: string address 3 s: target address of string # UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) Return left-adjusted head address of a character. arguments 1 enc: character encoding 2 start: string address 3 s: target address of string # UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) Return right-adjusted head address of a character. arguments 1 enc: character encoding 2 start: string address 3 s: target address of string # int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) # int onigenc_strlen_null(OnigEncoding enc, const UChar* s) Return number of characters in the string. # int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) Return number of bytes in the string. # int onig_set_default_syntax(OnigSyntaxType* syntax) Set default syntax. arguments 1 syntax: address of pattern syntax definition. # void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) Copy syntax. arguments 1 to: destination address. 2 from: source address. # unsigned int onig_get_syntax_op(OnigSyntaxType* syntax) # unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax) # unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax) # OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax) # void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) # void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) # void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) # void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) Get/Set elements of the syntax. arguments 1 syntax: syntax 2 op, op2, behavior, options: value of element. # void onig_copy_encoding(OnigEncoding to, OnigEncoding from) Copy encoding. arguments 1 to: destination address. 2 from: source address. # int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code) Set a variable meta character to the code point value. Except for an escape character, this meta characters specification is not work, if ONIG_SYN_OP_VARIABLE_META_CHARACTERS is not effective by the syntax. (Build-in syntaxes are not effective.) normal return: ONIG_NORMAL arguments 1 syntax: target syntax 2 what: specifies which meta character it is. ONIG_META_CHAR_ESCAPE ONIG_META_CHAR_ANYCHAR ONIG_META_CHAR_ANYTIME ONIG_META_CHAR_ZERO_OR_ONE_TIME ONIG_META_CHAR_ONE_OR_MORE_TIME ONIG_META_CHAR_ANYCHAR_ANYTIME 3 code: meta character or ONIG_INEFFECTIVE_META_CHAR. # OnigCaseFoldType onig_get_default_case_fold_flag() Get default case fold flag. # int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) Set default case fold flag. 1 case_fold_flag: case fold flag # unsigned int onig_get_match_stack_limit_size(void) Return the maximum number of stack size. (default: 0 == unlimited) # int onig_set_match_stack_limit_size(unsigned int size) Set the maximum number of stack size. (size = 0: unlimited) normal return: ONIG_NORMAL # int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)) Define new Unicode property. (This function is not thread safe.) arguments 1 name: property name (ASCII only. character ' ', '-', '_' are ignored.) 2 ranges: property code point ranges (first element is number of ranges.) [num-of-ranges, 1st-range-start, 1st-range-end, 2nd-range-start... ] * Don't destroy the ranges after having called this function. normal return: ONIG_NORMAL # unsigned int onig_get_parse_depth_limit(void) Return the maximum depth of parser recursion. (default: DEFAULT_PARSE_DEPTH_LIMIT defined in regint.h. Currently 4096.) # int onig_set_parse_depth_limit(unsigned int depth) Set the maximum depth of parser recursion. (depth = 0: Set to the default value defined in regint.h.) normal return: ONIG_NORMAL # int onig_end(void) The use of this library is finished. normal return: ONIG_NORMAL It is not allowed to use regex objects which created before onig_end() call. # const char* onig_version(void) Return version string. (ex. "5.0.3") // END oniguruma-6.7.0/doc/API.ja000066400000000000000000000552471321242335200152360ustar00rootroot00000000000000鬯シ霆翫う繝ウ繧ソ繝シ繝輔ぉ繝シ繧ケ Version 6.7.0 2017/12/08 #include # int onig_initialize(OnigEncoding use_encodings[], int num_encodings) 繝ゥ繧、繝悶Λ繝ェ縺ョ蛻晄悄蛹 譛蛻昴↓蜻シ縺ウ蜃コ縺吝ソ隕√′縺ゅk縲 * onig_init() 縺ッ蟒豁「 蠑墓焚 1 use_encodings: 菴ソ逕ィ縺吶k譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ驟榊 2 num_encodings: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ謨ー # int onig_error_code_to_str(UChar* err_buf, int err_code, ...) 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧貞叙蠕励☆繧九 縺薙ョ髢「謨ー繧偵{nig_new()縺ョ邨先棡縺ォ蟇セ縺励※蜻シ縺ウ蜃コ縺吝エ蜷医↓縺ッ縲{nig_new()縺ョpattern蠑墓焚繧 繝。繝「繝ェ隗」謾セ縺吶k繧医j繧ょ燕縺ォ蜻シ縺ウ蜃コ縺輔↑縺代l縺ー縺ェ繧峨↑縺縲 豁」蟶ク邨ゆコ謌サ繧雁、: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク譁蟄怜励ョ繝舌う繝磯聞 蠑墓焚 1 err_buf: 繧ィ繝ゥ繝シ繝。繝繧サ繝シ繧ク繧呈シ邏阪☆繧矩伜沺 (蠢隕√↑繧オ繧、繧コ: ONIG_MAX_ERROR_MESSAGE_LEN) 2 err_code: 繧ィ繝ゥ繝シ繧ウ繝シ繝 3 err_info (optional): onig_new()縺ョerr_info # void onig_set_warn_func(OnigWarnFunc func) 隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 隴ヲ蜻: '[', '-', ']' in character class without escape. ']' in pattern without escape. 蠑墓焚 1 func: 隴ヲ蜻企未謨ー void (*func)(char* warning_message) # void onig_set_verb_warn_func(OnigWarnFunc func) 隧ウ邏ー隴ヲ蜻企夂衍髢「謨ー繧偵そ繝繝医☆繧九 隧ウ邏ー隴ヲ蜻: redundant nested repeat operator. 蠑墓焚 1 func: 隧ウ邏ー隴ヲ蜻企未謨ー void (*func)(char* warning_message) # int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* err_info) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL 蠑墓焚 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) 4 option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ ONIG_OPTION_NONE 繧ェ繝励す繝ァ繝ウ縺ェ縺 ONIG_OPTION_SINGLELINE '^' -> '\A', '$' -> '\Z' ONIG_OPTION_MULTILINE '.'縺梧隼陦後↓繝槭ャ繝√☆繧 ONIG_OPTION_IGNORECASE 譖匁乂繝槭ャ繝 繧ェ繝ウ ONIG_OPTION_EXTEND 繝代ち繝シ繝ウ諡。蠑オ蠖「蠑 ONIG_OPTION_FIND_LONGEST 譛髟キ繝槭ャ繝 ONIG_OPTION_FIND_NOT_EMPTY 遨コ繝槭ャ繝√r辟。隕 ONIG_OPTION_NEGATE_SINGLELINE ONIG_SYNTAX_POSIX_BASIC, ONIG_SYNTAX_POSIX_EXTENDED, ONIG_SYNTAX_PERL, ONIG_SYNTAX_PERL_NG, ONIG_SYNTAX_JAVA縺ァ 繝繝輔か繝ォ繝医〒譛牙柑縺ェONIG_OPTION_SINGLELINE繧偵け繝ェ繧「縺吶k縲 ONIG_OPTION_DONT_CAPTURE_GROUP 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ョ縺ソ謐慕佐 ONIG_OPTION_CAPTURE_GROUP 蜷榊燕辟。縺玲黒迯イ蠑城寔蜷医b謐慕佐 ONIG_OPTION_WORD_IS_ASCII word縺窟SCII縺ョ縺ソ (\w, \p{Word}, [[:word:]]) word bound縺窟SCII縺ョ縺ソ (\b) ONIG_OPTION_DIGIT_IS_ASCII digit縺窟SCII縺ョ縺ソ (\d, \p{Digit}, [[:digit:]]) ONIG_OPTION_SPACE_IS_ASCII space縺窟SCII縺ョ縺ソ (\s, \p{Space}, [[:space:]]) ONIG_OPTION_POSIX_IS_ASCII POSIX繝励Ο繝代ユ繧」縺窟SCII縺ョ縺ソ (word, digit, space繧貞ィ縺ヲ蜷ォ繧薙〒縺繧) (alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit, word) 5 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー ONIG_ENCODING_ASCII ASCII ONIG_ENCODING_ISO_8859_1 ISO 8859-1 ONIG_ENCODING_ISO_8859_2 ISO 8859-2 ONIG_ENCODING_ISO_8859_3 ISO 8859-3 ONIG_ENCODING_ISO_8859_4 ISO 8859-4 ONIG_ENCODING_ISO_8859_5 ISO 8859-5 ONIG_ENCODING_ISO_8859_6 ISO 8859-6 ONIG_ENCODING_ISO_8859_7 ISO 8859-7 ONIG_ENCODING_ISO_8859_8 ISO 8859-8 ONIG_ENCODING_ISO_8859_9 ISO 8859-9 ONIG_ENCODING_ISO_8859_10 ISO 8859-10 ONIG_ENCODING_ISO_8859_11 ISO 8859-11 ONIG_ENCODING_ISO_8859_13 ISO 8859-13 ONIG_ENCODING_ISO_8859_14 ISO 8859-14 ONIG_ENCODING_ISO_8859_15 ISO 8859-15 ONIG_ENCODING_ISO_8859_16 ISO 8859-16 ONIG_ENCODING_UTF8 UTF-8 ONIG_ENCODING_UTF16_BE UTF-16BE ONIG_ENCODING_UTF16_LE UTF-16LE ONIG_ENCODING_UTF32_BE UTF-32BE ONIG_ENCODING_UTF32_LE UTF-32LE ONIG_ENCODING_EUC_JP EUC-JP ONIG_ENCODING_EUC_TW EUC-TW ONIG_ENCODING_EUC_KR EUC-KR ONIG_ENCODING_EUC_CN EUC-CN ONIG_ENCODING_SJIS Shift_JIS ONIG_ENCODING_KOI8_R KOI8-R ONIG_ENCODING_CP1251 CP1251 ONIG_ENCODING_BIG5 Big5 ONIG_ENCODING_GB18030 GB18030 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigEncodingType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ 6 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ ONIG_SYNTAX_ASIS plain text ONIG_SYNTAX_POSIX_BASIC POSIX Basic RE ONIG_SYNTAX_POSIX_EXTENDED POSIX Extended RE ONIG_SYNTAX_EMACS Emacs ONIG_SYNTAX_GREP grep ONIG_SYNTAX_GNU_REGEX GNU regex ONIG_SYNTAX_JAVA Java (Sun java.util.regex) ONIG_SYNTAX_PERL Perl ONIG_SYNTAX_PERL_NG Perl + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 ONIG_SYNTAX_RUBY Ruby ONIG_SYNTAX_ONIGURUMA Oniguruma ONIG_SYNTAX_DEFAULT default (== ONIG_SYNTAX_ONIGURUMA) onig_set_default_syntax() 縺セ縺溘ッ縲√Θ繝シ繧カ縺悟ョ夂セゥ縺励◆OnigSyntaxType繝繝シ繧ソ縺ョ繧「繝峨Ξ繧ケ 7 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k # int onig_new_without_alloc(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* err_info) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 reg縺ョ鬆伜沺繧貞驛ィ縺ァ蜑イ繧雁ス薙※縺ェ縺縲 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL # int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝(regex)繧剃ス懈舌☆繧九 縺薙ョ髢「謨ー縺ッ縲{nig_new()縺ョ繝繝ゥ繝繧ッ繧ケ迚医 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL 蠑墓焚 1 reg: 菴懈舌&繧後◆豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆繧「繝峨Ξ繧ケ 2 pattern: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜 3 pattern_end: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ(pattern + pattern length) 4 ci: 繧ウ繝ウ繝代う繝ォ諠蝣ア ci->num_of_elements: ci縺ョ隕∫エ謨ー (迴セ蝨ィ縺ョ迚医〒縺ッ: 5) ci->pattern_enc: 繝代ち繝シ繝ウ譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー ci->target_enc: 蟇セ雎。譁蟄怜励ョ譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー ci->syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕募ョ夂セゥ ci->option: 豁」隕剰。ィ迴セ繧ウ繝ウ繝代う繝ォ譎ゅが繝励す繝ァ繝ウ ci->case_fold_flag: ONIG_OPTION_IGNORECASE繝「繝シ繝峨〒縺ョ 譁蟄玲尠譏ァ繝槭ャ繝∵欠螳壹ン繝繝医ヵ繝ゥ繧ー ONIGENC_CASE_FOLD_MIN: 譛蟆 ONIGENC_CASE_FOLD_DEFAULT: 譛蟆 onig_set_default_case_fold_flag() 5 err_info: 繧ィ繝ゥ繝シ諠蝣ア繧定ソ斐☆縺溘a縺ョ繧「繝峨Ξ繧ケ onig_error_code_to_str()縺ョ荳臥分逶ョ縺ョ蠑墓焚縺ィ縺励※菴ソ逕ィ縺吶k 逡ー縺ェ繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ョ邨縺ソ蜷医o縺帙ッ縲∽サ・荳九ョ蝣エ蜷医↓縺ョ縺ソ險ア縺輔l繧九 pattern_enc: ASCII, ISO_8859_1 target_enc: UTF16_BE, UTF16_LE, UTF32_BE, UTF32_LE pattern_enc: UTF16_BE/LE target_enc: UTF16_LE/BE pattern_enc: UTF32_BE/LE target_enc: UTF32_LE/BE # void onig_free(regex_t* reg) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # void onig_free_body(regex_t* reg) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医ョ繝。繝「繝ェ繧定ァ」謾セ縺吶k縲(reg閾ェ霄ォ縺ョ鬆伜沺繧帝勁縺縺ヲ) 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r讀懃エ「縺励∵、懃エ「邨先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 豁」蟶ク邨ゆコ謌サ繧雁、: 繝槭ャ繝∽ス咲スョ (p - str >= 0) 讀懃エ「螟ア謨: ONIG_MISMATCH (< 0) 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 str: 讀懃エ「蟇セ雎。譁蟄怜 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ 4 start: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「蜈磯ュ菴咲スョ繧「繝峨Ξ繧ケ 5 range: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「邨ゆコ菴咲スョ繧「繝峨Ξ繧ケ 蜑肴婿謗「邏「 (start <= 謗「邏「縺輔l繧区枚蟄怜 < range) 蠕梧婿謗「邏「 (range <= 謗「邏「縺輔l繧区枚蟄怜 <= start) 6 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) 7 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ ONIG_OPTION_NOTBOL 譁蟄怜励ョ蜈磯ュ(str)繧定。碁ュ縺ィ逵句★縺輔↑縺 ONIG_OPTION_NOTEOL 譁蟄怜励ョ邨らォッ(end)繧定。梧忰縺ィ逵句★縺輔↑縺 ONIG_OPTION_POSIX_REGION region蠑墓焚繧単OSIX API縺ョregmatch_t[]縺ォ縺吶k # int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, OnigOptionType option) 譁蟄怜励ョ謖螳壻ス咲スョ縺ァ繝槭ャ繝√Φ繧ー繧定。後>縲∫オ先棡縺ィ繝槭ャ繝鬆伜沺繧定ソ斐☆縲 豁」蟶ク邨ゆコ謌サ繧雁、: 繝槭ャ繝√@縺溘ヰ繧、繝磯聞 (>= 0) not match: ONIG_MISMATCH ( < 0) 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 str: 讀懃エ「蟇セ雎。譁蟄怜 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ 4 at: 讀懃エ「蟇セ雎。譁蟄怜励ョ讀懃エ「繧「繝峨Ξ繧ケ 5 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) 6 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ ONIG_OPTION_NOTBOL 譁蟄怜励ョ蜈磯ュ(str)繧定。碁ュ縺ィ逵句★縺輔↑縺 ONIG_OPTION_NOTEOL 譁蟄怜励ョ邨らォッ(end)繧定。梧忰縺ィ逵句★縺輔↑縺 ONIG_OPTION_POSIX_REGION region蠑墓焚繧単OSIX API縺ョregmatch_t[]縺ォ縺吶k # int onig_scan(regex_t* reg, const UChar* str, const UChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg) 豁」隕剰。ィ迴セ縺ァ譁蟄怜励r繧ケ繧ュ繝」繝ウ縺励※縲√槭ャ繝√Φ繧ー縺吶k豈弱↓繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー繧貞他縺ウ蜃コ縺吶 豁」蟶ク邨ゆコ: 繝槭ャ繝∝屓謨ー (0蝗槭b蜷ォ繧√k) 繧ィ繝ゥ繝シ: 繧ィ繝ゥ繝シ繧ウ繝シ繝 (< 0) 荳ュ譁ュ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺鯉シ蝉サ・螟悶ョ謌サ繧雁、繧定ソ斐@縺溘→縺阪√◎縺ョ蛟、繧呈綾繧雁、縺ィ縺励※荳ュ譁ュ 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 str: 讀懃エ「蟇セ雎。譁蟄怜 3 end: 讀懃エ「蟇セ雎。譁蟄怜励ョ邨らォッ繧「繝峨Ξ繧ケ 4 region: 繝槭ャ繝鬆伜沺諠蝣ア(region) (NULL繧りィア縺輔l繧) 5 option: 讀懃エ「譎ゅが繝励す繝ァ繝ウ 6 scan_callback: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー 7 callback_arg: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ォ貂。縺輔l繧倶サ伜刈蠑墓焚蛟、 # OnigRegion* onig_region_new(void) 繝槭ャ繝鬆伜沺諠蝣ア(region)繧剃ス懈舌☆繧九 # void onig_region_free(OnigRegion* region, int free_self) 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ァ菴ソ逕ィ縺輔l縺ヲ縺繧九Γ繝「繝ェ繧定ァ」謾セ縺吶k縲 蠑墓焚 1 region: 繝槭ャ繝鬆伜沺諠蝣ア繧ェ繝悶ず繧ァ繧ッ繝 2 free_self: [1: region閾ェ霄ォ繧貞性繧√※蜈ィ縺ヲ隗」謾セ, 0: region閾ェ霄ォ縺ッ隗」謾セ縺励↑縺Ь # void onig_region_copy(OnigRegion* to, OnigRegion* from) 繝槭ャ繝鬆伜沺諠蝣ア(region)繧定、陬ス縺吶k縲 蠑墓焚 1 to: 蟇セ雎。鬆伜沺 2 from: 蜈鬆伜沺 # void onig_region_clear(OnigRegion* region) 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ荳ュ蜻ウ繧偵け繝ェ繧「縺吶k縲 蠑墓焚 1 region: 蟇セ雎。鬆伜沺 # int onig_region_resize(OnigRegion* region, int n) 繝槭ャ繝鬆伜沺諠蝣ア(region)縺ョ謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)謨ー繧貞、画峩縺吶k縲 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL 蠑墓焚 1 region: 蟇セ雎。鬆伜沺 2 n: 譁ー縺励>繧オ繧、繧コ # int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, int** num_list) 謖螳壹@縺溷錐蜑阪↓蟇セ縺吶k蜷榊燕莉倥″謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ 繧ー繝ォ繝シ繝礼分蜿キ繝ェ繧ケ繝医r霑斐☆縲 蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ縲(?....)縺ォ繧医▲縺ヲ螳夂セゥ縺ァ縺阪k縲 豁」蟶ク邨ゆコ謌サ繧雁、: 謖螳壹&繧後◆蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝玲焚 (萓 /(?..)(?..)/ ==> 2) 蜷榊燕縺ォ蟇セ縺吶k繧ー繝ォ繝シ繝励′蟄伜惠縺励↑縺: -1 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ 4 num_list: 逡ェ蜿キ繝ェ繧ケ繝医r霑斐☆繧「繝峨Ξ繧ケ # int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, OnigRegion *region) 謖螳壹&繧後◆蜷榊燕縺ョ蠕梧婿蜿らァ(\k)縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)縺ョ逡ェ蜿キ繧定ソ斐☆縲 蜷榊燕縺ォ蟇セ縺励※縲∬、謨ー縺ョ繝槭ャ繝鬆伜沺縺梧怏蜉ケ縺ァ縺ゅl縺ー縲√◎縺ョ荳ュ縺ョ譛螟ァ縺ョ逡ェ蜿キ繧定ソ斐☆縲 蜷榊燕縺ォ蟇セ縺吶k謐慕佐蠑城寔蜷医′荳蛟九@縺九↑縺縺ィ縺阪↓縺ッ縲∝ッセ蠢懊☆繧九槭ャ繝鬆伜沺縺梧怏蜉ケ縺 縺ゥ縺縺九↓髢「菫ゅ↑縺上√◎縺ョ逡ェ蜿キ繧定ソ斐☆縲(蠕薙▲縺ヲ縲〉egion縺ォ縺ッNULL繧呈ク。縺励※繧ゅh縺縲) 豁」蟶ク邨ゆコ謌サ繧雁、: 逡ェ蜿キ 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 name: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷 3 name_end: 謐慕佐蠑城寔蜷(繧ー繝ォ繝シ繝)蜷阪ョ邨らォッ繧「繝峨Ξ繧ケ 4 region: search/match邨先棡縺ョ繝槭ャ繝鬆伜沺 # int onig_foreach_name(regex_t* reg, int (*func)(const UChar*, const UChar*, int,int*,regex_t*,void*), void* arg) 蜈ィ縺ヲ縺ョ蜷榊燕縺ォ蟇セ縺励※繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー蜻シ縺ウ蜃コ縺励r螳溯。後☆繧九 豁」蟶ク邨ゆコ謌サ繧雁、: 0 繧ィ繝ゥ繝シ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 2 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー func(name, name_end, , , reg, arg); func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ繧ウ繝シ繝ォ繝舌ャ繧ッ縺ッ陦後↑繧上★縺ォ 邨ゆコ縺吶k縲 3 arg: func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 # int onig_number_of_names(regex_t* reg) 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺溷錐蜑阪ョ謨ー繧定ソ斐☆縲 荳蛟九ョ蜷榊燕縺ョ螟夐榊ョ夂セゥ縺ッ荳蛟九→逵句★縺吶 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # OnigEncoding onig_get_encoding(regex_t* reg) # OnigOptionType onig_get_options(regex_t* reg) # OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) # OnigSyntaxType* onig_get_syntax(regex_t* reg) 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医↓蟇セ縺励※縲∝ッセ蠢懊☆繧句、繧定ソ斐☆縲 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # int onig_number_of_captures(regex_t* reg) 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ繧ー繝ォ繝シ繝励ョ謨ー繧定ソ斐☆縲 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # int onig_number_of_capture_histories(regex_t* reg) 繝代ち繝シ繝ウ荳ュ縺ァ螳夂セゥ縺輔l縺滓黒迯イ螻・豁エ(?@...)縺ョ謨ー繧定ソ斐☆縲 菴ソ逕ィ縺吶k譁豕輔〒謐慕佐螻・豁エ讖溯ス縺梧怏蜉ケ(ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY) 縺ァ縺ェ縺代l縺ー縲∵黒迯イ螻・豁エ讖溯ス縺ッ菴ソ逕ィ縺ァ縺阪↑縺縲 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 # OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) 謐慕佐螻・豁エ繝繝シ繧ソ縺ョ繝ォ繝シ繝医ヮ繝シ繝峨r霑斐☆縲 繝槭ャ繝√′螟ア謨励@縺ヲ縺繧句エ蜷医↓縺ッ縲√%縺ョ蛟、縺ッ荳榊ョ壹〒縺ゅk縲 蠑墓焚 1 region: 繝槭ャ繝鬆伜沺 # int onig_capture_tree_traverse(OnigRegion* region, int at, int(*func)(int,int,int,int,int,void*), void* arg) 謐慕佐螻・豁エ繝繝シ繧ソ譛ィ繧貞キ。蝗槭@縺ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ縺吶k縲 豁」蟶ク邨ゆコ謌サ繧雁、: 0 繧ィ繝ゥ繝シ: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー縺ョ謌サ繧雁、 蠑墓焚 1 region: 繝槭ャ繝鬆伜沺 2 at: 繧ウ繝シ繝ォ繝舌ャ繧ッ繧定。後↑縺繧ソ繧、繝溘Φ繧ー ONIG_TRAVERSE_CALLBACK_AT_FIRST: 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗 ONIG_TRAVERSE_CALLBACK_AT_LAST: 蟄舌ヮ繝シ繝峨r蟾。蝗槭@縺ヲ縲√さ繝シ繝ォ繝舌ャ繧ッ ONIG_TRAVERSE_CALLBACK_AT_BOTH: 譛蛻昴↓繧ウ繝シ繝ォ繝舌ャ繧ッ縺励※縲∝ュ舌ヮ繝シ繝峨r蟾。蝗槭∵怙蠕後↓繧ゅ≧荳蠎ヲ繧ウ繝シ繝ォ繝舌ャ繧ッ 3 func: 繧ウ繝シ繝ォ繝舌ャ繧ッ髢「謨ー func縺0莉・螟悶ョ蛟、繧定ソ斐☆縺ィ縲√◎繧御サ・髯阪ョ蟾。蝗槭ッ陦後↑繧上★縺ォ 邨ゆコ縺吶k縲 int func(int group, int beg, int end, int level, int at, void* arg) group: 繧ー繝ォ繝シ繝礼分蜿キ beg: 繝槭ャ繝髢句ァ倶ス咲スョ end 繝槭ャ繝∫オゆコ菴咲スョ level: 繝阪せ繝医Ξ繝吶Ν (0縺九i) at: 繧ウ繝シ繝ォ繝舌ャ繧ッ縺悟他縺ウ蜃コ縺輔l縺溘ち繧、繝溘Φ繧ー ONIG_TRAVERSE_CALLBACK_AT_FIRST ONIG_TRAVERSE_CALLBACK_AT_LAST arg: 霑ス蜉蠑墓焚 4 arg; func縺ォ蟇セ縺吶k霑ス蜉蠑墓焚 # int onig_noname_group_capture_is_active(regex_t* reg) 蜷榊燕縺ェ縺怜シ城寔蜷医ョ謐慕佐讖溯ス縺梧怏蜉ケ縺九←縺縺九r霑斐☆縲 譛牙柑: 1 辟。蜉ケ: 0 蠑墓焚 1 reg: 豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_DONT_CAPTURE_GROUP縺薫N --> 辟。蜉ケ 繝代ち繝シ繝ウ縺悟錐蜑阪▽縺榊シ城寔蜷医r菴ソ逕ィ縺励※縺繧 AND 菴ソ逕ィ譁豕輔〒縲^NIG_SYN_CAPTURE_ONLY_NAMED_GROUP縺薫N AND 繧ェ繝励す繝ァ繝ウ縺ョONIG_OPTION_CAPTURE_GROUP縺薫FF --> 辟。蜉ケ 荳願ィ倅サ・螟悶ョ蝣エ蜷 --> 譛牙柑 # UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) 譁蟄嶺ク蛟句蜑阪ョ譁蟄怜嶺ス咲スョ繧定ソ斐☆縲 蠑墓焚 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ # UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蟾ヲ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 蠑墓焚 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ # UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) 譁蟄励ョ蜈磯ュ繝舌う繝井ス咲スョ縺ォ縺ェ繧九h縺縺ォ蜿ウ蛛エ縺ォ隱ソ謨エ縺励◆繧「繝峨Ξ繧ケ繧定ソ斐☆縲 蠑墓焚 1 enc: 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー 2 start: 譁蟄怜励ョ蜈磯ュ繧「繝峨Ξ繧ケ 3 s: 譁蟄怜嶺クュ縺ョ菴咲スョ # int onigenc_strlen(OnigEncoding enc, const UChar* s, const UChar* end) # int onigenc_strlen_null(OnigEncoding enc, const UChar* s) 譁蟄怜励ョ譁蟄玲焚繧定ソ斐☆縲 # int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) 譁蟄怜励ョ繝舌う繝域焚繧定ソ斐☆縲 # int onig_set_default_syntax(OnigSyntaxType* syntax) 繝繝輔か繝ォ繝医ョ豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧サ繝繝医☆繧九 蠑墓焚 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 # void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔r繧ウ繝斐シ縺吶k縲 蠑墓焚 1 to: 蟇セ雎。 2 from: 蜈 # unsigned int onig_get_syntax_op(OnigSyntaxType* syntax) # unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax) # unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax) # OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax) # void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) # void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) # void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) # void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔ョ隕∫エ繧貞盾辣ァ/蜿門セ励☆繧九 蠑墓焚 1 syntax: 豁」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕 2 op, op2, behavior, options: 隕∫エ縺ョ蛟、 # void onig_copy_encoding(OnigEncoding to, OnigEncoding from) 譁蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧偵さ繝斐シ縺吶k縲 蠑墓焚 1 to: 蟇セ雎。 2 from: 蜈 # int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code) 繝。繧ソ譁蟄励r謖螳壹@縺溘さ繝シ繝峨昴う繝ウ繝亥、縺ォ繧サ繝繝医☆繧九 ONIG_SYN_OP_VARIABLE_META_CHARACTERS縺梧ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ譁豕輔〒譛牙柑縺ォ 縺ェ縺」縺ヲ縺縺ェ縺蝣エ蜷医↓縺ッ縲√お繧ケ繧ア繝シ繝玲枚蟄励r髯、縺縺ヲ縲√%縺薙〒謖螳壹@縺溘Γ繧ソ譁蟄励ッ 讖溯ス縺励↑縺縲(邨霎シ縺ソ縺ョ譁豕輔〒縺ッ譛牙柑縺ォ縺励※縺縺ェ縺縲) 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL 蠑墓焚 1 syntax: 蟇セ雎。譁豕 2 what: 繝。繧ソ譁蟄玲ゥ溯ス縺ョ謖螳 ONIG_META_CHAR_ESCAPE ONIG_META_CHAR_ANYCHAR ONIG_META_CHAR_ANYTIME ONIG_META_CHAR_ZERO_OR_ONE_TIME ONIG_META_CHAR_ONE_OR_MORE_TIME ONIG_META_CHAR_ANYCHAR_ANYTIME 3 code: 繝。繧ソ譁蟄励ョ繧ウ繝シ繝峨昴う繝ウ繝 縺セ縺溘ッ ONIG_INEFFECTIVE_META_CHAR. # OnigCaseFoldType onig_get_default_case_fold_flag() 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧貞叙蠕励☆繧九 # int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) 繝繝輔か繝ォ繝医ョcase fold繝輔Λ繧ー繧偵そ繝繝医☆繧九 蠑墓焚 1 case_fold_flag: case fold繝輔Λ繧ー # unsigned int onig_get_match_stack_limit_size(void) 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧定ソ斐☆縲 (繝繝輔か繝ォ繝: 0 == 辟。蛻カ髯) # int onig_set_match_stack_limit_size(unsigned int size) 繝槭ャ繝√せ繧ソ繝繧ッ繧オ繧、繧コ縺ョ譛螟ァ蛟、繧呈欠螳壹☆繧九 (size = 0: 辟。蛻カ髯) 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL # int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges)) 譁ー縺励>Unicode繝励Ο繝代ユ繧」繧貞ョ夂セゥ縺吶k縲 (縺薙ョ髢「謨ー縺ッ繧ケ繝ャ繝繝峨そ繝シ繝輔〒縺ッ縺ェ縺) 蠑墓焚 1 name: 繝励Ο繝代ユ繧」蜷 (ASCII繧ウ繝シ繝峨ョ縺ソ縲 譁蟄 ' ', '-', '_' 縺ッ辟。隕悶&繧後k縲) 2 ranges: 繝励Ο繝代ユ繧」繧ウ繝シ繝峨昴う繝ウ繝育ッ蝗イ (譛蛻昴ョ隕∫エ縺ッ遽蝗イ縺ョ謨ー) [num-of-ranges, 1st-range-start, 1st-range-end, 2nd-range-start... ] * 縺薙ョ髢「謨ー繧貞他繧薙□蠕後〒縲〉anges繧貞、画峩/遐エ螢翫@縺ェ縺縺薙→ 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL # unsigned int onig_get_parse_depth_limit(void) 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r霑斐☆縲 (繝繝輔か繝ォ繝: regint.h 縺ァ螳夂セゥ縺輔l縺ヲ縺繧 DEFAULT_PARSE_DEPTH_LIMIT縲ら樟蝨ィ縺ッ 4096) # int onig_set_parse_depth_limit(unsigned int depth) 蜀榊クー繝代シ繧ケ蜃ヲ逅縺ョ譛螟ァ豺ア縺輔r謖螳壹☆繧九 (depth = 0: regint.h 縺ァ螳夂セゥ縺輔l縺溘ョ繝輔か繝ォ繝亥、縺ォ險ュ螳壹☆繧九) 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL # int onig_end(void) 繝ゥ繧、繝悶Λ繝ェ縺ョ菴ソ逕ィ繧堤オゆコ縺吶k縲 豁」蟶ク邨ゆコ謌サ繧雁、: ONIG_NORMAL onig_init()繧貞榊コヲ蜻シ縺ウ蜃コ縺励※繧ゅ∽サ・蜑阪↓菴懈舌@縺滓ュ」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝 繧剃スソ逕ィ縺吶k縺薙→縺ッ縺ァ縺阪↑縺縲 # const char* onig_version(void) 繝舌シ繧ク繝ァ繝ウ譁蟄怜励r霑斐☆縲(萓 "5.0.3") // END oniguruma-6.7.0/doc/FAQ000066400000000000000000000003101321242335200146200ustar00rootroot00000000000000FAQ 2006/11/14 1. Lognest match You can execute longest match by using ONIG_OPTION_FIND_LONGEST option in onig_new(). 2. Mailing list There is no mailing list about Oniguruma. // END oniguruma-6.7.0/doc/FAQ.ja000066400000000000000000000006531321242335200152230ustar00rootroot00000000000000FAQ 2016/04/06 1. 譛髟キ繝槭ャ繝 onig_new()縺ョ荳ュ縺ァ縲^NIG_OPTION_FIND_LONGEST繧ェ繝励す繝ァ繝ウ 繧剃スソ逕ィ縺吶l縺ー譛髟キ繝槭ャ繝√↓縺ェ繧九 2. CR + LF DOS縺ョ謾ケ陦(CR(0x0c) + LF(0x0a)縺ョ騾」邯) regenc.h縺ョ荳ュ縺ョ縲∽サ・荳九ョ驛ィ蛻繧呈怏蜉ケ縺ォ縺吶k縲 /* #define USE_CRNL_AS_LINE_TERMINATOR */ 3. 繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝 鬯シ霆翫↓髢「縺吶k繝。繝シ繝ェ繝ウ繧ー繝ェ繧ケ繝医ッ蟄伜惠縺励↑縺縲 //END oniguruma-6.7.0/doc/RE000066400000000000000000000376411321242335200145400ustar00rootroot00000000000000Oniguruma Regular Expressions Version 6.7.0 2017/12/08 syntax: ONIG_SYNTAX_ONIGURUMA (default) 1. Syntax elements \ escape (enable or disable meta character) | alternation (...) group [...] character class 2. Characters \t horizontal tab (0x09) \v vertical tab (0x0B) \n newline (line feed) (0x0A) \r carriage return (0x0D) \b backspace (0x08) \f form feed (0x0C) \a bell (0x07) \e escape (0x1B) \nnn octal char (encoded byte value) \o{17777777777} wide octal char (character code point value) \uHHHH wide hexadecimal char (character code point value) \xHH hexadecimal char (encoded byte value) \x{7HHHHHHH} wide hexadecimal char (character code point value) \cx control char (character code point value) \C-x control char (character code point value) \M-x meta (x|0x80) (character code point value) \M-\C-x meta control char (character code point value) (* \b as backspace is effective in character class only) 3. Character types . any character (except newline) \w word character Not Unicode: alphanumeric, "_" and multibyte char. Unicode: General_Category -- (Letter|Mark|Number|Connector_Punctuation) \W non-word char \s whitespace char Not Unicode: \t, \n, \v, \f, \r, \x20 Unicode case: U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL), General_Category -- Line_Separator -- Paragraph_Separator -- Space_Separator \S non-whitespace char \d decimal digit char Unicode: General_Category -- Decimal_Number \D non-decimal-digit char \h hexadecimal digit char [0-9a-fA-F] \H non-hexdigit char \R general newline (* can't be used in character-class) "\r\n" or \n,\v,\f,\r (* but doesn't backtrack from \r\n to \r) Unicode case: "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029 \N negative newline (?-m:.) \O true anychar (?m:.) (* original function) \X Extended Grapheme Cluster (?>\O(?:\Y\O)*) \X doesn't check whether matching start position is boundary. Write as \y\X if you want to ensure it. Unicode case: See [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] Not Unicode: (?>\r\n|\O) Character Property * \p{property-name} * \p{^property-name} (negative) * \P{property-name} (negative) property-name: + works on all encodings Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII + works on EUC_JP, Shift_JIS Hiragana, Katakana + works on UTF8, UTF16, UTF32 See doc/UNICODE_PROPERTIES. 4. Quantifier greedy ? 1 or 0 times * 0 or more times + 1 or more times {n,m} at least n but no more than m times {n,} at least n times {,n} at least 0 but no more than n times ({0,n}) {n} n times reluctant ?? 1 or 0 times *? 0 or more times +? 1 or more times {n,m}? at least n but not more than m times {n,}? at least n times {,n}? at least 0 but not more than n times (== {0,n}?) possessive (greedy and does not backtrack once match) ?+ 1 or 0 times *+ 0 or more times ++ 1 or more times ({n,m}+, {n,}+, {n}+ are possessive op. in ONIG_SYNTAX_JAVA only) ex. /a*+/ === /(?>a*)/ 5. Anchors ^ beginning of the line $ end of the line \b word boundary \B non-word boundary \y Extended Grapheme Cluster boundary \Y Extended Grapheme Cluster non-boundary \A beginning of string \Z end of string, or before newline at the end \z end of string \G where the current search attempt begins \K keep (keep start position of the result string) 6. Character class ^... negative class (lowest precedence) x-y range from x to y [...] set (character class in character class) ..&&.. intersection (low precedence, only higher than ^) ex. [a-w&&[^c-g]z] ==> ([a-w] AND ([^c-g] OR z)) ==> [abh-w] * If you want to use '[', '-', or ']' as a normal character in character class, you should escape them with '\'. POSIX bracket ([:xxxxx:], negate [:^xxxxx:]) Not Unicode Case: alnum alphabet or digit char alpha alphabet ascii code value: [0 - 127] blank \t, \x20 cntrl digit 0-9 graph include all of multibyte encoded characters lower print include all of multibyte encoded characters punct space \t, \n, \v, \f, \r, \x20 upper xdigit 0-9, a-f, A-F word alphanumeric, "_" and multibyte characters Unicode Case: alnum Letter | Mark | Decimal_Number alpha Letter | Mark ascii 0000 - 007F blank Space_Separator | 0009 cntrl Control | Format | Unassigned | Private_Use | Surrogate digit Decimal_Number graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate lower Lowercase_Letter print [[:graph:]] | [[:space:]] punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | Final_Punctuation | Initial_Punctuation | Other_Punctuation | Open_Punctuation space Space_Separator | Line_Separator | Paragraph_Separator | U+0009 | U+000A | U+000B | U+000C | U+000D | U+0085 upper Uppercase_Letter xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066 (0-9, a-f, A-F) word Letter | Mark | Decimal_Number | Connector_Punctuation 7. Extended groups (?#...) comment (?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 (?=subexp) look-ahead (?!subexp) negative look-ahead (?<=subexp) look-behind (?subexp) atomic group no backtracks in subexp. (?subexp), (?'name'subexp) define named group (Each character of the name must be a word character.) Not only a name but a number is assigned like a capturing group. Assigning the same name to two or more subexps is allowed. (?~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 . 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 . ex. (?~|345|\d*) "12345678" ==> "12", "1", "" (?~|absent) Absent stopper (* original) After passed this operator, string right range is limited at the point that does not include the string match whth . (?~|) Range clear Clear the effects caused by Absent stoppers. * Nested Absent functions are not supported and the behavior is undefined. (?(condition_exp)then_exp|else_exp) if-then-else (?(condition_exp)then_exp) if-then condition_exp can be a backreference number/name or a normal regular expression. When condition_exp is a backreference number/name, both then_exp and else_exp can be omitted. Then it works as a backreference validity checker. [ backreference validity checker ] (* original) (?(n)), (?(-n)), (?(+n)), (?(n+level)) ... (?()), (?('-n')), (?(<+n>)) ... (?()), (?('name')), (?()) ... 8. Backreferences When we say "backreference a group," it actually means, "re-match the same text matched by the subexp in that group." \n \k \k'n' (n >= 1) backreference the nth group in the regexp \k<-n> \k'-n' (n >= 1) backreference the nth group counting backwards from the referring position \k<+n> \k'+n' (n >= 1) backreference the nth group counting forwards from the referring position \k \k'name' backreference a group with the specified name When backreferencing with a name that is assigned to more than one groups, the last group with the name is checked first, if not matched then the previous one with the name, and so on, until there is a match. * Backreference by number is forbidden if any named group is defined and ONIG_OPTION_CAPTURE_GROUP is not set. backreference with recursion level (n >= 1, level >= 0) \k \k'n+level' \k \k'n-level' \k \k'name+level' \k \k'name-level' Destine a group on the recursion level relative to the referring position. ex 1. /\A(?|.|(?:(?.)\g\k))\z/.match("reee") /\A(?|.|(?:(?.)\g\k))\z/.match("reer") \k refers to the (?.) on the same recursion level with it. ex 2. r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) (? \g \g* \g ){0} (? < \g \s* > ){0} (? [a-zA-Z_:]+ ){0} (? [^<&]+ (\g | [^<&]+)* ){0} (? >){0} \g __REGEXP__ p r.match("fbbbf").captures 9. Subexp calls ("Tanaka Akira special") (* original function) When we say "call a group," it actually means, "re-execute the subexp in that group." \g \g'n' (n >= 1) call the nth group \g<0> \g'0' call zero (call the total regexp) \g<-n> \g'-n' (n >= 1) call the nth group counting backwards from the calling position \g<+n> \g'+n' (n >= 1) call the nth group counting forwards from the calling position \g \g'name' call the group with the specified name * Left-most recursive calls are not allowed. ex. (?a|\gb) => error (?a|b\gc) => OK * Calls with a name that is assigned to more than one groups are not allowed. * Call by number is forbidden if any named group is defined and ONIG_OPTION_CAPTURE_GROUP is not set. * The option status of the called group is always effective. ex. /(?-i:\g)(?i:(?a)){0}/.match("A") 10. Captured group Behavior of an unnamed group (...) changes with the following conditions. (But named group is not changed.) case 1. /.../ (named group is not used, no option) (...) is treated as a capturing group. case 2. /.../g (named group is not used, 'g' option) (...) is treated as a non-capturing group (?:...). case 3. /..(?..)../ (named group is used, no option) (...) is treated as a non-capturing group. numbered-backref/call is not allowed. case 4. /..(?..)../G (named group is used, 'G' option) (...) is treated as a capturing group. numbered-backref/call is allowed. where g: ONIG_OPTION_DONT_CAPTURE_GROUP G: ONIG_OPTION_CAPTURE_GROUP ('g' and 'G' options are argued in ruby-dev ML) ----------------------------- A-1. Syntax-dependent options + ONIG_SYNTAX_ONIGURUMA (?m): dot (.) also matches newline + ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA (?s): dot (.) also matches newline (?m): ^ matches after newline, $ matches before newline A-2. Original extensions + hexadecimal digit char type \h, \H + named group (?...), (?'name'...) + named backref \k + subexp call \g, \g A-3. Missing features compared with perl 5.8.0 + \N{name} + \l,\u,\L,\U,\C + (?{code}) + (??{code}) * \Q...\E This is effective on ONIG_SYNTAX_PERL and ONIG_SYNTAX_JAVA. A-4. Differences with Japanized GNU regex(version 0.12) of Ruby 1.8 + add character property (\p{property}, \P{property}) + add hexadecimal digit char type (\h, \H) + add look-behind (?<=fixed-width-pattern), (?>]/ in EUC-JP encoding. + effect range of isolated option is to next ')'. ex. (?:(?i)a|b) is interpreted as (?:(?i:a|b)), not (?:(?i:a)|b). + isolated option is not transparent to previous pattern. ex. a(?i)* is a syntax error pattern. + allowed unpaired left brace as a normal character. ex. /{/, /({)/, /a{2,3/ etc... + negative POSIX bracket [:^xxxx:] is supported. + POSIX bracket [:ascii:] is added. + repeat of look-ahead is not allowed. ex. /(?=a)*/, /(?!b){5}/ + Ignore case option is effective to escape sequence. ex. /\x61/i =~ "A" + In the range quantifier, the number of the minimum is optional. /a{,n}/ == /a{0,n}/ The omission of both minimum and maximum values is not allowed. /a{,}/ + /{n}?/ is not a reluctant quantifier. /a{n}?/ == /(?:a{n})?/ + invalid back reference is checked and raises error. /\1/, /(a)\2/ + Zero-width match in an infinite loop stops the repeat, then changes of the capture group status are checked as stop condition. /(?:()|())*\1\2/ =~ "" /(?:\1a|())*/ =~ "a" A-5. Features disabled in default syntax + capture history (?@...) and (?@...) ex. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] see sample/listcap.c file. A-6. Problems + Invalid encoding byte sequence is not checked. ex. UTF-8 * Invalid first byte is treated as a character. /./u =~ "\xa3" * Incomplete byte sequence is not checked. /\w+/ =~ "a\xf3\x8ec" // END oniguruma-6.7.0/doc/RE.ja000066400000000000000000000457151321242335200151320ustar00rootroot00000000000000鬯シ霆 豁」隕剰。ィ迴セ Version 6.7.0 2017/12/08 菴ソ逕ィ譁豕: ONIG_SYNTAX_ONIGURUMA (譌「螳壼、) 1. 蝓コ譛ャ隕∫エ \ 騾驕ソ菫ョ鬟セ (繧ィ繧ケ繧ア繝シ繝) 豁」隕剰。ィ迴セ險伜捷縺ョ譛牙柑/辟。蜉ケ縺ョ蛻カ蠕。 | 驕ク謚槫ュ (...) 蠑城寔蜷 (繧ー繝ォ繝シ繝) [...] 譁蟄鈴寔蜷 (譁蟄励け繝ゥ繧ケ) 2. 譁蟄 \t 豌エ蟷ウ繧ソ繝 (0x09) \v 蝙ら峩繧ソ繝 (0x0B) \n 謾ケ陦 (0x0A) \r 蠕ゥ蟶ー (0x0D) \b 蠕碁遨コ逋ス (0x08) \f 謾ケ鬆 (0x0C) \a 髏 (0x07) \e 騾驕ソ菫ョ鬟セ (0x1B) \nnn 蜈ォ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、(縺ョ荳驛ィ) \o{17777777777} 諡。蠑オ蜈ォ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 \uHHHH 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 \xHH 蜊∝ュ騾イ謨ー陦ィ迴セ 隨ヲ蜿キ蛹悶ヰ繧、繝亥、(縺ョ荳驛ィ) \x{7HHHHHHH} 諡。蠑オ蜊∝ュ騾イ謨ー陦ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 \cx 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 \C-x 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 \M-x 雜 (x|0x80) 繧ウ繝シ繝峨昴う繝ウ繝亥、 \M-\C-x 雜 + 蛻カ蠕。譁蟄苓。ィ迴セ 繧ウ繝シ繝峨昴う繝ウ繝亥、 窶サ \b縺ッ縲∵枚蟄鈴寔蜷亥縺ァ縺ョ縺ソ譛牙柑 3. 譁蟄礼ィョ . 莉サ諢乗枚蟄 (謾ケ陦後r髯、縺: 繧ェ繝励す繝ァ繝ウ縺ォ萓晏ュ) \w 蜊倩ェ樊ァ区先枚蟄 Unicode莉・螟悶ョ蝣エ蜷: 闍ア謨ー蟄, "_" 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄励 Unicode縺ョ蝣エ蜷: General_Category -- (Letter|Mark|Number|Connector_Punctuation) \W 髱槫腰隱樊ァ区先枚蟄 \s 遨コ逋ス譁蟄 Unicode莉・螟悶ョ蝣エ蜷: \t, \n, \v, \f, \r, \x20 Unicode縺ョ蝣エ蜷: U+0009, U+000A, U+000B, U+000C, U+000D, U+0085(NEL), General_Category -- Line_Separator -- Paragraph_Separator -- Space_Separator \S 髱樒ゥコ逋ス譁蟄 \d 10騾イ謨ー蟄 Unicode縺ョ蝣エ蜷: General_Category -- Decimal_Number \D 髱10騾イ謨ー蟄 \h 16騾イ謨ー蟄 [0-9a-fA-F] \H 髱16騾イ謨ー蟄 \R 豎取隼陦 (* 譁蟄鈴寔蜷医ョ荳ュ縺ァ縺ッ菴ソ逕ィ縺ァ縺阪↑縺) "\r\n" or \n,\v,\f,\r (* 菴縺 \r\n縺九i\r縺ォ縺ッ繝舌ャ繧ッ繝医Λ繝繧ッ縺励↑縺) Unicode縺ョ蝣エ蜷: "\r\n" or \n,\v,\f,\r or U+0085, U+2028, U+2029 \N 髱樊隼陦梧枚蟄 (?-m:.) \O 逵滉ササ諢乗枚蟄 (?m:.) (* 蜴滉ス) \X 諡。蠑オ譖ク險倡エ謌ソ (?>\O(?:\Y\O)*) \X縺ッ辣ァ蜷医ョ髢句ァ倶ス咲スョ縺梧僑蠑オ譖ク險倡エ謌ソ縺ョ蠅逡後°縺ゥ縺縺九r遒コ隱阪@縺ェ縺縲 縺昴l繧堤「コ螳溘↓縺励◆縺代l縺ー縲―y\X縺ィ譖ク縺代ー濶ッ縺縲 Unicode縺ョ蝣エ蜷: 蜿らァ [Unicode Standard Annex #29: http://unicode.org/reports/tr29/] Unicode莉・螟悶ョ蝣エ蜷: (?>\r\n|\O) Character Property * \p{property-name} * \p{^property-name} (negative) * \P{property-name} (negative) property-name: + 蜈ィ縺ヲ縺ョ繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー縺ァ譛牙柑 Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII, + EUC-JP, Shift_JIS縺ァ譛牙柑 Hiragana, Katakana + UTF8, UTF16, UTF32縺ァ譛牙柑 doc/UNICODE_PROPERTIES蜿らァ 4. 驥乗欠螳壼ュ 谺イ蠑オ繧 ? 荳蝗槭∪縺溘ッ髮カ蝗 * 髮カ蝗樔サ・荳 + 荳蝗樔サ・荳 {n,m} n蝗樔サ・荳確蝗樔サ・荳 {n,} n蝗樔サ・荳 {,n} 髮カ蝗樔サ・荳穫蝗樔サ・荳 ({0,n}) {n} n蝗 辟。谺イ ?? 荳蝗槭∪縺溘ッ髮カ蝗 *? 髮カ蝗樔サ・荳 +? 荳蝗樔サ・荳 {n,m}? n蝗樔サ・荳確蝗樔サ・荳 {n,}? n蝗樔サ・荳 {,n}? 髮カ蝗樔サ・荳穫蝗樔サ・荳 (== {0,n}?) 蠑キ谺イ (谺イ蠑オ繧翫〒縲∫ケー繧願ソ斐@縺ォ謌仙粥縺励◆蠕後ッ蝗樊焚繧呈ク帙i縺吶h縺縺ェ蠕碁蜀崎ゥヲ陦後r縺励↑縺) ?+ 荳蝗槭∪縺溘ッ髮カ蝗 *+ 髮カ蝗樔サ・荳 ++ 荳蝗樔サ・荳 ({n,m}+, {n,}+, {n}+ 縺ッ縲^NIG_SYNTAX_JAVA縺ァ縺ョ縺ソ蠑キ谺イ縺ェ謖螳壼ュ) 萓. /a*+/ === /(?>a*)/ 5. 骭ィ ^ 陦碁ュ $ 陦梧忰 \b 蜊倩ェ槫「逡 \B 髱槫腰隱槫「逡 \y 諡。蠑オ譖ク險倡エ謌ソ 蠅逡 \Y 諡。蠑オ譖ク險倡エ謌ソ 髱槫「逡 \A 譁蟄怜怜磯ュ \Z 譁蟄怜玲忰蟆セ縲√∪縺溘ッ譁蟄怜玲忰蟆セ縺ョ謾ケ陦後ョ逶エ蜑 \z 譁蟄怜玲忰蟆セ \G 謗「邏「髢句ァ倶ス咲スョ \K 菫晄戟 (邨先棡縺ョ髢句ァ倶ス咲スョ繧偵%縺ョ菴咲スョ縺ォ菫昴▽) 6. 譁蟄鈴寔蜷 ^... 蜷ヲ螳 (譛菴主━蜈亥コヲ貍皮ョ怜ュ) x-y 遽蝗イ (x縺九iy縺セ縺ァ) [...] 髮蜷 (譁蟄鈴寔蜷亥譁蟄鈴寔蜷) ..&&.. 遨肴シ皮ョ (^縺ョ谺。縺ォ蜆ェ蜈亥コヲ縺御ス弱>貍皮ョ怜ュ) 萓. [a-w&&[^c-g]z] ==> ([a-w] and ([^c-g] or z)) ==> [abh-w] 窶サ '[', '-', ']'繧偵∵枚蟄鈴寔蜷亥縺ァ騾壼クク譁蟄励ョ諢丞袖縺ァ菴ソ逕ィ縺励◆縺蝣エ蜷医↓縺ッ縲 縺薙l繧峨ョ譁蟄励r'\'縺ァ騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺縲 POSIX繝悶Λ繧ア繝繝 ([:xxxxx:], 蜷ヲ螳 [:^xxxxx:]) Unicode莉・螟悶ョ蝣エ蜷: alnum 闍ア謨ー蟄 alpha 闍ア蟄 ascii 0 - 127 blank \t, \x20 cntrl digit 0-9 graph 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 lower print 螟壹ヰ繧、繝域枚蟄怜ィ驛ィ繧貞性繧 punct space \t, \n, \v, \f, \r, \x20 upper xdigit 0-9, a-f, A-F word 闍ア謨ー蟄, "_" 縺翫h縺ウ 螟壹ヰ繧、繝域枚蟄 Unicode縺ョ蝣エ蜷: alnum Letter | Mark | Decimal_Number alpha Letter | Mark ascii 0000 - 007F blank Space_Separator | 0009 cntrl Control | Format | Unassigned | Private_Use | Surrogate digit Decimal_Number graph [[:^space:]] && ^Control && ^Unassigned && ^Surrogate lower Lowercase_Letter print [[:graph:]] | [[:space:]] punct Connector_Punctuation | Dash_Punctuation | Close_Punctuation | Final_Punctuation | Initial_Punctuation | Other_Punctuation | Open_Punctuation space Space_Separator | Line_Separator | Paragraph_Separator | U+0009 | U+000A | U+000B | U+000C | U+000D | U+0085 upper Uppercase_Letter xdigit U+0030 - U+0039 | U+0041 - U+0046 | U+0061 - U+0066 (0-9, a-f, A-F) word Letter | Mark | Decimal_Number | Connector_Punctuation 7. 諡。蠑オ蠑城寔蜷 (?#...) 豕ィ驥 (?imxWDSP-imxWDSP) 蟄、遶九が繝励す繝ァ繝ウ i: 螟ァ譁蟄怜ー乗枚蟄礼ァ蜷 m: 隍謨ー陦 x: 諡。蠑オ蠖「蠑 W: word縺窟SCII縺ョ縺ソ (\w, \p{Word}, [[:word:]]) word蠅逡後′ASCII縺ョ縺ソ (\b) D: digit縺窟SCII縺ョ縺ソ (\d, \p{Digit}, [[:digit:]]) S: space縺窟SCII縺ョ縺ソ (\s, \p{Space}, [[:space:]]) P: POSIX繝励Ο繝代ユ繧」縺窟SCII縺ョ縺ソ (W,D,S繧貞ィ縺ヲ蜷ォ繧薙〒縺繧) (alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper, xdigit, word) (?imxWDSP-imxWDSP:蠑) 蠑上が繝励す繝ァ繝ウ (蠑) 謐慕佐蠑城寔蜷 (?:蠑) 髱樊黒迯イ蠑城寔蜷 (?=蠑) 蜈郁ェュ縺ソ (?!蠑) 蜷ヲ螳壼郁ェュ縺ソ (?<=蠑) 謌サ繧願ェュ縺ソ (?蠑) 蜴溷ュ千噪蠑城寔蜷 蠑丞ィ菴薙r騾夐℃縺励◆縺ィ縺阪∝シ上ョ荳ュ縺ァ縺ョ蠕碁蜀崎ゥヲ陦後r陦後↑繧上↑縺 (?蠑), (?'name'蠑) 蜷榊燕莉倥″謐慕佐蠑城寔蜷 蠑城寔蜷医↓蜷榊燕繧貞牡繧雁ス薙※繧(螳夂セゥ縺吶k)縲 (蜷榊燕縺ッ蜊倩ェ樊ァ区先枚蟄励〒縺ェ縺代l縺ー縺ェ繧峨↑縺縲) 蜷榊燕縺縺代〒縺ェ縺上∵黒迯イ蠑城寔蜷医→蜷梧ァ倥↓逡ェ蜿キ繧ょ牡繧雁ス薙※繧峨l繧九 逡ェ蜿キ謖螳壹′遖∵ュ「縺輔l縺ヲ縺縺ェ縺迥カ諷 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) 縺ョ縺ィ縺阪ッ縲∝錐蜑阪r菴ソ繧上↑縺縺ァ逡ェ蜿キ縺ァ繧ょ盾辣ァ縺ァ縺阪k縲 隍謨ー縺ョ蠑城寔蜷医↓蜷後§蜷榊燕繧剃ク弱∴繧九%縺ィ縺ッ險ア縺輔l縺ヲ縺繧九 縺薙ョ蝣エ蜷医↓縺ッ縲√%縺ョ蜷榊燕繧剃スソ逕ィ縺励◆蠕梧婿蜿らァ縺ッ蜿ッ閭ス縺ァ縺ゅk縺後 驛ィ蛻蠑丞他蜃コ縺励ッ縺ァ縺阪↑縺縲 <荳榊惠讖溯ス鄒、> (?~荳榊惠蠑) 荳榊惠郢ー繧願ソ斐@ (*蜴滓。 逕ー荳ュ蜩イ) 縺薙l縺ッ.*(繧医j豁」遒コ縺ォ縺ッ\O*)縺ョ繧医≧縺ォ蜍穂ス懊☆繧九′縲<荳榊惠蠑>縺ォ 驕ゥ蜷医☆繧区枚蟄怜励r蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 縺薙l縺ッ(?~|荳榊惠蠑楯\O*)縺ョ逵∫払陦ィ險倥〒縺ゅk縲 (?~|荳榊惠蠑楯蠑) 荳榊惠蠑 (* 蜴滉ス) 縺薙l縺ッ<蠑>縺ョ繧医≧縺ォ蜍穂ス懊☆繧九′縲<荳榊惠蠑>縺ォ驕ゥ蜷医☆繧区枚蟄怜励r 蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 萓 (?~|345|\d*) "12345678" ==> "12", "1", "" (?~|荳榊惠蠑) 荳榊惠蛛懈ュ「 (* 蜴滉ス) 縺薙ョ貍皮ョ怜ュ舌r騾夐℃縺励◆蠕後ッ縲∝ッセ雎。譁蟄怜励ョ驕ゥ蜷育ッ蝗イ縺ョ譛蠕後′ <荳榊惠蠑>縺ォ驕ゥ蜷医☆繧区枚蟄怜励r蜷ォ縺セ縺ェ縺遽蝗イ縺ォ蛻カ髯舌&繧後k縲 (?~|) 遽蝗イ豸亥悉 荳榊惠蛛懈ュ「縺ョ蜉ケ譫懊r豸医@縺ヲ縲∝晄悄迥カ諷九↓縺吶k縲 * 荳榊惠讖溯ス縺ョ蜈・繧悟ュ舌↓縺ッ蟇セ蠢懊@縺ヲ縺翫i縺壹∵嫌蜍輔ッ荳榊ョ壹→縺吶k縲 (?(譚。莉カ蠑)謌仙粥蠑楯螟ア謨怜シ) 譚。莉カ蠑上′謌仙粥縺吶l縺ー謌仙粥蠑上∝、ア謨励☆繧後ー螟ア謨怜シ上r螳溯。後☆繧 縺薙ョ讖溯ス縺ョ蟄伜惠逅逕ア縺ッ縲∵仙粥蠑上′螟ア謨励@縺ヲ繧ょ、ア謨怜シ上↓縺ッ 陦後°縺ェ縺縺薙→縲ゅ%繧後ッ莉悶ョ豁」隕剰。ィ迴セ縺ァ譖ク縺上%縺ィ縺後〒縺阪↑縺縲 繧ゅ≧縺イ縺ィ縺、縺ッ縲∵擅莉カ蠑上′蠕梧婿蜿らァ縺ョ逡ェ蜿キ/蜷榊燕縺ョ縺ィ縺阪 蠕梧婿蜿らァ蛟、縺ョ譛牙柑諤ァ繧定ェソ縺ケ繧(譁蟄怜励→辣ァ蜷医ッ縺励↑縺) 諢丞袖縺ォ縺ェ繧九 (?(譚。莉カ蠑)謌仙粥蠑) 譚。莉カ蠑上′謌仙粥縺吶l縺ー謌仙粥蠑上r螳溯。後☆繧 (譚。莉カ蠑上′騾壼クク縺ョ蠑上ョ縺ィ縺阪↓縺ッ縲√%縺ョ讒区枚縺ッ荳榊ソ隕√□縺 莉翫ョ縺ィ縺薙m繧ィ繝ゥ繝シ縺ォ縺ッ縺励↑縺縲) 譚。莉カ蠑上ッ蠕梧婿蜿らァ縺ョ逡ェ蜿キ/蜷榊燕縺セ縺溘ッ譎ョ騾壹ョ蠑上r菴ソ逕ィ縺ァ縺阪k縲 譚。莉カ蠑上′蠕梧婿蜿らァ縺ョ蝣エ蜷医∵仙粥蠑上→螟ア謨怜シ上ョ荳。譁ケ繧堤怐逡・蜿ッ閭ス縺ァ縺ゅj縲 縺薙ョ蝣エ蜷医∝セ梧婿蜿らァ蛟、譛牙柑諤ァ繧定ェソ縺ケ繧(謌仙粥/螟ア謨)讖溯ス縺ョ縺ソ縺ォ縺ェ繧九 [蠕梧婿蜿らァ蛟、譛牙柑諤ァ遒コ隱榊勣] (* 蜴滉ス) (?(n)), (?(-n)), (?(+n)), (?(n+level)) ... (?()), (?('-n')), (?(<+n>)) ... (?()), (?('name')), (?()) ... 8. 蠕梧婿蜿らァ \n 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k'n' 逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k<-n> 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k'-n' 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k<+n> 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k'+n' 逶ク蟇セ逡ェ蜿キ謖螳壼盾辣ァ (n >= 1) \k 蜷榊燕謖螳壼盾辣ァ \k'name' 蜷榊燕謖螳壼盾辣ァ 蜷榊燕謖螳壼盾辣ァ縺ァ縲√◎縺ョ蜷榊燕縺瑚、謨ー縺ョ蠑城寔蜷医〒螟夐榊ョ夂セゥ縺輔l縺ヲ縺繧句エ蜷医↓縺ッ縲 逡ェ蜿キ縺ョ螟ァ縺阪>蠑城寔蜷医°繧牙━蜈育噪縺ォ蜿らァ縺輔l繧九 (繝槭ャ繝√@縺ェ縺縺ィ縺阪↓縺ッ逡ェ蜿キ縺ョ蟆上&縺蠑城寔蜷医′蜿らァ縺輔l繧) 窶サ 逡ェ蜿キ謖螳壼盾辣ァ縺ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 遖∵ュ「縺輔l繧九(10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) 繝阪せ繝医Ξ繝吶Ν莉倥″蠕梧婿蜿らァ level: 0, 1, 2, ... \k (n >= 1) \k (n >= 1) \k'n+level' (n >= 1) \k'n-level' (n >= 1) \k \k \k'name+level' \k'name-level' 蠕梧婿蜿らァ縺ョ菴咲スョ縺九i逶ク蟇セ逧縺ェ驛ィ蛻蠑丞他蜃コ縺励ロ繧ケ繝医Ξ繝吶Ν繧呈欠螳壹@縺ヲ縲√◎縺ョ繝ャ繝吶Ν縺ァ縺ョ 謐慕佐蛟、繧貞盾辣ァ縺吶k縲 萓-1. /\A(?|.|(?:(?.)\g\k))\z/.match("reer") 萓-2. r = Regexp.compile(<<'__REGEXP__'.strip, Regexp::EXTENDED) (? \g \g* \g ){0} (? < \g \s* > ){0} (? [a-zA-Z_:]+ ){0} (? [^<&]+ (\g | [^<&]+)* ){0} (? >){0} \g __REGEXP__ p r.match('fbbbf').captures 9. 驛ィ蛻蠑丞他蜃コ縺 ("逕ー荳ュ蜩イ繧ケ繝壹す繝」繝ォ") (* 蜴滉ス) \g 蜷榊燕謖螳壼他蜃コ縺 \g'name' 蜷榊燕謖螳壼他蜃コ縺 \g 逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) \g'n' 逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) \g<0> 逡ェ蜿キ謖螳壼他蜃コ縺(蜈ィ菴灘他縺ウ蜃コ縺) \g'0' 逡ェ蜿キ謖螳壼他蜃コ縺(蜈ィ菴灘他縺ウ蜃コ縺) \g<-n> 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) \g'-n' 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) \g<+n> 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) \g'+n' 逶ク蟇セ逡ェ蜿キ謖螳壼他蜃コ縺 (n >= 1) 窶サ 譛蟾ヲ菴咲スョ縺ァ縺ョ蜀榊クー蜻シ蜃コ縺励ッ遖∵ュ「縺輔l繧九 萓. (?a|\gb) => error (?a|b\gc) => OK 窶サ 逡ェ蜿キ謖螳壼他蜃コ縺励ッ縲∝錐蜑堺サ倥″謐慕佐蠑城寔蜷医′螳夂セゥ縺輔l縲 縺九▽ ONIG_OPTION_CAPTURE_GROUP縺梧欠螳壹&繧後※縺縺ェ縺蝣エ蜷医↓縺ッ縲 遖∵ュ「縺輔l繧九 (10. 謐慕佐蠑城寔蜷 繧貞盾辣ァ) 窶サ 蜻シ縺ウ蜃コ縺輔l縺溷シ城寔蜷医ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′蜻シ蜃コ縺怜エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九→逡ー縺ェ縺」縺ヲ縺繧 縺ィ縺阪∝他縺ウ蜃コ縺輔l縺溷エ縺ョ繧ェ繝励す繝ァ繝ウ迥カ諷九′譛牙柑縺ァ縺ゅk縲 萓. (?-i:\g)(?i:(?a)){0} 縺ッ "A" 縺ォ辣ァ蜷域仙粥縺吶k縲 10. 謐慕佐蠑城寔蜷 謐慕佐蠑城寔蜷(...)縺ッ縲∽サ・荳九ョ譚。莉カ縺ォ蠢懊§縺ヲ謖ッ闊槭′螟牙喧縺吶k縲 (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ螟牙喧縺励↑縺) case 1. /.../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 case 2. /.../g (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ荳堺スソ逕ィ縲√が繝励す繝ァ繝ウ 'g'繧呈欠螳) (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 case 3. /..(?..)../ (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ縺ェ縺) (...) 縺ッ縲髱樊黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ荳崎ィア蜿ッ縲 case 4. /..(?..)../G (蜷榊燕莉倥″謐慕佐蠑城寔蜷医ッ菴ソ逕ィ縲√が繝励す繝ァ繝ウ 'G'繧呈欠螳) (...) 縺ッ縲∵黒迯イ蠑城寔蜷医→縺励※謇ア繧上l繧九 逡ェ蜿キ謖螳壼盾辣ァ/蜻シ縺ウ蜃コ縺励ッ險ア蜿ッ縲 菴縺 g: ONIG_OPTION_DONT_CAPTURE_GROUP G: ONIG_OPTION_CAPTURE_GROUP ('g'縺ィ'G'繧ェ繝励す繝ァ繝ウ縺ッ縲〉uby-dev ML縺ァ隴ー隲悶&繧後◆縲) 縺薙l繧峨ョ謖ッ闊槭ョ諢丞袖縺ッ縲 蜷榊燕莉倥″謐慕佐縺ィ蜷榊燕辟。縺玲黒迯イ繧貞酔譎ゅ↓菴ソ逕ィ縺吶k蠢辟カ諤ァ縺ョ縺ゅk蝣エ髱「縺ッ蟆代↑縺縺ァ縺ゅm縺 縺ィ縺縺逅逕ア縺九i閠縺医i繧後◆繧ゅョ縺ァ縺ゅk縲 ----------------------------- 陬懆ィ 1. 譁豕穂セ晏ュ倥が繝励す繝ァ繝ウ + ONIG_SYNTAX_ONIGURUMA (?m): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 + ONIG_SYNTAX_PERL 縺ィ ONIG_SYNTAX_JAVA (?s): 邨よュ「隨ヲ險伜捷(.)縺ッ謾ケ陦後→辣ァ蜷域仙粥 (?m): ^ 縺ッ謾ケ陦後ョ逶エ蠕後↓辣ァ蜷医☆繧九$ 縺ッ謾ケ陦後ョ逶エ蜑阪↓辣ァ蜷医☆繧 陬懆ィ 2. 迢ャ閾ェ諡。蠑オ讖溯ス + 16騾イ謨ー謨ー蟄励髱16騾イ謨ー蟄 \h, \H + 蜷榊燕莉倥″謐慕佐蠑城寔蜷 (?...), (?'name'...) + 蜷榊燕謖螳壼セ梧婿蜿らァ \k + 驛ィ蛻蠑丞他蜃コ縺 \g, \g 陬懆ィ 3. Perl 5.8.0縺ィ豈碑シ縺励※蟄伜惠縺励↑縺讖溯ス + \N{name} + \l,\u,\L,\U,\C + (?{code}) + (??{code}) * \Q...\E 菴縺涌NIG_SYNTAX_PERL縺ィONIG_SYNTAX_JAVA縺ァ縺ッ譛牙柑 陬懆ィ 4. Ruby 1.8 縺ョ譌・譛ャ隱槫喧 GNU regex(version 0.12)縺ィ縺ョ驕輔> + 譁蟄猶roperty讖溯ス霑ス蜉 (\p{property}, \P{Property}) + 16騾イ謨ー蟄励ち繧、繝苓ソス蜉 (\h, \H) + 謌サ繧願ェュ縺ソ讖溯ス繧定ソス蜉 + 蠑キ谺イ縺ェ郢ー繧願ソ斐@謖螳壼ュ舌r霑ス蜉 (?+, *+, ++) + 譁蟄鈴寔蜷医ョ荳ュ縺ョ貍皮ョ怜ュ舌r霑ス蜉 ([...], &&) ('[' 縺ッ縲∵枚蟄鈴寔蜷医ョ荳ュ縺ァ騾壼クク縺ョ譁蟄励→縺励※菴ソ逕ィ縺吶k縺ィ縺阪↓縺ッ 騾驕ソ菫ョ鬟セ縺励↑縺代l縺ー縺ェ繧峨↑縺) + 蜷榊燕莉倥″謐慕佐蠑城寔蜷医→縲驛ィ蛻蠑丞他蜃コ縺玲ゥ溯ス霑ス蜉 + 螟壹ヰ繧、繝域枚蟄励さ繝シ繝峨′謖螳壹&繧後※縺繧九→縺阪 譁蟄鈴寔蜷医ョ荳ュ縺ァ蜈ォ騾イ謨ー縺セ縺溘ッ蜊∝ュ騾イ謨ー陦ィ迴セ縺ョ騾」邯壹ッ縲∝、壹ヰ繧、繝育ャヲ蜿キ縺ァ陦ィ迴セ縺輔l縺 荳蛟九ョ譁蟄励→隗」驥医&繧後k (萓. [\xa1\xa2], [\xa1\xa7-\xa4\xa1]) + 譁蟄鈴寔蜷医ョ荳ュ縺ァ縲∽ク繝舌う繝域枚蟄励→螟壹ヰ繧、繝域枚蟄励ョ遽蝗イ謖螳壹ッ險ア縺輔l繧九 ex. /[a-縺]/ + 蟄、遶九が繝励す繝ァ繝ウ縺ョ譛牙柑遽蝗イ縺ッ縲√◎縺ョ蟄、遶九が繝励す繝ァ繝ウ繧貞性繧薙〒縺繧句シ城寔蜷医ョ 邨ゅo繧翫∪縺ァ縺ァ縺ゅk 萓. (?:(?i)a|b) 縺ッ (?:(?i:a|b)) 縺ィ隗」驥医&繧後k縲(?:(?i:a)|b)縺ァ縺ッ縺ェ縺 + 蟄、遶九が繝励す繝ァ繝ウ縺ッ縺昴ョ蜑阪ョ蠑上↓蟇セ縺励※騾城℃逧縺ァ縺ッ縺ェ縺 萓. /a(?i)*/ 縺ッ譁豕輔お繝ゥ繝シ縺ィ縺ェ繧 + 荳榊ョ悟ィ縺ェ郢ー繧願ソ斐@遽蝗イ謖螳壼ュ舌ッ騾壼クク縺ョ譁蟄怜励→縺励※險ア蜿ッ縺輔l繧 萓. /{/, /({)/, /a{2,3/ + 蜷ヲ螳夂噪POSIX繝悶Λ繧ア繝繝 [:^xxxx:] 繧定ソス蜉 + POSIX繝悶Λ繧ア繝繝 [:ascii:] 繧定ソス蜉 + 蜈郁ェュ縺ソ縺ョ郢ー繧願ソ斐@縺ッ荳崎ィア蜿ッ 萓. /(?=a)*/, /(?!b){5}/ + 謨ー蛟、縺ァ謖螳壹&繧後◆譁蟄励↓蟇セ縺励※繧ゅ∝、ァ譁蟄怜ー乗枚蟄礼ァ蜷医が繝励す繝ァ繝ウ縺ッ譛牙柑 萓. /\x61/i =~ "A" + 郢ー繧願ソ斐@蝗樊焚謖螳壹〒縲∵怙菴主屓謨ー縺ョ逵∫払(0蝗)縺後〒縺阪k /a{,n}/ == /a{0,n}/ 譛菴主屓謨ー縺ィ譛螟ァ蝗樊焚縺ョ蜷梧凾逵∫払縺ッ險ア縺輔l縺ェ縺縲(/a{,}/) + /a{n}?/縺ッ辟。谺イ縺ェ貍皮ョ怜ュ舌〒縺ッ縺ェ縺縲 /a{n}?/ == /(?:a{n})?/ + 辟。蜉ケ縺ェ蠕梧婿蜿らァ繧偵メ繧ァ繝繧ッ縺励※繧ィ繝ゥ繝シ縺ォ縺吶k縲 /\1/, /(a)\2/ + 辟。髯千ケー繧願ソ斐@縺ョ荳ュ縺ァ縲髟キ縺暮峺縺ァ縺ョ辣ァ蜷域仙粥縺ッ郢ー繧願ソ斐@繧剃クュ譁ュ縺輔○繧九′縲 縺薙ョ縺ィ縺阪∽クュ譁ュ縺吶∋縺阪°縺ゥ縺縺九ョ蛻、螳壹→縺励※縲∵黒迯イ蠑城寔蜷医ョ謐慕佐迥カ諷九ョ 螟牙喧縺セ縺ァ閠諷ョ縺励※縺繧 /(?:()|())*\1\2/ =~ "" /(?:\1a|())*/ =~ "a" 陬懆ィ 5. 螳溯」縺輔l縺ヲ縺繧九′縲∵里螳壼、縺ァ縺ッ譛牙柑縺ォ縺励※縺縺ェ縺讖溯ス + 謐慕佐螻・豁エ蜿らァ (?@...) 縺ィ (?@...) 萓. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>] 菴ソ逕ィ譁ケ豕輔ッ縲《ample/listcap.c繧貞盾辣ァ 譛牙柑縺ォ縺励※縺縺ェ縺逅逕ア縺ッ縲√←縺ョ遞句コヲ蠖ケ縺ォ遶九▽縺九ッ縺」縺阪j縺励↑縺縺溘a縲 陬懆ィ 6. 蝠城。檎せ + 繧ィ繝ウ繧ウ繝シ繝繧」繝ウ繧ー繝舌う繝亥、縺碁←豁」縺ェ萓。縺九←縺縺九ョ繝√ぉ繝繧ッ縺ッ陦後↑縺」縺ヲ縺縺ェ縺縲 萓: UTF-8 * 蜈磯ュ繝舌う繝医→縺励※荳肴ュ」縺ェ繝舌う繝医r荳譁蟄励→縺ソ縺ェ縺 /./u =~ "\xa3" * 荳榊ョ悟ィ縺ェ繝舌う繝医す繝シ繧ア繝ウ繧ケ縺ョ繝√ぉ繝繧ッ繧偵@縺ェ縺 /\w+/u =~ "a\xf3\x8ec" 縺薙l繧定ェソ縺ケ繧九%縺ィ縺ッ蜿ッ閭ス縺ァ縺ッ縺ゅk縺後驕縺上↑繧九ョ縺ァ陦後↑繧上↑縺縲 譁蟄怜励→縺励※縲√◎縺ョ繧医≧縺ェ繝舌う繝亥励r謖螳壹@縺溷エ蜷医ョ蜍穂ス懊ッ菫晁ィシ縺励↑縺縲 邨ゅj oniguruma-6.7.0/doc/UNICODE_PROPERTIES000066400000000000000000000277231321242335200170740ustar00rootroot00000000000000Unicode Properties (from Unicode Version: 8.0.0) 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_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 oniguruma-6.7.0/index.html000066400000000000000000000200371321242335200155260ustar00rootroot00000000000000 Oniguruma

Oniguruma

(Japanese)

(c) K.Kosako, updated at: 2017/12/08

What's new
  • 2017/12/11: Version 6.7.0 released.
  • 2017/08/30: Version 6.6.1 released.
  • 2017/08/28: Version 6.6.0 released.
  • 2017/08/03: Version 6.5.0 released.
  • 2017/07/03: Version 6.4.0 released.
  • 2017/05/29: Version 6.3.0 released.
  • 2017/04/08: Version 6.2.0 released.
  • 2016/12/11: Version 6.1.3 released.

Oniguruma is a regular expressions library.
The characteristics of this library is that different character encoding
for every regular expression object can be specified.
(supported APIs: GNU regex, POSIX and Oniguruma native)

Supported character encodings:
ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
EUC-JP, EUC-TW, EUC-KR, EUC-CN,
Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
(GB18030 encoding was contributed by KUBO Takehiro)
(CP1251 encoding was contributed by Byte)


License: BSD license.
Platform:
  • Unix (include Mac OS X)
  • Cygwin
  • Win32

Maintainer of 2.x was changed to Hannes Wyss <hwyss AT ywesee.com>.
About 2.x, please contact him.
* 5.x supports Unicode Property/Script.
* 2.x supports Ruby1.6/1.8.

Documents: (version 6.1.0)
Sample Programs:
Site Links:
Links:
References:

and I'm thankful to Akinori MUSHA.


Other Libraries:
oniguruma-6.7.0/index_ja.html000066400000000000000000000201701321242335200161760ustar00rootroot00000000000000 鬯シ霆

鬯シ霆

(c) K.Kosako, 譛邨よ峩譁ー: 2017/12/08

譖エ譁ー諠蝣ア
  • 2017/12/11: Version 6.7.0 繝ェ繝ェ繝シ繧ケ
  • 2017/08/30: Version 6.6.1 繝ェ繝ェ繝シ繧ケ
  • 2017/08/28: Version 6.6.0 繝ェ繝ェ繝シ繧ケ
  • 2017/08/03: Version 6.5.0 繝ェ繝ェ繝シ繧ケ
  • 2017/07/03: Version 6.4.0 繝ェ繝ェ繝シ繧ケ
  • 2017/05/29: Version 6.3.0 繝ェ繝ェ繝シ繧ケ
  • 2017/04/08: Version 6.2.0 繝ェ繝ェ繝シ繧ケ
  • 2016/12/11: Version 6.1.3 繝ェ繝ェ繝シ繧ケ

鬯シ霆翫ッ豁」隕剰。ィ迴セ繝ゥ繧、繝悶Λ繝ェ縺ァ縺ゅk縲
縺薙ョ繝ゥ繧、繝悶Λ繝ェ縺ョ迚ケ蠕エ縺ッ縲√◎繧後◇繧後ョ豁」隕剰。ィ迴セ繧ェ繝悶ず繧ァ繧ッ繝医#縺ィ縺ォ逡ー縺ェ繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー繧 謖螳壹〒縺阪k縺薙→縲
(API: GNU regex, POSIX and Oniguruma native)

蟇セ蠢懊@縺ヲ縺繧区枚蟄励お繝ウ繧ウ繝シ繝繧」繝ウ繧ー:
ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,
EUC-JP, EUC-TW, EUC-KR, EUC-CN,
Shift_JIS, Big5, GB18030, KOI8-R, CP1251,
ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,
ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,
ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16
(GB18030縺ッ縲゜UBO Takehiro豌乗署萓)
(CP1251縺ッ縲。yte豌乗署萓)


繝ゥ繧、繧サ繝ウ繧ケ:BSD繝ゥ繧、繧サ繝ウ繧ケ
繝励Λ繝繝医ヵ繧ゥ繝シ繝:
  • Unix (Mac OS X繧貞性繧)
  • Cygwin
  • Win32

2.x縺ョ菫晏ョ域球蠖薙ッ縲?annes Wyss <hwyss AT ywesee.com>縺ォ莠、譖ソ縺励∪縺励◆縲
2.x縺ォ縺、縺縺ヲ縺ッ縲∝スシ縺ォ騾」邨。縺励※縺上□縺輔>縲
* 5.x縺ッUnicode Property/Script繧呈署萓
* 2.x縺ッRuby1.6/1.8邨霎シ縺ソ繝ゥ繧、繝悶Λ繝ェ縺ィ縺励※蜍穂ス懊☆繧九 (2006蟷エ譛ォ縺ァ菫晏ョ医r邨ゆコ)

繝峨く繝・繝。繝ウ繝: (version 6.1.0)
繧オ繝ウ繝励Ν繝励Ο繧ー繝ゥ繝:
繧オ繧、繝:
繝ェ繝ウ繧ッ:
蜿り雉譁:

and I'm thankful to Akinori MUSHA.


莉悶ョ繝ゥ繧、繝悶Λ繝ェ:

繝帙シ繝縺ォ繧ゅ←繧 oniguruma-6.7.0/install-sh000077500000000000000000000354631321242335200155460ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: oniguruma-6.7.0/m4/000077500000000000000000000000001321242335200140475ustar00rootroot00000000000000oniguruma-6.7.0/m4/.whatever000066400000000000000000000000001321242335200156630ustar00rootroot00000000000000oniguruma-6.7.0/make_win32.bat000066400000000000000000000001011321242335200161460ustar00rootroot00000000000000cd src copy config.h.win32 config.h nmake -f Makefile.windows oniguruma-6.7.0/make_win64.bat000066400000000000000000000001011321242335200161530ustar00rootroot00000000000000cd src copy config.h.win64 config.h nmake -f Makefile.windows oniguruma-6.7.0/missing000077500000000000000000000153301321242335200151300ustar00rootroot00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: oniguruma-6.7.0/onig-config.in000066400000000000000000000025371321242335200162650ustar00rootroot00000000000000#!/bin/sh # Copyright (C) 2006 K.Kosako ONIG_VERSION=@PACKAGE_VERSION@ show_usage() { cat < #include "oniguruma.h" static OnigCaseFoldType CF = ONIGENC_CASE_FOLD_MIN; static int search(regex_t* reg, unsigned char* str, unsigned char* end) { int r; unsigned char *start, *range; OnigRegion *region; region = onig_region_new(); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d (%s)\n", r, ONIGENC_NAME(onig_get_encoding(reg))); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); fprintf(stderr, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); return 0; } static int exec_deluxe(OnigEncoding pattern_enc, OnigEncoding str_enc, OnigOptionType options, char* apattern, char* astr) { int r; unsigned char *end; regex_t* reg; OnigCompileInfo ci; OnigErrorInfo einfo; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; onig_initialize(&str_enc, 1); ci.num_of_elements = 5; ci.pattern_enc = pattern_enc; ci.target_enc = str_enc; ci.syntax = ONIG_SYNTAX_DEFAULT; ci.option = options; ci.case_fold_flag = CF; r = onig_new_deluxe(®, pattern, pattern + onigenc_str_bytelen_null(pattern_enc, pattern), &ci, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } end = str + onigenc_str_bytelen_null(str_enc, str); r = search(reg, str, end); onig_free(reg); onig_end(); return 0; } static int exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) { int r; unsigned char *end; regex_t* reg; OnigErrorInfo einfo; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; onig_initialize(&enc, 1); r = onig_new(®, pattern, pattern + onigenc_str_bytelen_null(enc, pattern), options, enc, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } end = str + onigenc_str_bytelen_null(enc, str); r = search(reg, str, end); onig_free(reg); onig_end(); return 0; } extern int main(int argc, char* argv[]) { /* fix ignore case in look-behind commit: 3340ec2cc5627172665303fe248c9793354d2251 */ exec_deluxe(ONIG_ENCODING_UTF8, ONIG_ENCODING_UTF8, ONIG_OPTION_IGNORECASE, "(?<=\305\211)a", "\312\274na"); /* \u{0149}a \u{02bc}na */ exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, "(\\2)(\\1)", "aa"); /* fail. */ exec(ONIG_ENCODING_UTF8, ONIG_OPTION_FIND_LONGEST, "a*", "aa aaa aaaa aaaaa "); /* match 12-17 */ return 0; } oniguruma-6.7.0/sample/crnl.c000066400000000000000000000067121321242335200161200ustar00rootroot00000000000000/* * crnl.c 2007/05/30 K.Kosako * * !!! You should enable USE_CRNL_AS_LINE_TERMINATOR. !!! * * USE_CRNL_AS_LINE_TERMINATOR config test program. */ #include #include #include "oniguruma.h" static int nfail = 0; static void result(int no, int from, int to, int expected_from, int expected_to) { fprintf(stderr, "%3d: ", no); if (from == expected_from && to == expected_to) { fprintf(stderr, "Success\n"); } else { fprintf(stderr, "Fail: expected: (%d-%d), result: (%d-%d)\n", expected_from, expected_to, from, to); nfail++; } } static int x(int no, char* pattern_arg, char* str_arg, int expected_from, int expected_to) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; UChar *pattern, *str; pattern = (UChar* )pattern_arg; str = (UChar* )str_arg; r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0 || r == ONIG_MISMATCH) { result(no, region->beg[0], region->end[0], expected_from, expected_to); } else if (r == ONIG_MISMATCH) { result(no, r, -1, expected_from, expected_to); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); return 0; } static int f(int no, char* pattern_arg, char* str_arg) { return x(no, pattern_arg, str_arg, -1, -1); } extern int main(int argc, char* argv[]) { x( 1, "", "\r\n", 0, 0); x( 2, ".", "\r\n", 0, 1); f( 3, "..", "\r\n"); x( 4, "^", "\r\n", 0, 0); x( 5, "\\n^", "\r\nf", 1, 2); x( 6, "\\n^a", "\r\na", 1, 3); x( 7, "$", "\r\n", 0, 0); x( 8, "T$", "T\r\n", 0, 1); x( 9, "T$", "T\raT\r\n", 3, 4); x(10, "\\z", "\r\n", 2, 2); f(11, "a\\z", "a\r\n"); x(12, "\\Z", "\r\n", 0, 0); x(13, "\\Z", "\r\na", 3, 3); x(14, "\\Z", "\r\n\r\n\n", 4, 4); x(15, "\\Z", "\r\n\r\nX", 5, 5); x(16, "a\\Z", "a\r\n", 0, 1); x(17, "aaaaaaaaaaaaaaa\\Z", "aaaaaaaaaaaaaaa\r\n", 0, 15); x(18, "a|$", "b\r\n", 1, 1); x(19, "$|b", "\rb", 1, 2); x(20, "a$|ab$", "\r\nab\r\n", 2, 4); x(21, "a|\\Z", "b\r\n", 1, 1); x(22, "\\Z|b", "\rb", 1, 2); x(23, "a\\Z|ab\\Z", "\r\nab\r\n", 2, 4); x(24, "(?=a$).", "a\r\n", 0, 1); f(25, "(?=a$).", "a\r"); x(26, "(?!a$)..", "a\r", 0, 2); x(27, "(?<=a$).\\n", "a\r\n", 1, 3); f(28, "(? 0) { fprintf(stderr, "\n"); fprintf(stderr, "!!! You have to enable USE_CRNL_AS_LINE_TERMINATOR\n"); fprintf(stderr, "!!! in regenc.h for this test program.\n"); fprintf(stderr, "\n"); } return 0; } oniguruma-6.7.0/sample/encode.c000066400000000000000000000234171321242335200164200ustar00rootroot00000000000000/* * encode.c */ #include #include "oniguruma.h" static int search(regex_t* reg, unsigned char* str, unsigned char* end) { int r; unsigned char *start, *range; OnigRegion *region; region = onig_region_new(); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d (%s)\n", r, ONIGENC_NAME(onig_get_encoding(reg))); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); fprintf(stderr, " (%s)\n", ONIGENC_NAME(onig_get_encoding(reg))); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); return 0; } static int exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) { int r; unsigned char *end; regex_t* reg; OnigErrorInfo einfo; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; onig_initialize(&enc, 1); r = onig_new(®, pattern, pattern + onigenc_str_bytelen_null(enc, pattern), options, enc, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } end = str + onigenc_str_bytelen_null(enc, str); r = search(reg, str, end); onig_free(reg); onig_end(); return 0; } static OnigCaseFoldType CF = ONIGENC_CASE_FOLD_MIN; #if 0 static void set_case_fold(OnigCaseFoldType cf) { CF = cf; } #endif static int exec_deluxe(OnigEncoding pattern_enc, OnigEncoding str_enc, OnigOptionType options, char* apattern, char* astr) { int r; unsigned char *end; regex_t* reg; OnigCompileInfo ci; OnigErrorInfo einfo; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; onig_initialize(&str_enc, 1); ci.num_of_elements = 5; ci.pattern_enc = pattern_enc; ci.target_enc = str_enc; ci.syntax = ONIG_SYNTAX_DEFAULT; ci.option = options; ci.case_fold_flag = CF; r = onig_new_deluxe(®, pattern, pattern + onigenc_str_bytelen_null(pattern_enc, pattern), &ci, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } end = str + onigenc_str_bytelen_null(str_enc, str); r = search(reg, str, end); onig_free(reg); onig_end(); return 0; } extern int main(int argc, char* argv[]) { int r; /* ISO 8859-1 test */ static unsigned char str[] = { 0xc7, 0xd6, 0xfe, 0xea, 0xe0, 0xe2, 0x00 }; static unsigned char pattern[] = { 0xe7, 0xf6, 0xde, '\\', 'w', '+', 0x00 }; r = exec(ONIG_ENCODING_SJIS, ONIG_OPTION_NONE, "^a\\p{Hiragana}c$", "a\202\274c"); r = exec(ONIG_ENCODING_EUC_JP, ONIG_OPTION_NONE, "^a\\p{Hiragana}c$", "a\244\276c"); r = exec(ONIG_ENCODING_CP1251, ONIG_OPTION_IGNORECASE, "aBc", " AbC"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, " [a-c\337z] ", " SS "); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, " [\330-\341] ", " SS "); r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, "\337 ", " Ss "); r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, "SS ", " \337 "); r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, "\\A\\S\\z", "ss"); r = exec(ONIG_ENCODING_ISO_8859_2, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_3, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_4, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_5, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_6, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_7, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_8, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_9, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_10, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_11, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_13, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_14, ONIG_OPTION_IGNORECASE, "[ac]+", "bbbaAaCCC"); r = exec(ONIG_ENCODING_ISO_8859_15, ONIG_OPTION_IGNORECASE, (char* )pattern, (char* )str); r = exec(ONIG_ENCODING_ISO_8859_16, ONIG_OPTION_IGNORECASE, (char* )pattern, (char* )str); r = exec(ONIG_ENCODING_KOI8_R, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); r = exec(ONIG_ENCODING_EUC_TW, ONIG_OPTION_NONE, "b*a+?c+", "bbbaaaccc"); r = exec(ONIG_ENCODING_EUC_KR, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); r = exec(ONIG_ENCODING_EUC_CN, ONIG_OPTION_NONE, "c+", "bbbaaaccc"); r = exec(ONIG_ENCODING_BIG5, ONIG_OPTION_NONE, "a+", "bbbaaaccc"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, "\337", "SS"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, "SS", "\337"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, "SSb\337ssc", "a\337bSS\337cd"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, "[a\337]{0,2}", "aSS"); r = exec(ONIG_ENCODING_ISO_8859_1, ONIG_OPTION_IGNORECASE, "is", "iss"); r = exec_deluxe(ONIG_ENCODING_ASCII, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, "a+", "\000b\000a\000a\000a\000c\000c\000\000"); r = exec_deluxe(ONIG_ENCODING_ASCII, ONIG_ENCODING_UTF16_LE, ONIG_OPTION_NONE, "a+", "b\000a\000a\000a\000a\000c\000\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_LE, ONIG_OPTION_NONE, "\000b\000a\000a\000a\000c\000c\000\000", "x\000b\000a\000a\000a\000c\000c\000\000\000"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\337", "\000S\000S\000\000"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "SS", "\000\337\000\000"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_LE, ONIG_OPTION_IGNORECASE, "\337", "S\000S\000\000\000"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF32_BE, ONIG_OPTION_IGNORECASE, "SS", "\000\000\000\337\000\000\000\000"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF32_LE, ONIG_OPTION_IGNORECASE, "\337", "S\000\000\000S\000\000\000\000\000\000\000"); r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, "\000[\000[\000:\000a\000l\000n\000u\000m\000:\000]\000]\000+\000\000", "\000#\002\120\000a\000Z\012\077\012\076\012\075\000\000"); /* 0x0a3d == \012\075 : is not alnum */ /* 0x0a3e == \012\076 : is alnum */ r = exec(ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, "\000\\\000d\000+\000\000", "\0003\0001\377\020\377\031\377\032\000\000"); r = exec(ONIG_ENCODING_GB18030, ONIG_OPTION_IGNORECASE, "(Aa\\d)+", "BaA5Aa0234"); r = exec_deluxe(ONIG_ENCODING_ISO_8859_1, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_NONE, "^\\P{Hiragana}\\p{^Hiragana}(\\p{Hiragana}+)$", "\060\100\060\240\060\101\060\102\060\226\060\237\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000[\000\337\000]\000\000", "\000S\000S\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000[\000\337\000]\000\000", "\000s\000S\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000^\000[\000\001\000-\377\375\000]\000$\000\000", "\000s\000S\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000S\000S\000\000", "\000S\000T\000\337\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000S\000T\000S\000S\000\000", "\000S\000t\000s\000S\000\000"); { UChar pat[] = { 0x1f, 0xfc, 0x00, 0x00 }; UChar str1[] = { 0x21, 0x26, 0x1f, 0xbe, 0x00, 0x00 }; UChar str2[] = { 0x1f, 0xf3, 0x00, 0x00 }; r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, (char* )pat, (char* )str1); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, (char* )pat, (char* )str2); } #if 0 /* You should define USE_UNICODE_CASE_FOLD_TURKISH_AZERI in regenc.h. */ set_case_fold(ONIGENC_CASE_FOLD_TURKISH_AZERI); r = exec_deluxe(ONIG_ENCODING_UTF8, ONIG_ENCODING_UTF8, ONIG_OPTION_IGNORECASE, "Ii", "\304\261\304\260"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\000I\000i\000\000", "\001\061\001\060\000\000"); r = exec_deluxe(ONIG_ENCODING_UTF16_BE, ONIG_ENCODING_UTF16_BE, ONIG_OPTION_IGNORECASE, "\001\061\001\060\000\000", "\000I\000i\000\000"); set_case_fold(ONIGENC_CASE_FOLD_MIN); #endif return r; } oniguruma-6.7.0/sample/listcap.c000066400000000000000000000053611321242335200166200ustar00rootroot00000000000000/* * listcap.c * * capture history (?@...) sample. */ #include #include #include "oniguruma.h" static int node_callback(int group, int beg, int end, int level, int at, void* arg) { int i; if (at != ONIG_TRAVERSE_CALLBACK_AT_FIRST) return -1; /* error */ /* indent */ for (i = 0; i < level * 2; i++) fputc(' ', stderr); fprintf(stderr, "%d: (%d-%d)\n", group, beg, end); return 0; } extern int ex(unsigned char* str, unsigned char* pattern, OnigSyntaxType* syntax) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, syntax, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } fprintf(stderr, "number of captures: %d\n", onig_number_of_captures(reg)); fprintf(stderr, "number of capture histories: %d\n", onig_number_of_capture_histories(reg)); region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } fprintf(stderr, "\n"); r = onig_capture_tree_traverse(region, ONIG_TRAVERSE_CALLBACK_AT_FIRST, node_callback, (void* )0); } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); return 0; } extern int main(int argc, char* argv[]) { int r; OnigSyntaxType syn; static UChar* str1 = (UChar* )"((())())"; static UChar* pattern1 = (UChar* )"\\g

(?@

\\(\\g\\)){0}(?@(?:\\g

)*|){0}"; static UChar* str2 = (UChar* )"x00x00x00"; static UChar* pattern2 = (UChar* )"(?@x(?@\\d+))+"; static UChar* str3 = (UChar* )"0123"; static UChar* pattern3 = (UChar* )"(?@.)(?@.)(?@.)(?@.)"; OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); /* enable capture hostory */ onig_copy_syntax(&syn, ONIG_SYNTAX_DEFAULT); onig_set_syntax_op2(&syn, onig_get_syntax_op2(&syn) | ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY); r = ex(str1, pattern1, &syn); r = ex(str2, pattern2, &syn); r = ex(str3, pattern3, &syn); onig_end(); return r; } oniguruma-6.7.0/sample/names.c000066400000000000000000000037361321242335200162700ustar00rootroot00000000000000/* * names.c -- example of group name callback. */ #include #include #include "oniguruma.h" static int name_callback(const UChar* name, const UChar* name_end, int ngroup_num, int* group_nums, regex_t* reg, void* arg) { int i, gn, ref; char* s; OnigRegion *region = (OnigRegion* )arg; for (i = 0; i < ngroup_num; i++) { gn = group_nums[i]; ref = onig_name_to_backref_number(reg, name, name_end, region); s = (ref == gn ? "*" : ""); fprintf(stderr, "%s (%d): ", name, gn); fprintf(stderr, "(%d-%d) %s\n", region->beg[gn], region->end[gn], s); } return 0; /* 0: continue */ } extern int main(int argc, char* argv[]) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; static UChar* pattern = (UChar* )"(?a*)(?b*)(?c*)"; static UChar* str = (UChar* )"aaabbbbcc"; OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } fprintf(stderr, "number of names: %d\n", onig_number_of_names(reg)); region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { fprintf(stderr, "match at %d\n\n", r); r = onig_foreach_name(reg, name_callback, (void* )region); } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); return 0; } oniguruma-6.7.0/sample/posix.c000066400000000000000000000045311321242335200163210ustar00rootroot00000000000000/* * posix.c */ #include #include "onigposix.h" typedef unsigned char UChar; static int x(regex_t* reg, unsigned char* pattern, unsigned char* str) { int r, i; char buf[200]; regmatch_t pmatch[20]; r = regexec(reg, (char* )str, reg->re_nsub + 1, pmatch, 0); if (r != 0 && r != REG_NOMATCH) { regerror(r, reg, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } if (r == REG_NOMATCH) { fprintf(stderr, "FAIL: /%s/ '%s'\n", pattern, str); } else { fprintf(stderr, "OK: /%s/ '%s'\n", pattern, str); for (i = 0; i <= (int )reg->re_nsub; i++) { fprintf(stderr, "%d: %d-%d\n", i, pmatch[i].rm_so, pmatch[i].rm_eo); } } return 0; } extern int main(int argc, char* argv[]) { int r; char buf[200]; regex_t reg; UChar* pattern; reg_set_encoding(REG_POSIX_ENCODING_ASCII); /* default syntax (ONIG_SYNTAX_ONIGURUMA) */ pattern = (UChar* )"^a+b{2,7}[c-f]?$|uuu"; r = regcomp(®, (char* )pattern, REG_EXTENDED); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } x(®, pattern, (UChar* )"aaabbbbd"); /* POSIX Basic RE (REG_EXTENDED is not specified.) */ pattern = (UChar* )"^a+b{2,7}[c-f]?|uuu"; r = regcomp(®, (char* )pattern, 0); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } x(®, pattern, (UChar* )"a+b{2,7}d?|uuu"); /* POSIX Basic RE (REG_EXTENDED is not specified.) */ pattern = (UChar* )"^a*b\\{2,7\\}\\([c-f]\\)$"; r = regcomp(®, (char* )pattern, 0); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } x(®, pattern, (UChar* )"aaaabbbbbbd"); /* POSIX Extended RE */ onig_set_default_syntax(ONIG_SYNTAX_POSIX_EXTENDED); pattern = (UChar* )"^a+b{2,7}[c-f]?)$|uuu"; r = regcomp(®, (char* )pattern, REG_EXTENDED); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } x(®, pattern, (UChar* )"aaabbbbd)"); pattern = (UChar* )"^b."; r = regcomp(®, (char* )pattern, REG_EXTENDED | REG_NEWLINE); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(stderr, "ERROR: %s\n", buf); return -1; } x(®, pattern, (UChar* )"a\nb\n"); regfree(®); onig_end(); return 0; } oniguruma-6.7.0/sample/scan.c000066400000000000000000000035461321242335200161100ustar00rootroot00000000000000/* * scan.c */ #include #include #include "oniguruma.h" static int scan_callback(int n, int r, OnigRegion* region, void* arg) { int i; fprintf(stdout, "scan: %d\n", n); fprintf(stdout, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stdout, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } return 0; } static int scan(regex_t* reg, unsigned char* str, unsigned char* end) { int r; OnigRegion *region; region = onig_region_new(); r = onig_scan(reg, str, end, region, ONIG_OPTION_NONE, scan_callback, NULL); if (r >= 0) { fprintf(stdout, "total: %d match\n", r); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((OnigUChar* )s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); return 0; } static int exec(OnigEncoding enc, OnigOptionType options, char* apattern, char* astr) { int r; unsigned char *end; regex_t* reg; OnigErrorInfo einfo; UChar* pattern_end; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; onig_initialize(&enc, 1); pattern_end = pattern + onigenc_str_bytelen_null(enc, pattern); r = onig_new(®, pattern, pattern_end, options, enc, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((OnigUChar* )s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } end = str + onigenc_str_bytelen_null(enc, str); r = scan(reg, str, end); onig_free(reg); onig_end(); return 0; } extern int main(int argc, char* argv[]) { exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, "\\Ga+\\s*", "a aa aaa baaa"); fprintf(stdout, "\n"); exec(ONIG_ENCODING_UTF8, ONIG_OPTION_NONE, "a+\\s*", "a aa aaa baaa"); return 0; } oniguruma-6.7.0/sample/simple.c000066400000000000000000000027121321242335200164470ustar00rootroot00000000000000/* * simple.c */ #include #include #include "oniguruma.h" extern int main(int argc, char* argv[]) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; static UChar* pattern = (UChar* )"a(.*)b|[e-f]+"; static UChar* str = (UChar* )"zzzzaffffffffb"; OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, ONIG_SYNTAX_DEFAULT, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); return 0; } oniguruma-6.7.0/sample/sql.c000066400000000000000000000043601321242335200157560ustar00rootroot00000000000000/* * sql.c */ #include #include #include "oniguruma.h" extern int main(int argc, char* argv[]) { static OnigSyntaxType SQLSyntax; int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; static UChar* pattern = (UChar* )"\\_%\\\\__zz"; static UChar* str = (UChar* )"a_abcabcabc\\ppzz"; OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); onig_set_syntax_op (&SQLSyntax, ONIG_SYN_OP_VARIABLE_META_CHARACTERS); onig_set_syntax_op2 (&SQLSyntax, 0); onig_set_syntax_behavior(&SQLSyntax, 0); onig_set_syntax_options (&SQLSyntax, ONIG_OPTION_MULTILINE); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ESCAPE, (OnigCodePoint )'\\'); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYCHAR, (OnigCodePoint )'_'); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYTIME, ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ZERO_OR_ONE_TIME, ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ONE_OR_MORE_TIME, ONIG_INEFFECTIVE_META_CHAR); onig_set_meta_char(&SQLSyntax, ONIG_META_CHAR_ANYCHAR_ANYTIME, (OnigCodePoint )'%'); r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, &SQLSyntax, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); return 0; } oniguruma-6.7.0/sample/syntax.c000066400000000000000000000035641321242335200165120ustar00rootroot00000000000000/* * syntax.c */ #include #include #include "oniguruma.h" extern int exec(OnigSyntaxType* syntax, char* apattern, char* astr) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; UChar* pattern = (UChar* )apattern; UChar* str = (UChar* )astr; r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_ASCII, syntax, &einfo); if (r != ONIG_NORMAL) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "ERROR: %s\n", s); return -1; } region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); return 0; } extern int main(int argc, char* argv[]) { int r; OnigEncoding use_encs[] = { ONIG_ENCODING_ASCII }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); r = exec(ONIG_SYNTAX_PERL, "\\p{XDigit}\\P{XDigit}\\p{^XDigit}\\P{^XDigit}\\p{XDigit}", "bgh3a"); r = exec(ONIG_SYNTAX_JAVA, "\\p{XDigit}\\P{XDigit}[a-c&&b-g]", "bgc"); r = exec(ONIG_SYNTAX_ASIS, "abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\\dvv(?:aczui ss)\\W\\w$", "abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\\dvv(?:aczui ss)\\W\\w$"); onig_end(); return r; } oniguruma-6.7.0/sample/user_property.c000066400000000000000000000043721321242335200201040ustar00rootroot00000000000000/* * user_property.c */ #include #include #include "oniguruma.h" extern int main(int argc, char* argv[]) { int r; unsigned char *start, *range, *end; regex_t* reg; OnigErrorInfo einfo; OnigRegion *region; static OnigCodePoint handakuon_hiragana[] = { 5, /* number of ranges */ 0x3071, 0x3071, /* PA */ 0x3074, 0x3074, /* PI */ 0x3077, 0x3077, /* PU */ 0x307a, 0x307a, /* PE */ 0x307d, 0x307d /* PO */ }; static UChar* pattern = (UChar* )"\\A(\\p{HandakuonHiragana}{5})\\p{^HandakuonHiragana}\\z"; //static UChar* pattern = (UChar* )"\\p{Handakuon_Hiragana}{5}\\P{Handakuon Hiragana}"; /* "PA PI PU PE PO a" */ static UChar* str = (UChar* )"\343\201\261\343\201\264\343\201\267\343\201\272\343\201\275a"; OnigEncoding use_encs[] = { ONIG_ENCODING_UTF8 }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); r = onig_unicode_define_user_property("HandakuonHiragana", handakuon_hiragana); if (r == ONIG_NORMAL) { fprintf(stdout, "define HandakuonHiragana\n"); } else { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } r = onig_new(®, pattern, pattern + strlen((char* )pattern), ONIG_OPTION_DEFAULT, ONIG_ENCODING_UTF8, ONIG_SYNTAX_DEFAULT, &einfo); if (r == ONIG_NORMAL) { fprintf(stdout, "onig_new: success.\n"); } else { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(stderr, "onig_new: ERROR: %s\n", s); return -1; } region = onig_region_new(); end = str + strlen((char* )str); start = str; range = end; r = onig_search(reg, str, end, start, range, region, ONIG_OPTION_NONE); if (r >= 0) { int i; fprintf(stderr, "match at %d\n", r); for (i = 0; i < region->num_regs; i++) { fprintf(stderr, "%d: (%d-%d)\n", i, region->beg[i], region->end[i]); } } else if (r == ONIG_MISMATCH) { fprintf(stderr, "search fail\n"); } else { /* error */ char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(stderr, "ERROR: %s\n", s); return -1; } onig_region_free(region, 1 /* 1:free self, 0:free contents only */); onig_free(reg); onig_end(); return 0; } oniguruma-6.7.0/src/000077500000000000000000000000001321242335200143165ustar00rootroot00000000000000oniguruma-6.7.0/src/.gitignore000066400000000000000000000002311321242335200163020ustar00rootroot00000000000000Makefile config.h CaseFolding.txt unicode_fold?_key.gperf unicode_unfold_key.gperf UNICODE_PROPERTIES *.o *.so *.lo *.la *~ *.txt .libs/ .deps/ /mktable oniguruma-6.7.0/src/Makefile.am000066400000000000000000000033451321242335200163570ustar00rootroot00000000000000## Makefile.am for Oniguruma libname = libonig.la AM_CFLAGS = -Wall AM_CPPFLAGS = -I$(top_srcdir) -I$(includedir) include_HEADERS = oniguruma.h oniggnu.h onigposix.h lib_LTLIBRARIES = $(libname) libonig_la_SOURCES = regint.h regparse.h regenc.h st.h \ regerror.c regparse.c regext.c regcomp.c regexec.c reggnu.c \ regenc.c regsyntax.c regtrav.c regversion.c st.c \ regposix.c regposerr.c \ unicode.c \ unicode_unfold_key.c \ unicode_fold1_key.c \ unicode_fold2_key.c \ unicode_fold3_key.c \ ascii.c utf8.c \ utf16_be.c utf16_le.c \ utf32_be.c utf32_le.c \ euc_jp.c euc_jp_prop.c \ sjis.c sjis_prop.c \ iso8859_1.c \ iso8859_2.c iso8859_3.c \ iso8859_4.c iso8859_5.c \ iso8859_6.c iso8859_7.c \ iso8859_8.c iso8859_9.c \ iso8859_10.c iso8859_11.c \ iso8859_13.c iso8859_14.c \ iso8859_15.c iso8859_16.c \ euc_tw.c euc_kr.c big5.c \ gb18030.c koi8_r.c cp1251.c \ onig_init.c 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 \ unicode-7.0/unicode_fold1_key.c unicode-7.0/unicode_fold2_key.c \ unicode-7.0/unicode_fold3_key.c unicode-7.0/unicode_fold_data.c \ unicode-7.0/unicode_property_data.c \ unicode-7.0/unicode_property_data_posix.c \ unicode-7.0/unicode_unfold_key.c dll: $(CXX) -shared -Wl,--output-def,libonig.def -o libonig.dll *.o \ $(LIBS) strip libonig.dll # character-types-table source generator mktable: mktable.c regenc.h $(CC) -I$(top_srcdir) -o mktable mktable.c oniguruma-6.7.0/src/Makefile.windows000066400000000000000000000141521321242335200174520ustar00rootroot00000000000000# Oniguruma Makefile for Windows product_name = oniguruma CPPFLAGS = CFLAGS = -O2 -nologo /W3 LDFLAGS = LOADLIBES = ARLIB = lib ARLIB_FLAGS = -nologo ARDLL = cl ARDLL_FLAGS = -nologo -LD $(LINKFLAGS) -dll LINKFLAGS = -link -incremental:no -pdb:none INSTALL = install -c CP = copy CC = cl DEFS = -DHAVE_CONFIG_H -DNOT_RUBY -DEXPORT RUBYDIR = .. subdirs = libbase = onig libname = $(libbase)_s.lib dllname = $(libbase).dll dlllib = $(libbase).lib onigheaders = oniguruma.h regint.h regparse.h regenc.h st.h posixheaders = onigposix.h headers = $(posixheaders) $(onigheaders) onigobjs = reggnu.obj regerror.obj regparse.obj regext.obj regcomp.obj \ regexec.obj regenc.obj regsyntax.obj regtrav.obj \ regversion.obj st.obj onig_init.obj posixobjs = regposix.obj regposerr.obj libobjs = $(onigobjs) $(posixobjs) jp_objs = euc_jp.obj sjis.obj iso8859_objs = iso8859_1.obj iso8859_2.obj \ iso8859_3.obj iso8859_4.obj \ iso8859_5.obj iso8859_6.obj \ iso8859_7.obj iso8859_8.obj \ iso8859_9.obj iso8859_10.obj \ iso8859_11.obj iso8859_13.obj \ iso8859_14.obj iso8859_15.obj \ iso8859_16.obj encobjs = ascii.obj utf8.obj \ unicode.obj \ utf16_be.obj utf16_le.obj \ utf32_be.obj utf32_le.obj \ $(jp_objs) $(iso8859_objs) \ euc_tw.obj euc_kr.obj big5.obj \ gb18030.obj \ koi8_r.obj \ cp1251.obj \ euc_jp_prop.obj sjis_prop.obj \ unicode_unfold_key.obj unicode_fold1_key.obj \ unicode_fold2_key.obj unicode_fold3_key.obj # koi8.obj onigsources = regerror.c regparse.c regext.c regcomp.c regexec.c regenc.c \ regsyntax.c regtrav.c regversion.c reggnu.c st.c posixsources = regposix.c regposerr.c libsources = $(posixsources) $(onigsources) rubysources = $(onigsources) patchfiles = re.c.168.patch re.c.181.patch distfiles = README COPYING HISTORY \ Makefile.in configure.in config.h.in configure \ $(headers) $(libsources) $(patchfiles) \ test.rb testconv.rb testc = testc testp = testp makeargs = $(MFLAGS) CPPFLAGS='$(CPPFLAGS)' CFLAGS='$(CFLAGS)' CC='$(CC)' .SUFFIXES: .SUFFIXES: .obj .c .h .ps .dvi .info .texinfo .c.obj: $(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) /I. /I.. /Fo$@ /c $< # targets default: all setup: $(CP) ..\win32\config.h config.h $(CP) ..\win32\testc.c testc.c all: $(libname) $(dllname) $(libname): $(libobjs) $(encobjs) $(ARLIB) $(ARLIB_FLAGS) -out:$@ $(libobjs) $(encobjs) $(dllname): $(libobjs) $(encobjs) $(ARDLL) $(libobjs) $(encobjs) -Fe$@ $(ARDLL_FLAGS) regparse.obj: regparse.c $(onigheaders) config.h st.h regext.obj: regext.c $(onigheaders) config.h regtrav.obj: regtrav.c $(onigheaders) config.h regcomp.obj: regcomp.c $(onigheaders) config.h regexec.obj: regexec.c regint.h regenc.h oniguruma.h config.h reggnu.obj: reggnu.c regint.h regenc.h oniguruma.h config.h oniggnu.h regerror.obj: regerror.c regint.h regenc.h oniguruma.h config.h regenc.obj: regenc.c regenc.h oniguruma.h config.h regsyntax.obj: regsyntax.c regint.h regenc.h oniguruma.h config.h regversion.obj: regversion.c oniguruma.h config.h regposix.obj: regposix.c $(posixheaders) oniguruma.h config.h regposerr.obj: regposerr.c $(posixheaders) config.h st.obj: st.c regint.h oniguruma.h config.h st.h onig_init.obj: onig_init.c oniguruma.h ascii.obj: ascii.c regenc.h config.h unicode.obj: unicode.c unicode_fold_data.c unicode_property_data.c regenc.h config.h utf8.obj: utf8.c regenc.h config.h utf16_be.obj: utf16_be.c regenc.h config.h utf16_le.obj: utf16_le.c regenc.h config.h utf32_be.obj: utf32_be.c regenc.h config.h utf32_le.obj: utf32_le.c regenc.h config.h euc_jp.obj: euc_jp.c regenc.h config.h euc_tw.obj: euc_tw.c regenc.h config.h euc_kr.obj: euc_kr.c regenc.h config.h sjis.obj: sjis.c regenc.h config.h iso8859_1.obj: iso8859_1.c regenc.h config.h iso8859_2.obj: iso8859_2.c regenc.h config.h iso8859_3.obj: iso8859_3.c regenc.h config.h iso8859_4.obj: iso8859_4.c regenc.h config.h iso8859_5.obj: iso8859_5.c regenc.h config.h iso8859_6.obj: iso8859_6.c regenc.h config.h iso8859_7.obj: iso8859_7.c regenc.h config.h iso8859_8.obj: iso8859_8.c regenc.h config.h iso8859_9.obj: iso8859_9.c regenc.h config.h iso8859_10.obj: iso8859_10.c regenc.h config.h iso8859_11.obj: iso8859_11.c regenc.h config.h iso8859_13.obj: iso8859_13.c regenc.h config.h iso8859_14.obj: iso8859_14.c regenc.h config.h iso8859_15.obj: iso8859_15.c regenc.h config.h iso8859_16.obj: iso8859_16.c regenc.h config.h koi8.obj: koi8.c regenc.h config.h koi8_r.obj: koi8_r.c regenc.h config.h cp1251.obj: cp1251.c regenc.h config.h big5.obj: big5.c regenc.h config.h gb18030.obj: gb18030.c regenc.h config.h euc_jp_prop.obj: euc_jp_prop.c regenc.h sjis_prop.obj: sjis_prop.c regenc.h unicode_unfold_key.obj: unicode_unfold_key.c regenc.h config.h unicode_fold1_key.obj: unicode_fold1_key.c regenc.h config.h unicode_fold2_key.obj: unicode_fold2_key.c regenc.h config.h unicode_fold3_key.obj: unicode_fold3_key.c regenc.h config.h # C library test ctest: $(testc) .\$(testc) # POSIX C library test ptest: $(testp) .\$(testp) $(testc): $(testc).c $(libname) $(CC) -nologo /Fe:$(testc) -DONIG_EXTERN=extern $(testc).c $(libname) $(testp): $(testc).c $(dlllib) $(CC) -nologo -DPOSIX_TEST /Fe:$(testp) $(testc).c $(dlllib) #$(testc)u.c: test.rb testconvu.rb # ruby -Ke testconvu.rb test.rb > $@ $(testc)u: $(testc)u.c $(libname) $(CC) -nologo /Fe:$(testc)u -DONIG_EXTERN=extern $(testc)u.c $(libname) clean: del *.obj *.lib *.exp *.dll $(testp).exe $(testc).exe $(testc).obj samples: all $(CC) $(CFLAGS) -I. /Fe:simple sample\simple.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:posix sample\posix.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:names sample\names.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:listcap sample\listcap.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:sql sample\sql.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:encode sample\encode.c $(dlllib) $(CC) $(CFLAGS) -I. /Fe:syntax sample\syntax.c $(dlllib) oniguruma-6.7.0/src/ascii.c000066400000000000000000000047031321242335200155560ustar00rootroot00000000000000/********************************************************************** ascii.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static int ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingASCII = { onigenc_single_byte_mbc_enc_len, "US-ASCII", /* name */ 1, /* max byte length */ 1, /* min byte length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, onigenc_ascii_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, ascii_is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/big5.c000066400000000000000000000134721321242335200153170ustar00rootroot00000000000000/********************************************************************** big5.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static const int EncLen_BIG5[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; static int big5_mbc_enc_len(const UChar* p) { return EncLen_BIG5[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p < 0xa1) { return FALSE; } else if (*p < 0xff) { p++; if (p >= end) return FALSE; if (*p < 0x40) return FALSE; if (*p > 0x7e && *p < 0xa1) return FALSE; if (*p == 0xff) return FALSE; p++; } else return FALSE; } return TRUE; } static OnigCodePoint big5_mbc_to_code(const UChar* p, const UChar* end) { return onigenc_mbn_mbc_to_code(ONIG_ENCODING_BIG5, p, end); } static int big5_code_to_mbc(OnigCodePoint code, UChar *buf) { return onigenc_mb2_code_to_mbc(ONIG_ENCODING_BIG5, code, buf); } static int big5_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* lower) { return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_BIG5, flag, pp, end, lower); } #if 0 static int big5_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_BIG5, flag, pp, end); } #endif static int big5_is_code_ctype(OnigCodePoint code, unsigned int ctype) { return onigenc_mb2_is_code_ctype(ONIG_ENCODING_BIG5, code, ctype); } static const char BIG5_CAN_BE_TRAIL_TABLE[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 }; #define BIG5_ISMB_FIRST(byte) (EncLen_BIG5[byte] > 1) #define BIG5_ISMB_TRAIL(byte) BIG5_CAN_BE_TRAIL_TABLE[(byte)] static UChar* big5_left_adjust_char_head(const UChar* start, const UChar* s) { const UChar *p; int len; if (s <= start) return (UChar* )s; p = s; if (BIG5_ISMB_TRAIL(*p)) { while (p > start) { if (! BIG5_ISMB_FIRST(*--p)) { p++; break; } } } len = enclen(ONIG_ENCODING_BIG5, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int big5_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; return (BIG5_ISMB_TRAIL(c) ? FALSE : TRUE); } OnigEncodingType OnigEncodingBIG5 = { big5_mbc_enc_len, "Big5", /* name */ 2, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, big5_mbc_to_code, onigenc_mb2_code_to_mbclen, big5_code_to_mbc, big5_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, big5_is_code_ctype, onigenc_not_support_get_ctype_code_range, big5_left_adjust_char_head, big5_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/config.h.cmake.in000066400000000000000000000047111321242335200174230ustar00rootroot00000000000000/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #cmakedefine CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #cmakedefine C_ALLOCA /* Define to 1 if you have `alloca', as a function or macro. */ #cmakedefine HAVE_ALLOCA ${HAVE_ALLOCA} /* Define to 1 if you have and it should be used (not on Ultrix). */ #cmakedefine HAVE_ALLOCA_H ${HAVE_ALLOCA_H} /* Define if compilerr supports prototypes */ #cmakedefine HAVE_PROTOTYPES ${HAVE_PROTOTYPES} /* Define if compiler supports stdarg prototypes */ #cmakedefine HAVE_STDARG_PROTOTYPES ${HAVE_STDARG_PROTOTYPES} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STDINT_H ${HAVE_STDINT_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STDLIB_H ${HAVE_STDLIB_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STRINGS_H ${HAVE_STRINGS_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_STRING_H ${HAVE_STRING_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TIMES_H ${HAVE_SYS_TIMES_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TIME_H ${HAVE_SYS_TIME_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TYPES_H ${HAVE_SYS_TYPES_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_UNISTD_H ${HAVE_UNISTD_H} /* Define to 1 if you have the header file. */ #cmakedefine HAVE_INTTYPES_H ${HAVE_INTTYPES_H} /* Name of package */ #cmakedefine PACKAGE ${PACKAGE} /* Define to the version of this package. */ #cmakedefine PACKAGE_VERSION ${PACKAGE_VERSION} /* The size of `int', as computed by sizeof. */ #cmakedefine SIZEOF_INT ${SIZEOF_INT} /* The size of `long', as computed by sizeof. */ #cmakedefine SIZEOF_LONG ${SIZEOF_LONG} /* The size of `short', as computed by sizeof. */ #cmakedefine SIZEOF_SHORT ${SIZEOF_SHORT} /* Define to 1 if you have the ANSI C header files. */ #cmakedefine STDC_HEADERS ${STDC_HEADERS} /* Define if combination explosion check */ #cmakedefine USE_COMBINATION_EXPLOSION_CHECK ${USE_COMBINATION_EXPLOSION_CHECK} /* Define if enable CR+NL as line terminator */ #cmakedefine USE_CRNL_AS_LINE_TERMINATOR ${USE_CRNL_AS_LINE_TERMINATOR} /* Version number of package */ #cmakedefine VERSION ${VERSION} oniguruma-6.7.0/src/config.h.win32000066400000000000000000000037611321242335200167040ustar00rootroot00000000000000#define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_MEMORY_H 1 #define HAVE_FLOAT_H 1 #define HAVE_OFF_T 1 #define SIZEOF_INT 4 #define SIZEOF_SHORT 2 #define SIZEOF_LONG 4 #define SIZEOF_LONG_LONG 0 #define SIZEOF___INT64 8 #define SIZEOF_OFF_T 4 #define SIZEOF_VOIDP 4 #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 #define HAVE_PROTOTYPES 1 #define TOKEN_PASTE(x,y) x##y #define HAVE_STDARG_PROTOTYPES 1 #ifndef NORETURN #if _MSC_VER > 1100 #define NORETURN(x) __declspec(noreturn) x #else #define NORETURN(x) x #endif #endif #define HAVE_DECL_SYS_NERR 1 #define STDC_HEADERS 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_LIMITS_H 1 #define HAVE_FCNTL_H 1 #define HAVE_SYS_UTIME_H 1 #define HAVE_MEMORY_H 1 #define uid_t int #define gid_t int #define HAVE_STRUCT_STAT_ST_RDEV 1 #define HAVE_ST_RDEV 1 #define GETGROUPS_T int #define RETSIGTYPE void #define HAVE_ALLOCA 1 #define HAVE_DUP2 1 #define HAVE_MEMCMP 1 #define HAVE_MEMMOVE 1 #define HAVE_MKDIR 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_STRERROR 1 #define HAVE_STRFTIME 1 #define HAVE_STRCHR 1 #define HAVE_STRSTR 1 #define HAVE_STRTOD 1 #define HAVE_STRTOL 1 #define HAVE_STRTOUL 1 #define HAVE_FLOCK 1 #define HAVE_VSNPRINTF 1 #define HAVE_FINITE 1 #define HAVE_FMOD 1 #define HAVE_FREXP 1 #define HAVE_HYPOT 1 #define HAVE_MODF 1 #define HAVE_WAITPID 1 #define HAVE_CHSIZE 1 #define HAVE_TIMES 1 #define HAVE__SETJMP 1 #define HAVE_TELLDIR 1 #define HAVE_SEEKDIR 1 #define HAVE_MKTIME 1 #define HAVE_COSH 1 #define HAVE_SINH 1 #define HAVE_TANH 1 #define HAVE_EXECVE 1 #define HAVE_TZNAME 1 #define HAVE_DAYLIGHT 1 #define SETPGRP_VOID 1 #define inline __inline #define NEED_IO_SEEK_BETWEEN_RW 1 #define RSHIFT(x,y) ((x)>>(int)y) #define FILE_COUNT _cnt #define FILE_READPTR _ptr #define DEFAULT_KCODE KCODE_NONE #define DLEXT ".so" #define DLEXT2 ".dll" oniguruma-6.7.0/src/config.h.win64000066400000000000000000000037611321242335200167110ustar00rootroot00000000000000#define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_MEMORY_H 1 #define HAVE_FLOAT_H 1 #define HAVE_OFF_T 1 #define SIZEOF_INT 4 #define SIZEOF_SHORT 2 #define SIZEOF_LONG 4 #define SIZEOF_LONG_LONG 0 #define SIZEOF___INT64 8 #define SIZEOF_OFF_T 4 #define SIZEOF_VOIDP 8 #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 #define HAVE_PROTOTYPES 1 #define TOKEN_PASTE(x,y) x##y #define HAVE_STDARG_PROTOTYPES 1 #ifndef NORETURN #if _MSC_VER > 1100 #define NORETURN(x) __declspec(noreturn) x #else #define NORETURN(x) x #endif #endif #define HAVE_DECL_SYS_NERR 1 #define STDC_HEADERS 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_LIMITS_H 1 #define HAVE_FCNTL_H 1 #define HAVE_SYS_UTIME_H 1 #define HAVE_MEMORY_H 1 #define uid_t int #define gid_t int #define HAVE_STRUCT_STAT_ST_RDEV 1 #define HAVE_ST_RDEV 1 #define GETGROUPS_T int #define RETSIGTYPE void #define HAVE_ALLOCA 1 #define HAVE_DUP2 1 #define HAVE_MEMCMP 1 #define HAVE_MEMMOVE 1 #define HAVE_MKDIR 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_STRERROR 1 #define HAVE_STRFTIME 1 #define HAVE_STRCHR 1 #define HAVE_STRSTR 1 #define HAVE_STRTOD 1 #define HAVE_STRTOL 1 #define HAVE_STRTOUL 1 #define HAVE_FLOCK 1 #define HAVE_VSNPRINTF 1 #define HAVE_FINITE 1 #define HAVE_FMOD 1 #define HAVE_FREXP 1 #define HAVE_HYPOT 1 #define HAVE_MODF 1 #define HAVE_WAITPID 1 #define HAVE_CHSIZE 1 #define HAVE_TIMES 1 #define HAVE__SETJMP 1 #define HAVE_TELLDIR 1 #define HAVE_SEEKDIR 1 #define HAVE_MKTIME 1 #define HAVE_COSH 1 #define HAVE_SINH 1 #define HAVE_TANH 1 #define HAVE_EXECVE 1 #define HAVE_TZNAME 1 #define HAVE_DAYLIGHT 1 #define SETPGRP_VOID 1 #define inline __inline #define NEED_IO_SEEK_BETWEEN_RW 1 #define RSHIFT(x,y) ((x)>>(int)y) #define FILE_COUNT _cnt #define FILE_READPTR _ptr #define DEFAULT_KCODE KCODE_NONE #define DLEXT ".so" #define DLEXT2 ".dll" oniguruma-6.7.0/src/cp1251.c000066400000000000000000000205061321242335200154000ustar00rootroot00000000000000/********************************************************************** cp1251.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2006-2016 Byte * K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_CP1251_TO_LOWER_CASE(c) EncCP1251_ToLowerCaseTable[c] #define ENC_IS_CP1251_CTYPE(code,ctype) \ ((EncCP1251_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncCP1251_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\220', '\203', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\232', '\213', '\234', '\235', '\236', '\237', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\242', '\242', '\274', '\244', '\264', '\246', '\247', '\270', '\251', '\272', '\253', '\254', '\255', '\256', '\277', '\260', '\261', '\263', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\276', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncCP1251_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x428c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x34a2, 0x34a2, 0x01a0, 0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x0000, 0x01a0, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x0008, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0280, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x34a2, 0x01a0, 0x01a0, 0x34a2, 0x30e2, 0x30e2, 0x31e2, 0x01a0, 0x01a0, 0x30e2, 0x0000, 0x30e2, 0x01a0, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int cp1251_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; *lower = ENC_CP1251_TO_LOWER_CASE(*p); (*pp)++; return 1; } static int cp1251_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_CP1251_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xb8, 0xa8 }, { 0xe0, 0xc0 }, { 0xe1, 0xc1 }, { 0xe2, 0xc2 }, { 0xe3, 0xc3 }, { 0xe4, 0xc4 }, { 0xe5, 0xc5 }, { 0xe6, 0xc6 }, { 0xe7, 0xc7 }, { 0xe8, 0xc8 }, { 0xe9, 0xc9 }, { 0xea, 0xca }, { 0xeb, 0xcb }, { 0xec, 0xcc }, { 0xed, 0xcd }, { 0xee, 0xce }, { 0xef, 0xcf }, { 0xf0, 0xd0 }, { 0xf1, 0xd1 }, { 0xf2, 0xd2 }, { 0xf3, 0xd3 }, { 0xf4, 0xd4 }, { 0xf5, 0xd5 }, { 0xf6, 0xd6 }, { 0xf7, 0xd7 }, { 0xf8, 0xd8 }, { 0xf9, 0xd9 }, { 0xfa, 0xda }, { 0xfb, 0xdb }, { 0xfc, 0xdc }, { 0xfd, 0xdd }, { 0xfe, 0xde }, { 0xff, 0xdf } }; static int cp1251_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int cp1251_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, p, end, items); } OnigEncodingType OnigEncodingCP1251 = { onigenc_single_byte_mbc_enc_len, "CP1251", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, cp1251_mbc_case_fold, cp1251_apply_all_case_fold, cp1251_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, cp1251_is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/euc_jp.c000066400000000000000000000171741321242335200157410ustar00rootroot00000000000000/********************************************************************** euc_jp.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" #define eucjp_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) static const int EncLen_EUCJP[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; static int mbc_enc_len(const UChar* p) { return EncLen_EUCJP[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p > 0xa0) { if (*p == 0xff) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; } else if (*p == 0x8e) { p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p > 0xdf) return FALSE; p++; } else if (*p == 0x8f) { p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; } else return FALSE; } return TRUE; } static OnigCodePoint mbc_to_code(const UChar* p, const UChar* end) { int c, i, len; OnigCodePoint n; len = enclen(ONIG_ENCODING_EUC_JP, p); n = (OnigCodePoint )*p++; if (len == 1) return n; for (i = 1; i < len; i++) { if (p >= end) break; c = *p++; n <<= 8; n += c; } return n; } static int code_to_mbclen(OnigCodePoint code) { if (ONIGENC_IS_CODE_ASCII(code)) return 1; else if ((code & 0xff0000) != 0) return 3; else if ((code & 0xff00) != 0) return 2; else return ONIGERR_INVALID_CODE_POINT_VALUE; } #if 0 static int code_to_mbc_first(OnigCodePoint code) { int first; if ((code & 0xff0000) != 0) { first = (code >> 16) & 0xff; } else if ((code & 0xff00) != 0) { first = (code >> 8) & 0xff; } else { return (int )code; } return first; } #endif static int code_to_mbc(OnigCodePoint code, UChar *buf) { UChar *p = buf; if ((code & 0xff0000) != 0) *p++ = (UChar )(((code >> 16) & 0xff)); if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); *p++ = (UChar )(code & 0xff); #if 1 if (enclen(ONIG_ENCODING_EUC_JP, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); } static int mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { int len; const UChar* p = *pp; if (ONIGENC_IS_MBC_ASCII(p)) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); (*pp)++; return 1; } else { int i; len = enclen(ONIG_ENCODING_EUC_JP, p); for (i = 0; i < len; i++) { *lower++ = *p++; } (*pp) += len; return len; /* return byte length of converted char to lower */ } } static UChar* left_adjust_char_head(const UChar* start, const UChar* s) { /* In this encoding mb-trail bytes doesn't mix with single bytes. */ const UChar *p; int len; if (s <= start) return (UChar* )s; p = s; while (!eucjp_islead(*p) && p > start) p--; len = enclen(ONIG_ENCODING_EUC_JP, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; if (c <= 0x7e || c == 0x8e || c == 0x8f) return TRUE; else return FALSE; } static const OnigCodePoint CR_Hiragana[] = { 1, 0xa4a1, 0xa4f3 }; /* CR_Hiragana */ static const OnigCodePoint CR_Katakana[] = { 3, 0xa5a1, 0xa5f6, 0xaaa6, 0xaaaf, 0xaab1, 0xaadd }; /* CR_Katakana */ static const OnigCodePoint* PropertyList[] = { CR_Hiragana, CR_Katakana }; static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { struct PropertyNameCtype* pc; int len = (int )(end - p); char q[32]; if (len < sizeof(q) - 1) { xmemcpy(q, p, (size_t )len); q[len] = '\0'; pc = euc_jp_lookup_property_name(q, len); if (pc != 0) return pc->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (ctype <= ONIGENC_MAX_STD_CTYPE) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); else { if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { return (code_to_mbclen(code) > 1 ? TRUE : FALSE); } } } else { ctype -= (ONIGENC_MAX_STD_CTYPE + 1); if (ctype >= (unsigned int )(sizeof(PropertyList)/sizeof(PropertyList[0]))) return ONIGERR_TYPE_BUG; return onig_is_in_code_range((UChar* )PropertyList[ctype], code); } return FALSE; } static int get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]) { if (ctype <= ONIGENC_MAX_STD_CTYPE) { return ONIG_NO_SUPPORT_CONFIG; } else { *sb_out = 0x80; ctype -= (ONIGENC_MAX_STD_CTYPE + 1); if (ctype >= (OnigCtype )sizeof(PropertyList)/sizeof(PropertyList[0])) return ONIGERR_TYPE_BUG; *ranges = PropertyList[ctype]; return 0; } } OnigEncodingType OnigEncodingEUC_JP = { mbc_enc_len, "EUC-JP", /* name */ 3, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, mbc_to_code, code_to_mbclen, code_to_mbc, mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, property_name_to_ctype, is_code_ctype, get_ctype_code_range, left_adjust_char_head, is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/euc_jp_prop.c000066400000000000000000000126101321242335200167670ustar00rootroot00000000000000/* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -pt -T -L ANSI-C -N euc_jp_lookup_property_name --output-file euc_jp_prop.c euc_jp_prop.gperf */ /* Computed positions: -k'1,3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif #line 1 "euc_jp_prop.gperf" #include #include "regenc.h" #define TOTAL_KEYWORDS 16 #define MIN_WORD_LENGTH 4 #define MAX_WORD_LENGTH 8 #define MIN_HASH_VALUE 4 #define MAX_HASH_VALUE 55 /* maximum key range = 52, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static unsigned char asso_values[] = { 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 0, 3, 10, 25, 56, 56, 30, 0, 56, 56, 0, 20, 56, 56, 56, 15, 56, 56, 20, 56, 30, 56, 0, 0, 56, 56, 56, 56, 56, 56, 56, 56, 15, 56, 56, 56, 56, 56, 25, 56, 10, 56, 56, 56, 56, 5, 56, 0, 56, 0, 56, 5, 56, 56, 20, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 }; 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 struct PropertyNameCtype * euc_jp_lookup_property_name (register const char *str, register unsigned int len) { static struct PropertyNameCtype wordlist[] = { {""}, {""}, {""}, {""}, #line 23 "euc_jp_prop.gperf" {"Word", 12}, #line 12 "euc_jp_prop.gperf" {"Alpha", 1}, {""}, {""}, #line 26 "euc_jp_prop.gperf" {"Hiragana", 15}, {""}, #line 24 "euc_jp_prop.gperf" {"Alnum", 13}, {""}, {""}, #line 27 "euc_jp_prop.gperf" {"Katakana", 16}, {""}, #line 25 "euc_jp_prop.gperf" {"ASCII", 14}, #line 22 "euc_jp_prop.gperf" {"XDigit", 11}, {""}, {""}, {""}, #line 14 "euc_jp_prop.gperf" {"Cntrl", 3}, {""}, {""}, #line 13 "euc_jp_prop.gperf" {"Blank", 2}, {""}, #line 19 "euc_jp_prop.gperf" {"Punct", 8}, {""}, {""}, {""}, {""}, #line 18 "euc_jp_prop.gperf" {"Print", 7}, {""}, {""}, {""}, {""}, #line 21 "euc_jp_prop.gperf" {"Upper", 10}, {""}, {""}, {""}, {""}, #line 20 "euc_jp_prop.gperf" {"Space", 9}, {""}, {""}, {""}, {""}, #line 17 "euc_jp_prop.gperf" {"Lower", 6}, {""}, {""}, {""}, {""}, #line 16 "euc_jp_prop.gperf" {"Graph", 5}, {""}, {""}, {""}, {""}, #line 15 "euc_jp_prop.gperf" {"Digit", 4} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; if (*str == *s && !strcmp (str + 1, s + 1)) return &wordlist[key]; } } return 0; } oniguruma-6.7.0/src/euc_jp_prop.gperf000066400000000000000000000004741321242335200176550ustar00rootroot00000000000000%{ #include #include "regenc.h" %} struct PropertyNameCtype { char *name; int ctype; }; %% Alpha, 1 Blank, 2 Cntrl, 3 Digit, 4 Graph, 5 Lower, 6 Print, 7 Punct, 8 Space, 9 Upper, 10 XDigit, 11 Word, 12 Alnum, 13 ASCII, 14 Hiragana, 15 Katakana, 16 oniguruma-6.7.0/src/euc_kr.c000066400000000000000000000130561321242335200157370ustar00rootroot00000000000000/********************************************************************** euc_kr.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static const int EncLen_EUCKR[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; static int euckr_mbc_enc_len(const UChar* p) { return EncLen_EUCKR[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p < 0xa1) { return FALSE; } else if (*p < 0xff) { p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; } else return FALSE; } return TRUE; } static OnigCodePoint euckr_mbc_to_code(const UChar* p, const UChar* end) { return onigenc_mbn_mbc_to_code(ONIG_ENCODING_EUC_KR, p, end); } static int euckr_code_to_mbc(OnigCodePoint code, UChar *buf) { return onigenc_mb2_code_to_mbc(ONIG_ENCODING_EUC_KR, code, buf); } static int euckr_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* lower) { return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_EUC_KR, flag, pp, end, lower); } #if 0 static int euckr_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_EUC_KR, flag, pp, end); } #endif static int euckr_is_code_ctype(OnigCodePoint code, unsigned int ctype) { return onigenc_mb2_is_code_ctype(ONIG_ENCODING_EUC_KR, code, ctype); } #define euckr_islead(c) ((c) < 0xa1 || (c) == 0xff) static UChar* euckr_left_adjust_char_head(const UChar* start, const UChar* s) { /* Assumed in this encoding, mb-trail bytes don't mix with single bytes. */ const UChar *p; int len; if (s <= start) return (UChar* )s; p = s; while (!euckr_islead(*p) && p > start) p--; len = enclen(ONIG_ENCODING_EUC_KR, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int euckr_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; if (c <= 0x7e) return TRUE; else return FALSE; } OnigEncodingType OnigEncodingEUC_KR = { euckr_mbc_enc_len, "EUC-KR", /* name */ 2, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, euckr_mbc_to_code, onigenc_mb2_code_to_mbclen, euckr_code_to_mbc, euckr_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, euckr_is_code_ctype, onigenc_not_support_get_ctype_code_range, euckr_left_adjust_char_head, euckr_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; /* Same with OnigEncodingEUC_KR except the name */ OnigEncodingType OnigEncodingEUC_CN = { euckr_mbc_enc_len, "EUC-CN", /* name */ 2, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, euckr_mbc_to_code, onigenc_mb2_code_to_mbclen, euckr_code_to_mbc, euckr_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, euckr_is_code_ctype, onigenc_not_support_get_ctype_code_range, euckr_left_adjust_char_head, euckr_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/euc_tw.c000066400000000000000000000117731321242335200157610ustar00rootroot00000000000000/********************************************************************** euc_tw.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static const int EncLen_EUCTW[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 }; static int euctw_mbc_enc_len(const UChar* p) { return EncLen_EUCTW[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p < 0xa1) { if (*p == 0x8e) { p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p > 0xb0) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; } else return FALSE; } else if (*p < 0xff) { p++; if (p >= end) return FALSE; if (*p < 0xa1 || *p == 0xff) return FALSE; p++; } else return FALSE; } return TRUE; } static OnigCodePoint euctw_mbc_to_code(const UChar* p, const UChar* end) { return onigenc_mbn_mbc_to_code(ONIG_ENCODING_EUC_TW, p, end); } static int euctw_code_to_mbc(OnigCodePoint code, UChar *buf) { return onigenc_mb4_code_to_mbc(ONIG_ENCODING_EUC_TW, code, buf); } static int euctw_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* lower) { return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_EUC_TW, flag, pp, end, lower); } static int euctw_is_code_ctype(OnigCodePoint code, unsigned int ctype) { return onigenc_mb4_is_code_ctype(ONIG_ENCODING_EUC_TW, code, ctype); } #define euctw_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1) static UChar* euctw_left_adjust_char_head(const UChar* start, const UChar* s) { /* Assumed in this encoding, mb-trail bytes don't mix with single bytes. */ const UChar *p; int len; if (s <= start) return (UChar* )s; p = s; while (!euctw_islead(*p) && p > start) p--; len = enclen(ONIG_ENCODING_EUC_TW, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int euctw_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; if (c <= 0x7e) return TRUE; else return FALSE; } OnigEncodingType OnigEncodingEUC_TW = { euctw_mbc_enc_len, "EUC-TW", /* name */ 4, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, euctw_mbc_to_code, onigenc_mb4_code_to_mbclen, euctw_code_to_mbc, euctw_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, euctw_is_code_ctype, onigenc_not_support_get_ctype_code_range, euctw_left_adjust_char_head, euctw_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/gb18030.c000066400000000000000000000317761321242335200154640ustar00rootroot00000000000000/********************************************************************** gb18030.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2005-2016 KUBO Takehiro * K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #if 1 #define DEBUG_GB18030(arg) #else #define DEBUG_GB18030(arg) printf arg #endif enum { C1, /* one-byte char */ C2, /* one-byte or second of two-byte char */ C4, /* one-byte or second or fourth of four-byte char */ CM /* first of two- or four-byte char or second of two-byte char */ }; static const char GB18030_MAP[] = { C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C1, C4, C4, C4, C4, C4, C4, C4, C4, C4, C4, C1, C1, C1, C1, C1, C1, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C2, C1, C2, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, CM, C1 }; static int gb18030_mbc_enc_len(const UChar* p) { if (GB18030_MAP[*p] != CM) return 1; p++; if (GB18030_MAP[*p] == C4) return 4; if (GB18030_MAP[*p] == C1) return 1; /* illegal sequence */ return 2; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p == 0x80 || *p == 0xff) { return FALSE; } else { p++; if (p >= end) return FALSE; if (*p < 0x40) { if (*p < 0x30 || *p > 0x39) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0x81 || *p == 0xff) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0x30 || *p > 0x39) return FALSE; p++; } else if (*p == 0x7f || *p == 0xff) { return FALSE; } else { p++; } } } return TRUE; } static OnigCodePoint gb18030_mbc_to_code(const UChar* p, const UChar* end) { return onigenc_mbn_mbc_to_code(ONIG_ENCODING_GB18030, p, end); } static int gb18030_code_to_mbc(OnigCodePoint code, UChar *buf) { return onigenc_mb4_code_to_mbc(ONIG_ENCODING_GB18030, code, buf); } static int gb18030_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* lower) { return onigenc_mbn_mbc_case_fold(ONIG_ENCODING_GB18030, flag, pp, end, lower); } #if 0 static int gb18030_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_GB18030, flag, pp, end); } #endif static int gb18030_is_code_ctype(OnigCodePoint code, unsigned int ctype) { return onigenc_mb4_is_code_ctype(ONIG_ENCODING_GB18030, code, ctype); } enum state { S_START, S_one_C2, S_one_C4, S_one_CM, S_odd_CM_one_CX, S_even_CM_one_CX, /* CMC4 : pair of "CM C4" */ S_one_CMC4, S_odd_CMC4, S_one_C4_odd_CMC4, S_even_CMC4, S_one_C4_even_CMC4, S_odd_CM_odd_CMC4, S_even_CM_odd_CMC4, S_odd_CM_even_CMC4, S_even_CM_even_CMC4, /* C4CM : pair of "C4 CM" */ S_odd_C4CM, S_one_CM_odd_C4CM, S_even_C4CM, S_one_CM_even_C4CM, S_even_CM_odd_C4CM, S_odd_CM_odd_C4CM, S_even_CM_even_C4CM, S_odd_CM_even_C4CM, }; static UChar* gb18030_left_adjust_char_head(const UChar* start, const UChar* s) { const UChar *p; enum state state = S_START; DEBUG_GB18030(("----------------\n")); for (p = s; p >= start; p--) { DEBUG_GB18030(("state %d --(%02x)-->\n", state, *p)); switch (state) { case S_START: switch (GB18030_MAP[*p]) { case C1: return (UChar *)s; case C2: state = S_one_C2; /* C2 */ break; case C4: state = S_one_C4; /* C4 */ break; case CM: state = S_one_CM; /* CM */ break; } break; case S_one_C2: /* C2 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)s; case CM: state = S_odd_CM_one_CX; /* CM C2 */ break; } break; case S_one_C4: /* C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)s; case CM: state = S_one_CMC4; break; } break; case S_one_CM: /* CM */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)s; case C4: state = S_odd_C4CM; break; case CM: state = S_odd_CM_one_CX; /* CM CM */ break; } break; case S_odd_CM_one_CX: /* CM C2 */ /* CM CM */ /* CM CM CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 1); case CM: state = S_even_CM_one_CX; break; } break; case S_even_CM_one_CX: /* CM CM C2 */ /* CM CM CM */ /* CM CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)s; case CM: state = S_odd_CM_one_CX; break; } break; case S_one_CMC4: /* CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)(s - 1); case C4: state = S_one_C4_odd_CMC4; /* C4 CM C4 */ break; case CM: state = S_even_CM_one_CX; /* CM CM C4 */ break; } break; case S_odd_CMC4: /* CM C4 CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)(s - 1); case C4: state = S_one_C4_odd_CMC4; break; case CM: state = S_odd_CM_odd_CMC4; break; } break; case S_one_C4_odd_CMC4: /* C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 1); case CM: state = S_even_CMC4; /* CM C4 CM C4 */ break; } break; case S_even_CMC4: /* CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)(s - 3); case C4: state = S_one_C4_even_CMC4; break; case CM: state = S_odd_CM_even_CMC4; break; } break; case S_one_C4_even_CMC4: /* C4 CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 3); case CM: state = S_odd_CMC4; break; } break; case S_odd_CM_odd_CMC4: /* CM CM C4 CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 3); case CM: state = S_even_CM_odd_CMC4; break; } break; case S_even_CM_odd_CMC4: /* CM CM CM C4 CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 1); case CM: state = S_odd_CM_odd_CMC4; break; } break; case S_odd_CM_even_CMC4: /* CM CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 1); case CM: state = S_even_CM_even_CMC4; break; } break; case S_even_CM_even_CMC4: /* CM CM CM C4 CM C4 */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 3); case CM: state = S_odd_CM_even_CMC4; break; } break; case S_odd_C4CM: /* C4 CM */ /* C4 CM C4 CM C4 CM*/ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)s; case CM: state = S_one_CM_odd_C4CM; /* CM C4 CM */ break; } break; case S_one_CM_odd_C4CM: /* CM C4 CM */ /* CM C4 CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)(s - 2); /* |CM C4 CM */ case C4: state = S_even_C4CM; break; case CM: state = S_even_CM_odd_C4CM; break; } break; case S_even_C4CM: /* C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 2); /* C4|CM C4 CM */ case CM: state = S_one_CM_even_C4CM; break; } break; case S_one_CM_even_C4CM: /* CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: return (UChar *)(s - 0); /*|CM C4 CM C4|CM */ case C4: state = S_odd_C4CM; break; case CM: state = S_even_CM_even_C4CM; break; } break; case S_even_CM_odd_C4CM: /* CM CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 0); /* |CM CM|C4|CM */ case CM: state = S_odd_CM_odd_C4CM; break; } break; case S_odd_CM_odd_C4CM: /* CM CM CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 2); /* |CM CM|CM C4 CM */ case CM: state = S_even_CM_odd_C4CM; break; } break; case S_even_CM_even_C4CM: /* CM CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 2); /* |CM CM|C4|CM C4 CM */ case CM: state = S_odd_CM_even_C4CM; break; } break; case S_odd_CM_even_C4CM: /* CM CM CM C4 CM C4 CM */ switch (GB18030_MAP[*p]) { case C1: case C2: case C4: return (UChar *)(s - 0); /* |CM CM|CM C4 CM C4|CM */ case CM: state = S_even_CM_even_C4CM; break; } break; } } DEBUG_GB18030(("state %d\n", state)); switch (state) { case S_START: return (UChar *)(s - 0); case S_one_C2: return (UChar *)(s - 0); case S_one_C4: return (UChar *)(s - 0); case S_one_CM: return (UChar *)(s - 0); case S_odd_CM_one_CX: return (UChar *)(s - 1); case S_even_CM_one_CX: return (UChar *)(s - 0); case S_one_CMC4: return (UChar *)(s - 1); case S_odd_CMC4: return (UChar *)(s - 1); case S_one_C4_odd_CMC4: return (UChar *)(s - 1); case S_even_CMC4: return (UChar *)(s - 3); case S_one_C4_even_CMC4: return (UChar *)(s - 3); case S_odd_CM_odd_CMC4: return (UChar *)(s - 3); case S_even_CM_odd_CMC4: return (UChar *)(s - 1); case S_odd_CM_even_CMC4: return (UChar *)(s - 1); case S_even_CM_even_CMC4: return (UChar *)(s - 3); case S_odd_C4CM: return (UChar *)(s - 0); case S_one_CM_odd_C4CM: return (UChar *)(s - 2); case S_even_C4CM: return (UChar *)(s - 2); case S_one_CM_even_C4CM: return (UChar *)(s - 0); case S_even_CM_odd_C4CM: return (UChar *)(s - 0); case S_odd_CM_odd_C4CM: return (UChar *)(s - 2); case S_even_CM_even_C4CM: return (UChar *)(s - 2); case S_odd_CM_even_C4CM: return (UChar *)(s - 0); } return (UChar* )s; /* never come here. (escape warning) */ } static int gb18030_is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { return GB18030_MAP[*s] == C1 ? TRUE : FALSE; } OnigEncodingType OnigEncodingGB18030 = { gb18030_mbc_enc_len, "GB18030", /* name */ 4, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, gb18030_mbc_to_code, onigenc_mb4_code_to_mbclen, gb18030_code_to_mbc, gb18030_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, gb18030_is_code_ctype, onigenc_not_support_get_ctype_code_range, gb18030_left_adjust_char_head, gb18030_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/gperf_fold_key_conv.py000077500000000000000000000045731321242335200207100ustar00rootroot00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # gperf_fold_key_conv.py # Copyright (c) 2016-2017 K.Kosako import sys import re REG_LINE_GPERF = re.compile('#line .+gperf"') REG_HASH_FUNC = re.compile('hash\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\s*\)') REG_STR_AT = re.compile('str\[(\d+)\]') REG_RETURN_TYPE = re.compile('^const\s+short\s+int\s*\*') REG_FOLD_KEY = re.compile('unicode_fold(\d)_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\)') REG_ENTRY = re.compile('\{".*?",\s*(-?\d+)\s*\}') REG_IF_LEN = re.compile('if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+') REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);') REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;') REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)') REG_RETURN_WL = re.compile('return\s+&wordlist\[key\];') REG_RETURN_0 = re.compile('return 0;') def parse_line(s, key_len): s = s.rstrip() r = re.sub(REG_LINE_GPERF, '', s) if r != s: return r r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s) if r != s: return r r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s) if r != s: return r r = re.sub(REG_RETURN_TYPE, 'int', s) if r != s: return r r = re.sub(REG_FOLD_KEY, 'unicode_fold\\1_key(OnigCodePoint codes[])', s) if r != s: return r r = re.sub(REG_ENTRY, '\\1', s) if r != s: return r r = re.sub(REG_IF_LEN, 'if (0 == 0)', s) if r != s: return r r = re.sub(REG_GET_HASH, 'int key = hash(codes);', s) if r != s: return r r = re.sub(REG_GET_CODE, 'int index = wordlist[key];', s) if r != s: return r r = re.sub(REG_CODE_CHECK, 'if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds%d + index, %d) == 0)' % (key_len, key_len), s) if r != s: return r r = re.sub(REG_RETURN_WL, 'return index;', s) if r != s: return r r = re.sub(REG_RETURN_0, 'return -1;', s) if r != s: return r return s def parse_file(f, key_len): print "/* This file was converted by gperf_fold_key_conv.py\n from gperf output file. */" line = f.readline() while line: s = parse_line(line, key_len) print s line = f.readline() # main argv = sys.argv argc = len(argv) key_len = int(argv[1]) parse_file(sys.stdin, key_len) oniguruma-6.7.0/src/gperf_unfold_key_conv.py000077500000000000000000000040551321242335200212460ustar00rootroot00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # gperf_unfold_key_conv.py # Copyright (c) 2016-2017 K.Kosako import sys import re REG_LINE_GPERF = re.compile('#line .+gperf"') REG_HASH_FUNC = re.compile('hash\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\s*\)') REG_STR_AT = re.compile('str\[(\d+)\]') REG_UNFOLD_KEY = re.compile('unicode_unfold_key\s*\(register\s+const\s+char\s*\*\s*str,\s*register\s+unsigned\s+int\s+len\)') REG_ENTRY = re.compile('\{".+?",\s*/\*(.+?)\*/\s*(-?\d+),\s*(\d)\}') REG_EMPTY_ENTRY = re.compile('\{"",\s*(-?\d+),\s*(\d)\}') REG_IF_LEN = re.compile('if\s*\(\s*len\s*<=\s*MAX_WORD_LENGTH.+') REG_GET_HASH = re.compile('(?:register\s+)?(?:unsigned\s+)?int\s+key\s*=\s*hash\s*\(str,\s*len\);') REG_GET_CODE = re.compile('(?:register\s+)?const\s+char\s*\*\s*s\s*=\s*wordlist\[key\]\.name;') REG_CODE_CHECK = re.compile('if\s*\(\*str\s*==\s*\*s\s*&&\s*!strncmp.+\)') def parse_line(s): s = s.rstrip() r = re.sub(REG_LINE_GPERF, '', s) if r != s: return r r = re.sub(REG_HASH_FUNC, 'hash(OnigCodePoint codes[])', s) if r != s: return r r = re.sub(REG_STR_AT, 'onig_codes_byte_at(codes, \\1)', s) if r != s: return r r = re.sub(REG_UNFOLD_KEY, 'unicode_unfold_key(OnigCodePoint code)', s) if r != s: return r r = re.sub(REG_ENTRY, '{\\1, \\2, \\3}', s) if r != s: return r r = re.sub(REG_EMPTY_ENTRY, '{0xffffffff, \\1, \\2}', s) if r != s: return r r = re.sub(REG_IF_LEN, 'if (0 == 0)', s) if r != s: return r r = re.sub(REG_GET_HASH, 'int key = hash(&code);', s) if r != s: return r r = re.sub(REG_GET_CODE, 'OnigCodePoint gcode = wordlist[key].code;', s) if r != s: return r r = re.sub(REG_CODE_CHECK, 'if (code == gcode && wordlist[key].index >= 0)', s) if r != s: return r return s def parse_file(f): print "/* This file was converted by gperf_unfold_key_conv.py\n from gperf output file. */" line = f.readline() while line: s = parse_line(line) print s line = f.readline() # main parse_file(sys.stdin) oniguruma-6.7.0/src/iso8859_1.c000066400000000000000000000212221321242335200160310ustar00rootroot00000000000000/********************************************************************** iso8859_1.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_IS_ISO_8859_1_CTYPE(code,ctype) \ ((EncISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const unsigned short EncISO_8859_1_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { if (0x41 <= *p && *p <= 0x5a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); if (*p == 0x53 && end > p + 1 && (*(p+1) == 0x53 || *(p+1) == 0x73)) { /* SS */ items[1].byte_len = 2; items[1].code_len = 1; items[1].code[0] = (OnigCodePoint )0xdf; return 2; } else return 1; } else if (0x61 <= *p && *p <= 0x7a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); if (*p == 0x73 && end > p + 1 && (*(p+1) == 0x73 || *(p+1) == 0x53)) { /* ss */ items[1].byte_len = 2; items[1].code_len = 1; items[1].code[0] = (OnigCodePoint )0xdf; return 2; } else return 1; } else if (0xc0 <= *p && *p <= 0xcf) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); return 1; } else if (0xd0 <= *p && *p <= 0xdf) { if (*p == 0xdf) { items[0].byte_len = 1; items[0].code_len = 2; items[0].code[0] = (OnigCodePoint )'s'; items[0].code[1] = (OnigCodePoint )'s'; items[1].byte_len = 1; items[1].code_len = 2; items[1].code[0] = (OnigCodePoint )'S'; items[1].code[1] = (OnigCodePoint )'S'; items[2].byte_len = 1; items[2].code_len = 2; items[2].code[0] = (OnigCodePoint )'s'; items[2].code[1] = (OnigCodePoint )'S'; items[3].byte_len = 1; items[3].code_len = 2; items[3].code[0] = (OnigCodePoint )'S'; items[3].code[1] = (OnigCodePoint )'s'; return 4; } else if (*p != 0xd7) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); return 1; } } else if (0xe0 <= *p && *p <= 0xef) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); return 1; } else if (0xf0 <= *p && *p <= 0xfe) { if (*p != 0xf7) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); return 1; } } return 0; } static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ONIGENC_ISO_8859_1_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_1_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xdf, 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (*p >= 0xaa && *p <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_1_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingISO_8859_1 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-1", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_10.c000066400000000000000000000217001321242335200161120ustar00rootroot00000000000000/********************************************************************** iso8859_10.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_10_TO_LOWER_CASE(c) EncISO_8859_10_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_10_CTYPE(code,ctype) \ ((EncISO_8859_10_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_10_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\261', '\262', '\263', '\264', '\265', '\266', '\247', '\270', '\271', '\272', '\273', '\274', '\255', '\276', '\277', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_10_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_10_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_10_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_10_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, { 0xa2, 0xb2 }, { 0xa3, 0xb3 }, { 0xa4, 0xb4 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa8, 0xb8 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_10 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-10", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_11.c000066400000000000000000000112671321242335200161220ustar00rootroot00000000000000/********************************************************************** iso8859_11.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_IS_ISO_8859_11_CTYPE(code,ctype) \ ((EncISO_8859_11_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const unsigned short EncISO_8859_11_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000 }; static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_11_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingISO_8859_11 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-11", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, onigenc_ascii_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_13.c000066400000000000000000000215031321242335200161160ustar00rootroot00000000000000/********************************************************************** iso8859_13.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_13_TO_LOWER_CASE(c) EncISO_8859_13_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_13_CTYPE(code,ctype) \ ((EncISO_8859_13_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_13_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\270', '\251', '\272', '\253', '\254', '\255', '\256', '\277', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_13_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x01a0, 0x30e2, 0x00a0, 0x01a0, 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x01a0 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_13_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_13_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xdf, 0xb5 are lower case letter, but can't convert. */ if (*p == 0xb5) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_13_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_13 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-13", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_14.c000066400000000000000000000217711321242335200161260ustar00rootroot00000000000000/********************************************************************** iso8859_14.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_14_TO_LOWER_CASE(c) EncISO_8859_14_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_14_CTYPE(code,ctype) \ ((EncISO_8859_14_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_14_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\242', '\242', '\243', '\245', '\245', '\253', '\247', '\270', '\251', '\272', '\253', '\274', '\255', '\256', '\377', '\261', '\261', '\263', '\263', '\265', '\265', '\266', '\271', '\270', '\271', '\272', '\277', '\274', '\276', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_14_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x34a2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x00a0, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_14_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_14_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_14_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xa2 }, { 0xa4, 0xa5 }, { 0xa6, 0xab }, { 0xa8, 0xb8 }, { 0xaa, 0xba }, { 0xac, 0xbc }, { 0xaf, 0xff }, { 0xb0, 0xb1 }, { 0xb2, 0xb3 }, { 0xb4, 0xb5 }, { 0xb7, 0xb9 }, { 0xbb, 0xbf }, { 0xbd, 0xbe }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_14 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-14", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_15.c000066400000000000000000000217351321242335200161270ustar00rootroot00000000000000/********************************************************************** iso8859_15.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_15_TO_LOWER_CASE(c) EncISO_8859_15_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_15_CTYPE(code,ctype) \ ((EncISO_8859_15_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_15_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\250', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\270', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\275', '\275', '\377', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_15_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x34a2, 0x30e2, 0x00a0, 0x01a0, 0x30e2, 0x10a0, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_15_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_15_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xdf etc.. are lower case letter, but can't convert. */ if (*p == 0xaa || *p == 0xb5 || *p == 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_15_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa6, 0xa8 }, { 0xb4, 0xb8 }, { 0xbc, 0xbd }, { 0xbe, 0xff }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_15 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-15", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_16.c000066400000000000000000000217031321242335200161230ustar00rootroot00000000000000/********************************************************************** iso8859_16.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_16_TO_LOWER_CASE(c) EncISO_8859_16_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_16_CTYPE(code,ctype) \ ((EncISO_8859_16_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_16_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\242', '\242', '\263', '\245', '\245', '\250', '\247', '\250', '\251', '\272', '\253', '\256', '\255', '\256', '\277', '\260', '\261', '\271', '\263', '\270', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\275', '\275', '\377', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_16_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x01a0, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x34a2, 0x01a0, 0x34a2, 0x01a0, 0x30e2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x30e2, 0x34a2, 0x01a0, 0x00a0, 0x01a0, 0x30e2, 0x30e2, 0x30e2, 0x01a0, 0x34a2, 0x30e2, 0x34a2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_16_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_16_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_16_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xa2 }, { 0xa3, 0xb3 }, { 0xa6, 0xa8 }, { 0xaa, 0xba }, { 0xac, 0xae }, { 0xaf, 0xbf }, { 0xb2, 0xb9 }, { 0xb4, 0xb8 }, { 0xbc, 0xbd }, { 0xbe, 0xff }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_16 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-16", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_2.c000066400000000000000000000216431321242335200160410ustar00rootroot00000000000000/********************************************************************** iso8859_2.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_2_TO_LOWER_CASE(c) EncISO_8859_2_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_2_CTYPE(code,ctype) \ ((EncISO_8859_2_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_2_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\261', '\242', '\263', '\244', '\265', '\266', '\247', '\250', '\271', '\272', '\273', '\274', '\255', '\276', '\277', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_2_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x00a0, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_2_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_2_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, { 0xa3, 0xb3 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_2_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingISO_8859_2 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-2", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_3.c000066400000000000000000000216241321242335200160410ustar00rootroot00000000000000/********************************************************************** iso8859_3.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_3_TO_LOWER_CASE(c) EncISO_8859_3_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_3_CTYPE(code,ctype) \ ((EncISO_8859_3_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_3_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\261', '\242', '\243', '\244', '\245', '\266', '\247', '\250', '\271', '\272', '\273', '\274', '\255', '\256', '\277', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\303', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\320', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_3_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x0000, 0x34a2, 0x00a0, 0x30e2, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x30e2, 0x01a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x11a0, 0x0000, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_3_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_3_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (*p == 0xb5) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_3_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xaf, 0xbf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_3 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-3", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_4.c000066400000000000000000000217071321242335200160440ustar00rootroot00000000000000/********************************************************************** iso8859_4.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_4_TO_LOWER_CASE(c) EncISO_8859_4_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_4_CTYPE(code,ctype) \ ((EncISO_8859_4_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_4_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\261', '\242', '\263', '\244', '\265', '\266', '\247', '\250', '\271', '\272', '\273', '\274', '\255', '\276', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\277', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_4_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x30e2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x00a0, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_4_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_4_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { if (*p == 0xa2) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_4_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xb1 }, { 0xa3, 0xb3 }, { 0xa5, 0xb5 }, { 0xa6, 0xb6 }, { 0xa9, 0xb9 }, { 0xaa, 0xba }, { 0xab, 0xbb }, { 0xac, 0xbc }, { 0xae, 0xbe }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_4 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-4", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_5.c000066400000000000000000000212571321242335200160450ustar00rootroot00000000000000/********************************************************************** iso8859_5.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_5_TO_LOWER_CASE(c) EncISO_8859_5_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_5_CTYPE(code,ctype) \ ((EncISO_8859_5_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_5_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\255', '\376', '\377', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_5_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; *lower = ENC_ISO_8859_5_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; (*pp)++; v = (EncISO_8859_5_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_5_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa1, 0xf1 }, { 0xa2, 0xf2 }, { 0xa3, 0xf3 }, { 0xa4, 0xf4 }, { 0xa5, 0xf5 }, { 0xa6, 0xf6 }, { 0xa7, 0xf7 }, { 0xa8, 0xf8 }, { 0xa9, 0xf9 }, { 0xaa, 0xfa }, { 0xab, 0xfb }, { 0xac, 0xfc }, { 0xae, 0xfe }, { 0xaf, 0xff }, { 0xb0, 0xd0 }, { 0xb1, 0xd1 }, { 0xb2, 0xd2 }, { 0xb3, 0xd3 }, { 0xb4, 0xd4 }, { 0xb5, 0xd5 }, { 0xb6, 0xd6 }, { 0xb7, 0xd7 }, { 0xb8, 0xd8 }, { 0xb9, 0xd9 }, { 0xba, 0xda }, { 0xbb, 0xdb }, { 0xbc, 0xdc }, { 0xbd, 0xdd }, { 0xbe, 0xde }, { 0xbf, 0xdf }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_5 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-5", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_6.c000066400000000000000000000112601321242335200160370ustar00rootroot00000000000000/********************************************************************** iso8859_6.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_IS_ISO_8859_6_CTYPE(code,ctype) \ ((EncISO_8859_6_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const unsigned short EncISO_8859_6_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x0000, 0x0000, 0x00a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x01a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x0000, 0x0000, 0x0000, 0x01a0, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_6_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingISO_8859_6 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-6", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, onigenc_ascii_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_7.c000066400000000000000000000211311321242335200160360ustar00rootroot00000000000000/********************************************************************** iso8859_7.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_7_TO_LOWER_CASE(c) EncISO_8859_7_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_7_CTYPE(code,ctype) \ ((EncISO_8859_7_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_7_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\334', '\267', '\335', '\336', '\337', '\273', '\374', '\275', '\375', '\376', '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\322', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\334', '\335', '\336', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_7_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x01a0, 0x00a0, 0x0000, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0000, 0x01a0, 0x00a0, 0x01a0, 0x0000, 0x01a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x00a0, 0x34a2, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x01a0, 0x34a2, 0x10a0, 0x34a2, 0x34a2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x0000, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x0000 }; static int mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; *lower = ENC_ISO_8859_7_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; (*pp)++; v = (EncISO_8859_7_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { if (*p == 0xc0 || *p == 0xe0) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_7_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xb6, 0xdc }, { 0xb8, 0xdd }, { 0xb9, 0xde }, { 0xba, 0xdf }, { 0xbc, 0xfc }, { 0xbe, 0xfd }, { 0xbf, 0xfe }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_7 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-7", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_8.c000066400000000000000000000112601321242335200160410ustar00rootroot00000000000000/********************************************************************** iso8859_8.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_IS_ISO_8859_8_CTYPE(code,ctype) \ ((EncISO_8859_8_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const unsigned short EncISO_8859_8_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x00a0, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01a0, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x30a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_8_CTYPE(code, ctype); else return FALSE; } OnigEncodingType OnigEncodingISO_8859_8 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-8", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, onigenc_ascii_mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/iso8859_9.c000066400000000000000000000215451321242335200160510ustar00rootroot00000000000000/********************************************************************** iso8859_9.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_ISO_8859_9_TO_LOWER_CASE(c) EncISO_8859_9_ToLowerCaseTable[c] #define ENC_IS_ISO_8859_9_CTYPE(code,ctype) \ ((EncISO_8859_9_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncISO_8859_9_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\335', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; static const unsigned short EncISO_8859_9_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { *lower++ = 's'; *lower = 's'; (*pp)++; return 2; } *lower = ENC_ISO_8859_9_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { (*pp)++; return TRUE; } (*pp)++; v = (EncISO_8859_9_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xdf etc.. are lower case letter, but can't convert. */ if (*p >= 0xaa && *p <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } #endif static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_ISO_8859_9_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe } }; static int apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, f, arg); } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 1, flag, p, end, items); } OnigEncodingType OnigEncodingISO_8859_9 = { onigenc_single_byte_mbc_enc_len, "ISO-8859-9", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, mbc_case_fold, apply_all_case_fold, get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/koi8.c000066400000000000000000000222161321242335200153370ustar00rootroot00000000000000/********************************************************************** koi8.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_KOI8_TO_LOWER_CASE(c) EncKOI8_ToLowerCaseTable[c] #define ENC_IS_KOI8_CTYPE(code,ctype) \ ((EncKOI8_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncKOI8_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337' }; static const unsigned short EncKOI8_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; static int koi8_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; *lower = ENC_KOI8_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int koi8_is_mbc_ambiguous(OnigAmbigType flag, const OnigUChar** pp, const OnigUChar* end) { const OnigUChar* p = *pp; (*pp)++; if (((flag & ONIGENC_CASE_FOLD_ASCII_CASE) != 0 && ONIGENC_IS_MBC_ASCII(p)) || ((flag & ONIGENC_CASE_FOLD_NONASCII_CASE) != 0 && !ONIGENC_IS_MBC_ASCII(p))) { int v = (EncKOI8_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); return (v != 0 ? TRUE : FALSE); } return FALSE; } #endif static int koi8_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_KOI8_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, { 0xdf, 0xff }, { 0xe0, 0xc0 }, { 0xe1, 0xc1 }, { 0xe2, 0xc2 }, { 0xe3, 0xc3 }, { 0xe4, 0xc4 }, { 0xe5, 0xc5 }, { 0xe6, 0xc6 }, { 0xe7, 0xc7 }, { 0xe8, 0xc8 }, { 0xe9, 0xc9 }, { 0xea, 0xca }, { 0xeb, 0xcb }, { 0xec, 0xcc }, { 0xed, 0xcd }, { 0xee, 0xce }, { 0xef, 0xcf }, { 0xf0, 0xd0 }, { 0xf1, 0xd1 }, { 0xf2, 0xd2 }, { 0xf3, 0xd3 }, { 0xf4, 0xd4 }, { 0xf5, 0xd5 }, { 0xf6, 0xd6 }, { 0xf7, 0xd7 }, { 0xf8, 0xd8 }, { 0xf9, 0xd9 }, { 0xfa, 0xda }, { 0xfb, 0xdb }, { 0xfc, 0xdc }, { 0xfe, 0xde }, { 0xff, 0xdf } }; static int koi8_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int koi8_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, p, end, items); } OnigEncodingType OnigEncodingKOI8 = { onigenc_single_byte_mbc_enc_len, "KOI8", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, koi8_mbc_case_fold, koi8_apply_all_case_fold, koi8_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, koi8_is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/koi8_r.c000066400000000000000000000210121321242335200156510ustar00rootroot00000000000000/********************************************************************** koi8_r.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" #define ENC_KOI8_R_TO_LOWER_CASE(c) EncKOI8_R_ToLowerCaseTable[c] #define ENC_IS_KOI8_R_CTYPE(code,ctype) \ ((EncKOI8_R_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const UChar EncKOI8_R_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\243', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337' }; static const unsigned short EncKOI8_R_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x0284, 0x00a0, 0x00a0, 0x10a0, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x34a2, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2 }; static int koi8_r_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; *lower = ENC_KOI8_R_TO_LOWER_CASE(*p); (*pp)++; return 1; } #if 0 static int koi8_r_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { int v; const UChar* p = *pp; (*pp)++; v = (EncKOI8_R_CtypeTable[*p] & (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); return (v != 0 ? TRUE : FALSE); } #endif static int koi8_r_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 256) return ENC_IS_KOI8_R_CTYPE(code, ctype); else return FALSE; } static const OnigPairCaseFoldCodes CaseFoldMap[] = { { 0xa3, 0xb3 }, { 0xc0, 0xe0 }, { 0xc1, 0xe1 }, { 0xc2, 0xe2 }, { 0xc3, 0xe3 }, { 0xc4, 0xe4 }, { 0xc5, 0xe5 }, { 0xc6, 0xe6 }, { 0xc7, 0xe7 }, { 0xc8, 0xe8 }, { 0xc9, 0xe9 }, { 0xca, 0xea }, { 0xcb, 0xeb }, { 0xcc, 0xec }, { 0xcd, 0xed }, { 0xce, 0xee }, { 0xcf, 0xef }, { 0xd0, 0xf0 }, { 0xd1, 0xf1 }, { 0xd2, 0xf2 }, { 0xd3, 0xf3 }, { 0xd4, 0xf4 }, { 0xd5, 0xf5 }, { 0xd6, 0xf6 }, { 0xd7, 0xf7 }, { 0xd8, 0xf8 }, { 0xd9, 0xf9 }, { 0xda, 0xfa }, { 0xdb, 0xfb }, { 0xdc, 0xfc }, { 0xdd, 0xfd }, { 0xde, 0xfe }, { 0xdf, 0xff } }; static int koi8_r_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { return onigenc_apply_all_case_fold_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, f, arg); } static int koi8_r_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_get_case_fold_codes_by_str_with_map( sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0, flag, p, end, items); } OnigEncodingType OnigEncodingKOI8_R = { onigenc_single_byte_mbc_enc_len, "KOI8-R", /* name */ 1, /* max enc length */ 1, /* min enc length */ onigenc_is_mbc_newline_0x0a, onigenc_single_byte_mbc_to_code, onigenc_single_byte_code_to_mbclen, onigenc_single_byte_code_to_mbc, koi8_r_mbc_case_fold, koi8_r_apply_all_case_fold, koi8_r_get_case_fold_codes_by_str, onigenc_minimum_property_name_to_ctype, koi8_r_is_code_ctype, onigenc_not_support_get_ctype_code_range, onigenc_single_byte_left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ onigenc_always_true_is_valid_mbc_string }; oniguruma-6.7.0/src/make_unicode_egcb.sh000077500000000000000000000001231321242335200202540ustar00rootroot00000000000000#!/bin/sh NAME=unicode_egcb_data ./make_unicode_egcb_data.py > ${NAME}.c exit 0 oniguruma-6.7.0/src/make_unicode_egcb_data.py000077500000000000000000000144711321242335200212760ustar00rootroot00000000000000#!/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 '/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */' COPYRIGHT = ''' /*- * Copyright (c) 2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ '''.strip() print COPYRIGHT 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) oniguruma-6.7.0/src/make_unicode_fold.sh000077500000000000000000000012711321242335200203050ustar00rootroot00000000000000#!/bin/sh TMP=gperf.tmp GPERF_OPT='-n -C -T -c -t -j1 -L ANSI-C ' ./make_unicode_fold_data.py > unicode_fold_data.c gperf ${GPERF_OPT} -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf > ${TMP} ./gperf_unfold_key_conv.py < ${TMP} > unicode_unfold_key.c gperf ${GPERF_OPT} -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf > ${TMP} ./gperf_fold_key_conv.py 1 < ${TMP} > unicode_fold1_key.c gperf ${GPERF_OPT} -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf > ${TMP} ./gperf_fold_key_conv.py 2 < ${TMP} > unicode_fold2_key.c gperf ${GPERF_OPT} -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf > ${TMP} ./gperf_fold_key_conv.py 3 < ${TMP} > unicode_fold3_key.c rm -f ${TMP} exit 0 oniguruma-6.7.0/src/make_unicode_fold_data.py000077500000000000000000000175101321242335200213170ustar00rootroot00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- # make_unicode_fold_data.py # Copyright (c) 2016-2017 K.Kosako import sys import re import codecs SOURCE_FILE = 'CaseFolding.txt' GPERF_UNFOLD_KEY_FILE = 'unicode_unfold_key.gperf' GPERF_FOLD_KEY_FILES = ['unicode_fold1_key.gperf', 'unicode_fold2_key.gperf', 'unicode_fold3_key.gperf'] 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_INFO = None FOLDS = {} TURKISH_FOLDS = {} LOCALE_FOLDS = {} UNFOLDS = {} TURKISH_UNFOLDS = {} LOCALE_UNFOLDS = {} class Entry: def __init__(self, fold): self.fold = fold self.unfolds = [] self.fold_len = len(fold) self.index = -1 self.comment = None def fold_key(fold): sfold = map(lambda i: "%06x" % i, fold) return ':'.join(sfold) def form16(x, size): form = "0x%06x" if x > 0xffff else "0x%04x" s = form % x rem = size - len(s) if rem > 0: s = ' ' * rem + s return s def form3bytes(x): x0 = x & 0xff x1 = (x>>8) & 0xff x2 = (x>>16) & 0xff return "\\x%02x\\x%02x\\x%02x" % (x2, x1, x0) def check_version_info(s): global VERSION_INFO if VERSION_INFO is None: m = VERSION_REG.match(s) if m is not None: VERSION_INFO = m.group(1) def parse_line(s): if len(s) == 0: return False if s[0] == '#': check_version_info(s) return False m = LINE_REG.match(s) if m is None: print >> sys.stderr, s.encode(ENCODING) sys.exit(-1) s_unfold = m.group(1) s_type = m.group(2) s_fold = m.group(3) comment = m.group(6) if s_type == 'S': return False; unfold = int(s_unfold, 16) f1 = int(s_fold, 16) fold = [f1] if m.group(4) is not None: f2 = int(m.group(4), 16) fold.append(f2) if m.group(5) is not None: f3 = int(m.group(5), 16) fold.append(f3) if s_type == 'T': dic = TURKISH_FOLDS undic = TURKISH_UNFOLDS else: dic = FOLDS undic = UNFOLDS key = fold_key(fold) e = dic.get(key, None) if e is None: e = Entry(fold) e.comment = comment dic[key] = e e.unfolds.append(unfold) if undic.get(unfold, None) is not None: print >> sys.stderr, ("unfold dup: 0x%04x %s\n" % (unfold, s_type)) undic[unfold] = e return True def parse_file(f): line = f.readline() while line: s = line.strip() parse_line(s) line = f.readline() def make_locale(): for unfold, te in TURKISH_UNFOLDS.items(): e = UNFOLDS.get(unfold, None) if e is None: continue fkey = fold_key(e.fold) if len(e.unfolds) == 1: del FOLDS[fkey] else: e.unfolds.remove(unfold) e = Entry(e.fold) e.unfolds.append(unfold) LOCALE_FOLDS[fkey] = e LOCALE_UNFOLDS[unfold] = e del UNFOLDS[unfold] def output_typedef(f): s = """\ typedef unsigned long OnigCodePoint; """ print >> f, s def divide_by_fold_len(d): l = d.items() l1 = filter(lambda (k,e):e.fold_len == 1, l) l2 = filter(lambda (k,e):e.fold_len == 2, l) l3 = filter(lambda (k,e):e.fold_len == 3, l) sl1 = sorted(l1, key=lambda (k,e):k) sl2 = sorted(l2, key=lambda (k,e):k) sl3 = sorted(l3, key=lambda (k,e):k) return (sl1, sl2, sl3) def output_comment(f, s): f.write(" /* %s */" % s) def output_data_n1(f, n, fn, c, out_comment): for k, e in fn: e.index = c if out_comment and n > 1 and e.comment is not None: output_comment(f, e.comment) print >> f, '' f.write(' ') f.write("/*%4d*/ " % c) for i in range(0, n): s = form16(e.fold[i], 8) f.write(" %s," % s) usize = len(e.unfolds) f.write(" %d," % usize) for u in e.unfolds: s = form16(u, 8) f.write(" %s," % s) if out_comment and n == 1 and e.comment is not None: if len(e.comment) < 35: s = e.comment else: s = e.comment[0:33] + '..' output_comment(f, s) f.write("\n") c += n + 1 + usize return c def output_data_n(f, name, n, fn, lfn, out_comment): print >> f, "OnigCodePoint %s%d[] = {" % (name, n) c = 0 c = output_data_n1(f, n, fn, c, out_comment) print >> f, "#define FOLDS%d_NORMAL_END_INDEX %d" % (n, c) print >> f, " /* ----- LOCALE ----- */" c = output_data_n1(f, n, lfn, c, out_comment) print >> f, "#define FOLDS%d_END_INDEX %d" % (n, c) print >> f, "};" def output_fold_data(f, name, out_comment): f1, f2, f3 = divide_by_fold_len(FOLDS) lf1, lf2, lf3 = divide_by_fold_len(LOCALE_FOLDS) output_data_n(f, name, 1, f1, lf1, out_comment) print >> f, '' output_data_n(f, name, 2, f2, lf2, out_comment) print >> f, '' output_data_n(f, name, 3, f3, lf3, out_comment) print >> f, '' def output_macros(f, name): print >> f, "#define FOLDS1_FOLD(i) (%s1 + (i))" % name print >> f, "#define FOLDS2_FOLD(i) (%s2 + (i))" % name print >> f, "#define FOLDS3_FOLD(i) (%s3 + (i))" % name print >> f, "#define FOLDS1_UNFOLDS_NUM(i) %s1[(i)+1]" % name print >> f, "#define FOLDS2_UNFOLDS_NUM(i) %s2[(i)+2]" % name print >> f, "#define FOLDS3_UNFOLDS_NUM(i) %s3[(i)+3]" % name print >> f, "#define FOLDS1_UNFOLDS(i) (%s1 + (i) + 2)" % name print >> f, "#define FOLDS2_UNFOLDS(i) (%s2 + (i) + 3)" % name print >> f, "#define FOLDS3_UNFOLDS(i) (%s3 + (i) + 4)" % name print >> f, "#define FOLDS1_NEXT_INDEX(i) ((i) + 2 + %s1[(i)+1])" % name print >> f, "#define FOLDS2_NEXT_INDEX(i) ((i) + 3 + %s1[(i)+2])" % name print >> f, "#define FOLDS3_NEXT_INDEX(i) ((i) + 4 + %s1[(i)+3])" % name def output_fold_source(f, out_comment): print >> f, "/* This file was generated by make_unicode_fold_data.py. */" print >> f, '#include "regenc.h"' print >> f, '' if VERSION_INFO is not None: print "#define CASEFOLD_VERSION %s" % re.sub(r'[\.-]', '_', VERSION_INFO) print '' #output_macros(f, DataName) print >> f, '' #output_typedef(f) output_fold_data(f, DataName, out_comment) def output_gperf_unfold_key(f): head = """\ %{ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" %} struct ByUnfoldKey { OnigCodePoint code; short int index; short int fold_len; }; %% """ f.write(head) UNFOLDS.update(LOCALE_UNFOLDS) l = UNFOLDS.items() sl = sorted(l, key=lambda (k,e):(e.fold_len, e.index)) for k, e in sl: f.write('"%s", /*0x%04x*/ %4d, %d\n' % (form3bytes(k), k, e.index, e.fold_len)) print >> f, '%%' def output_gperf_fold_key(f, key_len): head = """\ %{ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" %} short int %% """ f.write(head) l = FOLDS.items() l = filter(lambda (k,e):e.fold_len == key_len, l) sl = sorted(l, key=lambda (k,e):e.index) for k, e in sl: skey = ''.join(map(lambda i: form3bytes(i), e.fold)) f.write('"%s", %4d\n' % (skey, e.index)) print >> f, '%%' def output_gperf_source(): with open(GPERF_UNFOLD_KEY_FILE, 'w') as f: output_gperf_unfold_key(f) FOLDS.update(LOCALE_FOLDS) for i in range(1, 4): with open(GPERF_FOLD_KEY_FILES[i-1], 'w') as f: output_gperf_fold_key(f, i) ## main ## with open(SOURCE_FILE, 'r') as f: parse_file(f) make_locale() out_comment = True output_fold_source(sys.stdout, out_comment) output_gperf_source() oniguruma-6.7.0/src/make_unicode_property.sh000077500000000000000000000014751321242335200212530ustar00rootroot00000000000000#!/bin/sh NAME=unicode_property_data TMP=gperf.tmp #GPERF_OPT='-P -Q prop_name_pool -C -c -t -j1 -L ANSI-C --ignore-case' GPERF_OPT='-T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool' POOL_CAST='s/\(int *\)\(long *\)&\(\(struct +unicode_prop_name_pool_t *\* *\) *0\)->unicode_prop_name_pool_str([^,]+)/pool_offset(\1)/g' ./make_unicode_property_data.py > ${NAME}.gperf ./make_unicode_property_data.py -posix > ${NAME}_posix.gperf gperf ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP} ${NAME}.gperf sed -e 's/^#line.*$//g' ${TMP} | sed -r "${POOL_CAST}" > ${NAME}.c gperf ${GPERF_OPT} -N unicode_lookup_property_name --output-file ${TMP} ${NAME}_posix.gperf sed -e 's/^#line.*$//g' ${TMP} | sed -r "${POOL_CAST}" > ${NAME}_posix.c rm -f ${NAME}.gperf ${NAME}_posix.gperf ${TMP} exit 0 oniguruma-6.7.0/src/make_unicode_property_data.py000077500000000000000000000315021321242335200222540ustar00rootroot00000000000000#!/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' ] 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:") 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 = { } KDIC = { } PropIndex = { } PROPERTY_NAME_MAX_LEN = 0 def normalize_prop_name(name): name = re.sub(r'[ _]', '', name) name = name.lower() return name def fix_block_name(name): 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) def print_ranges(ranges): for (start, end) in ranges: print "0x%06x, 0x%06x" % (start, end) print len(ranges) def print_prop_and_index(prop, i): print "%-35s %3d" % (prop + ',', i) PropIndex[prop] = i PRINT_CACHE = { } def print_property(prop, data, 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) print "}; /* END of CR_%s */" % prop 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_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 = { } 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 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 = 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 m = PA_LINE_REG.match(s) if not(m): continue if m.group(1) == m.group(2): continue a[m.group(1)] = m.group(2) 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 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 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) 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 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 def entry_prop_name(name, index): 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 argc = len(argv) POSIX_ONLY = False if argc >= 2: if argv[1] == '-posix': POSIX_ONLY = True 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) PROPS = DIC.keys() PROPS = list_sub(PROPS, POSIX_LIST) dic, props = parse_properties('DerivedCoreProperties.txt', 'Derived Property') merge_dic(DIC, dic) merge_props(PROPS, props) dic, props = parse_properties('Scripts.txt', 'Script') merge_dic(DIC, dic) merge_props(PROPS, props) DIC['Unknown'] = inverse_ranges(add_ranges_in_dic(dic)) dic, props = parse_properties('PropList.txt', 'Binary Property') merge_dic(DIC, dic) merge_props(PROPS, props) PROPS.append('Unknown') KDIC['Unknown'] = 'Script' ALIASES = parse_property_aliases('PropertyAliases.txt') a = parse_property_value_aliases('PropertyValueAliases.txt') 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 '' 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 = '-' print_property(prop, DIC[prop], klass) 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 if not(POSIX_ONLY): for prop in PROPS: print " CR_%s," % prop for prop in BLOCKS: print " CR_%s," % prop s = '''}; #define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) %} struct PoolPropertyNameCtype { short int name; short int ctype; }; %% ''' sys.stdout.write(s) 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_and_print_prop_and_index(prop, index) if not(POSIX_ONLY): 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_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10) print "#define CODE_RANGES_NUM %d" % (index + 1) if OUTPUT_LIST_MODE: UPF.close() sys.exit(0) oniguruma-6.7.0/src/mktable.c000066400000000000000000000704611321242335200161110ustar00rootroot00000000000000/********************************************************************** mktable.c **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #include #include #ifndef __USE_ISOC99 #define __USE_ISOC99 #endif #include #include "regenc.h" #define ASCII 0 #define UNICODE_ISO_8859_1 1 #define ISO_8859_1 2 #define ISO_8859_2 3 #define ISO_8859_3 4 #define ISO_8859_4 5 #define ISO_8859_5 6 #define ISO_8859_6 7 #define ISO_8859_7 8 #define ISO_8859_8 9 #define ISO_8859_9 10 #define ISO_8859_10 11 #define ISO_8859_11 12 #define ISO_8859_13 13 #define ISO_8859_14 14 #define ISO_8859_15 15 #define ISO_8859_16 16 #define KOI8 17 #define KOI8_R 18 typedef struct { int num; char* name; } ENC_INFO; static ENC_INFO Info[] = { { ASCII, "ASCII" }, { UNICODE_ISO_8859_1, "UNICODE_ISO_8859_1" }, { ISO_8859_1, "ISO_8859_1" }, { ISO_8859_2, "ISO_8859_2" }, { ISO_8859_3, "ISO_8859_3" }, { ISO_8859_4, "ISO_8859_4" }, { ISO_8859_5, "ISO_8859_5" }, { ISO_8859_6, "ISO_8859_6" }, { ISO_8859_7, "ISO_8859_7" }, { ISO_8859_8, "ISO_8859_8" }, { ISO_8859_9, "ISO_8859_9" }, { ISO_8859_10, "ISO_8859_10" }, { ISO_8859_11, "ISO_8859_11" }, { ISO_8859_13, "ISO_8859_13" }, { ISO_8859_14, "ISO_8859_14" }, { ISO_8859_15, "ISO_8859_15" }, { ISO_8859_16, "ISO_8859_16" }, { KOI8, "KOI8" }, { KOI8_R, "KOI8_R" } }; static int IsAlpha(int enc, int c) { if (enc == ASCII) return isalpha(c); if (c >= 0x41 && c <= 0x5a) return 1; if (c >= 0x61 && c <= 0x7a) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_9: if (c == 0xaa) return 1; if (c == 0xb5) return 1; if (c == 0xba) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; break; case ISO_8859_2: if (c == 0xa1 || c == 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c >= 0xae && c <= 0xaf) return 1; if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_3: if (c == 0xa1) return 1; if (c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xaf) return 1; if (c == 0xb1) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c == 0xbf) return 1; if (c >= 0xc0 && c <= 0xc2) return 1; if (c >= 0xc4 && c <= 0xcf) return 1; if (c >= 0xd1 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xe2) return 1; if (c >= 0xe4 && c <= 0xef) return 1; if (c >= 0xf1 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_4: if (c >= 0xa1 && c <= 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xae) return 1; if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_5: if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1; if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1; break; case ISO_8859_6: if (c >= 0xc1 && c <= 0xda) return 1; if (c >= 0xe0 && c <= 0xf2) return 1; break; case ISO_8859_7: if (c == 0xb6) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c == 0xc0) return 1; if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1; if (c >= 0xdc && c <= 0xfe) return 1; break; case ISO_8859_8: if (c == 0xb5) return 1; if (c >= 0xe0 && c <= 0xfa) return 1; break; case ISO_8859_10: if (c >= 0xa1 && c <= 0xa6) return 1; if (c >= 0xa8 && c <= 0xac) return 1; if (c == 0xae || c == 0xaf) return 1; if (c >= 0xb1 && c <= 0xb6) return 1; if (c >= 0xb8 && c <= 0xbc) return 1; if (c >= 0xbe && c <= 0xff) return 1; break; case ISO_8859_11: if (c >= 0xa1 && c <= 0xda) return 1; if (c >= 0xdf && c <= 0xfb) return 1; break; case ISO_8859_13: if (c == 0xa8) return 1; if (c == 0xaa) return 1; if (c == 0xaf) return 1; if (c == 0xb5) return 1; if (c == 0xb8) return 1; if (c == 0xba) return 1; if (c >= 0xbf && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_14: if (c == 0xa1 || c == 0xa2) return 1; if (c == 0xa4 || c == 0xa5) return 1; if (c == 0xa6 || c == 0xa8) return 1; if (c >= 0xaa && c <= 0xac) return 1; if (c >= 0xaf && c <= 0xb5) return 1; if (c >= 0xb7 && c <= 0xff) return 1; break; case ISO_8859_15: if (c == 0xaa) return 1; if (c == 0xb5) return 1; if (c == 0xba) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; if (c == 0xa6) return 1; if (c == 0xa8) return 1; if (c == 0xb4) return 1; if (c == 0xb8) return 1; if (c == 0xbc) return 1; if (c == 0xbd) return 1; if (c == 0xbe) return 1; break; case ISO_8859_16: if (c == 0xa1) return 1; if (c == 0xa2) return 1; if (c == 0xa3) return 1; if (c == 0xa6) return 1; if (c == 0xa8) return 1; if (c == 0xaa) return 1; if (c == 0xac) return 1; if (c == 0xae) return 1; if (c == 0xaf) return 1; if (c == 0xb2) return 1; if (c == 0xb3) return 1; if (c == 0xb4) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbc) return 1; if (c == 0xbd) return 1; if (c == 0xbe) return 1; if (c == 0xbf) return 1; if (c >= 0xc0 && c <= 0xde) return 1; if (c >= 0xdf && c <= 0xff) return 1; break; case KOI8_R: if (c == 0xa3 || c == 0xb3) return 1; /* fall */ case KOI8: if (c >= 0xc0 && c <= 0xff) return 1; break; default: exit(-1); } return 0; } static int IsBlank(int enc, int c) { if (enc == ASCII) return isblank(c); if (c == 0x09 || c == 0x20) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_2: case ISO_8859_3: case ISO_8859_4: case ISO_8859_5: case ISO_8859_6: case ISO_8859_7: case ISO_8859_8: case ISO_8859_9: case ISO_8859_10: case ISO_8859_11: case ISO_8859_13: case ISO_8859_14: case ISO_8859_15: case ISO_8859_16: case KOI8: if (c == 0xa0) return 1; break; case KOI8_R: if (c == 0x9a) return 1; break; default: exit(-1); } return 0; } static int IsCntrl(int enc, int c) { if (enc == ASCII) return iscntrl(c); if (c >= 0x00 && c <= 0x1F) return 1; switch (enc) { case UNICODE_ISO_8859_1: if (c == 0xad) return 1; /* fall */ case ISO_8859_1: case ISO_8859_2: case ISO_8859_3: case ISO_8859_4: case ISO_8859_5: case ISO_8859_6: case ISO_8859_7: case ISO_8859_8: case ISO_8859_9: case ISO_8859_10: case ISO_8859_11: case ISO_8859_13: case ISO_8859_14: case ISO_8859_15: case ISO_8859_16: case KOI8: if (c >= 0x7f && c <= 0x9F) return 1; break; case KOI8_R: if (c == 0x7f) return 1; break; default: exit(-1); } return 0; } static int IsDigit(int enc ARG_UNUSED, int c) { if (c >= 0x30 && c <= 0x39) return 1; return 0; } static int IsGraph(int enc, int c) { if (enc == ASCII) return isgraph(c); if (c >= 0x21 && c <= 0x7e) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_2: case ISO_8859_4: case ISO_8859_5: case ISO_8859_9: case ISO_8859_10: case ISO_8859_13: case ISO_8859_14: case ISO_8859_15: case ISO_8859_16: if (c >= 0xa1 && c <= 0xff) return 1; break; case ISO_8859_3: if (c >= 0xa1) { if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 || c == 0xe3 || c == 0xf0) return 0; else return 1; } break; case ISO_8859_6: if (c == 0xa4 || c == 0xac || c == 0xad || c == 0xbb || c == 0xbf) return 1; if (c >= 0xc1 && c <= 0xda) return 1; if (c >= 0xe0 && c <= 0xf2) return 1; break; case ISO_8859_7: if (c >= 0xa1 && c <= 0xfe && c != 0xa4 && c != 0xa5 && c != 0xaa && c != 0xae && c != 0xd2) return 1; break; case ISO_8859_8: if (c >= 0xa2 && c <= 0xfa) { if (c >= 0xbf && c <= 0xde) return 0; return 1; } break; case ISO_8859_11: if (c >= 0xa1 && c <= 0xda) return 1; if (c >= 0xdf && c <= 0xfb) return 1; break; case KOI8: if (c >= 0xc0 && c <= 0xff) return 1; break; case KOI8_R: if (c >= 0x80 && c <= 0xff && c != 0x9a) return 1; break; default: exit(-1); } return 0; } static int IsLower(int enc, int c) { if (enc == ASCII) return islower(c); if (c >= 0x61 && c <= 0x7a) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_9: if (c == 0xaa) return 1; if (c == 0xb5) return 1; if (c == 0xba) return 1; if (c >= 0xdf && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; break; case ISO_8859_2: if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c >= 0xdf && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_3: if (c == 0xb1) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c == 0xbf) return 1; if (c == 0xdf) return 1; if (c >= 0xe0 && c <= 0xe2) return 1; if (c >= 0xe4 && c <= 0xef) return 1; if (c >= 0xf1 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_4: if (c == 0xa2) return 1; if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c == 0xdf) return 1; if (c >= 0xe0 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_5: if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1; break; case ISO_8859_6: break; case ISO_8859_7: if (c == 0xc0) return 1; if (c >= 0xdc && c <= 0xfe) return 1; break; case ISO_8859_8: if (c == 0xb5) return 1; break; case ISO_8859_10: if (c >= 0xb1 && c <= 0xb6) return 1; if (c >= 0xb8 && c <= 0xbc) return 1; if (c == 0xbe || c == 0xbf) return 1; if (c >= 0xdf && c <= 0xff) return 1; break; case ISO_8859_11: break; case ISO_8859_13: if (c == 0xb5) return 1; if (c == 0xb8) return 1; if (c == 0xba) return 1; if (c == 0xbf) return 1; if (c >= 0xdf && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_14: if (c == 0xa2) return 1; if (c == 0xa5) return 1; if (c == 0xab) return 1; if (c == 0xb1 || c == 0xb3 || c == 0xb5) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbc) return 1; if (c == 0xbe || c == 0xbf) return 1; if (c >= 0xdf && c <= 0xff) return 1; break; case ISO_8859_15: if (c == 0xaa) return 1; if (c == 0xb5) return 1; if (c == 0xba) return 1; if (c >= 0xdf && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; if (c == 0xa8) return 1; if (c == 0xb8) return 1; if (c == 0xbd) return 1; break; case ISO_8859_16: if (c == 0xa2) return 1; if (c == 0xa8) return 1; if (c == 0xae) return 1; if (c == 0xb3) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbd) return 1; if (c == 0xbf) return 1; if (c >= 0xdf && c <= 0xff) return 1; break; case KOI8_R: if (c == 0xa3) return 1; /* fall */ case KOI8: if (c >= 0xc0 && c <= 0xdf) return 1; break; default: exit(-1); } return 0; } static int IsPrint(int enc, int c) { if (enc == ASCII) return isprint(c); if (c >= 0x20 && c <= 0x7e) return 1; switch (enc) { case UNICODE_ISO_8859_1: if (c >= 0x09 && c <= 0x0d) return 1; if (c == 0x85) return 1; /* fall */ case ISO_8859_1: case ISO_8859_2: case ISO_8859_4: case ISO_8859_5: case ISO_8859_9: case ISO_8859_10: case ISO_8859_13: case ISO_8859_14: case ISO_8859_15: case ISO_8859_16: if (c >= 0xa0 && c <= 0xff) return 1; break; case ISO_8859_3: if (c >= 0xa0) { if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 || c == 0xe3 || c == 0xf0) return 0; else return 1; } break; case ISO_8859_6: if (c == 0xa0) return 1; if (c == 0xa4 || c == 0xac || c == 0xad || c == 0xbb || c == 0xbf) return 1; if (c >= 0xc1 && c <= 0xda) return 1; if (c >= 0xe0 && c <= 0xf2) return 1; break; case ISO_8859_7: if (c >= 0xa0 && c <= 0xfe && c != 0xa4 && c != 0xa5 && c != 0xaa && c != 0xae && c != 0xd2) return 1; break; case ISO_8859_8: if (c >= 0xa0 && c <= 0xfa) { if (c >= 0xbf && c <= 0xde) return 0; if (c == 0xa1) return 0; return 1; } break; case ISO_8859_11: if (c >= 0xa0 && c <= 0xda) return 1; if (c >= 0xdf && c <= 0xfb) return 1; break; case KOI8: if (c == 0xa0) return 1; if (c >= 0xc0 && c <= 0xff) return 1; break; case KOI8_R: if (c >= 0x80 && c <= 0xff) return 1; break; default: exit(-1); } return 0; } static int IsPunct(int enc, int c) { if (enc == ASCII) return ispunct(c); if (enc == UNICODE_ISO_8859_1) { if (c == 0x24 || c == 0x2b || c == 0x5e || c == 0x60 || c == 0x7c || c == 0x7e) return 1; if (c >= 0x3c && c <= 0x3e) return 1; } if (c >= 0x21 && c <= 0x2f) return 1; if (c >= 0x3a && c <= 0x40) return 1; if (c >= 0x5b && c <= 0x60) return 1; if (c >= 0x7b && c <= 0x7e) return 1; switch (enc) { case ISO_8859_1: case ISO_8859_9: case ISO_8859_15: if (c == 0xad) return 1; /* fall */ case UNICODE_ISO_8859_1: if (c == 0xa1) return 1; if (c == 0xab) return 1; if (c == 0xb7) return 1; if (c == 0xbb) return 1; if (c == 0xbf) return 1; break; case ISO_8859_2: case ISO_8859_4: case ISO_8859_5: case ISO_8859_14: if (c == 0xad) return 1; break; case ISO_8859_3: case ISO_8859_10: if (c == 0xad) return 1; if (c == 0xb7) return 1; if (c == 0xbd) return 1; break; case ISO_8859_6: if (c == 0xac) return 1; if (c == 0xad) return 1; if (c == 0xbb) return 1; if (c == 0xbf) return 1; break; case ISO_8859_7: if (c == 0xa1 || c == 0xa2) return 1; if (c == 0xab) return 1; if (c == 0xaf) return 1; if (c == 0xad) return 1; if (c == 0xb7 || c == 0xbb) return 1; break; case ISO_8859_8: if (c == 0xab) return 1; if (c == 0xad) return 1; if (c == 0xb7) return 1; if (c == 0xbb) return 1; if (c == 0xdf) return 1; break; case ISO_8859_13: if (c == 0xa1 || c == 0xa5) return 1; if (c == 0xab || c == 0xad) return 1; if (c == 0xb4 || c == 0xb7) return 1; if (c == 0xbb) return 1; if (c == 0xff) return 1; break; case ISO_8859_16: if (c == 0xa5) return 1; if (c == 0xab) return 1; if (c == 0xad) return 1; if (c == 0xb5) return 1; if (c == 0xb7) return 1; if (c == 0xbb) return 1; break; case KOI8_R: if (c == 0x9e) return 1; break; case ISO_8859_11: case KOI8: break; default: exit(-1); } return 0; } static int IsSpace(int enc, int c) { if (enc == ASCII) return isspace(c); if (c >= 0x09 && c <= 0x0d) return 1; if (c == 0x20) return 1; switch (enc) { case UNICODE_ISO_8859_1: if (c == 0x85) return 1; /* fall */ case ISO_8859_1: case ISO_8859_2: case ISO_8859_3: case ISO_8859_4: case ISO_8859_5: case ISO_8859_6: case ISO_8859_7: case ISO_8859_8: case ISO_8859_9: case ISO_8859_10: case ISO_8859_11: case ISO_8859_13: case ISO_8859_14: case ISO_8859_15: case ISO_8859_16: case KOI8: if (c == 0xa0) return 1; break; case KOI8_R: if (c == 0x9a) return 1; break; default: exit(-1); } return 0; } static int IsUpper(int enc, int c) { if (enc == ASCII) return isupper(c); if (c >= 0x41 && c <= 0x5a) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_9: if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; break; case ISO_8859_2: if (c == 0xa1 || c == 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c >= 0xae && c <= 0xaf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; break; case ISO_8859_3: if (c == 0xa1) return 1; if (c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xaf) return 1; if (c >= 0xc0 && c <= 0xc2) return 1; if (c >= 0xc4 && c <= 0xcf) return 1; if (c >= 0xd1 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; break; case ISO_8859_4: if (c == 0xa1 || c == 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xae) return 1; if (c == 0xbd) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; break; case ISO_8859_5: if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1; break; case ISO_8859_6: break; case ISO_8859_7: if (c == 0xb6) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1; break; case ISO_8859_8: case ISO_8859_11: break; case ISO_8859_10: if (c >= 0xa1 && c <= 0xa6) return 1; if (c >= 0xa8 && c <= 0xac) return 1; if (c == 0xae || c == 0xaf) return 1; if (c >= 0xc0 && c <= 0xde) return 1; break; case ISO_8859_13: if (c == 0xa8) return 1; if (c == 0xaa) return 1; if (c == 0xaf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; break; case ISO_8859_14: if (c == 0xa1) return 1; if (c == 0xa4 || c == 0xa6) return 1; if (c == 0xa8) return 1; if (c == 0xaa || c == 0xac) return 1; if (c == 0xaf || c == 0xb0) return 1; if (c == 0xb2 || c == 0xb4 || c == 0xb7) return 1; if (c == 0xbb || c == 0xbd) return 1; if (c >= 0xc0 && c <= 0xde) return 1; break; case ISO_8859_15: if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xde) return 1; if (c == 0xa6) return 1; if (c == 0xb4) return 1; if (c == 0xbc) return 1; if (c == 0xbe) return 1; break; case ISO_8859_16: if (c == 0xa1) return 1; if (c == 0xa3) return 1; if (c == 0xa6) return 1; if (c == 0xaa) return 1; if (c == 0xac) return 1; if (c == 0xaf) return 1; if (c == 0xb2) return 1; if (c == 0xb4) return 1; if (c == 0xbc) return 1; if (c == 0xbe) return 1; if (c >= 0xc0 && c <= 0xde) return 1; break; case KOI8_R: if (c == 0xb3) return 1; /* fall */ case KOI8: if (c >= 0xe0 && c <= 0xff) return 1; break; default: exit(-1); } return 0; } static int IsXDigit(int enc, int c) { if (enc == ASCII) return isxdigit(c); if (c >= 0x30 && c <= 0x39) return 1; if (c >= 0x41 && c <= 0x46) return 1; if (c >= 0x61 && c <= 0x66) return 1; return 0; } static int IsWord(int enc, int c) { if (enc == ASCII) { return (isalpha(c) || isdigit(c) || c == 0x5f); } if (c >= 0x30 && c <= 0x39) return 1; if (c >= 0x41 && c <= 0x5a) return 1; if (c == 0x5f) return 1; if (c >= 0x61 && c <= 0x7a) return 1; switch (enc) { case UNICODE_ISO_8859_1: case ISO_8859_1: case ISO_8859_9: if (c == 0xaa) return 1; if (c >= 0xb2 && c <= 0xb3) return 1; if (c == 0xb5) return 1; if (c >= 0xb9 && c <= 0xba) return 1; if (c >= 0xbc && c <= 0xbe) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; break; case ISO_8859_2: if (c == 0xa1 || c == 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c >= 0xae && c <= 0xaf) return 1; if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbc) return 1; if (c >= 0xbe && c <= 0xbf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_3: if (c == 0xa1) return 1; if (c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xaf) return 1; if (c >= 0xb1 && c <= 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbd) return 1; if (c == 0xbf) return 1; if (c >= 0xc0 && c <= 0xc2) return 1; if (c >= 0xc4 && c <= 0xcf) return 1; if (c >= 0xd1 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xe2) return 1; if (c >= 0xe4 && c <= 0xef) return 1; if (c >= 0xf1 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_4: if (c >= 0xa1 && c <= 0xa3) return 1; if (c == 0xa5 || c == 0xa6) return 1; if (c >= 0xa9 && c <= 0xac) return 1; if (c == 0xae) return 1; if (c == 0xb1 || c == 0xb3) return 1; if (c == 0xb5 || c == 0xb6) return 1; if (c >= 0xb9 && c <= 0xbf) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_5: if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1; if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1; break; case ISO_8859_6: if (c >= 0xc1 && c <= 0xda) return 1; if (c >= 0xe0 && c <= 0xea) return 1; if (c >= 0xeb && c <= 0xf2) return 1; break; case ISO_8859_7: if (c == 0xb2 || c == 0xb3) return 1; if (c == 0xb6) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c >= 0xbc && c <= 0xbf) return 1; if (c == 0xc0) return 1; if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1; if (c >= 0xdc && c <= 0xfe) return 1; break; case ISO_8859_8: if (c == 0xb2 || c == 0xb3 || c == 0xb5 || c == 0xb9) return 1; if (c >= 0xbc && c <= 0xbe) return 1; if (c >= 0xe0 && c <= 0xfa) return 1; break; case ISO_8859_10: if (c >= 0xa1 && c <= 0xff) { if (c != 0xa7 && c != 0xad && c != 0xb0 && c != 0xb7 && c != 0xbd) return 1; } break; case ISO_8859_11: if (c >= 0xa1 && c <= 0xda) return 1; if (c >= 0xdf && c <= 0xfb) return 1; break; case ISO_8859_13: if (c == 0xa8) return 1; if (c == 0xaa) return 1; if (c == 0xaf) return 1; if (c == 0xb2 || c == 0xb3 || c == 0xb5 || c == 0xb9) return 1; if (c >= 0xbc && c <= 0xbe) return 1; if (c == 0xb8) return 1; if (c == 0xba) return 1; if (c >= 0xbf && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xfe) return 1; break; case ISO_8859_14: if (c >= 0xa1 && c <= 0xff) { if (c == 0xa3 || c == 0xa7 || c == 0xa9 || c == 0xad || c == 0xae || c == 0xb6) return 0; return 1; } break; case ISO_8859_15: if (c == 0xaa) return 1; if (c >= 0xb2 && c <= 0xb3) return 1; if (c == 0xb5) return 1; if (c >= 0xb9 && c <= 0xba) return 1; if (c >= 0xbc && c <= 0xbe) return 1; if (c >= 0xc0 && c <= 0xd6) return 1; if (c >= 0xd8 && c <= 0xf6) return 1; if (c >= 0xf8 && c <= 0xff) return 1; if (c == 0xa6) return 1; if (c == 0xa8) return 1; if (c == 0xb4) return 1; if (c == 0xb8) return 1; break; case ISO_8859_16: if (c == 0xa1) return 1; if (c == 0xa2) return 1; if (c == 0xa3) return 1; if (c == 0xa6) return 1; if (c == 0xa8) return 1; if (c == 0xaa) return 1; if (c == 0xac) return 1; if (c == 0xae) return 1; if (c == 0xaf) return 1; if (c == 0xb2) return 1; if (c == 0xb3) return 1; if (c == 0xb4) return 1; if (c >= 0xb8 && c <= 0xba) return 1; if (c == 0xbc) return 1; if (c == 0xbd) return 1; if (c == 0xbe) return 1; if (c == 0xbf) return 1; if (c >= 0xc0 && c <= 0xde) return 1; if (c >= 0xdf && c <= 0xff) return 1; break; case KOI8_R: if (c == 0x9d) return 1; if (c == 0xa3 || c == 0xb3) return 1; /* fall */ case KOI8: if (c >= 0xc0 && c <= 0xff) return 1; break; default: exit(-1); } return 0; } static int IsAscii(int enc ARG_UNUSED, int c) { if (c >= 0x00 && c <= 0x7f) return 1; return 0; } static int IsNewline(int enc ARG_UNUSED, int c) { if (c == 0x0a) return 1; return 0; } static int exec(FILE* fp, ENC_INFO* einfo) { #define NCOL 8 int c, val, enc; int r; enc = einfo->num; r = fprintf(fp, "static const unsigned short Enc%s_CtypeTable[256] = {\n", einfo->name); if (r < 0) return -1; for (c = 0; c < 256; c++) { val = 0; if (IsNewline(enc, c)) val |= BIT_CTYPE_NEWLINE; if (IsAlpha (enc, c)) val |= (BIT_CTYPE_ALPHA | BIT_CTYPE_ALNUM); if (IsBlank (enc, c)) val |= BIT_CTYPE_BLANK; if (IsCntrl (enc, c)) val |= BIT_CTYPE_CNTRL; if (IsDigit (enc, c)) val |= (BIT_CTYPE_DIGIT | BIT_CTYPE_ALNUM); if (IsGraph (enc, c)) val |= BIT_CTYPE_GRAPH; if (IsLower (enc, c)) val |= BIT_CTYPE_LOWER; if (IsPrint (enc, c)) val |= BIT_CTYPE_PRINT; if (IsPunct (enc, c)) val |= BIT_CTYPE_PUNCT; if (IsSpace (enc, c)) val |= BIT_CTYPE_SPACE; if (IsUpper (enc, c)) val |= BIT_CTYPE_UPPER; if (IsXDigit(enc, c)) val |= BIT_CTYPE_XDIGIT; if (IsWord (enc, c)) val |= BIT_CTYPE_WORD; if (IsAscii (enc, c)) val |= BIT_CTYPE_ASCII; if (c % NCOL == 0) { r = fputs(" ", fp); if (r < 0) return -1; } r = fprintf(fp, "0x%04x", val); if (r < 0) return -1; if (c != 255) { r = fputs(",", fp); if (r < 0) return -1; } if (c != 0 && c % NCOL == (NCOL-1)) r = fputs("\n", fp); else r = fputs(" ", fp); if (r < 0) return -1; } r = fprintf(fp, "};\n"); if (r < 0) return -1; return 0; } extern int main(int argc ARG_UNUSED, char* argv[] ARG_UNUSED) { int r; int i; FILE* fp = stdout; setlocale(LC_ALL, "C"); /* setlocale(LC_ALL, "POSIX"); */ /* setlocale(LC_ALL, "en_GB.iso88591"); */ /* setlocale(LC_ALL, "de_BE.iso88591"); */ /* setlocale(LC_ALL, "fr_FR.iso88591"); */ for (i = 0; i < (int )(sizeof(Info)/sizeof(ENC_INFO)); i++) { r = exec(fp, &Info[i]); if (r < 0) { fprintf(stderr, "FAIL exec(): %d\n", r); return -1; } } return 0; } oniguruma-6.7.0/src/onig_init.c000066400000000000000000000034671321242335200164530ustar00rootroot00000000000000/********************************************************************** onig_init.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "oniguruma.h" /* onig_init(): deprecated function */ extern int onig_init(void) { #if 0 OnigEncoding encs[] = { ONIG_ENCODING_UTF8 }; return onig_initialize(encs, sizeof(encs)/sizeof(encs[0])); #else return onig_initialize(0, 0); #endif } oniguruma-6.7.0/src/oniggnu.h000066400000000000000000000065451321242335200161470ustar00rootroot00000000000000#ifndef ONIGGNU_H #define ONIGGNU_H /********************************************************************** oniggnu.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2005 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "oniguruma.h" #ifdef __cplusplus extern "C" { #endif #define RE_MBCTYPE_ASCII 0 #define RE_MBCTYPE_EUC 1 #define RE_MBCTYPE_SJIS 2 #define RE_MBCTYPE_UTF8 3 /* GNU regex options */ #ifndef RE_NREGS #define RE_NREGS ONIG_NREGION #endif #define RE_OPTION_IGNORECASE ONIG_OPTION_IGNORECASE #define RE_OPTION_EXTENDED ONIG_OPTION_EXTEND #define RE_OPTION_MULTILINE ONIG_OPTION_MULTILINE #define RE_OPTION_SINGLELINE ONIG_OPTION_SINGLELINE #define RE_OPTION_LONGEST ONIG_OPTION_FIND_LONGEST #define RE_OPTION_POSIXLINE (RE_OPTION_MULTILINE|RE_OPTION_SINGLELINE) #define RE_OPTION_FIND_NOT_EMPTY ONIG_OPTION_FIND_NOT_EMPTY #define RE_OPTION_NEGATE_SINGLELINE ONIG_OPTION_NEGATE_SINGLELINE #define RE_OPTION_DONT_CAPTURE_GROUP ONIG_OPTION_DONT_CAPTURE_GROUP #define RE_OPTION_CAPTURE_GROUP ONIG_OPTION_CAPTURE_GROUP ONIG_EXTERN void re_mbcinit P_((int)); ONIG_EXTERN int re_compile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf)); ONIG_EXTERN int re_recompile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf)); ONIG_EXTERN void re_free_pattern P_((struct re_pattern_buffer*)); ONIG_EXTERN int re_adjust_startpos P_((struct re_pattern_buffer*, const char*, int, int, int)); ONIG_EXTERN int re_search P_((struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*)); ONIG_EXTERN int re_match P_((struct re_pattern_buffer*, const char *, int, int, struct re_registers*)); ONIG_EXTERN void re_set_casetable P_((const char*)); ONIG_EXTERN void re_free_registers P_((struct re_registers*)); ONIG_EXTERN int re_alloc_pattern P_((struct re_pattern_buffer**)); /* added */ #ifdef __cplusplus } #endif #endif /* ONIGGNU_H */ oniguruma-6.7.0/src/onigposix.h000066400000000000000000000134171321242335200165140ustar00rootroot00000000000000#ifndef ONIGPOSIX_H #define ONIGPOSIX_H /********************************************************************** onigposix.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include #ifdef __cplusplus extern "C" { #endif /* options */ #define REG_ICASE (1<<0) #define REG_NEWLINE (1<<1) #define REG_NOTBOL (1<<2) #define REG_NOTEOL (1<<3) #define REG_EXTENDED (1<<4) /* if not set, Basic Onigular Expression */ #define REG_NOSUB (1<<5) /* POSIX error codes */ #define REG_NOMATCH 1 #define REG_BADPAT 2 #define REG_ECOLLATE 3 #define REG_ECTYPE 4 #define REG_EESCAPE 5 #define REG_ESUBREG 6 #define REG_EBRACK 7 #define REG_EPAREN 8 #define REG_EBRACE 9 #define REG_BADBR 10 #define REG_ERANGE 11 #define REG_ESPACE 12 #define REG_BADRPT 13 /* extended error codes */ #define REG_EONIG_INTERNAL 14 #define REG_EONIG_BADWC 15 #define REG_EONIG_BADARG 16 /* #define REG_EONIG_THREAD 17 */ /* character encodings (for reg_set_encoding()) */ #define REG_POSIX_ENCODING_ASCII 0 #define REG_POSIX_ENCODING_EUC_JP 1 #define REG_POSIX_ENCODING_SJIS 2 #define REG_POSIX_ENCODING_UTF8 3 #define REG_POSIX_ENCODING_UTF16_BE 4 #define REG_POSIX_ENCODING_UTF16_LE 5 typedef int regoff_t; typedef struct { regoff_t rm_so; regoff_t rm_eo; } regmatch_t; /* POSIX regex_t */ typedef struct { void* onig; /* Oniguruma regex_t* */ size_t re_nsub; int comp_options; } regex_t; #ifndef P_ #if defined(__STDC__) || defined(_WIN32) # define P_(args) args #else # define P_(args) () #endif #endif #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) #if defined(EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) #endif #endif #endif #ifndef ONIG_EXTERN #define ONIG_EXTERN extern #endif #ifndef ONIGURUMA_H typedef unsigned int OnigOptionType; /* syntax */ typedef struct { unsigned int op; unsigned int op2; unsigned int behavior; OnigOptionType options; /* default option */ } OnigSyntaxType; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) #define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); ONIG_EXTERN int onig_end P_((void)); #endif /* ONIGURUMA_H */ ONIG_EXTERN int regcomp P_((regex_t* reg, const char* pat, int options)); ONIG_EXTERN int regexec P_((regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options)); ONIG_EXTERN void regfree P_((regex_t* reg)); ONIG_EXTERN size_t regerror P_((int code, const regex_t* reg, char* buf, size_t size)); /* extended API */ ONIG_EXTERN void reg_set_encoding P_((int enc)); ONIG_EXTERN int reg_name_to_group_numbers P_((regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums)); ONIG_EXTERN int reg_foreach_name P_((regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg)); ONIG_EXTERN int reg_number_of_names P_((regex_t* reg)); #ifdef __cplusplus } #endif #endif /* ONIGPOSIX_H */ oniguruma-6.7.0/src/oniguruma.h000066400000000000000000001135471321242335200165100ustar00rootroot00000000000000#ifndef ONIGURUMA_H #define ONIGURUMA_H /********************************************************************** oniguruma.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef __cplusplus extern "C" { #endif #define ONIGURUMA #define ONIGURUMA_VERSION_MAJOR 6 #define ONIGURUMA_VERSION_MINOR 7 #define ONIGURUMA_VERSION_TEENY 0 #ifdef __cplusplus # ifndef HAVE_PROTOTYPES # define HAVE_PROTOTYPES 1 # endif # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif /* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */ #if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4 # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifdef HAVE_STDARG_H # ifndef HAVE_STDARG_PROTOTYPES # define HAVE_STDARG_PROTOTYPES 1 # endif #endif #ifndef P_ #if defined(__STDC__) || defined(_WIN32) # define P_(args) args #else # define P_(args) () #endif #endif #ifndef PV_ #ifdef HAVE_STDARG_PROTOTYPES # define PV_(args) args #else # define PV_(args) () #endif #endif #ifndef ONIG_EXTERN #if defined(_WIN32) && !defined(__GNUC__) #if defined(EXPORT) || defined(RUBY_EXPORT) #define ONIG_EXTERN extern __declspec(dllexport) #else #define ONIG_EXTERN extern __declspec(dllimport) #endif #endif #endif #ifndef ONIG_EXTERN #define ONIG_EXTERN extern #endif /* PART: character encoding */ #ifndef ONIG_ESCAPE_UCHAR_COLLISION #define UChar OnigUChar #endif #ifdef _WIN32 #include #endif typedef unsigned int OnigCodePoint; typedef unsigned char OnigUChar; typedef unsigned int OnigCtype; typedef unsigned int OnigLen; #define ONIG_INFINITE_DISTANCE ~((OnigLen )0) typedef unsigned int OnigCaseFoldType; /* case fold flag */ ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag; /* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA (1<<1) */ /* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH (1<<2) */ #define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20) #define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30) #define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR #define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag #define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3 #define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13 /* 13 => Unicode:0x1ffc */ /* code range */ #define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0]) #define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1] #define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2] typedef struct { int byte_len; /* argument(original) character(s) byte length */ int code_len; /* number of code */ OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN]; } OnigCaseFoldCodeItem; typedef struct { OnigCodePoint esc; OnigCodePoint anychar; OnigCodePoint anytime; OnigCodePoint zero_or_one_time; OnigCodePoint one_or_more_time; OnigCodePoint anychar_anytime; } OnigMetaCharTableType; typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg); typedef struct OnigEncodingTypeST { int (*mbc_enc_len)(const OnigUChar* p); const char* name; int max_enc_len; int min_enc_len; int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end); OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end); int (*code_to_mbclen)(OnigCodePoint code); int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf); int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to); int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg); int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]); int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end); int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype); int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]); OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p); int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end); int (*init)(void); int (*is_initialized)(void); int (*is_valid_mbc_string)(const OnigUChar* s, const OnigUChar* end); } OnigEncodingType; typedef OnigEncodingType* OnigEncoding; ONIG_EXTERN OnigEncodingType OnigEncodingASCII; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15; ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16; ONIG_EXTERN OnigEncodingType OnigEncodingUTF8; ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE; ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR; ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN; ONIG_EXTERN OnigEncodingType OnigEncodingSJIS; ONIG_EXTERN OnigEncodingType OnigEncodingKOI8; ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R; ONIG_EXTERN OnigEncodingType OnigEncodingCP1251; ONIG_EXTERN OnigEncodingType OnigEncodingBIG5; ONIG_EXTERN OnigEncodingType OnigEncodingGB18030; #define ONIG_ENCODING_ASCII (&OnigEncodingASCII) #define ONIG_ENCODING_ISO_8859_1 (&OnigEncodingISO_8859_1) #define ONIG_ENCODING_ISO_8859_2 (&OnigEncodingISO_8859_2) #define ONIG_ENCODING_ISO_8859_3 (&OnigEncodingISO_8859_3) #define ONIG_ENCODING_ISO_8859_4 (&OnigEncodingISO_8859_4) #define ONIG_ENCODING_ISO_8859_5 (&OnigEncodingISO_8859_5) #define ONIG_ENCODING_ISO_8859_6 (&OnigEncodingISO_8859_6) #define ONIG_ENCODING_ISO_8859_7 (&OnigEncodingISO_8859_7) #define ONIG_ENCODING_ISO_8859_8 (&OnigEncodingISO_8859_8) #define ONIG_ENCODING_ISO_8859_9 (&OnigEncodingISO_8859_9) #define ONIG_ENCODING_ISO_8859_10 (&OnigEncodingISO_8859_10) #define ONIG_ENCODING_ISO_8859_11 (&OnigEncodingISO_8859_11) #define ONIG_ENCODING_ISO_8859_13 (&OnigEncodingISO_8859_13) #define ONIG_ENCODING_ISO_8859_14 (&OnigEncodingISO_8859_14) #define ONIG_ENCODING_ISO_8859_15 (&OnigEncodingISO_8859_15) #define ONIG_ENCODING_ISO_8859_16 (&OnigEncodingISO_8859_16) #define ONIG_ENCODING_UTF8 (&OnigEncodingUTF8) #define ONIG_ENCODING_UTF16_BE (&OnigEncodingUTF16_BE) #define ONIG_ENCODING_UTF16_LE (&OnigEncodingUTF16_LE) #define ONIG_ENCODING_UTF32_BE (&OnigEncodingUTF32_BE) #define ONIG_ENCODING_UTF32_LE (&OnigEncodingUTF32_LE) #define ONIG_ENCODING_EUC_JP (&OnigEncodingEUC_JP) #define ONIG_ENCODING_EUC_TW (&OnigEncodingEUC_TW) #define ONIG_ENCODING_EUC_KR (&OnigEncodingEUC_KR) #define ONIG_ENCODING_EUC_CN (&OnigEncodingEUC_CN) #define ONIG_ENCODING_SJIS (&OnigEncodingSJIS) #define ONIG_ENCODING_KOI8 (&OnigEncodingKOI8) #define ONIG_ENCODING_KOI8_R (&OnigEncodingKOI8_R) #define ONIG_ENCODING_CP1251 (&OnigEncodingCP1251) #define ONIG_ENCODING_BIG5 (&OnigEncodingBIG5) #define ONIG_ENCODING_GB18030 (&OnigEncodingGB18030) #define ONIG_ENCODING_UNDEF ((OnigEncoding )0) /* work size */ #define ONIGENC_CODE_TO_MBC_MAXLEN 7 #define ONIGENC_MBC_CASE_FOLD_MAXLEN 18 /* 18: 6(max-byte) * 3(case-fold chars) */ /* character types */ #define ONIGENC_CTYPE_NEWLINE 0 #define ONIGENC_CTYPE_ALPHA 1 #define ONIGENC_CTYPE_BLANK 2 #define ONIGENC_CTYPE_CNTRL 3 #define ONIGENC_CTYPE_DIGIT 4 #define ONIGENC_CTYPE_GRAPH 5 #define ONIGENC_CTYPE_LOWER 6 #define ONIGENC_CTYPE_PRINT 7 #define ONIGENC_CTYPE_PUNCT 8 #define ONIGENC_CTYPE_SPACE 9 #define ONIGENC_CTYPE_UPPER 10 #define ONIGENC_CTYPE_XDIGIT 11 #define ONIGENC_CTYPE_WORD 12 #define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */ #define ONIGENC_CTYPE_ASCII 14 #define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII #define onig_enc_len(enc,p,end) ONIGENC_MBC_ENC_LEN(enc,p) #define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF) #define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1) #define ONIGENC_IS_MBC_HEAD(enc,p) (ONIGENC_MBC_ENC_LEN(enc,p) != 1) #define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128) #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) #define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \ (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf) #define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \ (enc)->is_allowed_reverse_match(s,end) #define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \ (enc)->left_adjust_char_head(start, s) #define ONIGENC_IS_VALID_MBC_STRING(enc,s,end) \ (enc)->is_valid_mbc_string(s,end) #define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \ (enc)->apply_all_case_fold(case_fold_flag,f,arg) #define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \ (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs) #define ONIGENC_STEP_BACK(enc,start,s,n) \ onigenc_step_back((enc),(start),(s),(n)) #define ONIGENC_MBC_ENC_LEN(enc,p) (enc)->mbc_enc_len(p) #define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len) #define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc) #define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len) #define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end)) #define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end)) #define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code) #define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf) #define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \ (enc)->property_name_to_ctype(enc,p,end) #define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype) #define ONIGENC_IS_CODE_NEWLINE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE) #define ONIGENC_IS_CODE_GRAPH(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH) #define ONIGENC_IS_CODE_PRINT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT) #define ONIGENC_IS_CODE_ALNUM(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM) #define ONIGENC_IS_CODE_ALPHA(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA) #define ONIGENC_IS_CODE_LOWER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER) #define ONIGENC_IS_CODE_UPPER(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER) #define ONIGENC_IS_CODE_CNTRL(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL) #define ONIGENC_IS_CODE_PUNCT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT) #define ONIGENC_IS_CODE_SPACE(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE) #define ONIGENC_IS_CODE_BLANK(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK) #define ONIGENC_IS_CODE_DIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT) #define ONIGENC_IS_CODE_XDIGIT(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT) #define ONIGENC_IS_CODE_WORD(enc,code) \ ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD) #define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \ (enc)->get_ctype_code_range(ctype,sbout,ranges) ONIG_EXTERN OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n)); /* encoding API */ ONIG_EXTERN int onigenc_init P_((void)); ONIG_EXTERN int onig_initialize_encoding P_((OnigEncoding enc)); ONIG_EXTERN int onigenc_set_default_encoding P_((OnigEncoding enc)); ONIG_EXTERN OnigEncoding onigenc_get_default_encoding P_((void)); ONIG_EXTERN void onigenc_set_default_caseconv_table P_((const OnigUChar* table)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev)); ONIG_EXTERN OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s)); ONIG_EXTERN int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end)); ONIG_EXTERN int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p)); ONIG_EXTERN int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p)); ONIG_EXTERN int onigenc_is_valid_mbc_string P_((OnigEncoding enc, const OnigUChar* s, const OnigUChar* end)); /* PART: regular expression */ /* config parameters */ #define ONIG_NREGION 10 #define ONIG_MAX_CAPTURE_NUM 2147483647 /* 2**31 - 1 */ #define ONIG_MAX_BACKREF_NUM 1000 #define ONIG_MAX_REPEAT_NUM 100000 #define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000 /* constants */ #define ONIG_MAX_ERROR_MESSAGE_LEN 90 typedef unsigned int OnigOptionType; #define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE /* 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) #define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1) #define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1) #define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1) #define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1) #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_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)) #define ONIG_IS_OPTION_ON(options,option) ((options) & (option)) /* syntax */ typedef struct { unsigned int op; unsigned int op2; unsigned int behavior; OnigOptionType options; /* default option */ OnigMetaCharTableType meta_char_table; } OnigSyntaxType; ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic; ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended; ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs; ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep; ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex; ONIG_EXTERN OnigSyntaxType OnigSyntaxJava; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl; ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG; ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby; ONIG_EXTERN OnigSyntaxType OnigSyntaxOniguruma; /* predefined syntaxes (see regsyntax.c) */ #define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS) #define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic) #define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended) #define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs) #define ONIG_SYNTAX_GREP (&OnigSyntaxGrep) #define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex) #define ONIG_SYNTAX_JAVA (&OnigSyntaxJava) #define ONIG_SYNTAX_PERL (&OnigSyntaxPerl) #define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG) #define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby) #define ONIG_SYNTAX_ONIGURUMA (&OnigSyntaxOniguruma) /* default syntax */ ONIG_EXTERN OnigSyntaxType* OnigDefaultSyntax; #define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax /* syntax (operators) */ #define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0) #define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1) /* . */ #define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2) /* * */ #define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3) #define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4) /* + */ #define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5) #define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6) /* ? */ #define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7) #define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8) /* {lower,upper} */ #define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9) /* \{lower,upper\} */ #define ONIG_SYN_OP_VBAR_ALT (1U<<10) /* | */ #define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11) /* \| */ #define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12) /* (...) */ #define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13) /* \(...\) */ #define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14) /* \A, \Z, \z */ #define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15) /* \G */ #define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16) /* \num */ #define ONIG_SYN_OP_BRACKET_CC (1U<<17) /* [...] */ #define ONIG_SYN_OP_ESC_W_WORD (1U<<18) /* \w, \W */ #define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19) /* \<. \> */ #define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20) /* \b, \B */ #define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21) /* \s, \S */ #define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22) /* \d, \D */ #define ONIG_SYN_OP_LINE_ANCHOR (1U<<23) /* ^, $ */ #define ONIG_SYN_OP_POSIX_BRACKET (1U<<24) /* [:xxxx:] */ #define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25) /* ??,*?,+?,{n,m}? */ #define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26) /* \n,\r,\t,\a ... */ #define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27) /* \cx */ #define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */ #define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */ #define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */ #define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{1OOOOOOOOOO} */ #define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */ #define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */ #define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */ #define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */ #define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */ #define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */ #define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7) /* (?...) */ #define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8) /* \k */ #define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9) /* \g, \g */ #define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10) /* (?@..),(?@..) */ #define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11) /* \C-x */ #define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12) /* \M-x */ #define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13) /* \v as VTAB */ #define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14) /* \uHHHH */ #define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15) /* \`, \' */ #define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16) /* \p{...}, \P{...} */ #define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */ /* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */ #define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */ #define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */ #define ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE (1U<<21) /* (?(n)) (?(...)...|...) */ #define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<22) /* \K */ #define ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE (1U<<23) /* \R \r\n else [\x0a-\x0d] */ #define ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT (1U<<24) /* \N (?-m:.), \O (?m:.) */ #define ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP (1U<<25) /* (?~...) */ #define ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER (1U<<26) /* \X \y \Y */ #define ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL (1U<<27) /* (?R), (?&name)... */ /* syntax (behavior) */ #define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */ #define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0) /* ?, *, +, {n,m} */ #define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1) /* error or ignore */ #define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2) /* ...)... */ #define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3) /* {??? */ #define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4) /* {,n} => {0,n} */ #define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5) /* /(\1)/,/\1()/ ..*/ #define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6) /* (?<=a|bc) */ #define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */ #define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?)(?) */ #define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */ /* syntax (behavior) in char class [...] */ #define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */ #define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21) /* [..\w..] etc.. */ #define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22) #define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23) /* [0-9-a]=[0-9\-a] */ /* syntax (behavior) warning */ #define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24) /* [,-,] */ #define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25) /* (?:a*)+ */ /* meta character specifiers (onig_set_meta_char()) */ #define ONIG_META_CHAR_ESCAPE 0 #define ONIG_META_CHAR_ANYCHAR 1 #define ONIG_META_CHAR_ANYTIME 2 #define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3 #define ONIG_META_CHAR_ONE_OR_MORE_TIME 4 #define ONIG_META_CHAR_ANYCHAR_ANYTIME 5 #define ONIG_INEFFECTIVE_META_CHAR 0 /* error codes */ #define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000) /* normal return */ #define ONIG_NORMAL 0 #define ONIG_MISMATCH -1 #define ONIG_NO_SUPPORT_CONFIG -2 /* internal error */ #define ONIGERR_MEMORY -5 #define ONIGERR_TYPE_BUG -6 #define ONIGERR_PARSER_BUG -11 #define ONIGERR_STACK_BUG -12 #define ONIGERR_UNDEFINED_BYTECODE -13 #define ONIGERR_UNEXPECTED_BYTECODE -14 #define ONIGERR_MATCH_STACK_LIMIT_OVER -15 #define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16 #define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21 #define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22 #define ONIGERR_FAIL_TO_INITIALIZE -23 /* general error */ #define ONIGERR_INVALID_ARGUMENT -30 /* syntax error */ #define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100 #define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101 #define ONIGERR_EMPTY_CHAR_CLASS -102 #define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103 #define ONIGERR_END_PATTERN_AT_ESCAPE -104 #define ONIGERR_END_PATTERN_AT_META -105 #define ONIGERR_END_PATTERN_AT_CONTROL -106 #define ONIGERR_META_CODE_SYNTAX -108 #define ONIGERR_CONTROL_CODE_SYNTAX -109 #define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110 #define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111 #define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113 #define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114 #define ONIGERR_NESTED_REPEAT_OPERATOR -115 #define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116 #define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117 #define ONIGERR_END_PATTERN_IN_GROUP -118 #define ONIGERR_UNDEFINED_GROUP_OPTION -119 #define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121 #define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122 #define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123 /* values error (syntax error) */ #define ONIGERR_TOO_BIG_NUMBER -200 #define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201 #define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202 #define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203 #define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204 #define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205 #define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206 #define ONIGERR_TOO_BIG_BACKREF_NUMBER -207 #define ONIGERR_INVALID_BACKREF -208 #define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209 #define ONIGERR_TOO_MANY_CAPTURES -210 #define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212 #define ONIGERR_EMPTY_GROUP_NAME -214 #define ONIGERR_INVALID_GROUP_NAME -215 #define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216 #define ONIGERR_UNDEFINED_NAME_REFERENCE -217 #define ONIGERR_UNDEFINED_GROUP_REFERENCE -218 #define ONIGERR_MULTIPLEX_DEFINED_NAME -219 #define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220 #define ONIGERR_NEVER_ENDING_RECURSION -221 #define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222 #define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223 #define ONIGERR_INVALID_IF_ELSE_SYNTAX -224 #define ONIGERR_INVALID_ABSENT_GROUP_PATTERN -225 #define ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN -226 #define ONIGERR_INVALID_CODE_POINT_VALUE -400 #define ONIGERR_INVALID_WIDE_CHAR_VALUE -400 #define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401 #define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402 #define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403 #define ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS -404 #define ONIGERR_TOO_LONG_PROPERTY_NAME -405 #define ONIGERR_LIBRARY_IS_NOT_INITIALIZED -500 /* errors related to thread */ /* #define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT -1001 */ /* must be smaller than MEM_STATUS_BITS_NUM (unsigned int * 8) */ #define ONIG_MAX_CAPTURE_HISTORY_GROUP 31 #define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \ ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i]) typedef struct OnigCaptureTreeNodeStruct { int group; /* group number */ int beg; int end; int allocated; int num_childs; struct OnigCaptureTreeNodeStruct** childs; } OnigCaptureTreeNode; /* match result region type */ struct re_registers { int allocated; int num_regs; int* beg; int* end; /* extended */ OnigCaptureTreeNode* history_root; /* capture history tree root */ }; /* capture tree traverse */ #define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1 #define ONIG_TRAVERSE_CALLBACK_AT_LAST 2 #define ONIG_TRAVERSE_CALLBACK_AT_BOTH \ ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST ) #define ONIG_REGION_NOTPOS -1 typedef struct re_registers OnigRegion; typedef struct { OnigEncoding enc; OnigUChar* par; OnigUChar* par_end; } OnigErrorInfo; typedef struct { int lower; int upper; } OnigRepeatRange; typedef void (*OnigWarnFunc) P_((const char* s)); extern void onig_null_warn P_((const char* s)); #define ONIG_NULL_WARN onig_null_warn #define ONIG_CHAR_TABLE_SIZE 256 typedef struct re_pattern_buffer { /* common members of BBuf(bytes-buffer) */ unsigned char* p; /* compiled pattern */ unsigned int used; /* used space for p */ unsigned int alloc; /* allocated space for p */ int num_mem; /* used memory(...) num counted from 1 */ int num_repeat; /* OP_REPEAT/OP_REPEAT_NG id-counter */ int num_null_check; /* OP_EMPTY_CHECK_START/END id counter */ int num_comb_exp_check; /* combination explosion check */ int num_call; /* number of subexp call */ unsigned int capture_history; /* (?@...) flag (1-31) */ unsigned int bt_mem_start; /* need backtrack flag */ unsigned int bt_mem_end; /* need backtrack flag */ int stack_pop_level; int repeat_range_alloc; OnigRepeatRange* repeat_range; OnigEncoding enc; OnigOptionType options; OnigSyntaxType* syntax; OnigCaseFoldType case_fold_flag; void* name_table; /* optimization info (string search, char-map and anchors) */ int optimize; /* optimize flag */ int threshold_len; /* search str-length for apply optimize */ int anchor; /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */ OnigLen anchor_dmin; /* (SEMI_)END_BUF anchor distance */ OnigLen anchor_dmax; /* (SEMI_)END_BUF anchor distance */ int sub_anchor; /* start-anchor for exact or map */ unsigned char *exact; unsigned char *exact_end; unsigned char map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */ int *int_map; /* BM skip for exact_len > 255 */ int *int_map_backward; /* BM skip for backward search */ OnigLen dmin; /* min-distance of exact or map */ OnigLen dmax; /* max-distance of exact or map */ /* regex_t link chain */ struct re_pattern_buffer* chain; /* escape compile-conflict */ } OnigRegexType; typedef OnigRegexType* OnigRegex; #ifndef ONIG_ESCAPE_REGEX_T_COLLISION typedef OnigRegexType regex_t; #endif typedef struct { int num_of_elements; OnigEncoding pattern_enc; OnigEncoding target_enc; OnigSyntaxType* syntax; OnigOptionType option; OnigCaseFoldType case_fold_flag; } OnigCompileInfo; /* Oniguruma Native API */ ONIG_EXTERN int onig_initialize P_((OnigEncoding encodings[], int n)); /* onig_init(): deprecated function. Use onig_initialize(). */ ONIG_EXTERN int onig_init P_((void)); ONIG_EXTERN int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...)); ONIG_EXTERN void onig_set_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN void onig_set_verb_warn_func P_((OnigWarnFunc f)); ONIG_EXTERN int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax)); int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo)); ONIG_EXTERN int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo)); ONIG_EXTERN void onig_free P_((OnigRegex)); ONIG_EXTERN void onig_free_body P_((OnigRegex)); ONIG_EXTERN int onig_scan(regex_t* reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg); ONIG_EXTERN int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option)); ONIG_EXTERN OnigRegion* onig_region_new P_((void)); ONIG_EXTERN void onig_region_init P_((OnigRegion* region)); ONIG_EXTERN void onig_region_free P_((OnigRegion* region, int free_self)); ONIG_EXTERN void onig_region_copy P_((OnigRegion* to, OnigRegion* from)); ONIG_EXTERN void onig_region_clear P_((OnigRegion* region)); ONIG_EXTERN int onig_region_resize P_((OnigRegion* region, int n)); ONIG_EXTERN int onig_region_set P_((OnigRegion* region, int at, int beg, int end)); ONIG_EXTERN int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums)); ONIG_EXTERN int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region)); ONIG_EXTERN int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg)); ONIG_EXTERN int onig_number_of_names P_((OnigRegex reg)); ONIG_EXTERN int onig_number_of_captures P_((OnigRegex reg)); ONIG_EXTERN int onig_number_of_capture_histories P_((OnigRegex reg)); ONIG_EXTERN OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region)); ONIG_EXTERN int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg)); ONIG_EXTERN int onig_noname_group_capture_is_active P_((OnigRegex reg)); ONIG_EXTERN OnigEncoding onig_get_encoding P_((OnigRegex reg)); ONIG_EXTERN OnigOptionType onig_get_options P_((OnigRegex reg)); ONIG_EXTERN OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg)); ONIG_EXTERN OnigSyntaxType* onig_get_syntax P_((OnigRegex reg)); ONIG_EXTERN int onig_set_default_syntax P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from)); ONIG_EXTERN unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax)); ONIG_EXTERN unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax)); ONIG_EXTERN OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax)); ONIG_EXTERN void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op)); ONIG_EXTERN void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2)); ONIG_EXTERN void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior)); ONIG_EXTERN void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options)); ONIG_EXTERN int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code)); ONIG_EXTERN void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from)); ONIG_EXTERN OnigCaseFoldType onig_get_default_case_fold_flag P_((void)); ONIG_EXTERN int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag)); ONIG_EXTERN unsigned int onig_get_match_stack_limit_size P_((void)); ONIG_EXTERN int onig_set_match_stack_limit_size P_((unsigned int size)); ONIG_EXTERN unsigned int onig_get_parse_depth_limit P_((void)); ONIG_EXTERN int onig_set_capture_num_limit P_((int num)); ONIG_EXTERN int onig_set_parse_depth_limit P_((unsigned int depth)); ONIG_EXTERN int onig_unicode_define_user_property P_((const char* name, OnigCodePoint* ranges)); ONIG_EXTERN int onig_end P_((void)); ONIG_EXTERN const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); #ifdef __cplusplus } #endif #endif /* ONIGURUMA_H */ oniguruma-6.7.0/src/regcomp.c000066400000000000000000005373211321242335200161310ustar00rootroot00000000000000/********************************************************************** regcomp.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regparse.h" OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN; #if 0 typedef struct { int n; int alloc; int* v; } int_stack; static int make_int_stack(int_stack** rs, int init_size) { int_stack* s; int* v; *rs = 0; s = xmalloc(sizeof(*s)); if (IS_NULL(s)) return ONIGERR_MEMORY; v = (int* )xmalloc(sizeof(int) * init_size); if (IS_NULL(v)) { xfree(s); return ONIGERR_MEMORY; } s->n = 0; s->alloc = init_size; s->v = v; *rs = s; return ONIG_NORMAL; } static void free_int_stack(int_stack* s) { if (IS_NOT_NULL(s)) { if (IS_NOT_NULL(s->v)) xfree(s->v); xfree(s); } } static int int_stack_push(int_stack* s, int v) { if (s->n >= s->alloc) { int new_size = s->alloc * 2; int* nv = (int* )xrealloc(s->v, new_size); if (IS_NULL(nv)) return ONIGERR_MEMORY; s->alloc = new_size; s->v = nv; } s->v[s->n] = v; s->n++; return ONIG_NORMAL; } static int int_stack_pop(int_stack* s) { int v; #ifdef ONIG_DEBUG if (s->n <= 0) { fprintf(stderr, "int_stack_pop: fail empty. %p\n", s); return 0; } #endif v = s->v[s->n]; s->n--; return v; } #endif extern OnigCaseFoldType onig_get_default_case_fold_flag(void) { return OnigDefaultCaseFoldFlag; } extern int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag) { OnigDefaultCaseFoldFlag = case_fold_flag; return 0; } #ifndef PLATFORM_UNALIGNED_WORD_ACCESS static unsigned char PadBuf[WORD_ALIGNMENT_SIZE]; #endif static UChar* str_dup(UChar* s, UChar* end) { int len = (int )(end - s); if (len > 0) { UChar* r = (UChar* )xmalloc(len + 1); CHECK_NULL_RETURN(r); xmemcpy(r, s, len); r[len] = (UChar )0; return r; } else return NULL; } static void swap_node(Node* a, Node* b) { Node c; c = *a; *a = *b; *b = c; if (NODE_TYPE(a) == NODE_STRING) { StrNode* sn = STR_(a); if (sn->capa == 0) { int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } } if (NODE_TYPE(b) == NODE_STRING) { StrNode* sn = STR_(b); if (sn->capa == 0) { int len = (int )(sn->end - sn->s); sn->s = sn->buf; sn->end = sn->s + len; } } } static OnigLen distance_add(OnigLen d1, OnigLen d2) { if (d1 == INFINITE_LEN || d2 == INFINITE_LEN) return INFINITE_LEN; else { if (d1 <= INFINITE_LEN - d2) return d1 + d2; else return INFINITE_LEN; } } static OnigLen distance_multiply(OnigLen d, int m) { if (m == 0) return 0; if (d < INFINITE_LEN / m) return d * m; else return INFINITE_LEN; } static int bitset_is_empty(BitSetRef bs) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { if (bs[i] != 0) return 0; } return 1; } #ifdef ONIG_DEBUG static int bitset_on_num(BitSetRef bs) { int i, n; n = 0; for (i = 0; i < SINGLE_BYTE_SIZE; i++) { if (BITSET_AT(bs, i)) n++; } return n; } #endif extern int onig_bbuf_init(BBuf* buf, int size) { if (size <= 0) { size = 0; buf->p = NULL; } else { buf->p = (UChar* )xmalloc(size); if (IS_NULL(buf->p)) return(ONIGERR_MEMORY); } buf->alloc = size; buf->used = 0; return 0; } #ifdef USE_CALL static int unset_addr_list_init(UnsetAddrList* list, int size) { UnsetAddr* p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size); CHECK_NULL_RETURN_MEMERR(p); list->num = 0; list->alloc = size; list->us = p; return 0; } static void unset_addr_list_end(UnsetAddrList* list) { if (IS_NOT_NULL(list->us)) xfree(list->us); } static int unset_addr_list_add(UnsetAddrList* list, int offset, struct _Node* node) { UnsetAddr* p; int size; if (list->num >= list->alloc) { size = list->alloc * 2; p = (UnsetAddr* )xrealloc(list->us, sizeof(UnsetAddr) * size); CHECK_NULL_RETURN_MEMERR(p); list->alloc = size; list->us = p; } list->us[list->num].offset = offset; list->us[list->num].target = node; list->num++; return 0; } #endif /* USE_CALL */ static int add_opcode(regex_t* reg, int opcode) { BB_ADD1(reg, opcode); return 0; } #ifdef USE_COMBINATION_EXPLOSION_CHECK static int add_state_check_num(regex_t* reg, int num) { StateCheckNumType n = (StateCheckNumType )num; BB_ADD(reg, &n, SIZE_STATE_CHECK_NUM); return 0; } #endif static int add_rel_addr(regex_t* reg, int addr) { RelAddrType ra = (RelAddrType )addr; BB_ADD(reg, &ra, SIZE_RELADDR); return 0; } static int add_abs_addr(regex_t* reg, int addr) { AbsAddrType ra = (AbsAddrType )addr; BB_ADD(reg, &ra, SIZE_ABSADDR); return 0; } static int add_length(regex_t* reg, int len) { LengthType l = (LengthType )len; BB_ADD(reg, &l, SIZE_LENGTH); return 0; } static int add_mem_num(regex_t* reg, int num) { MemNumType n = (MemNumType )num; BB_ADD(reg, &n, SIZE_MEMNUM); return 0; } #if 0 static int add_pointer(regex_t* reg, void* addr) { PointerType ptr = (PointerType )addr; BB_ADD(reg, &ptr, SIZE_POINTER); return 0; } #endif static int add_option(regex_t* reg, OnigOptionType option) { BB_ADD(reg, &option, SIZE_OPTION); return 0; } static int add_save_type(regex_t* reg, enum SaveType type) { SaveType t = (SaveType )type; BB_ADD(reg, &t, SIZE_SAVE_TYPE); return 0; } static int add_update_var_type(regex_t* reg, enum UpdateVarType type) { UpdateVarType t = (UpdateVarType )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; } static int add_opcode_rel_addr(regex_t* reg, int opcode, int addr) { int r; r = add_opcode(reg, opcode); if (r != 0) return r; r = add_rel_addr(reg, addr); return r; } static int add_bytes(regex_t* reg, UChar* bytes, int len) { BB_ADD(reg, bytes, len); return 0; } static int add_bitset(regex_t* reg, BitSetRef bs) { BB_ADD(reg, bs, SIZE_BITSET); return 0; } static int add_opcode_option(regex_t* reg, int opcode, OnigOptionType option) { int r; r = add_opcode(reg, opcode); if (r != 0) return r; r = add_option(reg, option); return r; } static int compile_length_tree(Node* node, regex_t* reg); static int compile_tree(Node* node, regex_t* reg, ScanEnv* env); #define IS_NEED_STR_LEN_OP_EXACT(op) \ ((op) == OP_EXACTN || (op) == OP_EXACTMB2N ||\ (op) == OP_EXACTMB3N || (op) == OP_EXACTMBN || (op) == OP_EXACTN_IC) static int select_str_opcode(int mb_len, int str_len, int ignore_case) { int op; if (ignore_case) { switch (str_len) { case 1: op = OP_EXACT1_IC; break; default: op = OP_EXACTN_IC; break; } } else { switch (mb_len) { case 1: switch (str_len) { case 1: op = OP_EXACT1; break; case 2: op = OP_EXACT2; break; case 3: op = OP_EXACT3; break; case 4: op = OP_EXACT4; break; case 5: op = OP_EXACT5; break; default: op = OP_EXACTN; break; } break; case 2: switch (str_len) { case 1: op = OP_EXACTMB2N1; break; case 2: op = OP_EXACTMB2N2; break; case 3: op = OP_EXACTMB2N3; break; default: op = OP_EXACTMB2N; break; } break; case 3: op = OP_EXACTMB3N; break; default: op = OP_EXACTMBN; break; } } return op; } static int compile_tree_empty_check(Node* node, regex_t* reg, int empty_info, ScanEnv* env) { int r; int saved_num_null_check = reg->num_null_check; if (empty_info != QUANT_BODY_IS_NOT_EMPTY) { r = add_opcode(reg, OP_EMPTY_CHECK_START); if (r != 0) return r; r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */ if (r != 0) return r; reg->num_null_check++; } r = compile_tree(node, reg, env); if (r != 0) return r; if (empty_info != QUANT_BODY_IS_NOT_EMPTY) { if (empty_info == QUANT_BODY_IS_EMPTY) r = add_opcode(reg, OP_EMPTY_CHECK_END); else if (empty_info == QUANT_BODY_IS_EMPTY_MEM) r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST); else if (empty_info == QUANT_BODY_IS_EMPTY_REC) r = add_opcode(reg, OP_EMPTY_CHECK_END_MEMST_PUSH); if (r != 0) return r; r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */ } return r; } #ifdef USE_CALL static int compile_call(CallNode* node, regex_t* reg, ScanEnv* env) { int r; r = add_opcode(reg, OP_CALL); if (r != 0) return r; r = unset_addr_list_add(env->unset_addr_list, BB_GET_OFFSET_POS(reg), NODE_CALL_BODY(node)); if (r != 0) return r; r = add_abs_addr(reg, 0 /*dummy addr.*/); return r; } #endif static int compile_tree_n_times(Node* node, int n, regex_t* reg, ScanEnv* env) { int i, r; for (i = 0; i < n; i++) { r = compile_tree(node, reg, env); if (r != 0) return r; } return 0; } static int add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, int str_len, regex_t* reg ARG_UNUSED, int ignore_case) { int len; int op = select_str_opcode(mb_len, str_len, ignore_case); len = SIZE_OPCODE; if (op == OP_EXACTMBN) len += SIZE_LENGTH; if (IS_NEED_STR_LEN_OP_EXACT(op)) len += SIZE_LENGTH; len += mb_len * str_len; return len; } static int add_compile_string(UChar* s, int mb_len, int str_len, regex_t* reg, int ignore_case) { int op = select_str_opcode(mb_len, str_len, ignore_case); add_opcode(reg, op); if (op == OP_EXACTMBN) add_length(reg, mb_len); if (IS_NEED_STR_LEN_OP_EXACT(op)) { if (op == OP_EXACTN_IC) add_length(reg, mb_len * str_len); else add_length(reg, str_len); } add_bytes(reg, s, mb_len * str_len); return 0; } static int compile_length_string_node(Node* node, regex_t* reg) { int rlen, r, len, prev_len, slen, ambig; UChar *p, *prev; StrNode* sn; OnigEncoding enc = reg->enc; sn = STR_(node); if (sn->end <= sn->s) return 0; ambig = NODE_STRING_IS_AMBIG(node); p = prev = sn->s; prev_len = enclen(enc, p); p += prev_len; slen = 1; rlen = 0; for (; p < sn->end; ) { len = enclen(enc, p); if (len == prev_len) { slen++; } else { r = add_compile_string_length(prev, prev_len, slen, reg, ambig); rlen += r; prev = p; slen = 1; prev_len = len; } p += len; } r = add_compile_string_length(prev, prev_len, slen, reg, ambig); rlen += r; return rlen; } static int compile_length_string_raw_node(StrNode* sn, regex_t* reg) { if (sn->end <= sn->s) return 0; return add_compile_string_length(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0); } static int compile_string_node(Node* node, regex_t* reg) { int r, len, prev_len, slen, ambig; UChar *p, *prev, *end; StrNode* sn; OnigEncoding enc = reg->enc; sn = STR_(node); if (sn->end <= sn->s) return 0; end = sn->end; ambig = NODE_STRING_IS_AMBIG(node); p = prev = sn->s; prev_len = enclen(enc, p); p += prev_len; slen = 1; for (; p < end; ) { len = enclen(enc, p); if (len == prev_len) { slen++; } else { r = add_compile_string(prev, prev_len, slen, reg, ambig); if (r != 0) return r; prev = p; slen = 1; prev_len = len; } p += len; } return add_compile_string(prev, prev_len, slen, reg, ambig); } static int compile_string_raw_node(StrNode* sn, regex_t* reg) { if (sn->end <= sn->s) return 0; return add_compile_string(sn->s, 1 /* sb */, (int )(sn->end - sn->s), reg, 0); } static int add_multi_byte_cclass(BBuf* mbuf, regex_t* reg) { #ifdef PLATFORM_UNALIGNED_WORD_ACCESS add_length(reg, mbuf->used); return add_bytes(reg, mbuf->p, mbuf->used); #else int r, pad_size; 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)); if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); r = add_bytes(reg, mbuf->p, mbuf->used); /* padding for return value from compile_length_cclass_node() to be fix. */ pad_size = (WORD_ALIGNMENT_SIZE - 1) - pad_size; if (pad_size != 0) add_bytes(reg, PadBuf, pad_size); return r; #endif } static int compile_length_cclass_node(CClassNode* cc, regex_t* reg) { int len; if (IS_NULL(cc->mbuf)) { len = SIZE_OPCODE + SIZE_BITSET; } else { if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { len = SIZE_OPCODE; } else { len = SIZE_OPCODE + SIZE_BITSET; } #ifdef PLATFORM_UNALIGNED_WORD_ACCESS len += SIZE_LENGTH + cc->mbuf->used; #else len += SIZE_LENGTH + cc->mbuf->used + (WORD_ALIGNMENT_SIZE - 1); #endif } return len; } static int compile_cclass_node(CClassNode* cc, regex_t* reg) { int r; if (IS_NULL(cc->mbuf)) { if (IS_NCCLASS_NOT(cc)) add_opcode(reg, OP_CCLASS_NOT); else add_opcode(reg, OP_CCLASS); r = add_bitset(reg, cc->bs); } else { if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) { if (IS_NCCLASS_NOT(cc)) add_opcode(reg, OP_CCLASS_MB_NOT); else add_opcode(reg, OP_CCLASS_MB); r = add_multi_byte_cclass(cc->mbuf, reg); } else { if (IS_NCCLASS_NOT(cc)) add_opcode(reg, OP_CCLASS_MIX_NOT); else add_opcode(reg, OP_CCLASS_MIX); r = add_bitset(reg, cc->bs); if (r != 0) return r; r = add_multi_byte_cclass(cc->mbuf, reg); } } return r; } static int entry_repeat_range(regex_t* reg, int id, int lower, int upper) { #define REPEAT_RANGE_ALLOC 4 OnigRepeatRange* p; if (reg->repeat_range_alloc == 0) { p = (OnigRepeatRange* )xmalloc(sizeof(OnigRepeatRange) * REPEAT_RANGE_ALLOC); CHECK_NULL_RETURN_MEMERR(p); reg->repeat_range = p; reg->repeat_range_alloc = REPEAT_RANGE_ALLOC; } else if (reg->repeat_range_alloc <= id) { int n; n = reg->repeat_range_alloc + REPEAT_RANGE_ALLOC; p = (OnigRepeatRange* )xrealloc(reg->repeat_range, sizeof(OnigRepeatRange) * n); CHECK_NULL_RETURN_MEMERR(p); reg->repeat_range = p; reg->repeat_range_alloc = n; } else { p = reg->repeat_range; } p[id].lower = lower; p[id].upper = (IS_REPEAT_INFINITE(upper) ? 0x7fffffff : upper); return 0; } static int compile_range_repeat_node(QuantNode* qn, int target_len, int empty_info, regex_t* reg, ScanEnv* env) { int r; int num_repeat = reg->num_repeat; r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG); if (r != 0) return r; r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ reg->num_repeat++; if (r != 0) return r; r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC); if (r != 0) return r; r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper); if (r != 0) return r; r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; if ( #ifdef USE_CALL NODE_IS_IN_MULTI_ENTRY(qn) || #endif NODE_IS_IN_REAL_REPEAT(qn)) { r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG); } else { r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG); } if (r != 0) return r; r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */ return r; } static int is_anychar_star_quantifier(QuantNode* qn) { if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) && NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn))) return 1; else return 0; } #define QUANTIFIER_EXPAND_LIMIT_SIZE 50 #define CKN_ON (ckn > 0) #ifdef USE_COMBINATION_EXPLOSION_CHECK static int compile_length_quantifier_node(QuantNode* qn, regex_t* reg) { int len, mod_tlen, cklen; int ckn; int infinite = IS_REPEAT_INFINITE(qn->upper); int empty_info = qn->body_empty_info; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); cklen = (CKN_ON ? SIZE_STATE_CHECK_NUM: 0); /* anychar repeat */ if (NODE_IS_ANYCHAR(NODE_QUANT_BODY(qn))) { if (qn->greedy && infinite) { if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen; else return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen; } } if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; else mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && qn->lower <= 1) { if (qn->greedy) { if (qn->lower == 1) len = SIZE_OP_JUMP; else len = 0; len += SIZE_OP_PUSH + cklen + mod_tlen + SIZE_OP_JUMP; } else { if (qn->lower == 0) len = SIZE_OP_JUMP; else len = 0; len += mod_tlen + SIZE_OP_PUSH + cklen; } } else if (qn->upper == 0) { if (qn->is_refered != 0) /* /(?..){0}/ */ len = SIZE_OP_JUMP + tlen; else len = 0; } else if (qn->upper == 1 && qn->greedy) { if (qn->lower == 0) { if (CKN_ON) { len = SIZE_OP_STATE_CHECK_PUSH + tlen; } else { len = SIZE_OP_PUSH + tlen; } } else { len = tlen; } } else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen; } else { len = SIZE_OP_REPEAT_INC + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; if (CKN_ON) len += SIZE_OP_STATE_CHECK; } return len; } static int compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) { int r, mod_tlen; int ckn; int infinite = IS_REPEAT_INFINITE(qn->upper); int empty_info = qn->body_empty_info; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0); if (is_anychar_star_quantifier(qn)) { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) { if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); else r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); if (r != 0) return r; if (CKN_ON) { r = add_state_check_num(reg, ckn); if (r != 0) return r; } return add_bytes(reg, STR_(qn->next_head_exact)->s, 1); } else { if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) { r = add_opcode(reg, (CKN_ON ? OP_STATE_CHECK_ANYCHAR_ML_STAR : OP_ANYCHAR_ML_STAR)); } else { r = add_opcode(reg, (CKN_ON ? OP_STATE_CHECK_ANYCHAR_STAR : OP_ANYCHAR_STAR)); } if (r != 0) return r; if (CKN_ON) r = add_state_check_num(reg, ckn); return r; } } if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; else mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && qn->lower <= 1) { if (qn->greedy) { if (qn->lower == 1) { r = add_opcode_rel_addr(reg, OP_JUMP, (CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH)); if (r != 0) return r; } if (CKN_ON) { r = add_opcode(reg, OP_STATE_CHECK_PUSH); if (r != 0) return r; r = add_state_check_num(reg, ckn); if (r != 0) return r; r = add_rel_addr(reg, mod_tlen + SIZE_OP_JUMP); } else { r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); } if (r != 0) return r; r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, -(mod_tlen + (int )SIZE_OP_JUMP + (int )(CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH))); } else { if (qn->lower == 0) { r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); if (r != 0) return r; } r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; if (CKN_ON) { r = add_opcode(reg, OP_STATE_CHECK_PUSH_OR_JUMP); if (r != 0) return r; r = add_state_check_num(reg, ckn); if (r != 0) return r; r = add_rel_addr(reg, -(mod_tlen + (int )SIZE_OP_STATE_CHECK_PUSH_OR_JUMP)); } else r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); } } else if (qn->upper == 0) { if (qn->is_refered != 0) { /* /(?..){0}/ */ r = add_opcode_rel_addr(reg, OP_JUMP, tlen); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else r = 0; } else if (qn->upper == 1 && qn->greedy) { if (qn->lower == 0) { if (CKN_ON) { r = add_opcode(reg, OP_STATE_CHECK_PUSH); if (r != 0) return r; r = add_state_check_num(reg, ckn); if (r != 0) return r; r = add_rel_addr(reg, tlen); } else { r = add_opcode_rel_addr(reg, OP_PUSH, tlen); } if (r != 0) return r; } r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ if (CKN_ON) { r = add_opcode(reg, OP_STATE_CHECK_PUSH); if (r != 0) return r; r = add_state_check_num(reg, ckn); if (r != 0) return r; r = add_rel_addr(reg, SIZE_OP_JUMP); } else { r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); } if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, tlen); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else { r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env); if (CKN_ON) { if (r != 0) return r; r = add_opcode(reg, OP_STATE_CHECK); if (r != 0) return r; r = add_state_check_num(reg, ckn); } } return r; } #else /* USE_COMBINATION_EXPLOSION_CHECK */ static int compile_length_quantifier_node(QuantNode* qn, regex_t* reg) { int len, mod_tlen; int infinite = IS_REPEAT_INFINITE(qn->upper); int empty_info = qn->body_empty_info; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; /* anychar repeat */ if (is_anychar_star_quantifier(qn)) { if (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE) { if (IS_NOT_NULL(qn->next_head_exact)) return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower; else return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower; } } if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; else mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { len = SIZE_OP_JUMP; } else { len = tlen * qn->lower; } if (qn->greedy) { if (IS_NOT_NULL(qn->head_exact)) len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP; else if (IS_NOT_NULL(qn->next_head_exact)) len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP; else len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP; } else len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH; } else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ len = SIZE_OP_JUMP + tlen; } else if (!infinite && qn->greedy && (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { len = tlen * qn->lower; len += (SIZE_OP_PUSH + tlen) * (qn->upper - qn->lower); } else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ len = SIZE_OP_PUSH + SIZE_OP_JUMP + tlen; } else { len = SIZE_OP_REPEAT_INC + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM; } return len; } static int compile_quantifier_node(QuantNode* qn, regex_t* reg, ScanEnv* env) { int i, r, mod_tlen; int infinite = IS_REPEAT_INFINITE(qn->upper); int empty_info = qn->body_empty_info; int tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; if (is_anychar_star_quantifier(qn) && (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; if (IS_NOT_NULL(qn->next_head_exact)) { if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT); else r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT); if (r != 0) return r; return add_bytes(reg, STR_(qn->next_head_exact)->s, 1); } else { if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), reg))) return add_opcode(reg, OP_ANYCHAR_ML_STAR); else return add_opcode(reg, OP_ANYCHAR_STAR); } } if (empty_info == QUANT_BODY_IS_NOT_EMPTY) mod_tlen = tlen; else mod_tlen = tlen + (SIZE_OP_EMPTY_CHECK_START + SIZE_OP_EMPTY_CHECK_END); if (infinite && (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) { if (qn->greedy) { if (IS_NOT_NULL(qn->head_exact)) r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1); else if (IS_NOT_NULL(qn->next_head_exact)) r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT); else r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH); } else { r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP); } if (r != 0) return r; } else { r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; } if (qn->greedy) { if (IS_NOT_NULL(qn->head_exact)) { r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1, mod_tlen + SIZE_OP_JUMP); if (r != 0) return r; add_bytes(reg, STR_(qn->head_exact)->s, 1); r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1)); } else if (IS_NOT_NULL(qn->next_head_exact)) { r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT, mod_tlen + SIZE_OP_JUMP); if (r != 0) return r; add_bytes(reg, STR_(qn->next_head_exact)->s, 1); r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT)); } else { r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP); if (r != 0) return r; r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH)); } } else { r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen); if (r != 0) return r; r = compile_tree_empty_check(NODE_QUANT_BODY(qn), reg, empty_info, env); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH)); } } else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?..){0}/ */ r = add_opcode_rel_addr(reg, OP_JUMP, tlen); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else if (! infinite && qn->greedy && (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper <= QUANTIFIER_EXPAND_LIMIT_SIZE)) { int n = qn->upper - qn->lower; r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; for (i = 0; i < n; i++) { r = add_opcode_rel_addr(reg, OP_PUSH, (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; } } else if (! qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */ r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, tlen); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); } else { r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg, env); } return r; } #endif /* USE_COMBINATION_EXPLOSION_CHECK */ static int compile_length_option_node(EnclosureNode* node, regex_t* reg) { int tlen; OnigOptionType prev = reg->options; reg->options = node->o.options; tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); reg->options = prev; if (tlen < 0) return tlen; if (IS_DYNAMIC_OPTION(prev ^ node->option)) { return SIZE_OP_SET_OPTION_PUSH + SIZE_OP_SET_OPTION + SIZE_OP_FAIL + tlen + SIZE_OP_SET_OPTION; } else return tlen; } static int compile_option_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) { int r; OnigOptionType prev = reg->options; if (IS_DYNAMIC_OPTION(prev ^ node->o.options)) { r = add_opcode_option(reg, OP_SET_OPTION_PUSH, node->o.options); if (r != 0) return r; r = add_opcode_option(reg, OP_SET_OPTION, prev); if (r != 0) return r; r = add_opcode(reg, OP_FAIL); if (r != 0) return r; } reg->options = node->o.options; r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); reg->options = prev; if (IS_DYNAMIC_OPTION(prev ^ node->o.options)) { if (r != 0) return r; r = add_opcode_option(reg, OP_SET_OPTION, prev); } return r; } static int compile_length_enclosure_node(EnclosureNode* node, regex_t* reg) { int len; int tlen; if (node->type == ENCLOSURE_OPTION) return compile_length_option_node(node, reg); if (NODE_ENCLOSURE_BODY(node)) { tlen = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); if (tlen < 0) return tlen; } else tlen = 0; switch (node->type) { case ENCLOSURE_MEMORY: #ifdef USE_CALL if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { len = tlen + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; return len; } if (NODE_IS_CALLED(node)) { len = SIZE_OP_MEMORY_START_PUSH + tlen + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN; if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) len += (NODE_IS_RECURSION(node) ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); else len += (NODE_IS_RECURSION(node) ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); } else if (NODE_IS_RECURSION(node)) { len = SIZE_OP_MEMORY_START_PUSH; len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum) ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_REC); } else #endif { if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum)) len = SIZE_OP_MEMORY_START_PUSH; else len = SIZE_OP_MEMORY_START; len += tlen + (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum) ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END); } break; case ENCLOSURE_STOP_BACKTRACK: if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); tlen = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (tlen < 0) return tlen; len = tlen * qn->lower + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP; } else { len = SIZE_OP_ATOMIC_START + tlen + SIZE_OP_ATOMIC_END; } break; case ENCLOSURE_IF_ELSE: { Node* cond = NODE_ENCLOSURE_BODY(node); Node* Then = node->te.Then; Node* Else = node->te.Else; len = compile_length_tree(cond, reg); if (len < 0) return len; len += SIZE_OP_PUSH; len += SIZE_OP_ATOMIC_START + SIZE_OP_ATOMIC_END; if (IS_NOT_NULL(Then)) { tlen = compile_length_tree(Then, reg); if (tlen < 0) return tlen; len += tlen; } if (IS_NOT_NULL(Else)) { len += SIZE_OP_JUMP; tlen = compile_length_tree(Else, reg); if (tlen < 0) return tlen; len += tlen; } } break; default: return ONIGERR_TYPE_BUG; break; } return len; } static int get_char_length_tree(Node* node, regex_t* reg, int* len); static int compile_enclosure_memory_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) { int r; int len; #ifdef USE_CALL if (node->m.regnum == 0 && NODE_IS_CALLED(node)) { r = add_opcode(reg, OP_CALL); if (r != 0) return r; node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; NODE_STATUS_ADD(node, NST_ADDR_FIXED); r = add_abs_addr(reg, (int )node->m.called_addr); if (r != 0) return r; len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); len += SIZE_OP_RETURN; r = add_opcode_rel_addr(reg, OP_JUMP, len); if (r != 0) return r; r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_RETURN); return r; } if (NODE_IS_CALLED(node)) { r = add_opcode(reg, OP_CALL); if (r != 0) return r; node->m.called_addr = BB_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP; NODE_STATUS_ADD(node, NST_ADDR_FIXED); r = add_abs_addr(reg, (int )node->m.called_addr); if (r != 0) return r; len = compile_length_tree(NODE_ENCLOSURE_BODY(node), reg); len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN); if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) len += (NODE_IS_RECURSION(node) ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH); else len += (NODE_IS_RECURSION(node) ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END); r = add_opcode_rel_addr(reg, OP_JUMP, len); if (r != 0) return r; } #endif if (MEM_STATUS_AT0(reg->bt_mem_start, node->m.regnum)) r = add_opcode(reg, OP_MEMORY_START_PUSH); else r = add_opcode(reg, OP_MEMORY_START); if (r != 0) return r; r = add_mem_num(reg, node->m.regnum); if (r != 0) return r; r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); if (r != 0) return r; #ifdef USE_CALL if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) r = add_opcode(reg, (NODE_IS_RECURSION(node) ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH)); else r = add_opcode(reg, (NODE_IS_RECURSION(node) ? OP_MEMORY_END_REC : OP_MEMORY_END)); if (r != 0) return r; r = add_mem_num(reg, node->m.regnum); if (NODE_IS_CALLED(node)) { if (r != 0) return r; r = add_opcode(reg, OP_RETURN); } #else if (MEM_STATUS_AT0(reg->bt_mem_end, node->m.regnum)) r = add_opcode(reg, OP_MEMORY_END_PUSH); else r = add_opcode(reg, OP_MEMORY_END); if (r != 0) return r; r = add_mem_num(reg, node->m.regnum); #endif return r; } static int compile_enclosure_node(EnclosureNode* node, regex_t* reg, ScanEnv* env) { int r, len; switch (node->type) { case ENCLOSURE_MEMORY: r = compile_enclosure_memory_node(node, reg, env); break; case ENCLOSURE_OPTION: r = compile_option_node(node, reg, env); break; case ENCLOSURE_STOP_BACKTRACK: if (NODE_IS_STOP_BT_SIMPLE_REPEAT(node)) { QuantNode* qn = QUANT_(NODE_ENCLOSURE_BODY(node)); r = compile_tree_n_times(NODE_QUANT_BODY(qn), qn->lower, reg, env); if (r != 0) return r; len = compile_length_tree(NODE_QUANT_BODY(qn), reg); if (len < 0) return len; r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP + SIZE_OP_JUMP); if (r != 0) return r; r = compile_tree(NODE_QUANT_BODY(qn), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_POP); if (r != 0) return r; r = add_opcode_rel_addr(reg, OP_JUMP, -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP)); } else { r = add_opcode(reg, OP_ATOMIC_START); if (r != 0) return r; r = compile_tree(NODE_ENCLOSURE_BODY(node), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_ATOMIC_END); } break; case ENCLOSURE_IF_ELSE: { int cond_len, then_len, jump_len; Node* cond = NODE_ENCLOSURE_BODY(node); Node* Then = node->te.Then; Node* Else = node->te.Else; r = add_opcode(reg, OP_ATOMIC_START); if (r != 0) return r; cond_len = compile_length_tree(cond, reg); if (cond_len < 0) return cond_len; if (IS_NOT_NULL(Then)) { then_len = compile_length_tree(Then, reg); if (then_len < 0) return then_len; } else then_len = 0; jump_len = cond_len + then_len + SIZE_OP_ATOMIC_END; if (IS_NOT_NULL(Else)) jump_len += SIZE_OP_JUMP; r = add_opcode_rel_addr(reg, OP_PUSH, jump_len); if (r != 0) return r; r = compile_tree(cond, reg, env); if (r != 0) return r; r = add_opcode(reg, OP_ATOMIC_END); if (r != 0) return r; if (IS_NOT_NULL(Then)) { r = compile_tree(Then, reg, env); if (r != 0) return r; } if (IS_NOT_NULL(Else)) { int else_len = compile_length_tree(Else, reg); r = add_opcode_rel_addr(reg, OP_JUMP, else_len); if (r != 0) return r; r = compile_tree(Else, reg, env); } } break; default: return ONIGERR_TYPE_BUG; break; } return r; } static int compile_length_anchor_node(AnchorNode* node, regex_t* reg) { int len; int tlen = 0; if (IS_NOT_NULL(NODE_ANCHOR_BODY(node))) { tlen = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (tlen < 0) return tlen; } switch (node->type) { case ANCHOR_PREC_READ: len = SIZE_OP_PREC_READ_START + tlen + SIZE_OP_PREC_READ_END; break; case ANCHOR_PREC_READ_NOT: len = SIZE_OP_PREC_READ_NOT_START + tlen + SIZE_OP_PREC_READ_NOT_END; break; case ANCHOR_LOOK_BEHIND: len = SIZE_OP_LOOK_BEHIND + tlen; break; case ANCHOR_LOOK_BEHIND_NOT: len = SIZE_OP_LOOK_BEHIND_NOT_START + tlen + SIZE_OP_LOOK_BEHIND_NOT_END; break; case ANCHOR_WORD_BOUNDARY: case ANCHOR_NO_WORD_BOUNDARY: #ifdef USE_WORD_BEGIN_END case ANCHOR_WORD_BEGIN: case ANCHOR_WORD_END: #endif len = SIZE_OP_WORD_BOUNDARY; break; case ANCHOR_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: case ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY: len = SIZE_OPCODE; break; default: len = SIZE_OPCODE; break; } return len; } 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; case ANCHOR_END_BUF: r = add_opcode(reg, OP_END_BUF); break; case ANCHOR_BEGIN_LINE: r = add_opcode(reg, OP_BEGIN_LINE); break; case ANCHOR_END_LINE: r = add_opcode(reg, OP_END_LINE); break; 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_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: 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; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_PREC_READ_END); break; case ANCHOR_PREC_READ_NOT: len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); if (len < 0) return len; r = add_opcode_rel_addr(reg, OP_PREC_READ_NOT_START, len + SIZE_OP_PREC_READ_NOT_END); if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_PREC_READ_NOT_END); break; case ANCHOR_LOOK_BEHIND: { int n; r = add_opcode(reg, OP_LOOK_BEHIND); if (r != 0) return r; if (node->char_len < 0) { r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else n = node->char_len; r = add_length(reg, n); if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); } break; case ANCHOR_LOOK_BEHIND_NOT: { int n; len = compile_length_tree(NODE_ANCHOR_BODY(node), reg); r = add_opcode_rel_addr(reg, OP_LOOK_BEHIND_NOT_START, len + SIZE_OP_LOOK_BEHIND_NOT_END); if (r != 0) return r; if (node->char_len < 0) { r = get_char_length_tree(NODE_ANCHOR_BODY(node), reg, &n); if (r != 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } else n = node->char_len; r = add_length(reg, n); if (r != 0) return r; r = compile_tree(NODE_ANCHOR_BODY(node), reg, env); if (r != 0) return r; r = add_opcode(reg, OP_LOOK_BEHIND_NOT_END); } break; default: return ONIGERR_TYPE_BUG; break; } return r; } static int compile_gimmick_node(GimmickNode* node, regex_t* reg) { int r; switch (node->type) { case GIMMICK_FAIL: r = add_opcode(reg, OP_FAIL); break; case GIMMICK_KEEP: r = add_opcode(reg, OP_PUSH_SAVE_VAL); if (r != 0) return r; r = add_save_type(reg, SAVE_KEEP); if (r != 0) return r; r = add_mem_num(reg, node->id); break; case GIMMICK_SAVE: r = add_opcode(reg, OP_PUSH_SAVE_VAL); if (r != 0) return r; r = add_save_type(reg, node->detail_type); if (r != 0) return r; r = add_mem_num(reg, node->id); break; case GIMMICK_UPDATE_VAR: r = add_opcode(reg, OP_UPDATE_VAR); if (r != 0) return r; r = add_update_var_type(reg, node->detail_type); if (r != 0) return r; r = add_mem_num(reg, node->id); break; } return r; } static int compile_length_gimmick_node(GimmickNode* node, regex_t* reg) { int len; switch (node->type) { case GIMMICK_FAIL: len = SIZE_OP_FAIL; break; case GIMMICK_KEEP: case GIMMICK_SAVE: len = SIZE_OP_PUSH_SAVE_VAL; break; case GIMMICK_UPDATE_VAR: len = SIZE_OP_UPDATE_VAR; break; } return len; } static int compile_length_tree(Node* node, regex_t* reg) { int len, r; switch (NODE_TYPE(node)) { case NODE_LIST: len = 0; do { r = compile_length_tree(NODE_CAR(node), reg); if (r < 0) return r; len += r; } while (IS_NOT_NULL(node = NODE_CDR(node))); r = len; break; case NODE_ALT: { int n; n = r = 0; do { r += compile_length_tree(NODE_CAR(node), reg); n++; } while (IS_NOT_NULL(node = NODE_CDR(node))); r += (SIZE_OP_PUSH + SIZE_OP_JUMP) * (n - 1); } break; case NODE_STRING: if (NODE_STRING_IS_RAW(node)) r = compile_length_string_raw_node(STR_(node), reg); else r = compile_length_string_node(node, reg); break; case NODE_CCLASS: r = compile_length_cclass_node(CCLASS_(node), reg); break; case NODE_CTYPE: r = SIZE_OPCODE; break; case NODE_BACKREF: { BackRefNode* br = BACKREF_(node); if (NODE_IS_CHECKER(node)) { #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { r = SIZE_OPCODE + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); } else #endif r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); } else { #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); } else #endif if (br->back_num == 1) { r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2) ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM)); } else { r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num); } } } break; #ifdef USE_CALL case NODE_CALL: r = SIZE_OP_CALL; break; #endif case NODE_QUANT: r = compile_length_quantifier_node(QUANT_(node), reg); break; case NODE_ENCLOSURE: r = compile_length_enclosure_node(ENCLOSURE_(node), reg); break; case NODE_ANCHOR: r = compile_length_anchor_node(ANCHOR_(node), reg); break; case NODE_GIMMICK: r = compile_length_gimmick_node(GIMMICK_(node), reg); break; default: return ONIGERR_TYPE_BUG; break; } return r; } static int compile_tree(Node* node, regex_t* reg, ScanEnv* env) { int n, len, pos, r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: do { r = compile_tree(NODE_CAR(node), reg, env); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ALT: { Node* x = node; len = 0; do { len += compile_length_tree(NODE_CAR(x), reg); if (IS_NOT_NULL(NODE_CDR(x))) { len += SIZE_OP_PUSH + SIZE_OP_JUMP; } } while (IS_NOT_NULL(x = NODE_CDR(x))); pos = reg->used + len; /* goal position */ do { len = compile_length_tree(NODE_CAR(node), reg); if (IS_NOT_NULL(NODE_CDR(node))) { enum OpCode push = NODE_IS_SUPER(node) ? OP_PUSH_SUPER : OP_PUSH; r = add_opcode_rel_addr(reg, push, len + SIZE_OP_JUMP); if (r != 0) break; } r = compile_tree(NODE_CAR(node), reg, env); if (r != 0) break; if (IS_NOT_NULL(NODE_CDR(node))) { len = pos - (reg->used + SIZE_OP_JUMP); r = add_opcode_rel_addr(reg, OP_JUMP, len); if (r != 0) break; } } while (IS_NOT_NULL(node = NODE_CDR(node))); } break; case NODE_STRING: if (NODE_STRING_IS_RAW(node)) r = compile_string_raw_node(STR_(node), reg); else r = compile_string_node(node, reg); break; case NODE_CCLASS: r = compile_cclass_node(CCLASS_(node), reg); break; case NODE_CTYPE: { int op; switch (CTYPE_(node)->ctype) { case CTYPE_ANYCHAR: if (IS_MULTILINE(CTYPE_OPTION(node, reg))) r = add_opcode(reg, OP_ANYCHAR_ML); else r = add_opcode(reg, OP_ANYCHAR); break; case ONIGENC_CTYPE_WORD: if (CTYPE_(node)->ascii_mode == 0) { op = CTYPE_(node)->not != 0 ? OP_NO_WORD : OP_WORD; } else { op = CTYPE_(node)->not != 0 ? OP_NO_WORD_ASCII : OP_WORD_ASCII; } r = add_opcode(reg, op); break; default: return ONIGERR_TYPE_BUG; break; } } break; case NODE_BACKREF: { BackRefNode* br = BACKREF_(node); if (NODE_IS_CHECKER(node)) { #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { r = add_opcode(reg, OP_BACKREF_CHECK_WITH_LEVEL); if (r != 0) return r; r = add_length(reg, br->nest_level); if (r != 0) return r; } else #endif { r = add_opcode(reg, OP_BACKREF_CHECK); if (r != 0) return r; } goto add_bacref_mems; } else { #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { r = add_opcode(reg, OP_BACKREF_WITH_LEVEL); if (r != 0) return r; r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE)); if (r != 0) return r; r = add_length(reg, br->nest_level); if (r != 0) return r; goto add_bacref_mems; } else #endif if (br->back_num == 1) { n = br->back_static[0]; if (IS_IGNORECASE(reg->options)) { r = add_opcode(reg, OP_BACKREF_N_IC); if (r != 0) return r; r = add_mem_num(reg, n); } else { switch (n) { case 1: r = add_opcode(reg, OP_BACKREF1); break; case 2: r = add_opcode(reg, OP_BACKREF2); break; default: r = add_opcode(reg, OP_BACKREF_N); if (r != 0) return r; r = add_mem_num(reg, n); break; } } } else { int i; int* p; if (IS_IGNORECASE(reg->options)) { r = add_opcode(reg, OP_BACKREF_MULTI_IC); } else { r = add_opcode(reg, OP_BACKREF_MULTI); } if (r != 0) return r; add_bacref_mems: r = add_length(reg, br->back_num); if (r != 0) return r; p = BACKREFS_P(br); for (i = br->back_num - 1; i >= 0; i--) { r = add_mem_num(reg, p[i]); if (r != 0) return r; } } } } break; #ifdef USE_CALL case NODE_CALL: r = compile_call(CALL_(node), reg, env); break; #endif case NODE_QUANT: r = compile_quantifier_node(QUANT_(node), reg, env); break; case NODE_ENCLOSURE: r = compile_enclosure_node(ENCLOSURE_(node), reg, env); break; case NODE_ANCHOR: r = compile_anchor_node(ANCHOR_(node), reg, env); break; case NODE_GIMMICK: r = compile_gimmick_node(GIMMICK_(node), reg); break; default: #ifdef ONIG_DEBUG fprintf(stderr, "compile_tree: undefined node type %d\n", NODE_TYPE(node)); #endif break; } return r; } static int noname_disable_map(Node** plink, GroupNumRemap* map, int* counter) { int r = 0; Node* node = *plink; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = noname_disable_map(&(NODE_CAR(node)), map, counter); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: { Node** ptarget = &(NODE_BODY(node)); Node* old = *ptarget; r = noname_disable_map(ptarget, map, counter); if (*ptarget != old && NODE_TYPE(*ptarget) == NODE_QUANT) { onig_reduce_nested_quantifier(node, *ptarget); } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_NAMED_GROUP(node)) { (*counter)++; map[en->m.regnum].new_val = *counter; en->m.regnum = *counter; r = noname_disable_map(&(NODE_BODY(node)), map, counter); } else { *plink = NODE_BODY(node); NODE_BODY(node) = NULL_NODE; onig_node_free(node); r = noname_disable_map(plink, map, counter); } } else if (en->type == ENCLOSURE_IF_ELSE) { r = noname_disable_map(&(NODE_ENCLOSURE_BODY(en)), map, counter); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = noname_disable_map(&(en->te.Then), map, counter); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { r = noname_disable_map(&(en->te.Else), map, counter); if (r != 0) return r; } } else r = noname_disable_map(&(NODE_BODY(node)), map, counter); } break; case NODE_ANCHOR: if (IS_NOT_NULL(NODE_BODY(node))) r = noname_disable_map(&(NODE_BODY(node)), map, counter); break; default: break; } return r; } static int renumber_node_backref(Node* node, GroupNumRemap* map) { int i, pos, n, old_num; int *backs; BackRefNode* bn = BACKREF_(node); if (! NODE_IS_BY_NAME(node)) return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; old_num = bn->back_num; if (IS_NULL(bn->back_dynamic)) backs = bn->back_static; else backs = bn->back_dynamic; for (i = 0, pos = 0; i < old_num; i++) { n = map[backs[i]].new_val; if (n > 0) { backs[pos] = n; pos++; } } bn->back_num = pos; return 0; } static int renumber_by_map(Node* node, GroupNumRemap* map) { int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = renumber_by_map(NODE_CAR(node), map); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: r = renumber_by_map(NODE_BODY(node), map); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); r = renumber_by_map(NODE_BODY(node), map); if (r != 0) return r; if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = renumber_by_map(en->te.Then, map); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { r = renumber_by_map(en->te.Else, map); if (r != 0) return r; } } } break; case NODE_BACKREF: r = renumber_node_backref(node, map); break; case NODE_ANCHOR: if (IS_NOT_NULL(NODE_BODY(node))) r = renumber_by_map(NODE_BODY(node), map); break; default: break; } return r; } static int numbered_ref_check(Node* node) { int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = numbered_ref_check(NODE_CAR(node)); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ANCHOR: if (IS_NULL(NODE_BODY(node))) break; /* fall */ case NODE_QUANT: r = numbered_ref_check(NODE_BODY(node)); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); r = numbered_ref_check(NODE_BODY(node)); if (r != 0) return r; if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = numbered_ref_check(en->te.Then); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { r = numbered_ref_check(en->te.Else); if (r != 0) return r; } } } break; case NODE_BACKREF: if (! NODE_IS_BY_NAME(node)) return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; break; default: break; } return r; } static int disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env) { int r, i, pos, counter; MemStatusType loc; GroupNumRemap* map; map = (GroupNumRemap* )xalloca(sizeof(GroupNumRemap) * (env->num_mem + 1)); CHECK_NULL_RETURN_MEMERR(map); for (i = 1; i <= env->num_mem; i++) { map[i].new_val = 0; } counter = 0; r = noname_disable_map(root, map, &counter); if (r != 0) return r; r = renumber_by_map(*root, map); if (r != 0) return r; for (i = 1, pos = 1; i <= env->num_mem; i++) { if (map[i].new_val > 0) { SCANENV_MEMENV(env)[pos] = SCANENV_MEMENV(env)[i]; pos++; } } loc = env->capture_history; MEM_STATUS_CLEAR(env->capture_history); for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { if (MEM_STATUS_AT(loc, i)) { MEM_STATUS_ON_SIMPLE(env->capture_history, map[i].new_val); } } env->num_mem = env->num_named; reg->num_mem = env->num_named; return onig_renumber_name_table(reg, map); } #ifdef USE_CALL static int unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg) { int i, offset; EnclosureNode* en; AbsAddrType addr; for (i = 0; i < uslist->num; i++) { if (! NODE_IS_ADDR_FIXED(uslist->us[i].target)) return ONIGERR_PARSER_BUG; en = ENCLOSURE_(uslist->us[i].target); addr = en->m.called_addr; offset = uslist->us[i].offset; BB_WRITE(reg, offset, &addr, SIZE_ABSADDR); } return 0; } #endif #define GET_CHAR_LEN_VARLEN -1 #define GET_CHAR_LEN_TOP_ALT_VARLEN -2 /* fixed size pattern node only */ static int get_char_length_tree1(Node* node, regex_t* reg, int* len, int level) { int tlen; int r = 0; level++; *len = 0; switch (NODE_TYPE(node)) { case NODE_LIST: do { r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level); if (r == 0) *len = distance_add(*len, tlen); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ALT: { int tlen2; int varlen = 0; r = get_char_length_tree1(NODE_CAR(node), reg, &tlen, level); while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))) { r = get_char_length_tree1(NODE_CAR(node), reg, &tlen2, level); if (r == 0) { if (tlen != tlen2) varlen = 1; } } if (r == 0) { if (varlen != 0) { if (level == 1) r = GET_CHAR_LEN_TOP_ALT_VARLEN; else r = GET_CHAR_LEN_VARLEN; } else *len = tlen; } } break; case NODE_STRING: { StrNode* sn = STR_(node); UChar *s = sn->s; while (s < sn->end) { s += enclen(reg->enc, s); (*len)++; } } break; case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (qn->lower == qn->upper) { if (qn->upper == 0) { *len = 0; } else { r = get_char_length_tree1(NODE_BODY(node), reg, &tlen, level); if (r == 0) *len = distance_multiply(tlen, qn->lower); } } else r = GET_CHAR_LEN_VARLEN; } break; #ifdef USE_CALL case NODE_CALL: if (! NODE_IS_RECURSION(node)) r = get_char_length_tree1(NODE_BODY(node), reg, len, level); else r = GET_CHAR_LEN_VARLEN; break; #endif case NODE_CTYPE: case NODE_CCLASS: *len = 1; break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: #ifdef USE_CALL if (NODE_IS_CLEN_FIXED(node)) *len = en->char_len; else { r = get_char_length_tree1(NODE_BODY(node), reg, len, level); if (r == 0) { en->char_len = *len; NODE_STATUS_ADD(node, NST_CLEN_FIXED); } } break; #endif case ENCLOSURE_OPTION: case ENCLOSURE_STOP_BACKTRACK: r = get_char_length_tree1(NODE_BODY(node), reg, len, level); break; case ENCLOSURE_IF_ELSE: { int clen, elen; r = get_char_length_tree1(NODE_BODY(node), reg, &clen, level); if (r == 0) { if (IS_NOT_NULL(en->te.Then)) { r = get_char_length_tree1(en->te.Then, reg, &tlen, level); if (r != 0) break; } else tlen = 0; if (IS_NOT_NULL(en->te.Else)) { r = get_char_length_tree1(en->te.Else, reg, &elen, level); if (r != 0) break; } else elen = 0; if (clen + tlen != elen) { r = GET_CHAR_LEN_VARLEN; } else { *len = elen; } } } break; default: break; } } break; case NODE_ANCHOR: case NODE_GIMMICK: break; case NODE_BACKREF: if (NODE_IS_CHECKER(node)) break; /* fall */ default: r = GET_CHAR_LEN_VARLEN; break; } return r; } static int get_char_length_tree(Node* node, regex_t* reg, int* len) { return get_char_length_tree1(node, reg, len, 0); } /* x is not included y ==> 1 : 0 */ static int is_exclusive(Node* x, Node* y, regex_t* reg) { int i, len; OnigCodePoint code; UChar *p; NodeType ytype; retry: ytype = NODE_TYPE(y); switch (NODE_TYPE(x)) { case NODE_CTYPE: { if (CTYPE_(x)->ctype == CTYPE_ANYCHAR || CTYPE_(y)->ctype == CTYPE_ANYCHAR) break; switch (ytype) { case NODE_CTYPE: if (CTYPE_(y)->ctype == CTYPE_(x)->ctype && CTYPE_(y)->not != CTYPE_(x)->not && CTYPE_(y)->ascii_mode == CTYPE_(x)->ascii_mode) return 1; else return 0; break; case NODE_CCLASS: swap: { Node* tmp; tmp = x; x = y; y = tmp; goto retry; } break; case NODE_STRING: goto swap; break; default: break; } } break; case NODE_CCLASS: { int range; CClassNode* xc = CCLASS_(x); switch (ytype) { case NODE_CTYPE: switch (CTYPE_(y)->ctype) { case CTYPE_ANYCHAR: return 0; break; case ONIGENC_CTYPE_WORD: if (CTYPE_(y)->not == 0) { if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) { range = CTYPE_(y)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; for (i = 0; i < range; i++) { if (BITSET_AT(xc->bs, i)) { if (ONIGENC_IS_CODE_WORD(reg->enc, i)) return 0; } } return 1; } return 0; } else { if (IS_NOT_NULL(xc->mbuf)) 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; default: break; } break; case NODE_CCLASS: { int v; CClassNode* yc = CCLASS_(y); for (i = 0; i < SINGLE_BYTE_SIZE; i++) { v = BITSET_AT(xc->bs, i); if ((v != 0 && !IS_NCCLASS_NOT(xc)) || (v == 0 && IS_NCCLASS_NOT(xc))) { v = BITSET_AT(yc->bs, i); if ((v != 0 && !IS_NCCLASS_NOT(yc)) || (v == 0 && IS_NCCLASS_NOT(yc))) return 0; } } if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) || (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc))) return 1; return 0; } break; case NODE_STRING: goto swap; break; default: break; } } break; case NODE_STRING: { StrNode* xs = STR_(x); if (NODE_STRING_LEN(x) == 0) break; //c = *(xs->s); switch (ytype) { case NODE_CTYPE: switch (CTYPE_(y)->ctype) { case CTYPE_ANYCHAR: break; case ONIGENC_CTYPE_WORD: if (CTYPE_(y)->ascii_mode == 0) { if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end)) return CTYPE_(y)->not; else return !(CTYPE_(y)->not); } else { if (ONIGENC_IS_MBC_WORD_ASCII(reg->enc, xs->s, xs->end)) return CTYPE_(y)->not; else return !(CTYPE_(y)->not); } break; default: break; } break; case NODE_CCLASS: { CClassNode* cc = CCLASS_(y); code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s, xs->s + ONIGENC_MBC_MAXLEN(reg->enc)); return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1); } break; case NODE_STRING: { UChar *q; StrNode* ys = STR_(y); len = NODE_STRING_LEN(x); if (len > NODE_STRING_LEN(y)) len = NODE_STRING_LEN(y); if (NODE_STRING_IS_AMBIG(x) || NODE_STRING_IS_AMBIG(y)) { /* tiny version */ return 0; } else { for (i = 0, p = ys->s, q = xs->s; i < len; i++, p++, q++) { if (*p != *q) return 1; } } } break; default: break; } } break; default: break; } return 0; } static Node* get_head_value_node(Node* node, int exact, regex_t* reg) { Node* n = NULL_NODE; switch (NODE_TYPE(node)) { case NODE_BACKREF: case NODE_ALT: #ifdef USE_CALL case NODE_CALL: #endif break; case NODE_CTYPE: if (CTYPE_(node)->ctype == CTYPE_ANYCHAR) break; /* fall */ case NODE_CCLASS: if (exact == 0) { n = node; } break; case NODE_LIST: n = get_head_value_node(NODE_CAR(node), exact, reg); break; case NODE_STRING: { StrNode* sn = STR_(node); if (sn->end <= sn->s) break; if (exact != 0 && !NODE_STRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) { } else { n = node; } } break; case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (qn->lower > 0) { if (IS_NOT_NULL(qn->head_exact)) n = qn->head_exact; else n = get_head_value_node(NODE_BODY(node), exact, reg); } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_OPTION: { OnigOptionType options = reg->options; reg->options = ENCLOSURE_(node)->o.options; n = get_head_value_node(NODE_BODY(node), exact, reg); reg->options = options; } break; case ENCLOSURE_MEMORY: case ENCLOSURE_STOP_BACKTRACK: case ENCLOSURE_IF_ELSE: n = get_head_value_node(NODE_BODY(node), exact, reg); break; } } break; case NODE_ANCHOR: if (ANCHOR_(node)->type == ANCHOR_PREC_READ) n = get_head_value_node(NODE_BODY(node), exact, reg); break; case NODE_GIMMICK: default: break; } return n; } static int check_type_tree(Node* node, int type_mask, int enclosure_mask, int anchor_mask) { NodeType type; int r = 0; type = NODE_TYPE(node); if ((NODE_TYPE2BIT(type) & type_mask) == 0) return 1; switch (type) { case NODE_LIST: case NODE_ALT: do { r = check_type_tree(NODE_CAR(node), type_mask, enclosure_mask, anchor_mask); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (((1<type) & enclosure_mask) == 0) return 1; r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); if (r == 0 && en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = check_type_tree(en->te.Then, type_mask, enclosure_mask, anchor_mask); if (r != 0) break; } if (IS_NOT_NULL(en->te.Else)) { r = check_type_tree(en->te.Else, type_mask, enclosure_mask, anchor_mask); } } } break; case NODE_ANCHOR: type = ANCHOR_(node)->type; if ((type & anchor_mask) == 0) return 1; if (IS_NOT_NULL(NODE_BODY(node))) r = check_type_tree(NODE_BODY(node), type_mask, enclosure_mask, anchor_mask); break; case NODE_GIMMICK: default: break; } return r; } static OnigLen tree_min_len(Node* node, ScanEnv* env) { OnigLen len; OnigLen tmin; len = 0; switch (NODE_TYPE(node)) { case NODE_BACKREF: if (! NODE_IS_CHECKER(node)) { int i; int* backs; MemEnv* mem_env = SCANENV_MEMENV(env); BackRefNode* br = BACKREF_(node); if (NODE_IS_RECURSION(node)) break; backs = BACKREFS_P(br); len = tree_min_len(mem_env[backs[0]].node, env); for (i = 1; i < br->back_num; i++) { tmin = tree_min_len(mem_env[backs[i]].node, env); if (len > tmin) len = tmin; } } break; #ifdef USE_CALL case NODE_CALL: { Node* t = NODE_BODY(node); if (NODE_IS_RECURSION(node)) { if (NODE_IS_MIN_FIXED(t)) len = ENCLOSURE_(t)->min_len; } else len = tree_min_len(t, env); } break; #endif case NODE_LIST: do { tmin = tree_min_len(NODE_CAR(node), env); len = distance_add(len, tmin); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ALT: { Node *x, *y; y = node; do { x = NODE_CAR(y); tmin = tree_min_len(x, env); if (y == node) len = tmin; else if (len > tmin) len = tmin; } while (IS_NOT_NULL(y = NODE_CDR(y))); } break; case NODE_STRING: { StrNode* sn = STR_(node); len = (int )(sn->end - sn->s); } break; case NODE_CTYPE: case NODE_CCLASS: len = ONIGENC_MBC_MINLEN(env->enc); break; case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (qn->lower > 0) { len = tree_min_len(NODE_BODY(node), env); len = distance_multiply(len, qn->lower); } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: if (NODE_IS_MIN_FIXED(node)) len = en->min_len; else { if (NODE_IS_MARK1(node)) len = 0; // recursive else { NODE_STATUS_ADD(node, NST_MARK1); len = tree_min_len(NODE_BODY(node), env); NODE_STATUS_REMOVE(node, NST_MARK1); en->min_len = len; NODE_STATUS_ADD(node, NST_MIN_FIXED); } } break; case ENCLOSURE_OPTION: case ENCLOSURE_STOP_BACKTRACK: len = tree_min_len(NODE_BODY(node), env); break; case ENCLOSURE_IF_ELSE: { OnigLen elen; len = tree_min_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) len += tree_min_len(en->te.Then, env); if (IS_NOT_NULL(en->te.Else)) elen = tree_min_len(en->te.Else, env); else elen = 0; if (elen < len) len = elen; } break; } } break; case NODE_GIMMICK: { GimmickNode* g = GIMMICK_(node); if (g->type == GIMMICK_FAIL) { len = INFINITE_LEN; break; } } /* fall */ case NODE_ANCHOR: default: break; } return len; } static OnigLen tree_max_len(Node* node, ScanEnv* env) { OnigLen len; OnigLen tmax; len = 0; switch (NODE_TYPE(node)) { case NODE_LIST: do { tmax = tree_max_len(NODE_CAR(node), env); len = distance_add(len, tmax); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ALT: do { tmax = tree_max_len(NODE_CAR(node), env); if (len < tmax) len = tmax; } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_STRING: { StrNode* sn = STR_(node); len = (OnigLen )(sn->end - sn->s); } break; case NODE_CTYPE: case NODE_CCLASS: len = ONIGENC_MBC_MAXLEN_DIST(env->enc); break; case NODE_BACKREF: if (! NODE_IS_CHECKER(node)) { int i; int* backs; MemEnv* mem_env = SCANENV_MEMENV(env); BackRefNode* br = BACKREF_(node); if (NODE_IS_RECURSION(node)) { len = INFINITE_LEN; break; } backs = BACKREFS_P(br); for (i = 0; i < br->back_num; i++) { tmax = tree_max_len(mem_env[backs[i]].node, env); if (len < tmax) len = tmax; } } break; #ifdef USE_CALL case NODE_CALL: if (! NODE_IS_RECURSION(node)) len = tree_max_len(NODE_BODY(node), env); else len = INFINITE_LEN; break; #endif case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (qn->upper != 0) { len = tree_max_len(NODE_BODY(node), env); if (len != 0) { if (! IS_REPEAT_INFINITE(qn->upper)) len = distance_multiply(len, qn->upper); else len = INFINITE_LEN; } } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: if (NODE_IS_MAX_FIXED(node)) len = en->max_len; else { if (NODE_IS_MARK1(node)) len = INFINITE_LEN; else { NODE_STATUS_ADD(node, NST_MARK1); len = tree_max_len(NODE_BODY(node), env); NODE_STATUS_REMOVE(node, NST_MARK1); en->max_len = len; NODE_STATUS_ADD(node, NST_MAX_FIXED); } } break; case ENCLOSURE_OPTION: case ENCLOSURE_STOP_BACKTRACK: len = tree_max_len(NODE_BODY(node), env); break; case ENCLOSURE_IF_ELSE: { OnigLen tlen, elen; len = tree_max_len(NODE_BODY(node), env); if (IS_NOT_NULL(en->te.Then)) { tlen = tree_max_len(en->te.Then, env); len = distance_add(len, tlen); } if (IS_NOT_NULL(en->te.Else)) elen = tree_max_len(en->te.Else, env); else elen = 0; if (elen > len) len = elen; } break; } } break; case NODE_ANCHOR: case NODE_GIMMICK: default: break; } return len; } static int check_backrefs(Node* node, ScanEnv* env) { int r; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = check_backrefs(NODE_CAR(node), env); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ANCHOR: if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { r = 0; break; } /* fall */ case NODE_QUANT: r = check_backrefs(NODE_BODY(node), env); break; case NODE_ENCLOSURE: r = check_backrefs(NODE_BODY(node), env); { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_IF_ELSE) { if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = check_backrefs(en->te.Then, env); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { r = check_backrefs(en->te.Else, env); } } } break; case NODE_BACKREF: { int i; BackRefNode* br = BACKREF_(node); int* backs = BACKREFS_P(br); MemEnv* mem_env = SCANENV_MEMENV(env); for (i = 0; i < br->back_num; i++) { if (backs[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; NODE_STATUS_ADD(mem_env[backs[i]].node, NST_BACKREF); } r = 0; } break; default: r = 0; break; } return r; } #ifdef USE_CALL #define RECURSION_EXIST (1<<0) #define RECURSION_MUST (1<<1) #define RECURSION_INFINITE (1<<2) static int infinite_recursive_call_check(Node* node, ScanEnv* env, int head) { int ret; int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: { Node *x; OnigLen min; x = node; do { ret = infinite_recursive_call_check(NODE_CAR(x), env, head); if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; r |= ret; if (head != 0) { min = tree_min_len(NODE_CAR(x), env); if (min != 0) head = 0; } } while (IS_NOT_NULL(x = NODE_CDR(x))); } break; case NODE_ALT: { int must; must = RECURSION_MUST; do { ret = infinite_recursive_call_check(NODE_CAR(node), env, head); if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; r |= (ret & RECURSION_EXIST); must &= ret; } while (IS_NOT_NULL(node = NODE_CDR(node))); r |= must; } break; case NODE_QUANT: r = infinite_recursive_call_check(NODE_BODY(node), env, head); if (r < 0) return r; if ((r & RECURSION_MUST) != 0) { if (QUANT_(node)->lower == 0) r &= ~RECURSION_MUST; } break; case NODE_ANCHOR: if (! ANCHOR_HAS_BODY(ANCHOR_(node))) break; /* fall */ case NODE_CALL: r = infinite_recursive_call_check(NODE_BODY(node), env, head); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_MARK2(node)) return 0; else if (NODE_IS_MARK1(node)) return (head == 0 ? RECURSION_EXIST | RECURSION_MUST : RECURSION_EXIST | RECURSION_MUST | RECURSION_INFINITE); else { NODE_STATUS_ADD(node, NST_MARK2); r = infinite_recursive_call_check(NODE_BODY(node), env, head); NODE_STATUS_REMOVE(node, NST_MARK2); } } else if (en->type == ENCLOSURE_IF_ELSE) { int eret; ret = infinite_recursive_call_check(NODE_BODY(node), env, head); if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; r |= ret; if (IS_NOT_NULL(en->te.Then)) { OnigLen min; if (head != 0) { min = tree_min_len(NODE_BODY(node), env); } else min = 0; ret = infinite_recursive_call_check(en->te.Then, env, min != 0 ? 0:head); if (ret < 0 || (ret & RECURSION_INFINITE) != 0) return ret; r |= ret; } if (IS_NOT_NULL(en->te.Else)) { eret = infinite_recursive_call_check(en->te.Else, env, head); if (eret < 0 || (eret & RECURSION_INFINITE) != 0) return eret; r |= (eret & RECURSION_EXIST); if ((eret & RECURSION_MUST) == 0) r &= ~RECURSION_MUST; } } else { r = infinite_recursive_call_check(NODE_BODY(node), env, head); } } break; default: break; } return r; } static int infinite_recursive_call_check_trav(Node* node, ScanEnv* env) { int r; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = infinite_recursive_call_check_trav(NODE_CAR(node), env); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ANCHOR: if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { r = 0; break; } /* fall */ case NODE_QUANT: r = infinite_recursive_call_check_trav(NODE_BODY(node), env); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_RECURSION(node) && NODE_IS_CALLED(node)) { int ret; NODE_STATUS_ADD(node, NST_MARK1); ret = infinite_recursive_call_check(NODE_BODY(node), env, 1); if (ret < 0) return ret; else if ((ret & (RECURSION_MUST | RECURSION_INFINITE)) != 0) return ONIGERR_NEVER_ENDING_RECURSION; NODE_STATUS_REMOVE(node, NST_MARK1); } } else if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = infinite_recursive_call_check_trav(en->te.Then, env); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) { r = infinite_recursive_call_check_trav(en->te.Else, env); if (r != 0) return r; } } } r = infinite_recursive_call_check_trav(NODE_BODY(node), env); break; default: r = 0; break; } return r; } static int recursive_call_check(Node* node) { int r; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: r = 0; do { r |= recursive_call_check(NODE_CAR(node)); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_ANCHOR: if (! ANCHOR_HAS_BODY(ANCHOR_(node))) { r = 0; break; } /* fall */ case NODE_QUANT: r = recursive_call_check(NODE_BODY(node)); break; case NODE_CALL: r = recursive_call_check(NODE_BODY(node)); if (r != 0) { if (NODE_IS_MARK1(NODE_BODY(node))) NODE_STATUS_ADD(node, NST_RECURSION); } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_MARK2(node)) return 0; else if (NODE_IS_MARK1(node)) return 1; /* recursion */ else { NODE_STATUS_ADD(node, NST_MARK2); r = recursive_call_check(NODE_BODY(node)); NODE_STATUS_REMOVE(node, NST_MARK2); } } else if (en->type == ENCLOSURE_IF_ELSE) { r = 0; if (IS_NOT_NULL(en->te.Then)) { r |= recursive_call_check(en->te.Then); } if (IS_NOT_NULL(en->te.Else)) { r |= recursive_call_check(en->te.Else); } r |= recursive_call_check(NODE_BODY(node)); } else { r = recursive_call_check(NODE_BODY(node)); } } break; default: r = 0; break; } return r; } #define IN_RECURSION (1<<0) #define FOUND_CALLED_NODE 1 static int recursive_call_check_trav(Node* node, ScanEnv* env, int state) { int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: { int ret; do { ret = recursive_call_check_trav(NODE_CAR(node), env, state); if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; else if (ret < 0) return ret; } while (IS_NOT_NULL(node = NODE_CDR(node))); } break; case NODE_QUANT: r = recursive_call_check_trav(NODE_BODY(node), env, state); if (QUANT_(node)->upper == 0) { if (r == FOUND_CALLED_NODE) QUANT_(node)->is_refered = 1; } break; case NODE_ANCHOR: { AnchorNode* an = ANCHOR_(node); if (ANCHOR_HAS_BODY(an)) r = recursive_call_check_trav(NODE_ANCHOR_BODY(an), env, state); } break; case NODE_ENCLOSURE: { int ret; int state1; EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_CALLED(node) || (state & IN_RECURSION) != 0) { if (! NODE_IS_RECURSION(node)) { NODE_STATUS_ADD(node, NST_MARK1); r = recursive_call_check(NODE_BODY(node)); if (r != 0) NODE_STATUS_ADD(node, NST_RECURSION); NODE_STATUS_REMOVE(node, NST_MARK1); } if (NODE_IS_CALLED(node)) r = FOUND_CALLED_NODE; } } state1 = state; if (NODE_IS_RECURSION(node)) state1 |= IN_RECURSION; ret = recursive_call_check_trav(NODE_BODY(node), env, state1); if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { ret = recursive_call_check_trav(en->te.Then, env, state1); if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; } if (IS_NOT_NULL(en->te.Else)) { ret = recursive_call_check_trav(en->te.Else, env, state1); if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE; } } } break; default: break; } return r; } #endif /* divide different length alternatives in look-behind. (?<=A|B) ==> (?<=A)|(?<=B) (? (?type; head = NODE_ANCHOR_BODY(an); np = NODE_CAR(head); swap_node(node, head); NODE_CAR(node) = head; NODE_BODY(head) = np; np = node; while (IS_NOT_NULL(np = NODE_CDR(np))) { insert_node = onig_node_new_anchor(anc_type, an->ascii_mode); CHECK_NULL_RETURN_MEMERR(insert_node); NODE_BODY(insert_node) = NODE_CAR(np); NODE_CAR(np) = insert_node; } if (anc_type == ANCHOR_LOOK_BEHIND_NOT) { np = node; do { NODE_SET_TYPE(np, NODE_LIST); /* alt -> list */ } while (IS_NOT_NULL(np = NODE_CDR(np))); } return 0; } static int setup_look_behind(Node* node, regex_t* reg, ScanEnv* env) { int r, len; AnchorNode* an = ANCHOR_(node); r = get_char_length_tree(NODE_ANCHOR_BODY(an), reg, &len); if (r == 0) an->char_len = len; else if (r == GET_CHAR_LEN_VARLEN) r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; else if (r == GET_CHAR_LEN_TOP_ALT_VARLEN) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND)) r = divide_look_behind_alternatives(node); else r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN; } return r; } static int next_setup(Node* node, Node* next_node, regex_t* reg) { NodeType type; retry: type = NODE_TYPE(node); if (type == NODE_QUANT) { QuantNode* qn = QUANT_(node); if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) { #ifdef USE_QUANT_PEEK_NEXT Node* n = get_head_value_node(next_node, 1, reg); /* '\0': for UTF-16BE etc... */ if (IS_NOT_NULL(n) && STR_(n)->s[0] != '\0') { qn->next_head_exact = n; } #endif /* automatic posseivation a*b ==> (?>a*)b */ if (qn->lower <= 1) { if (NODE_IS_SIMPLE_TYPE(NODE_BODY(node))) { Node *x, *y; x = get_head_value_node(NODE_BODY(node), 0, reg); if (IS_NOT_NULL(x)) { y = get_head_value_node(next_node, 0, reg); if (IS_NOT_NULL(y) && is_exclusive(x, y, reg)) { Node* en = onig_node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); CHECK_NULL_RETURN_MEMERR(en); NODE_STATUS_ADD(en, NST_STOP_BT_SIMPLE_REPEAT); swap_node(node, en); NODE_BODY(node) = en; } } } } } } else if (type == NODE_ENCLOSURE) { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { node = NODE_BODY(node); goto retry; } } return 0; } static int update_string_node_case_fold(regex_t* reg, Node *node) { UChar *p, *end, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar *sbuf, *ebuf, *sp; int r, i, len, sbuf_size; StrNode* sn = STR_(node); end = sn->end; sbuf_size = (int )(end - sn->s) * 2; sbuf = (UChar* )xmalloc(sbuf_size); CHECK_NULL_RETURN_MEMERR(sbuf); ebuf = sbuf + sbuf_size; sp = sbuf; p = sn->s; while (p < end) { len = ONIGENC_MBC_CASE_FOLD(reg->enc, reg->case_fold_flag, &p, end, buf); for (i = 0; i < len; i++) { if (sp >= ebuf) { sbuf = (UChar* )xrealloc(sbuf, sbuf_size * 2); CHECK_NULL_RETURN_MEMERR(sbuf); sp = sbuf + sbuf_size; sbuf_size *= 2; ebuf = sbuf + sbuf_size; } *sp++ = buf[i]; } } r = onig_node_str_set(node, sbuf, sp); if (r != 0) { xfree(sbuf); return r; } xfree(sbuf); return 0; } static int expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end, regex_t* reg) { int r; Node *node; node = onig_node_new_str(s, end); if (IS_NULL(node)) return ONIGERR_MEMORY; r = update_string_node_case_fold(reg, node); if (r != 0) { onig_node_free(node); return r; } NODE_STRING_SET_AMBIG(node); NODE_STRING_SET_DONT_GET_OPT_INFO(node); *rnode = node; return 0; } static int expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[], UChar *p, int slen, UChar *end, regex_t* reg, Node **rnode) { int r, i, j, len, varlen; Node *anode, *var_anode, *snode, *xnode, *an; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; *rnode = var_anode = NULL_NODE; varlen = 0; for (i = 0; i < item_num; i++) { if (items[i].byte_len != slen) { varlen = 1; break; } } if (varlen != 0) { *rnode = var_anode = onig_node_new_alt(NULL_NODE, NULL_NODE); if (IS_NULL(var_anode)) return ONIGERR_MEMORY; xnode = onig_node_new_list(NULL, NULL); if (IS_NULL(xnode)) goto mem_err; NODE_CAR(var_anode) = xnode; anode = onig_node_new_alt(NULL_NODE, NULL_NODE); if (IS_NULL(anode)) goto mem_err; NODE_CAR(xnode) = anode; } else { *rnode = anode = onig_node_new_alt(NULL_NODE, NULL_NODE); if (IS_NULL(anode)) return ONIGERR_MEMORY; } snode = onig_node_new_str(p, p + slen); if (IS_NULL(snode)) goto mem_err; NODE_CAR(anode) = snode; for (i = 0; i < item_num; i++) { snode = onig_node_new_str(NULL, NULL); if (IS_NULL(snode)) goto mem_err; for (j = 0; j < items[i].code_len; j++) { len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf); if (len < 0) { r = len; goto mem_err2; } r = onig_node_str_cat(snode, buf, buf + len); if (r != 0) goto mem_err2; } an = onig_node_new_alt(NULL_NODE, NULL_NODE); if (IS_NULL(an)) { goto mem_err2; } if (items[i].byte_len != slen) { Node *rem; UChar *q = p + items[i].byte_len; if (q < end) { r = expand_case_fold_make_rem_string(&rem, q, end, reg); if (r != 0) { onig_node_free(an); goto mem_err2; } xnode = onig_node_list_add(NULL_NODE, snode); if (IS_NULL(xnode)) { onig_node_free(an); onig_node_free(rem); goto mem_err2; } if (IS_NULL(onig_node_list_add(xnode, rem))) { onig_node_free(an); onig_node_free(xnode); onig_node_free(rem); goto mem_err; } NODE_CAR(an) = xnode; } else { NODE_CAR(an) = snode; } NODE_CDR(var_anode) = an; var_anode = an; } else { NODE_CAR(an) = snode; NODE_CDR(anode) = an; anode = an; } } return varlen; mem_err2: onig_node_free(snode); mem_err: onig_node_free(*rnode); return ONIGERR_MEMORY; } static int expand_case_fold_string(Node* node, regex_t* reg) { #define THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION 8 int r, n, len, alt_num; UChar *start, *end, *p; Node *top_root, *root, *snode, *prev_node; OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; StrNode* sn = STR_(node); if (NODE_STRING_IS_AMBIG(node)) return 0; start = sn->s; end = sn->end; if (start >= end) return 0; r = 0; top_root = root = prev_node = snode = NULL_NODE; alt_num = 1; p = start; while (p < end) { n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag, p, end, items); if (n < 0) { r = n; goto err; } len = enclen(reg->enc, p); if (n == 0) { if (IS_NULL(snode)) { if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { top_root = root = onig_node_list_add(NULL_NODE, prev_node); if (IS_NULL(root)) { onig_node_free(prev_node); goto mem_err; } } prev_node = snode = onig_node_new_str(NULL, NULL); if (IS_NULL(snode)) goto mem_err; if (IS_NOT_NULL(root)) { if (IS_NULL(onig_node_list_add(root, snode))) { onig_node_free(snode); goto mem_err; } } } r = onig_node_str_cat(snode, p, p + len); if (r != 0) goto err; } else { alt_num *= (n + 1); if (alt_num > THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION) break; if (IS_NULL(root) && IS_NOT_NULL(prev_node)) { top_root = root = onig_node_list_add(NULL_NODE, prev_node); if (IS_NULL(root)) { onig_node_free(prev_node); goto mem_err; } } r = expand_case_fold_string_alt(n, items, p, len, end, reg, &prev_node); if (r < 0) goto mem_err; if (r == 1) { if (IS_NULL(root)) { top_root = prev_node; } else { if (IS_NULL(onig_node_list_add(root, prev_node))) { onig_node_free(prev_node); goto mem_err; } } root = NODE_CAR(prev_node); } else { /* r == 0 */ if (IS_NOT_NULL(root)) { if (IS_NULL(onig_node_list_add(root, prev_node))) { onig_node_free(prev_node); goto mem_err; } } } snode = NULL_NODE; } p += len; } if (p < end) { Node *srem; r = expand_case_fold_make_rem_string(&srem, p, end, reg); if (r != 0) goto mem_err; if (IS_NOT_NULL(prev_node) && IS_NULL(root)) { top_root = root = onig_node_list_add(NULL_NODE, prev_node); if (IS_NULL(root)) { onig_node_free(srem); onig_node_free(prev_node); goto mem_err; } } if (IS_NULL(root)) { prev_node = srem; } else { if (IS_NULL(onig_node_list_add(root, srem))) { onig_node_free(srem); goto mem_err; } } } /* ending */ top_root = (IS_NOT_NULL(top_root) ? top_root : prev_node); swap_node(node, top_root); onig_node_free(top_root); return 0; mem_err: r = ONIGERR_MEMORY; err: onig_node_free(top_root); return r; } #ifdef USE_COMBINATION_EXPLOSION_CHECK #define CEC_THRES_NUM_BIG_REPEAT 512 #define CEC_INFINITE_NUM 0x7fffffff #define CEC_IN_INFINITE_REPEAT (1<<0) #define CEC_IN_FINITE_REPEAT (1<<1) #define CEC_CONT_BIG_REPEAT (1<<2) static int setup_comb_exp_check(Node* node, int state, ScanEnv* env) { int r = state; switch (NODE_TYPE(node)) { case NODE_LIST: { do { r = setup_comb_exp_check(NODE_CAR(node), r, env); } while (r >= 0 && IS_NOT_NULL(node = NODE_CDR(node))); } break; case NODE_ALT: { int ret; do { ret = setup_comb_exp_check(NODE_CAR(node), state, env); r |= ret; } while (ret >= 0 && IS_NOT_NULL(node = NODE_CDR(node))); } break; case NODE_QUANT: { int var_num; int child_state = state; int add_state = 0; QuantNode* qn = QUANT_(node); Node* target = NODE_QUANT_BODY(qn); if (! IS_REPEAT_INFINITE(qn->upper)) { if (qn->upper > 1) { /* {0,1}, {1,1} are allowed */ child_state |= CEC_IN_FINITE_REPEAT; /* check (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} */ if (env->backrefed_mem == 0) { if (NODE_TYPE(NODE_QUANT_BODY(qn)) == NODE_ENCLOSURE) { EnclosureNode* en = ENCLOSURE_(NODE_QUANT_BODY(qn)); if (en->type == ENCLOSURE_MEMORY) { if (NODE_TYPE(NODE_ENCLOSURE_BODY(en)) == NODE_QUANT) { QuantNode* q = QUANT_(NODE_ENCLOSURE_BODY(en)); if (IS_REPEAT_INFINITE(q->upper) && q->greedy == qn->greedy) { qn->upper = (qn->lower == 0 ? 1 : qn->lower); if (qn->upper == 1) child_state = state; } } } } } } } if (state & CEC_IN_FINITE_REPEAT) { qn->comb_exp_check_num = -1; } else { if (IS_REPEAT_INFINITE(qn->upper)) { var_num = CEC_INFINITE_NUM; child_state |= CEC_IN_INFINITE_REPEAT; } else { var_num = qn->upper - qn->lower; } if (var_num >= CEC_THRES_NUM_BIG_REPEAT) add_state |= CEC_CONT_BIG_REPEAT; if (((state & CEC_IN_INFINITE_REPEAT) != 0 && var_num != 0) || ((state & CEC_CONT_BIG_REPEAT) != 0 && var_num >= CEC_THRES_NUM_BIG_REPEAT)) { if (qn->comb_exp_check_num == 0) { env->num_comb_exp_check++; qn->comb_exp_check_num = env->num_comb_exp_check; if (env->curr_max_regnum > env->comb_exp_max_regnum) env->comb_exp_max_regnum = env->curr_max_regnum; } } } r = setup_comb_exp_check(target, child_state, env); r |= add_state; } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: { if (env->curr_max_regnum < en->m.regnum) env->curr_max_regnum = en->m.regnum; r = setup_comb_exp_check(NODE_ENCLOSURE_BODY(en), state, env); } break; default: r = setup_comb_exp_check(NODE_ENCLOSURE_BODY(en), state, env); break; } } break; #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) env->has_recursion = 1; else r = setup_comb_exp_check(NODE_BODY(node), state, env); break; #endif default: break; } return r; } #endif #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT static int quantifiers_memory_node_info(Node* node) { int r = QUANT_BODY_IS_EMPTY; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: { int v; do { v = quantifiers_memory_node_info(NODE_CAR(node)); if (v > r) r = v; } while (IS_NOT_NULL(node = NODE_CDR(node))); } break; #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) { return QUANT_BODY_IS_EMPTY_REC; /* tiny version */ } else r = quantifiers_memory_node_info(NODE_BODY(node)); break; #endif case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (qn->upper != 0) { r = quantifiers_memory_node_info(NODE_BODY(node)); } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: if (NODE_IS_RECURSION(node)) { return QUANT_BODY_IS_EMPTY_REC; } return QUANT_BODY_IS_EMPTY_MEM; break; case ENCLOSURE_OPTION: case ENCLOSURE_STOP_BACKTRACK: r = quantifiers_memory_node_info(NODE_BODY(node)); break; case ENCLOSURE_IF_ELSE: { int v; r = quantifiers_memory_node_info(NODE_BODY(node)); if (IS_NOT_NULL(en->te.Then)) { v = quantifiers_memory_node_info(en->te.Then); if (v > r) r = v; } if (IS_NOT_NULL(en->te.Else)) { v = quantifiers_memory_node_info(en->te.Else); if (v > r) r = v; } } break; default: break; } } break; case NODE_BACKREF: case NODE_STRING: case NODE_CTYPE: case NODE_CCLASS: case NODE_ANCHOR: case NODE_GIMMICK: default: break; } return r; } #endif /* USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT */ #define IN_ALT (1<<0) #define IN_NOT (1<<1) #define IN_REAL_REPEAT (1<<2) #define IN_VAR_REPEAT (1<<3) #define IN_ZERO_REPEAT (1<<4) #define IN_MULTI_ENTRY (1<<5) #ifdef USE_CALL #ifdef __GNUC__ __inline #endif static int setup_call_node_call(CallNode* cn, ScanEnv* env, int state) { MemEnv* mem_env = SCANENV_MEMENV(env); if (cn->by_number != 0) { int gnum = cn->group_num; if (env->num_named > 0 && IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && ! ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_CAPTURE_GROUP)) { return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED; } if (gnum > env->num_mem) { onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_GROUP_REFERENCE, cn->name, cn->name_end); return ONIGERR_UNDEFINED_GROUP_REFERENCE; } set_call_attr: NODE_CALL_BODY(cn) = mem_env[cn->group_num].node; if (IS_NULL(NODE_CALL_BODY(cn))) { onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); return ONIGERR_UNDEFINED_NAME_REFERENCE; } } else { int *refs; int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end, &refs); if (n <= 0) { onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end); return ONIGERR_UNDEFINED_NAME_REFERENCE; } else if (n > 1) { onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, cn->name, cn->name_end); return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL; } else { cn->group_num = refs[0]; goto set_call_attr; } } return 0; } static void setup_call2_call(Node* node) { switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { setup_call2_call(NODE_CAR(node)); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: setup_call2_call(NODE_BODY(node)); break; case NODE_ANCHOR: if (ANCHOR_HAS_BODY(ANCHOR_(node))) setup_call2_call(NODE_BODY(node)); break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (! NODE_IS_MARK1(node)) { NODE_STATUS_ADD(node, NST_MARK1); setup_call2_call(NODE_BODY(node)); NODE_STATUS_REMOVE(node, NST_MARK1); } } else if (en->type == ENCLOSURE_IF_ELSE) { setup_call2_call(NODE_BODY(node)); if (IS_NOT_NULL(en->te.Then)) setup_call2_call(en->te.Then); if (IS_NOT_NULL(en->te.Else)) setup_call2_call(en->te.Else); } else { setup_call2_call(NODE_BODY(node)); } } break; case NODE_CALL: if (! NODE_IS_MARK1(node)) { NODE_STATUS_ADD(node, NST_MARK1); { CallNode* cn = CALL_(node); Node* called = NODE_CALL_BODY(cn); cn->entry_count++; NODE_STATUS_ADD(called, NST_CALLED); ENCLOSURE_(called)->m.entry_count++; setup_call2_call(called); } NODE_STATUS_REMOVE(node, NST_MARK1); } break; default: break; } } static int setup_call(Node* node, ScanEnv* env, int state) { int r; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = setup_call(NODE_CAR(node), env, state); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: if (QUANT_(node)->upper == 0) state |= IN_ZERO_REPEAT; r = setup_call(NODE_BODY(node), env, state); break; case NODE_ANCHOR: if (ANCHOR_HAS_BODY(ANCHOR_(node))) r = setup_call(NODE_BODY(node), env, state); else r = 0; break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if ((state & IN_ZERO_REPEAT) != 0) { NODE_STATUS_ADD(node, NST_IN_ZERO_REPEAT); ENCLOSURE_(node)->m.entry_count--; } r = setup_call(NODE_BODY(node), env, state); } else if (en->type == ENCLOSURE_IF_ELSE) { r = setup_call(NODE_BODY(node), env, state); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = setup_call(en->te.Then, env, state); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) r = setup_call(en->te.Else, env, state); } else r = setup_call(NODE_BODY(node), env, state); } break; case NODE_CALL: if ((state & IN_ZERO_REPEAT) != 0) { NODE_STATUS_ADD(node, NST_IN_ZERO_REPEAT); CALL_(node)->entry_count--; } r = setup_call_node_call(CALL_(node), env, state); break; default: r = 0; break; } return r; } static int setup_call2(Node* node) { int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: case NODE_ALT: do { r = setup_call2(NODE_CAR(node)); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: if (QUANT_(node)->upper != 0) r = setup_call2(NODE_BODY(node)); break; case NODE_ANCHOR: if (ANCHOR_HAS_BODY(ANCHOR_(node))) r = setup_call2(NODE_BODY(node)); break; case NODE_ENCLOSURE: if (! NODE_IS_IN_ZERO_REPEAT(node)) r = setup_call2(NODE_BODY(node)); { EnclosureNode* en = ENCLOSURE_(node); if (r != 0) return r; if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { r = setup_call2(en->te.Then); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) r = setup_call2(en->te.Else); } } break; case NODE_CALL: if (! NODE_IS_IN_ZERO_REPEAT(node)) { setup_call2_call(node); } break; default: break; } return r; } static void setup_called_state_call(Node* node, int state) { switch (NODE_TYPE(node)) { case NODE_ALT: state |= IN_ALT; /* fall */ case NODE_LIST: do { setup_called_state_call(NODE_CAR(node), state); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; setup_called_state_call(NODE_QUANT_BODY(qn), state); } break; case NODE_ANCHOR: { AnchorNode* an = ANCHOR_(node); switch (an->type) { case ANCHOR_PREC_READ_NOT: case ANCHOR_LOOK_BEHIND_NOT: state |= IN_NOT; /* fall */ case ANCHOR_PREC_READ: case ANCHOR_LOOK_BEHIND: setup_called_state_call(NODE_ANCHOR_BODY(an), state); break; default: break; } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_MEMORY) { if (NODE_IS_MARK1(node)) { if ((~en->m.called_state & state) != 0) { en->m.called_state |= state; setup_called_state_call(NODE_BODY(node), state); } } else { NODE_STATUS_ADD(node, NST_MARK1); en->m.called_state |= state; setup_called_state_call(NODE_BODY(node), state); NODE_STATUS_REMOVE(node, NST_MARK1); } } else if (en->type == ENCLOSURE_IF_ELSE) { if (IS_NOT_NULL(en->te.Then)) { setup_called_state_call(en->te.Then, state); } if (IS_NOT_NULL(en->te.Else)) setup_called_state_call(en->te.Else, state); } else { setup_called_state_call(NODE_BODY(node), state); } } break; case NODE_CALL: setup_called_state_call(NODE_BODY(node), state); break; default: break; } } static void setup_called_state(Node* node, int state) { switch (NODE_TYPE(node)) { case NODE_ALT: state |= IN_ALT; /* fall */ case NODE_LIST: do { setup_called_state(NODE_CAR(node), state); } while (IS_NOT_NULL(node = NODE_CDR(node))); break; #ifdef USE_CALL case NODE_CALL: setup_called_state_call(node, state); break; #endif case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_MEMORY: if (en->m.entry_count > 1) state |= IN_MULTI_ENTRY; en->m.called_state |= state; /* fall */ case ENCLOSURE_OPTION: case ENCLOSURE_STOP_BACKTRACK: setup_called_state(NODE_BODY(node), state); break; case ENCLOSURE_IF_ELSE: setup_called_state(NODE_BODY(node), state); if (IS_NOT_NULL(en->te.Then)) setup_called_state(en->te.Then, state); if (IS_NOT_NULL(en->te.Else)) setup_called_state(en->te.Else, state); break; } } break; case NODE_QUANT: { QuantNode* qn = QUANT_(node); if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; setup_called_state(NODE_QUANT_BODY(qn), state); } break; case NODE_ANCHOR: { AnchorNode* an = ANCHOR_(node); switch (an->type) { case ANCHOR_PREC_READ_NOT: case ANCHOR_LOOK_BEHIND_NOT: state |= IN_NOT; /* fall */ case ANCHOR_PREC_READ: case ANCHOR_LOOK_BEHIND: setup_called_state(NODE_ANCHOR_BODY(an), state); break; default: break; } } break; case NODE_BACKREF: case NODE_STRING: case NODE_CTYPE: case NODE_CCLASS: case NODE_GIMMICK: default: break; } } #endif /* USE_CALL */ static int setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env); #ifdef __GNUC__ __inline #endif static int setup_anchor(Node* node, regex_t* reg, int state, ScanEnv* env) { /* allowed node types in look-behind */ #define ALLOWED_TYPE_IN_LB \ ( BIT_NODE_LIST | BIT_NODE_ALT | BIT_NODE_STRING | BIT_NODE_CCLASS \ | BIT_NODE_CTYPE | BIT_NODE_ANCHOR | BIT_NODE_ENCLOSURE | BIT_NODE_QUANT \ | BIT_NODE_CALL ) #define ALLOWED_ENCLOSURE_IN_LB ( 1<type) { case ANCHOR_PREC_READ: r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); break; case ANCHOR_PREC_READ_NOT: r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); break; case ANCHOR_LOOK_BEHIND: { r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, ALLOWED_ENCLOSURE_IN_LB, ALLOWED_ANCHOR_IN_LB); if (r < 0) return r; if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; r = setup_tree(NODE_ANCHOR_BODY(an), reg, state, env); if (r != 0) return r; r = setup_look_behind(node, reg, env); } break; case ANCHOR_LOOK_BEHIND_NOT: { r = check_type_tree(NODE_ANCHOR_BODY(an), ALLOWED_TYPE_IN_LB, ALLOWED_ENCLOSURE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT); if (r < 0) return r; if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN; r = setup_tree(NODE_ANCHOR_BODY(an), reg, (state | IN_NOT), env); if (r != 0) return r; r = setup_look_behind(node, reg, env); } break; default: r = 0; break; } return r; } #ifdef __GNUC__ __inline #endif static int setup_quant(Node* node, regex_t* reg, int state, ScanEnv* env) { int r; OnigLen d; QuantNode* qn = QUANT_(node); Node* body = NODE_BODY(node); if ((state & IN_REAL_REPEAT) != 0) { NODE_STATUS_ADD(node, NST_IN_REAL_REPEAT); } if ((state & IN_MULTI_ENTRY) != 0) { NODE_STATUS_ADD(node, NST_IN_MULTI_ENTRY); } if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) { d = tree_min_len(body, env); if (d == 0) { #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT qn->body_empty_info = quantifiers_memory_node_info(body); if (qn->body_empty_info == QUANT_BODY_IS_EMPTY_REC) { if (NODE_TYPE(body) == NODE_ENCLOSURE && ENCLOSURE_(body)->type == ENCLOSURE_MEMORY) { MEM_STATUS_ON(env->bt_mem_end, ENCLOSURE_(body)->m.regnum); } } #else qn->body_empty_info = QUANT_BODY_IS_EMPTY; #endif } } if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 2) state |= IN_REAL_REPEAT; if (qn->lower != qn->upper) state |= IN_VAR_REPEAT; r = setup_tree(body, reg, state, env); if (r != 0) return r; /* expand string */ #define EXPAND_STRING_MAX_LENGTH 100 if (NODE_TYPE(body) == NODE_STRING) { if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper && qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) { int len = NODE_STRING_LEN(body); StrNode* sn = STR_(body); if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) { int i, n = qn->lower; onig_node_conv_to_str_node(node, STR_(body)->flag); for (i = 0; i < n; i++) { r = onig_node_str_cat(node, sn->s, sn->end); if (r != 0) return r; } onig_node_free(body); return r; } } } #ifdef USE_OP_PUSH_OR_JUMP_EXACT if (qn->greedy && (qn->body_empty_info != 0)) { if (NODE_TYPE(body) == NODE_QUANT) { QuantNode* tqn = QUANT_(body); if (IS_NOT_NULL(tqn->head_exact)) { qn->head_exact = tqn->head_exact; tqn->head_exact = NULL; } } else { qn->head_exact = get_head_value_node(NODE_BODY(node), 1, reg); } } #endif return r; } /* setup_tree does the following work. 1. check empty loop. (set qn->body_empty_info) 2. expand ignore-case in char class. 3. set memory status bit flags. (reg->mem_stats) 4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact]. 5. find invalid patterns in look-behind. 6. expand repeated string. */ static int setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env) { int r = 0; switch (NODE_TYPE(node)) { case NODE_LIST: { Node* prev = NULL_NODE; do { r = setup_tree(NODE_CAR(node), reg, state, env); if (IS_NOT_NULL(prev) && r == 0) { r = next_setup(prev, NODE_CAR(node), reg); } prev = NODE_CAR(node); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); } break; case NODE_ALT: do { r = setup_tree(NODE_CAR(node), reg, (state | IN_ALT), env); } while (r == 0 && IS_NOT_NULL(node = NODE_CDR(node))); break; case NODE_STRING: if (IS_IGNORECASE(reg->options) && !NODE_STRING_IS_RAW(node)) { r = expand_case_fold_string(node, reg); } break; case NODE_BACKREF: { int i; int* p; BackRefNode* br = BACKREF_(node); p = BACKREFS_P(br); for (i = 0; i < br->back_num; i++) { if (p[i] > env->num_mem) return ONIGERR_INVALID_BACKREF; MEM_STATUS_ON(env->backrefed_mem, p[i]); MEM_STATUS_ON(env->bt_mem_start, p[i]); #ifdef USE_BACKREF_WITH_LEVEL if (NODE_IS_NEST_LEVEL(node)) { MEM_STATUS_ON(env->bt_mem_end, p[i]); } #endif } } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_OPTION: { OnigOptionType options = reg->options; reg->options = ENCLOSURE_(node)->o.options; r = setup_tree(NODE_BODY(node), reg, state, env); reg->options = options; } break; case ENCLOSURE_MEMORY: #ifdef USE_CALL state |= en->m.called_state; #endif if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT | IN_MULTI_ENTRY)) != 0 || NODE_IS_RECURSION(node)) { MEM_STATUS_ON(env->bt_mem_start, en->m.regnum); } r = setup_tree(NODE_BODY(node), reg, state, env); break; case ENCLOSURE_STOP_BACKTRACK: { Node* target = NODE_BODY(node); r = setup_tree(target, reg, state, env); if (NODE_TYPE(target) == NODE_QUANT) { QuantNode* tqn = QUANT_(target); if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 && tqn->greedy != 0) { /* (?>a*), a*+ etc... */ if (NODE_IS_SIMPLE_TYPE(NODE_BODY(target))) NODE_STATUS_ADD(node, NST_STOP_BT_SIMPLE_REPEAT); } } } break; case ENCLOSURE_IF_ELSE: r = setup_tree(NODE_BODY(node), reg, (state | IN_ALT), env); if (r != 0) return r; if (IS_NOT_NULL(en->te.Then)) { r = setup_tree(en->te.Then, reg, (state | IN_ALT), env); if (r != 0) return r; } if (IS_NOT_NULL(en->te.Else)) r = setup_tree(en->te.Else, reg, (state | IN_ALT), env); break; } } break; case NODE_QUANT: r = setup_quant(node, reg, state, env); break; case NODE_ANCHOR: r = setup_anchor(node, reg, state, env); break; #ifdef USE_CALL case NODE_CALL: #endif case NODE_CTYPE: case NODE_CCLASS: case NODE_GIMMICK: default: break; } return r; } /* set skip map for Boyer-Moore search */ static int set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, UChar skip[], int** int_skip) { int i, len; len = (int )(end - s); if (len < ONIG_CHAR_TABLE_SIZE) { for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = len; for (i = 0; i < len - 1; i++) skip[s[i]] = len - 1 - i; } else { if (IS_NULL(*int_skip)) { *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); if (IS_NULL(*int_skip)) return ONIGERR_MEMORY; } for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = len; for (i = 0; i < len - 1; i++) (*int_skip)[s[i]] = len - 1 - i; } return 0; } #define OPT_EXACT_MAXLEN 24 typedef struct { OnigLen min; /* min byte length */ OnigLen max; /* max byte length */ } MinMaxLen; typedef struct { MinMaxLen mmd; OnigEncoding enc; OnigOptionType options; OnigCaseFoldType case_fold_flag; ScanEnv* scan_env; } OptEnv; typedef struct { int left; int right; } OptAnc; typedef struct { MinMaxLen mmd; /* info position */ OptAnc anc; int reach_end; int ignore_case; int len; UChar s[OPT_EXACT_MAXLEN]; } OptExact; typedef struct { MinMaxLen mmd; /* info position */ OptAnc anc; int value; /* weighted value */ UChar map[ONIG_CHAR_TABLE_SIZE]; } OptMap; typedef struct { MinMaxLen len; OptAnc anc; OptExact exb; /* boundary */ OptExact exm; /* middle */ OptExact expr; /* prec read (?=...) */ OptMap map; /* boundary */ } NodeOpt; static int map_position_value(OnigEncoding enc, int i) { static const short int ByteValTable[] = { 5, 1, 1, 1, 1, 1, 1, 1, 1, 10, 10, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 4, 7, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5, 5, 5, 5, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 1 }; if (i < (int )(sizeof(ByteValTable)/sizeof(ByteValTable[0]))) { if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1) return 20; else return (int )ByteValTable[i]; } else return 4; /* Take it easy. */ } static int distance_value(MinMaxLen* mm) { /* 1000 / (min-max-dist + 1) */ static const short int dist_vals[] = { 1000, 500, 333, 250, 200, 167, 143, 125, 111, 100, 91, 83, 77, 71, 67, 63, 59, 56, 53, 50, 48, 45, 43, 42, 40, 38, 37, 36, 34, 33, 32, 31, 30, 29, 29, 28, 27, 26, 26, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 16, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10 }; OnigLen d; if (mm->max == INFINITE_LEN) return 0; d = mm->max - mm->min; if (d < (OnigLen )(sizeof(dist_vals)/sizeof(dist_vals[0]))) /* return dist_vals[d] * 16 / (mm->min + 12); */ return (int )dist_vals[d]; else return 1; } static int comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2) { if (v2 <= 0) return -1; if (v1 <= 0) return 1; v1 *= distance_value(d1); v2 *= distance_value(d2); if (v2 > v1) return 1; if (v2 < v1) return -1; if (d2->min < d1->min) return 1; if (d2->min > d1->min) return -1; return 0; } static int is_equal_mml(MinMaxLen* a, MinMaxLen* b) { return (a->min == b->min && a->max == b->max) ? 1 : 0; } static void set_mml(MinMaxLen* mml, OnigLen min, OnigLen max) { mml->min = min; mml->max = max; } static void clear_mml(MinMaxLen* mml) { mml->min = mml->max = 0; } static void copy_mml(MinMaxLen* to, MinMaxLen* from) { to->min = from->min; to->max = from->max; } static void add_mml(MinMaxLen* to, MinMaxLen* from) { to->min = distance_add(to->min, from->min); to->max = distance_add(to->max, from->max); } static void alt_merge_mml(MinMaxLen* to, MinMaxLen* from) { if (to->min > from->min) to->min = from->min; if (to->max < from->max) to->max = from->max; } static void copy_opt_env(OptEnv* to, OptEnv* from) { *to = *from; } static void clear_opt_anc_info(OptAnc* anc) { anc->left = 0; anc->right = 0; } static void copy_opt_anc_info(OptAnc* to, OptAnc* from) { *to = *from; } static void concat_opt_anc_info(OptAnc* to, OptAnc* left, OptAnc* right, OnigLen left_len, OnigLen right_len) { clear_opt_anc_info(to); to->left = left->left; if (left_len == 0) { to->left |= right->left; } to->right = right->right; if (right_len == 0) { to->right |= left->right; } else { to->right |= (left->right & ANCHOR_PREC_READ_NOT); } } static int is_left(int anc) { if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF || anc == ANCHOR_END_LINE || anc == ANCHOR_PREC_READ || anc == ANCHOR_PREC_READ_NOT) return 0; return 1; } static int is_set_opt_anc_info(OptAnc* to, int anc) { if ((to->left & anc) != 0) return 1; return ((to->right & anc) != 0 ? 1 : 0); } static void add_opt_anc_info(OptAnc* to, int anc) { if (is_left(anc)) to->left |= anc; else to->right |= anc; } static void remove_opt_anc_info(OptAnc* to, int anc) { if (is_left(anc)) to->left &= ~anc; else to->right &= ~anc; } static void alt_merge_opt_anc_info(OptAnc* to, OptAnc* add) { to->left &= add->left; to->right &= add->right; } static int is_full_opt_exact(OptExact* ex) { return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0); } static void clear_opt_exact(OptExact* ex) { clear_mml(&ex->mmd); clear_opt_anc_info(&ex->anc); ex->reach_end = 0; ex->ignore_case = 0; ex->len = 0; ex->s[0] = '\0'; } static void copy_opt_exact(OptExact* to, OptExact* from) { *to = *from; } static void concat_opt_exact(OptExact* to, OptExact* add, OnigEncoding enc) { int i, j, len; UChar *p, *end; OptAnc tanc; if (! to->ignore_case && add->ignore_case) { if (to->len >= add->len) return ; /* avoid */ to->ignore_case = 1; } p = add->s; end = p + add->len; for (i = to->len; p < end; ) { len = enclen(enc, p); if (i + len > OPT_EXACT_MAXLEN) break; for (j = 0; j < len && p < end; j++) to->s[i++] = *p++; } to->len = i; to->reach_end = (p == end ? add->reach_end : 0); concat_opt_anc_info(&tanc, &to->anc, &add->anc, 1, 1); if (! to->reach_end) tanc.right = 0; copy_opt_anc_info(&to->anc, &tanc); } static void concat_opt_exact_str(OptExact* to, UChar* s, UChar* end, int raw ARG_UNUSED, OnigEncoding enc) { int i, j, len; UChar *p; for (i = to->len, p = s; p < end && i < OPT_EXACT_MAXLEN; ) { len = enclen(enc, p); if (i + len > OPT_EXACT_MAXLEN) break; for (j = 0; j < len && p < end; j++) to->s[i++] = *p++; } to->len = i; } static void alt_merge_opt_exact(OptExact* to, OptExact* add, OptEnv* env) { int i, j, len; if (add->len == 0 || to->len == 0) { clear_opt_exact(to); return ; } if (! is_equal_mml(&to->mmd, &add->mmd)) { clear_opt_exact(to); return ; } for (i = 0; i < to->len && i < add->len; ) { if (to->s[i] != add->s[i]) break; len = enclen(env->enc, to->s + i); for (j = 1; j < len; j++) { if (to->s[i+j] != add->s[i+j]) break; } if (j < len) break; i += len; } if (! add->reach_end || i < add->len || i < to->len) { to->reach_end = 0; } to->len = i; to->ignore_case |= add->ignore_case; alt_merge_opt_anc_info(&to->anc, &add->anc); if (! to->reach_end) to->anc.right = 0; } static void select_opt_exact(OnigEncoding enc, OptExact* now, OptExact* alt) { int v1, v2; v1 = now->len; v2 = alt->len; if (v2 == 0) { return ; } else if (v1 == 0) { copy_opt_exact(now, alt); return ; } else if (v1 <= 2 && v2 <= 2) { /* ByteValTable[x] is big value --> low price */ v2 = map_position_value(enc, now->s[0]); v1 = map_position_value(enc, alt->s[0]); if (now->len > 1) v1 += 5; if (alt->len > 1) v2 += 5; } if (now->ignore_case == 0) v1 *= 2; if (alt->ignore_case == 0) v2 *= 2; if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) copy_opt_exact(now, alt); } static void clear_opt_map(OptMap* map) { static const OptMap clean_info = { {0, 0}, {0, 0}, 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; xmemcpy(map, &clean_info, sizeof(OptMap)); } static void copy_opt_map(OptMap* to, OptMap* from) { *to = *from; } static void add_char_opt_map(OptMap* map, UChar c, OnigEncoding enc) { if (map->map[c] == 0) { map->map[c] = 1; map->value += map_position_value(enc, c); } } static int add_char_amb_opt_map(OptMap* map, UChar* p, UChar* end, OnigEncoding enc, OnigCaseFoldType case_fold_flag) { OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM]; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; int i, n; add_char_opt_map(map, p[0], enc); case_fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag); n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, case_fold_flag, p, end, items); if (n < 0) return n; for (i = 0; i < n; i++) { ONIGENC_CODE_TO_MBC(enc, items[i].code[0], buf); add_char_opt_map(map, buf[0], enc); } return 0; } static void select_opt_map(OptMap* now, OptMap* alt) { static int z = 1<<15; /* 32768: something big value */ int v1, v2; if (alt->value == 0) return ; if (now->value == 0) { copy_opt_map(now, alt); return ; } v1 = z / now->value; v2 = z / alt->value; if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0) copy_opt_map(now, alt); } static int comp_opt_exact_or_map(OptExact* e, OptMap* m) { #define COMP_EM_BASE 20 int ve, vm; if (m->value <= 0) return -1; ve = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2); vm = COMP_EM_BASE * 5 * 2 / m->value; return comp_distance_value(&e->mmd, &m->mmd, ve, vm); } static void alt_merge_opt_map(OnigEncoding enc, OptMap* to, OptMap* add) { int i, val; /* if (! is_equal_mml(&to->mmd, &add->mmd)) return ; */ if (to->value == 0) return ; if (add->value == 0 || to->mmd.max < add->mmd.min) { clear_opt_map(to); return ; } alt_merge_mml(&to->mmd, &add->mmd); val = 0; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { if (add->map[i]) to->map[i] = 1; if (to->map[i]) val += map_position_value(enc, i); } to->value = val; alt_merge_opt_anc_info(&to->anc, &add->anc); } static void set_bound_node_opt_info(NodeOpt* opt, MinMaxLen* mmd) { copy_mml(&(opt->exb.mmd), mmd); copy_mml(&(opt->expr.mmd), mmd); copy_mml(&(opt->map.mmd), mmd); } static void clear_node_opt_info(NodeOpt* opt) { clear_mml(&opt->len); clear_opt_anc_info(&opt->anc); clear_opt_exact(&opt->exb); clear_opt_exact(&opt->exm); clear_opt_exact(&opt->expr); clear_opt_map(&opt->map); } static void copy_node_opt_info(NodeOpt* to, NodeOpt* from) { *to = *from; } static void concat_left_node_opt_info(OnigEncoding enc, NodeOpt* to, NodeOpt* add) { int exb_reach, exm_reach; OptAnc tanc; concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max); copy_opt_anc_info(&to->anc, &tanc); if (add->exb.len > 0 && to->len.max == 0) { concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc, to->len.max, add->len.max); copy_opt_anc_info(&add->exb.anc, &tanc); } if (add->map.value > 0 && to->len.max == 0) { if (add->map.mmd.max == 0) add->map.anc.left |= to->anc.left; } exb_reach = to->exb.reach_end; exm_reach = to->exm.reach_end; if (add->len.max != 0) to->exb.reach_end = to->exm.reach_end = 0; if (add->exb.len > 0) { if (exb_reach) { concat_opt_exact(&to->exb, &add->exb, enc); clear_opt_exact(&add->exb); } else if (exm_reach) { concat_opt_exact(&to->exm, &add->exb, enc); clear_opt_exact(&add->exb); } } select_opt_exact(enc, &to->exm, &add->exb); select_opt_exact(enc, &to->exm, &add->exm); if (to->expr.len > 0) { if (add->len.max > 0) { if (to->expr.len > (int )add->len.max) to->expr.len = add->len.max; if (to->expr.mmd.max == 0) select_opt_exact(enc, &to->exb, &to->expr); else select_opt_exact(enc, &to->exm, &to->expr); } } else if (add->expr.len > 0) { copy_opt_exact(&to->expr, &add->expr); } select_opt_map(&to->map, &add->map); add_mml(&to->len, &add->len); } static void alt_merge_node_opt_info(NodeOpt* to, NodeOpt* add, OptEnv* env) { alt_merge_opt_anc_info(&to->anc, &add->anc); alt_merge_opt_exact(&to->exb, &add->exb, env); alt_merge_opt_exact(&to->exm, &add->exm, env); alt_merge_opt_exact(&to->expr, &add->expr, env); alt_merge_opt_map(env->enc, &to->map, &add->map); alt_merge_mml(&to->len, &add->len); } #define MAX_NODE_OPT_INFO_REF_COUNT 5 static int optimize_nodes(Node* node, NodeOpt* opt, OptEnv* env) { OnigEncoding enc; int i; int r = 0; enc = env->enc; clear_node_opt_info(opt); set_bound_node_opt_info(opt, &env->mmd); switch (NODE_TYPE(node)) { case NODE_LIST: { OptEnv nenv; NodeOpt nopt; Node* nd = node; copy_opt_env(&nenv, env); do { r = optimize_nodes(NODE_CAR(nd), &nopt, &nenv); if (r == 0) { add_mml(&nenv.mmd, &nopt.len); concat_left_node_opt_info(enc, opt, &nopt); } } while (r == 0 && IS_NOT_NULL(nd = NODE_CDR(nd))); } break; case NODE_ALT: { NodeOpt nopt; Node* nd = node; do { r = optimize_nodes(NODE_CAR(nd), &nopt, env); if (r == 0) { if (nd == node) copy_node_opt_info(opt, &nopt); else alt_merge_node_opt_info(opt, &nopt, env); } } while ((r == 0) && IS_NOT_NULL(nd = NODE_CDR(nd))); } break; case NODE_STRING: { StrNode* sn = STR_(node); int slen = (int )(sn->end - sn->s); int is_raw = NODE_STRING_IS_RAW(node); if (! NODE_STRING_IS_AMBIG(node)) { concat_opt_exact_str(&opt->exb, sn->s, sn->end, NODE_STRING_IS_RAW(node), enc); if (slen > 0) { add_char_opt_map(&opt->map, *(sn->s), enc); } set_mml(&opt->len, slen, slen); } else { int max; if (NODE_STRING_IS_DONT_GET_OPT_INFO(node)) { int n = onigenc_strlen(enc, sn->s, sn->end); max = ONIGENC_MBC_MAXLEN_DIST(enc) * n; } else { concat_opt_exact_str(&opt->exb, sn->s, sn->end, is_raw, enc); opt->exb.ignore_case = 1; if (slen > 0) { r = add_char_amb_opt_map(&opt->map, sn->s, sn->end, enc, env->case_fold_flag); if (r != 0) break; } max = slen; } set_mml(&opt->len, slen, max); } if (opt->exb.len == slen) opt->exb.reach_end = 1; } break; case NODE_CCLASS: { int z; CClassNode* cc = CCLASS_(node); /* no need to check ignore case. (set in setup_tree()) */ if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) { OnigLen min = ONIGENC_MBC_MINLEN(enc); OnigLen max = ONIGENC_MBC_MAXLEN_DIST(enc); set_mml(&opt->len, min, max); } else { for (i = 0; i < SINGLE_BYTE_SIZE; i++) { z = BITSET_AT(cc->bs, i); if ((z && ! IS_NCCLASS_NOT(cc)) || (! z && IS_NCCLASS_NOT(cc))) { add_char_opt_map(&opt->map, (UChar )i, enc); } } set_mml(&opt->len, 1, 1); } } break; case NODE_CTYPE: { int min, max; int range; max = ONIGENC_MBC_MAXLEN_DIST(enc); if (max == 1) { min = 1; switch (CTYPE_(node)->ctype) { case CTYPE_ANYCHAR: break; case ONIGENC_CTYPE_WORD: range = CTYPE_(node)->ascii_mode != 0 ? 128 : SINGLE_BYTE_SIZE; if (CTYPE_(node)->not != 0) { for (i = 0; i < range; i++) { if (! ONIGENC_IS_CODE_WORD(enc, i)) { add_char_opt_map(&opt->map, (UChar )i, enc); } } for (i = range; i < SINGLE_BYTE_SIZE; i++) { add_char_opt_map(&opt->map, (UChar )i, enc); } } else { for (i = 0; i < range; i++) { if (ONIGENC_IS_CODE_WORD(enc, i)) { add_char_opt_map(&opt->map, (UChar )i, enc); } } } break; } } else { min = ONIGENC_MBC_MINLEN(enc); } set_mml(&opt->len, min, max); } break; case NODE_ANCHOR: switch (ANCHOR_(node)->type) { case ANCHOR_BEGIN_BUF: case ANCHOR_BEGIN_POSITION: case ANCHOR_BEGIN_LINE: case ANCHOR_END_BUF: case ANCHOR_SEMI_END_BUF: case ANCHOR_END_LINE: case ANCHOR_PREC_READ_NOT: case ANCHOR_LOOK_BEHIND: add_opt_anc_info(&opt->anc, ANCHOR_(node)->type); break; case ANCHOR_PREC_READ: { NodeOpt nopt; r = optimize_nodes(NODE_BODY(node), &nopt, env); if (r == 0) { if (nopt.exb.len > 0) copy_opt_exact(&opt->expr, &nopt.exb); else if (nopt.exm.len > 0) copy_opt_exact(&opt->expr, &nopt.exm); opt->expr.reach_end = 0; if (nopt.map.value > 0) copy_opt_map(&opt->map, &nopt.map); } } break; case ANCHOR_LOOK_BEHIND_NOT: break; } break; case NODE_BACKREF: if (! NODE_IS_CHECKER(node)) { int* backs; OnigLen min, max, tmin, tmax; MemEnv* mem_env = SCANENV_MEMENV(env->scan_env); BackRefNode* br = BACKREF_(node); if (NODE_IS_RECURSION(node)) { set_mml(&opt->len, 0, INFINITE_LEN); break; } backs = BACKREFS_P(br); min = tree_min_len(mem_env[backs[0]].node, env->scan_env); max = tree_max_len(mem_env[backs[0]].node, env->scan_env); for (i = 1; i < br->back_num; i++) { tmin = tree_min_len(mem_env[backs[i]].node, env->scan_env); tmax = tree_max_len(mem_env[backs[i]].node, env->scan_env); if (min > tmin) min = tmin; if (max < tmax) max = tmax; } set_mml(&opt->len, min, max); } break; #ifdef USE_CALL case NODE_CALL: if (NODE_IS_RECURSION(node)) set_mml(&opt->len, 0, INFINITE_LEN); else { OnigOptionType save = env->options; env->options = ENCLOSURE_(NODE_BODY(node))->o.options; r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } break; #endif case NODE_QUANT: { OnigLen min, max; NodeOpt nopt; QuantNode* qn = QUANT_(node); r = optimize_nodes(NODE_BODY(node), &nopt, env); if (r != 0) break; if (qn->lower == 0 && IS_REPEAT_INFINITE(qn->upper)) { if (env->mmd.max == 0 && NODE_IS_ANYCHAR(NODE_BODY(node)) && qn->greedy != 0) { if (IS_MULTILINE(CTYPE_OPTION(NODE_QUANT_BODY(qn), env))) add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_ML); else add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR); } } else { if (qn->lower > 0) { copy_node_opt_info(opt, &nopt); if (nopt.exb.len > 0) { if (nopt.exb.reach_end) { for (i = 2; i <= qn->lower && ! is_full_opt_exact(&opt->exb); i++) { concat_opt_exact(&opt->exb, &nopt.exb, enc); } if (i < qn->lower) opt->exb.reach_end = 0; } } if (qn->lower != qn->upper) { opt->exb.reach_end = 0; opt->exm.reach_end = 0; } if (qn->lower > 1) opt->exm.reach_end = 0; } } min = distance_multiply(nopt.len.min, qn->lower); if (IS_REPEAT_INFINITE(qn->upper)) max = (nopt.len.max > 0 ? INFINITE_LEN : 0); else max = distance_multiply(nopt.len.max, qn->upper); set_mml(&opt->len, min, max); } break; case NODE_ENCLOSURE: { EnclosureNode* en = ENCLOSURE_(node); switch (en->type) { case ENCLOSURE_OPTION: { OnigOptionType save = env->options; env->options = en->o.options; r = optimize_nodes(NODE_BODY(node), opt, env); env->options = save; } break; case ENCLOSURE_MEMORY: #ifdef USE_CALL en->opt_count++; if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) { OnigLen min, max; min = 0; max = INFINITE_LEN; if (NODE_IS_MIN_FIXED(node)) min = en->min_len; if (NODE_IS_MAX_FIXED(node)) max = en->max_len; set_mml(&opt->len, min, max); } else #endif { r = optimize_nodes(NODE_BODY(node), opt, env); if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) { if (MEM_STATUS_AT0(env->scan_env->backrefed_mem, en->m.regnum)) remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK); } } break; case ENCLOSURE_STOP_BACKTRACK: r = optimize_nodes(NODE_BODY(node), opt, env); break; case ENCLOSURE_IF_ELSE: { OptEnv nenv; NodeOpt nopt; copy_opt_env(&nenv, env); r = optimize_nodes(NODE_ENCLOSURE_BODY(en), &nopt, &nenv); if (r == 0) { add_mml(&nenv.mmd, &nopt.len); concat_left_node_opt_info(enc, opt, &nopt); if (IS_NOT_NULL(en->te.Then)) { r = optimize_nodes(en->te.Then, &nopt, &nenv); if (r == 0) { concat_left_node_opt_info(enc, opt, &nopt); } } if (IS_NOT_NULL(en->te.Else)) { r = optimize_nodes(en->te.Else, &nopt, env); if (r == 0) alt_merge_node_opt_info(opt, &nopt, env); } } } break; } } break; case NODE_GIMMICK: break; default: #ifdef ONIG_DEBUG fprintf(stderr, "optimize_nodes: undefined node type %d\n", NODE_TYPE(node)); #endif r = ONIGERR_TYPE_BUG; break; } return r; } static int set_optimize_exact(regex_t* reg, OptExact* e) { int r; if (e->len == 0) return 0; if (e->ignore_case) { reg->exact = (UChar* )xmalloc(e->len); CHECK_NULL_RETURN_MEMERR(reg->exact); xmemcpy(reg->exact, e->s, e->len); reg->exact_end = reg->exact + e->len; reg->optimize = ONIG_OPTIMIZE_EXACT_IC; } else { int allow_reverse; reg->exact = str_dup(e->s, e->s + e->len); CHECK_NULL_RETURN_MEMERR(reg->exact); reg->exact_end = reg->exact + e->len; allow_reverse = ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end); if (e->len >= 3 || (e->len >= 2 && allow_reverse)) { r = set_bm_skip(reg->exact, reg->exact_end, reg->enc, reg->map, &(reg->int_map)); if (r != 0) return r; reg->optimize = (allow_reverse != 0 ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV); } else { reg->optimize = ONIG_OPTIMIZE_EXACT; } } reg->dmin = e->mmd.min; reg->dmax = e->mmd.max; if (reg->dmin != INFINITE_LEN) { reg->threshold_len = reg->dmin + (int )(reg->exact_end - reg->exact); } return 0; } static void set_optimize_map(regex_t* reg, OptMap* m) { int i; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) reg->map[i] = m->map[i]; reg->optimize = ONIG_OPTIMIZE_MAP; reg->dmin = m->mmd.min; reg->dmax = m->mmd.max; if (reg->dmin != INFINITE_LEN) { reg->threshold_len = reg->dmin + 1; } } static void set_sub_anchor(regex_t* reg, OptAnc* anc) { reg->sub_anchor |= anc->left & ANCHOR_BEGIN_LINE; reg->sub_anchor |= anc->right & ANCHOR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) static void print_optimize_info(FILE* f, regex_t* reg); #endif static int set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env) { int r; NodeOpt opt; OptEnv env; env.enc = reg->enc; env.options = reg->options; env.case_fold_flag = reg->case_fold_flag; env.scan_env = scan_env; clear_mml(&env.mmd); r = optimize_nodes(node, &opt, &env); if (r != 0) return r; reg->anchor = opt.anc.left & (ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML | ANCHOR_LOOK_BEHIND); if ((opt.anc.left & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) != 0) reg->anchor &= ~ANCHOR_ANYCHAR_STAR_ML; reg->anchor |= opt.anc.right & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF | ANCHOR_PREC_READ_NOT); if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) { reg->anchor_dmin = opt.len.min; reg->anchor_dmax = opt.len.max; } if (opt.exb.len > 0 || opt.exm.len > 0) { select_opt_exact(reg->enc, &opt.exb, &opt.exm); if (opt.map.value > 0 && comp_opt_exact_or_map(&opt.exb, &opt.map) > 0) { goto set_map; } else { r = set_optimize_exact(reg, &opt.exb); set_sub_anchor(reg, &opt.exb.anc); } } else if (opt.map.value > 0) { set_map: set_optimize_map(reg, &opt.map); set_sub_anchor(reg, &opt.map.anc); } else { reg->sub_anchor |= opt.anc.left & ANCHOR_BEGIN_LINE; if (opt.len.max == 0) reg->sub_anchor |= opt.anc.right & ANCHOR_END_LINE; } #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) print_optimize_info(stderr, reg); #endif return r; } static void clear_optimize_info(regex_t* reg) { reg->optimize = ONIG_OPTIMIZE_NONE; reg->anchor = 0; reg->anchor_dmin = 0; reg->anchor_dmax = 0; reg->sub_anchor = 0; reg->exact_end = (UChar* )NULL; reg->threshold_len = 0; if (IS_NOT_NULL(reg->exact)) { xfree(reg->exact); reg->exact = (UChar* )NULL; } } #ifdef ONIG_DEBUG static void print_enc_string(FILE* fp, OnigEncoding enc, const UChar *s, const UChar *end) { fprintf(fp, "\nPATTERN: /"); if (ONIGENC_MBC_MINLEN(enc) > 1) { const UChar *p; OnigCodePoint code; p = s; while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { fprintf(fp, " 0x%04x ", (int )code); } else { fputc((int )code, fp); } p += enclen(enc, p); } } else { while (s < end) { fputc((int )*s, fp); s++; } } fprintf(fp, "/\n"); } #endif /* ONIG_DEBUG */ #if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH) static void print_distance_range(FILE* f, OnigLen a, OnigLen b) { if (a == INFINITE_LEN) fputs("inf", f); else fprintf(f, "(%u)", a); fputs("-", f); if (b == INFINITE_LEN) fputs("inf", f); else fprintf(f, "(%u)", b); } static void print_anchor(FILE* f, int anchor) { int q = 0; fprintf(f, "["); if (anchor & ANCHOR_BEGIN_BUF) { fprintf(f, "begin-buf"); q = 1; } if (anchor & ANCHOR_BEGIN_LINE) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "begin-line"); } if (anchor & ANCHOR_BEGIN_POSITION) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "begin-pos"); } if (anchor & ANCHOR_END_BUF) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "end-buf"); } if (anchor & ANCHOR_SEMI_END_BUF) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "semi-end-buf"); } if (anchor & ANCHOR_END_LINE) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "end-line"); } if (anchor & ANCHOR_ANYCHAR_STAR) { if (q) fprintf(f, ", "); q = 1; fprintf(f, "anychar-star"); } if (anchor & ANCHOR_ANYCHAR_STAR_ML) { if (q) fprintf(f, ", "); fprintf(f, "anychar-star-ml"); } fprintf(f, "]"); } static void print_optimize_info(FILE* f, regex_t* reg) { static const char* on[] = { "NONE", "EXACT", "EXACT_BM", "EXACT_BM_NOT_REV", "EXACT_IC", "MAP" }; fprintf(f, "optimize: %s\n", on[reg->optimize]); fprintf(f, " anchor: "); print_anchor(f, reg->anchor); if ((reg->anchor & ANCHOR_END_BUF_MASK) != 0) print_distance_range(f, reg->anchor_dmin, reg->anchor_dmax); fprintf(f, "\n"); if (reg->optimize) { fprintf(f, " sub anchor: "); print_anchor(f, reg->sub_anchor); fprintf(f, "\n"); } fprintf(f, "\n"); if (reg->exact) { UChar *p; fprintf(f, "exact: ["); for (p = reg->exact; p < reg->exact_end; p++) { fputc(*p, f); } fprintf(f, "]: length: %ld\n", (reg->exact_end - reg->exact)); } else if (reg->optimize & ONIG_OPTIMIZE_MAP) { int c, i, n = 0; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) if (reg->map[i]) n++; fprintf(f, "map: n=%d\n", n); if (n > 0) { c = 0; fputc('[', f); for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) { if (reg->map[i] != 0) { if (c > 0) fputs(", ", f); c++; if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 && ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i)) fputc(i, f); else fprintf(f, "%d", i); } } fprintf(f, "]\n"); } } } #endif extern void onig_free_body(regex_t* reg) { if (IS_NOT_NULL(reg)) { if (IS_NOT_NULL(reg->p)) xfree(reg->p); if (IS_NOT_NULL(reg->exact)) xfree(reg->exact); if (IS_NOT_NULL(reg->int_map)) xfree(reg->int_map); if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward); if (IS_NOT_NULL(reg->repeat_range)) xfree(reg->repeat_range); if (IS_NOT_NULL(REG_EXTP(reg))) xfree(REG_EXTP(reg)); onig_names_free(reg); } } extern void onig_free(regex_t* reg) { if (IS_NOT_NULL(reg)) { onig_free_body(reg); xfree(reg); } } #define REGEX_TRANSFER(to,from) do {\ onig_free_body(to);\ xmemcpy(to, from, sizeof(regex_t));\ xfree(from);\ } while (0) extern void onig_transfer(regex_t* to, regex_t* from) { REGEX_TRANSFER(to, from); } #ifdef ONIG_DEBUG_COMPILE static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg)); #endif #ifdef ONIG_DEBUG_PARSE static void print_tree P_((FILE* f, Node* node)); #endif extern int onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo) { #define COMPILE_INIT_SIZE 20 int r, init_size; Node* root; ScanEnv scan_env; #ifdef USE_CALL UnsetAddrList uslist; #endif root = 0; if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; #ifdef ONIG_DEBUG print_enc_string(stderr, reg->enc, pattern, pattern_end); #endif if (reg->alloc == 0) { init_size = (int )(pattern_end - pattern) * 2; if (init_size <= 0) init_size = COMPILE_INIT_SIZE; r = BB_INIT(reg, init_size); if (r != 0) goto end; } else reg->used = 0; reg->num_mem = 0; reg->num_repeat = 0; reg->num_null_check = 0; reg->repeat_range_alloc = 0; reg->repeat_range = (OnigRepeatRange* )NULL; #ifdef USE_COMBINATION_EXPLOSION_CHECK reg->num_comb_exp_check = 0; #endif r = onig_parse_tree(&root, pattern, pattern_end, reg, &scan_env); if (r != 0) goto err; /* mixed use named group and no-named group */ if (scan_env.num_named > 0 && IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && ! ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { if (scan_env.num_named != scan_env.num_mem) r = disable_noname_group_capture(&root, reg, &scan_env); else r = numbered_ref_check(root); if (r != 0) goto err; } r = check_backrefs(root, &scan_env); if (r != 0) goto err; #ifdef USE_CALL if (scan_env.num_call > 0) { r = unset_addr_list_init(&uslist, scan_env.num_call); if (r != 0) goto err; scan_env.unset_addr_list = &uslist; r = setup_call(root, &scan_env, 0); if (r != 0) goto err_unset; r = setup_call2(root); if (r != 0) goto err_unset; r = recursive_call_check_trav(root, &scan_env, 0); if (r < 0) goto err_unset; r = infinite_recursive_call_check_trav(root, &scan_env); if (r != 0) goto err_unset; setup_called_state(root, 0); } reg->num_call = scan_env.num_call; #endif r = setup_tree(root, reg, 0, &scan_env); if (r != 0) goto err_unset; #ifdef ONIG_DEBUG_PARSE print_tree(stderr, root); #endif reg->capture_history = scan_env.capture_history; reg->bt_mem_start = scan_env.bt_mem_start; reg->bt_mem_start |= reg->capture_history; if (IS_FIND_CONDITION(reg->options)) MEM_STATUS_ON_ALL(reg->bt_mem_end); else { reg->bt_mem_end = scan_env.bt_mem_end; reg->bt_mem_end |= reg->capture_history; } reg->bt_mem_start |= reg->bt_mem_end; #ifdef USE_COMBINATION_EXPLOSION_CHECK if (scan_env.backrefed_mem == 0 #ifdef USE_CALL || scan_env.num_call == 0 #endif ) { setup_comb_exp_check(root, 0, &scan_env); #ifdef USE_CALL if (scan_env.has_recursion != 0) { scan_env.num_comb_exp_check = 0; } else #endif if (scan_env.comb_exp_max_regnum > 0) { int i; for (i = 1; i <= scan_env.comb_exp_max_regnum; i++) { if (MEM_STATUS_AT(scan_env.backrefed_mem, i) != 0) { scan_env.num_comb_exp_check = 0; break; } } } } reg->num_comb_exp_check = scan_env.num_comb_exp_check; #endif clear_optimize_info(reg); #ifndef ONIG_DONT_OPTIMIZE r = set_optimize_info_from_tree(root, reg, &scan_env); if (r != 0) goto err_unset; #endif if (IS_NOT_NULL(scan_env.mem_env_dynamic)) { xfree(scan_env.mem_env_dynamic); scan_env.mem_env_dynamic = (MemEnv* )NULL; } r = compile_tree(root, reg, &scan_env); if (r == 0) { if (scan_env.keep_num > 0) { r = add_opcode(reg, OP_UPDATE_VAR); if (r != 0) goto err; r = add_update_var_type(reg, UPDATE_VAR_KEEP_FROM_STACK_LAST); if (r != 0) goto err; r = add_mem_num(reg, 0 /* not used */); if (r != 0) goto err; } r = add_opcode(reg, OP_END); #ifdef USE_CALL if (scan_env.num_call > 0) { r = unset_addr_list_fix(&uslist, reg); unset_addr_list_end(&uslist); if (r != 0) goto err; } #endif if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0)) reg->stack_pop_level = STACK_POP_LEVEL_ALL; else { if (reg->bt_mem_start != 0) reg->stack_pop_level = STACK_POP_LEVEL_MEM_START; else reg->stack_pop_level = STACK_POP_LEVEL_FREE; } } #ifdef USE_CALL else if (scan_env.num_call > 0) { unset_addr_list_end(&uslist); } #endif onig_node_free(root); #ifdef ONIG_DEBUG_COMPILE onig_print_names(stderr, reg); print_compiled_byte_code_list(stderr, reg); #endif end: return r; err_unset: #ifdef USE_CALL if (scan_env.num_call > 0) { unset_addr_list_end(&uslist); } #endif err: if (IS_NOT_NULL(scan_env.error)) { if (IS_NOT_NULL(einfo)) { einfo->enc = scan_env.enc; einfo->par = scan_env.error; einfo->par_end = scan_env.error_end; } } onig_node_free(root); if (IS_NOT_NULL(scan_env.mem_env_dynamic)) xfree(scan_env.mem_env_dynamic); return r; } static int onig_inited = 0; extern int onig_reg_init(regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax) { int r; xmemset(reg, 0, sizeof(*reg)); if (onig_inited == 0) { #if 0 return ONIGERR_LIBRARY_IS_NOT_INITIALIZED; #else r = onig_initialize(NULL, 0); if (r != 0) return ONIGERR_FAIL_TO_INITIALIZE; r = onig_initialize_encoding(enc); if (r != 0) return ONIGERR_FAIL_TO_INITIALIZE; onig_warning("You didn't call onig_initialize() explicitly"); #endif } if (IS_NULL(reg)) return ONIGERR_INVALID_ARGUMENT; if (ONIGENC_IS_UNDEF(enc)) return ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED; if ((option & (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) == (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) { return ONIGERR_INVALID_COMBINATION_OF_OPTIONS; } if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) { option |= syntax->options; option &= ~ONIG_OPTION_SINGLELINE; } else option |= syntax->options; (reg)->enc = enc; (reg)->options = option; (reg)->syntax = syntax; (reg)->optimize = 0; (reg)->exact = (UChar* )NULL; (reg)->int_map = (int* )NULL; (reg)->int_map_backward = (int* )NULL; REG_EXTPL(reg) = NULL; (reg)->p = (UChar* )NULL; (reg)->alloc = 0; (reg)->used = 0; (reg)->name_table = (void* )NULL; (reg)->case_fold_flag = case_fold_flag; return 0; } extern int onig_new_without_alloc(regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo) { int r; r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); if (r != 0) return r; r = onig_compile(reg, pattern, pattern_end, einfo); return r; } extern int onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo) { int r; *reg = (regex_t* )xmalloc(sizeof(regex_t)); if (IS_NULL(*reg)) return ONIGERR_MEMORY; r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax); if (r != 0) goto err; r = onig_compile(*reg, pattern, pattern_end, einfo); if (r != 0) { err: onig_free(*reg); *reg = NULL; } return r; } extern int onig_initialize(OnigEncoding encodings[], int n) { int i; int r; if (onig_inited != 0) return 0; onigenc_init(); onig_inited = 1; for (i = 0; i < n; i++) { OnigEncoding enc = encodings[i]; r = onig_initialize_encoding(enc); if (r != 0) return r; } return 0; } static OnigEndCallListItemType* EndCallTop; extern void onig_add_end_call(void (*func)(void)) { OnigEndCallListItemType* item; item = (OnigEndCallListItemType* )xmalloc(sizeof(*item)); if (item == 0) return ; item->next = EndCallTop; item->func = func; EndCallTop = item; } static void exec_end_call_list(void) { OnigEndCallListItemType* prev; void (*func)(void); while (EndCallTop != 0) { func = EndCallTop->func; (*func)(); prev = EndCallTop; EndCallTop = EndCallTop->next; xfree(prev); } } extern int onig_end(void) { exec_end_call_list(); onig_inited = 0; return 0; } extern int onig_is_in_code_range(const UChar* p, OnigCodePoint code) { OnigCodePoint n, *data; OnigCodePoint low, high, x; GET_CODE_POINT(n, p); data = (OnigCodePoint* )p; data++; for (low = 0, high = n; low < high; ) { x = (low + high) >> 1; if (code > data[x * 2 + 1]) low = x + 1; else high = x; } return ((low < n && code >= data[low * 2]) ? 1 : 0); } extern int onig_is_code_in_cc_len(int elen, OnigCodePoint code, /* CClassNode* */ void* cc_arg) { int found; CClassNode* cc = (CClassNode* )cc_arg; if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) { if (IS_NULL(cc->mbuf)) { found = 0; } else { found = (onig_is_in_code_range(cc->mbuf->p, code) != 0 ? 1 : 0); } } else { found = (BITSET_AT(cc->bs, code) == 0 ? 0 : 1); } if (IS_NCCLASS_NOT(cc)) return !found; else return found; } extern int onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc) { int len; if (ONIGENC_MBC_MINLEN(enc) > 1) { len = 2; } else { len = ONIGENC_CODE_TO_MBCLEN(enc, code); } return onig_is_code_in_cc_len(len, code, cc); } #ifdef ONIG_DEBUG /* arguments type */ #define ARG_SPECIAL -1 #define ARG_NON 0 #define ARG_RELADDR 1 #define ARG_ABSADDR 2 #define ARG_LENGTH 3 #define ARG_MEMNUM 4 #define ARG_OPTION 5 #define ARG_STATE_CHECK 6 #define ARG_MODE 7 OnigOpInfoType OnigOpInfo[] = { { OP_FINISH, "finish", ARG_NON }, { OP_END, "end", ARG_NON }, { OP_EXACT1, "exact1", ARG_SPECIAL }, { OP_EXACT2, "exact2", ARG_SPECIAL }, { OP_EXACT3, "exact3", ARG_SPECIAL }, { OP_EXACT4, "exact4", ARG_SPECIAL }, { OP_EXACT5, "exact5", ARG_SPECIAL }, { OP_EXACTN, "exactn", ARG_SPECIAL }, { OP_EXACTMB2N1, "exactmb2-n1", ARG_SPECIAL }, { OP_EXACTMB2N2, "exactmb2-n2", ARG_SPECIAL }, { OP_EXACTMB2N3, "exactmb2-n3", ARG_SPECIAL }, { OP_EXACTMB2N, "exactmb2-n", ARG_SPECIAL }, { OP_EXACTMB3N, "exactmb3n" , ARG_SPECIAL }, { OP_EXACTMBN, "exactmbn", ARG_SPECIAL }, { OP_EXACT1_IC, "exact1-ic", ARG_SPECIAL }, { OP_EXACTN_IC, "exactn-ic", ARG_SPECIAL }, { OP_CCLASS, "cclass", ARG_SPECIAL }, { OP_CCLASS_MB, "cclass-mb", ARG_SPECIAL }, { OP_CCLASS_MIX, "cclass-mix", ARG_SPECIAL }, { OP_CCLASS_NOT, "cclass-not", ARG_SPECIAL }, { OP_CCLASS_MB_NOT, "cclass-mb-not", ARG_SPECIAL }, { OP_CCLASS_MIX_NOT, "cclass-mix-not", ARG_SPECIAL }, #ifdef USE_OP_CCLASS_NODE { OP_CCLASS_NODE, "cclass-node", ARG_SPECIAL }, #endif { OP_ANYCHAR, "anychar", ARG_NON }, { OP_ANYCHAR_ML, "anychar-ml", ARG_NON }, { OP_ANYCHAR_STAR, "anychar*", ARG_NON }, { OP_ANYCHAR_ML_STAR, "anychar-ml*", ARG_NON }, { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL }, { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL }, { OP_WORD, "word", ARG_NON }, { OP_WORD_ASCII, "word-ascii", ARG_NON }, { OP_NO_WORD, "not-word", ARG_NON }, { OP_NO_WORD_ASCII, "not-word-ascii", ARG_NON }, { OP_WORD_BOUNDARY, "word-boundary", ARG_MODE }, { OP_NO_WORD_BOUNDARY, "not-word-boundary", ARG_MODE }, { OP_WORD_BEGIN, "word-begin", ARG_MODE }, { OP_WORD_END, "word-end", ARG_MODE }, { OP_BEGIN_BUF, "begin-buf", ARG_NON }, { OP_END_BUF, "end-buf", ARG_NON }, { OP_BEGIN_LINE, "begin-line", ARG_NON }, { OP_END_LINE, "end-line", ARG_NON }, { OP_SEMI_END_BUF, "semi-end-buf", ARG_NON }, { OP_BEGIN_POSITION, "begin-position", ARG_NON }, { OP_BACKREF1, "backref1", ARG_NON }, { OP_BACKREF2, "backref2", ARG_NON }, { OP_BACKREF_N, "backref-n", ARG_MEMNUM }, { OP_BACKREF_N_IC, "backref-n-ic", ARG_SPECIAL }, { OP_BACKREF_MULTI, "backref_multi", ARG_SPECIAL }, { OP_BACKREF_MULTI_IC, "backref_multi-ic", ARG_SPECIAL }, { OP_BACKREF_WITH_LEVEL, "backref_with_level", ARG_SPECIAL }, { OP_BACKREF_CHECK, "backref_check", ARG_SPECIAL }, { OP_BACKREF_CHECK_WITH_LEVEL, "backref_check_with_level", ARG_SPECIAL }, { OP_MEMORY_START_PUSH, "mem-start-push", ARG_MEMNUM }, { OP_MEMORY_START, "mem-start", ARG_MEMNUM }, { OP_MEMORY_END_PUSH, "mem-end-push", ARG_MEMNUM }, { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec", ARG_MEMNUM }, { OP_MEMORY_END, "mem-end", ARG_MEMNUM }, { OP_MEMORY_END_REC, "mem-end-rec", ARG_MEMNUM }, { OP_SET_OPTION_PUSH, "set-option-push", ARG_OPTION }, { OP_SET_OPTION, "set-option", ARG_OPTION }, { OP_FAIL, "fail", ARG_NON }, { OP_JUMP, "jump", ARG_RELADDR }, { OP_PUSH, "push", ARG_RELADDR }, { OP_PUSH_SUPER, "push_SUPER", ARG_RELADDR }, { OP_POP, "pop", ARG_NON }, { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1", ARG_SPECIAL }, { OP_PUSH_IF_PEEK_NEXT, "push-if-peek-next", ARG_SPECIAL }, { OP_REPEAT, "repeat", ARG_SPECIAL }, { OP_REPEAT_NG, "repeat-ng", ARG_SPECIAL }, { OP_REPEAT_INC, "repeat-inc", ARG_MEMNUM }, { OP_REPEAT_INC_NG, "repeat-inc-ng", ARG_MEMNUM }, { OP_REPEAT_INC_SG, "repeat-inc-sg", ARG_MEMNUM }, { OP_REPEAT_INC_NG_SG, "repeat-inc-ng-sg", ARG_MEMNUM }, { OP_EMPTY_CHECK_START, "empty-check-start", ARG_MEMNUM }, { OP_EMPTY_CHECK_END, "empty-check-end", ARG_MEMNUM }, { OP_EMPTY_CHECK_END_MEMST,"empty-check-end-memst", ARG_MEMNUM }, { OP_EMPTY_CHECK_END_MEMST_PUSH,"empty-check-end-memst-push", ARG_MEMNUM }, { OP_PREC_READ_START, "push-pos", ARG_NON }, { OP_PREC_READ_END, "pop-pos", ARG_NON }, { OP_PREC_READ_NOT_START, "prec-read-not-start", ARG_RELADDR }, { OP_PREC_READ_NOT_END, "prec-read-not-end", ARG_NON }, { OP_ATOMIC_START, "atomic-start", ARG_NON }, { OP_ATOMIC_END, "atomic-end", ARG_NON }, { OP_LOOK_BEHIND, "look-behind", ARG_SPECIAL }, { OP_LOOK_BEHIND_NOT_START, "look-behind-not-start", ARG_SPECIAL }, { OP_LOOK_BEHIND_NOT_END, "look-behind-not-end", ARG_NON }, { OP_CALL, "call", ARG_ABSADDR }, { OP_RETURN, "return", ARG_NON }, { OP_PUSH_SAVE_VAL, "push-save-val", ARG_SPECIAL }, { OP_UPDATE_VAR, "update-var", ARG_SPECIAL }, { OP_STATE_CHECK_PUSH, "state-check-push", ARG_SPECIAL }, { OP_STATE_CHECK_PUSH_OR_JUMP, "state-check-push-or-jump", ARG_SPECIAL }, { OP_STATE_CHECK, "state-check", ARG_STATE_CHECK }, { OP_STATE_CHECK_ANYCHAR_STAR, "state-check-anychar*", ARG_STATE_CHECK }, { OP_STATE_CHECK_ANYCHAR_ML_STAR, "state-check-anychar-ml*", ARG_STATE_CHECK }, { -1, "", ARG_NON } }; static char* op2name(int opcode) { int i; for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { if (opcode == OnigOpInfo[i].opcode) return OnigOpInfo[i].name; } return ""; } static int op2arg_type(int opcode) { int i; for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { if (opcode == OnigOpInfo[i].opcode) return OnigOpInfo[i].arg_type; } return ARG_SPECIAL; } static void p_string(FILE* f, int len, UChar* s) { fputs(":", f); while (len-- > 0) { fputc(*s++, f); } } static void p_len_string(FILE* f, LengthType len, int mb_len, UChar* s) { int x = len * mb_len; fprintf(f, ":%d:", len); while (x-- > 0) { fputc(*s++, f); } } static void p_rel_addr(FILE* f, RelAddrType rel_addr, UChar* p, UChar* start) { RelAddrType curr = (RelAddrType )(p - start); fprintf(f, "{%d/%d}", rel_addr, curr + rel_addr); } extern void onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp, UChar* start, OnigEncoding enc) { int i, n, arg_type; RelAddrType addr; LengthType len; MemNumType mem; StateCheckNumType scn; OnigCodePoint code; OnigOptionType option; ModeType mode; UChar *q; fprintf(f, "%s", op2name(*bp)); arg_type = op2arg_type(*bp); if (arg_type != ARG_SPECIAL) { bp++; switch (arg_type) { case ARG_NON: break; case ARG_RELADDR: GET_RELADDR_INC(addr, bp); fputc(':', f); p_rel_addr(f, addr, bp, start); break; case ARG_ABSADDR: GET_ABSADDR_INC(addr, bp); fprintf(f, ":{/%d}", addr); break; case ARG_LENGTH: GET_LENGTH_INC(len, bp); fprintf(f, ":%d", len); break; case ARG_MEMNUM: mem = *((MemNumType* )bp); bp += SIZE_MEMNUM; fprintf(f, ":%d", mem); break; case ARG_OPTION: { OnigOptionType option = *((OnigOptionType* )bp); bp += SIZE_OPTION; fprintf(f, ":%d", option); } break; case ARG_STATE_CHECK: scn = *((StateCheckNumType* )bp); 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 { switch (*bp++) { case OP_EXACT1: case OP_ANYCHAR_STAR_PEEK_NEXT: case OP_ANYCHAR_ML_STAR_PEEK_NEXT: p_string(f, 1, bp++); break; case OP_EXACT2: p_string(f, 2, bp); bp += 2; break; case OP_EXACT3: p_string(f, 3, bp); bp += 3; break; case OP_EXACT4: p_string(f, 4, bp); bp += 4; break; case OP_EXACT5: p_string(f, 5, bp); bp += 5; break; case OP_EXACTN: GET_LENGTH_INC(len, bp); p_len_string(f, len, 1, bp); bp += len; break; case OP_EXACTMB2N1: p_string(f, 2, bp); bp += 2; break; case OP_EXACTMB2N2: p_string(f, 4, bp); bp += 4; break; case OP_EXACTMB2N3: p_string(f, 6, bp); bp += 6; break; case OP_EXACTMB2N: GET_LENGTH_INC(len, bp); p_len_string(f, len, 2, bp); bp += len * 2; break; case OP_EXACTMB3N: GET_LENGTH_INC(len, bp); p_len_string(f, len, 3, bp); bp += len * 3; break; case OP_EXACTMBN: { int mb_len; GET_LENGTH_INC(mb_len, bp); GET_LENGTH_INC(len, bp); fprintf(f, ":%d:%d:", mb_len, len); n = len * mb_len; while (n-- > 0) { fputc(*bp++, f); } } break; case OP_EXACT1_IC: len = enclen(enc, bp); p_string(f, len, bp); bp += len; break; case OP_EXACTN_IC: GET_LENGTH_INC(len, bp); p_len_string(f, len, 1, bp); bp += len; break; case OP_CCLASS: n = bitset_on_num((BitSetRef )bp); bp += SIZE_BITSET; fprintf(f, ":%d", n); break; case OP_CCLASS_NOT: n = bitset_on_num((BitSetRef )bp); bp += SIZE_BITSET; fprintf(f, ":%d", n); break; case OP_CCLASS_MB: case OP_CCLASS_MB_NOT: GET_LENGTH_INC(len, bp); q = bp; #ifndef PLATFORM_UNALIGNED_WORD_ACCESS ALIGNMENT_RIGHT(q); #endif GET_CODE_POINT(code, q); bp += len; fprintf(f, ":%d:%d", (int )code, len); break; case OP_CCLASS_MIX: case OP_CCLASS_MIX_NOT: n = bitset_on_num((BitSetRef )bp); bp += SIZE_BITSET; GET_LENGTH_INC(len, bp); q = bp; #ifndef PLATFORM_UNALIGNED_WORD_ACCESS ALIGNMENT_RIGHT(q); #endif GET_CODE_POINT(code, q); bp += len; fprintf(f, ":%d:%d:%d", n, (int )code, len); break; #ifdef USE_OP_CCLASS_NODE case OP_CCLASS_NODE: { CClassNode *cc; GET_POINTER_INC(cc, bp); n = bitset_on_num(cc->bs); fprintf(f, ":%p:%d", cc, n); } break; #endif case OP_BACKREF_N_IC: mem = *((MemNumType* )bp); bp += SIZE_MEMNUM; fprintf(f, ":%d", mem); break; case OP_BACKREF_MULTI_IC: case OP_BACKREF_MULTI: case OP_BACKREF_CHECK: fputs(" ", f); GET_LENGTH_INC(len, bp); for (i = 0; i < len; i++) { GET_MEMNUM_INC(mem, bp); if (i > 0) fputs(", ", f); fprintf(f, "%d", mem); } break; case OP_BACKREF_WITH_LEVEL: GET_OPTION_INC(option, bp); fprintf(f, ":%d", option); /* fall */ case OP_BACKREF_CHECK_WITH_LEVEL: { LengthType level; GET_LENGTH_INC(level, bp); fprintf(f, ":%d", level); fputs(" ", f); GET_LENGTH_INC(len, bp); for (i = 0; i < len; i++) { GET_MEMNUM_INC(mem, bp); if (i > 0) fputs(", ", f); fprintf(f, "%d", mem); } } break; case OP_REPEAT: case OP_REPEAT_NG: { mem = *((MemNumType* )bp); bp += SIZE_MEMNUM; addr = *((RelAddrType* )bp); bp += SIZE_RELADDR; fprintf(f, ":%d:%d", mem, addr); } break; case OP_PUSH_OR_JUMP_EXACT1: case OP_PUSH_IF_PEEK_NEXT: addr = *((RelAddrType* )bp); bp += SIZE_RELADDR; fputc(':', f); p_rel_addr(f, addr, bp, start); p_string(f, 1, bp); bp += 1; break; case OP_LOOK_BEHIND: GET_LENGTH_INC(len, bp); fprintf(f, ":%d", len); break; case OP_LOOK_BEHIND_NOT_START: GET_RELADDR_INC(addr, bp); GET_LENGTH_INC(len, bp); fprintf(f, ":%d:", len); p_rel_addr(f, addr, bp, start); break; case OP_STATE_CHECK_PUSH: case OP_STATE_CHECK_PUSH_OR_JUMP: scn = *((StateCheckNumType* )bp); bp += SIZE_STATE_CHECK_NUM; addr = *((RelAddrType* )bp); bp += SIZE_RELADDR; fprintf(f, ":%d:", scn); p_rel_addr(f, addr, bp, start); break; case OP_PUSH_SAVE_VAL: { SaveType type; GET_SAVE_TYPE_INC(type, bp); GET_MEMNUM_INC(mem, bp); fprintf(f, ":%d:%d", type, mem); } break; case OP_UPDATE_VAR: { UpdateVarType type; GET_UPDATE_VAR_TYPE_INC(type, bp); GET_MEMNUM_INC(mem, bp); fprintf(f, ":%d:%d", type, mem); } break; default: fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n", *--bp); } } if (nextp) *nextp = bp; } #endif /* ONIG_DEBUG */ #ifdef ONIG_DEBUG_COMPILE static void print_compiled_byte_code_list(FILE* f, regex_t* reg) { UChar* bp; UChar* start = reg->p; UChar* end = reg->p + reg->used; fprintf(f, "bt_mem_start: 0x%x, bt_mem_end: 0x%x\n", reg->bt_mem_start, reg->bt_mem_end); fprintf(f, "code-length: %d\n", reg->used); bp = start; while (bp < end) { int pos = bp - start; fprintf(f, "%4d: ", pos); onig_print_compiled_byte_code(f, bp, &bp, start, reg->enc); fprintf(f, "\n"); } fprintf(f, "\n"); } #endif #ifdef ONIG_DEBUG_PARSE static void Indent(FILE* f, int indent) { int i; for (i = 0; i < indent; i++) putc(' ', f); } static void print_indent_tree(FILE* f, Node* node, int indent) { int i; NodeType type; UChar* p; int add = 3; Indent(f, indent); if (IS_NULL(node)) { fprintf(f, "ERROR: null node!!!\n"); exit (0); } type = NODE_TYPE(node); switch (type) { case NODE_LIST: case NODE_ALT: if (type == NODE_LIST) fprintf(f, "\n", node); else fprintf(f, "\n", node); print_indent_tree(f, NODE_CAR(node), indent + add); while (IS_NOT_NULL(node = NODE_CDR(node))) { if (NODE_TYPE(node) != type) { fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NODE_TYPE(node)); exit(0); } print_indent_tree(f, NODE_CAR(node), indent + add); } break; case NODE_STRING: fprintf(f, "", (NODE_STRING_IS_RAW(node) ? "-raw" : ""), node); for (p = STR_(node)->s; p < STR_(node)->end; p++) { if (*p >= 0x20 && *p < 0x7f) fputc(*p, f); else { fprintf(f, " 0x%02x", *p); } } break; case NODE_CCLASS: fprintf(f, "", node); if (IS_NCCLASS_NOT(CCLASS_(node))) fputs(" not", f); if (CCLASS_(node)->mbuf) { BBuf* bbuf = CCLASS_(node)->mbuf; for (i = 0; i < bbuf->used; i++) { if (i > 0) fprintf(f, ","); fprintf(f, "%0x", bbuf->p[i]); } } break; case NODE_CTYPE: fprintf(f, " ", node); switch (CTYPE_(node)->ctype) { case CTYPE_ANYCHAR: fprintf(f, "", node); break; case ONIGENC_CTYPE_WORD: if (CTYPE_(node)->not != 0) fputs("not word", f); else fputs("word", f); if (CTYPE_(node)->ascii_mode != 0) fputs(" (ascii)", f); break; default: fprintf(f, "ERROR: undefined ctype.\n"); exit(0); } break; case NODE_ANCHOR: fprintf(f, " ", 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_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; #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); break; case ANCHOR_PREC_READ_NOT: fprintf(f, "prec read not\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; case ANCHOR_LOOK_BEHIND: fprintf(f, "look behind\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; case ANCHOR_LOOK_BEHIND_NOT: fprintf(f, "look behind not\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; default: fprintf(f, "ERROR: undefined anchor type.\n"); break; } break; case NODE_BACKREF: { int* p; BackRefNode* br = BACKREF_(node); p = BACKREFS_P(br); fprintf(f, "", NODE_IS_CHECKER(node) ? "-checker" : "", node); for (i = 0; i < br->back_num; i++) { if (i > 0) fputs(", ", f); fprintf(f, "%d", p[i]); } } break; #ifdef USE_CALL case NODE_CALL: { CallNode* cn = CALL_(node); fprintf(f, "", node); p_string(f, cn->name_end - cn->name, cn->name); } break; #endif case NODE_QUANT: fprintf(f, "{%d,%d}%s\n", node, QUANT_(node)->lower, QUANT_(node)->upper, (QUANT_(node)->greedy ? "" : "?")); print_indent_tree(f, NODE_BODY(node), indent + add); break; case NODE_ENCLOSURE: fprintf(f, " ", node); switch (ENCLOSURE_(node)->type) { case ENCLOSURE_OPTION: fprintf(f, "option:%d", ENCLOSURE_(node)->o.options); break; case ENCLOSURE_MEMORY: fprintf(f, "memory:%d", ENCLOSURE_(node)->m.regnum); break; case ENCLOSURE_STOP_BACKTRACK: fprintf(f, "stop-bt"); break; default: break; } fprintf(f, "\n"); print_indent_tree(f, NODE_BODY(node), indent + add); break; case NODE_GIMMICK: fprintf(f, " ", node); switch (GIMMICK_(node)->type) { case GIMMICK_FAIL: fprintf(f, "fail"); break; case GIMMICK_KEEP: fprintf(f, "keep:%d", GIMMICK_(node)->id); break; case GIMMICK_SAVE: fprintf(f, "save:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); break; case GIMMICK_UPDATE_VAR: fprintf(f, "update_var:%d:%d", GIMMICK_(node)->detail_type, GIMMICK_(node)->id); break; } break; default: fprintf(f, "print_indent_tree: undefined node type %d\n", NODE_TYPE(node)); break; } if (type != NODE_LIST && type != NODE_ALT && type != NODE_QUANT && type != NODE_ENCLOSURE) fprintf(f, "\n"); fflush(f); } static void print_tree(FILE* f, Node* node) { print_indent_tree(f, node, 0); } #endif oniguruma-6.7.0/src/regenc.c000066400000000000000000000663131321242335200157360ustar00rootroot00000000000000/********************************************************************** regenc.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT; extern int onigenc_init(void) { return 0; } extern int onig_initialize_encoding(OnigEncoding enc) { if (enc->init != 0 && (enc->is_initialized() == 0)) { int r = (enc->init)(); return r; } return 0; } extern OnigEncoding onigenc_get_default_encoding(void) { return OnigEncDefaultCharEncoding; } extern int onigenc_set_default_encoding(OnigEncoding enc) { OnigEncDefaultCharEncoding = enc; return 0; } extern UChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); if (p < s) { p += enclen(enc, p); } return p; } extern UChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const UChar* start, const UChar* s, const UChar** prev) { UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); if (p < s) { if (prev) *prev = (const UChar* )p; p += enclen(enc, p); } else { if (prev) *prev = (const UChar* )NULL; /* Sorry */ } return p; } extern UChar* onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { if (s <= start) return (UChar* )NULL; return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); } extern UChar* onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n) { while (ONIG_IS_NOT_NULL(s) && n-- > 0) { if (s <= start) return (UChar* )NULL; s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1); } return (UChar* )s; } #if 0 extern int onigenc_mbc_enc_len_end(OnigEncoding enc, const UChar* p, const UChar* end) { int len; int n; len = ONIGENC_MBC_ENC_LEN(enc, p); n = (int )(end - p); return (n < len ? n : len); } #endif extern UChar* onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n) { UChar* q = (UChar* )p; while (n-- > 0) { q += ONIGENC_MBC_ENC_LEN(enc, q); } return (q <= end ? q : NULL); } extern int onigenc_strlen(OnigEncoding enc, const UChar* p, const UChar* end) { int n = 0; UChar* q = (UChar* )p; while (q < end) { q += ONIGENC_MBC_ENC_LEN(enc, q); n++; } return n; } extern int onigenc_strlen_null(OnigEncoding enc, const UChar* s) { int n = 0; UChar* p = (UChar* )s; while (1) { if (*p == '\0') { UChar* q; int len = ONIGENC_MBC_MINLEN(enc); if (len == 1) return n; q = p + 1; while (len > 1) { if (*q != '\0') break; q++; len--; } if (len == 1) return n; } p += ONIGENC_MBC_ENC_LEN(enc, p); n++; } } extern int onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s) { UChar* start = (UChar* )s; UChar* p = (UChar* )s; while (1) { if (*p == '\0') { UChar* q; int len = ONIGENC_MBC_MINLEN(enc); if (len == 1) return (int )(p - start); q = p + 1; while (len > 1) { if (*q != '\0') break; q++; len--; } if (len == 1) return (int )(p - start); } p += ONIGENC_MBC_ENC_LEN(enc, p); } } const UChar OnigEncAsciiToLowerCaseTable[] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', }; #ifdef USE_UPPER_CASE_TABLE const UChar OnigEncAsciiToUpperCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137', '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', }; #endif const unsigned short OnigEncAsciiCtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; const UChar OnigEncISO_8859_1_ToLowerCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377' }; #ifdef USE_UPPER_CASE_TABLE const UChar OnigEncISO_8859_1_ToUpperCaseTable[256] = { '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', '\100', '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', '\130', '\131', '\132', '\133', '\134', '\135', '\136', '\137', '\140', '\101', '\102', '\103', '\104', '\105', '\106', '\107', '\110', '\111', '\112', '\113', '\114', '\115', '\116', '\117', '\120', '\121', '\122', '\123', '\124', '\125', '\126', '\127', '\130', '\131', '\132', '\173', '\174', '\175', '\176', '\177', '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337', '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307', '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317', '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\367', '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\377', }; #endif extern void onigenc_set_default_caseconv_table(const UChar* table ARG_UNUSED) { /* nothing */ /* obsoleted. */ } extern UChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s) { return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s); } const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = { { 0x41, 0x61 }, { 0x42, 0x62 }, { 0x43, 0x63 }, { 0x44, 0x64 }, { 0x45, 0x65 }, { 0x46, 0x66 }, { 0x47, 0x67 }, { 0x48, 0x68 }, { 0x49, 0x69 }, { 0x4a, 0x6a }, { 0x4b, 0x6b }, { 0x4c, 0x6c }, { 0x4d, 0x6d }, { 0x4e, 0x6e }, { 0x4f, 0x6f }, { 0x50, 0x70 }, { 0x51, 0x71 }, { 0x52, 0x72 }, { 0x53, 0x73 }, { 0x54, 0x74 }, { 0x55, 0x75 }, { 0x56, 0x76 }, { 0x57, 0x77 }, { 0x58, 0x78 }, { 0x59, 0x79 }, { 0x5a, 0x7a } }; extern int onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, OnigApplyAllCaseFoldFunc f, void* arg) { OnigCodePoint code; int i, r; for (i = 0; i < (int )(sizeof(OnigAsciiLowerMap)/sizeof(OnigPairCaseFoldCodes)); i++) { code = OnigAsciiLowerMap[i].to; r = (*f)(OnigAsciiLowerMap[i].from, &code, 1, arg); if (r != 0) return r; code = OnigAsciiLowerMap[i].from; r = (*f)(OnigAsciiLowerMap[i].to, &code, 1, arg); if (r != 0) return r; } return 0; } extern int onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED, const OnigUChar* p, const OnigUChar* end ARG_UNUSED, OnigCaseFoldCodeItem items[]) { if (0x41 <= *p && *p <= 0x5a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); return 1; } else if (0x61 <= *p && *p <= 0x7a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); return 1; } else return 0; } static int ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED, OnigApplyAllCaseFoldFunc f, void* arg) { static OnigCodePoint ss[] = { 0x73, 0x73 }; return (*f)((OnigCodePoint )0xdf, ss, 2, arg); } extern int onigenc_apply_all_case_fold_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { OnigCodePoint code; int i, r; r = onigenc_ascii_apply_all_case_fold(flag, f, arg); if (r != 0) return r; for (i = 0; i < map_size; i++) { code = map[i].to; r = (*f)(map[i].from, &code, 1, arg); if (r != 0) return r; code = map[i].from; r = (*f)(map[i].to, &code, 1, arg); if (r != 0) return r; } if (ess_tsett_flag != 0) return ss_apply_all_case_fold(flag, f, arg); return 0; } extern int onigenc_get_case_fold_codes_by_str_with_map(int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag ARG_UNUSED, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { if (0x41 <= *p && *p <= 0x5a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p + 0x20); if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1 && (*(p+1) == 0x53 || *(p+1) == 0x73)) { /* SS */ items[1].byte_len = 2; items[1].code_len = 1; items[1].code[0] = (OnigCodePoint )0xdf; return 2; } else return 1; } else if (0x61 <= *p && *p <= 0x7a) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = (OnigCodePoint )(*p - 0x20); if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1 && (*(p+1) == 0x73 || *(p+1) == 0x53)) { /* ss */ items[1].byte_len = 2; items[1].code_len = 1; items[1].code[0] = (OnigCodePoint )0xdf; return 2; } else return 1; } else if (*p == 0xdf && ess_tsett_flag != 0) { items[0].byte_len = 1; items[0].code_len = 2; items[0].code[0] = (OnigCodePoint )'s'; items[0].code[1] = (OnigCodePoint )'s'; items[1].byte_len = 1; items[1].code_len = 2; items[1].code[0] = (OnigCodePoint )'S'; items[1].code[1] = (OnigCodePoint )'S'; items[2].byte_len = 1; items[2].code_len = 2; items[2].code[0] = (OnigCodePoint )'s'; items[2].code[1] = (OnigCodePoint )'S'; items[3].byte_len = 1; items[3].code_len = 2; items[3].code[0] = (OnigCodePoint )'S'; items[3].code[1] = (OnigCodePoint )'s'; return 4; } else { int i; for (i = 0; i < map_size; i++) { if (*p == map[i].from) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = map[i].to; return 1; } else if (*p == map[i].to) { items[0].byte_len = 1; items[0].code_len = 1; items[0].code[0] = map[i].from; return 1; } } } return 0; } extern int onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED, OnigCodePoint* sb_out ARG_UNUSED, const OnigCodePoint* ranges[] ARG_UNUSED) { return ONIG_NO_SUPPORT_CONFIG; } extern int onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end) { if (p < end) { if (*p == 0x0a) return 1; } return 0; } /* for single byte encodings */ extern int onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p, const UChar*end ARG_UNUSED, UChar* lower) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p); (*p)++; return 1; /* return byte length of converted char to lower */ } #if 0 extern int onigenc_ascii_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; (*pp)++; return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p); } #endif extern int onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED) { return 1; } extern OnigCodePoint onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { return (OnigCodePoint )(*p); } extern int onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { return (code < 0x100 ? 1 : ONIGERR_INVALID_CODE_POINT_VALUE); } extern int onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf) { *buf = (UChar )(code & 0xff); return 1; } extern UChar* onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED, const UChar* s) { return (UChar* )s; } extern int onigenc_always_true_is_allowed_reverse_match(const UChar* s ARG_UNUSED, const UChar* end ARG_UNUSED) { return TRUE; } extern int onigenc_always_false_is_allowed_reverse_match(const UChar* s ARG_UNUSED, const UChar* end ARG_UNUSED) { return FALSE; } extern int onigenc_always_true_is_valid_mbc_string(const UChar* s ARG_UNUSED, const UChar* end ARG_UNUSED) { return TRUE; } extern int onigenc_length_check_is_valid_mbc_string(OnigEncoding enc, const UChar* p, const UChar* end) { while (p < end) { p += enclen(enc, p); } if (p != end) return FALSE; else return TRUE; } extern int onigenc_is_valid_mbc_string(OnigEncoding enc, const UChar* s, const UChar* end) { return ONIGENC_IS_VALID_MBC_STRING(enc, s, end); } extern OnigCodePoint onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end) { int c, i, len; OnigCodePoint n; len = enclen(enc, p); n = (OnigCodePoint )(*p++); if (len == 1) return n; for (i = 1; i < len; i++) { if (p >= end) break; c = *p++; n <<= 8; n += c; } return n; } extern int onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { int len; const UChar *p = *pp; if (ONIGENC_IS_MBC_ASCII(p)) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); (*pp)++; return 1; } else { int i; len = enclen(enc, p); for (i = 0; i < len; i++) { *lower++ = *p++; } (*pp) += len; return len; /* return byte length of converted to lower char */ } } #if 0 extern int onigenc_mbn_is_mbc_ambiguous(OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; if (ONIGENC_IS_MBC_ASCII(p)) { (*pp)++; return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p); } (*pp) += enclen(enc, p); return FALSE; } #endif extern int onigenc_mb2_code_to_mbclen(OnigCodePoint code) { if ((code & 0xff00) != 0) return 2; else return 1; } extern int onigenc_mb4_code_to_mbclen(OnigCodePoint code) { if ((code & 0xff000000) != 0) return 4; else if ((code & 0xff0000) != 0) return 3; else if ((code & 0xff00) != 0) return 2; else return 1; } extern int onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) { UChar *p = buf; if ((code & 0xff00) != 0) { *p++ = (UChar )((code >> 8) & 0xff); } *p++ = (UChar )(code & 0xff); #if 1 if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); } extern int onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf) { UChar *p = buf; if ((code & 0xff000000) != 0) { *p++ = (UChar )((code >> 24) & 0xff); } if ((code & 0xff0000) != 0 || p != buf) { *p++ = (UChar )((code >> 16) & 0xff); } if ((code & 0xff00) != 0 || p != buf) { *p++ = (UChar )((code >> 8) & 0xff); } *p++ = (UChar )(code & 0xff); #if 1 if (enclen(enc, buf) != (p - buf)) return ONIGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); } extern int onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { static PosixBracketEntryType PBS[] = { { (UChar* )"Alnum", ONIGENC_CTYPE_ALNUM, 5 }, { (UChar* )"Alpha", ONIGENC_CTYPE_ALPHA, 5 }, { (UChar* )"Blank", ONIGENC_CTYPE_BLANK, 5 }, { (UChar* )"Cntrl", ONIGENC_CTYPE_CNTRL, 5 }, { (UChar* )"Digit", ONIGENC_CTYPE_DIGIT, 5 }, { (UChar* )"Graph", ONIGENC_CTYPE_GRAPH, 5 }, { (UChar* )"Lower", ONIGENC_CTYPE_LOWER, 5 }, { (UChar* )"Print", ONIGENC_CTYPE_PRINT, 5 }, { (UChar* )"Punct", ONIGENC_CTYPE_PUNCT, 5 }, { (UChar* )"Space", ONIGENC_CTYPE_SPACE, 5 }, { (UChar* )"Upper", ONIGENC_CTYPE_UPPER, 5 }, { (UChar* )"XDigit", ONIGENC_CTYPE_XDIGIT, 6 }, { (UChar* )"ASCII", ONIGENC_CTYPE_ASCII, 5 }, { (UChar* )"Word", ONIGENC_CTYPE_WORD, 4 }, { (UChar* )NULL, -1, 0 } }; PosixBracketEntryType *pb; int len; len = onigenc_strlen(enc, p, end); for (pb = PBS; IS_NOT_NULL(pb->name); pb++) { if (len == pb->len && onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) return pb->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } 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) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); else { if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { return (ONIGENC_CODE_TO_MBCLEN(enc, code) > 1 ? TRUE : FALSE); } } return FALSE; } extern int onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code, unsigned int ctype) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); else { if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { return (ONIGENC_CODE_TO_MBCLEN(enc, code) > 1 ? TRUE : FALSE); } } return FALSE; } extern int onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n) { int x, c; while (n-- > 0) { if (p >= end) return (int )(*sascii); c = (int )ONIGENC_MBC_TO_CODE(enc, p, end); x = *sascii - c; if (x) return x; sascii++; p += enclen(enc, p); } return 0; } extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n) { int i; for (i = 0; i < n; i++) { if (a[i] != b[i]) return -1; } return 0; } extern int onig_codes_byte_at(OnigCodePoint codes[], int at) { int index; int b; OnigCodePoint code; index = at / 3; b = at % 3; code = codes[index]; return ((code >> ((2 - b) * 8)) & 0xff); } oniguruma-6.7.0/src/regenc.h000066400000000000000000000271431321242335200157410ustar00rootroot00000000000000#ifndef REGENC_H #define REGENC_H /********************************************************************** regenc.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef PACKAGE /* PACKAGE is defined in config.h */ #include "config.h" #endif #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #include "oniguruma.h" typedef struct { OnigCodePoint from; OnigCodePoint to; } OnigPairCaseFoldCodes; #ifndef NULL #define NULL ((void* )0) #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #ifndef ARG_UNUSED #if defined(__GNUC__) # define ARG_UNUSED __attribute__ ((unused)) #else # define ARG_UNUSED #endif #endif #define ONIG_IS_NULL(p) (((void*)(p)) == (void*)0) #define ONIG_IS_NOT_NULL(p) (((void*)(p)) != (void*)0) #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 */ #define BIT_CTYPE_NEWLINE (1<< ONIGENC_CTYPE_NEWLINE) #define BIT_CTYPE_ALPHA (1<< ONIGENC_CTYPE_ALPHA) #define BIT_CTYPE_BLANK (1<< ONIGENC_CTYPE_BLANK) #define BIT_CTYPE_CNTRL (1<< ONIGENC_CTYPE_CNTRL) #define BIT_CTYPE_DIGIT (1<< ONIGENC_CTYPE_DIGIT) #define BIT_CTYPE_GRAPH (1<< ONIGENC_CTYPE_GRAPH) #define BIT_CTYPE_LOWER (1<< ONIGENC_CTYPE_LOWER) #define BIT_CTYPE_PRINT (1<< ONIGENC_CTYPE_PRINT) #define BIT_CTYPE_PUNCT (1<< ONIGENC_CTYPE_PUNCT) #define BIT_CTYPE_SPACE (1<< ONIGENC_CTYPE_SPACE) #define BIT_CTYPE_UPPER (1<< ONIGENC_CTYPE_UPPER) #define BIT_CTYPE_XDIGIT (1<< ONIGENC_CTYPE_XDIGIT) #define BIT_CTYPE_WORD (1<< ONIGENC_CTYPE_WORD) #define BIT_CTYPE_ALNUM (1<< ONIGENC_CTYPE_ALNUM) #define BIT_CTYPE_ASCII (1<< ONIGENC_CTYPE_ASCII) #define CTYPE_TO_BIT(ctype) (1<<(ctype)) #define CTYPE_IS_WORD_GRAPH_PRINT(ctype) \ ((ctype) == ONIGENC_CTYPE_WORD || (ctype) == ONIGENC_CTYPE_GRAPH ||\ (ctype) == ONIGENC_CTYPE_PRINT) typedef struct { UChar *name; int ctype; short int len; } PosixBracketEntryType; struct PropertyNameCtype { char *name; int ctype; }; /* #define USE_CRNL_AS_LINE_TERMINATOR */ #define USE_UNICODE_PROPERTIES #define USE_UNICODE_EXTENDED_GRAPHEME_CLUSTER /* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */ /* #define USE_UNICODE_ALL_LINE_TERMINATORS */ /* see Unicode.org UTS #18 */ #define ONIG_ENCODING_INIT_DEFAULT ONIG_ENCODING_ASCII /* for encoding system implementation (internal) */ ONIG_EXTERN int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); ONIG_EXTERN int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); ONIG_EXTERN int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[])); ONIG_EXTERN int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end)); /* methods for single byte encoding */ ONIG_EXTERN int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); ONIG_EXTERN int onigenc_single_byte_mbc_enc_len P_((const UChar* p)); ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end)); ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code)); ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf)); ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s)); ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end)); ONIG_EXTERN int onigenc_always_true_is_valid_mbc_string P_((const UChar* s, const UChar* end)); ONIG_EXTERN int onigenc_length_check_is_valid_mbc_string P_((OnigEncoding enc, const UChar* s, const UChar* end)); /* methods for multi byte encoding */ ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end)); ONIG_EXTERN int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower)); ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code)); ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf)); ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end)); ONIG_EXTERN int onigenc_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)); ONIG_EXTERN int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype)); ONIG_EXTERN struct PropertyNameCtype* euc_jp_lookup_property_name P_((register const char *str, register unsigned int len)); ONIG_EXTERN struct PropertyNameCtype* sjis_lookup_property_name P_((register const char *str, register unsigned int len)); //ONIG_EXTERN const struct PropertyNameCtype* unicode_lookup_property_name P_((register const char *str, register unsigned int len)); /* in enc/unicode.c */ ONIG_EXTERN int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype)); ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[])); ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((OnigCtype ctype, const OnigCodePoint* ranges[])); ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])); ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold)); ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg)); 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) #define UTF16_IS_SURROGATE_SECOND(c) (((c) & 0xfc) == 0xdc) /* from unicode generated codes */ #define FOLDS1_FOLD(i) (OnigUnicodeFolds1 + (i)) #define FOLDS2_FOLD(i) (OnigUnicodeFolds2 + (i)) #define FOLDS3_FOLD(i) (OnigUnicodeFolds3 + (i)) #define FOLDS1_UNFOLDS_NUM(i) (OnigUnicodeFolds1[(i)+1]) #define FOLDS2_UNFOLDS_NUM(i) (OnigUnicodeFolds2[(i)+2]) #define FOLDS3_UNFOLDS_NUM(i) (OnigUnicodeFolds3[(i)+3]) #define FOLDS1_UNFOLDS(i) (OnigUnicodeFolds1 + (i) + 2) #define FOLDS2_UNFOLDS(i) (OnigUnicodeFolds2 + (i) + 3) #define FOLDS3_UNFOLDS(i) (OnigUnicodeFolds3 + (i) + 4) #define FOLDS1_NEXT_INDEX(i) ((i) + 2 + OnigUnicodeFolds1[(i)+1]) #define FOLDS2_NEXT_INDEX(i) ((i) + 3 + OnigUnicodeFolds2[(i)+2]) #define FOLDS3_NEXT_INDEX(i) ((i) + 4 + OnigUnicodeFolds3[(i)+3]) #define FOLDS_FOLD_ADDR_BUK(buk, addr) do {\ if ((buk)->fold_len == 1)\ addr = OnigUnicodeFolds1 + (buk)->index;\ else if ((buk)->fold_len == 2)\ addr = OnigUnicodeFolds2 + (buk)->index;\ else if ((buk)->fold_len == 3)\ addr = OnigUnicodeFolds3 + (buk)->index;\ else\ addr = 0;\ } while (0) extern OnigCodePoint OnigUnicodeFolds1[]; extern OnigCodePoint OnigUnicodeFolds2[]; extern OnigCodePoint OnigUnicodeFolds3[]; struct ByUnfoldKey { OnigCodePoint code; short int index; short int fold_len; }; extern const struct ByUnfoldKey* unicode_unfold_key(OnigCodePoint code); extern int unicode_fold1_key(OnigCodePoint code[]); extern int unicode_fold2_key(OnigCodePoint code[]); extern int unicode_fold3_key(OnigCodePoint code[]); extern int onig_codes_cmp(OnigCodePoint a[], OnigCodePoint b[], int n); extern int onig_codes_byte_at(OnigCodePoint code[], int at); #define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \ OnigEncISO_8859_1_ToLowerCaseTable[c] #define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \ OnigEncISO_8859_1_ToUpperCaseTable[c] ONIG_EXTERN const UChar OnigEncISO_8859_1_ToLowerCaseTable[]; ONIG_EXTERN const UChar OnigEncISO_8859_1_ToUpperCaseTable[]; ONIG_EXTERN int onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n)); ONIG_EXTERN UChar* onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n)); /* defined in regexec.c, but used in enc/xxx.c */ extern int onig_is_in_code_range P_((const UChar* p, OnigCodePoint code)); ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; ONIG_EXTERN const UChar OnigEncAsciiToLowerCaseTable[]; ONIG_EXTERN const UChar OnigEncAsciiToUpperCaseTable[]; ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[]; #define ONIGENC_IS_ASCII_CODE(code) ((code) < 0x80) #define ONIGENC_ASCII_CODE_TO_LOWER_CASE(c) OnigEncAsciiToLowerCaseTable[c] #define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c] #define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \ ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) #define ONIGENC_IS_ASCII_CODE_WORD(code) \ ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ONIGENC_CTYPE_WORD)) != 0) #define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \ (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\ ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER)) #define ONIGENC_IS_UNICODE_ENCODING(enc) \ ((enc)->is_code_ctype == onigenc_unicode_is_code_ctype) #endif /* REGENC_H */ oniguruma-6.7.0/src/regerror.c000066400000000000000000000310011321242335200163040ustar00rootroot00000000000000/********************************************************************** regerror.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" #include /* for vsnprintf() */ #ifdef HAVE_STDARG_PROTOTYPES #include #define va_init_list(a,b) va_start(a,b) #else #include #define va_init_list(a,b) va_start(a) #endif extern UChar* onig_error_code_to_format(int code) { char *p; if (code >= 0) return (UChar* )0; switch (code) { case ONIG_MISMATCH: p = "mismatch"; break; case ONIG_NO_SUPPORT_CONFIG: p = "no support in this configuration"; break; case ONIGERR_MEMORY: p = "fail to memory allocation"; break; case ONIGERR_MATCH_STACK_LIMIT_OVER: p = "match-stack limit over"; break; case ONIGERR_PARSE_DEPTH_LIMIT_OVER: p = "parse depth limit over"; break; case ONIGERR_TYPE_BUG: p = "undefined type (bug)"; break; case ONIGERR_PARSER_BUG: p = "internal parser error (bug)"; break; case ONIGERR_STACK_BUG: p = "stack error (bug)"; break; case ONIGERR_UNDEFINED_BYTECODE: p = "undefined bytecode (bug)"; break; case ONIGERR_UNEXPECTED_BYTECODE: p = "unexpected bytecode (bug)"; break; case ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED: p = "default multibyte-encoding is not setted"; break; case ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR: p = "can't convert to wide-char on specified multibyte-encoding"; break; case ONIGERR_FAIL_TO_INITIALIZE: p = "fail to initialize"; break; case ONIGERR_INVALID_ARGUMENT: p = "invalid argument"; break; case ONIGERR_END_PATTERN_AT_LEFT_BRACE: p = "end pattern at left brace"; break; case ONIGERR_END_PATTERN_AT_LEFT_BRACKET: p = "end pattern at left bracket"; break; case ONIGERR_EMPTY_CHAR_CLASS: p = "empty char-class"; break; case ONIGERR_PREMATURE_END_OF_CHAR_CLASS: p = "premature end of char-class"; break; case ONIGERR_END_PATTERN_AT_ESCAPE: p = "end pattern at escape"; break; case ONIGERR_END_PATTERN_AT_META: p = "end pattern at meta"; break; case ONIGERR_END_PATTERN_AT_CONTROL: p = "end pattern at control"; break; case ONIGERR_META_CODE_SYNTAX: p = "invalid meta-code syntax"; break; case ONIGERR_CONTROL_CODE_SYNTAX: p = "invalid control-code syntax"; break; case ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE: p = "char-class value at end of range"; break; case ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE: p = "char-class value at start of range"; break; case ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS: p = "unmatched range specifier in char-class"; break; case ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED: p = "target of repeat operator is not specified"; break; case ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID: p = "target of repeat operator is invalid"; break; case ONIGERR_NESTED_REPEAT_OPERATOR: p = "nested repeat operator"; break; case ONIGERR_UNMATCHED_CLOSE_PARENTHESIS: p = "unmatched close parenthesis"; break; case ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS: p = "end pattern with unmatched parenthesis"; break; case ONIGERR_END_PATTERN_IN_GROUP: p = "end pattern in group"; break; case ONIGERR_UNDEFINED_GROUP_OPTION: p = "undefined group option"; break; case ONIGERR_INVALID_POSIX_BRACKET_TYPE: p = "invalid POSIX bracket type"; break; case ONIGERR_INVALID_LOOK_BEHIND_PATTERN: p = "invalid pattern in look-behind"; break; case ONIGERR_INVALID_REPEAT_RANGE_PATTERN: p = "invalid repeat range {lower,upper}"; break; case ONIGERR_TOO_BIG_NUMBER: p = "too big number"; break; case ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE: p = "too big number for repeat range"; break; case ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE: p = "upper is smaller than lower in repeat range"; break; case ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS: p = "empty range in char class"; break; case ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE: p = "mismatch multibyte code length in char-class range"; break; case ONIGERR_TOO_MANY_MULTI_BYTE_RANGES: p = "too many multibyte code ranges are specified"; break; case ONIGERR_TOO_SHORT_MULTI_BYTE_STRING: p = "too short multibyte code string"; break; case ONIGERR_TOO_BIG_BACKREF_NUMBER: p = "too big backref number"; break; case ONIGERR_INVALID_BACKREF: p = "invalid backref number/name"; break; case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED: p = "numbered backref/call is not allowed. (use name)"; break; case ONIGERR_TOO_MANY_CAPTURES: p = "too many captures"; break; case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE: p = "too big wide-char value"; break; case ONIGERR_TOO_LONG_WIDE_CHAR_VALUE: p = "too long wide-char value"; break; case ONIGERR_INVALID_CODE_POINT_VALUE: p = "invalid code point value"; break; case ONIGERR_EMPTY_GROUP_NAME: p = "group name is empty"; break; case ONIGERR_INVALID_GROUP_NAME: p = "invalid group name <%n>"; break; case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: p = "invalid char in group name <%n>"; break; case ONIGERR_UNDEFINED_NAME_REFERENCE: p = "undefined name <%n> reference"; break; case ONIGERR_UNDEFINED_GROUP_REFERENCE: p = "undefined group <%n> reference"; break; case ONIGERR_MULTIPLEX_DEFINED_NAME: p = "multiplex defined name <%n>"; break; case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL: p = "multiplex definition name <%n> call"; break; case ONIGERR_NEVER_ENDING_RECURSION: p = "never ending recursion"; break; case ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY: p = "group number is too big for capture history"; break; case ONIGERR_INVALID_CHAR_PROPERTY_NAME: p = "invalid character property name {%n}"; break; case ONIGERR_INVALID_IF_ELSE_SYNTAX: p = "invalid if-else syntax"; break; case ONIGERR_INVALID_ABSENT_GROUP_PATTERN: p = "invalid absent group pattern"; break; case ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN: p = "invalid absent group generator pattern"; break; case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION: p = "not supported encoding combination"; break; case ONIGERR_INVALID_COMBINATION_OF_OPTIONS: p = "invalid combination of options"; break; case ONIGERR_LIBRARY_IS_NOT_INITIALIZED: p = "library is not initialized"; break; default: p = "undefined error code"; break; } return (UChar* )p; } static void sprint_byte(char* s, unsigned int v) { xsnprintf(s, 3, "%02x", (v & 0377)); } static void sprint_byte_with_x(char* s, unsigned int v) { xsnprintf(s, 5, "\\x%02x", (v & 0377)); } static int to_ascii(OnigEncoding enc, UChar *s, UChar *end, UChar buf[], int buf_size, int *is_over) { int len; UChar *p; OnigCodePoint code; if (ONIGENC_MBC_MINLEN(enc) > 1) { p = s; len = 0; while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) { if (code > 0xffff && len + 10 <= buf_size) { sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24)); sprint_byte((char*)(&(buf[len+4])), (unsigned int)(code >> 16)); sprint_byte((char*)(&(buf[len+6])), (unsigned int)(code >> 8)); sprint_byte((char*)(&(buf[len+8])), (unsigned int)code); len += 10; } else if (len + 6 <= buf_size) { sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8)); sprint_byte((char*)(&(buf[len+4])), (unsigned int)code); len += 6; } else { break; } } else { buf[len++] = (UChar )code; } p += enclen(enc, p); if (len >= buf_size) break; } *is_over = ((p < end) ? 1 : 0); } else { len = MIN((int )(end - s), buf_size); xmemcpy(buf, s, (size_t )len); *is_over = ((buf_size < (end - s)) ? 1 : 0); } return len; } /* for ONIG_MAX_ERROR_MESSAGE_LEN */ #define MAX_ERROR_PAR_LEN 30 extern int #ifdef HAVE_STDARG_PROTOTYPES onig_error_code_to_str(UChar* s, int code, ...) #else onig_error_code_to_str(s, code, va_alist) UChar* s; int code; va_dcl #endif { UChar *p, *q; OnigErrorInfo* einfo; int len, is_over; UChar parbuf[MAX_ERROR_PAR_LEN]; va_list vargs; va_init_list(vargs, code); switch (code) { case ONIGERR_UNDEFINED_NAME_REFERENCE: case ONIGERR_UNDEFINED_GROUP_REFERENCE: case ONIGERR_MULTIPLEX_DEFINED_NAME: case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL: case ONIGERR_INVALID_GROUP_NAME: case ONIGERR_INVALID_CHAR_IN_GROUP_NAME: case ONIGERR_INVALID_CHAR_PROPERTY_NAME: einfo = va_arg(vargs, OnigErrorInfo*); len = to_ascii(einfo->enc, einfo->par, einfo->par_end, parbuf, MAX_ERROR_PAR_LEN - 3, &is_over); q = onig_error_code_to_format(code); p = s; while (*q != '\0') { if (*q == '%') { q++; if (*q == 'n') { /* '%n': name */ xmemcpy(p, parbuf, len); p += len; if (is_over != 0) { xmemcpy(p, "...", 3); p += 3; } q++; } else goto normal_char; } else { normal_char: *p++ = *q++; } } *p = '\0'; len = (int )(p - s); break; default: q = onig_error_code_to_format(code); len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q); xmemcpy(s, q, len); s[len] = '\0'; break; } va_end(vargs); return len; } void #ifdef HAVE_STDARG_PROTOTYPES onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...) #else onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist) UChar buf[]; int bufsize; OnigEncoding enc; UChar* pat; UChar* pat_end; const UChar *fmt; va_dcl #endif { int n, need, len; UChar *p, *s, *bp; UChar bs[6]; va_list args; va_init_list(args, fmt); n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args); va_end(args); need = (int )(pat_end - pat) * 4 + 4; if (n + need < bufsize) { xstrcat((char* )buf, ": /", bufsize); s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf); p = pat; while (p < pat_end) { if (ONIGENC_IS_MBC_HEAD(enc, p)) { len = enclen(enc, p); if (ONIGENC_MBC_MINLEN(enc) == 1) { while (len-- > 0) *s++ = *p++; } else { /* for UTF16/32 */ int blen; while (len-- > 0) { sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); blen = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); bp = bs; while (blen-- > 0) *s++ = *bp++; } } } else if (*p == '\\') { *s++ = *p++; len = enclen(enc, p); while (len-- > 0) *s++ = *p++; } else if (*p == '/') { *s++ = (unsigned char )'\\'; *s++ = *p++; } else if (!ONIGENC_IS_CODE_PRINT(enc, *p) && !ONIGENC_IS_CODE_SPACE(enc, *p)) { sprint_byte_with_x((char* )bs, (unsigned int )(*p++)); len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs); bp = bs; while (len-- > 0) *s++ = *bp++; } else { *s++ = *p++; } } *s++ = '/'; *s = '\0'; } } oniguruma-6.7.0/src/regexec.c000066400000000000000000003251341321242335200161140ustar00rootroot00000000000000/********************************************************************** regexec.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" #define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE #define IS_MBC_WORD_ASCII_MODE(enc,s,end,mode) \ ((mode) == 0 ? ONIGENC_IS_MBC_WORD(enc,s,end) : ONIGENC_IS_MBC_WORD_ASCII(enc,s,end)) #ifdef USE_CRNL_AS_LINE_TERMINATOR #define ONIGENC_IS_MBC_CRNL(enc,p,end) \ (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \ ONIGENC_IS_MBC_NEWLINE(enc,(p+enclen(enc,p)),end)) #endif #ifdef USE_CAPTURE_HISTORY static void history_tree_free(OnigCaptureTreeNode* node); static void history_tree_clear(OnigCaptureTreeNode* node) { int i; if (IS_NOT_NULL(node)) { for (i = 0; i < node->num_childs; i++) { if (IS_NOT_NULL(node->childs[i])) { history_tree_free(node->childs[i]); } } for (i = 0; i < node->allocated; i++) { node->childs[i] = (OnigCaptureTreeNode* )0; } node->num_childs = 0; node->beg = ONIG_REGION_NOTPOS; node->end = ONIG_REGION_NOTPOS; node->group = -1; } } static void history_tree_free(OnigCaptureTreeNode* node) { history_tree_clear(node); xfree(node); } static void history_root_free(OnigRegion* r) { if (IS_NOT_NULL(r->history_root)) { history_tree_free(r->history_root); r->history_root = (OnigCaptureTreeNode* )0; } } static OnigCaptureTreeNode* history_node_new(void) { OnigCaptureTreeNode* node; node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode)); CHECK_NULL_RETURN(node); node->childs = (OnigCaptureTreeNode** )0; node->allocated = 0; node->num_childs = 0; node->group = -1; node->beg = ONIG_REGION_NOTPOS; node->end = ONIG_REGION_NOTPOS; return node; } static int history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child) { #define HISTORY_TREE_INIT_ALLOC_SIZE 8 if (parent->num_childs >= parent->allocated) { int n, i; if (IS_NULL(parent->childs)) { n = HISTORY_TREE_INIT_ALLOC_SIZE; parent->childs = (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n); } else { n = parent->allocated * 2; parent->childs = (OnigCaptureTreeNode** )xrealloc(parent->childs, sizeof(OnigCaptureTreeNode*) * n); } CHECK_NULL_RETURN_MEMERR(parent->childs); for (i = parent->allocated; i < n; i++) { parent->childs[i] = (OnigCaptureTreeNode* )0; } parent->allocated = n; } parent->childs[parent->num_childs] = child; parent->num_childs++; return 0; } static OnigCaptureTreeNode* history_tree_clone(OnigCaptureTreeNode* node) { int i; OnigCaptureTreeNode *clone, *child; clone = history_node_new(); CHECK_NULL_RETURN(clone); clone->beg = node->beg; clone->end = node->end; for (i = 0; i < node->num_childs; i++) { child = history_tree_clone(node->childs[i]); if (IS_NULL(child)) { history_tree_free(clone); return (OnigCaptureTreeNode* )0; } history_tree_add_child(clone, child); } return clone; } extern OnigCaptureTreeNode* onig_get_capture_tree(OnigRegion* region) { return region->history_root; } #endif /* USE_CAPTURE_HISTORY */ extern void onig_region_clear(OnigRegion* region) { int i; for (i = 0; i < region->num_regs; i++) { region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; } #ifdef USE_CAPTURE_HISTORY history_root_free(region); #endif } extern int onig_region_resize(OnigRegion* region, int n) { region->num_regs = n; if (n < ONIG_NREGION) n = ONIG_NREGION; if (region->allocated == 0) { region->beg = (int* )xmalloc(n * sizeof(int)); region->end = (int* )xmalloc(n * sizeof(int)); if (region->beg == 0 || region->end == 0) return ONIGERR_MEMORY; region->allocated = n; } else if (region->allocated < n) { region->beg = (int* )xrealloc(region->beg, n * sizeof(int)); region->end = (int* )xrealloc(region->end, n * sizeof(int)); if (region->beg == 0 || region->end == 0) return ONIGERR_MEMORY; region->allocated = n; } return 0; } static int onig_region_resize_clear(OnigRegion* region, int n) { int r; r = onig_region_resize(region, n); if (r != 0) return r; onig_region_clear(region); return 0; } extern int onig_region_set(OnigRegion* region, int at, int beg, int end) { if (at < 0) return ONIGERR_INVALID_ARGUMENT; if (at >= region->allocated) { int r = onig_region_resize(region, at + 1); if (r < 0) return r; } region->beg[at] = beg; region->end[at] = end; return 0; } extern void onig_region_init(OnigRegion* region) { region->num_regs = 0; region->allocated = 0; region->beg = (int* )0; region->end = (int* )0; region->history_root = (OnigCaptureTreeNode* )0; } extern OnigRegion* onig_region_new(void) { OnigRegion* r; r = (OnigRegion* )xmalloc(sizeof(OnigRegion)); CHECK_NULL_RETURN(r); onig_region_init(r); return r; } extern void onig_region_free(OnigRegion* r, int free_self) { if (r != 0) { if (r->allocated > 0) { if (r->beg) xfree(r->beg); if (r->end) xfree(r->end); r->allocated = 0; } #ifdef USE_CAPTURE_HISTORY history_root_free(r); #endif if (free_self) xfree(r); } } extern void onig_region_copy(OnigRegion* to, OnigRegion* from) { #define RREGC_SIZE (sizeof(int) * from->num_regs) int i; if (to == from) return; if (to->allocated == 0) { if (from->num_regs > 0) { to->beg = (int* )xmalloc(RREGC_SIZE); if (IS_NULL(to->beg)) return; to->end = (int* )xmalloc(RREGC_SIZE); if (IS_NULL(to->end)) return; to->allocated = from->num_regs; } } else if (to->allocated < from->num_regs) { to->beg = (int* )xrealloc(to->beg, RREGC_SIZE); if (IS_NULL(to->beg)) return; to->end = (int* )xrealloc(to->end, RREGC_SIZE); if (IS_NULL(to->end)) return; to->allocated = from->num_regs; } for (i = 0; i < from->num_regs; i++) { to->beg[i] = from->beg[i]; to->end[i] = from->end[i]; } to->num_regs = from->num_regs; #ifdef USE_CAPTURE_HISTORY history_root_free(to); if (IS_NOT_NULL(from->history_root)) { to->history_root = history_tree_clone(from->history_root); } #endif } /** stack **/ #define INVALID_STACK_INDEX -1 #define STK_ALT_FLAG 0x0001 /* stack type */ /* used by normal-POP */ #define STK_SUPER_ALT STK_ALT_FLAG #define STK_ALT (0x0002 | STK_ALT_FLAG) #define STK_ALT_PREC_READ_NOT (0x0004 | STK_ALT_FLAG) #define STK_ALT_LOOK_BEHIND_NOT (0x0006 | STK_ALT_FLAG) /* handled by normal-POP */ #define STK_MEM_START 0x0100 #define STK_MEM_END 0x8200 #define STK_REPEAT_INC 0x0300 #define STK_STATE_CHECK_MARK 0x1000 /* avoided by normal-POP */ #define STK_VOID 0x0000 /* for fill a blank */ #define STK_EMPTY_CHECK_START 0x3000 #define STK_EMPTY_CHECK_END 0x5000 /* for recursive call */ #define STK_MEM_END_MARK 0x8400 #define STK_TO_VOID_START 0x0500 /* mark for "(?>...)" */ #define STK_REPEAT 0x0600 #define STK_CALL_FRAME 0x0700 #define STK_RETURN 0x0800 #define STK_SAVE_VAL 0x0900 /* stack type check mask */ #define STK_MASK_POP_USED STK_ALT_FLAG #define STK_MASK_TO_VOID_TARGET 0x10fe #define STK_MASK_MEM_END_OR_MARK 0x8000 /* MEM_END or MEM_END_MARK */ typedef intptr_t StackIndex; typedef struct _StackType { unsigned int type; int id; union { struct { UChar *pcode; /* byte code position */ UChar *pstr; /* string position */ UChar *pstr_prev; /* previous char position of pstr */ #ifdef USE_COMBINATION_EXPLOSION_CHECK unsigned int state_check; #endif } state; struct { int count; /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */ UChar *pcode; /* byte code position (head of repeated target) */ } repeat; struct { StackIndex si; /* index of stack */ } repeat_inc; struct { UChar *pstr; /* start/end position */ /* Following information is set, if this stack type is MEM-START */ StackIndex start; /* prev. info (for backtrack "(...)*" ) */ StackIndex end; /* prev. info (for backtrack "(...)*" ) */ } mem; struct { UChar *pstr; /* start position */ } empty_check; #ifdef USE_CALL struct { UChar *ret_addr; /* byte code position */ UChar *pstr; /* string position */ } call_frame; #endif struct { enum SaveType type; UChar* v; UChar* v2; } val; } u; } StackType; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE #define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start) do {\ (msa).stack_p = (void* )0;\ (msa).options = (arg_option);\ (msa).region = (arg_region);\ (msa).start = (arg_start);\ (msa).best_len = ONIG_MISMATCH;\ (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \ } while(0) #else #define MATCH_ARG_INIT(msa, reg, arg_option, arg_region, arg_start) do {\ (msa).stack_p = (void* )0;\ (msa).options = (arg_option);\ (msa).region = (arg_region);\ (msa).start = (arg_start);\ (msa).ptr_num = (reg)->num_repeat + ((reg)->num_mem + 1) * 2; \ } while(0) #endif #ifdef USE_COMBINATION_EXPLOSION_CHECK #define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE 16 #define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do {\ if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\ unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\ offset = ((offset) * (state_num)) >> 3;\ if (size > 0 && offset < size && size < STATE_CHECK_BUFF_MAX_SIZE) {\ if (size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) \ (msa).state_check_buff = (void* )xmalloc(size);\ else \ (msa).state_check_buff = (void* )xalloca(size);\ xmemset(((char* )((msa).state_check_buff)+(offset)), 0, \ (size_t )(size - (offset))); \ (msa).state_check_buff_size = size;\ }\ else {\ (msa).state_check_buff = (void* )0;\ (msa).state_check_buff_size = 0;\ }\ }\ else {\ (msa).state_check_buff = (void* )0;\ (msa).state_check_buff_size = 0;\ }\ } while(0) #define MATCH_ARG_FREE(msa) do {\ if ((msa).stack_p) xfree((msa).stack_p);\ if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \ if ((msa).state_check_buff) xfree((msa).state_check_buff);\ }\ } while(0) #else #define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) #define MATCH_ARG_FREE(msa) if ((msa).stack_p) xfree((msa).stack_p) #endif #define ALLOCA_PTR_NUM_LIMIT 50 #define STACK_INIT(stack_num) do {\ if (msa->stack_p) {\ is_alloca = 0;\ alloc_base = msa->stack_p;\ stk_base = (StackType* )(alloc_base\ + (sizeof(StackIndex) * msa->ptr_num));\ stk = stk_base;\ stk_end = stk_base + msa->stack_n;\ }\ else if (msa->ptr_num > ALLOCA_PTR_NUM_LIMIT) {\ is_alloca = 0;\ alloc_base = (char* )xmalloc(sizeof(StackIndex) * msa->ptr_num\ + sizeof(StackType) * (stack_num));\ CHECK_NULL_RETURN_MEMERR(alloc_base);\ stk_base = (StackType* )(alloc_base\ + (sizeof(StackIndex) * msa->ptr_num));\ stk = stk_base;\ stk_end = stk_base + (stack_num);\ }\ else {\ is_alloca = 1;\ alloc_base = (char* )xalloca(sizeof(StackIndex) * msa->ptr_num\ + sizeof(StackType) * (stack_num));\ CHECK_NULL_RETURN_MEMERR(alloc_base);\ stk_base = (StackType* )(alloc_base\ + (sizeof(StackIndex) * msa->ptr_num));\ stk = stk_base;\ stk_end = stk_base + (stack_num);\ }\ } while(0); #define STACK_SAVE do{\ msa->stack_n = (int )(stk_end - stk_base);\ if (is_alloca != 0) {\ size_t size = sizeof(StackIndex) * msa->ptr_num \ + sizeof(StackType) * msa->stack_n;\ msa->stack_p = xmalloc(size);\ CHECK_NULL_RETURN_MEMERR(msa->stack_p);\ xmemcpy(msa->stack_p, alloc_base, size);\ }\ else {\ msa->stack_p = alloc_base;\ };\ } while(0) #define UPDATE_FOR_STACK_REALLOC do{\ repeat_stk = (StackIndex* )alloc_base;\ mem_start_stk = (StackIndex* )(repeat_stk + reg->num_repeat);\ mem_end_stk = mem_start_stk + num_mem + 1;\ } while(0) static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE; extern unsigned int onig_get_match_stack_limit_size(void) { return MatchStackLimitSize; } extern int onig_set_match_stack_limit_size(unsigned int size) { MatchStackLimitSize = size; return 0; } static int stack_double(int is_alloca, char** arg_alloc_base, StackType** arg_stk_base, StackType** arg_stk_end, StackType** arg_stk, OnigMatchArg* msa) { unsigned int n; int used; size_t size; size_t new_size; char* alloc_base; char* new_alloc_base; StackType *stk_base, *stk_end, *stk; alloc_base = *arg_alloc_base; stk_base = *arg_stk_base; stk_end = *arg_stk_end; stk = *arg_stk; n = (unsigned int )(stk_end - stk_base); size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; n *= 2; new_size = sizeof(StackIndex) * msa->ptr_num + sizeof(StackType) * n; if (is_alloca != 0) { new_alloc_base = (char* )xmalloc(new_size); if (IS_NULL(new_alloc_base)) { STACK_SAVE; return ONIGERR_MEMORY; } xmemcpy(new_alloc_base, alloc_base, size); } else { if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) { if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize) return ONIGERR_MATCH_STACK_LIMIT_OVER; else n = MatchStackLimitSize; } new_alloc_base = (char* )xrealloc(alloc_base, new_size); if (IS_NULL(new_alloc_base)) { STACK_SAVE; return ONIGERR_MEMORY; } } alloc_base = new_alloc_base; used = (int )(stk - stk_base); *arg_alloc_base = alloc_base; *arg_stk_base = (StackType* )(alloc_base + (sizeof(StackIndex) * msa->ptr_num)); *arg_stk = *arg_stk_base + used; *arg_stk_end = *arg_stk_base + n; return 0; } #define STACK_ENSURE(n) do {\ if ((int )(stk_end - stk) < (n)) {\ int r = stack_double(is_alloca, &alloc_base, &stk_base, &stk_end, &stk, msa);\ if (r != 0) { STACK_SAVE; return r; } \ is_alloca = 0;\ UPDATE_FOR_STACK_REALLOC;\ }\ } while(0) #define STACK_AT(index) (stk_base + (index)) #define GET_STACK_INDEX(stk) ((stk) - stk_base) #define STACK_PUSH_TYPE(stack_type) do {\ STACK_ENSURE(1);\ stk->type = (stack_type);\ STACK_INC;\ } while(0) #define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0) #ifdef USE_COMBINATION_EXPLOSION_CHECK #define STATE_CHECK_POS(s,snum) \ (((s) - str) * num_comb_exp_check + ((snum) - 1)) #define STATE_CHECK_VAL(v,snum) do {\ if (IS_NOT_NULL(state_check_buff)) {\ int x = STATE_CHECK_POS(s,snum);\ (v) = state_check_buff[x/8] & (1<<(x%8));\ }\ else (v) = 0;\ } while(0) #define ELSE_IF_STATE_CHECK_MARK(stk) \ else if ((stk)->type == STK_STATE_CHECK_MARK) { \ int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\ state_check_buff[x/8] |= (1<<(x%8));\ } #define STACK_PUSH(stack_type,pat,s,sprev) do {\ STACK_ENSURE(1);\ stk->type = (stack_type);\ stk->u.state.pcode = (pat);\ stk->u.state.pstr = (s);\ stk->u.state.pstr_prev = (sprev);\ stk->u.state.state_check = 0;\ STACK_INC;\ } while(0) #define STACK_PUSH_ENSURED(stack_type,pat) do {\ stk->type = (stack_type);\ stk->u.state.pcode = (pat);\ stk->u.state.state_check = 0;\ STACK_INC;\ } while(0) #define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum) do {\ STACK_ENSURE(1);\ stk->type = STK_ALT;\ stk->u.state.pcode = (pat);\ stk->u.state.pstr = (s);\ stk->u.state.pstr_prev = (sprev);\ stk->u.state.state_check = (IS_NOT_NULL(state_check_buff) ? (snum) : 0);\ STACK_INC;\ } while(0) #define STACK_PUSH_STATE_CHECK(s,snum) do {\ if (IS_NOT_NULL(state_check_buff)) { \ STACK_ENSURE(1);\ stk->type = STK_STATE_CHECK_MARK;\ stk->u.state.pstr = (s);\ stk->u.state.state_check = (snum);\ STACK_INC;\ }\ } while(0) #else /* USE_COMBINATION_EXPLOSION_CHECK */ #define ELSE_IF_STATE_CHECK_MARK(stk) #define STACK_PUSH(stack_type,pat,s,sprev) do {\ STACK_ENSURE(1);\ stk->type = (stack_type);\ stk->u.state.pcode = (pat);\ stk->u.state.pstr = (s);\ stk->u.state.pstr_prev = (sprev);\ STACK_INC;\ } while(0) #define STACK_PUSH_ENSURED(stack_type,pat) do {\ stk->type = (stack_type);\ stk->u.state.pcode = (pat);\ STACK_INC;\ } while(0) #endif /* USE_COMBINATION_EXPLOSION_CHECK */ #define STACK_PUSH_ALT(pat,s,sprev) STACK_PUSH(STK_ALT,pat,s,sprev) #define STACK_PUSH_SUPER_ALT(pat,s,sprev) STACK_PUSH(STK_SUPER_ALT,pat,s,sprev) #define STACK_PUSH_POS(s,sprev) \ STACK_PUSH(STK_TO_VOID_START,NULL_UCHARP,s,sprev) #define STACK_PUSH_ALT_PREC_READ_NOT(pat,s,sprev) \ STACK_PUSH(STK_ALT_PREC_READ_NOT,pat,s,sprev) #define STACK_PUSH_TO_VOID_START STACK_PUSH_TYPE(STK_TO_VOID_START) #define STACK_PUSH_ALT_LOOK_BEHIND_NOT(pat,s,sprev) \ STACK_PUSH(STK_ALT_LOOK_BEHIND_NOT,pat,s,sprev) #define STACK_PUSH_REPEAT(sid, pat) do {\ STACK_ENSURE(1);\ stk->type = STK_REPEAT;\ stk->id = (sid);\ stk->u.repeat.pcode = (pat);\ stk->u.repeat.count = 0;\ STACK_INC;\ } while(0) #define STACK_PUSH_REPEAT_INC(sindex) do {\ STACK_ENSURE(1);\ stk->type = STK_REPEAT_INC;\ stk->u.repeat_inc.si = (sindex);\ STACK_INC;\ } while(0) #define STACK_PUSH_MEM_START(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_START;\ stk->id = (mnum);\ stk->u.mem.pstr = (s);\ stk->u.mem.start = mem_start_stk[mnum];\ stk->u.mem.end = mem_end_stk[mnum];\ mem_start_stk[mnum] = GET_STACK_INDEX(stk);\ mem_end_stk[mnum] = INVALID_STACK_INDEX;\ STACK_INC;\ } while(0) #define STACK_PUSH_MEM_END(mnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END;\ stk->id = (mnum);\ stk->u.mem.pstr = (s);\ stk->u.mem.start = mem_start_stk[mnum];\ stk->u.mem.end = mem_end_stk[mnum];\ mem_end_stk[mnum] = GET_STACK_INDEX(stk);\ STACK_INC;\ } while(0) #define STACK_PUSH_MEM_END_MARK(mnum) do {\ STACK_ENSURE(1);\ stk->type = STK_MEM_END_MARK;\ stk->id = (mnum);\ STACK_INC;\ } while(0) #define STACK_GET_MEM_START(mnum, k) do {\ int level = 0;\ k = stk;\ while (k > stk_base) {\ k--;\ if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \ && k->id == (mnum)) {\ level++;\ }\ else if (k->type == STK_MEM_START && k->id == (mnum)) {\ if (level == 0) break;\ level--;\ }\ }\ } while(0) #define STACK_GET_MEM_RANGE(k, mnum, start, end) do {\ int level = 0;\ while (k < stk) {\ if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\ if (level == 0) (start) = k->u.mem.pstr;\ level++;\ }\ else if (k->type == STK_MEM_END && k->u.mem.num == (mnum)) {\ level--;\ if (level == 0) {\ (end) = k->u.mem.pstr;\ break;\ }\ }\ k++;\ }\ } while(0) #define STACK_PUSH_EMPTY_CHECK_START(cnum, s) do {\ STACK_ENSURE(1);\ stk->type = STK_EMPTY_CHECK_START;\ stk->id = (cnum);\ stk->u.empty_check.pstr = (s);\ STACK_INC;\ } while(0) #define STACK_PUSH_EMPTY_CHECK_END(cnum) do {\ STACK_ENSURE(1);\ stk->type = STK_EMPTY_CHECK_END;\ stk->id = (cnum);\ STACK_INC;\ } while(0) #define STACK_PUSH_CALL_FRAME(pat) do {\ STACK_ENSURE(1);\ stk->type = STK_CALL_FRAME;\ stk->u.call_frame.ret_addr = (pat);\ STACK_INC;\ } while(0) #define STACK_PUSH_RETURN do {\ STACK_ENSURE(1);\ stk->type = STK_RETURN;\ STACK_INC;\ } while(0) #define STACK_PUSH_SAVE_VAL(sid, stype, sval) do {\ STACK_ENSURE(1);\ stk->type = STK_SAVE_VAL;\ stk->id = (sid);\ stk->u.val.type = (stype);\ stk->u.val.v = (UChar* )(sval);\ STACK_INC;\ } while(0) #define STACK_PUSH_SAVE_VAL_WITH_SPREV(sid, stype, sval) do {\ STACK_ENSURE(1);\ stk->type = STK_SAVE_VAL;\ stk->id = (sid);\ stk->u.val.type = (stype);\ stk->u.val.v = (UChar* )(sval);\ stk->u.val.v2 = sprev;\ STACK_INC;\ } while(0) #define STACK_GET_SAVE_VAL_TYPE_LAST(stype, sval) do {\ StackType *k = stk;\ while (k > stk_base) {\ k--;\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)) {\ (sval) = k->u.val.v;\ break;\ }\ }\ } while (0) #define STACK_GET_SAVE_VAL_TYPE_LAST_ID(stype, sid, sval) do { \ int level = 0;\ StackType *k = stk;\ while (k > stk_base) {\ k--;\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ && k->id == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ break;\ }\ }\ else if (k->type == STK_CALL_FRAME)\ level--;\ else if (k->type == STK_RETURN)\ level++;\ }\ } while (0) #define STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(stype, sid, sval) do { \ int level = 0;\ StackType *k = stk;\ while (k > stk_base) {\ k--;\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ && k->id == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ sprev = k->u.val.v2;\ break;\ }\ }\ else if (k->type == STK_CALL_FRAME)\ level--;\ else if (k->type == STK_RETURN)\ level++;\ }\ } while (0) #define STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM(stype, sid, sval, stk_from) do { \ int level = 0;\ StackType *k = (stk_from);\ while (k > stk_base) {\ STACK_BASE_CHECK(k, "STACK_GET_SAVE_VAL_TYPE_LAST_ID_FROM"); \ if (k->type == STK_SAVE_VAL && k->u.val.type == (stype)\ && k->u.val.id == (sid)) {\ if (level == 0) {\ (sval) = k->u.val.v;\ break;\ }\ }\ else if (k->type == STK_CALL_FRAME)\ level--;\ else if (k->type == STK_RETURN)\ level++;\ k--;\ }\ } while (0) #ifdef ONIG_DEBUG #define STACK_BASE_CHECK(p, at) \ if ((p) < stk_base) {\ fprintf(stderr, "at %s\n", at);\ goto stack_error;\ } #else #define STACK_BASE_CHECK(p, at) #endif #define STACK_POP_ONE do {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \ } while(0) #define STACK_POP do {\ switch (pop_level) {\ case STACK_POP_LEVEL_FREE:\ while (1) {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ case STACK_POP_LEVEL_MEM_START:\ while (1) {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP 2"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ else if (stk->type == STK_MEM_START) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ default:\ while (1) {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP 3"); \ if ((stk->type & STK_MASK_POP_USED) != 0) break;\ else if (stk->type == STK_MEM_START) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ break;\ }\ } while(0) #define STACK_POP_TIL_ALT_PREC_READ_NOT do {\ while (1) {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP_TIL_ALT_PREC_READ_NOT"); \ if (stk->type == STK_ALT_PREC_READ_NOT) break;\ else if (stk->type == STK_MEM_START) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ } while(0) #define STACK_POP_TIL_ALT_LOOK_BEHIND_NOT do {\ while (1) {\ stk--;\ STACK_BASE_CHECK(stk, "STACK_POP_TIL_ALT_LOOK_BEHIND_NOT"); \ if (stk->type == STK_ALT_LOOK_BEHIND_NOT) break;\ else if (stk->type == STK_MEM_START) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ else if (stk->type == STK_REPEAT_INC) {\ STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\ }\ else if (stk->type == STK_MEM_END) {\ mem_start_stk[stk->id] = stk->u.mem.start;\ mem_end_stk[stk->id] = stk->u.mem.end;\ }\ ELSE_IF_STATE_CHECK_MARK(stk);\ }\ } while(0) #define STACK_EXEC_TO_VOID(k) do {\ k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EXEC_TO_VOID"); \ if (IS_TO_VOID_TARGET(k)) {\ k->type = STK_VOID;\ }\ else if (k->type == STK_TO_VOID_START) {\ k->type = STK_VOID;\ break;\ }\ }\ } while(0) #define STACK_EMPTY_CHECK(isnull,sid,s) do {\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK"); \ if (k->type == STK_EMPTY_CHECK_START) {\ if (k->id == (sid)) {\ (isnull) = (k->u.empty_check.pstr == (s));\ break;\ }\ }\ }\ } while(0) #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT #define STACK_EMPTY_CHECK_MEMST(isnull,sid,s,reg) do {\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEMST"); \ if (k->type == STK_EMPTY_CHECK_START) {\ if (k->id == (sid)) {\ if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ break;\ }\ else {\ UChar* endp;\ (isnull) = 1;\ while (k < stk) {\ if (k->type == STK_MEM_START) {\ if (k->u.mem.end == INVALID_STACK_INDEX) {\ (isnull) = 0; break;\ }\ if (MEM_STATUS_AT(reg->bt_mem_end, k->id))\ endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ else\ endp = (UChar* )k->u.mem.end;\ /*fprintf(stderr, "num: %d, pstr: %p, endp: %p\n", k->u.mem.num, STACK_AT(k->u.mem.start)->u.mem.pstr, endp);*/ \ if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ (isnull) = 0; break;\ }\ else if (endp != s) {\ (isnull) = -1; /* empty, but position changed */ \ }\ }\ k++;\ }\ break;\ }\ }\ }\ }\ } while(0) #define STACK_EMPTY_CHECK_MEMST_REC(isnull,sid,s,reg) do {\ int level = 0;\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_MEMST_REC"); \ if (k->type == STK_EMPTY_CHECK_START) {\ if (k->id == (sid)) {\ if (level == 0) {\ if (k->u.empty_check.pstr != (s)) {\ (isnull) = 0;\ break;\ }\ else {\ UChar* endp;\ (isnull) = 1;\ while (k < stk) {\ if (k->type == STK_MEM_START) {\ if (k->u.mem.end == INVALID_STACK_INDEX) {\ (isnull) = 0; break;\ }\ if (MEM_STATUS_AT(reg->bt_mem_end, k->id))\ endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\ else\ endp = (UChar* )k->u.mem.end;\ if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\ (isnull) = 0; break;\ }\ else if (endp != s) {\ (isnull) = -1; /* empty, but position changed */ \ }\ }\ k++;\ }\ break;\ }\ }\ else {\ level--;\ }\ }\ }\ else if (k->type == STK_EMPTY_CHECK_END) {\ if (k->id == (sid)) level++;\ }\ }\ } while(0) #else #define STACK_EMPTY_CHECK_REC(isnull,id,s) do {\ int level = 0;\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_EMPTY_CHECK_REC"); \ if (k->type == STK_EMPTY_CHECK_START) {\ if (k->u.empty_check.num == (id)) {\ if (level == 0) {\ (isnull) = (k->u.empty_check.pstr == (s));\ break;\ }\ }\ level--;\ }\ else if (k->type == STK_EMPTY_CHECK_END) {\ level++;\ }\ }\ } while(0) #endif /* USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT */ #define STACK_GET_REPEAT(sid, k) do {\ int level = 0;\ k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \ if (k->type == STK_REPEAT) {\ if (level == 0) {\ if (k->id == (sid)) {\ break;\ }\ }\ }\ else if (k->type == STK_CALL_FRAME) level--;\ else if (k->type == STK_RETURN) level++;\ }\ } while(0) #define STACK_RETURN(addr) do {\ int level = 0;\ StackType* k = stk;\ while (1) {\ k--;\ STACK_BASE_CHECK(k, "STACK_RETURN"); \ if (k->type == STK_CALL_FRAME) {\ if (level == 0) {\ (addr) = k->u.call_frame.ret_addr;\ break;\ }\ else level--;\ }\ else if (k->type == STK_RETURN)\ level++;\ }\ } while(0) #define STRING_CMP(s1,s2,len) do {\ while (len-- > 0) {\ if (*s1++ != *s2++) goto fail;\ }\ } while(0) #define STRING_CMP_IC(case_fold_flag,s1,ps2,len) do {\ if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \ goto fail; \ } while(0) static int string_cmp_ic(OnigEncoding enc, int case_fold_flag, UChar* s1, UChar** ps2, int mblen) { UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN]; UChar *p1, *p2, *end1, *s2, *end2; int len1, len2; s2 = *ps2; end1 = s1 + mblen; end2 = s2 + mblen; while (s1 < end1) { len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, end1, buf1); len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, end2, buf2); if (len1 != len2) return 0; p1 = buf1; p2 = buf2; while (len1-- > 0) { if (*p1 != *p2) return 0; p1++; p2++; } } *ps2 = s2; return 1; } #define STRING_CMP_VALUE(s1,s2,len,is_fail) do {\ is_fail = 0;\ while (len-- > 0) {\ if (*s1++ != *s2++) {\ is_fail = 1; break;\ }\ }\ } while(0) #define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,is_fail) do {\ if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \ is_fail = 1; \ else \ is_fail = 0; \ } while(0) #define IS_EMPTY_STR (str == end) #define ON_STR_BEGIN(s) ((s) == str) #define ON_STR_END(s) ((s) == end) #define DATA_ENSURE_CHECK1 (s < right_range) #define DATA_ENSURE_CHECK(n) (s + (n) <= right_range) #define DATA_ENSURE(n) if (s + (n) > right_range) goto fail #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE #define INIT_RIGHT_RANGE right_range = (UChar* )in_right_range #else #define INIT_RIGHT_RANGE right_range = (UChar* )end #endif #ifdef USE_CAPTURE_HISTORY static int make_capture_history_tree(OnigCaptureTreeNode* node, StackType** kp, StackType* stk_top, UChar* str, regex_t* reg) { int n, r; OnigCaptureTreeNode* child; StackType* k = *kp; while (k < stk_top) { if (k->type == STK_MEM_START) { n = k->id; if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP && MEM_STATUS_AT(reg->capture_history, n) != 0) { child = history_node_new(); CHECK_NULL_RETURN_MEMERR(child); child->group = n; child->beg = (int )(k->u.mem.pstr - str); r = history_tree_add_child(node, child); if (r != 0) return r; *kp = (k + 1); r = make_capture_history_tree(child, kp, stk_top, str, reg); if (r != 0) return r; k = *kp; child->end = (int )(k->u.mem.pstr - str); } } else if (k->type == STK_MEM_END) { if (k->id == node->group) { node->end = (int )(k->u.mem.pstr - str); *kp = k; return 0; } } k++; } return 1; /* 1: root node ending. */ } #endif #ifdef USE_BACKREF_WITH_LEVEL static int mem_is_in_memp(int mem, int num, UChar* memp) { int i; MemNumType m; for (i = 0; i < num; i++) { GET_MEMNUM_INC(m, memp); if (mem == (int )m) return 1; } return 0; } static int backref_match_at_nested_level(regex_t* reg, StackType* top, StackType* stk_base, int ignore_case, int case_fold_flag, int nest, int mem_num, UChar* memp, UChar** s, const UChar* send) { UChar *ss, *p, *pstart, *pend = NULL_UCHARP; int level; StackType* k; level = 0; k = top; k--; while (k >= stk_base) { if (k->type == STK_CALL_FRAME) { level--; } else if (k->type == STK_RETURN) { level++; } else if (level == nest) { if (k->type == STK_MEM_START) { if (mem_is_in_memp(k->id, mem_num, memp)) { pstart = k->u.mem.pstr; if (IS_NOT_NULL(pend)) { if (pend - pstart > send - *s) return 0; /* or goto next_mem; */ p = pstart; ss = *s; if (ignore_case != 0) { if (string_cmp_ic(reg->enc, case_fold_flag, pstart, &ss, (int )(pend - pstart)) == 0) return 0; /* or goto next_mem; */ } else { while (p < pend) { if (*p++ != *ss++) return 0; /* or goto next_mem; */ } } *s = ss; return 1; } } } else if (k->type == STK_MEM_END) { if (mem_is_in_memp(k->id, mem_num, memp)) { pend = k->u.mem.pstr; } } } k--; } return 0; } static int backref_check_at_nested_level(regex_t* reg, StackType* top, StackType* stk_base, int nest, int mem_num, UChar* memp) { int level; StackType* k; level = 0; k = top; k--; while (k >= stk_base) { if (k->type == STK_CALL_FRAME) { level--; } else if (k->type == STK_RETURN) { level++; } else if (level == nest) { if (k->type == STK_MEM_END) { if (mem_is_in_memp(k->id, mem_num, memp)) { return 1; } } } k--; } return 0; } #endif /* USE_BACKREF_WITH_LEVEL */ #ifdef ONIG_DEBUG_STATISTICS #define USE_TIMEOFDAY #ifdef USE_TIMEOFDAY #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_UNISTD_H #include #endif static struct timeval ts, te; #define GETTIME(t) gettimeofday(&(t), (struct timezone* )0) #define TIMEDIFF(te,ts) (((te).tv_usec - (ts).tv_usec) + \ (((te).tv_sec - (ts).tv_sec)*1000000)) #else #ifdef HAVE_SYS_TIMES_H #include #endif static struct tms ts, te; #define GETTIME(t) times(&(t)) #define TIMEDIFF(te,ts) ((te).tms_utime - (ts).tms_utime) #endif static int OpCounter[256]; static int OpPrevCounter[256]; static unsigned long OpTime[256]; static int OpCurr = OP_FINISH; static int OpPrevTarget = OP_FAIL; static int MaxStackDepth = 0; #define MOP_IN(opcode) do {\ if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\ OpCurr = opcode;\ OpCounter[opcode]++;\ GETTIME(ts);\ } while(0) #define MOP_OUT do {\ GETTIME(te);\ OpTime[OpCurr] += TIMEDIFF(te, ts);\ } while(0) extern void onig_statistics_init(void) { int i; for (i = 0; i < 256; i++) { OpCounter[i] = OpPrevCounter[i] = 0; OpTime[i] = 0; } MaxStackDepth = 0; } extern int onig_print_statistics(FILE* f) { int r; int i; r = fprintf(f, " count prev time\n"); if (r < 0) return -1; for (i = 0; OnigOpInfo[i].opcode >= 0; i++) { r = fprintf(f, "%8d: %8d: %10ld: %s\n", OpCounter[i], OpPrevCounter[i], OpTime[i], OnigOpInfo[i].name); if (r < 0) return -1; } r = fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth); if (r < 0) return -1; return 0; } #define STACK_INC do {\ stk++;\ if (stk - stk_base > MaxStackDepth) \ MaxStackDepth = stk - stk_base;\ } while(0) #else #define STACK_INC stk++ #define MOP_IN(opcode) #define MOP_OUT #endif /* matching region of POSIX API */ typedef int regoff_t; typedef struct { regoff_t rm_so; regoff_t rm_eo; } posix_regmatch_t; /* match data(str - end) from position (sstart). */ /* if sstart == str then set sprev to NULL. */ static int match_at(regex_t* reg, const UChar* str, const UChar* end, #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE const UChar* in_right_range, #endif const UChar* sstart, UChar* sprev, OnigMatchArg* msa) { static UChar FinishCode[] = { OP_FINISH }; int i, n, num_mem, best_len, pop_level; LengthType tlen, tlen2; MemNumType mem; RelAddrType addr; UChar *s, *q, *sbegin; UChar *right_range; int is_alloca; char *alloc_base; StackType *stk_base, *stk, *stk_end; StackType *stkp; /* used as any purpose. */ StackIndex si; StackIndex *repeat_stk; StackIndex *mem_start_stk, *mem_end_stk; UChar* keep; #ifdef USE_COMBINATION_EXPLOSION_CHECK int scv; unsigned char* state_check_buff = msa->state_check_buff; int num_comb_exp_check = reg->num_comb_exp_check; #endif UChar *p = reg->p; OnigOptionType option = reg->options; OnigEncoding encode = reg->enc; OnigCaseFoldType case_fold_flag = reg->case_fold_flag; //n = reg->num_repeat + reg->num_mem * 2; pop_level = reg->stack_pop_level; num_mem = reg->num_mem; STACK_INIT(INIT_MATCH_STACK_SIZE); UPDATE_FOR_STACK_REALLOC; for (i = 1; i <= num_mem; i++) { mem_start_stk[i] = mem_end_stk[i] = INVALID_STACK_INDEX; } #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "match_at: str: %p, end: %p, start: %p, sprev: %p\n", str, end, sstart, sprev); fprintf(stderr, "size: %d, start offset: %d\n", (int )(end - str), (int )(sstart - str)); #endif STACK_PUSH_ENSURED(STK_ALT, FinishCode); /* bottom stack */ best_len = ONIG_MISMATCH; keep = s = (UChar* )sstart; INIT_RIGHT_RANGE; while (1) { #ifdef ONIG_DEBUG_MATCH { static unsigned int counter = 1; UChar *q, *bp, buf[50]; int len; fprintf(stderr, "%7u: %7ld: %4d> \"", counter, GET_STACK_INDEX(stk), (int )(s - str)); counter++; bp = buf; for (i = 0, q = s; i < 7 && q < end; i++) { len = enclen(encode, q); while (len-- > 0) *bp++ = *q++; } if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; } else { xmemcpy(bp, "\"", 1); bp += 1; } *bp = 0; fputs((char* )buf, stderr); for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr); fprintf(stderr, "%4d: ", (int )(p - reg->p)); onig_print_compiled_byte_code(stderr, p, NULL, reg->p, encode); fprintf(stderr, "\n"); } #endif sbegin = s; switch (*p++) { case OP_END: MOP_IN(OP_END); n = (int )(s - sstart); if (n > best_len) { OnigRegion* region; #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE if (IS_FIND_LONGEST(option)) { if (n > msa->best_len) { msa->best_len = n; msa->best_s = (UChar* )sstart; } else goto end_best_len; } #endif best_len = n; region = msa->region; if (region) { if (keep > s) keep = s; #ifdef USE_POSIX_API_REGION_OPTION if (IS_POSIX_REGION(msa->options)) { posix_regmatch_t* rmt = (posix_regmatch_t* )region; rmt[0].rm_so = (regoff_t )(keep - str); rmt[0].rm_eo = (regoff_t )(s - str); for (i = 1; i <= num_mem; i++) { if (mem_end_stk[i] != INVALID_STACK_INDEX) { if (MEM_STATUS_AT(reg->bt_mem_start, i)) rmt[i].rm_so = (regoff_t )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); else rmt[i].rm_so = (regoff_t )((UChar* )((void* )(mem_start_stk[i])) - str); rmt[i].rm_eo = (regoff_t )((MEM_STATUS_AT(reg->bt_mem_end, i) ? STACK_AT(mem_end_stk[i])->u.mem.pstr : (UChar* )((void* )mem_end_stk[i])) - str); } else { rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS; } } } else { #endif /* USE_POSIX_API_REGION_OPTION */ region->beg[0] = (int )(keep - str); region->end[0] = (int )(s - str); for (i = 1; i <= num_mem; i++) { if (mem_end_stk[i] != INVALID_STACK_INDEX) { if (MEM_STATUS_AT(reg->bt_mem_start, i)) region->beg[i] = (int )(STACK_AT(mem_start_stk[i])->u.mem.pstr - str); else region->beg[i] = (int )((UChar* )((void* )mem_start_stk[i]) - str); region->end[i] = (int )((MEM_STATUS_AT(reg->bt_mem_end, i) ? STACK_AT(mem_end_stk[i])->u.mem.pstr : (UChar* )((void* )mem_end_stk[i])) - str); } else { region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS; } } #ifdef USE_CAPTURE_HISTORY if (reg->capture_history != 0) { int r; OnigCaptureTreeNode* node; if (IS_NULL(region->history_root)) { region->history_root = node = history_node_new(); CHECK_NULL_RETURN_MEMERR(node); } else { node = region->history_root; history_tree_clear(node); } node->group = 0; node->beg = (int )(keep - str); node->end = (int )(s - str); stkp = stk_base; r = make_capture_history_tree(region->history_root, &stkp, stk, (UChar* )str, reg); if (r < 0) { best_len = r; /* error code */ goto finish; } } #endif /* USE_CAPTURE_HISTORY */ #ifdef USE_POSIX_API_REGION_OPTION } /* else IS_POSIX_REGION() */ #endif } /* if (region) */ } /* n > best_len */ #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE end_best_len: #endif MOP_OUT; if (IS_FIND_CONDITION(option)) { if (IS_FIND_NOT_EMPTY(option) && s == sstart) { best_len = ONIG_MISMATCH; goto fail; /* for retry */ } if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) { goto fail; /* for retry */ } } /* default behavior: return first-matching result. */ goto finish; break; case OP_EXACT1: MOP_IN(OP_EXACT1); DATA_ENSURE(1); if (*p != *s) goto fail; p++; s++; MOP_OUT; break; case OP_EXACT1_IC: MOP_IN(OP_EXACT1_IC); { int len; UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; DATA_ENSURE(1); len = ONIGENC_MBC_CASE_FOLD(encode, /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ case_fold_flag, &s, end, lowbuf); DATA_ENSURE(0); q = lowbuf; while (len-- > 0) { if (*p != *q) { goto fail; } p++; q++; } } MOP_OUT; break; case OP_EXACT2: MOP_IN(OP_EXACT2); DATA_ENSURE(2); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; sprev = s; p++; s++; MOP_OUT; continue; break; case OP_EXACT3: MOP_IN(OP_EXACT3); DATA_ENSURE(3); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; sprev = s; p++; s++; MOP_OUT; continue; break; case OP_EXACT4: MOP_IN(OP_EXACT4); DATA_ENSURE(4); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; sprev = s; p++; s++; MOP_OUT; continue; break; case OP_EXACT5: MOP_IN(OP_EXACT5); DATA_ENSURE(5); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; sprev = s; p++; s++; MOP_OUT; continue; break; case OP_EXACTN: MOP_IN(OP_EXACTN); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen); while (tlen-- > 0) { if (*p++ != *s++) goto fail; } sprev = s - 1; MOP_OUT; continue; break; case OP_EXACTN_IC: MOP_IN(OP_EXACTN_IC); { int len; UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; GET_LENGTH_INC(tlen, p); endp = p + tlen; while (p < endp) { sprev = s; DATA_ENSURE(1); len = ONIGENC_MBC_CASE_FOLD(encode, /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */ case_fold_flag, &s, end, lowbuf); DATA_ENSURE(0); q = lowbuf; while (len-- > 0) { if (*p != *q) goto fail; p++; q++; } } } MOP_OUT; continue; break; case OP_EXACTMB2N1: MOP_IN(OP_EXACTMB2N1); DATA_ENSURE(2); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; MOP_OUT; break; case OP_EXACTMB2N2: MOP_IN(OP_EXACTMB2N2); DATA_ENSURE(4); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; sprev = s; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; MOP_OUT; continue; break; case OP_EXACTMB2N3: MOP_IN(OP_EXACTMB2N3); DATA_ENSURE(6); if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; sprev = s; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; MOP_OUT; continue; break; case OP_EXACTMB2N: MOP_IN(OP_EXACTMB2N); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen * 2); while (tlen-- > 0) { if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; } sprev = s - 2; MOP_OUT; continue; break; case OP_EXACTMB3N: MOP_IN(OP_EXACTMB3N); GET_LENGTH_INC(tlen, p); DATA_ENSURE(tlen * 3); while (tlen-- > 0) { if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; if (*p != *s) goto fail; p++; s++; } sprev = s - 3; MOP_OUT; continue; break; case OP_EXACTMBN: MOP_IN(OP_EXACTMBN); GET_LENGTH_INC(tlen, p); /* mb-len */ GET_LENGTH_INC(tlen2, p); /* string len */ tlen2 *= tlen; DATA_ENSURE(tlen2); while (tlen2-- > 0) { if (*p != *s) goto fail; p++; s++; } sprev = s - tlen; MOP_OUT; continue; break; case OP_CCLASS: MOP_IN(OP_CCLASS); DATA_ENSURE(1); if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail; p += SIZE_BITSET; s += enclen(encode, s); /* OP_CCLASS can match mb-code. \D, \S */ MOP_OUT; break; case OP_CCLASS_MB: MOP_IN(OP_CCLASS_MB); if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail; cclass_mb: GET_LENGTH_INC(tlen, p); { OnigCodePoint code; UChar *ss; int mb_len; DATA_ENSURE(1); mb_len = enclen(encode, s); DATA_ENSURE(mb_len); ss = s; s += mb_len; code = ONIGENC_MBC_TO_CODE(encode, ss, s); #ifdef PLATFORM_UNALIGNED_WORD_ACCESS if (! onig_is_in_code_range(p, code)) goto fail; #else q = p; ALIGNMENT_RIGHT(q); if (! onig_is_in_code_range(q, code)) goto fail; #endif } p += tlen; MOP_OUT; break; case OP_CCLASS_MIX: MOP_IN(OP_CCLASS_MIX); DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { p += SIZE_BITSET; goto cclass_mb; } else { if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail; p += SIZE_BITSET; GET_LENGTH_INC(tlen, p); p += tlen; s++; } MOP_OUT; break; case OP_CCLASS_NOT: MOP_IN(OP_CCLASS_NOT); DATA_ENSURE(1); if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail; p += SIZE_BITSET; s += enclen(encode, s); MOP_OUT; break; case OP_CCLASS_MB_NOT: MOP_IN(OP_CCLASS_MB_NOT); DATA_ENSURE(1); if (! ONIGENC_IS_MBC_HEAD(encode, s)) { s++; GET_LENGTH_INC(tlen, p); p += tlen; goto cc_mb_not_success; } cclass_mb_not: GET_LENGTH_INC(tlen, p); { OnigCodePoint code; UChar *ss; int mb_len = enclen(encode, s); if (! DATA_ENSURE_CHECK(mb_len)) { DATA_ENSURE(1); s = (UChar* )end; p += tlen; goto cc_mb_not_success; } ss = s; s += mb_len; code = ONIGENC_MBC_TO_CODE(encode, ss, s); #ifdef PLATFORM_UNALIGNED_WORD_ACCESS if (onig_is_in_code_range(p, code)) goto fail; #else q = p; ALIGNMENT_RIGHT(q); if (onig_is_in_code_range(q, code)) goto fail; #endif } p += tlen; cc_mb_not_success: MOP_OUT; break; case OP_CCLASS_MIX_NOT: MOP_IN(OP_CCLASS_MIX_NOT); DATA_ENSURE(1); if (ONIGENC_IS_MBC_HEAD(encode, s)) { p += SIZE_BITSET; goto cclass_mb_not; } else { if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail; p += SIZE_BITSET; GET_LENGTH_INC(tlen, p); p += tlen; s++; } MOP_OUT; break; #ifdef USE_OP_CCLASS_NODE case OP_CCLASS_NODE: MOP_IN(OP_CCLASS_NODE); { OnigCodePoint code; void *node; int mb_len; UChar *ss; DATA_ENSURE(1); GET_POINTER_INC(node, p); mb_len = enclen(encode, s); ss = s; s += mb_len; DATA_ENSURE(0); code = ONIGENC_MBC_TO_CODE(encode, ss, s); if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail; } MOP_OUT; break; #endif case OP_ANYCHAR: MOP_IN(OP_ANYCHAR); DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; s += n; MOP_OUT; break; case OP_ANYCHAR_ML: MOP_IN(OP_ANYCHAR_ML); DATA_ENSURE(1); n = enclen(encode, s); DATA_ENSURE(n); s += n; MOP_OUT; break; case OP_ANYCHAR_STAR: MOP_IN(OP_ANYCHAR_STAR); while (DATA_ENSURE_CHECK1) { STACK_PUSH_ALT(p, s, sprev); n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; sprev = s; s += n; } MOP_OUT; continue; break; case OP_ANYCHAR_ML_STAR: MOP_IN(OP_ANYCHAR_ML_STAR); while (DATA_ENSURE_CHECK1) { STACK_PUSH_ALT(p, s, sprev); n = enclen(encode, s); if (n > 1) { DATA_ENSURE(n); sprev = s; s += n; } else { sprev = s; s++; } } MOP_OUT; continue; break; case OP_ANYCHAR_STAR_PEEK_NEXT: MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT); while (DATA_ENSURE_CHECK1) { if (*p == *s) { STACK_PUSH_ALT(p + 1, s, sprev); } n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; sprev = s; s += n; } p++; MOP_OUT; break; case OP_ANYCHAR_ML_STAR_PEEK_NEXT:MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT); while (DATA_ENSURE_CHECK1) { if (*p == *s) { STACK_PUSH_ALT(p + 1, s, sprev); } n = enclen(encode, s); if (n > 1) { DATA_ENSURE(n); sprev = s; s += n; } else { sprev = s; s++; } } p++; MOP_OUT; break; #ifdef USE_COMBINATION_EXPLOSION_CHECK case OP_STATE_CHECK_ANYCHAR_STAR: MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR); GET_STATE_CHECK_NUM_INC(mem, p); while (DATA_ENSURE_CHECK1) { STATE_CHECK_VAL(scv, mem); if (scv) goto fail; STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem); n = enclen(encode, s); DATA_ENSURE(n); if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail; sprev = s; s += n; } MOP_OUT; break; case OP_STATE_CHECK_ANYCHAR_ML_STAR: MOP_IN(OP_STATE_CHECK_ANYCHAR_ML_STAR); GET_STATE_CHECK_NUM_INC(mem, p); while (DATA_ENSURE_CHECK1) { STATE_CHECK_VAL(scv, mem); if (scv) goto fail; STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem); n = enclen(encode, s); if (n > 1) { DATA_ENSURE(n); sprev = s; s += n; } else { sprev = s; s++; } } MOP_OUT; break; #endif /* USE_COMBINATION_EXPLOSION_CHECK */ case OP_WORD: MOP_IN(OP_WORD); DATA_ENSURE(1); if (! ONIGENC_IS_MBC_WORD(encode, s, end)) goto fail; s += enclen(encode, s); MOP_OUT; break; 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; s += enclen(encode, s); MOP_OUT; break; 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_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; break; #ifdef USE_WORD_BEGIN_END case OP_WORD_BEGIN: MOP_IN(OP_WORD_BEGIN); { ModeType mode; GET_MODE_INC(mode, p); // ascii_mode if (DATA_ENSURE_CHECK1 && IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { if (ON_STR_BEGIN(s) || ! IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { MOP_OUT; continue; } } } goto fail; break; case OP_WORD_END: MOP_IN(OP_WORD_END); { ModeType mode; GET_MODE_INC(mode, p); // ascii_mode if (!ON_STR_BEGIN(s) && IS_MBC_WORD_ASCII_MODE(encode, sprev, end, mode)) { if (ON_STR_END(s) || ! IS_MBC_WORD_ASCII_MODE(encode, s, end, mode)) { 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; MOP_OUT; continue; break; case OP_END_BUF: MOP_IN(OP_END_BUF); if (! ON_STR_END(s)) goto fail; MOP_OUT; continue; break; case OP_BEGIN_LINE: MOP_IN(OP_BEGIN_LINE); if (ON_STR_BEGIN(s)) { if (IS_NOTBOL(msa->options)) goto fail; MOP_OUT; continue; } else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) { MOP_OUT; continue; } goto fail; break; case OP_END_LINE: MOP_IN(OP_END_LINE); if (ON_STR_END(s)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif if (IS_NOTEOL(msa->options)) goto fail; MOP_OUT; continue; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE } #endif } else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) { MOP_OUT; continue; } #ifdef USE_CRNL_AS_LINE_TERMINATOR else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { MOP_OUT; continue; } #endif goto fail; break; case OP_SEMI_END_BUF: MOP_IN(OP_SEMI_END_BUF); if (ON_STR_END(s)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) { #endif if (IS_NOTEOL(msa->options)) goto fail; MOP_OUT; continue; #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE } #endif } else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) && ON_STR_END(s + enclen(encode, s))) { MOP_OUT; continue; } #ifdef USE_CRNL_AS_LINE_TERMINATOR else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) { UChar* ss = s + enclen(encode, s); ss += enclen(encode, ss); if (ON_STR_END(ss)) { MOP_OUT; continue; } } #endif goto fail; break; case OP_BEGIN_POSITION: MOP_IN(OP_BEGIN_POSITION); if (s != msa->start) goto fail; MOP_OUT; continue; break; case OP_MEMORY_START_PUSH: MOP_IN(OP_MEMORY_START_PUSH); GET_MEMNUM_INC(mem, p); STACK_PUSH_MEM_START(mem, s); MOP_OUT; continue; break; case OP_MEMORY_START: MOP_IN(OP_MEMORY_START); GET_MEMNUM_INC(mem, p); mem_start_stk[mem] = (StackIndex )((void* )s); MOP_OUT; continue; break; case OP_MEMORY_END_PUSH: MOP_IN(OP_MEMORY_END_PUSH); GET_MEMNUM_INC(mem, p); STACK_PUSH_MEM_END(mem, s); MOP_OUT; continue; break; case OP_MEMORY_END: MOP_IN(OP_MEMORY_END); GET_MEMNUM_INC(mem, p); mem_end_stk[mem] = (StackIndex )((void* )s); MOP_OUT; continue; break; #ifdef USE_CALL case OP_MEMORY_END_PUSH_REC: MOP_IN(OP_MEMORY_END_PUSH_REC); GET_MEMNUM_INC(mem, p); STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */ STACK_PUSH_MEM_END(mem, s); mem_start_stk[mem] = GET_STACK_INDEX(stkp); MOP_OUT; continue; break; case OP_MEMORY_END_REC: MOP_IN(OP_MEMORY_END_REC); GET_MEMNUM_INC(mem, p); mem_end_stk[mem] = (StackIndex )((void* )s); STACK_GET_MEM_START(mem, stkp); if (MEM_STATUS_AT(reg->bt_mem_start, mem)) mem_start_stk[mem] = GET_STACK_INDEX(stkp); else mem_start_stk[mem] = (StackIndex )((void* )stkp->u.mem.pstr); STACK_PUSH_MEM_END_MARK(mem); MOP_OUT; continue; break; #endif case OP_BACKREF1: MOP_IN(OP_BACKREF1); mem = 1; goto backref; break; case OP_BACKREF2: MOP_IN(OP_BACKREF2); mem = 2; goto backref; break; case OP_BACKREF_N: MOP_IN(OP_BACKREF_N); GET_MEMNUM_INC(mem, p); backref: { int len; UChar *pstart, *pend; if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; if (MEM_STATUS_AT(reg->bt_mem_start, mem)) pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; else pstart = (UChar* )((void* )mem_start_stk[mem]); pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; STRING_CMP(pstart, s, n); while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; MOP_OUT; continue; } break; case OP_BACKREF_N_IC: MOP_IN(OP_BACKREF_N_IC); GET_MEMNUM_INC(mem, p); { int len; UChar *pstart, *pend; if (mem_end_stk[mem] == INVALID_STACK_INDEX) goto fail; if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail; if (MEM_STATUS_AT(reg->bt_mem_start, mem)) pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; else pstart = (UChar* )((void* )mem_start_stk[mem]); pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; STRING_CMP_IC(case_fold_flag, pstart, &s, n); while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; MOP_OUT; continue; } break; case OP_BACKREF_MULTI: MOP_IN(OP_BACKREF_MULTI); { int len, is_fail; UChar *pstart, *pend, *swork; GET_LENGTH_INC(tlen, p); for (i = 0; i < tlen; i++) { GET_MEMNUM_INC(mem, p); if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; if (MEM_STATUS_AT(reg->bt_mem_start, mem)) pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; else pstart = (UChar* )((void* )mem_start_stk[mem]); pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; swork = s; STRING_CMP_VALUE(pstart, swork, n, is_fail); if (is_fail) continue; s = swork; while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; p += (SIZE_MEMNUM * (tlen - i - 1)); break; /* success */ } if (i == tlen) goto fail; MOP_OUT; continue; } break; case OP_BACKREF_MULTI_IC: MOP_IN(OP_BACKREF_MULTI_IC); { int len, is_fail; UChar *pstart, *pend, *swork; GET_LENGTH_INC(tlen, p); for (i = 0; i < tlen; i++) { GET_MEMNUM_INC(mem, p); if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; if (MEM_STATUS_AT(reg->bt_mem_start, mem)) pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr; else pstart = (UChar* )((void* )mem_start_stk[mem]); pend = (MEM_STATUS_AT(reg->bt_mem_end, mem) ? STACK_AT(mem_end_stk[mem])->u.mem.pstr : (UChar* )((void* )mem_end_stk[mem])); n = (int )(pend - pstart); DATA_ENSURE(n); sprev = s; swork = s; STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail); if (is_fail) continue; s = swork; while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; p += (SIZE_MEMNUM * (tlen - i - 1)); break; /* success */ } if (i == tlen) goto fail; MOP_OUT; continue; } break; #ifdef USE_BACKREF_WITH_LEVEL case OP_BACKREF_WITH_LEVEL: { int len; OnigOptionType ic; LengthType level; GET_OPTION_INC(ic, p); GET_LENGTH_INC(level, p); GET_LENGTH_INC(tlen, p); sprev = s; if (backref_match_at_nested_level(reg, stk, stk_base, ic , case_fold_flag, (int )level, (int )tlen, p, &s, end)) { while (sprev + (len = enclen(encode, sprev)) < s) sprev += len; p += (SIZE_MEMNUM * tlen); } else goto fail; MOP_OUT; continue; } break; #endif case OP_BACKREF_CHECK: MOP_IN(OP_BACKREF_CHECK); { GET_LENGTH_INC(tlen, p); for (i = 0; i < tlen; i++) { GET_MEMNUM_INC(mem, p); if (mem_end_stk[mem] == INVALID_STACK_INDEX) continue; if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue; p += (SIZE_MEMNUM * (tlen - i - 1)); break; /* success */ } if (i == tlen) goto fail; MOP_OUT; continue; } break; #ifdef USE_BACKREF_WITH_LEVEL case OP_BACKREF_CHECK_WITH_LEVEL: { LengthType level; GET_LENGTH_INC(level, p); GET_LENGTH_INC(tlen, p); if (backref_check_at_nested_level(reg, stk, stk_base, (int )level, (int )tlen, p) != 0) { p += (SIZE_MEMNUM * tlen); } else goto fail; MOP_OUT; continue; } break; #endif #if 0 /* no need: IS_DYNAMIC_OPTION() == 0 */ case OP_SET_OPTION_PUSH: MOP_IN(OP_SET_OPTION_PUSH); GET_OPTION_INC(option, p); STACK_PUSH_ALT(p, s, sprev); p += SIZE_OP_SET_OPTION + SIZE_OP_FAIL; MOP_OUT; continue; break; case OP_SET_OPTION: MOP_IN(OP_SET_OPTION); GET_OPTION_INC(option, p); MOP_OUT; continue; break; #endif case OP_EMPTY_CHECK_START: MOP_IN(OP_EMPTY_CHECK_START); GET_MEMNUM_INC(mem, p); /* mem: null check id */ STACK_PUSH_EMPTY_CHECK_START(mem, s); MOP_OUT; continue; break; case OP_EMPTY_CHECK_END: MOP_IN(OP_EMPTY_CHECK_END); { int is_empty; GET_MEMNUM_INC(mem, p); /* mem: null check id */ STACK_EMPTY_CHECK(is_empty, mem, s); if (is_empty) { #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "EMPTY_CHECK_END: skip id:%d, s:%p\n", (int )mem, s); #endif empty_check_found: /* empty loop founded, skip next instruction */ switch (*p++) { case OP_JUMP: case OP_PUSH: p += SIZE_RELADDR; break; case OP_REPEAT_INC: case OP_REPEAT_INC_NG: case OP_REPEAT_INC_SG: case OP_REPEAT_INC_NG_SG: p += SIZE_MEMNUM; break; default: goto unexpected_bytecode_error; break; } } } MOP_OUT; continue; break; #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT case OP_EMPTY_CHECK_END_MEMST: MOP_IN(OP_EMPTY_CHECK_END_MEMST); { int is_empty; GET_MEMNUM_INC(mem, p); /* mem: null check id */ STACK_EMPTY_CHECK_MEMST(is_empty, mem, s, reg); if (is_empty) { #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "EMPTY_CHECK_END_MEMST: skip id:%d, s:%p\n", (int)mem, s); #endif if (is_empty == -1) goto fail; goto empty_check_found; } } MOP_OUT; continue; break; #endif #ifdef USE_CALL case OP_EMPTY_CHECK_END_MEMST_PUSH: MOP_IN(OP_EMPTY_CHECK_END_MEMST_PUSH); { int is_empty; GET_MEMNUM_INC(mem, p); /* mem: null check id */ #ifdef USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT STACK_EMPTY_CHECK_MEMST_REC(is_empty, mem, s, reg); #else STACK_EMPTY_CHECK_REC(is_empty, mem, s); #endif if (is_empty) { #ifdef ONIG_DEBUG_MATCH fprintf(stderr, "EMPTY_CHECK_END_MEMST_PUSH: skip id:%d, s:%p\n", (int )mem, s); #endif if (is_empty == -1) goto fail; goto empty_check_found; } else { STACK_PUSH_EMPTY_CHECK_END(mem); } } MOP_OUT; continue; break; #endif case OP_JUMP: MOP_IN(OP_JUMP); GET_RELADDR_INC(addr, p); p += addr; MOP_OUT; CHECK_INTERRUPT_IN_MATCH_AT; continue; break; case OP_PUSH: MOP_IN(OP_PUSH); GET_RELADDR_INC(addr, p); STACK_PUSH_ALT(p + addr, s, sprev); MOP_OUT; continue; break; case OP_PUSH_SUPER: MOP_IN(OP_PUSH_SUPER); GET_RELADDR_INC(addr, p); STACK_PUSH_SUPER_ALT(p + addr, s, sprev); MOP_OUT; continue; break; #ifdef USE_COMBINATION_EXPLOSION_CHECK case OP_STATE_CHECK_PUSH: MOP_IN(OP_STATE_CHECK_PUSH); GET_STATE_CHECK_NUM_INC(mem, p); STATE_CHECK_VAL(scv, mem); if (scv) goto fail; GET_RELADDR_INC(addr, p); STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem); MOP_OUT; continue; break; case OP_STATE_CHECK_PUSH_OR_JUMP: MOP_IN(OP_STATE_CHECK_PUSH_OR_JUMP); GET_STATE_CHECK_NUM_INC(mem, p); GET_RELADDR_INC(addr, p); STATE_CHECK_VAL(scv, mem); if (scv) { p += addr; } else { STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem); } MOP_OUT; continue; break; case OP_STATE_CHECK: MOP_IN(OP_STATE_CHECK); GET_STATE_CHECK_NUM_INC(mem, p); STATE_CHECK_VAL(scv, mem); if (scv) goto fail; STACK_PUSH_STATE_CHECK(s, mem); MOP_OUT; continue; break; #endif /* USE_COMBINATION_EXPLOSION_CHECK */ case OP_POP: MOP_IN(OP_POP); STACK_POP_ONE; MOP_OUT; continue; break; case OP_PUSH_OR_JUMP_EXACT1: MOP_IN(OP_PUSH_OR_JUMP_EXACT1); GET_RELADDR_INC(addr, p); if (*p == *s && DATA_ENSURE_CHECK1) { p++; STACK_PUSH_ALT(p + addr, s, sprev); MOP_OUT; continue; } p += (addr + 1); MOP_OUT; continue; break; case OP_PUSH_IF_PEEK_NEXT: MOP_IN(OP_PUSH_IF_PEEK_NEXT); GET_RELADDR_INC(addr, p); if (*p == *s) { p++; STACK_PUSH_ALT(p + addr, s, sprev); MOP_OUT; continue; } p++; MOP_OUT; continue; break; case OP_REPEAT: MOP_IN(OP_REPEAT); { GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ GET_RELADDR_INC(addr, p); STACK_ENSURE(1); repeat_stk[mem] = GET_STACK_INDEX(stk); STACK_PUSH_REPEAT(mem, p); if (reg->repeat_range[mem].lower == 0) { STACK_PUSH_ALT(p + addr, s, sprev); } } MOP_OUT; continue; break; case OP_REPEAT_NG: MOP_IN(OP_REPEAT_NG); { GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ GET_RELADDR_INC(addr, p); STACK_ENSURE(1); repeat_stk[mem] = GET_STACK_INDEX(stk); STACK_PUSH_REPEAT(mem, p); if (reg->repeat_range[mem].lower == 0) { STACK_PUSH_ALT(p, s, sprev); p += addr; } } MOP_OUT; continue; break; case OP_REPEAT_INC: MOP_IN(OP_REPEAT_INC); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ si = repeat_stk[mem]; stkp = STACK_AT(si); repeat_inc: stkp->u.repeat.count++; if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) { /* end of repeat. Nothing to do. */ } else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { STACK_PUSH_ALT(p, s, sprev); p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */ } else { p = stkp->u.repeat.pcode; } STACK_PUSH_REPEAT_INC(si); MOP_OUT; CHECK_INTERRUPT_IN_MATCH_AT; continue; break; case OP_REPEAT_INC_SG: MOP_IN(OP_REPEAT_INC_SG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc; break; case OP_REPEAT_INC_NG: MOP_IN(OP_REPEAT_INC_NG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ si = repeat_stk[mem]; stkp = STACK_AT(si); repeat_inc_ng: stkp->u.repeat.count++; if (stkp->u.repeat.count < reg->repeat_range[mem].upper) { if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) { UChar* pcode = stkp->u.repeat.pcode; STACK_PUSH_REPEAT_INC(si); STACK_PUSH_ALT(pcode, s, sprev); } else { p = stkp->u.repeat.pcode; STACK_PUSH_REPEAT_INC(si); } } else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) { STACK_PUSH_REPEAT_INC(si); } MOP_OUT; CHECK_INTERRUPT_IN_MATCH_AT; continue; break; case OP_REPEAT_INC_NG_SG: MOP_IN(OP_REPEAT_INC_NG_SG); GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */ STACK_GET_REPEAT(mem, stkp); si = GET_STACK_INDEX(stkp); goto repeat_inc_ng; break; case OP_PREC_READ_START: MOP_IN(OP_PREC_READ_START); STACK_PUSH_POS(s, sprev); MOP_OUT; continue; break; case OP_PREC_READ_END: MOP_IN(OP_PREC_READ_END); { STACK_EXEC_TO_VOID(stkp); s = stkp->u.state.pstr; sprev = stkp->u.state.pstr_prev; } MOP_OUT; continue; break; case OP_PREC_READ_NOT_START: MOP_IN(OP_PREC_READ_NOT_START); GET_RELADDR_INC(addr, p); STACK_PUSH_ALT_PREC_READ_NOT(p + addr, s, sprev); MOP_OUT; continue; break; case OP_PREC_READ_NOT_END: MOP_IN(OP_PREC_READ_NOT_END); STACK_POP_TIL_ALT_PREC_READ_NOT; goto fail; break; case OP_ATOMIC_START: MOP_IN(OP_ATOMIC_START); STACK_PUSH_TO_VOID_START; MOP_OUT; continue; break; case OP_ATOMIC_END: MOP_IN(OP_ATOMIC_END); STACK_EXEC_TO_VOID(stkp); MOP_OUT; continue; break; case OP_LOOK_BEHIND: MOP_IN(OP_LOOK_BEHIND); GET_LENGTH_INC(tlen, p); s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); if (IS_NULL(s)) goto fail; sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s); MOP_OUT; continue; break; case OP_LOOK_BEHIND_NOT_START: MOP_IN(OP_LOOK_BEHIND_NOT_START); GET_RELADDR_INC(addr, p); GET_LENGTH_INC(tlen, p); q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen); if (IS_NULL(q)) { /* too short case -> success. ex. /(?p + addr; MOP_OUT; continue; break; case OP_RETURN: MOP_IN(OP_RETURN); STACK_RETURN(p); STACK_PUSH_RETURN; MOP_OUT; continue; break; #endif case OP_PUSH_SAVE_VAL: MOP_IN(OP_PUSH_SAVE_VAL); { SaveType type; GET_SAVE_TYPE_INC(type, p); GET_MEMNUM_INC(mem, p); /* mem: save id */ switch ((enum SaveType )type) { case SAVE_KEEP: STACK_PUSH_SAVE_VAL(mem, type, s); break; case SAVE_S: STACK_PUSH_SAVE_VAL_WITH_SPREV(mem, type, s); break; case SAVE_RIGHT_RANGE: STACK_PUSH_SAVE_VAL(mem, SAVE_RIGHT_RANGE, right_range); break; } } MOP_OUT; continue; break; case OP_UPDATE_VAR: MOP_IN(OP_UPDATE_VAR); { UpdateVarType type; enum SaveType save_type; GET_UPDATE_VAR_TYPE_INC(type, p); GET_MEMNUM_INC(mem, p); /* mem: save id */ switch ((enum UpdateVarType )type) { case UPDATE_VAR_KEEP_FROM_STACK_LAST: STACK_GET_SAVE_VAL_TYPE_LAST(SAVE_KEEP, keep); break; case UPDATE_VAR_S_FROM_STACK: STACK_GET_SAVE_VAL_TYPE_LAST_ID_WITH_SPREV(SAVE_S, mem, s); break; case UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK: save_type = SAVE_S; goto get_save_val_type_last_id; break; case UPDATE_VAR_RIGHT_RANGE_FROM_STACK: save_type = SAVE_RIGHT_RANGE; get_save_val_type_last_id: STACK_GET_SAVE_VAL_TYPE_LAST_ID(save_type, mem, right_range); break; case UPDATE_VAR_RIGHT_RANGE_INIT: INIT_RIGHT_RANGE; break; } } MOP_OUT; continue; break; case OP_FINISH: goto finish; break; fail: MOP_OUT; /* fall */ case OP_FAIL: MOP_IN(OP_FAIL); STACK_POP; p = stk->u.state.pcode; s = stk->u.state.pstr; sprev = stk->u.state.pstr_prev; #ifdef USE_COMBINATION_EXPLOSION_CHECK if (stk->u.state.state_check != 0) { stk->type = STK_STATE_CHECK_MARK; stk++; } #endif MOP_OUT; continue; break; default: goto bytecode_error; } /* end of switch */ sprev = sbegin; } /* end of while(1) */ finish: STACK_SAVE; return best_len; #ifdef ONIG_DEBUG stack_error: STACK_SAVE; return ONIGERR_STACK_BUG; #endif bytecode_error: STACK_SAVE; return ONIGERR_UNDEFINED_BYTECODE; unexpected_bytecode_error: STACK_SAVE; return ONIGERR_UNEXPECTED_BYTECODE; } static UChar* slow_search(OnigEncoding enc, UChar* target, UChar* target_end, const UChar* text, const UChar* text_end, UChar* text_range) { UChar *t, *p, *s, *end; end = (UChar* )text_end; end -= target_end - target - 1; if (end > text_range) end = text_range; s = (UChar* )text; while (s < end) { if (*s == *target) { p = s + 1; t = target + 1; while (t < target_end) { if (*t != *p++) break; t++; } if (t == target_end) return s; } s += enclen(enc, s); } return (UChar* )NULL; } static int str_lower_case_match(OnigEncoding enc, int case_fold_flag, const UChar* t, const UChar* tend, const UChar* p, const UChar* end) { int lowlen; UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN]; while (t < tend) { lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf); q = lowbuf; while (lowlen > 0) { if (*t++ != *q++) return 0; lowlen--; } } return 1; } static UChar* slow_search_ic(OnigEncoding enc, int case_fold_flag, UChar* target, UChar* target_end, const UChar* text, const UChar* text_end, UChar* text_range) { UChar *s, *end; end = (UChar* )text_end; end -= target_end - target - 1; if (end > text_range) end = text_range; s = (UChar* )text; while (s < end) { if (str_lower_case_match(enc, case_fold_flag, target, target_end, s, text_end)) return s; s += enclen(enc, s); } return (UChar* )NULL; } static UChar* slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end, const UChar* text, const UChar* adjust_text, const UChar* text_end, const UChar* text_start) { UChar *t, *p, *s; s = (UChar* )text_end; s -= (target_end - target); if (s > text_start) s = (UChar* )text_start; else s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); while (s >= text) { if (*s == *target) { p = s + 1; t = target + 1; while (t < target_end) { if (*t != *p++) break; t++; } if (t == target_end) return s; } s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s); } return (UChar* )NULL; } static UChar* slow_search_backward_ic(OnigEncoding enc, int case_fold_flag, UChar* target, UChar* target_end, const UChar* text, const UChar* adjust_text, const UChar* text_end, const UChar* text_start) { UChar *s; s = (UChar* )text_end; s -= (target_end - target); if (s > text_start) s = (UChar* )text_start; else s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s); while (s >= text) { if (str_lower_case_match(enc, case_fold_flag, target, target_end, s, text_end)) return s; s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s); } return (UChar* )NULL; } static UChar* bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end, const UChar* text, const UChar* text_end, const UChar* text_range) { const UChar *s, *se, *t, *p, *end; const UChar *tail; int skip, tlen1; #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "bm_search_notrev: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range); #endif tail = target_end - 1; tlen1 = (int )(tail - target); end = text_range; if (end + tlen1 > text_end) end = text_end - tlen1; s = text; if (IS_NULL(reg->int_map)) { while (s < end) { p = se = s + tlen1; t = tail; while (*p == *t) { if (t == target) return (UChar* )s; p--; t--; } skip = reg->map[*se]; t = s; do { s += enclen(reg->enc, s); } while ((s - t) < skip && s < end); } } else { while (s < end) { p = se = s + tlen1; t = tail; while (*p == *t) { if (t == target) return (UChar* )s; p--; t--; } skip = reg->int_map[*se]; t = s; do { s += enclen(reg->enc, s); } while ((s - t) < skip && s < end); } } return (UChar* )NULL; } static UChar* bm_search(regex_t* reg, const UChar* target, const UChar* target_end, const UChar* text, const UChar* text_end, const UChar* text_range) { const UChar *s, *t, *p, *end; const UChar *tail; end = text_range + (target_end - target) - 1; if (end > text_end) end = text_end; tail = target_end - 1; s = text + (target_end - target) - 1; if (IS_NULL(reg->int_map)) { while (s < end) { p = s; t = tail; while (*p == *t) { if (t == target) return (UChar* )p; p--; t--; } s += reg->map[*s]; } } else { /* see int_map[] */ while (s < end) { p = s; t = tail; while (*p == *t) { if (t == target) return (UChar* )p; p--; t--; } s += reg->int_map[*s]; } } return (UChar* )NULL; } #ifdef USE_INT_MAP_BACKWARD static int set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED, int** skip) { int i, len; if (IS_NULL(*skip)) { *skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE); if (IS_NULL(*skip)) return ONIGERR_MEMORY; } len = end - s; for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*skip)[i] = len; for (i = len - 1; i > 0; i--) (*skip)[s[i]] = i; return 0; } static UChar* bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end, const UChar* text, const UChar* adjust_text, const UChar* text_end, const UChar* text_start) { const UChar *s, *t, *p; s = text_end - (target_end - target); if (text_start < s) s = text_start; else s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); while (s >= text) { p = s; t = target; while (t < target_end && *p == *t) { p++; t++; } if (t == target_end) return (UChar* )s; s -= reg->int_map_backward[*s]; s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s); } return (UChar* )NULL; } #endif static UChar* map_search(OnigEncoding enc, UChar map[], const UChar* text, const UChar* text_range) { const UChar *s = text; while (s < text_range) { if (map[*s]) return (UChar* )s; s += enclen(enc, s); } return (UChar* )NULL; } static UChar* map_search_backward(OnigEncoding enc, UChar map[], const UChar* text, const UChar* adjust_text, const UChar* text_start) { const UChar *s = text_start; while (s >= text) { if (map[*s]) return (UChar* )s; s = onigenc_get_prev_char_head(enc, adjust_text, s); } return (UChar* )NULL; } extern int onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region, OnigOptionType option) { int r; UChar *prev; OnigMatchArg msa; MATCH_ARG_INIT(msa, reg, option, region, at); #ifdef USE_COMBINATION_EXPLOSION_CHECK { int offset = at - str; STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); } #endif if (region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) #endif ) { r = onig_region_resize_clear(region, reg->num_mem + 1); } else r = 0; if (r == 0) { if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { r = ONIGERR_INVALID_WIDE_CHAR_VALUE; goto end; } } prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at); r = match_at(reg, str, end, #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE end, #endif at, prev, &msa); } end: MATCH_ARG_FREE(msa); return r; } static int forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, UChar* range, UChar** low, UChar** high, UChar** low_prev) { UChar *p, *pprev = (UChar* )NULL; #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "forward_search_range: str: %p, end: %p, s: %p, range: %p\n", str, end, s, range); #endif p = s; if (reg->dmin > 0) { if (ONIGENC_IS_SINGLEBYTE(reg->enc)) { p += reg->dmin; } else { UChar *q = p + reg->dmin; if (q >= end) return 0; /* fail */ while (p < q) p += enclen(reg->enc, p); } } retry: switch (reg->optimize) { case ONIG_OPTIMIZE_EXACT: p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range); break; case ONIG_OPTIMIZE_EXACT_IC: p = slow_search_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, p, end, range); break; case ONIG_OPTIMIZE_EXACT_BM: p = bm_search(reg, reg->exact, reg->exact_end, p, end, range); break; case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range); break; case ONIG_OPTIMIZE_MAP: p = map_search(reg->enc, reg->map, p, range); break; } if (p && p < range) { if (p - reg->dmin < s) { retry_gate: pprev = p; p += enclen(reg->enc, p); goto retry; } if (reg->sub_anchor) { UChar* prev; switch (reg->sub_anchor) { case ANCHOR_BEGIN_LINE: if (!ON_STR_BEGIN(p)) { prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), p); if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) goto retry_gate; } break; case ANCHOR_END_LINE: if (ON_STR_END(p)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE prev = (UChar* )onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), p); if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) goto retry_gate; #endif } else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) #ifdef USE_CRNL_AS_LINE_TERMINATOR && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) #endif ) goto retry_gate; break; } } if (reg->dmax == 0) { *low = p; if (low_prev) { if (*low > s) *low_prev = onigenc_get_prev_char_head(reg->enc, s, p); else *low_prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), p); } } else { if (reg->dmax != INFINITE_LEN) { if (p - str < reg->dmax) { *low = (UChar* )str; if (low_prev) *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low); } else { *low = p - reg->dmax; if (*low > s) { *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, *low, (const UChar** )low_prev); if (low_prev && IS_NULL(*low_prev)) *low_prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : s), *low); } else { if (low_prev) *low_prev = onigenc_get_prev_char_head(reg->enc, (pprev ? pprev : str), *low); } } } } /* no needs to adjust *high, *high is used as range check only */ *high = p - reg->dmin; #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n", (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax); #endif return 1; /* success */ } return 0; /* fail */ } #define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD 100 static int backward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, const UChar* range, UChar* adjrange, UChar** low, UChar** high) { UChar *p; range += reg->dmin; p = s; retry: switch (reg->optimize) { case ONIG_OPTIMIZE_EXACT: exact_method: p = slow_search_backward(reg->enc, reg->exact, reg->exact_end, range, adjrange, end, p); break; case ONIG_OPTIMIZE_EXACT_IC: p = slow_search_backward_ic(reg->enc, reg->case_fold_flag, reg->exact, reg->exact_end, range, adjrange, end, p); break; case ONIG_OPTIMIZE_EXACT_BM: case ONIG_OPTIMIZE_EXACT_BM_NOT_REV: #ifdef USE_INT_MAP_BACKWARD if (IS_NULL(reg->int_map_backward)) { int r; if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD) goto exact_method; r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc, &(reg->int_map_backward)); if (r != 0) return r; } p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange, end, p); #else goto exact_method; #endif break; case ONIG_OPTIMIZE_MAP: p = map_search_backward(reg->enc, reg->map, range, adjrange, p); break; } if (p) { if (reg->sub_anchor) { UChar* prev; switch (reg->sub_anchor) { case ANCHOR_BEGIN_LINE: if (!ON_STR_BEGIN(p)) { prev = onigenc_get_prev_char_head(reg->enc, str, p); if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { p = prev; goto retry; } } break; case ANCHOR_END_LINE: if (ON_STR_END(p)) { #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE prev = onigenc_get_prev_char_head(reg->enc, adjrange, p); if (IS_NULL(prev)) goto fail; if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) { p = prev; goto retry; } #endif } else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end) #ifdef USE_CRNL_AS_LINE_TERMINATOR && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end) #endif ) { p = onigenc_get_prev_char_head(reg->enc, adjrange, p); if (IS_NULL(p)) goto fail; goto retry; } break; } } /* no needs to adjust *high, *high is used as range check only */ if (reg->dmax != INFINITE_LEN) { *low = p - reg->dmax; *high = p - reg->dmin; *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high); } #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "backward_search_range: low: %d, high: %d\n", (int )(*low - str), (int )(*high - str)); #endif return 1; /* success */ } fail: #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "backward_search_range: fail.\n"); #endif return 0; /* fail */ } extern int onig_search(regex_t* reg, const UChar* str, const UChar* end, const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option) { int r; UChar *s, *prev; OnigMatchArg msa; const UChar *orig_start = start; #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE const UChar *orig_range = range; #endif #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "onig_search (entry point): str: %p, end: %d, start: %d, range: %d\n", str, (int )(end - str), (int )(start - str), (int )(range - str)); #endif if (region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) #endif ) { r = onig_region_resize_clear(region, reg->num_mem + 1); if (r != 0) goto finish_no_msa; } if (start > end || start < str) goto mismatch_no_msa; if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) { r = ONIGERR_INVALID_WIDE_CHAR_VALUE; goto finish_no_msa; } } #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE #define MATCH_AND_RETURN_CHECK(upper_range) \ r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ if (r != ONIG_MISMATCH) {\ if (r >= 0) {\ if (! IS_FIND_LONGEST(reg->options)) {\ goto match;\ }\ }\ else goto finish; /* error */ \ } #else #define MATCH_AND_RETURN_CHECK(upper_range) \ r = match_at(reg, str, end, (upper_range), s, prev, &msa); \ if (r != ONIG_MISMATCH) {\ if (r >= 0) {\ goto match;\ }\ else goto finish; /* error */ \ } #endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ #else #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE #define MATCH_AND_RETURN_CHECK(none) \ r = match_at(reg, str, end, s, prev, &msa);\ if (r != ONIG_MISMATCH) {\ if (r >= 0) {\ if (! IS_FIND_LONGEST(reg->options)) {\ goto match;\ }\ }\ else goto finish; /* error */ \ } #else #define MATCH_AND_RETURN_CHECK(none) \ r = match_at(reg, str, end, s, prev, &msa);\ if (r != ONIG_MISMATCH) {\ if (r >= 0) {\ goto match;\ }\ else goto finish; /* error */ \ } #endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */ #endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */ /* anchor optimize: resume search range */ if (reg->anchor != 0 && str < end) { UChar *min_semi_end, *max_semi_end; if (reg->anchor & ANCHOR_BEGIN_POSITION) { /* search start-position only */ begin_position: if (range > start) range = start + 1; else range = start; } else if (reg->anchor & ANCHOR_BEGIN_BUF) { /* search str-position only */ if (range > start) { if (start != str) goto mismatch_no_msa; range = str + 1; } else { if (range <= str) { start = str; range = str; } else goto mismatch_no_msa; } } else if (reg->anchor & ANCHOR_END_BUF) { min_semi_end = max_semi_end = (UChar* )end; end_buf: if ((OnigLen )(max_semi_end - str) < reg->anchor_dmin) goto mismatch_no_msa; if (range > start) { if ((OnigLen )(min_semi_end - start) > reg->anchor_dmax) { start = min_semi_end - reg->anchor_dmax; if (start < end) start = onigenc_get_right_adjust_char_head(reg->enc, str, start); } if ((OnigLen )(max_semi_end - (range - 1)) < reg->anchor_dmin) { range = max_semi_end - reg->anchor_dmin + 1; } if (start > range) goto mismatch_no_msa; /* If start == range, match with empty at end. Backward search is used. */ } else { if ((OnigLen )(min_semi_end - range) > reg->anchor_dmax) { range = min_semi_end - reg->anchor_dmax; } if ((OnigLen )(max_semi_end - start) < reg->anchor_dmin) { start = max_semi_end - reg->anchor_dmin; start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start); } if (range > start) goto mismatch_no_msa; } } else if (reg->anchor & ANCHOR_SEMI_END_BUF) { UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1); max_semi_end = (UChar* )end; if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) { min_semi_end = pre_end; #ifdef USE_CRNL_AS_LINE_TERMINATOR pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1); if (IS_NOT_NULL(pre_end) && ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) { min_semi_end = pre_end; } #endif if (min_semi_end > str && start <= min_semi_end) { goto end_buf; } } else { min_semi_end = (UChar* )end; goto end_buf; } } else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) { goto begin_position; } } else if (str == end) { /* empty string */ static const UChar* address_for_empty_string = (UChar* )""; #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "onig_search: empty string.\n"); #endif if (reg->threshold_len == 0) { start = end = str = address_for_empty_string; s = (UChar* )start; prev = (UChar* )NULL; MATCH_ARG_INIT(msa, reg, option, region, start); #ifdef USE_COMBINATION_EXPLOSION_CHECK msa.state_check_buff = (void* )0; msa.state_check_buff_size = 0; /* NO NEED, for valgrind */ #endif MATCH_AND_RETURN_CHECK(end); goto mismatch; } goto mismatch_no_msa; } #ifdef ONIG_DEBUG_SEARCH fprintf(stderr, "onig_search(apply anchor): end: %d, start: %d, range: %d\n", (int )(end - str), (int )(start - str), (int )(range - str)); #endif MATCH_ARG_INIT(msa, reg, option, region, orig_start); #ifdef USE_COMBINATION_EXPLOSION_CHECK { int offset = (MIN(start, range) - str); STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check); } #endif s = (UChar* )start; if (range > start) { /* forward search */ if (s > str) prev = onigenc_get_prev_char_head(reg->enc, str, s); else prev = (UChar* )NULL; if (reg->optimize != ONIG_OPTIMIZE_NONE) { UChar *sch_range, *low, *high, *low_prev; sch_range = (UChar* )range; if (reg->dmax != 0) { if (reg->dmax == INFINITE_LEN) sch_range = (UChar* )end; else { sch_range += reg->dmax; if (sch_range > end) sch_range = (UChar* )end; } } if ((end - start) < reg->threshold_len) goto mismatch; if (reg->dmax != INFINITE_LEN) { do { if (! forward_search_range(reg, str, end, s, sch_range, &low, &high, &low_prev)) goto mismatch; if (s < low) { s = low; prev = low_prev; } while (s <= high) { MATCH_AND_RETURN_CHECK(orig_range); prev = s; s += enclen(reg->enc, s); } } while (s < range); goto mismatch; } else { /* check only. */ if (! forward_search_range(reg, str, end, s, sch_range, &low, &high, (UChar** )NULL)) goto mismatch; if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) { do { MATCH_AND_RETURN_CHECK(orig_range); prev = s; s += enclen(reg->enc, s); if ((reg->anchor & (ANCHOR_LOOK_BEHIND | ANCHOR_PREC_READ_NOT)) == 0) { while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) { prev = s; s += enclen(reg->enc, s); } } } while (s < range); goto mismatch; } } } do { MATCH_AND_RETURN_CHECK(orig_range); prev = s; s += enclen(reg->enc, s); } while (s < range); if (s == range) { /* because empty match with /$/. */ MATCH_AND_RETURN_CHECK(orig_range); } } else { /* backward search */ #ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE if (orig_start < end) orig_start += enclen(reg->enc, orig_start); /* is upper range */ #endif if (reg->optimize != ONIG_OPTIMIZE_NONE) { UChar *low, *high, *adjrange, *sch_start; if (range < end) adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range); else adjrange = (UChar* )end; if (reg->dmax != INFINITE_LEN && (end - range) >= reg->threshold_len) { do { sch_start = s + reg->dmax; if (sch_start > end) sch_start = (UChar* )end; if (backward_search_range(reg, str, end, sch_start, range, adjrange, &low, &high) <= 0) goto mismatch; if (s > high) s = high; while (s >= low) { prev = onigenc_get_prev_char_head(reg->enc, str, s); MATCH_AND_RETURN_CHECK(orig_start); s = prev; } } while (s >= range); goto mismatch; } else { /* check only. */ if ((end - range) < reg->threshold_len) goto mismatch; sch_start = s; if (reg->dmax != 0) { if (reg->dmax == INFINITE_LEN) sch_start = (UChar* )end; else { sch_start += reg->dmax; if (sch_start > end) sch_start = (UChar* )end; else sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, start, sch_start); } } if (backward_search_range(reg, str, end, sch_start, range, adjrange, &low, &high) <= 0) goto mismatch; } } do { prev = onigenc_get_prev_char_head(reg->enc, str, s); MATCH_AND_RETURN_CHECK(orig_start); s = prev; } while (s >= range); } mismatch: #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE if (IS_FIND_LONGEST(reg->options)) { if (msa.best_len >= 0) { s = msa.best_s; goto match; } } #endif r = ONIG_MISMATCH; finish: MATCH_ARG_FREE(msa); /* If result is mismatch and no FIND_NOT_EMPTY option, then the region is not set in match_at(). */ if (IS_FIND_NOT_EMPTY(reg->options) && region #ifdef USE_POSIX_API_REGION_OPTION && !IS_POSIX_REGION(option) #endif ) { onig_region_clear(region); } #ifdef ONIG_DEBUG if (r != ONIG_MISMATCH) fprintf(stderr, "onig_search: error %d\n", r); #endif return r; mismatch_no_msa: r = ONIG_MISMATCH; finish_no_msa: #ifdef ONIG_DEBUG if (r != ONIG_MISMATCH) fprintf(stderr, "onig_search: error %d\n", r); #endif return r; match: MATCH_ARG_FREE(msa); return (int )(s - str); } extern int onig_scan(regex_t* reg, const UChar* str, const UChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(int, int, OnigRegion*, void*), void* callback_arg) { int r; int n; int rs; const UChar* start; if (ONIG_IS_OPTION_ON(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING)) { if (! ONIGENC_IS_VALID_MBC_STRING(reg->enc, str, end)) return ONIGERR_INVALID_WIDE_CHAR_VALUE; ONIG_OPTION_OFF(option, ONIG_OPTION_CHECK_VALIDITY_OF_STRING); } n = 0; start = str; while (1) { r = onig_search(reg, str, end, start, end, region, option); if (r >= 0) { rs = scan_callback(n, r, region, callback_arg); n++; if (rs != 0) return rs; if (region->end[0] == start - str) { if (start >= end) break; start += enclen(reg->enc, start); } else start = str + region->end[0]; if (start > end) break; } else if (r == ONIG_MISMATCH) { break; } else { /* error */ return r; } } return n; } extern OnigEncoding onig_get_encoding(regex_t* reg) { return reg->enc; } extern OnigOptionType onig_get_options(regex_t* reg) { return reg->options; } extern OnigCaseFoldType onig_get_case_fold_flag(regex_t* reg) { return reg->case_fold_flag; } extern OnigSyntaxType* onig_get_syntax(regex_t* reg) { return reg->syntax; } extern int onig_number_of_captures(regex_t* reg) { return reg->num_mem; } extern int onig_number_of_capture_histories(regex_t* reg) { #ifdef USE_CAPTURE_HISTORY int i, n; n = 0; for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) { if (MEM_STATUS_AT(reg->capture_history, i) != 0) n++; } return n; #else return 0; #endif } extern void onig_copy_encoding(OnigEncoding to, OnigEncoding from) { *to = *from; } oniguruma-6.7.0/src/regext.c000066400000000000000000000126251321242335200157660ustar00rootroot00000000000000/********************************************************************** regext.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" static void conv_ext0be32(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = '\0'; *conv++ = '\0'; *conv++ = '\0'; *conv++ = *s++; } } static void conv_ext0le32(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = *s++; *conv++ = '\0'; *conv++ = '\0'; *conv++ = '\0'; } } static void conv_ext0be(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = '\0'; *conv++ = *s++; } } static void conv_ext0le(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = *s++; *conv++ = '\0'; } } static void conv_swap4bytes(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = s[3]; *conv++ = s[2]; *conv++ = s[1]; *conv++ = s[0]; s += 4; } } static void conv_swap2bytes(const UChar* s, const UChar* end, UChar* conv) { while (s < end) { *conv++ = s[1]; *conv++ = s[0]; s += 2; } } static int conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* end, UChar** conv, UChar** conv_end) { int len = (int )(end - s); if (to == ONIG_ENCODING_UTF16_BE) { if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { *conv = (UChar* )xmalloc(len * 2); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + (len * 2); conv_ext0be(s, end, *conv); return 0; } else if (from == ONIG_ENCODING_UTF16_LE) { swap16: *conv = (UChar* )xmalloc(len); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + len; conv_swap2bytes(s, end, *conv); return 0; } } else if (to == ONIG_ENCODING_UTF16_LE) { if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { *conv = (UChar* )xmalloc(len * 2); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + (len * 2); conv_ext0le(s, end, *conv); return 0; } else if (from == ONIG_ENCODING_UTF16_BE) { goto swap16; } } if (to == ONIG_ENCODING_UTF32_BE) { if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { *conv = (UChar* )xmalloc(len * 4); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + (len * 4); conv_ext0be32(s, end, *conv); return 0; } else if (from == ONIG_ENCODING_UTF32_LE) { swap32: *conv = (UChar* )xmalloc(len); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + len; conv_swap4bytes(s, end, *conv); return 0; } } else if (to == ONIG_ENCODING_UTF32_LE) { if (from == ONIG_ENCODING_ASCII || from == ONIG_ENCODING_ISO_8859_1) { *conv = (UChar* )xmalloc(len * 4); CHECK_NULL_RETURN_MEMERR(*conv); *conv_end = *conv + (len * 4); conv_ext0le32(s, end, *conv); return 0; } else if (from == ONIG_ENCODING_UTF32_BE) { goto swap32; } } return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION; } extern int onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo) { int r; UChar *cpat, *cpat_end; if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL; if (ci->pattern_enc != ci->target_enc) { r = conv_encoding(ci->pattern_enc, ci->target_enc, pattern, pattern_end, &cpat, &cpat_end); if (r != 0) return r; } else { cpat = (UChar* )pattern; cpat_end = (UChar* )pattern_end; } *reg = (regex_t* )xmalloc(sizeof(regex_t)); if (IS_NULL(*reg)) { r = ONIGERR_MEMORY; goto err2; } r = onig_reg_init(*reg, ci->option, ci->case_fold_flag, ci->target_enc, ci->syntax); if (r != 0) goto err; r = onig_compile(*reg, cpat, cpat_end, einfo); if (r != 0) { err: onig_free(*reg); *reg = NULL; } err2: if (cpat != pattern) xfree(cpat); return r; } oniguruma-6.7.0/src/reggnu.c000066400000000000000000000077431321242335200157640ustar00rootroot00000000000000/********************************************************************** reggnu.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" #ifndef ONIGGNU_H #include "oniggnu.h" #endif extern void re_free_registers(OnigRegion* r) { /* 0: don't free self */ onig_region_free(r, 0); } extern int re_adjust_startpos(regex_t* reg, const char* string, int size, int startpos, int range) { if (startpos > 0 && ONIGENC_MBC_MAXLEN(reg->enc) != 1 && startpos < size) { UChar *p; UChar *s = (UChar* )string + startpos; if (range > 0) { p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s); } else { p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s); } return (int )(p - (UChar* )string); } return startpos; } extern int re_match(regex_t* reg, const char* str, int size, int pos, struct re_registers* regs) { return onig_match(reg, (UChar* )str, (UChar* )(str + size), (UChar* )(str + pos), regs, ONIG_OPTION_NONE); } extern int re_search(regex_t* bufp, const char* string, int size, int startpos, int range, struct re_registers* regs) { return onig_search(bufp, (UChar* )string, (UChar* )(string + size), (UChar* )(string + startpos), (UChar* )(string + startpos + range), regs, ONIG_OPTION_NONE); } extern int re_compile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf) { int r; OnigErrorInfo einfo; r = onig_compile(reg, (UChar* )pattern, (UChar* )(pattern + size), &einfo); if (r != ONIG_NORMAL) { if (IS_NOT_NULL(ebuf)) (void )onig_error_code_to_str((UChar* )ebuf, r, &einfo); } return r; } extern void re_free_pattern(regex_t* reg) { onig_free(reg); } extern int re_alloc_pattern(regex_t** reg) { *reg = (regex_t* )xmalloc(sizeof(regex_t)); if (IS_NULL(*reg)) return ONIGERR_MEMORY; return onig_reg_init(*reg, ONIG_OPTION_DEFAULT, ONIGENC_CASE_FOLD_DEFAULT, OnigEncDefaultCharEncoding, OnigDefaultSyntax); } extern void re_set_casetable(const char* table) { onigenc_set_default_caseconv_table((UChar* )table); } extern void re_mbcinit(int mb_code) { OnigEncoding enc; switch (mb_code) { case RE_MBCTYPE_ASCII: enc = ONIG_ENCODING_ASCII; break; case RE_MBCTYPE_EUC: enc = ONIG_ENCODING_EUC_JP; break; case RE_MBCTYPE_SJIS: enc = ONIG_ENCODING_SJIS; break; case RE_MBCTYPE_UTF8: enc = ONIG_ENCODING_UTF8; break; default: return ; break; } onig_initialize(0, 0); onig_initialize_encoding(enc); onigenc_set_default_encoding(enc); } oniguruma-6.7.0/src/regint.h000066400000000000000000000712001321242335200157570ustar00rootroot00000000000000#ifndef REGINT_H #define REGINT_H /********************************************************************** regint.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* for debug */ /* #define ONIG_DEBUG_PARSE */ /* #define ONIG_DEBUG_COMPILE */ /* #define ONIG_DEBUG_SEARCH */ /* #define ONIG_DEBUG_MATCH */ /* #define ONIG_DONT_OPTIMIZE */ /* for byte-code statistical data. */ /* #define ONIG_DEBUG_STATISTICS */ #if defined(ONIG_DEBUG_PARSE) || defined(ONIG_DEBUG_MATCH) || \ defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \ defined(ONIG_DEBUG_STATISTICS) #ifndef ONIG_DEBUG #define ONIG_DEBUG #endif #endif #if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ (defined(__ppc__) && defined(__APPLE__)) || \ defined(__x86_64) || defined(__x86_64__) || \ defined(__mc68020__) #define PLATFORM_UNALIGNED_WORD_ACCESS #endif /* config */ /* spec. config */ #define USE_CALL #define USE_BACKREF_WITH_LEVEL /* \k, \k */ #define USE_INSISTENT_CHECK_CAPTURES_STATUS_IN_ENDLESS_REPEAT /* /(?:()|())*\2/ */ #define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE /* /\n$/ =~ "\n" */ #define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR /* internal config */ #define USE_OP_PUSH_OR_JUMP_EXACT #define USE_QUANT_PEEK_NEXT #define USE_ST_LIBRARY #define INIT_MATCH_STACK_SIZE 160 #define DEFAULT_MATCH_STACK_LIMIT_SIZE 0 /* unlimited */ #define DEFAULT_PARSE_DEPTH_LIMIT 4096 #if defined(__GNUC__) # define ARG_UNUSED __attribute__ ((unused)) #else # define ARG_UNUSED #endif /* */ /* escape other system UChar definition */ #include "config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #define USE_WORD_BEGIN_END /* "\<", "\>" */ #define USE_CAPTURE_HISTORY #define USE_VARIABLE_META_CHARS #define USE_POSIX_API_REGION_OPTION #define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE /* #define USE_COMBINATION_EXPLOSION_CHECK */ /* (X*)* */ #define xmalloc malloc #define xrealloc realloc #define xcalloc calloc #define xfree free #define CHECK_INTERRUPT_IN_MATCH_AT #define st_init_table onig_st_init_table #define st_init_table_with_size onig_st_init_table_with_size #define st_init_numtable onig_st_init_numtable #define st_init_numtable_with_size onig_st_init_numtable_with_size #define st_init_strtable onig_st_init_strtable #define st_init_strtable_with_size onig_st_init_strtable_with_size #define st_delete onig_st_delete #define st_delete_safe onig_st_delete_safe #define st_insert onig_st_insert #define st_lookup onig_st_lookup #define st_foreach onig_st_foreach #define st_add_direct onig_st_add_direct #define st_free_table onig_st_free_table #define st_cleanup_safe onig_st_cleanup_safe #define st_copy onig_st_copy #define st_nothing_key_clone onig_st_nothing_key_clone #define st_nothing_key_free onig_st_nothing_key_free /* */ #define onig_st_is_member st_is_member #define STATE_CHECK_STRING_THRESHOLD_LEN 7 #define STATE_CHECK_BUFF_MAX_SIZE 0x4000 #define xmemset memset #define xmemcpy memcpy #define xmemmove memmove #if defined(_WIN32) && !defined(__GNUC__) #define xalloca _alloca #define xvsnprintf(buf,size,fmt,args) _vsnprintf_s(buf,size,_TRUNCATE,fmt,args) #define xsnprintf sprintf_s #define xstrcat(dest,src,size) strcat_s(dest,size,src) #else #define xalloca alloca #define xvsnprintf vsnprintf #define xsnprintf snprintf #define xstrcat(dest,src,size) strcat(dest,src) #endif #include #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDINT_H #include #endif #if defined(HAVE_ALLOCA_H) && !defined(__GNUC__) #include #endif #ifdef HAVE_STRING_H # include #else # include #endif #include #ifdef HAVE_SYS_TYPES_H #ifndef __BORLANDC__ #include #endif #endif #ifdef HAVE_INTTYPES_H #include #endif #ifdef __BORLANDC__ #include #endif #ifdef ONIG_DEBUG # include #endif #ifdef _WIN32 #if defined(_MSC_VER) && (_MSC_VER < 1300) typedef int intptr_t; typedef unsigned int uintptr_t; #endif #endif #include "regenc.h" #ifdef MIN #undef MIN #endif #ifdef MAX #undef MAX #endif #define MIN(a,b) (((a)>(b))?(b):(a)) #define MAX(a,b) (((a)<(b))?(b):(a)) #define IS_NULL(p) (((void*)(p)) == (void*)0) #define IS_NOT_NULL(p) (((void*)(p)) != (void*)0) #define CHECK_NULL_RETURN(p) if (IS_NULL(p)) return NULL #define CHECK_NULL_RETURN_MEMERR(p) if (IS_NULL(p)) return ONIGERR_MEMORY #define NULL_UCHARP ((UChar* )0) #define INFINITE_LEN ONIG_INFINITE_DISTANCE #ifdef PLATFORM_UNALIGNED_WORD_ACCESS #define PLATFORM_GET_INC(val,p,type) do{\ val = *(type* )p;\ (p) += sizeof(type);\ } while(0) #else #define PLATFORM_GET_INC(val,p,type) do{\ xmemcpy(&val, (p), sizeof(type));\ (p) += sizeof(type);\ } while(0) /* sizeof(OnigCodePoint) */ #ifdef SIZEOF_SIZE_T # define WORD_ALIGNMENT_SIZE SIZEOF_SIZE_T #else # define WORD_ALIGNMENT_SIZE SIZEOF_LONG #endif #define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\ (pad_size) = WORD_ALIGNMENT_SIZE - ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\ } while (0) #define ALIGNMENT_RIGHT(addr) do {\ (addr) += (WORD_ALIGNMENT_SIZE - 1);\ (addr) -= ((uintptr_t )(addr) % WORD_ALIGNMENT_SIZE);\ } while (0) #endif /* PLATFORM_UNALIGNED_WORD_ACCESS */ typedef struct { int num_keeper; int* keepers; } RegExt; #define REG_EXTP(reg) (RegExt* )((reg)->chain) #define REG_EXTPL(reg) ((reg)->chain) /* stack pop level */ enum StackPopLevel { STACK_POP_LEVEL_FREE = 0, STACK_POP_LEVEL_MEM_START = 1, STACK_POP_LEVEL_ALL = 2 }; /* optimize flags */ #define ONIG_OPTIMIZE_NONE 0 #define ONIG_OPTIMIZE_EXACT 1 /* Slow Search */ #define ONIG_OPTIMIZE_EXACT_BM 2 /* Boyer Moore Search */ #define ONIG_OPTIMIZE_EXACT_BM_NOT_REV 3 /* BM (but not simple match) */ #define ONIG_OPTIMIZE_EXACT_IC 4 /* Slow Search (ignore case) */ #define ONIG_OPTIMIZE_MAP 5 /* char map */ /* bit status */ typedef unsigned int MemStatusType; #define MEM_STATUS_BITS_NUM (sizeof(MemStatusType) * 8) #define MEM_STATUS_CLEAR(stats) (stats) = 0 #define MEM_STATUS_ON_ALL(stats) (stats) = ~((MemStatusType )0) #define MEM_STATUS_AT(stats,n) \ ((n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) #define MEM_STATUS_AT0(stats,n) \ ((n) > 0 && (n) < (int )MEM_STATUS_BITS_NUM ? ((stats) & ((MemStatusType )1 << n)) : ((stats) & 1)) #define MEM_STATUS_ON(stats,n) do {\ if ((n) < (int )MEM_STATUS_BITS_NUM) {\ if ((n) != 0)\ (stats) |= ((MemStatusType )1 << (n));\ }\ else\ (stats) |= 1;\ } while (0) #define MEM_STATUS_ON_SIMPLE(stats,n) do {\ if ((n) < (int )MEM_STATUS_BITS_NUM)\ (stats) |= ((MemStatusType )1 << (n));\ } while (0) #define INT_MAX_LIMIT ((1UL << (SIZEOF_INT * 8 - 1)) - 1) #define IS_CODE_WORD_ASCII(enc,code) \ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code)) #define IS_CODE_DIGIT_ASCII(enc, code) \ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_DIGIT(enc,code)) #define IS_CODE_XDIGIT_ASCII(enc, code) \ (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_XDIGIT(enc,code)) #define DIGITVAL(code) ((code) - '0') #define ODIGITVAL(code) DIGITVAL(code) #define XDIGITVAL(enc,code) \ (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) #define IS_MULTILINE(option) ((option) & ONIG_OPTION_MULTILINE) #define IS_IGNORECASE(option) ((option) & ONIG_OPTION_IGNORECASE) #define IS_EXTEND(option) ((option) & ONIG_OPTION_EXTEND) #define IS_FIND_LONGEST(option) ((option) & ONIG_OPTION_FIND_LONGEST) #define IS_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY) #define IS_FIND_CONDITION(option) ((option) & \ (ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY)) #define IS_NOTBOL(option) ((option) & ONIG_OPTION_NOTBOL) #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) */ /* ignore-case and multibyte status are included in compiled code. */ #define IS_DYNAMIC_OPTION(option) 0 #define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \ ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) #define REPEAT_INFINITE -1 #define IS_REPEAT_INFINITE(n) ((n) == REPEAT_INFINITE) /* bitset */ #define BITS_PER_BYTE 8 #define SINGLE_BYTE_SIZE (1 << BITS_PER_BYTE) #define BITS_IN_ROOM (sizeof(Bits) * BITS_PER_BYTE) #define BITSET_SIZE (SINGLE_BYTE_SIZE / BITS_IN_ROOM) #ifdef PLATFORM_UNALIGNED_WORD_ACCESS typedef unsigned int Bits; #else typedef unsigned char Bits; #endif typedef Bits BitSet[BITSET_SIZE]; typedef Bits* BitSetRef; #define SIZE_BITSET sizeof(BitSet) #define BITSET_CLEAR(bs) do {\ int i;\ for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; } \ } while (0) #define BS_ROOM(bs,pos) (bs)[pos / BITS_IN_ROOM] #define BS_BIT(pos) (1 << (pos % BITS_IN_ROOM)) #define BITSET_AT(bs, pos) (BS_ROOM(bs,pos) & BS_BIT(pos)) #define BITSET_SET_BIT(bs, pos) BS_ROOM(bs,pos) |= BS_BIT(pos) #define BITSET_CLEAR_BIT(bs, pos) BS_ROOM(bs,pos) &= ~(BS_BIT(pos)) #define BITSET_INVERT_BIT(bs, pos) BS_ROOM(bs,pos) ^= BS_BIT(pos) /* bytes buffer */ typedef struct _BBuf { UChar* p; unsigned int used; unsigned int alloc; } BBuf; #define BB_INIT(buf,size) onig_bbuf_init((BBuf* )(buf), (size)) #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 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 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) {\ (buf)->p = (UChar* )xrealloc((buf)->p, new_alloc);\ if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\ (buf)->alloc = new_alloc;\ }\ } while (0) #define BB_WRITE(buf,pos,bytes,n) do{\ int used = (pos) + (n);\ 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 BB_WRITE1(buf,pos,byte) do{\ int used = (pos) + 1;\ 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 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 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 BB_MOVE_LEFT(buf,from,to,n) do {\ xmemmove((buf)->p + (to), (buf)->p + (from), (n));\ } while (0) /* from > to */ #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 BB_INSERT(buf,pos,bytes,n) do {\ if (pos >= (buf)->used) {\ BB_WRITE(buf,pos,bytes,n);\ }\ else {\ BB_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\ xmemcpy((buf)->p + (pos), (bytes), (n));\ }\ } while (0) #define BB_GET_BYTE(buf, pos) (buf)->p[(pos)] /* has body */ #define ANCHOR_PREC_READ (1<<0) #define ANCHOR_PREC_READ_NOT (1<<1) #define ANCHOR_LOOK_BEHIND (1<<2) #define ANCHOR_LOOK_BEHIND_NOT (1<<3) /* no body */ #define ANCHOR_BEGIN_BUF (1<<4) #define ANCHOR_BEGIN_LINE (1<<5) #define ANCHOR_BEGIN_POSITION (1<<6) #define ANCHOR_END_BUF (1<<7) #define ANCHOR_SEMI_END_BUF (1<<8) #define ANCHOR_END_LINE (1<<9) #define ANCHOR_WORD_BOUNDARY (1<<10) #define ANCHOR_NO_WORD_BOUNDARY (1<<11) #define ANCHOR_WORD_BEGIN (1<<12) #define ANCHOR_WORD_END (1<<13) #define ANCHOR_ANYCHAR_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 { OP_FINISH = 0, /* matching process terminator (no more alternative) */ OP_END = 1, /* pattern code terminator (success end) */ OP_EXACT1 = 2, /* single byte, N = 1 */ OP_EXACT2, /* single byte, N = 2 */ OP_EXACT3, /* single byte, N = 3 */ OP_EXACT4, /* single byte, N = 4 */ OP_EXACT5, /* single byte, N = 5 */ OP_EXACTN, /* single byte */ OP_EXACTMB2N1, /* mb-length = 2 N = 1 */ OP_EXACTMB2N2, /* mb-length = 2 N = 2 */ OP_EXACTMB2N3, /* mb-length = 2 N = 3 */ OP_EXACTMB2N, /* mb-length = 2 */ OP_EXACTMB3N, /* mb-length = 3 */ OP_EXACTMBN, /* other length */ OP_EXACT1_IC, /* single byte, N = 1, ignore case */ OP_EXACTN_IC, /* single byte, ignore case */ OP_CCLASS, OP_CCLASS_MB, OP_CCLASS_MIX, 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 */ OP_ANYCHAR_STAR, /* ".*" */ OP_ANYCHAR_ML_STAR, /* ".*" multi-line */ OP_ANYCHAR_STAR_PEEK_NEXT, OP_ANYCHAR_ML_STAR_PEEK_NEXT, OP_WORD, 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, OP_END_LINE, OP_SEMI_END_BUF, OP_BEGIN_POSITION, OP_BACKREF1, OP_BACKREF2, OP_BACKREF_N, OP_BACKREF_N_IC, OP_BACKREF_MULTI, OP_BACKREF_MULTI_IC, OP_BACKREF_WITH_LEVEL, /* \k, \k */ OP_BACKREF_CHECK, /* (?(n)), (?('name')) */ OP_BACKREF_CHECK_WITH_LEVEL, /* (?(n-level)), (?('name-level')) */ OP_MEMORY_START, OP_MEMORY_START_PUSH, /* push back-tracker to stack */ OP_MEMORY_END_PUSH, /* push back-tracker to stack */ OP_MEMORY_END_PUSH_REC, /* push back-tracker to stack */ OP_MEMORY_END, OP_MEMORY_END_REC, /* push marker to stack */ OP_FAIL, /* pop stack and move */ OP_JUMP, OP_PUSH, OP_PUSH_SUPER, OP_POP, OP_PUSH_OR_JUMP_EXACT1, /* if match exact then push, else jump. */ OP_PUSH_IF_PEEK_NEXT, /* if match exact then push, else none. */ OP_REPEAT, /* {n,m} */ OP_REPEAT_NG, /* {n,m}? (non greedy) */ OP_REPEAT_INC, OP_REPEAT_INC_NG, /* non greedy */ OP_REPEAT_INC_SG, /* search and get in stack */ OP_REPEAT_INC_NG_SG, /* search and get in stack (non greedy) */ OP_EMPTY_CHECK_START, /* null loop checker start */ OP_EMPTY_CHECK_END, /* null loop checker end */ OP_EMPTY_CHECK_END_MEMST, /* null loop checker end (with capture status) */ OP_EMPTY_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */ OP_PREC_READ_START, /* (?=...) start */ OP_PREC_READ_END, /* (?=...) end */ OP_PREC_READ_NOT_START, /* (?!...) start */ OP_PREC_READ_NOT_END, /* (?!...) end */ OP_ATOMIC_START, /* (?>...) start */ OP_ATOMIC_END, /* (?>...) end */ OP_LOOK_BEHIND, /* (?<=...) start (no needs end opcode) */ OP_LOOK_BEHIND_NOT_START, /* (? */ OP_RETURN, OP_PUSH_SAVE_VAL, OP_UPDATE_VAR, OP_STATE_CHECK_PUSH, /* combination explosion check and push */ OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump */ OP_STATE_CHECK, /* check only */ OP_STATE_CHECK_ANYCHAR_STAR, OP_STATE_CHECK_ANYCHAR_ML_STAR, /* no need: IS_DYNAMIC_OPTION() == 0 */ OP_SET_OPTION_PUSH, /* set option and push recover option */ OP_SET_OPTION /* set option */ }; enum SaveType { SAVE_KEEP = 0, /* SAVE S */ SAVE_S = 1, SAVE_RIGHT_RANGE = 2, }; enum UpdateVarType { UPDATE_VAR_KEEP_FROM_STACK_LAST = 0, UPDATE_VAR_S_FROM_STACK = 1, UPDATE_VAR_RIGHT_RANGE_FROM_STACK = 2, UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK = 3, UPDATE_VAR_RIGHT_RANGE_INIT = 4, }; typedef int RelAddrType; typedef int AbsAddrType; typedef int LengthType; typedef int RepeatNumType; typedef int MemNumType; typedef short int StateCheckNumType; typedef void* PointerType; typedef int SaveType; typedef int UpdateVarType; typedef int ModeType; #define SIZE_OPCODE 1 #define SIZE_RELADDR sizeof(RelAddrType) #define SIZE_ABSADDR sizeof(AbsAddrType) #define SIZE_LENGTH sizeof(LengthType) #define SIZE_MEMNUM sizeof(MemNumType) #define SIZE_STATE_CHECK_NUM sizeof(StateCheckNumType) #define SIZE_REPEATNUM sizeof(RepeatNumType) #define SIZE_OPTION sizeof(OnigOptionType) #define SIZE_CODE_POINT sizeof(OnigCodePoint) #define SIZE_POINTER sizeof(PointerType) #define SIZE_SAVE_TYPE sizeof(SaveType) #define SIZE_UPDATE_VAR_TYPE sizeof(UpdateVarType) #define SIZE_MODE sizeof(ModeType) #define GET_RELADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, RelAddrType) #define GET_ABSADDR_INC(addr,p) PLATFORM_GET_INC(addr, p, AbsAddrType) #define GET_LENGTH_INC(len,p) PLATFORM_GET_INC(len, p, LengthType) #define GET_MEMNUM_INC(num,p) PLATFORM_GET_INC(num, p, MemNumType) #define GET_REPEATNUM_INC(num,p) PLATFORM_GET_INC(num, p, RepeatNumType) #define GET_OPTION_INC(option,p) PLATFORM_GET_INC(option, p, OnigOptionType) #define GET_POINTER_INC(ptr,p) PLATFORM_GET_INC(ptr, p, PointerType) #define GET_STATE_CHECK_NUM_INC(num,p) PLATFORM_GET_INC(num, p, StateCheckNumType) #define GET_SAVE_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, SaveType) #define GET_UPDATE_VAR_TYPE_INC(type,p) PLATFORM_GET_INC(type, p, UpdateVarType) #define GET_MODE_INC(mode,p) PLATFORM_GET_INC(mode, p, ModeType) /* code point's address must be aligned address. */ #define GET_CODE_POINT(code,p) code = *((OnigCodePoint* )(p)) #define GET_BYTE_INC(byte,p) do{\ byte = *(p);\ (p)++;\ } while(0) /* op-code + arg size */ #define SIZE_OP_ANYCHAR_STAR SIZE_OPCODE #define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1) #define SIZE_OP_JUMP (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PUSH (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PUSH_SUPER (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_POP SIZE_OPCODE #define SIZE_OP_PUSH_OR_JUMP_EXACT1 (SIZE_OPCODE + SIZE_RELADDR + 1) #define SIZE_OP_PUSH_IF_PEEK_NEXT (SIZE_OPCODE + SIZE_RELADDR + 1) #define SIZE_OP_REPEAT_INC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_REPEAT_INC_NG (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_WORD_BOUNDARY (SIZE_OPCODE + SIZE_MODE) #define SIZE_OP_PREC_READ_START SIZE_OPCODE #define SIZE_OP_PREC_READ_NOT_START (SIZE_OPCODE + SIZE_RELADDR) #define SIZE_OP_PREC_READ_END SIZE_OPCODE #define SIZE_OP_PREC_READ_NOT_END SIZE_OPCODE #define SIZE_OP_SET_OPTION (SIZE_OPCODE + SIZE_OPTION) #define SIZE_OP_SET_OPTION_PUSH (SIZE_OPCODE + SIZE_OPTION) #define SIZE_OP_FAIL SIZE_OPCODE #define SIZE_OP_MEMORY_START (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_START_PUSH (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END_PUSH (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END_PUSH_REC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_MEMORY_END_REC (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_ATOMIC_START SIZE_OPCODE #define SIZE_OP_ATOMIC_END SIZE_OPCODE #define SIZE_OP_EMPTY_CHECK_START (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_EMPTY_CHECK_END (SIZE_OPCODE + SIZE_MEMNUM) #define SIZE_OP_LOOK_BEHIND (SIZE_OPCODE + SIZE_LENGTH) #define SIZE_OP_LOOK_BEHIND_NOT_START (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH) #define SIZE_OP_LOOK_BEHIND_NOT_END SIZE_OPCODE #define SIZE_OP_CALL (SIZE_OPCODE + SIZE_ABSADDR) #define SIZE_OP_RETURN SIZE_OPCODE #define SIZE_OP_PUSH_SAVE_VAL (SIZE_OPCODE + SIZE_SAVE_TYPE + SIZE_MEMNUM) #define SIZE_OP_UPDATE_VAR (SIZE_OPCODE + SIZE_UPDATE_VAR_TYPE + SIZE_MEMNUM) #ifdef USE_COMBINATION_EXPLOSION_CHECK #define SIZE_OP_STATE_CHECK (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) #define SIZE_OP_STATE_CHECK_PUSH (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) #define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR) #define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM) #endif #define MC_ESC(syn) (syn)->meta_char_table.esc #define MC_ANYCHAR(syn) (syn)->meta_char_table.anychar #define MC_ANYTIME(syn) (syn)->meta_char_table.anytime #define MC_ZERO_OR_ONE_TIME(syn) (syn)->meta_char_table.zero_or_one_time #define MC_ONE_OR_MORE_TIME(syn) (syn)->meta_char_table.one_or_more_time #define MC_ANYCHAR_ANYTIME(syn) (syn)->meta_char_table.anychar_anytime #define IS_MC_ESC_CODE(code, syn) \ ((code) == MC_ESC(syn) && \ !IS_SYNTAX_OP2((syn), ONIG_SYN_OP2_INEFFECTIVE_ESCAPE)) #define SYN_POSIX_COMMON_OP \ ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_POSIX_BRACKET | \ ONIG_SYN_OP_DECIMAL_BACKREF | \ ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ASTERISK_ZERO_INF | \ ONIG_SYN_OP_LINE_ANCHOR | \ ONIG_SYN_OP_ESC_CONTROL_CHARS ) #define SYN_GNU_REGEX_OP \ ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | \ ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_DECIMAL_BACKREF | \ ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_LPAREN_SUBEXP | \ ONIG_SYN_OP_VBAR_ALT | \ ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | \ ONIG_SYN_OP_QMARK_ZERO_ONE | \ ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR | ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR | \ ONIG_SYN_OP_ESC_W_WORD | \ ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | \ ONIG_SYN_OP_ESC_S_WHITE_SPACE | ONIG_SYN_OP_ESC_D_DIGIT | \ ONIG_SYN_OP_LINE_ANCHOR ) #define SYN_GNU_REGEX_BV \ ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | \ ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_INVALID_INTERVAL | \ ONIG_SYN_BACKSLASH_ESCAPE_IN_CC | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) #define NCCLASS_FLAGS(cc) ((cc)->flags) #define NCCLASS_FLAG_SET(cc,flag) (NCCLASS_FLAGS(cc) |= (flag)) #define NCCLASS_FLAG_CLEAR(cc,flag) (NCCLASS_FLAGS(cc) &= ~(flag)) #define IS_NCCLASS_FLAG_ON(cc,flag) ((NCCLASS_FLAGS(cc) & (flag)) != 0) /* cclass node */ #define FLAG_NCCLASS_NOT (1<<0) #define FLAG_NCCLASS_SHARE (1<<1) #define NCCLASS_SET_NOT(nd) NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT) #define NCCLASS_CLEAR_NOT(nd) NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT) #define IS_NCCLASS_NOT(nd) IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT) typedef struct { void* stack_p; int stack_n; OnigOptionType options; OnigRegion* region; int ptr_num; const UChar* start; /* search start position (for \G: BEGIN_POSITION) */ #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE int best_len; /* for ONIG_OPTION_FIND_LONGEST */ UChar* best_s; #endif #ifdef USE_COMBINATION_EXPLOSION_CHECK void* state_check_buff; int state_check_buff_size; #endif } OnigMatchArg; typedef struct OnigEndCallListItem { struct OnigEndCallListItem* next; void (*func)(void); } OnigEndCallListItemType; extern void onig_add_end_call(void (*func)(void)); #ifdef ONIG_DEBUG typedef struct { short int opcode; char* name; short int arg_type; } OnigOpInfoType; extern OnigOpInfoType OnigOpInfo[]; extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar** nextp, UChar* start, OnigEncoding enc)); #ifdef ONIG_DEBUG_STATISTICS extern void onig_statistics_init P_((void)); extern int onig_print_statistics P_((FILE* f)); #endif #endif extern void onig_warning(const char* s); extern UChar* onig_error_code_to_format P_((int code)); extern void onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...)); extern int onig_bbuf_init P_((BBuf* buf, int size)); extern int onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo)); extern void onig_transfer P_((regex_t* to, regex_t* from)); extern int onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, void* /* CClassNode* */ cc)); /* strend hash */ typedef void hash_table_type; #ifdef _WIN32 # include typedef ULONG_PTR hash_data_type; #else typedef unsigned long hash_data_type; #endif extern hash_table_type* onig_st_init_strend_table_with_size P_((int size)); extern int onig_st_lookup_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value)); extern int onig_st_insert_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value)); typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void); #endif /* REGINT_H */ oniguruma-6.7.0/src/regparse.c000066400000000000000000004741441321242335200163100ustar00rootroot00000000000000/********************************************************************** regparse.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regparse.h" #include "st.h" #ifdef DEBUG_NODE_FREE #include #endif #define WARN_BUFSIZE 256 #define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS OnigSyntaxType OnigSyntaxOniguruma = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_RUBY | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxRuby = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_RUBY | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL | ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_H_XDIGIT | ONIG_SYN_OP2_ESC_U_HEX4 ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME | ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY | ONIG_SYN_WARN_CC_OP_NOT_ESCAPED | ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT ) , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType* OnigDefaultSyntax = ONIG_SYNTAX_ONIGURUMA; extern void onig_null_warn(const char* s ARG_UNUSED) { } #ifdef DEFAULT_WARN_FUNCTION static OnigWarnFunc onig_warn = (OnigWarnFunc )DEFAULT_WARN_FUNCTION; #else static OnigWarnFunc onig_warn = onig_null_warn; #endif #ifdef DEFAULT_VERB_WARN_FUNCTION static OnigWarnFunc onig_verb_warn = (OnigWarnFunc )DEFAULT_VERB_WARN_FUNCTION; #else static OnigWarnFunc onig_verb_warn = onig_null_warn; #endif extern void onig_set_warn_func(OnigWarnFunc f) { onig_warn = f; } extern void onig_set_verb_warn_func(OnigWarnFunc f) { onig_verb_warn = f; } extern void onig_warning(const char* s) { if (onig_warn == onig_null_warn) return ; (*onig_warn)(s); } #define DEFAULT_MAX_CAPTURE_NUM 32767 static int MaxCaptureNum = DEFAULT_MAX_CAPTURE_NUM; extern int onig_set_capture_num_limit(int num) { if (num < 0) return -1; MaxCaptureNum = num; return 0; } static unsigned int ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; extern unsigned int onig_get_parse_depth_limit(void) { return ParseDepthLimit; } extern int onig_set_parse_depth_limit(unsigned int depth) { if (depth == 0) ParseDepthLimit = DEFAULT_PARSE_DEPTH_LIMIT; else ParseDepthLimit = depth; return 0; } static void bbuf_free(BBuf* bbuf) { if (IS_NOT_NULL(bbuf)) { if (IS_NOT_NULL(bbuf->p)) xfree(bbuf->p); xfree(bbuf); } } static int bbuf_clone(BBuf** rto, BBuf* from) { int r; BBuf *to; *rto = to = (BBuf* )xmalloc(sizeof(BBuf)); CHECK_NULL_RETURN_MEMERR(to); r = BB_INIT(to, from->alloc); if (r != 0) { xfree(to->p); *rto = 0; return r; } to->used = from->used; xmemcpy(to->p, from->p, from->used); return 0; } static int backref_rel_to_abs(int rel_no, ScanEnv* env) { if (rel_no > 0) { return env->num_mem + rel_no; } else { return env->num_mem + 1 + rel_no; } } #define OPTION_ON(v,f) ((v) |= (f)) #define OPTION_OFF(v,f) ((v) &= ~(f)) #define OPTION_NEGATE(v,f,negative) (negative) ? ((v) &= ~(f)) : ((v) |= (f)) #define MBCODE_START_POS(enc) \ (OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80) #define SET_ALL_MULTI_BYTE_RANGE(enc, pbuf) \ add_code_range_to_buf(pbuf, MBCODE_START_POS(enc), ~((OnigCodePoint )0)) #define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\ if (! ONIGENC_IS_SINGLEBYTE(enc)) {\ r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\ if (r != 0) return r;\ }\ } while (0) #define BITSET_IS_EMPTY(bs,empty) do {\ int i;\ empty = 1;\ for (i = 0; i < (int )BITSET_SIZE; i++) {\ if ((bs)[i] != 0) {\ empty = 0; break;\ }\ }\ } while (0) static void bitset_set_range(BitSetRef bs, int from, int to) { int i; for (i = from; i <= to && i < SINGLE_BYTE_SIZE; i++) { BITSET_SET_BIT(bs, i); } } #if 0 static void bitset_set_all(BitSetRef bs) { int i; for (i = 0; i < BITSET_SIZE; i++) { bs[i] = ~((Bits )0); } } #endif static void bitset_invert(BitSetRef bs) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { bs[i] = ~(bs[i]); } } static void bitset_invert_to(BitSetRef from, BitSetRef to) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { to[i] = ~(from[i]); } } static void bitset_and(BitSetRef dest, BitSetRef bs) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] &= bs[i]; } } static void bitset_or(BitSetRef dest, BitSetRef bs) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] |= bs[i]; } } static void bitset_copy(BitSetRef dest, BitSetRef bs) { int i; for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] = bs[i]; } } extern int onig_strncmp(const UChar* s1, const UChar* s2, int n) { int x; while (n-- > 0) { x = *s2++ - *s1++; if (x) return x; } return 0; } extern void onig_strcpy(UChar* dest, const UChar* src, const UChar* end) { int len = (int )(end - src); if (len > 0) { xmemcpy(dest, src, len); dest[len] = (UChar )0; } } static UChar* strdup_with_null(OnigEncoding enc, UChar* s, UChar* end) { int slen, term_len, i; UChar *r; slen = (int )(end - s); term_len = ONIGENC_MBC_MINLEN(enc); r = (UChar* )xmalloc(slen + term_len); CHECK_NULL_RETURN(r); xmemcpy(r, s, slen); for (i = 0; i < term_len; i++) r[slen + i] = (UChar )0; return r; } static int save_entry(ScanEnv* env, enum SaveType type, int* id) { int nid = env->save_num; #if 0 if (IS_NULL(env->saves)) { int n = 10; env->saves = (SaveItem* )xmalloc(sizeof(SaveItem) * n); CHECK_NULL_RETURN_MEMERR(env->saves); env->save_alloc_num = n; } else if (env->save_alloc_num <= nid) { int n = env->save_alloc_num * 2; SaveItem* p = (SaveItem* )xrealloc(env->saves, sizeof(SaveItem) * n); CHECK_NULL_RETURN_MEMERR(p); env->saves = p; env->save_alloc_num = n; } env->saves[nid].type = type; #endif env->save_num++; *id = nid; return 0; } /* scan pattern methods */ #define PEND_VALUE 0 #define PFETCH_READY UChar* pfetch_prev #define PEND (p < end ? 0 : 1) #define PUNFETCH p = pfetch_prev #define PINC do { \ pfetch_prev = p; \ p += ONIGENC_MBC_ENC_LEN(enc, p); \ } while (0) #define PFETCH(c) do { \ c = ONIGENC_MBC_TO_CODE(enc, p, end); \ pfetch_prev = p; \ p += ONIGENC_MBC_ENC_LEN(enc, p); \ } while (0) #define PINC_S do { \ p += ONIGENC_MBC_ENC_LEN(enc, p); \ } while (0) #define PFETCH_S(c) do { \ c = ONIGENC_MBC_TO_CODE(enc, p, end); \ p += ONIGENC_MBC_ENC_LEN(enc, p); \ } while (0) #define PPEEK (p < end ? ONIGENC_MBC_TO_CODE(enc, p, end) : PEND_VALUE) #define PPEEK_IS(c) (PPEEK == (OnigCodePoint )c) static UChar* strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, int capa) { UChar* r; if (dest) r = (UChar* )xrealloc(dest, capa + 1); else r = (UChar* )xmalloc(capa + 1); CHECK_NULL_RETURN(r); onig_strcpy(r + (dest_end - dest), src, src_end); return r; } /* dest on static area */ static UChar* strcat_capa_from_static(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end, int capa) { UChar* r; r = (UChar* )xmalloc(capa + 1); CHECK_NULL_RETURN(r); onig_strcpy(r, dest, dest_end); onig_strcpy(r + (dest_end - dest), src, src_end); return r; } #ifdef USE_ST_LIBRARY typedef struct { UChar* s; UChar* end; } st_str_end_key; static int str_end_cmp(st_str_end_key* x, st_str_end_key* y) { UChar *p, *q; int c; if ((x->end - x->s) != (y->end - y->s)) return 1; p = x->s; q = y->s; while (p < x->end) { c = (int )*p - (int )*q; if (c != 0) return c; p++; q++; } return 0; } static int str_end_hash(st_str_end_key* x) { UChar *p; int val = 0; p = x->s; while (p < x->end) { val = val * 997 + (int )*p++; } return val + (val >> 5); } extern hash_table_type* onig_st_init_strend_table_with_size(int size) { static struct st_hash_type hashType = { str_end_cmp, str_end_hash, }; return (hash_table_type* ) onig_st_init_table_with_size(&hashType, size); } extern int onig_st_lookup_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value) { st_str_end_key key; key.s = (UChar* )str_key; key.end = (UChar* )end_key; return onig_st_lookup(table, (st_data_t )(&key), value); } extern int onig_st_insert_strend(hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value) { st_str_end_key* key; int result; key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key)); CHECK_NULL_RETURN_MEMERR(key); key->s = (UChar* )str_key; key->end = (UChar* )end_key; result = onig_st_insert(table, (st_data_t )key, value); if (result) { xfree(key); } return result; } #endif /* USE_ST_LIBRARY */ #define INIT_NAME_BACKREFS_ALLOC_NUM 8 typedef struct { UChar* name; int name_len; /* byte length */ int back_num; /* number of backrefs */ int back_alloc; int back_ref1; int* back_refs; } NameEntry; #ifdef USE_ST_LIBRARY typedef st_table NameTable; typedef st_data_t HashDataType; /* 1.6 st.h doesn't define st_data_t type */ #define NAMEBUF_SIZE 24 #define NAMEBUF_SIZE_1 25 #ifdef ONIG_DEBUG static int i_print_name_entry(UChar* key, NameEntry* e, void* arg) { int i; FILE* fp = (FILE* )arg; fprintf(fp, "%s: ", e->name); if (e->back_num == 0) fputs("-", fp); else if (e->back_num == 1) fprintf(fp, "%d", e->back_ref1); else { for (i = 0; i < e->back_num; i++) { if (i > 0) fprintf(fp, ", "); fprintf(fp, "%d", e->back_refs[i]); } } fputs("\n", fp); return ST_CONTINUE; } extern int onig_print_names(FILE* fp, regex_t* reg) { NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { fprintf(fp, "name table\n"); onig_st_foreach(t, i_print_name_entry, (HashDataType )fp); fputs("\n", fp); } return 0; } #endif /* ONIG_DEBUG */ static int i_free_name_entry(UChar* key, NameEntry* e, void* arg ARG_UNUSED) { xfree(e->name); if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); xfree(key); xfree(e); return ST_DELETE; } static int names_clear(regex_t* reg) { NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { onig_st_foreach(t, i_free_name_entry, 0); } return 0; } extern int onig_names_free(regex_t* reg) { int r; NameTable* t; r = names_clear(reg); if (r != 0) return r; t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) onig_st_free_table(t); reg->name_table = (void* )NULL; return 0; } static NameEntry* name_find(regex_t* reg, const UChar* name, const UChar* name_end) { NameEntry* e; NameTable* t = (NameTable* )reg->name_table; e = (NameEntry* )NULL; if (IS_NOT_NULL(t)) { onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e))); } return e; } typedef struct { int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*); regex_t* reg; void* arg; int ret; OnigEncoding enc; } INamesArg; static int i_names(UChar* key ARG_UNUSED, NameEntry* e, INamesArg* arg) { int r = (*(arg->func))(e->name, e->name + e->name_len, e->back_num, (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), arg->reg, arg->arg); if (r != 0) { arg->ret = r; return ST_STOP; } return ST_CONTINUE; } extern int onig_foreach_name(regex_t* reg, int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) { INamesArg narg; NameTable* t = (NameTable* )reg->name_table; narg.ret = 0; if (IS_NOT_NULL(t)) { narg.func = func; narg.reg = reg; narg.arg = arg; narg.enc = reg->enc; /* should be pattern encoding. */ onig_st_foreach(t, i_names, (HashDataType )&narg); } return narg.ret; } static int i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumRemap* map) { int i; if (e->back_num > 1) { for (i = 0; i < e->back_num; i++) { e->back_refs[i] = map[e->back_refs[i]].new_val; } } else if (e->back_num == 1) { e->back_ref1 = map[e->back_ref1].new_val; } return ST_CONTINUE; } extern int onig_renumber_name_table(regex_t* reg, GroupNumRemap* map) { NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { onig_st_foreach(t, i_renumber_name, (HashDataType )map); } return 0; } extern int onig_number_of_names(regex_t* reg) { NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) return t->num_entries; else return 0; } #else /* USE_ST_LIBRARY */ #define INIT_NAMES_ALLOC_NUM 8 typedef struct { NameEntry* e; int num; int alloc; } NameTable; #ifdef ONIG_DEBUG extern int onig_print_names(FILE* fp, regex_t* reg) { int i, j; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t) && t->num > 0) { fprintf(fp, "name table\n"); for (i = 0; i < t->num; i++) { e = &(t->e[i]); fprintf(fp, "%s: ", e->name); if (e->back_num == 0) { fputs("-", fp); } else if (e->back_num == 1) { fprintf(fp, "%d", e->back_ref1); } else { for (j = 0; j < e->back_num; j++) { if (j > 0) fprintf(fp, ", "); fprintf(fp, "%d", e->back_refs[j]); } } fputs("\n", fp); } fputs("\n", fp); } return 0; } #endif static int names_clear(regex_t* reg) { int i; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { for (i = 0; i < t->num; i++) { e = &(t->e[i]); if (IS_NOT_NULL(e->name)) { xfree(e->name); e->name = NULL; e->name_len = 0; e->back_num = 0; e->back_alloc = 0; if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs); e->back_refs = (int* )NULL; } } if (IS_NOT_NULL(t->e)) { xfree(t->e); t->e = NULL; } t->num = 0; } return 0; } extern int onig_names_free(regex_t* reg) { int r; NameTable* t; r = names_clear(reg); if (r != 0) return r; t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) xfree(t); reg->name_table = NULL; return 0; } static NameEntry* name_find(regex_t* reg, UChar* name, UChar* name_end) { int i, len; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { len = name_end - name; for (i = 0; i < t->num; i++) { e = &(t->e[i]); if (len == e->name_len && onig_strncmp(name, e->name, len) == 0) return e; } } return (NameEntry* )NULL; } extern int onig_foreach_name(regex_t* reg, int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg) { int i, r; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) { for (i = 0; i < t->num; i++) { e = &(t->e[i]); r = (*func)(e->name, e->name + e->name_len, e->back_num, (e->back_num > 1 ? e->back_refs : &(e->back_ref1)), reg, arg); if (r != 0) return r; } } return 0; } extern int onig_number_of_names(regex_t* reg) { NameTable* t = (NameTable* )reg->name_table; if (IS_NOT_NULL(t)) return t->num; else return 0; } #endif /* else USE_ST_LIBRARY */ static int name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env) { int r; int alloc; NameEntry* e; NameTable* t = (NameTable* )reg->name_table; if (name_end - name <= 0) return ONIGERR_EMPTY_GROUP_NAME; e = name_find(reg, name, name_end); if (IS_NULL(e)) { #ifdef USE_ST_LIBRARY if (IS_NULL(t)) { t = onig_st_init_strend_table_with_size(5); reg->name_table = (void* )t; } e = (NameEntry* )xmalloc(sizeof(NameEntry)); CHECK_NULL_RETURN_MEMERR(e); e->name = strdup_with_null(reg->enc, name, name_end); if (IS_NULL(e->name)) { xfree(e); return ONIGERR_MEMORY; } r = onig_st_insert_strend(t, e->name, (e->name + (name_end - name)), (HashDataType )e); if (r < 0) return r; e->name_len = (int )(name_end - name); e->back_num = 0; e->back_alloc = 0; e->back_refs = (int* )NULL; #else if (IS_NULL(t)) { alloc = INIT_NAMES_ALLOC_NUM; t = (NameTable* )xmalloc(sizeof(NameTable)); CHECK_NULL_RETURN_MEMERR(t); t->e = NULL; t->alloc = 0; t->num = 0; t->e = (NameEntry* )xmalloc(sizeof(NameEntry) * alloc); if (IS_NULL(t->e)) { xfree(t); return ONIGERR_MEMORY; } t->alloc = alloc; reg->name_table = t; goto clear; } else if (t->num == t->alloc) { int i; alloc = t->alloc * 2; t->e = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc); CHECK_NULL_RETURN_MEMERR(t->e); t->alloc = alloc; clear: for (i = t->num; i < t->alloc; i++) { t->e[i].name = NULL; t->e[i].name_len = 0; t->e[i].back_num = 0; t->e[i].back_alloc = 0; t->e[i].back_refs = (int* )NULL; } } e = &(t->e[t->num]); t->num++; e->name = strdup_with_null(reg->enc, name, name_end); if (IS_NULL(e->name)) return ONIGERR_MEMORY; e->name_len = name_end - name; #endif } if (e->back_num >= 1 && ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME)) { onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME, name, name_end); return ONIGERR_MULTIPLEX_DEFINED_NAME; } e->back_num++; if (e->back_num == 1) { e->back_ref1 = backref; } else { if (e->back_num == 2) { alloc = INIT_NAME_BACKREFS_ALLOC_NUM; e->back_refs = (int* )xmalloc(sizeof(int) * alloc); CHECK_NULL_RETURN_MEMERR(e->back_refs); e->back_alloc = alloc; e->back_refs[0] = e->back_ref1; e->back_refs[1] = backref; } else { if (e->back_num > e->back_alloc) { alloc = e->back_alloc * 2; e->back_refs = (int* )xrealloc(e->back_refs, sizeof(int) * alloc); CHECK_NULL_RETURN_MEMERR(e->back_refs); e->back_alloc = alloc; } e->back_refs[e->back_num - 1] = backref; } } return 0; } extern int onig_name_to_group_numbers(regex_t* reg, const UChar* name, const UChar* name_end, int** nums) { NameEntry* e = name_find(reg, name, name_end); if (IS_NULL(e)) return ONIGERR_UNDEFINED_NAME_REFERENCE; switch (e->back_num) { case 0: break; case 1: *nums = &(e->back_ref1); break; default: *nums = e->back_refs; break; } return e->back_num; } extern int onig_name_to_backref_number(regex_t* reg, const UChar* name, const UChar* name_end, OnigRegion *region) { int i, n, *nums; n = onig_name_to_group_numbers(reg, name, name_end, &nums); if (n < 0) return n; else if (n == 0) return ONIGERR_PARSER_BUG; else if (n == 1) return nums[0]; else { if (IS_NOT_NULL(region)) { for (i = n - 1; i >= 0; i--) { if (region->beg[nums[i]] != ONIG_REGION_NOTPOS) return nums[i]; } } return nums[n - 1]; } } extern int onig_noname_group_capture_is_active(regex_t* reg) { if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) return 0; if (onig_number_of_names(reg) > 0 && IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) && !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) { return 0; } return 1; } #define INIT_SCANENV_MEMENV_ALLOC_SIZE 16 static void scan_env_clear(ScanEnv* env) { MEM_STATUS_CLEAR(env->capture_history); MEM_STATUS_CLEAR(env->bt_mem_start); MEM_STATUS_CLEAR(env->bt_mem_end); MEM_STATUS_CLEAR(env->backrefed_mem); env->error = (UChar* )NULL; env->error_end = (UChar* )NULL; env->num_call = 0; #ifdef USE_CALL env->unset_addr_list = NULL; env->has_call_zero = 0; #endif env->num_mem = 0; env->num_named = 0; env->mem_alloc = 0; env->mem_env_dynamic = (MemEnv* )NULL; xmemset(env->mem_env_static, 0, sizeof(env->mem_env_static)); #ifdef USE_COMBINATION_EXPLOSION_CHECK env->num_comb_exp_check = 0; env->comb_exp_max_regnum = 0; env->curr_max_regnum = 0; env->has_recursion = 0; #endif env->parse_depth = 0; env->keep_num = 0; env->save_num = 0; env->save_alloc_num = 0; env->saves = 0; } static int scan_env_add_mem_entry(ScanEnv* env) { int i, need, alloc; MemEnv* p; need = env->num_mem + 1; if (need > MaxCaptureNum && MaxCaptureNum != 0) return ONIGERR_TOO_MANY_CAPTURES; if (need >= SCANENV_MEMENV_SIZE) { if (env->mem_alloc <= need) { if (IS_NULL(env->mem_env_dynamic)) { alloc = INIT_SCANENV_MEMENV_ALLOC_SIZE; p = (MemEnv* )xmalloc(sizeof(MemEnv) * alloc); CHECK_NULL_RETURN_MEMERR(p); xmemcpy(p, env->mem_env_static, sizeof(env->mem_env_static)); } else { alloc = env->mem_alloc * 2; p = (MemEnv* )xrealloc(env->mem_env_dynamic, sizeof(MemEnv) * alloc); CHECK_NULL_RETURN_MEMERR(p); } for (i = env->num_mem + 1; i < alloc; i++) { p[i].node = NULL_NODE; #if 0 p[i].in = 0; p[i].recursion = 0; #endif } env->mem_env_dynamic = p; env->mem_alloc = alloc; } } env->num_mem++; return env->num_mem; } static int scan_env_set_mem_node(ScanEnv* env, int num, Node* node) { if (env->num_mem >= num) SCANENV_MEMENV(env)[num].node = node; else return ONIGERR_PARSER_BUG; return 0; } extern void onig_node_free(Node* node) { start: if (IS_NULL(node)) return ; #ifdef DEBUG_NODE_FREE fprintf(stderr, "onig_node_free: %p\n", node); #endif switch (NODE_TYPE(node)) { case NODE_STRING: if (STR_(node)->capa != 0 && IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { xfree(STR_(node)->s); } break; case NODE_LIST: case NODE_ALT: onig_node_free(NODE_CAR(node)); { Node* next_node = NODE_CDR(node); xfree(node); node = next_node; goto start; } break; case NODE_CCLASS: { CClassNode* cc = CCLASS_(node); if (cc->mbuf) bbuf_free(cc->mbuf); } break; case NODE_BACKREF: if (IS_NOT_NULL(BACKREF_(node)->back_dynamic)) xfree(BACKREF_(node)->back_dynamic); break; case NODE_ENCLOSURE: if (NODE_BODY(node)) onig_node_free(NODE_BODY(node)); { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_IF_ELSE) { onig_node_free(en->te.Then); onig_node_free(en->te.Else); } } break; case NODE_QUANT: case NODE_ANCHOR: if (NODE_BODY(node)) onig_node_free(NODE_BODY(node)); break; case NODE_CTYPE: case NODE_CALL: case NODE_GIMMICK: break; } xfree(node); } static void cons_node_free_alone(Node* node) { NODE_CAR(node) = 0; NODE_CDR(node) = 0; onig_node_free(node); } extern void list_node_free_not_car(Node* node) { Node* next_node; start: if (IS_NULL(node)) return; next_node = NODE_CDR(node); xfree(node); node = next_node; goto start; } static Node* node_new(void) { Node* node; node = (Node* )xmalloc(sizeof(Node)); xmemset(node, 0, sizeof(*node)); #ifdef DEBUG_NODE_FREE fprintf(stderr, "node_new: %p\n", node); #endif return node; } static void initialize_cclass(CClassNode* cc) { BITSET_CLEAR(cc->bs); cc->flags = 0; cc->mbuf = NULL; } static Node* node_new_cclass(void) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_CCLASS); initialize_cclass(CCLASS_(node)); return node; } static Node* 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)->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, ONIG_OPTION_NONE); return node; } static Node* node_new_anychar_with_fixed_option(OnigOptionType option) { CtypeNode* ct; Node* node; node = node_new_anychar(); ct = CTYPE_(node); ct->options = option; NODE_STATUS_ADD(node, NST_FIXED_OPTION); return node; } static int node_new_no_newline(Node** node, ScanEnv* env) { Node* n; n = node_new_anychar_with_fixed_option(ONIG_OPTION_NONE); CHECK_NULL_RETURN_MEMERR(n); *node = n; return 0; } static int node_new_true_anychar(Node** node, ScanEnv* env) { Node* n; n = node_new_anychar_with_fixed_option(ONIG_OPTION_MULTILINE); CHECK_NULL_RETURN_MEMERR(n); *node = n; return 0; } static Node* node_new_list(Node* left, Node* right) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_LIST); NODE_CAR(node) = left; NODE_CDR(node) = right; return node; } extern Node* onig_node_new_list(Node* left, Node* right) { return node_new_list(left, right); } extern Node* onig_node_list_add(Node* list, Node* x) { Node *n; n = onig_node_new_list(x, NULL); if (IS_NULL(n)) return NULL_NODE; if (IS_NOT_NULL(list)) { while (IS_NOT_NULL(NODE_CDR(list))) list = NODE_CDR(list); NODE_CDR(list) = n; } return n; } extern Node* onig_node_new_alt(Node* left, Node* right) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_ALT); NODE_CAR(node) = left; NODE_CDR(node) = right; return node; } static Node* make_list_or_alt(NodeType type, int n, Node* ns[]) { Node* r; if (n <= 0) return NULL_NODE; if (n == 1) { r = node_new(); CHECK_NULL_RETURN(r); NODE_SET_TYPE(r, type); NODE_CAR(r) = ns[0]; NODE_CDR(r) = NULL_NODE; } else { Node* right; r = node_new(); CHECK_NULL_RETURN(r); right = make_list_or_alt(type, n - 1, ns + 1); if (IS_NULL(right)) { onig_node_free(r); return NULL_NODE; } NODE_SET_TYPE(r, type); NODE_CAR(r) = ns[0]; NODE_CDR(r) = right; } return r; } static Node* make_list(int n, Node* ns[]) { return make_list_or_alt(NODE_LIST, n, ns); } static Node* make_alt(int n, Node* ns[]) { return make_list_or_alt(NODE_ALT, n, ns); } extern Node* onig_node_new_anchor(int type, 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)->ascii_mode = ascii_mode; return node; } static Node* node_new_backref(int back_num, int* backrefs, int by_name, #ifdef USE_BACKREF_WITH_LEVEL int exist_level, int nest_level, #endif ScanEnv* env) { int i; Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_BACKREF); BACKREF_(node)->back_num = back_num; BACKREF_(node)->back_dynamic = (int* )NULL; if (by_name != 0) NODE_STATUS_ADD(node, NST_BY_NAME); #ifdef USE_BACKREF_WITH_LEVEL if (exist_level != 0) { NODE_STATUS_ADD(node, NST_NEST_LEVEL); BACKREF_(node)->nest_level = nest_level; } #endif for (i = 0; i < back_num; i++) { if (backrefs[i] <= env->num_mem && IS_NULL(SCANENV_MEMENV(env)[backrefs[i]].node)) { NODE_STATUS_ADD(node, NST_RECURSION); /* /...(\1).../ */ break; } } if (back_num <= NODE_BACKREFS_SIZE) { for (i = 0; i < back_num; i++) BACKREF_(node)->back_static[i] = backrefs[i]; } else { int* p = (int* )xmalloc(sizeof(int) * back_num); if (IS_NULL(p)) { onig_node_free(node); return NULL; } BACKREF_(node)->back_dynamic = p; for (i = 0; i < back_num; i++) p[i] = backrefs[i]; } return node; } static Node* node_new_backref_checker(int back_num, int* backrefs, int by_name, #ifdef USE_BACKREF_WITH_LEVEL int exist_level, int nest_level, #endif ScanEnv* env) { Node* node; node = node_new_backref(back_num, backrefs, by_name, #ifdef USE_BACKREF_WITH_LEVEL exist_level, nest_level, #endif env); CHECK_NULL_RETURN(node); NODE_STATUS_ADD(node, NST_CHECKER); return node; } #ifdef USE_CALL static Node* node_new_call(UChar* name, UChar* name_end, int gnum, int by_number) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_CALL); CALL_(node)->by_number = by_number; CALL_(node)->name = name; CALL_(node)->name_end = name_end; CALL_(node)->group_num = gnum; CALL_(node)->entry_count = 1; return node; } #endif static Node* node_new_quantifier(int lower, int upper, int by_number) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_QUANT); QUANT_(node)->lower = lower; QUANT_(node)->upper = upper; QUANT_(node)->greedy = 1; QUANT_(node)->body_empty_info = QUANT_BODY_IS_NOT_EMPTY; QUANT_(node)->head_exact = NULL_NODE; QUANT_(node)->next_head_exact = NULL_NODE; QUANT_(node)->is_refered = 0; if (by_number != 0) NODE_STATUS_ADD(node, NST_BY_NUMBER); #ifdef USE_COMBINATION_EXPLOSION_CHECK QUANT_(node)->comb_exp_check_num = 0; #endif return node; } static Node* node_new_enclosure(enum EnclosureType type) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_ENCLOSURE); ENCLOSURE_(node)->type = type; switch (type) { case ENCLOSURE_MEMORY: ENCLOSURE_(node)->m.regnum = 0; ENCLOSURE_(node)->m.called_addr = -1; ENCLOSURE_(node)->m.entry_count = 1; ENCLOSURE_(node)->m.called_state = 0; break; case ENCLOSURE_OPTION: ENCLOSURE_(node)->o.options = 0; break; case ENCLOSURE_STOP_BACKTRACK: break; case ENCLOSURE_IF_ELSE: ENCLOSURE_(node)->te.Then = 0; ENCLOSURE_(node)->te.Else = 0; break; } ENCLOSURE_(node)->opt_count = 0; return node; } extern Node* onig_node_new_enclosure(int type) { return node_new_enclosure(type); } static Node* node_new_enclosure_if_else(Node* cond, Node* Then, Node* Else) { Node* n; n = node_new_enclosure(ENCLOSURE_IF_ELSE); CHECK_NULL_RETURN(n); NODE_BODY(n) = cond; ENCLOSURE_(n)->te.Then = Then; ENCLOSURE_(n)->te.Else = Else; return n; } static Node* node_new_memory(int is_named) { Node* node = node_new_enclosure(ENCLOSURE_MEMORY); CHECK_NULL_RETURN(node); if (is_named != 0) NODE_STATUS_ADD(node, NST_NAMED_GROUP); return node; } static Node* node_new_option(OnigOptionType option) { Node* node = node_new_enclosure(ENCLOSURE_OPTION); CHECK_NULL_RETURN(node); ENCLOSURE_(node)->o.options = option; return node; } static int node_new_fail(Node** node, ScanEnv* env) { *node = node_new(); CHECK_NULL_RETURN_MEMERR(*node); NODE_SET_TYPE(*node, NODE_GIMMICK); GIMMICK_(*node)->type = GIMMICK_FAIL; return ONIG_NORMAL; } static int node_new_save_gimmick(Node** node, enum SaveType save_type, ScanEnv* env) { int id; int r; r = save_entry(env, save_type, &id); if (r != ONIG_NORMAL) return r; *node = node_new(); CHECK_NULL_RETURN_MEMERR(*node); NODE_SET_TYPE(*node, NODE_GIMMICK); GIMMICK_(*node)->id = id; GIMMICK_(*node)->type = GIMMICK_SAVE; GIMMICK_(*node)->detail_type = (int )save_type; return ONIG_NORMAL; } static int node_new_update_var_gimmick(Node** node, enum UpdateVarType update_var_type, int id, ScanEnv* env) { *node = node_new(); CHECK_NULL_RETURN_MEMERR(*node); NODE_SET_TYPE(*node, NODE_GIMMICK); GIMMICK_(*node)->id = id; GIMMICK_(*node)->type = GIMMICK_UPDATE_VAR; GIMMICK_(*node)->detail_type = (int )update_var_type; return ONIG_NORMAL; } static int node_new_keep(Node** node, ScanEnv* env) { int r; r = node_new_save_gimmick(node, SAVE_KEEP, env); if (r != 0) return r; env->keep_num++; return ONIG_NORMAL; } static int make_extended_grapheme_cluster(Node** node, ScanEnv* env) { int r; int i; Node* x; Node* ns[2]; /* \X == (?>\O(?:\Y\O)*) */ ns[1] = NULL_NODE; r = ONIGERR_MEMORY; ns[0] = onig_node_new_anchor(ANCHOR_NO_EXTENDED_GRAPHEME_CLUSTER_BOUNDARY, 0); if (IS_NULL(ns[0])) goto err; r = node_new_true_anychar(&ns[1], env); if (r != 0) goto err1; x = make_list(2, ns); if (IS_NULL(x)) goto err; ns[0] = x; ns[1] = NULL_NODE; x = node_new_quantifier(0, REPEAT_INFINITE, 1); if (IS_NULL(x)) goto err; NODE_BODY(x) = ns[0]; ns[0] = NULL_NODE; ns[1] = x; r = node_new_true_anychar(&ns[0], env); if (r != 0) goto err1; x = make_list(2, ns); if (IS_NULL(x)) goto err; ns[0] = x; ns[1] = NULL_NODE; x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); if (IS_NULL(x)) goto err; NODE_BODY(x) = ns[0]; *node = x; return ONIG_NORMAL; err: r = ONIGERR_MEMORY; err1: for (i = 0; i < 2; i++) onig_node_free(ns[i]); return r; } static int make_absent_engine(Node** node, int pre_save_right_id, Node* absent, Node* step_one, int lower, int upper, int possessive, int is_range_cutter, ScanEnv* env) { int r; int i; int id; Node* x; Node* ns[4]; for (i = 0; i < 4; i++) ns[i] = NULL_NODE; ns[1] = absent; ns[3] = step_one; // for err r = node_new_save_gimmick(&ns[0], SAVE_S, env); if (r != 0) goto err; id = GIMMICK_(ns[0])->id; r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_S_STACK, id, env); if (r != 0) goto err; r = node_new_fail(&ns[3], env); if (r != 0) goto err; x = make_list(4, ns); if (IS_NULL(x)) goto err0; ns[0] = x; ns[1] = step_one; ns[2] = ns[3] = NULL_NODE; x = make_alt(2, ns); if (IS_NULL(x)) goto err0; ns[0] = x; x = node_new_quantifier(lower, upper, 0); if (IS_NULL(x)) goto err0; NODE_BODY(x) = ns[0]; ns[0] = x; if (possessive != 0) { x = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); if (IS_NULL(x)) goto err0; NODE_BODY(x) = ns[0]; ns[0] = x; } r = node_new_update_var_gimmick(&ns[1], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, pre_save_right_id, env); if (r != 0) goto err; r = node_new_fail(&ns[2], env); if (r != 0) goto err; x = make_list(2, ns + 1); if (IS_NULL(x)) goto err0; ns[1] = x; ns[2] = NULL_NODE; x = make_alt(2, ns); if (IS_NULL(x)) goto err0; if (is_range_cutter != 0) NODE_STATUS_ADD(x, NST_SUPER); *node = x; return ONIG_NORMAL; err0: r = ONIGERR_MEMORY; err: for (i = 0; i < 4; i++) onig_node_free(ns[i]); return r; } static int make_absent_tail(Node** node1, Node** node2, int pre_save_right_id, ScanEnv* env) { int r; int id; Node* save; Node* x; Node* ns[2]; *node1 = *node2 = NULL_NODE; save = ns[0] = ns[1] = NULL_NODE; r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); if (r != 0) goto err; id = GIMMICK_(save)->id; r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, id, env); if (r != 0) goto err; r = node_new_fail(&ns[1], env); if (r != 0) goto err; x = make_list(2, ns); if (IS_NULL(x)) goto err0; ns[0] = NULL_NODE; ns[1] = x; r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, pre_save_right_id, env); if (r != 0) goto err; x = make_alt(2, ns); if (IS_NULL(x)) goto err0; *node1 = save; *node2 = x; return ONIG_NORMAL; err0: r = ONIGERR_MEMORY; err: onig_node_free(save); onig_node_free(ns[0]); onig_node_free(ns[1]); return r; } static int make_range_clear(Node** node, ScanEnv* env) { int r; int id; Node* save; Node* x; Node* ns[2]; *node = NULL_NODE; save = ns[0] = ns[1] = NULL_NODE; r = node_new_save_gimmick(&save, SAVE_RIGHT_RANGE, env); if (r != 0) goto err; id = GIMMICK_(save)->id; r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, id, env); if (r != 0) goto err; r = node_new_fail(&ns[1], env); if (r != 0) goto err; x = make_list(2, ns); if (IS_NULL(x)) goto err0; ns[0] = NULL_NODE; ns[1] = x; r = node_new_update_var_gimmick(&ns[0], UPDATE_VAR_RIGHT_RANGE_INIT, 0, env); if (r != 0) goto err; x = make_alt(2, ns); if (IS_NULL(x)) goto err0; NODE_STATUS_ADD(x, 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]); onig_node_free(ns[1]); return r; } static int is_simple_one_char_repeat(Node* node, Node** rquant, Node** rbody, int* is_possessive, ScanEnv* env) { Node* quant; Node* body; *rquant = *rbody = 0; *is_possessive = 0; if (NODE_TYPE(node) == NODE_QUANT) { quant = node; } else { if (NODE_TYPE(node) == NODE_ENCLOSURE) { EnclosureNode* en = ENCLOSURE_(node); if (en->type == ENCLOSURE_STOP_BACKTRACK) { *is_possessive = 1; quant = NODE_ENCLOSURE_BODY(en); if (NODE_TYPE(quant) != NODE_QUANT) return 0; } else return 0; } else return 0; } if (QUANT_(quant)->greedy == 0) return 0; body = NODE_BODY(quant); switch (NODE_TYPE(body)) { case NODE_STRING: { int len; StrNode* sn = STR_(body); UChar *s = sn->s; len = 0; while (s < sn->end) { s += enclen(env->enc, s); len++; } if (len != 1) return 0; } case NODE_CCLASS: break; default: return 0; break; } if (node != quant) { NODE_BODY(node) = 0; onig_node_free(node); } NODE_BODY(quant) = NULL_NODE; *rquant = quant; *rbody = body; return 1; } static int make_absent_tree_for_simple_one_char_repeat(Node** node, Node* absent, Node* quant, Node* body, int possessive, ScanEnv* env) { int r; int i; int id1; int lower, upper; Node* x; Node* ns[4]; *node = NULL_NODE; r = ONIGERR_MEMORY; ns[0] = ns[1] = NULL_NODE; ns[2] = body, ns[3] = absent; lower = QUANT_(quant)->lower; upper = QUANT_(quant)->upper; onig_node_free(quant); r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); if (r != 0) goto err; id1 = GIMMICK_(ns[0])->id; r = make_absent_engine(&ns[1], id1, absent, body, lower, upper, possessive, 0, env); if (r != 0) goto err; ns[2] = ns[3] = NULL_NODE; r = node_new_update_var_gimmick(&ns[2], UPDATE_VAR_RIGHT_RANGE_FROM_STACK, id1, env); if (r != 0) goto err; x = make_list(3, ns); if (IS_NULL(x)) goto err0; *node = x; return ONIG_NORMAL; err0: r = ONIGERR_MEMORY; err: for (i = 0; i < 4; i++) onig_node_free(ns[i]); return r; } static int make_absent_tree(Node** node, Node* absent, Node* expr, int is_range_cutter, ScanEnv* env) { int r; int i; int id1, id2; int possessive; Node* x; Node* ns[7]; r = ONIGERR_MEMORY; for (i = 0; i < 7; i++) ns[i] = NULL_NODE; ns[4] = expr; ns[5] = absent; if (is_range_cutter == 0) { Node* quant; Node* body; if (expr == NULL_NODE) { /* default expr \O* */ quant = node_new_quantifier(0, REPEAT_INFINITE, 0); if (IS_NULL(quant)) goto err0; r = node_new_true_anychar(&body, env); if (r != 0) { onig_node_free(quant); goto err; } possessive = 0; goto simple; } else { if (is_simple_one_char_repeat(expr, &quant, &body, &possessive, env)) { simple: r = make_absent_tree_for_simple_one_char_repeat(node, absent, quant, body, possessive, env); if (r != 0) { ns[4] = NULL_NODE; onig_node_free(quant); onig_node_free(body); goto err; } return ONIG_NORMAL; } } } r = node_new_save_gimmick(&ns[0], SAVE_RIGHT_RANGE, env); if (r != 0) goto err; id1 = GIMMICK_(ns[0])->id; r = node_new_save_gimmick(&ns[1], SAVE_S, env); if (r != 0) goto err; id2 = GIMMICK_(ns[1])->id; r = node_new_true_anychar(&ns[3], env); if (r != 0) goto err; possessive = 1; r = make_absent_engine(&ns[2], id1, absent, ns[3], 0, REPEAT_INFINITE, possessive, is_range_cutter, env); if (r != 0) goto err; ns[3] = NULL_NODE; ns[5] = NULL_NODE; r = node_new_update_var_gimmick(&ns[3], UPDATE_VAR_S_FROM_STACK, id2, env); if (r != 0) goto err; if (is_range_cutter != 0) { x = make_list(4, ns); if (IS_NULL(x)) goto err0; } else { r = make_absent_tail(&ns[5], &ns[6], id1, env); if (r != 0) goto err; x = make_list(7, ns); if (IS_NULL(x)) goto err0; } *node = x; return ONIG_NORMAL; err0: r = ONIGERR_MEMORY; err: for (i = 0; i < 7; i++) onig_node_free(ns[i]); return r; } extern int onig_node_str_cat(Node* node, const UChar* s, const UChar* end) { int addlen = (int )(end - s); if (addlen > 0) { int len = (int )(STR_(node)->end - STR_(node)->s); if (STR_(node)->capa > 0 || (len + addlen > NODE_STRING_BUF_SIZE - 1)) { UChar* p; int capa = len + addlen + NODE_STRING_MARGIN; if (capa <= STR_(node)->capa) { onig_strcpy(STR_(node)->s + len, s, end); } else { if (STR_(node)->s == STR_(node)->buf) p = strcat_capa_from_static(STR_(node)->s, STR_(node)->end, s, end, capa); else p = strcat_capa(STR_(node)->s, STR_(node)->end, s, end, capa); CHECK_NULL_RETURN_MEMERR(p); STR_(node)->s = p; STR_(node)->capa = capa; } } else { onig_strcpy(STR_(node)->s + len, s, end); } STR_(node)->end = STR_(node)->s + len + addlen; } return 0; } extern int onig_node_str_set(Node* node, const UChar* s, const UChar* end) { onig_node_str_clear(node); return onig_node_str_cat(node, s, end); } static int node_str_cat_char(Node* node, UChar c) { UChar s[1]; s[0] = c; return onig_node_str_cat(node, s, s + 1); } extern void onig_node_conv_to_str_node(Node* node, int flag) { NODE_SET_TYPE(node, NODE_STRING); STR_(node)->flag = flag; STR_(node)->capa = 0; STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; } extern void onig_node_str_clear(Node* node) { if (STR_(node)->capa != 0 && IS_NOT_NULL(STR_(node)->s) && STR_(node)->s != STR_(node)->buf) { xfree(STR_(node)->s); } STR_(node)->capa = 0; STR_(node)->flag = 0; STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; } static Node* node_new_str(const UChar* s, const UChar* end) { Node* node = node_new(); CHECK_NULL_RETURN(node); NODE_SET_TYPE(node, NODE_STRING); STR_(node)->capa = 0; STR_(node)->flag = 0; STR_(node)->s = STR_(node)->buf; STR_(node)->end = STR_(node)->buf; if (onig_node_str_cat(node, s, end)) { onig_node_free(node); return NULL; } return node; } extern Node* onig_node_new_str(const UChar* s, const UChar* end) { return node_new_str(s, end); } static Node* node_new_str_raw(UChar* s, UChar* end) { Node* node = node_new_str(s, end); NODE_STRING_SET_RAW(node); return node; } static Node* node_new_empty(void) { return node_new_str(NULL, NULL); } static Node* node_new_str_raw_char(UChar c) { UChar p[1]; p[0] = c; return node_new_str_raw(p, p + 1); } static Node* str_node_split_last_char(StrNode* sn, OnigEncoding enc) { const UChar *p; Node* n = NULL_NODE; if (sn->end > sn->s) { p = onigenc_get_prev_char_head(enc, sn->s, sn->end); if (p && p > sn->s) { /* can be split. */ n = node_new_str(p, sn->end); if ((sn->flag & STRING_RAW) != 0) NODE_STRING_SET_RAW(n); sn->end = (UChar* )p; } } return n; } static int str_node_can_be_split(StrNode* sn, OnigEncoding enc) { if (sn->end > sn->s) { return ((enclen(enc, sn->s) < sn->end - sn->s) ? 1 : 0); } return 0; } #ifdef USE_PAD_TO_SHORT_BYTE_CHAR static int node_str_head_pad(StrNode* sn, int num, UChar val) { UChar buf[NODE_STRING_BUF_SIZE]; int i, len; len = sn->end - sn->s; onig_strcpy(buf, sn->s, sn->end); onig_strcpy(&(sn->s[num]), buf, buf + len); sn->end += num; for (i = 0; i < num; i++) { sn->s[i] = val; } } #endif extern int onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc) { unsigned int num, val; OnigCodePoint c; UChar* p = *src; PFETCH_READY; num = 0; while (! PEND) { PFETCH(c); if (IS_CODE_DIGIT_ASCII(enc, c)) { val = (unsigned int )DIGITVAL(c); if ((INT_MAX_LIMIT - val) / 10UL < num) return -1; /* overflow */ num = num * 10 + val; } else { PUNFETCH; break; } } *src = p; return num; } static int scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int minlen, int maxlen, OnigEncoding enc) { OnigCodePoint c; unsigned int num, val; int n; UChar* p = *src; PFETCH_READY; num = 0; n = 0; while (! PEND && n < maxlen) { PFETCH(c); if (IS_CODE_XDIGIT_ASCII(enc, c)) { n++; val = (unsigned int )XDIGITVAL(enc,c); if ((INT_MAX_LIMIT - val) / 16UL < num) return ONIGERR_TOO_BIG_NUMBER; /* overflow */ num = (num << 4) + XDIGITVAL(enc,c); } else { PUNFETCH; break; } } if (n < minlen) return ONIGERR_INVALID_CODE_POINT_VALUE; *src = p; return num; } static int scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen, OnigEncoding enc) { OnigCodePoint c; unsigned int num, val; UChar* p = *src; PFETCH_READY; num = 0; while (! PEND && maxlen-- != 0) { PFETCH(c); if (IS_CODE_DIGIT_ASCII(enc, c) && c < '8') { val = ODIGITVAL(c); if ((INT_MAX_LIMIT - val) / 8UL < num) return -1; /* overflow */ num = (num << 3) + val; } else { PUNFETCH; break; } } *src = p; return num; } #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] (all data size is OnigCodePoint) */ static int new_code_range(BBuf** pbuf) { #define INIT_MULTI_BYTE_RANGE_SIZE (SIZE_CODE_POINT * 5) int r; OnigCodePoint n; BBuf* bbuf; bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf)); CHECK_NULL_RETURN_MEMERR(bbuf); r = BB_INIT(bbuf, INIT_MULTI_BYTE_RANGE_SIZE); if (r != 0) { xfree(bbuf); *pbuf = 0; return r; } n = 0; BB_WRITE_CODE_POINT(bbuf, 0, n); return 0; } static int add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to) { int r, inc_n, pos; int low, high, bound, x; OnigCodePoint n, *data; BBuf* bbuf; if (from > to) { n = from; from = to; to = n; } if (IS_NULL(*pbuf)) { r = new_code_range(pbuf); if (r != 0) return r; bbuf = *pbuf; n = 0; } else { bbuf = *pbuf; GET_CODE_POINT(n, bbuf->p); } data = (OnigCodePoint* )(bbuf->p); data++; for (low = 0, bound = n; low < bound; ) { x = (low + bound) >> 1; if (from > data[x*2 + 1]) low = x + 1; else bound = x; } high = (to == ~((OnigCodePoint )0)) ? n : low; for (bound = n; high < bound; ) { x = (high + bound) >> 1; if (to + 1 >= data[x*2]) high = x + 1; else bound = x; } inc_n = low + 1 - high; if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM) return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES; if (inc_n != 1) { if (from > data[low*2]) from = data[low*2]; if (to < data[(high - 1)*2 + 1]) to = data[(high - 1)*2 + 1]; } if (inc_n != 0 && (OnigCodePoint )high < n) { int from_pos = SIZE_CODE_POINT * (1 + high * 2); int to_pos = SIZE_CODE_POINT * (1 + (low + 1) * 2); int size = (n - high) * 2 * SIZE_CODE_POINT; if (inc_n > 0) { BB_MOVE_RIGHT(bbuf, from_pos, to_pos, size); } else { BB_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos); } } pos = SIZE_CODE_POINT * (1 + low * 2); 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; BB_WRITE_CODE_POINT(bbuf, 0, n); return 0; } static int add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to) { if (from > to) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) return 0; else return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; } return add_code_range_to_buf(pbuf, from, to); } static int not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf) { int r, i, n; OnigCodePoint pre, from, *data, to = 0; *pbuf = (BBuf* )NULL; if (IS_NULL(bbuf)) { set_all: return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); } data = (OnigCodePoint* )(bbuf->p); GET_CODE_POINT(n, data); data++; if (n <= 0) goto set_all; r = 0; pre = MBCODE_START_POS(enc); for (i = 0; i < n; i++) { from = data[i*2]; to = data[i*2+1]; if (pre <= from - 1) { r = add_code_range_to_buf(pbuf, pre, from - 1); if (r != 0) return r; } if (to == ~((OnigCodePoint )0)) break; pre = to + 1; } if (to < ~((OnigCodePoint )0)) { r = add_code_range_to_buf(pbuf, to + 1, ~((OnigCodePoint )0)); } return r; } #define SWAP_BB_NOT(bbuf1, not1, bbuf2, not2) do {\ BBuf *tbuf; \ int tnot; \ tnot = not1; not1 = not2; not2 = tnot; \ tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \ } while (0) static int or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf) { int r; OnigCodePoint i, n1, *data1; OnigCodePoint from, to; *pbuf = (BBuf* )NULL; if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) { if (not1 != 0 || not2 != 0) return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); return 0; } r = 0; if (IS_NULL(bbuf2)) SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); if (IS_NULL(bbuf1)) { if (not1 != 0) { return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf); } else { if (not2 == 0) { return bbuf_clone(pbuf, bbuf2); } else { return not_code_range_buf(enc, bbuf2, pbuf); } } } if (not1 != 0) SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); data1 = (OnigCodePoint* )(bbuf1->p); GET_CODE_POINT(n1, data1); data1++; if (not2 == 0 && not1 == 0) { /* 1 OR 2 */ r = bbuf_clone(pbuf, bbuf2); } else if (not1 == 0) { /* 1 OR (not 2) */ r = not_code_range_buf(enc, bbuf2, pbuf); } if (r != 0) return r; for (i = 0; i < n1; i++) { from = data1[i*2]; to = data1[i*2+1]; r = add_code_range_to_buf(pbuf, from, to); if (r != 0) return r; } return 0; } static int and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1, OnigCodePoint* data, int n) { int i, r; OnigCodePoint from2, to2; for (i = 0; i < n; i++) { from2 = data[i*2]; to2 = data[i*2+1]; if (from2 < from1) { if (to2 < from1) continue; else { from1 = to2 + 1; } } else if (from2 <= to1) { if (to2 < to1) { if (from1 <= from2 - 1) { r = add_code_range_to_buf(pbuf, from1, from2-1); if (r != 0) return r; } from1 = to2 + 1; } else { to1 = from2 - 1; } } else { from1 = from2; } if (from1 > to1) break; } if (from1 <= to1) { r = add_code_range_to_buf(pbuf, from1, to1); if (r != 0) return r; } return 0; } static int and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf) { int r; OnigCodePoint i, j, n1, n2, *data1, *data2; OnigCodePoint from, to, from1, to1, from2, to2; *pbuf = (BBuf* )NULL; if (IS_NULL(bbuf1)) { if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */ return bbuf_clone(pbuf, bbuf2); return 0; } else if (IS_NULL(bbuf2)) { if (not2 != 0) return bbuf_clone(pbuf, bbuf1); return 0; } if (not1 != 0) SWAP_BB_NOT(bbuf1, not1, bbuf2, not2); data1 = (OnigCodePoint* )(bbuf1->p); data2 = (OnigCodePoint* )(bbuf2->p); GET_CODE_POINT(n1, data1); GET_CODE_POINT(n2, data2); data1++; data2++; if (not2 == 0 && not1 == 0) { /* 1 AND 2 */ for (i = 0; i < n1; i++) { from1 = data1[i*2]; to1 = data1[i*2+1]; for (j = 0; j < n2; j++) { from2 = data2[j*2]; to2 = data2[j*2+1]; if (from2 > to1) break; if (to2 < from1) continue; from = MAX(from1, from2); to = MIN(to1, to2); r = add_code_range_to_buf(pbuf, from, to); if (r != 0) return r; } } } else if (not1 == 0) { /* 1 AND (not 2) */ for (i = 0; i < n1; i++) { from1 = data1[i*2]; to1 = data1[i*2+1]; r = and_code_range1(pbuf, from1, to1, data2, n2); if (r != 0) return r; } } return 0; } static int and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) { int r, not1, not2; BBuf *buf1, *buf2, *pbuf; BitSetRef bsr1, bsr2; BitSet bs1, bs2; not1 = IS_NCCLASS_NOT(dest); bsr1 = dest->bs; buf1 = dest->mbuf; not2 = IS_NCCLASS_NOT(cc); bsr2 = cc->bs; buf2 = cc->mbuf; if (not1 != 0) { bitset_invert_to(bsr1, bs1); bsr1 = bs1; } if (not2 != 0) { bitset_invert_to(bsr2, bs2); bsr2 = bs2; } bitset_and(bsr1, bsr2); if (bsr1 != dest->bs) { bitset_copy(dest->bs, bsr1); } if (not1 != 0) { bitset_invert(dest->bs); } if (! ONIGENC_IS_SINGLEBYTE(enc)) { if (not1 != 0 && not2 != 0) { r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf); } else { r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf); if (r == 0 && not1 != 0) { BBuf *tbuf; r = not_code_range_buf(enc, pbuf, &tbuf); if (r != 0) { bbuf_free(pbuf); return r; } bbuf_free(pbuf); pbuf = tbuf; } } if (r != 0) return r; dest->mbuf = pbuf; bbuf_free(buf1); return r; } return 0; } static int or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc) { int r, not1, not2; BBuf *buf1, *buf2, *pbuf; BitSetRef bsr1, bsr2; BitSet bs1, bs2; not1 = IS_NCCLASS_NOT(dest); bsr1 = dest->bs; buf1 = dest->mbuf; not2 = IS_NCCLASS_NOT(cc); bsr2 = cc->bs; buf2 = cc->mbuf; if (not1 != 0) { bitset_invert_to(bsr1, bs1); bsr1 = bs1; } if (not2 != 0) { bitset_invert_to(bsr2, bs2); bsr2 = bs2; } bitset_or(bsr1, bsr2); if (bsr1 != dest->bs) { bitset_copy(dest->bs, bsr1); } if (not1 != 0) { bitset_invert(dest->bs); } if (! ONIGENC_IS_SINGLEBYTE(enc)) { if (not1 != 0 && not2 != 0) { r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf); } else { r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf); if (r == 0 && not1 != 0) { BBuf *tbuf; r = not_code_range_buf(enc, pbuf, &tbuf); if (r != 0) { bbuf_free(pbuf); return r; } bbuf_free(pbuf); pbuf = tbuf; } } if (r != 0) return r; dest->mbuf = pbuf; bbuf_free(buf1); return r; } else return 0; } static OnigCodePoint conv_backslash_value(OnigCodePoint c, ScanEnv* env) { if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) { switch (c) { case 'n': return '\n'; case 't': return '\t'; case 'r': return '\r'; case 'f': return '\f'; case 'a': return '\007'; case 'b': return '\010'; case 'e': return '\033'; case 'v': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB)) return '\v'; break; default: break; } } return c; } static int is_invalid_quantifier_target(Node* node) { switch (NODE_TYPE(node)) { case NODE_ANCHOR: case NODE_GIMMICK: return 1; break; case NODE_ENCLOSURE: /* allow enclosed elements */ /* return is_invalid_quantifier_target(NODE_BODY(node)); */ break; case NODE_LIST: do { if (! is_invalid_quantifier_target(NODE_CAR(node))) return 0; } while (IS_NOT_NULL(node = NODE_CDR(node))); return 0; break; case NODE_ALT: do { if (is_invalid_quantifier_target(NODE_CAR(node))) return 1; } while (IS_NOT_NULL(node = NODE_CDR(node))); break; default: break; } return 0; } /* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */ static int popular_quantifier_num(QuantNode* q) { if (q->greedy) { if (q->lower == 0) { if (q->upper == 1) return 0; else if (IS_REPEAT_INFINITE(q->upper)) return 1; } else if (q->lower == 1) { if (IS_REPEAT_INFINITE(q->upper)) return 2; } } else { if (q->lower == 0) { if (q->upper == 1) return 3; else if (IS_REPEAT_INFINITE(q->upper)) return 4; } else if (q->lower == 1) { if (IS_REPEAT_INFINITE(q->upper)) return 5; } } return -1; } enum ReduceType { RQ_ASIS = 0, /* as is */ RQ_DEL = 1, /* delete parent */ RQ_A, /* to '*' */ RQ_AQ, /* to '*?' */ RQ_QQ, /* to '??' */ RQ_P_QQ, /* to '+)??' */ RQ_PQ_Q /* to '+?)?' */ }; static enum ReduceType ReduceTypeTable[6][6] = { {RQ_DEL, RQ_A, RQ_A, RQ_QQ, RQ_AQ, RQ_ASIS}, /* '?' */ {RQ_DEL, RQ_DEL, RQ_DEL, RQ_P_QQ, RQ_P_QQ, RQ_DEL}, /* '*' */ {RQ_A, RQ_A, RQ_DEL, RQ_ASIS, RQ_P_QQ, RQ_DEL}, /* '+' */ {RQ_DEL, RQ_AQ, RQ_AQ, RQ_DEL, RQ_AQ, RQ_AQ}, /* '??' */ {RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL, RQ_DEL}, /* '*?' */ {RQ_ASIS, RQ_PQ_Q, RQ_DEL, RQ_AQ, RQ_AQ, RQ_DEL} /* '+?' */ }; extern void onig_reduce_nested_quantifier(Node* pnode, Node* cnode) { int pnum, cnum; QuantNode *p, *c; p = QUANT_(pnode); c = QUANT_(cnode); pnum = popular_quantifier_num(p); cnum = popular_quantifier_num(c); if (pnum < 0 || cnum < 0) return ; switch(ReduceTypeTable[cnum][pnum]) { case RQ_DEL: *pnode = *cnode; break; case RQ_A: NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 1; break; case RQ_AQ: NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = REPEAT_INFINITE; p->greedy = 0; break; case RQ_QQ: NODE_BODY(pnode) = NODE_BODY(cnode); p->lower = 0; p->upper = 1; p->greedy = 0; break; case RQ_P_QQ: NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 0; c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 1; return ; break; case RQ_PQ_Q: NODE_BODY(pnode) = cnode; p->lower = 0; p->upper = 1; p->greedy = 1; c->lower = 1; c->upper = REPEAT_INFINITE; c->greedy = 0; return ; break; case RQ_ASIS: NODE_BODY(pnode) = cnode; return ; break; } NODE_BODY(cnode) = NULL_NODE; onig_node_free(cnode); } static int node_new_general_newline(Node** node, ScanEnv* env) { int r; int dlen, alen; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN * 2]; Node* crnl; Node* ncc; Node* x; CClassNode* cc; dlen = ONIGENC_CODE_TO_MBC(env->enc, 0x0d, buf); if (dlen < 0) return dlen; alen = ONIGENC_CODE_TO_MBC(env->enc, 0x0a, buf + dlen); if (alen < 0) return alen; crnl = node_new_str_raw(buf, buf + dlen + alen); CHECK_NULL_RETURN_MEMERR(crnl); ncc = node_new_cclass(); if (IS_NULL(ncc)) goto err2; cc = CCLASS_(ncc); if (dlen == 1) { bitset_set_range(cc->bs, 0x0a, 0x0d); } else { r = add_code_range(&(cc->mbuf), env, 0x0a, 0x0d); if (r != 0) { err1: onig_node_free(ncc); err2: onig_node_free(crnl); return ONIGERR_MEMORY; } } if (ONIGENC_IS_UNICODE_ENCODING(env->enc)) { r = add_code_range(&(cc->mbuf), env, 0x85, 0x85); if (r != 0) goto err1; r = add_code_range(&(cc->mbuf), env, 0x2028, 0x2029); if (r != 0) goto err1; } x = node_new_enclosure_if_else(crnl, 0, ncc); if (IS_NULL(x)) goto err1; *node = x; return 0; } enum TokenSyms { TK_EOT = 0, /* end of token */ TK_RAW_BYTE = 1, TK_CHAR, TK_STRING, TK_CODE_POINT, TK_ANYCHAR, TK_CHAR_TYPE, TK_BACKREF, TK_CALL, TK_ANCHOR, TK_OP_REPEAT, TK_INTERVAL, TK_ANYCHAR_ANYTIME, /* SQL '%' == .* */ TK_ALT, TK_SUBEXP_OPEN, TK_SUBEXP_CLOSE, TK_CC_OPEN, TK_QUOTE_OPEN, TK_CHAR_PROPERTY, /* \p{...}, \P{...} */ TK_KEEP, /* \K */ TK_GENERAL_NEWLINE, /* \R */ TK_NO_NEWLINE, /* \N */ TK_TRUE_ANYCHAR, /* \O */ TK_EXTENDED_GRAPHEME_CLUSTER, /* \X */ /* in cc */ TK_CC_CLOSE, TK_CC_RANGE, TK_POSIX_BRACKET_OPEN, TK_CC_AND, /* && */ TK_CC_CC_OPEN /* [ */ }; typedef struct { enum TokenSyms type; int escaped; int base; /* is number: 8, 16 (used in [....]) */ UChar* backp; union { UChar* s; int c; OnigCodePoint code; int anchor; int subtype; struct { int lower; int upper; int greedy; int possessive; } repeat; struct { int num; int ref1; int* refs; int by_name; #ifdef USE_BACKREF_WITH_LEVEL int exist_level; int level; /* \k */ #endif } backref; struct { UChar* name; UChar* name_end; int gnum; int by_number; } call; struct { int ctype; int not; } prop; } u; } OnigToken; static int fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env) { int low, up, syn_allow, non_low = 0; int r = 0; OnigCodePoint c; OnigEncoding enc = env->enc; UChar* p = *src; PFETCH_READY; syn_allow = IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INVALID_INTERVAL); if (PEND) { if (syn_allow) return 1; /* "....{" : OK! */ else return ONIGERR_END_PATTERN_AT_LEFT_BRACE; /* "....{" syntax error */ } if (! syn_allow) { c = PPEEK; if (c == ')' || c == '(' || c == '|') { return ONIGERR_END_PATTERN_AT_LEFT_BRACE; } } low = onig_scan_unsigned_number(&p, end, env->enc); if (low < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; if (low > ONIG_MAX_REPEAT_NUM) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; if (p == *src) { /* can't read low */ if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV)) { /* allow {,n} as {0,n} */ low = 0; non_low = 1; } else goto invalid; } if (PEND) goto invalid; PFETCH(c); if (c == ',') { UChar* prev = p; up = onig_scan_unsigned_number(&p, end, env->enc); if (up < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; if (up > ONIG_MAX_REPEAT_NUM) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE; if (p == prev) { if (non_low != 0) goto invalid; up = REPEAT_INFINITE; /* {n,} : {n,infinite} */ } } else { if (non_low != 0) goto invalid; PUNFETCH; up = low; /* {n} : exact n times */ r = 2; /* fixed */ } if (PEND) goto invalid; PFETCH(c); if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) { if (c != MC_ESC(env->syntax)) goto invalid; PFETCH(c); } if (c != '}') goto invalid; if (!IS_REPEAT_INFINITE(up) && low > up) { return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE; } tok->type = TK_INTERVAL; tok->u.repeat.lower = low; tok->u.repeat.upper = up; *src = p; return r; /* 0: normal {n,m}, 2: fixed {n} */ invalid: if (syn_allow) { /* *src = p; */ /* !!! Don't do this line !!! */ return 1; /* OK */ } else return ONIGERR_INVALID_REPEAT_RANGE_PATTERN; } /* \M-, \C-, \c, or \... */ static int fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env, OnigCodePoint* val) { int v; OnigCodePoint c; OnigEncoding enc = env->enc; UChar* p = *src; if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; PFETCH_S(c); switch (c) { case 'M': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META)) { if (PEND) return ONIGERR_END_PATTERN_AT_META; PFETCH_S(c); if (c != '-') return ONIGERR_META_CODE_SYNTAX; if (PEND) return ONIGERR_END_PATTERN_AT_META; PFETCH_S(c); if (c == MC_ESC(env->syntax)) { v = fetch_escaped_value(&p, end, env, &c); if (v < 0) return v; } c = ((c & 0xff) | 0x80); } else goto backslash; break; case 'C': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL)) { if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; PFETCH_S(c); if (c != '-') return ONIGERR_CONTROL_CODE_SYNTAX; goto control; } else goto backslash; case 'c': if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_C_CONTROL)) { control: if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL; PFETCH_S(c); if (c == '?') { c = 0177; } else { if (c == MC_ESC(env->syntax)) { v = fetch_escaped_value(&p, end, env, &c); if (v < 0) return v; } c &= 0x9f; } break; } /* fall through */ default: { backslash: c = conv_backslash_value(c, env); } break; } *src = p; *val = c; return 0; } static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env); static OnigCodePoint get_name_end_code_point(OnigCodePoint start) { switch (start) { case '<': return (OnigCodePoint )'>'; break; case '\'': return (OnigCodePoint )'\''; break; case '(': return (OnigCodePoint )')'; break; default: break; } return (OnigCodePoint )0; } enum REF_NUM { IS_NOT_NUM = 0, IS_ABS_NUM = 1, IS_REL_NUM = 2 }; #ifdef USE_BACKREF_WITH_LEVEL /* \k, \k \k, \k \k<-num+n>, \k<-num-n> \k<+num+n>, \k<+num-n> */ static int fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end, UChar** rname_end, ScanEnv* env, int* rback_num, int* rlevel, enum REF_NUM* num_type) { int r, sign, exist_level; int digit_count; OnigCodePoint end_code; OnigCodePoint c = 0; OnigEncoding enc = env->enc; UChar *name_end; UChar *pnum_head; UChar *p = *src; PFETCH_READY; *rback_num = 0; exist_level = 0; *num_type = IS_NOT_NUM; sign = 1; pnum_head = *src; end_code = get_name_end_code_point(start_code); digit_count = 0; name_end = end; r = 0; if (PEND) { return ONIGERR_EMPTY_GROUP_NAME; } else { PFETCH(c); if (c == end_code) return ONIGERR_EMPTY_GROUP_NAME; if (IS_CODE_DIGIT_ASCII(enc, c)) { *num_type = IS_ABS_NUM; digit_count++; } else if (c == '-') { *num_type = IS_REL_NUM; sign = -1; pnum_head = p; } else if (c == '+') { *num_type = IS_REL_NUM; sign = 1; pnum_head = p; } else if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } } while (!PEND) { name_end = p; PFETCH(c); if (c == end_code || c == ')' || c == '+' || c == '-') { if (*num_type != IS_NOT_NUM && digit_count == 0) r = ONIGERR_INVALID_GROUP_NAME; break; } if (*num_type != IS_NOT_NUM) { if (IS_CODE_DIGIT_ASCII(enc, c)) { digit_count++; } else { r = ONIGERR_INVALID_GROUP_NAME; *num_type = IS_NOT_NUM; } } else if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } } if (r == 0 && c != end_code) { if (c == '+' || c == '-') { int level; int flag = (c == '-' ? -1 : 1); if (PEND) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; goto end; } PFETCH(c); 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; *rlevel = (level * flag); exist_level = 1; if (!PEND) { PFETCH(c); if (c == end_code) goto end; } } err: name_end = end; err2: r = ONIGERR_INVALID_GROUP_NAME; } end: if (r == 0) { if (*num_type != IS_NOT_NUM) { *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; else if (*rback_num == 0) { if (*num_type == IS_REL_NUM) goto err2; } *rback_num *= sign; } *rname_end = name_end; *src = p; return (exist_level ? 1 : 0); } else { onig_scan_env_set_error_string(env, r, *src, name_end); return r; } } #endif /* USE_BACKREF_WITH_LEVEL */ /* ref: 0 -> define name (don't allow number name) 1 -> reference name (allow number name) */ 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; OnigEncoding enc = env->enc; UChar *name_end; UChar *pnum_head; UChar *p = *src; *rback_num = 0; end_code = get_name_end_code_point(start_code); digit_count = 0; name_end = end; pnum_head = *src; r = 0; *num_type = IS_NOT_NUM; sign = 1; if (PEND) { return ONIGERR_EMPTY_GROUP_NAME; } else { PFETCH_S(c); if (c == end_code) return ONIGERR_EMPTY_GROUP_NAME; if (IS_CODE_DIGIT_ASCII(enc, c)) { if (ref == 1) *num_type = IS_ABS_NUM; else { r = ONIGERR_INVALID_GROUP_NAME; } 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 if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } } if (r == 0) { while (!PEND) { name_end = p; PFETCH_S(c); if (c == end_code || c == ')') { if (*num_type != IS_NOT_NUM && digit_count == 0) r = ONIGERR_INVALID_GROUP_NAME; break; } if (*num_type != IS_NOT_NUM) { if (IS_CODE_DIGIT_ASCII(enc, c)) { digit_count++; } else { if (!ONIGENC_IS_CODE_WORD(enc, c)) r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; else r = ONIGERR_INVALID_GROUP_NAME; *num_type = IS_NOT_NUM; } } else { if (!ONIGENC_IS_CODE_WORD(enc, c)) { r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME; } } } if (c != end_code) { r = ONIGERR_INVALID_GROUP_NAME; goto err; } if (*num_type != IS_NOT_NUM) { *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc); if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER; else if (*rback_num == 0) { 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 { while (!PEND) { name_end = p; PFETCH_S(c); if (c == end_code || c == ')') break; } if (PEND) name_end = end; err: onig_scan_env_set_error_string(env, r, *src, name_end); return r; } } static void CC_ESC_WARN(ScanEnv* env, UChar *c) { if (onig_warn == onig_null_warn) return ; if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED) && IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, env->pattern, env->pattern_end, (UChar* )"character class has '%s' without escape", c); (*onig_warn)((char* )buf); } } static void CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c) { if (onig_warn == onig_null_warn) return ; if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) { UChar buf[WARN_BUFSIZE]; onig_snprintf_with_pattern(buf, WARN_BUFSIZE, (env)->enc, (env)->pattern, (env)->pattern_end, (UChar* )"regular expression has '%s' without escape", c); (*onig_warn)((char* )buf); } } static UChar* find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to, UChar **next, OnigEncoding enc) { int i; OnigCodePoint x; UChar *q; UChar *p = from; while (p < to) { x = ONIGENC_MBC_TO_CODE(enc, p, to); q = p + enclen(enc, p); if (x == s[0]) { for (i = 1; i < n && q < to; i++) { x = ONIGENC_MBC_TO_CODE(enc, q, to); if (x != s[i]) break; q += enclen(enc, q); } if (i >= n) { if (IS_NOT_NULL(next)) *next = q; return p; } } p = q; } return NULL_UCHARP; } static int str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to, OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn) { int i, in_esc; OnigCodePoint x; UChar *q; UChar *p = from; in_esc = 0; while (p < to) { if (in_esc) { in_esc = 0; p += enclen(enc, p); } else { x = ONIGENC_MBC_TO_CODE(enc, p, to); q = p + enclen(enc, p); if (x == s[0]) { for (i = 1; i < n && q < to; i++) { x = ONIGENC_MBC_TO_CODE(enc, q, to); if (x != s[i]) break; q += enclen(enc, q); } if (i >= n) return 1; p += enclen(enc, p); } else { x = ONIGENC_MBC_TO_CODE(enc, p, to); if (x == bad) return 0; else if (x == MC_ESC(syn)) in_esc = 1; p = q; } } } return 0; } static int fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int num; OnigCodePoint c, c2; OnigSyntaxType* syn = env->syntax; OnigEncoding enc = env->enc; UChar* prev; UChar* p = *src; PFETCH_READY; if (PEND) { tok->type = TK_EOT; return tok->type; } PFETCH(c); tok->type = TK_CHAR; tok->base = 0; tok->u.c = c; tok->escaped = 0; if (c == ']') { tok->type = TK_CC_CLOSE; } else if (c == '-') { tok->type = TK_CC_RANGE; } else if (c == MC_ESC(syn)) { if (! IS_SYNTAX_BV(syn, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) goto end; if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; PFETCH(c); tok->escaped = 1; tok->u.c = c; switch (c) { case 'w': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_WORD; tok->u.prop.not = 0; break; case 'W': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_WORD; tok->u.prop.not = 1; break; case 'd': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; tok->u.prop.not = 0; break; case 'D': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; tok->u.prop.not = 1; break; case 's': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; tok->u.prop.not = 0; break; case 'S': tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; tok->u.prop.not = 1; break; case 'h': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; tok->u.prop.not = 0; break; case 'H': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; tok->u.prop.not = 1; break; case 'p': case 'P': if (PEND) break; c2 = PPEEK; if (c2 == '{' && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { PINC; tok->type = TK_CHAR_PROPERTY; tok->u.prop.not = (c == 'P' ? 1 : 0); if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { PFETCH(c2); if (c2 == '^') { tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); } else PUNFETCH; } } break; case 'o': if (PEND) break; prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { PINC; num = scan_unsigned_octal_number(&p, end, 11, enc); if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; if (!PEND) { c2 = PPEEK; if (IS_CODE_DIGIT_ASCII(enc, c2)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { PINC; tok->type = TK_CODE_POINT; tok->base = 8; tok->u.code = (OnigCodePoint )num; } else { /* can't read nothing or invalid format */ p = prev; } } break; case 'x': if (PEND) break; prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { PINC; num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); if (num < 0) { if (num == ONIGERR_TOO_BIG_NUMBER) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; else return num; } if (!PEND) { c2 = PPEEK; if (IS_CODE_XDIGIT_ASCII(enc, c2)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) { PINC; tok->type = TK_CODE_POINT; tok->base = 16; tok->u.code = (OnigCodePoint )num; } else { /* can't read nothing or invalid format */ p = prev; } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_RAW_BYTE; tok->base = 16; tok->u.c = num; } break; case 'u': if (PEND) break; prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_CODE_POINT; tok->base = 16; tok->u.code = (OnigCodePoint )num; } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { PUNFETCH; prev = p; num = scan_unsigned_octal_number(&p, end, 3, enc); if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_RAW_BYTE; tok->base = 8; tok->u.c = num; } break; default: PUNFETCH; num = fetch_escaped_value(&p, end, env, &c2); if (num < 0) return num; if (tok->u.c != c2) { tok->u.code = c2; tok->type = TK_CODE_POINT; } break; } } else if (c == '[') { if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_POSIX_BRACKET) && (PPEEK_IS(':'))) { OnigCodePoint send[] = { (OnigCodePoint )':', (OnigCodePoint )']' }; tok->backp = p; /* point at '[' is read */ PINC; if (str_exist_check_with_esc(send, 2, p, end, (OnigCodePoint )']', enc, syn)) { tok->type = TK_POSIX_BRACKET_OPEN; } else { PUNFETCH; goto cc_in_cc; } } else { cc_in_cc: if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP)) { tok->type = TK_CC_CC_OPEN; } else { CC_ESC_WARN(env, (UChar* )"["); } } } else if (c == '&') { if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP) && !PEND && (PPEEK_IS('&'))) { PINC; tok->type = TK_CC_AND; } } end: *src = p; return tok->type; } static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, num; OnigCodePoint c; OnigEncoding enc = env->enc; OnigSyntaxType* syn = env->syntax; UChar* prev; UChar* p = *src; PFETCH_READY; start: if (PEND) { tok->type = TK_EOT; return tok->type; } tok->type = TK_STRING; tok->base = 0; tok->backp = p; PFETCH(c); if (IS_MC_ESC_CODE(c, syn)) { if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE; tok->backp = p; PFETCH(c); tok->u.c = c; tok->escaped = 1; switch (c) { case '*': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break; tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = REPEAT_INFINITE; goto greedy_check; break; case '+': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break; tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 1; tok->u.repeat.upper = REPEAT_INFINITE; goto greedy_check; break; case '?': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break; tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = 1; greedy_check: if (!PEND && PPEEK_IS('?') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) { PFETCH(c); tok->u.repeat.greedy = 0; tok->u.repeat.possessive = 0; } else { possessive_check: if (!PEND && PPEEK_IS('+') && ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) && tok->type != TK_INTERVAL) || (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) && tok->type == TK_INTERVAL))) { PFETCH(c); tok->u.repeat.greedy = 1; tok->u.repeat.possessive = 1; } else { tok->u.repeat.greedy = 1; tok->u.repeat.possessive = 0; } } break; case '{': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break; r = fetch_range_quantifier(&p, end, tok, env); if (r < 0) return r; /* error */ if (r == 0) goto greedy_check; else if (r == 2) { /* {n} */ if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) goto possessive_check; goto greedy_check; } /* r == 1 : normal char */ break; case '|': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_VBAR_ALT)) break; tok->type = TK_ALT; break; case '(': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; tok->type = TK_SUBEXP_OPEN; break; case ')': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break; tok->type = TK_SUBEXP_CLOSE; break; case 'w': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_WORD; tok->u.prop.not = 0; break; case 'W': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_WORD; tok->u.prop.not = 1; break; case 'b': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break; tok->type = TK_ANCHOR; 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_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 case '<': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; tok->type = TK_ANCHOR; tok->u.anchor = ANCHOR_WORD_BEGIN; break; case '>': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break; tok->type = TK_ANCHOR; tok->u.anchor = ANCHOR_WORD_END; break; #endif case 's': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; tok->u.prop.not = 0; break; case 'S': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_SPACE; tok->u.prop.not = 1; break; case 'd': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; tok->u.prop.not = 0; break; case 'D': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT; tok->u.prop.not = 1; break; case 'h': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; tok->u.prop.not = 0; break; case 'H': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break; tok->type = TK_CHAR_TYPE; tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT; tok->u.prop.not = 1; break; case 'K': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP)) break; tok->type = TK_KEEP; break; case 'R': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE)) break; tok->type = TK_GENERAL_NEWLINE; break; case 'N': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; tok->type = TK_NO_NEWLINE; break; case 'O': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT)) break; tok->type = TK_TRUE_ANYCHAR; break; case 'X': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER)) break; tok->type = TK_EXTENDED_GRAPHEME_CLUSTER; break; case 'A': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; begin_buf: tok->type = TK_ANCHOR; tok->u.subtype = ANCHOR_BEGIN_BUF; break; case 'Z': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = ANCHOR_SEMI_END_BUF; break; case 'z': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break; end_buf: tok->type = TK_ANCHOR; tok->u.subtype = ANCHOR_END_BUF; break; case 'G': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = ANCHOR_BEGIN_POSITION; break; case '`': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; goto begin_buf; break; case '\'': if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break; goto end_buf; break; case 'o': if (PEND) break; prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_O_BRACE_OCTAL)) { PINC; num = scan_unsigned_octal_number(&p, end, 11, enc); if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; if (!PEND) { if (IS_CODE_DIGIT_ASCII(enc, PPEEK)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) { PINC; tok->type = TK_CODE_POINT; tok->u.code = (OnigCodePoint )num; } else { /* can't read nothing or invalid format */ p = prev; } } break; case 'x': if (PEND) break; prev = p; if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) { PINC; num = scan_unsigned_hexadecimal_number(&p, end, 0, 8, enc); if (num < 0) { if (num == ONIGERR_TOO_BIG_NUMBER) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; else return num; } if (!PEND) { if (IS_CODE_XDIGIT_ASCII(enc, PPEEK)) return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE; } if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) { PINC; tok->type = TK_CODE_POINT; tok->u.code = (OnigCodePoint )num; } else { /* can't read nothing or invalid format */ p = prev; } } else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) { num = scan_unsigned_hexadecimal_number(&p, end, 0, 2, enc); if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_RAW_BYTE; tok->base = 16; tok->u.c = num; } break; case 'u': if (PEND) break; prev = p; if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) { num = scan_unsigned_hexadecimal_number(&p, end, 4, 4, enc); if (num < 0) return num; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_CODE_POINT; tok->base = 16; tok->u.code = (OnigCodePoint )num; } break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': PUNFETCH; prev = p; num = onig_scan_unsigned_number(&p, end, enc); if (num < 0 || num > ONIG_MAX_BACKREF_NUM) { goto skip_backref; } if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && (num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */ if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { if (num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[num].node)) return ONIGERR_INVALID_BACKREF; } tok->type = TK_BACKREF; tok->u.backref.num = 1; tok->u.backref.ref1 = num; tok->u.backref.by_name = 0; #ifdef USE_BACKREF_WITH_LEVEL tok->u.backref.exist_level = 0; #endif break; } skip_backref: if (c == '8' || c == '9') { /* normal char */ p = prev; PINC; break; } p = prev; /* fall through */ case '0': if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { prev = p; num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } tok->type = TK_RAW_BYTE; tok->base = 8; tok->u.c = num; } else if (c != '0') { PINC; } break; case 'k': if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) { PFETCH(c); if (c == '<' || c == '\'') { UChar* name_end; int* backs; int back_num; enum REF_NUM num_type; prev = p; #ifdef USE_BACKREF_WITH_LEVEL name_end = NULL_UCHARP; /* no need. escape gcc warning. */ r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end, env, &back_num, &tok->u.backref.level, &num_type); if (r == 1) tok->u.backref.exist_level = 1; else tok->u.backref.exist_level = 0; #else r = fetch_name(c, &p, end, &name_end, env, &back_num, &num_type, 1); #endif if (r < 0) return r; if (num_type != IS_NOT_NUM) { if (num_type == IS_REL_NUM) { back_num = backref_rel_to_abs(back_num, env); } if (back_num <= 0) return ONIGERR_INVALID_BACKREF; if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { if (back_num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[back_num].node)) return ONIGERR_INVALID_BACKREF; } tok->type = TK_BACKREF; tok->u.backref.by_name = 0; tok->u.backref.num = 1; tok->u.backref.ref1 = back_num; } else { num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); if (num <= 0) { onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); return ONIGERR_UNDEFINED_NAME_REFERENCE; } if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) { int i; for (i = 0; i < num; i++) { if (backs[i] > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[backs[i]].node)) return ONIGERR_INVALID_BACKREF; } } tok->type = TK_BACKREF; tok->u.backref.by_name = 1; if (num == 1) { tok->u.backref.num = 1; tok->u.backref.ref1 = backs[0]; } else { tok->u.backref.num = num; tok->u.backref.refs = backs; } } } else PUNFETCH; } break; #ifdef USE_CALL case 'g': if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) { PFETCH(c); if (c == '<' || c == '\'') { int gnum; UChar* name_end; enum REF_NUM num_type; prev = p; r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &gnum, &num_type, 1); if (r < 0) return r; if (num_type != IS_NOT_NUM) { if (num_type == IS_REL_NUM) { gnum = backref_rel_to_abs(gnum, env); if (gnum < 0) return ONIGERR_UNDEFINED_GROUP_REFERENCE; } tok->u.call.by_number = 1; tok->u.call.gnum = gnum; } else { tok->u.call.by_number = 0; tok->u.call.gnum = 0; } tok->type = TK_CALL; tok->u.call.name = prev; tok->u.call.name_end = name_end; } else PUNFETCH; } break; #endif case 'Q': if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE)) { tok->type = TK_QUOTE_OPEN; } break; case 'p': case 'P': if (!PEND && PPEEK_IS('{') && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) { PINC; tok->type = TK_CHAR_PROPERTY; tok->u.prop.not = (c == 'P' ? 1 : 0); if (!PEND && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) { PFETCH(c); if (c == '^') { tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0); } else PUNFETCH; } } break; default: { OnigCodePoint c2; PUNFETCH; num = fetch_escaped_value(&p, end, env, &c2); if (num < 0) return num; /* set_raw: */ if (tok->u.c != c2) { tok->type = TK_CODE_POINT; tok->u.code = c2; } else { /* string */ p = tok->backp + enclen(enc, tok->backp); } } break; } } else { tok->u.c = c; tok->escaped = 0; #ifdef USE_VARIABLE_META_CHARS if ((c != ONIG_INEFFECTIVE_META_CHAR) && IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) { if (c == MC_ANYCHAR(syn)) goto any_char; else if (c == MC_ANYTIME(syn)) goto anytime; else if (c == MC_ZERO_OR_ONE_TIME(syn)) goto zero_or_one_time; else if (c == MC_ONE_OR_MORE_TIME(syn)) goto one_or_more_time; else if (c == MC_ANYCHAR_ANYTIME(syn)) { tok->type = TK_ANYCHAR_ANYTIME; goto out; } } #endif switch (c) { case '.': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_DOT_ANYCHAR)) break; #ifdef USE_VARIABLE_META_CHARS any_char: #endif tok->type = TK_ANYCHAR; break; case '*': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ASTERISK_ZERO_INF)) break; #ifdef USE_VARIABLE_META_CHARS anytime: #endif tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = REPEAT_INFINITE; goto greedy_check; break; case '+': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_PLUS_ONE_INF)) break; #ifdef USE_VARIABLE_META_CHARS one_or_more_time: #endif tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 1; tok->u.repeat.upper = REPEAT_INFINITE; goto greedy_check; break; case '?': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_ZERO_ONE)) break; #ifdef USE_VARIABLE_META_CHARS zero_or_one_time: #endif tok->type = TK_OP_REPEAT; tok->u.repeat.lower = 0; tok->u.repeat.upper = 1; goto greedy_check; break; case '{': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break; r = fetch_range_quantifier(&p, end, tok, env); if (r < 0) return r; /* error */ if (r == 0) goto greedy_check; else if (r == 2) { /* {n} */ if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY)) goto possessive_check; goto greedy_check; } /* r == 1 : normal char */ break; case '|': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_VBAR_ALT)) break; tok->type = TK_ALT; break; case '(': if (!PEND && PPEEK_IS('?') && IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { PINC; if (! PEND) { c = PPEEK; if (c == '#') { PFETCH(c); while (1) { if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; PFETCH(c); if (c == MC_ESC(syn)) { if (! PEND) PFETCH(c); } else { if (c == ')') break; } } goto start; } else if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL)) { int gnum; UChar* name; UChar* name_end; enum REF_NUM num_type; switch (c) { case '&': { PINC; name = p; r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, &num_type, 0); if (r < 0) return r; tok->type = TK_CALL; tok->u.call.by_number = 0; tok->u.call.gnum = 0; tok->u.call.name = name; tok->u.call.name_end = name_end; } break; case 'R': tok->type = TK_CALL; tok->u.call.by_number = 1; tok->u.call.gnum = 0; tok->u.call.name = p; PINC; if (! PPEEK_IS(')')) return ONIGERR_INVALID_GROUP_NAME; tok->u.call.name_end = p; break; case '-': case '+': goto lparen_qmark_num; break; default: if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto lparen_qmark_end; lparen_qmark_num: { name = p; r = fetch_name((OnigCodePoint )'(', &p, end, &name_end, env, &gnum, &num_type, 1); if (r < 0) return r; if (num_type == IS_NOT_NUM) { return ONIGERR_INVALID_GROUP_NAME; } else { if (num_type == IS_REL_NUM) { gnum = backref_rel_to_abs(gnum, env); if (gnum < 0) return ONIGERR_UNDEFINED_GROUP_REFERENCE; } tok->u.call.by_number = 1; tok->u.call.gnum = gnum; } tok->type = TK_CALL; tok->u.call.name = name; tok->u.call.name_end = name_end; } break; } } } lparen_qmark_end: PUNFETCH; } if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; tok->type = TK_SUBEXP_OPEN; break; case ')': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break; tok->type = TK_SUBEXP_CLOSE; break; case '^': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE); break; case '$': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break; tok->type = TK_ANCHOR; tok->u.subtype = (IS_SINGLELINE(env->options) ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE); break; case '[': if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACKET_CC)) break; tok->type = TK_CC_OPEN; break; case ']': if (*src > env->pattern) /* /].../ is allowed. */ CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]"); break; case '#': if (IS_EXTEND(env->options)) { while (!PEND) { PFETCH(c); if (ONIGENC_IS_CODE_NEWLINE(enc, c)) break; } goto start; break; } break; case ' ': case '\t': case '\n': case '\r': case '\f': if (IS_EXTEND(env->options)) goto start; break; default: /* string */ break; } } #ifdef USE_VARIABLE_META_CHARS out: #endif *src = p; return tok->type; } 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[]) { int i, r; OnigCodePoint j; 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 >= sb_out) { if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) { r = add_code_range_to_buf(&(cc->mbuf), j, ONIGENC_CODE_RANGE_TO(mbr, i)); if (r != 0) return r; i++; } goto sb_end; } BITSET_SET_BIT(cc->bs, j); } } sb_end: for ( ; i < n; i++) { r = add_code_range_to_buf(&(cc->mbuf), ONIGENC_CODE_RANGE_FROM(mbr, i), ONIGENC_CODE_RANGE_TO(mbr, i)); if (r != 0) return r; } } else { OnigCodePoint prev = 0; for (i = 0; i < n; i++) { for (j = prev; j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) { if (j >= sb_out) { goto sb_end2; } BITSET_SET_BIT(cc->bs, j); } prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; } for (j = prev; j < sb_out; j++) { BITSET_SET_BIT(cc->bs, j); } sb_end2: prev = sb_out; for (i = 0; i < n; i++) { if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) { r = add_code_range_to_buf(&(cc->mbuf), prev, ONIGENC_CODE_RANGE_FROM(mbr, i) - 1); if (r != 0) return r; } prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1; if (prev == 0) goto end; } 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) { 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: case ONIGENC_CTYPE_CNTRL: case ONIGENC_CTYPE_DIGIT: case ONIGENC_CTYPE_LOWER: case ONIGENC_CTYPE_PUNCT: case ONIGENC_CTYPE_SPACE: case ONIGENC_CTYPE_UPPER: case ONIGENC_CTYPE_XDIGIT: case ONIGENC_CTYPE_ASCII: case ONIGENC_CTYPE_ALNUM: if (not != 0) { for (c = 0; c < (int )limit; c++) { if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } for (c = limit; c < SINGLE_BYTE_SIZE; c++) { BITSET_SET_BIT(cc->bs, c); } ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } else { for (c = 0; c < (int )limit; c++) { if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } } break; case ONIGENC_CTYPE_GRAPH: case ONIGENC_CTYPE_PRINT: case ONIGENC_CTYPE_WORD: if (not != 0) { for (c = 0; c < (int )limit; c++) { if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0 /* check invalid code point */ && ! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } for (c = limit; c < SINGLE_BYTE_SIZE; c++) { if (ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) BITSET_SET_BIT(cc->bs, c); } } else { for (c = 0; c < (int )limit; c++) { if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype)) BITSET_SET_BIT(cc->bs, c); } if (ascii_mode == 0) ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf); } break; default: return ONIGERR_PARSER_BUG; break; } return r; } static int parse_posix_bracket(CClassNode* cc, UChar** src, UChar* end, ScanEnv* env) { #define POSIX_BRACKET_CHECK_LIMIT_LENGTH 20 #define POSIX_BRACKET_NAME_MIN_LEN 4 static PosixBracketEntryType PBS[] = { { (UChar* )"alnum", ONIGENC_CTYPE_ALNUM, 5 }, { (UChar* )"alpha", ONIGENC_CTYPE_ALPHA, 5 }, { (UChar* )"blank", ONIGENC_CTYPE_BLANK, 5 }, { (UChar* )"cntrl", ONIGENC_CTYPE_CNTRL, 5 }, { (UChar* )"digit", ONIGENC_CTYPE_DIGIT, 5 }, { (UChar* )"graph", ONIGENC_CTYPE_GRAPH, 5 }, { (UChar* )"lower", ONIGENC_CTYPE_LOWER, 5 }, { (UChar* )"print", ONIGENC_CTYPE_PRINT, 5 }, { (UChar* )"punct", ONIGENC_CTYPE_PUNCT, 5 }, { (UChar* )"space", ONIGENC_CTYPE_SPACE, 5 }, { (UChar* )"upper", ONIGENC_CTYPE_UPPER, 5 }, { (UChar* )"xdigit", ONIGENC_CTYPE_XDIGIT, 6 }, { (UChar* )"ascii", ONIGENC_CTYPE_ASCII, 5 }, { (UChar* )"word", ONIGENC_CTYPE_WORD, 4 }, { (UChar* )NULL, -1, 0 } }; PosixBracketEntryType *pb; int not, i, r; OnigCodePoint c; OnigEncoding enc = env->enc; UChar *p = *src; if (PPEEK_IS('^')) { PINC_S; not = 1; } else not = 0; if (onigenc_strlen(enc, p, end) < POSIX_BRACKET_NAME_MIN_LEN + 3) goto not_posix_bracket; for (pb = PBS; IS_NOT_NULL(pb->name); pb++) { if (onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) { p = (UChar* )onigenc_step(enc, p, end, pb->len); if (onigenc_with_ascii_strncmp(enc, p, end, (UChar* )":]", 2) != 0) return ONIGERR_INVALID_POSIX_BRACKET_TYPE; r = add_ctype_to_cc(cc, pb->ctype, not, env); if (r != 0) return r; PINC_S; PINC_S; *src = p; return 0; } } not_posix_bracket: c = 0; i = 0; while (!PEND && ((c = PPEEK) != ':') && c != ']') { PINC_S; if (++i > POSIX_BRACKET_CHECK_LIMIT_LENGTH) break; } if (c == ':' && ! PEND) { PINC_S; if (! PEND) { PFETCH_S(c); if (c == ']') return ONIGERR_INVALID_POSIX_BRACKET_TYPE; } } return 1; /* 1: is not POSIX bracket, but no error. */ } static int fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env) { int r; OnigCodePoint c; OnigEncoding enc = env->enc; UChar *prev, *start, *p = *src; r = 0; start = prev = p; while (!PEND) { prev = p; PFETCH_S(c); if (c == '}') { r = ONIGENC_PROPERTY_NAME_TO_CTYPE(enc, start, prev); if (r < 0) break; *src = p; return r; } else if (c == '(' || c == ')' || c == '{' || c == '|') { r = ONIGERR_INVALID_CHAR_PROPERTY_NAME; break; } } onig_scan_env_set_error_string(env, r, *src, prev); return r; } static int parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, ctype; CClassNode* cc; ctype = fetch_char_property_to_ctype(src, end, env); if (ctype < 0) return ctype; *np = node_new_cclass(); CHECK_NULL_RETURN_MEMERR(*np); cc = CCLASS_(*np); r = add_ctype_to_cc(cc, ctype, 0, env); if (r != 0) return r; if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); return 0; } enum CCSTATE { CCS_VALUE, CCS_RANGE, CCS_COMPLETE, CCS_START }; enum CCVALTYPE { CCV_SB, CCV_CODE_POINT, CCV_CLASS }; static int next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, enum CCSTATE* state, ScanEnv* env) { int r; if (*state == CCS_RANGE) return ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE; if (*state == CCS_VALUE && *type != CCV_CLASS) { if (*type == CCV_SB) BITSET_SET_BIT(cc->bs, (int )(*vs)); else if (*type == CCV_CODE_POINT) { r = add_code_range(&(cc->mbuf), env, *vs, *vs); if (r < 0) return r; } } *state = CCS_VALUE; *type = CCV_CLASS; return 0; } static int next_state_val(CClassNode* cc, OnigCodePoint *from, OnigCodePoint to, int* from_israw, int to_israw, enum CCVALTYPE intype, enum CCVALTYPE* type, enum CCSTATE* state, ScanEnv* env) { int r; switch (*state) { case CCS_VALUE: if (*type == CCV_SB) { if (*from > 0xff) return ONIGERR_INVALID_CODE_POINT_VALUE; BITSET_SET_BIT(cc->bs, (int )(*from)); } else if (*type == CCV_CODE_POINT) { r = add_code_range(&(cc->mbuf), env, *from, *from); if (r < 0) return r; } break; case CCS_RANGE: if (intype == *type) { if (intype == CCV_SB) { if (*from > 0xff || to > 0xff) return ONIGERR_INVALID_CODE_POINT_VALUE; if (*from > to) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) goto ccs_range_end; else return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; } bitset_set_range(cc->bs, (int )*from, (int )to); } else { r = add_code_range(&(cc->mbuf), env, *from, to); if (r < 0) return r; } } else { if (*from > to) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC)) goto ccs_range_end; else return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS; } bitset_set_range(cc->bs, (int )*from, (int )(to < 0xff ? to : 0xff)); r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*from, to); if (r < 0) return r; } ccs_range_end: *state = CCS_COMPLETE; break; case CCS_COMPLETE: case CCS_START: *state = CCS_VALUE; break; default: break; } *from_israw = to_israw; *from = to; *type = intype; return 0; } static int code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped, ScanEnv* env) { int in_esc; OnigCodePoint code; OnigEncoding enc = env->enc; UChar* p = from; in_esc = 0; while (! PEND) { if (ignore_escaped && in_esc) { in_esc = 0; } else { PFETCH_S(code); if (code == c) return 1; if (code == MC_ESC(env->syntax)) in_esc = 1; } } return 0; } static int parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) { int r, neg, len, fetched, and_start; OnigCodePoint v, vs; UChar *p; Node* node; CClassNode *cc, *prev_cc; CClassNode work_cc; enum CCSTATE state; enum CCVALTYPE val_type, in_type; int val_israw, in_israw; *np = NULL_NODE; env->parse_depth++; if (env->parse_depth > ParseDepthLimit) return ONIGERR_PARSE_DEPTH_LIMIT_OVER; prev_cc = (CClassNode* )NULL; r = fetch_token_in_cc(tok, src, end, env); if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) { neg = 1; r = fetch_token_in_cc(tok, src, end, env); } else { neg = 0; } if (r < 0) return r; if (r == TK_CC_CLOSE) { if (! code_exist_check((OnigCodePoint )']', *src, env->pattern_end, 1, env)) return ONIGERR_EMPTY_CHAR_CLASS; CC_ESC_WARN(env, (UChar* )"]"); r = tok->type = TK_CHAR; /* allow []...] */ } *np = node = node_new_cclass(); CHECK_NULL_RETURN_MEMERR(node); cc = CCLASS_(node); and_start = 0; state = CCS_START; p = *src; while (r != TK_CC_CLOSE) { fetched = 0; switch (r) { case TK_CHAR: any_char_in: len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.c); if (len > 1) { in_type = CCV_CODE_POINT; } else if (len < 0) { r = len; goto err; } else { /* sb_char: */ in_type = CCV_SB; } v = (OnigCodePoint )tok->u.c; in_israw = 0; goto val_entry2; break; case TK_RAW_BYTE: /* tok->base != 0 : octal or hexadec. */ if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) { UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN; UChar* psave = p; int i, base = tok->base; buf[0] = tok->u.c; for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) { r = fetch_token_in_cc(tok, &p, end, env); if (r < 0) goto err; if (r != TK_RAW_BYTE || tok->base != base) { fetched = 1; break; } buf[i] = tok->u.c; } if (i < ONIGENC_MBC_MINLEN(env->enc)) { r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; goto err; } len = enclen(env->enc, buf); if (i < len) { r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; goto err; } else if (i > len) { /* fetch back */ p = psave; for (i = 1; i < len; i++) { r = fetch_token_in_cc(tok, &p, end, env); } fetched = 0; } if (i == 1) { v = (OnigCodePoint )buf[0]; goto raw_single; } else { v = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe); in_type = CCV_CODE_POINT; } } else { v = (OnigCodePoint )tok->u.c; raw_single: in_type = CCV_SB; } in_israw = 1; goto val_entry2; break; case TK_CODE_POINT: v = tok->u.code; in_israw = 1; val_entry: len = ONIGENC_CODE_TO_MBCLEN(env->enc, v); if (len < 0) { r = len; goto err; } in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT); val_entry2: r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type, &state, env); if (r != 0) goto err; break; case TK_POSIX_BRACKET_OPEN: r = parse_posix_bracket(cc, &p, end, env); if (r < 0) goto err; if (r == 1) { /* is not POSIX bracket */ CC_ESC_WARN(env, (UChar* )"["); p = tok->backp; v = (OnigCodePoint )tok->u.c; in_israw = 0; goto val_entry; } goto next_class; break; case TK_CHAR_TYPE: r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env); if (r != 0) goto err; next_class: r = next_state_class(cc, &vs, &val_type, &state, env); if (r != 0) goto err; break; case TK_CHAR_PROPERTY: { int ctype = fetch_char_property_to_ctype(&p, end, env); if (ctype < 0) { r = ctype; goto err; } r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env); if (r != 0) goto err; goto next_class; } break; case TK_CC_RANGE: if (state == CCS_VALUE) { r = fetch_token_in_cc(tok, &p, end, env); if (r < 0) goto err; fetched = 1; if (r == TK_CC_CLOSE) { /* allow [x-] */ range_end_val: v = (OnigCodePoint )'-'; in_israw = 0; goto val_entry; } else if (r == TK_CC_AND) { CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; } if (val_type == CCV_CLASS) { r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; goto err; } state = CCS_RANGE; } else if (state == CCS_START) { /* [-xa] is allowed */ v = (OnigCodePoint )tok->u.c; in_israw = 0; r = fetch_token_in_cc(tok, &p, end, env); if (r < 0) goto err; fetched = 1; /* [--x] or [a&&-x] is warned. */ if (r == TK_CC_RANGE || and_start != 0) CC_ESC_WARN(env, (UChar* )"-"); goto val_entry; } else if (state == CCS_RANGE) { CC_ESC_WARN(env, (UChar* )"-"); goto any_char_in; /* [!--x] is allowed */ } else { /* CCS_COMPLETE */ r = fetch_token_in_cc(tok, &p, end, env); if (r < 0) goto err; fetched = 1; if (r == TK_CC_CLOSE) goto range_end_val; /* allow [a-b-] */ else if (r == TK_CC_AND) { CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; } if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) { CC_ESC_WARN(env, (UChar* )"-"); goto range_end_val; /* [0-9-a] is allowed as [0-9\-a] */ } r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS; goto err; } break; case TK_CC_CC_OPEN: /* [ */ { Node *anode; CClassNode* acc; r = parse_char_class(&anode, tok, &p, end, env); if (r != 0) { onig_node_free(anode); goto cc_open_err; } acc = CCLASS_(anode); r = or_cclass(cc, acc, env->enc); onig_node_free(anode); cc_open_err: if (r != 0) goto err; } break; case TK_CC_AND: /* && */ { if (state == CCS_VALUE) { r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, &val_type, &state, env); if (r != 0) goto err; } /* initialize local variables */ and_start = 1; state = CCS_START; if (IS_NOT_NULL(prev_cc)) { r = and_cclass(prev_cc, cc, env->enc); if (r != 0) goto err; bbuf_free(cc->mbuf); } else { prev_cc = cc; cc = &work_cc; } initialize_cclass(cc); } break; case TK_EOT: r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS; goto err; break; default: r = ONIGERR_PARSER_BUG; goto err; break; } if (fetched) r = tok->type; else { r = fetch_token_in_cc(tok, &p, end, env); if (r < 0) goto err; } } if (state == CCS_VALUE) { r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type, &val_type, &state, env); if (r != 0) goto err; } if (IS_NOT_NULL(prev_cc)) { r = and_cclass(prev_cc, cc, env->enc); if (r != 0) goto err; bbuf_free(cc->mbuf); cc = prev_cc; } if (neg != 0) NCCLASS_SET_NOT(cc); else NCCLASS_CLEAR_NOT(cc); if (IS_NCCLASS_NOT(cc) && IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) { int is_empty = (IS_NULL(cc->mbuf) ? 1 : 0); if (is_empty != 0) BITSET_IS_EMPTY(cc->bs, is_empty); if (is_empty == 0) { #define NEWLINE_CODE 0x0a if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) { if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1) BITSET_SET_BIT(cc->bs, NEWLINE_CODE); else add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE); } } } *src = p; env->parse_depth--; return 0; err: if (cc != CCLASS_(*np)) bbuf_free(cc->mbuf); return r; } static int parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, ScanEnv* env); static int parse_enclosure(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, ScanEnv* env) { int r, num; Node *target; OnigOptionType option; OnigCodePoint c; int list_capture; OnigEncoding enc = env->enc; UChar* p = *src; PFETCH_READY; *np = NULL; if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; option = env->options; if (PPEEK_IS('?') && IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) { PINC; if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; PFETCH(c); switch (c) { case ':': /* (?:...) grouping only */ group: r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(np, tok, term, &p, end, env); if (r < 0) return r; *src = p; return 1; /* group */ break; case '=': *np = onig_node_new_anchor(ANCHOR_PREC_READ, 0); break; case '!': /* preceding read */ *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT, 0); break; case '>': /* (?>...) stop backtrack */ *np = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); break; case '\'': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { goto named_group1; } else return ONIGERR_UNDEFINED_GROUP_OPTION; break; case '<': /* look behind (?<=...), (?syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { UChar *name; UChar *name_end; enum REF_NUM num_type; PUNFETCH; c = '<'; named_group1: list_capture = 0; named_group2: name = p; r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, &num_type, 0); if (r < 0) return r; num = scan_env_add_mem_entry(env); if (num < 0) return num; if (list_capture != 0 && num >= (int )MEM_STATUS_BITS_NUM) return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; r = name_add(env->reg, name, name_end, num, env); if (r != 0) return r; *np = node_new_memory(1); CHECK_NULL_RETURN_MEMERR(*np); ENCLOSURE_(*np)->m.regnum = num; if (list_capture != 0) MEM_STATUS_ON_SIMPLE(env->capture_history, num); env->num_named++; } else { return ONIGERR_UNDEFINED_GROUP_OPTION; } } break; case '~': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP)) { Node* absent; Node* expr; int head_bar; int is_range_cutter; if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; if (PPEEK_IS('|')) { // (?~|generator|absent) PINC; if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; head_bar = 1; if (PPEEK_IS(')')) { // (?~|) : range clear PINC; r = make_range_clear(np, env); if (r != 0) return r; goto end; } } else head_bar = 0; r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(&absent, tok, term, &p, end, env); if (r < 0) { onig_node_free(absent); return r; } expr = NULL_NODE; is_range_cutter = 0; if (head_bar != 0) { Node* top = absent; if (NODE_TYPE(top) != NODE_ALT || IS_NULL(NODE_CDR(top))) { expr = NULL_NODE; is_range_cutter = 1; //return ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN; } else { absent = NODE_CAR(top); expr = NODE_CDR(top); NODE_CAR(top) = NULL_NODE; NODE_CDR(top) = NULL_NODE; onig_node_free(top); if (IS_NULL(NODE_CDR(expr))) { top = expr; expr = NODE_CAR(top); NODE_CAR(top) = NULL_NODE; onig_node_free(top); } } } r = make_absent_tree(np, absent, expr, is_range_cutter, env); if (r != 0) { return r; } goto end; } else { return ONIGERR_UNDEFINED_GROUP_OPTION; } break; case '(': /* (?()...) */ if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE)) { UChar *prev; Node* condition; int condition_is_checker; if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; PFETCH(c); if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; if (IS_CODE_DIGIT_ASCII(enc, c) || c == '-' || c == '+' || c == '<' || c == '\'') { UChar* name_end; int back_num; int exist_level; int level; enum REF_NUM num_type; int is_enclosed; is_enclosed = (c == '<' || c == '\'') ? 1 : 0; if (! is_enclosed) PUNFETCH; prev = p; exist_level = 0; #ifdef USE_BACKREF_WITH_LEVEL name_end = NULL_UCHARP; /* no need. escape gcc warning. */ r = fetch_name_with_level( (OnigCodePoint )(is_enclosed != 0 ? c : '('), &p, end, &name_end, env, &back_num, &level, &num_type); if (r == 1) exist_level = 1; #else r = fetch_name((OnigCodePoint )(is_enclosed != 0 ? c : '('), &p, end, &name_end, env, &back_num, &num_type, 1); #endif if (r < 0) { if (is_enclosed == 0) { goto any_condition; } else return r; } condition_is_checker = 1; if (num_type != IS_NOT_NUM) { if (num_type == IS_REL_NUM) { back_num = backref_rel_to_abs(back_num, env); } if (back_num <= 0) return ONIGERR_INVALID_BACKREF; if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { if (back_num > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[back_num].node)) return ONIGERR_INVALID_BACKREF; } condition = node_new_backref_checker(1, &back_num, 0, #ifdef USE_BACKREF_WITH_LEVEL exist_level, level, #endif env); } else { int num; int* backs; num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs); if (num <= 0) { onig_scan_env_set_error_string(env, ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end); return ONIGERR_UNDEFINED_NAME_REFERENCE; } if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_STRICT_CHECK_BACKREF)) { int i; for (i = 0; i < num; i++) { if (backs[i] > env->num_mem || IS_NULL(SCANENV_MEMENV(env)[backs[i]].node)) return ONIGERR_INVALID_BACKREF; } } condition = node_new_backref_checker(num, backs, 1, #ifdef USE_BACKREF_WITH_LEVEL exist_level, level, #endif env); } if (is_enclosed != 0) { if (PEND) goto err_if_else; PFETCH(c); if (c != ')') goto err_if_else; } } else { any_condition: PUNFETCH; condition_is_checker = 0; r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(&condition, tok, term, &p, end, env); if (r < 0) { onig_node_free(condition); return r; } } CHECK_NULL_RETURN_MEMERR(condition); if (PEND) { err_if_else: onig_node_free(condition); return ONIGERR_END_PATTERN_IN_GROUP; } if (PPEEK_IS(')')) { /* case: empty body: make backref checker */ if (condition_is_checker == 0) { onig_node_free(condition); return ONIGERR_INVALID_IF_ELSE_SYNTAX; } PFETCH(c); *np = condition; } else { /* if-else */ int then_is_empty; Node *Then, *Else; if (PPEEK_IS('|')) { PFETCH(c); Then = 0; then_is_empty = 1; } else then_is_empty = 0; r = fetch_token(tok, &p, end, env); if (r < 0) { onig_node_free(condition); return r; } r = parse_subexp(&target, tok, term, &p, end, env); if (r < 0) { onig_node_free(condition); onig_node_free(target); return r; } if (then_is_empty != 0) { Else = target; } else { if (NODE_TYPE(target) == NODE_ALT) { Then = NODE_CAR(target); if (NODE_CDR(NODE_CDR(target)) == NULL_NODE) { Else = NODE_CAR(NODE_CDR(target)); cons_node_free_alone(NODE_CDR(target)); } else { Else = NODE_CDR(target); } cons_node_free_alone(target); } else { Then = target; Else = 0; } } *np = node_new_enclosure_if_else(condition, Then, Else); if (IS_NULL(*np)) { onig_node_free(condition); onig_node_free(Then); onig_node_free(Else); return ONIGERR_MEMORY; } } goto end; } else { return ONIGERR_UNDEFINED_GROUP_OPTION; } break; case '@': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) { if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) { PFETCH(c); if (c == '<' || c == '\'') { list_capture = 1; goto named_group2; /* (?@...) */ } PUNFETCH; } *np = node_new_memory(0); CHECK_NULL_RETURN_MEMERR(*np); num = scan_env_add_mem_entry(env); if (num < 0) { return num; } else if (num >= (int )MEM_STATUS_BITS_NUM) { return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY; } ENCLOSURE_(*np)->m.regnum = num; MEM_STATUS_ON_SIMPLE(env->capture_history, num); } else { return ONIGERR_UNDEFINED_GROUP_OPTION; } break; #ifdef USE_POSIXLINE_OPTION case 'p': #endif case '-': case 'i': case 'm': case 's': case 'x': case 'W': case 'D': case 'S': case 'P': { int neg = 0; while (1) { switch (c) { case ':': case ')': break; case '-': neg = 1; break; case 'x': OPTION_NEGATE(option, ONIG_OPTION_EXTEND, neg); break; case 'i': OPTION_NEGATE(option, ONIG_OPTION_IGNORECASE, neg); break; case 's': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); } else return ONIGERR_UNDEFINED_GROUP_OPTION; break; case 'm': if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) { OPTION_NEGATE(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0)); } else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) { OPTION_NEGATE(option, ONIG_OPTION_MULTILINE, neg); } else return ONIGERR_UNDEFINED_GROUP_OPTION; break; #ifdef USE_POSIXLINE_OPTION case 'p': 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; } if (c == ')') { *np = node_new_option(option); CHECK_NULL_RETURN_MEMERR(*np); *src = p; return 2; /* option only */ } else if (c == ':') { OnigOptionType prev = env->options; env->options = option; r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(&target, tok, term, &p, end, env); env->options = prev; if (r < 0) { onig_node_free(target); return r; } *np = node_new_option(option); CHECK_NULL_RETURN_MEMERR(*np); NODE_BODY(*np) = target; *src = p; return 0; } if (PEND) return ONIGERR_END_PATTERN_IN_GROUP; PFETCH(c); } } break; default: return ONIGERR_UNDEFINED_GROUP_OPTION; } } else { if (ONIG_IS_OPTION_ON(env->options, ONIG_OPTION_DONT_CAPTURE_GROUP)) goto group; *np = node_new_memory(0); CHECK_NULL_RETURN_MEMERR(*np); num = scan_env_add_mem_entry(env); if (num < 0) return num; ENCLOSURE_(*np)->m.regnum = num; } CHECK_NULL_RETURN_MEMERR(*np); r = fetch_token(tok, &p, end, env); if (r < 0) return r; r = parse_subexp(&target, tok, term, &p, end, env); if (r < 0) { onig_node_free(target); return r; } NODE_BODY(*np) = target; if (NODE_TYPE(*np) == NODE_ENCLOSURE) { if (ENCLOSURE_(*np)->type == ENCLOSURE_MEMORY) { /* Don't move this to previous of parse_subexp() */ r = scan_env_set_mem_node(env, ENCLOSURE_(*np)->m.regnum, *np); if (r != 0) return r; } } end: *src = p; return 0; } static const char* PopularQStr[] = { "?", "*", "+", "??", "*?", "+?" }; static const char* ReduceQStr[] = { "", "", "*", "*?", "??", "+ and ??", "+? and ?" }; static int set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env) { QuantNode* qn; qn = QUANT_(qnode); if (qn->lower == 1 && qn->upper == 1) return 1; switch (NODE_TYPE(target)) { case NODE_STRING: if (! group) { StrNode* sn = STR_(target); if (str_node_can_be_split(sn, env->enc)) { Node* n = str_node_split_last_char(sn, env->enc); if (IS_NOT_NULL(n)) { NODE_BODY(qnode) = n; return 2; } } } break; case NODE_QUANT: { /* check redundant double repeat. */ /* verbose warn (?:.?)? etc... but not warn (.?)? etc... */ QuantNode* qnt = QUANT_(target); int nestq_num = popular_quantifier_num(qn); int targetq_num = popular_quantifier_num(qnt); #ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR if (! NODE_IS_BY_NUMBER(qnode) && ! NODE_IS_BY_NUMBER(target) && IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) { UChar buf[WARN_BUFSIZE]; switch(ReduceTypeTable[targetq_num][nestq_num]) { case RQ_ASIS: break; case RQ_DEL: if (onig_verb_warn != onig_null_warn) { onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, env->pattern, env->pattern_end, (UChar* )"redundant nested repeat operator"); (*onig_verb_warn)((char* )buf); } goto warn_exit; break; default: if (onig_verb_warn != onig_null_warn) { onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc, env->pattern, env->pattern_end, (UChar* )"nested repeat operator %s and %s was replaced with '%s'", PopularQStr[targetq_num], PopularQStr[nestq_num], ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]); (*onig_verb_warn)((char* )buf); } goto warn_exit; break; } } warn_exit: #endif if (targetq_num >= 0) { if (nestq_num >= 0) { onig_reduce_nested_quantifier(qnode, target); goto q_exit; } else if (targetq_num == 1 || targetq_num == 2) { /* * or + */ /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */ if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) { qn->upper = (qn->lower == 0 ? 1 : qn->lower); } } } } break; default: break; } NODE_BODY(qnode) = target; q_exit: return 0; } #ifndef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS static int clear_not_flag_cclass(CClassNode* cc, OnigEncoding enc) { BBuf *tbuf; int r; if (IS_NCCLASS_NOT(cc)) { bitset_invert(cc->bs); if (! ONIGENC_IS_SINGLEBYTE(enc)) { r = not_code_range_buf(enc, cc->mbuf, &tbuf); if (r != 0) return r; bbuf_free(cc->mbuf); cc->mbuf = tbuf; } NCCLASS_CLEAR_NOT(cc); } return 0; } #endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ typedef struct { ScanEnv* env; CClassNode* cc; Node* alt_root; Node** ptail; } IApplyCaseFoldArg; static int i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[], int to_len, void* arg) { IApplyCaseFoldArg* iarg; ScanEnv* env; CClassNode* cc; BitSetRef bs; iarg = (IApplyCaseFoldArg* )arg; env = iarg->env; cc = iarg->cc; bs = cc->bs; if (to_len == 1) { int is_in = onig_is_code_in_cc(env->enc, from, cc); #ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS if ((is_in != 0 && !IS_NCCLASS_NOT(cc)) || (is_in == 0 && IS_NCCLASS_NOT(cc))) { if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { add_code_range(&(cc->mbuf), env, *to, *to); } else { BITSET_SET_BIT(bs, *to); } } #else if (is_in != 0) { if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) { if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc); add_code_range(&(cc->mbuf), env, *to, *to); } else { if (IS_NCCLASS_NOT(cc)) { BITSET_CLEAR_BIT(bs, *to); } else BITSET_SET_BIT(bs, *to); } } #endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */ } else { int r, i, len; UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; Node *snode = NULL_NODE; if (onig_is_code_in_cc(env->enc, from, cc) #ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS && !IS_NCCLASS_NOT(cc) #endif ) { for (i = 0; i < to_len; i++) { len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf); if (i == 0) { snode = onig_node_new_str(buf, buf + len); CHECK_NULL_RETURN_MEMERR(snode); /* char-class expanded multi-char only compare with string folded at match time. */ NODE_STRING_SET_AMBIG(snode); } else { r = onig_node_str_cat(snode, buf, buf + len); if (r < 0) { onig_node_free(snode); return r; } } } *(iarg->ptail) = onig_node_new_alt(snode, NULL_NODE); CHECK_NULL_RETURN_MEMERR(*(iarg->ptail)); iarg->ptail = &(NODE_CDR((*(iarg->ptail)))); } } return 0; } static int parse_exp(Node** np, OnigToken* tok, int term, UChar** src, UChar* end, ScanEnv* env) { int r, len, group = 0; Node* qn; Node** targetp; *np = NULL; if (tok->type == (enum TokenSyms )term) goto end_of_token; switch (tok->type) { case TK_ALT: case TK_EOT: end_of_token: *np = node_new_empty(); return tok->type; break; case TK_SUBEXP_OPEN: r = parse_enclosure(np, tok, TK_SUBEXP_CLOSE, src, end, env); if (r < 0) return r; if (r == 1) group = 1; else if (r == 2) { /* option only */ Node* target; OnigOptionType prev = env->options; env->options = ENCLOSURE_(*np)->o.options; r = fetch_token(tok, src, end, env); if (r < 0) return r; r = parse_subexp(&target, tok, term, src, end, env); env->options = prev; if (r < 0) { onig_node_free(target); return r; } NODE_BODY(*np) = target; return tok->type; } break; case TK_SUBEXP_CLOSE: if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP)) return ONIGERR_UNMATCHED_CLOSE_PARENTHESIS; if (tok->escaped) goto tk_raw_byte; else goto tk_byte; break; case TK_STRING: tk_byte: { *np = node_new_str(tok->backp, *src); CHECK_NULL_RETURN_MEMERR(*np); while (1) { r = fetch_token(tok, src, end, env); if (r < 0) return r; if (r != TK_STRING) break; r = onig_node_str_cat(*np, tok->backp, *src); if (r < 0) return r; } string_end: targetp = np; goto repeat; } break; case TK_RAW_BYTE: tk_raw_byte: { *np = node_new_str_raw_char((UChar )tok->u.c); CHECK_NULL_RETURN_MEMERR(*np); len = 1; while (1) { if (len >= ONIGENC_MBC_MINLEN(env->enc)) { if (len == enclen(env->enc, STR_(*np)->s)) {//should not enclen_end() r = fetch_token(tok, src, end, env); NODE_STRING_CLEAR_RAW(*np); goto string_end; } } r = fetch_token(tok, src, end, env); if (r < 0) return r; if (r != TK_RAW_BYTE) { /* Don't use this, it is wrong for little endian encodings. */ #ifdef USE_PAD_TO_SHORT_BYTE_CHAR int rem; if (len < ONIGENC_MBC_MINLEN(env->enc)) { rem = ONIGENC_MBC_MINLEN(env->enc) - len; (void )node_str_head_pad(STR_(*np), rem, (UChar )0); if (len + rem == enclen(env->enc, STR_(*np)->s)) { NODE_STRING_CLEAR_RAW(*np); goto string_end; } } #endif return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING; } r = node_str_cat_char(*np, (UChar )tok->u.c); if (r < 0) return r; len++; } } break; case TK_CODE_POINT: { UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN]; int num = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf); if (num < 0) return num; #ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG *np = node_new_str_raw(buf, buf + num); #else *np = node_new_str(buf, buf + num); #endif CHECK_NULL_RETURN_MEMERR(*np); } break; case TK_QUOTE_OPEN: { OnigCodePoint end_op[2]; UChar *qstart, *qend, *nextp; end_op[0] = (OnigCodePoint )MC_ESC(env->syntax); end_op[1] = (OnigCodePoint )'E'; qstart = *src; qend = find_str_position(end_op, 2, qstart, end, &nextp, env->enc); if (IS_NULL(qend)) { nextp = qend = end; } *np = node_new_str(qstart, qend); CHECK_NULL_RETURN_MEMERR(*np); *src = nextp; } break; case TK_CHAR_TYPE: { switch (tok->u.prop.ctype) { case ONIGENC_CTYPE_WORD: *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not, env->options); CHECK_NULL_RETURN_MEMERR(*np); break; case ONIGENC_CTYPE_SPACE: case ONIGENC_CTYPE_DIGIT: case ONIGENC_CTYPE_XDIGIT: { CClassNode* cc; *np = node_new_cclass(); CHECK_NULL_RETURN_MEMERR(*np); cc = CCLASS_(*np); add_ctype_to_cc(cc, tok->u.prop.ctype, 0, env); if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc); } break; default: return ONIGERR_PARSER_BUG; break; } } break; case TK_CHAR_PROPERTY: r = parse_char_property(np, tok, src, end, env); if (r != 0) return r; break; case TK_CC_OPEN: { CClassNode* cc; r = parse_char_class(np, tok, src, end, env); if (r != 0) return r; cc = CCLASS_(*np); if (IS_IGNORECASE(env->options)) { IApplyCaseFoldArg iarg; iarg.env = env; iarg.cc = cc; iarg.alt_root = NULL_NODE; iarg.ptail = &(iarg.alt_root); r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->case_fold_flag, i_apply_case_fold, &iarg); if (r != 0) { onig_node_free(iarg.alt_root); return r; } if (IS_NOT_NULL(iarg.alt_root)) { Node* work = onig_node_new_alt(*np, iarg.alt_root); if (IS_NULL(work)) { onig_node_free(iarg.alt_root); return ONIGERR_MEMORY; } *np = work; } } } break; case TK_ANYCHAR: *np = node_new_anychar(); CHECK_NULL_RETURN_MEMERR(*np); break; case TK_ANYCHAR_ANYTIME: *np = node_new_anychar(); CHECK_NULL_RETURN_MEMERR(*np); qn = node_new_quantifier(0, REPEAT_INFINITE, 0); CHECK_NULL_RETURN_MEMERR(qn); NODE_BODY(qn) = *np; *np = qn; break; case TK_BACKREF: len = tok->u.backref.num; *np = node_new_backref(len, (len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)), tok->u.backref.by_name, #ifdef USE_BACKREF_WITH_LEVEL tok->u.backref.exist_level, tok->u.backref.level, #endif env); CHECK_NULL_RETURN_MEMERR(*np); break; #ifdef USE_CALL case TK_CALL: { int gnum = tok->u.call.gnum; *np = node_new_call(tok->u.call.name, tok->u.call.name_end, gnum, tok->u.call.by_number); CHECK_NULL_RETURN_MEMERR(*np); env->num_call++; if (tok->u.call.by_number != 0 && gnum == 0) { env->has_call_zero = 1; } } break; #endif case TK_ANCHOR: { 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: case TK_INTERVAL: if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) { if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS)) return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED; else *np = node_new_empty(); } else { goto tk_byte; } break; case TK_KEEP: r = node_new_keep(np, env); if (r < 0) return r; break; case TK_GENERAL_NEWLINE: r = node_new_general_newline(np, env); if (r < 0) return r; break; case TK_NO_NEWLINE: r = node_new_no_newline(np, env); if (r < 0) return r; break; case TK_TRUE_ANYCHAR: r = node_new_true_anychar(np, env); if (r < 0) return r; break; case TK_EXTENDED_GRAPHEME_CLUSTER: r = make_extended_grapheme_cluster(np, env); if (r < 0) return r; break; default: return ONIGERR_PARSER_BUG; break; } { targetp = np; re_entry: r = fetch_token(tok, src, end, env); if (r < 0) return r; repeat: if (r == TK_OP_REPEAT || r == TK_INTERVAL) { if (is_invalid_quantifier_target(*targetp)) return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID; qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper, (r == TK_INTERVAL ? 1 : 0)); CHECK_NULL_RETURN_MEMERR(qn); QUANT_(qn)->greedy = tok->u.repeat.greedy; r = set_quantifier(qn, *targetp, group, env); if (r < 0) { onig_node_free(qn); return r; } if (tok->u.repeat.possessive != 0) { Node* en; en = node_new_enclosure(ENCLOSURE_STOP_BACKTRACK); if (IS_NULL(en)) { onig_node_free(qn); return ONIGERR_MEMORY; } NODE_BODY(en) = qn; qn = en; } if (r == 0) { *targetp = qn; } else if (r == 1) { onig_node_free(qn); } else if (r == 2) { /* split case: /abc+/ */ Node *tmp; *targetp = node_new_list(*targetp, NULL); if (IS_NULL(*targetp)) { onig_node_free(qn); return ONIGERR_MEMORY; } tmp = NODE_CDR(*targetp) = node_new_list(qn, NULL); if (IS_NULL(tmp)) { onig_node_free(qn); return ONIGERR_MEMORY; } targetp = &(NODE_CAR(tmp)); } goto re_entry; } } return r; } static int parse_branch(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, ScanEnv* env) { int r; Node *node, **headp; *top = NULL; r = parse_exp(&node, tok, term, src, end, env); if (r < 0) { onig_node_free(node); return r; } if (r == TK_EOT || r == term || r == TK_ALT) { *top = node; } else { *top = node_new_list(node, NULL); headp = &(NODE_CDR(*top)); while (r != TK_EOT && r != term && r != TK_ALT) { r = parse_exp(&node, tok, term, src, end, env); if (r < 0) { onig_node_free(node); return r; } if (NODE_TYPE(node) == NODE_LIST) { *headp = node; while (IS_NOT_NULL(NODE_CDR(node))) node = NODE_CDR(node); headp = &(NODE_CDR(node)); } else { *headp = node_new_list(node, NULL); headp = &(NODE_CDR(*headp)); } } } return r; } /* term_tok: TK_EOT or TK_SUBEXP_CLOSE */ static int parse_subexp(Node** top, OnigToken* tok, int term, UChar** src, UChar* end, ScanEnv* env) { int r; Node *node, **headp; *top = NULL; env->parse_depth++; if (env->parse_depth > ParseDepthLimit) return ONIGERR_PARSE_DEPTH_LIMIT_OVER; r = parse_branch(&node, tok, term, src, end, env); if (r < 0) { onig_node_free(node); return r; } if (r == term) { *top = node; } else if (r == TK_ALT) { *top = onig_node_new_alt(node, NULL); headp = &(NODE_CDR(*top)); while (r == TK_ALT) { r = fetch_token(tok, src, end, env); if (r < 0) return r; r = parse_branch(&node, tok, term, src, end, env); if (r < 0) { onig_node_free(node); return r; } *headp = onig_node_new_alt(node, NULL); headp = &(NODE_CDR(*headp)); } if (tok->type != (enum TokenSyms )term) goto err; } else { onig_node_free(node); err: if (term == TK_SUBEXP_CLOSE) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS; else return ONIGERR_PARSER_BUG; } env->parse_depth--; return r; } static int parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env) { int r; OnigToken tok; r = fetch_token(&tok, src, end, env); if (r < 0) return r; r = parse_subexp(top, &tok, TK_EOT, src, end, env); if (r < 0) return r; return 0; } #ifdef USE_CALL static int make_call_zero_body(Node* node, ScanEnv* env, Node** rnode) { int r; Node* x = node_new_memory(0 /* 0: is not named */); CHECK_NULL_RETURN_MEMERR(x); NODE_BODY(x) = node; ENCLOSURE_(x)->m.regnum = 0; r = scan_env_set_mem_node(env, 0, x); if (r != 0) { onig_node_free(x); return r; } *rnode = x; return 0; } #endif extern int onig_parse_tree(Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env) { int r; UChar* p; names_clear(reg); scan_env_clear(env); env->options = reg->options; env->case_fold_flag = reg->case_fold_flag; env->enc = reg->enc; env->syntax = reg->syntax; env->pattern = (UChar* )pattern; env->pattern_end = (UChar* )end; env->reg = reg; *root = NULL; if (! ONIGENC_IS_VALID_MBC_STRING(env->enc, pattern, end)) return ONIGERR_INVALID_WIDE_CHAR_VALUE; p = (UChar* )pattern; r = parse_regexp(root, &p, (UChar* )end, env); #ifdef USE_CALL if (r != 0) return r; if (env->has_call_zero != 0) { Node* zero_node; r = make_call_zero_body(*root, env, &zero_node); if (r != 0) return r; *root = zero_node; } #endif reg->num_mem = env->num_mem; return r; } extern void onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED, UChar* arg, UChar* arg_end) { env->error = arg; env->error_end = arg_end; } oniguruma-6.7.0/src/regparse.h000066400000000000000000000350471321242335200163100ustar00rootroot00000000000000#ifndef REGPARSE_H #define REGPARSE_H /********************************************************************** regparse.h - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" /* node type */ typedef enum { NODE_STRING = 0, NODE_CCLASS = 1, NODE_CTYPE = 2, NODE_BACKREF = 3, NODE_QUANT = 4, NODE_ENCLOSURE = 5, NODE_ANCHOR = 6, NODE_LIST = 7, NODE_ALT = 8, NODE_CALL = 9, NODE_GIMMICK = 10 } NodeType; enum GimmickType { GIMMICK_FAIL = 0, GIMMICK_KEEP = 1, GIMMICK_SAVE = 2, GIMMICK_UPDATE_VAR = 3, }; /* node type bit */ #define NODE_TYPE2BIT(type) (1<<(type)) #define BIT_NODE_STRING NODE_TYPE2BIT(NODE_STRING) #define BIT_NODE_CCLASS NODE_TYPE2BIT(NODE_CCLASS) #define BIT_NODE_CTYPE NODE_TYPE2BIT(NODE_CTYPE) #define BIT_NODE_BACKREF NODE_TYPE2BIT(NODE_BACKREF) #define BIT_NODE_QUANT NODE_TYPE2BIT(NODE_QUANT) #define BIT_NODE_ENCLOSURE NODE_TYPE2BIT(NODE_ENCLOSURE) #define BIT_NODE_ANCHOR NODE_TYPE2BIT(NODE_ANCHOR) #define BIT_NODE_LIST NODE_TYPE2BIT(NODE_LIST) #define BIT_NODE_ALT NODE_TYPE2BIT(NODE_ALT) #define BIT_NODE_CALL NODE_TYPE2BIT(NODE_CALL) #define BIT_NODE_GIMMICK NODE_TYPE2BIT(NODE_GIMMICK) #define NODE_IS_SIMPLE_TYPE(node) \ ((NODE_TYPE2BIT(NODE_TYPE(node)) & \ (BIT_NODE_STRING | BIT_NODE_CCLASS | BIT_NODE_CTYPE | BIT_NODE_BACKREF)) != 0) #define NODE_TYPE(node) ((node)->u.base.node_type) #define NODE_SET_TYPE(node, ntype) (node)->u.base.node_type = (ntype) #define STR_(node) (&((node)->u.str)) #define CCLASS_(node) (&((node)->u.cclass)) #define CTYPE_(node) (&((node)->u.ctype)) #define BACKREF_(node) (&((node)->u.backref)) #define QUANT_(node) (&((node)->u.quant)) #define ENCLOSURE_(node) (&((node)->u.enclosure)) #define ANCHOR_(node) (&((node)->u.anchor)) #define CONS_(node) (&((node)->u.cons)) #define CALL_(node) (&((node)->u.call)) #define GIMMICK_(node) (&((node)->u.gimmick)) #define NODE_CAR(node) (CONS_(node)->car) #define NODE_CDR(node) (CONS_(node)->cdr) #define CTYPE_ANYCHAR -1 #define NODE_IS_ANYCHAR(node) \ (NODE_TYPE(node) == NODE_CTYPE && CTYPE_(node)->ctype == CTYPE_ANYCHAR) #define CTYPE_OPTION(node, reg) \ (NODE_IS_FIXED_OPTION(node) ? CTYPE_(node)->options : reg->options) #define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML) #define ANCHOR_END_BUF_MASK (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF) 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 */ #define NODE_BACKREFS_SIZE 6 #define STRING_RAW (1<<0) /* by backslashed number */ #define STRING_AMBIG (1<<1) #define STRING_DONT_GET_OPT_INFO (1<<2) #define NODE_STRING_LEN(node) (int )((node)->u.str.end - (node)->u.str.s) #define NODE_STRING_SET_RAW(node) (node)->u.str.flag |= STRING_RAW #define NODE_STRING_CLEAR_RAW(node) (node)->u.str.flag &= ~STRING_RAW #define NODE_STRING_SET_AMBIG(node) (node)->u.str.flag |= STRING_AMBIG #define NODE_STRING_SET_DONT_GET_OPT_INFO(node) \ (node)->u.str.flag |= STRING_DONT_GET_OPT_INFO #define NODE_STRING_IS_RAW(node) (((node)->u.str.flag & STRING_RAW) != 0) #define NODE_STRING_IS_AMBIG(node) (((node)->u.str.flag & STRING_AMBIG) != 0) #define NODE_STRING_IS_DONT_GET_OPT_INFO(node) \ (((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) #define QUANT_BODY_IS_NOT_EMPTY 0 #define QUANT_BODY_IS_EMPTY 1 #define QUANT_BODY_IS_EMPTY_MEM 2 #define QUANT_BODY_IS_EMPTY_REC 3 /* node status bits */ #define NST_MIN_FIXED (1<<0) #define NST_MAX_FIXED (1<<1) #define NST_CLEN_FIXED (1<<2) #define NST_MARK1 (1<<3) #define NST_MARK2 (1<<4) #define NST_STOP_BT_SIMPLE_REPEAT (1<<5) #define NST_RECURSION (1<<6) #define NST_CALLED (1<<7) #define NST_ADDR_FIXED (1<<8) #define NST_NAMED_GROUP (1<<9) #define NST_IN_REAL_REPEAT (1<<10) /* STK_REPEAT is nested in stack. */ #define NST_IN_ZERO_REPEAT (1<<11) /* (....){0} */ #define NST_IN_MULTI_ENTRY (1<<12) #define NST_NEST_LEVEL (1<<13) #define NST_BY_NUMBER (1<<14) /* {n,m} */ #define NST_BY_NAME (1<<15) /* backref by name */ #define NST_BACKREF (1<<16) #define NST_CHECKER (1<<17) #define NST_FIXED_OPTION (1<<18) #define NST_PROHIBIT_RECURSION (1<<19) #define NST_SUPER (1<<20) #define NODE_STATUS(node) (((Node* )node)->u.base.status) #define NODE_STATUS_ADD(node,f) (NODE_STATUS(node) |= (f)) #define NODE_STATUS_REMOVE(node,f) (NODE_STATUS(node) &= ~(f)) #define NODE_IS_BY_NUMBER(node) ((NODE_STATUS(node) & NST_BY_NUMBER) != 0) #define NODE_IS_IN_REAL_REPEAT(node) ((NODE_STATUS(node) & NST_IN_REAL_REPEAT) != 0) #define NODE_IS_CALLED(node) ((NODE_STATUS(node) & NST_CALLED) != 0) #define NODE_IS_IN_MULTI_ENTRY(node) ((NODE_STATUS(node) & NST_IN_MULTI_ENTRY) != 0) #define NODE_IS_RECURSION(node) ((NODE_STATUS(node) & NST_RECURSION) != 0) #define NODE_IS_IN_ZERO_REPEAT(node) ((NODE_STATUS(node) & NST_IN_ZERO_REPEAT) != 0) #define NODE_IS_NAMED_GROUP(node) ((NODE_STATUS(node) & NST_NAMED_GROUP) != 0) #define NODE_IS_ADDR_FIXED(node) ((NODE_STATUS(node) & NST_ADDR_FIXED) != 0) #define NODE_IS_CLEN_FIXED(node) ((NODE_STATUS(node) & NST_CLEN_FIXED) != 0) #define NODE_IS_MIN_FIXED(node) ((NODE_STATUS(node) & NST_MIN_FIXED) != 0) #define NODE_IS_MAX_FIXED(node) ((NODE_STATUS(node) & NST_MAX_FIXED) != 0) #define NODE_IS_MARK1(node) ((NODE_STATUS(node) & NST_MARK1) != 0) #define NODE_IS_MARK2(node) ((NODE_STATUS(node) & NST_MARK2) != 0) #define NODE_IS_NEST_LEVEL(node) ((NODE_STATUS(node) & NST_NEST_LEVEL) != 0) #define NODE_IS_BY_NAME(node) ((NODE_STATUS(node) & NST_BY_NAME) != 0) #define NODE_IS_BACKREF(node) ((NODE_STATUS(node) & NST_BACKREF) != 0) #define NODE_IS_CHECKER(node) ((NODE_STATUS(node) & NST_CHECKER) != 0) #define NODE_IS_FIXED_OPTION(node) ((NODE_STATUS(node) & NST_FIXED_OPTION) != 0) #define NODE_IS_SUPER(node) ((NODE_STATUS(node) & NST_SUPER) != 0) #define NODE_IS_PROHIBIT_RECURSION(node) \ ((NODE_STATUS(node) & NST_PROHIBIT_RECURSION) != 0) #define NODE_IS_STOP_BT_SIMPLE_REPEAT(node) \ ((NODE_STATUS(node) & NST_STOP_BT_SIMPLE_REPEAT) != 0) #define NODE_BODY(node) ((node)->u.base.body) #define NODE_QUANT_BODY(node) ((node)->body) #define NODE_ENCLOSURE_BODY(node) ((node)->body) #define NODE_CALL_BODY(node) ((node)->body) #define NODE_ANCHOR_BODY(node) ((node)->body) typedef struct { NodeType node_type; int status; UChar* s; UChar* end; unsigned int flag; int capa; /* (allocated size - 1) or 0: use buf[] */ UChar buf[NODE_STRING_BUF_SIZE]; } StrNode; typedef struct { NodeType node_type; int status; unsigned int flags; BitSet bs; BBuf* mbuf; /* multi-byte info or NULL */ } CClassNode; typedef struct { NodeType node_type; int status; struct _Node* body; int lower; int upper; int greedy; int body_empty_info; struct _Node* head_exact; struct _Node* next_head_exact; int is_refered; /* include called node. don't eliminate even if {0} */ #ifdef USE_COMBINATION_EXPLOSION_CHECK int comb_exp_check_num; /* 1,2,3...: check, 0: no check */ #endif } QuantNode; typedef struct { NodeType node_type; int status; struct _Node* body; enum EnclosureType type; union { struct { int regnum; AbsAddrType called_addr; int entry_count; int called_state; } m; struct { OnigOptionType options; } o; struct { /* body is condition */ struct _Node* Then; struct _Node* Else; } te; }; /* for multiple call reference */ OnigLen min_len; /* min length (byte) */ OnigLen max_len; /* max length (byte) */ int char_len; /* character length */ int opt_count; /* referenced count in optimize_nodes() */ } EnclosureNode; #ifdef USE_CALL typedef struct { int offset; struct _Node* target; } UnsetAddr; typedef struct { int num; int alloc; UnsetAddr* us; } UnsetAddrList; typedef struct { NodeType node_type; int status; struct _Node* body; /* to EnclosureNode : ENCLOSURE_MEMORY */ int by_number; int group_num; UChar* name; UChar* name_end; int entry_count; } CallNode; #endif typedef struct { NodeType node_type; int status; int back_num; int back_static[NODE_BACKREFS_SIZE]; int* back_dynamic; int nest_level; } BackRefNode; typedef struct { NodeType node_type; int status; struct _Node* body; int type; int char_len; int ascii_mode; } AnchorNode; typedef struct { NodeType node_type; int status; struct _Node* car; struct _Node* cdr; } ConsAltNode; typedef struct { NodeType node_type; int status; int ctype; int not; OnigOptionType options; int ascii_mode; } CtypeNode; typedef struct { NodeType node_type; int status; enum GimmickType type; int detail_type; int id; } GimmickNode; typedef struct _Node { union { struct { NodeType node_type; int status; struct _Node* body; } base; StrNode str; CClassNode cclass; QuantNode quant; EnclosureNode enclosure; BackRefNode backref; AnchorNode anchor; ConsAltNode cons; CtypeNode ctype; #ifdef USE_CALL CallNode call; #endif GimmickNode gimmick; } u; } Node; #define NULL_NODE ((Node* )0) #define SCANENV_MEMENV_SIZE 8 #define SCANENV_MEMENV(senv) \ (IS_NOT_NULL((senv)->mem_env_dynamic) ? \ (senv)->mem_env_dynamic : (senv)->mem_env_static) typedef struct { Node* node; #if 0 int in; int recursion; #endif } MemEnv; typedef struct { enum SaveType type; } SaveItem; typedef struct { OnigOptionType options; OnigCaseFoldType case_fold_flag; OnigEncoding enc; OnigSyntaxType* syntax; MemStatusType capture_history; MemStatusType bt_mem_start; MemStatusType bt_mem_end; MemStatusType backrefed_mem; UChar* pattern; UChar* pattern_end; UChar* error; UChar* error_end; regex_t* reg; /* for reg->names only */ int num_call; #ifdef USE_CALL UnsetAddrList* unset_addr_list; int has_call_zero; #endif int num_mem; int num_named; int mem_alloc; MemEnv mem_env_static[SCANENV_MEMENV_SIZE]; MemEnv* mem_env_dynamic; #ifdef USE_COMBINATION_EXPLOSION_CHECK int num_comb_exp_check; int comb_exp_max_regnum; int curr_max_regnum; int has_recursion; #endif unsigned int parse_depth; int keep_num; int save_num; int save_alloc_num; SaveItem* saves; } ScanEnv; #define IS_SYNTAX_OP(syn, opm) (((syn)->op & (opm)) != 0) #define IS_SYNTAX_OP2(syn, opm) (((syn)->op2 & (opm)) != 0) #define IS_SYNTAX_BV(syn, bvm) (((syn)->behavior & (bvm)) != 0) typedef struct { int new_val; } GroupNumRemap; extern int onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map)); 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)); extern void onig_scan_env_set_error_string P_((ScanEnv* env, int ecode, UChar* arg, UChar* arg_end)); extern int onig_scan_unsigned_number P_((UChar** src, const UChar* end, OnigEncoding enc)); extern void onig_reduce_nested_quantifier P_((Node* pnode, Node* cnode)); extern void onig_node_conv_to_str_node P_((Node* node, int raw)); extern int onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end)); extern int onig_node_str_set P_((Node* node, const UChar* s, const UChar* end)); extern void onig_node_free P_((Node* node)); extern Node* onig_node_new_enclosure P_((int type)); extern Node* onig_node_new_anchor P_((int type, int ascii_mode)); extern Node* onig_node_new_str P_((const UChar* s, const UChar* end)); extern Node* onig_node_new_list P_((Node* left, Node* right)); extern Node* onig_node_list_add P_((Node* list, Node* x)); extern Node* onig_node_new_alt P_((Node* left, Node* right)); extern void onig_node_str_clear P_((Node* node)); extern int onig_names_free P_((regex_t* reg)); extern int onig_parse_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env)); extern int onig_free_shared_cclass_table P_((void)); extern int onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc)); extern OnigLen onig_get_tiny_min_len(Node* node, unsigned int inhibit_node_types, int* invalid_node); #ifdef ONIG_DEBUG extern int onig_print_names(FILE*, regex_t*); #endif #endif /* REGPARSE_H */ oniguruma-6.7.0/src/regposerr.c000066400000000000000000000073151321242335200165000ustar00rootroot00000000000000/********************************************************************** regposerr.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2007 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "config.h" #include "onigposix.h" #ifdef HAVE_STRING_H # include #else # include #endif #if defined(__GNUC__) # define ARG_UNUSED __attribute__ ((unused)) #else # define ARG_UNUSED #endif #if defined(_WIN32) && !defined(__GNUC__) #define xsnprintf sprintf_s #define xstrncpy(dest,src,size) strncpy_s(dest,size,src,_TRUNCATE) #else #define xsnprintf snprintf #define xstrncpy strncpy #endif static char* ESTRING[] = { NULL, "failed to match", /* REG_NOMATCH */ "Invalid regular expression", /* REG_BADPAT */ "invalid collating element referenced", /* REG_ECOLLATE */ "invalid character class type referenced", /* REG_ECTYPE */ "bad backslash-escape sequence", /* REG_EESCAPE */ "invalid back reference number", /* REG_ESUBREG */ "imbalanced [ and ]", /* REG_EBRACK */ "imbalanced ( and )", /* REG_EPAREN */ "imbalanced { and }", /* REG_EBRACE */ "invalid repeat range {n,m}", /* REG_BADBR */ "invalid range", /* REG_ERANGE */ "Out of memory", /* REG_ESPACE */ "? * + not preceded by valid regular expression", /* REG_BADRPT */ /* Extended errors */ "internal error", /* REG_EONIG_INTERNAL */ "invalid wide char value", /* REG_EONIG_BADWC */ "invalid argument" /* REG_EONIG_BADARG */ }; #include extern size_t regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf, size_t size) { char* s; char tbuf[35]; size_t len; if (posix_ecode > 0 && posix_ecode < (int )(sizeof(ESTRING) / sizeof(ESTRING[0]))) { s = ESTRING[posix_ecode]; } else if (posix_ecode == 0) { s = ""; } else { xsnprintf(tbuf, sizeof(tbuf), "undefined error code (%d)", posix_ecode); s = tbuf; } len = strlen(s) + 1; /* use strlen() because s is ascii encoding. */ if (buf != NULL && size > 0) { xstrncpy(buf, s, size - 1); buf[size - 1] = '\0'; } return len; } oniguruma-6.7.0/src/regposix.c000066400000000000000000000257031321242335200163310ustar00rootroot00000000000000/********************************************************************** regposix.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define regex_t onig_regex_t #include "regint.h" #undef regex_t #include "onigposix.h" #define ONIG_C(reg) ((onig_regex_t* )((reg)->onig)) #define PONIG_C(reg) ((onig_regex_t** )(&(reg)->onig)) /* #define ENC_STRING_LEN(enc,s,len) len = strlen(s) */ #define ENC_STRING_LEN(enc,s,len) do { \ if (ONIGENC_MBC_MINLEN(enc) == 1) { \ UChar* tmps = (UChar* )(s); \ while (*tmps != 0) tmps++; \ len = (int )(tmps - (UChar* )(s));\ } \ else { \ len = onigenc_str_bytelen_null(enc, (UChar* )s); \ } \ } while(0) typedef struct { int onig_err; int posix_err; } O2PERR; static int onig2posix_error_code(int code) { static const O2PERR o2p[] = { { ONIG_MISMATCH, REG_NOMATCH }, { ONIG_NO_SUPPORT_CONFIG, REG_EONIG_INTERNAL }, { ONIGERR_MEMORY, REG_ESPACE }, { ONIGERR_MATCH_STACK_LIMIT_OVER, REG_EONIG_INTERNAL }, { ONIGERR_TYPE_BUG, REG_EONIG_INTERNAL }, { ONIGERR_PARSER_BUG, REG_EONIG_INTERNAL }, { ONIGERR_STACK_BUG, REG_EONIG_INTERNAL }, { ONIGERR_UNDEFINED_BYTECODE, REG_EONIG_INTERNAL }, { ONIGERR_UNEXPECTED_BYTECODE, REG_EONIG_INTERNAL }, { ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED, REG_EONIG_BADARG }, { ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, REG_EONIG_BADARG }, { ONIGERR_FAIL_TO_INITIALIZE, REG_EONIG_INTERNAL }, { ONIGERR_INVALID_ARGUMENT, REG_EONIG_BADARG }, { ONIGERR_END_PATTERN_AT_LEFT_BRACE, REG_EBRACE }, { ONIGERR_END_PATTERN_AT_LEFT_BRACKET, REG_EBRACK }, { ONIGERR_EMPTY_CHAR_CLASS, REG_ECTYPE }, { ONIGERR_PREMATURE_END_OF_CHAR_CLASS, REG_ECTYPE }, { ONIGERR_END_PATTERN_AT_ESCAPE, REG_EESCAPE }, { ONIGERR_END_PATTERN_AT_META, REG_EESCAPE }, { ONIGERR_END_PATTERN_AT_CONTROL, REG_EESCAPE }, { ONIGERR_META_CODE_SYNTAX, REG_BADPAT }, { ONIGERR_CONTROL_CODE_SYNTAX, REG_BADPAT }, { ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE, REG_ECTYPE }, { ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE, REG_ECTYPE }, { ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS, REG_ECTYPE }, { ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED, REG_BADRPT }, { ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID, REG_BADRPT }, { ONIGERR_NESTED_REPEAT_OPERATOR, REG_BADRPT }, { ONIGERR_UNMATCHED_CLOSE_PARENTHESIS, REG_EPAREN }, { ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS, REG_EPAREN }, { ONIGERR_END_PATTERN_IN_GROUP, REG_BADPAT }, { ONIGERR_UNDEFINED_GROUP_OPTION, REG_BADPAT }, { ONIGERR_INVALID_POSIX_BRACKET_TYPE, REG_BADPAT }, { ONIGERR_INVALID_LOOK_BEHIND_PATTERN, REG_BADPAT }, { ONIGERR_INVALID_REPEAT_RANGE_PATTERN, REG_BADPAT }, { ONIGERR_TOO_BIG_NUMBER, REG_BADPAT }, { ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE, REG_BADBR }, { ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE, REG_BADBR }, { ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS, REG_ECTYPE }, { ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE, REG_ECTYPE }, { ONIGERR_TOO_MANY_MULTI_BYTE_RANGES, REG_ECTYPE }, { ONIGERR_TOO_SHORT_MULTI_BYTE_STRING, REG_BADPAT }, { ONIGERR_TOO_BIG_BACKREF_NUMBER, REG_ESUBREG }, { ONIGERR_INVALID_BACKREF, REG_ESUBREG }, { ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED, REG_BADPAT }, { ONIGERR_TOO_BIG_WIDE_CHAR_VALUE, REG_EONIG_BADWC }, { ONIGERR_TOO_LONG_WIDE_CHAR_VALUE, REG_EONIG_BADWC }, { ONIGERR_INVALID_CODE_POINT_VALUE, REG_EONIG_BADWC }, { ONIGERR_EMPTY_GROUP_NAME, REG_BADPAT }, { ONIGERR_INVALID_GROUP_NAME, REG_BADPAT }, { ONIGERR_INVALID_CHAR_IN_GROUP_NAME, REG_BADPAT }, { ONIGERR_UNDEFINED_NAME_REFERENCE, REG_BADPAT }, { ONIGERR_UNDEFINED_GROUP_REFERENCE, REG_BADPAT }, { ONIGERR_MULTIPLEX_DEFINED_NAME, REG_BADPAT }, { ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, REG_BADPAT }, { ONIGERR_NEVER_ENDING_RECURSION, REG_BADPAT }, { ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY, REG_BADPAT }, { ONIGERR_INVALID_CHAR_PROPERTY_NAME, REG_BADPAT }, { ONIGERR_INVALID_IF_ELSE_SYNTAX, REG_BADPAT }, { ONIGERR_INVALID_ABSENT_GROUP_PATTERN, REG_BADPAT }, { ONIGERR_INVALID_ABSENT_GROUP_GENERATOR_PATTERN, REG_BADPAT }, { ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION, REG_EONIG_BADARG }, { ONIGERR_LIBRARY_IS_NOT_INITIALIZED, REG_EONIG_INTERNAL } }; int i; if (code >= 0) return 0; for (i = 0; i < (int )(sizeof(o2p) / sizeof(o2p[0])); i++) { if (code == o2p[i].onig_err) return o2p[i].posix_err; } return REG_EONIG_INTERNAL; /* but, unknown error code */ } extern int regcomp(regex_t* reg, const char* pattern, int posix_options) { int r, len; OnigSyntaxType* syntax = OnigDefaultSyntax; OnigOptionType options; if ((posix_options & REG_EXTENDED) == 0) syntax = ONIG_SYNTAX_POSIX_BASIC; options = syntax->options; if ((posix_options & REG_ICASE) != 0) ONIG_OPTION_ON(options, ONIG_OPTION_IGNORECASE); if ((posix_options & REG_NEWLINE) != 0) { ONIG_OPTION_ON( options, ONIG_OPTION_NEGATE_SINGLELINE); ONIG_OPTION_OFF(options, ONIG_OPTION_SINGLELINE); } reg->comp_options = posix_options; ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len); r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len), options, OnigEncDefaultCharEncoding, syntax, (OnigErrorInfo* )NULL); if (r != ONIG_NORMAL) { return onig2posix_error_code(r); } reg->re_nsub = ONIG_C(reg)->num_mem; return 0; } extern int regexec(regex_t* reg, const char* str, size_t nmatch, regmatch_t pmatch[], int posix_options) { int r, i, len; UChar* end; regmatch_t* pm; OnigOptionType options; options = ONIG_OPTION_POSIX_REGION; if ((posix_options & REG_NOTBOL) != 0) options |= ONIG_OPTION_NOTBOL; if ((posix_options & REG_NOTEOL) != 0) options |= ONIG_OPTION_NOTEOL; if (nmatch == 0 || (reg->comp_options & REG_NOSUB) != 0) { pm = (regmatch_t* )NULL; nmatch = 0; } else if ((int )nmatch < ONIG_C(reg)->num_mem + 1) { pm = (regmatch_t* )xmalloc(sizeof(regmatch_t) * (ONIG_C(reg)->num_mem + 1)); if (pm == NULL) return REG_ESPACE; } else { pm = pmatch; } ENC_STRING_LEN(ONIG_C(reg)->enc, str, len); end = (UChar* )(str + len); r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end, (OnigRegion* )pm, options); if (r >= 0) { r = 0; /* Match */ if (pm != pmatch && pm != NULL) { xmemcpy(pmatch, pm, sizeof(regmatch_t) * nmatch); } } else if (r == ONIG_MISMATCH) { r = REG_NOMATCH; for (i = 0; i < (int )nmatch; i++) pmatch[i].rm_so = pmatch[i].rm_eo = ONIG_REGION_NOTPOS; } else { r = onig2posix_error_code(r); } if (pm != pmatch && pm != NULL) xfree(pm); #if 0 if (reg->re_nsub > nmatch - 1) reg->re_nsub = (nmatch <= 1 ? 0 : nmatch - 1); #endif return r; } extern void regfree(regex_t* reg) { onig_free(ONIG_C(reg)); } extern void reg_set_encoding(int mb_code) { OnigEncoding enc; switch (mb_code) { case REG_POSIX_ENCODING_ASCII: enc = ONIG_ENCODING_ASCII; break; case REG_POSIX_ENCODING_EUC_JP: enc = ONIG_ENCODING_EUC_JP; break; case REG_POSIX_ENCODING_SJIS: enc = ONIG_ENCODING_SJIS; break; case REG_POSIX_ENCODING_UTF8: enc = ONIG_ENCODING_UTF8; break; case REG_POSIX_ENCODING_UTF16_BE: enc = ONIG_ENCODING_UTF16_BE; break; case REG_POSIX_ENCODING_UTF16_LE: enc = ONIG_ENCODING_UTF16_LE; break; default: return ; break; } onig_initialize(0, 0); onig_initialize_encoding(enc); onigenc_set_default_encoding(enc); } extern int reg_name_to_group_numbers(regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums) { return onig_name_to_group_numbers(ONIG_C(reg), name, name_end, nums); } typedef struct { int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*); regex_t* reg; void* arg; } i_wrap; static int i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs, onig_regex_t* reg ARG_UNUSED, void* arg) { i_wrap* warg = (i_wrap* )arg; return (*warg->func)(name, name_end, ng, gs, warg->reg, warg->arg); } extern int reg_foreach_name(regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg) { i_wrap warg; warg.func = func; warg.reg = reg; warg.arg = arg; return onig_foreach_name(ONIG_C(reg), i_wrapper, &warg); } extern int reg_number_of_names(regex_t* reg) { return onig_number_of_names(ONIG_C(reg)); } oniguruma-6.7.0/src/regsyntax.c000066400000000000000000000274201321242335200165130ustar00rootroot00000000000000/********************************************************************** regsyntax.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" OnigSyntaxType OnigSyntaxASIS = { 0 , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE , 0 , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxPosixBasic = { ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_BRACE_INTERVAL ) , 0 , 0 , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxPosixExtended = { ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP | ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT ) , 0 , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC ) , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE ) , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxEmacs = { ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT | ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF | ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS ) , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxGrep = { ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT | ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF | ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF ) , 0 , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC ) , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxGnuRegex = { SYN_GNU_REGEX_OP , 0 , SYN_GNU_REGEX_BV , ONIG_OPTION_NONE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxJava = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT | ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND ) , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; OnigSyntaxType OnigSyntaxPerl = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | ONIG_SYN_OP2_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 | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT ) , SYN_GNU_REGEX_BV , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; /* Perl + named group */ OnigSyntaxType OnigSyntaxPerl_NG = { (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY | ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 | ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_O_BRACE_OCTAL | ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL ) & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END ) , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_QMARK_LPAREN_IF_ELSE | ONIG_SYN_OP2_QMARK_TILDE_ABSENT_GROUP | ONIG_SYN_OP2_ESC_X_Y_GRAPHEME_CLUSTER | ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY | ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT | ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF | ONIG_SYN_OP2_ESC_G_SUBEXP_CALL | ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP | ONIG_SYN_OP2_ESC_CAPITAL_R_GENERAL_NEWLINE | ONIG_SYN_OP2_ESC_CAPITAL_N_O_SUPER_DOT | ONIG_SYN_OP2_QMARK_PERL_SUBEXP_CALL ) , ( SYN_GNU_REGEX_BV | ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP | ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME ) , ONIG_OPTION_SINGLELINE , { (OnigCodePoint )'\\' /* esc */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */ , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */ } }; extern int onig_set_default_syntax(OnigSyntaxType* syntax) { if (IS_NULL(syntax)) syntax = ONIG_SYNTAX_ONIGURUMA; OnigDefaultSyntax = syntax; return 0; } extern void onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from) { *to = *from; } extern void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op) { syntax->op = op; } extern void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2) { syntax->op2 = op2; } extern void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior) { syntax->behavior = behavior; } extern void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options) { syntax->options = options; } extern unsigned int onig_get_syntax_op(OnigSyntaxType* syntax) { return syntax->op; } extern unsigned int onig_get_syntax_op2(OnigSyntaxType* syntax) { return syntax->op2; } extern unsigned int onig_get_syntax_behavior(OnigSyntaxType* syntax) { return syntax->behavior; } extern OnigOptionType onig_get_syntax_options(OnigSyntaxType* syntax) { return syntax->options; } #ifdef USE_VARIABLE_META_CHARS extern int onig_set_meta_char(OnigSyntaxType* enc, unsigned int what, OnigCodePoint code) { switch (what) { case ONIG_META_CHAR_ESCAPE: enc->meta_char_table.esc = code; break; case ONIG_META_CHAR_ANYCHAR: enc->meta_char_table.anychar = code; break; case ONIG_META_CHAR_ANYTIME: enc->meta_char_table.anytime = code; break; case ONIG_META_CHAR_ZERO_OR_ONE_TIME: enc->meta_char_table.zero_or_one_time = code; break; case ONIG_META_CHAR_ONE_OR_MORE_TIME: enc->meta_char_table.one_or_more_time = code; break; case ONIG_META_CHAR_ANYCHAR_ANYTIME: enc->meta_char_table.anychar_anytime = code; break; default: return ONIGERR_INVALID_ARGUMENT; break; } return 0; } #endif /* USE_VARIABLE_META_CHARS */ oniguruma-6.7.0/src/regtrav.c000066400000000000000000000055041321242335200161400ustar00rootroot00000000000000/********************************************************************** regtrav.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2004 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" #ifdef USE_CAPTURE_HISTORY static int capture_tree_traverse(OnigCaptureTreeNode* node, int at, int(*callback_func)(int,int,int,int,int,void*), int level, void* arg) { int r, i; if (node == (OnigCaptureTreeNode* )0) return 0; if ((at & ONIG_TRAVERSE_CALLBACK_AT_FIRST) != 0) { r = (*callback_func)(node->group, node->beg, node->end, level, ONIG_TRAVERSE_CALLBACK_AT_FIRST, arg); if (r != 0) return r; } for (i = 0; i < node->num_childs; i++) { r = capture_tree_traverse(node->childs[i], at, callback_func, level + 1, arg); if (r != 0) return r; } if ((at & ONIG_TRAVERSE_CALLBACK_AT_LAST) != 0) { r = (*callback_func)(node->group, node->beg, node->end, level, ONIG_TRAVERSE_CALLBACK_AT_LAST, arg); if (r != 0) return r; } return 0; } #endif /* USE_CAPTURE_HISTORY */ extern int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg) { #ifdef USE_CAPTURE_HISTORY return capture_tree_traverse(region->history_root, at, callback_func, 0, arg); #else return ONIG_NO_SUPPORT_CONFIG; #endif } oniguruma-6.7.0/src/regversion.c000066400000000000000000000041631321242335200166510ustar00rootroot00000000000000/********************************************************************** regversion.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2008 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "config.h" #include "regint.h" #include extern const char* onig_version(void) { static char s[12]; xsnprintf(s, sizeof(s), "%d.%d.%d", ONIGURUMA_VERSION_MAJOR, ONIGURUMA_VERSION_MINOR, ONIGURUMA_VERSION_TEENY); return s; } extern const char* onig_copyright(void) { static char s[58]; xsnprintf(s, sizeof(s), "Oniguruma %d.%d.%d : Copyright (C) 2002-2016 K.Kosako", ONIGURUMA_VERSION_MAJOR, ONIGURUMA_VERSION_MINOR, ONIGURUMA_VERSION_TEENY); return s; } oniguruma-6.7.0/src/sjis.c000066400000000000000000000207751321242335200154450ustar00rootroot00000000000000/********************************************************************** sjis.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" static const int EncLen_SJIS[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1 }; static const char SJIS_CAN_BE_TRAIL_TABLE[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }; #define SJIS_ISMB_FIRST(byte) (EncLen_SJIS[byte] > 1) #define SJIS_ISMB_TRAIL(byte) SJIS_CAN_BE_TRAIL_TABLE[(byte)] static int mbc_enc_len(const UChar* p) { return EncLen_SJIS[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { while (p < end) { if (*p < 0x80) { p++; } else if (*p < 0xa1) { if (*p == 0xa0 || *p == 0x80) return FALSE; p++; if (p >= end) return FALSE; if (*p < 0x40 || *p > 0xfc || *p == 0x7f) return FALSE; p++; } else if (*p < 0xe0) { p++; } else if (*p < 0xfd) { p++; if (p >= end) return FALSE; if (*p < 0x40 || *p > 0xfc || *p == 0x7f) return FALSE; p++; } else return FALSE; } return TRUE; } static int code_to_mbclen(OnigCodePoint code) { if (code < 256) { if (EncLen_SJIS[(int )code] == 1) return 1; else return 0; } else if (code <= 0xffff) { return 2; } else return ONIGERR_INVALID_CODE_POINT_VALUE; } static OnigCodePoint mbc_to_code(const UChar* p, const UChar* end) { int c, i, len; OnigCodePoint n; len = enclen(ONIG_ENCODING_SJIS, p); c = *p++; n = c; if (len == 1) return n; for (i = 1; i < len; i++) { if (p >= end) break; c = *p++; n <<= 8; n += c; } return n; } static int code_to_mbc(OnigCodePoint code, UChar *buf) { UChar *p = buf; if ((code & 0xff00) != 0) *p++ = (UChar )(((code >> 8) & 0xff)); *p++ = (UChar )(code & 0xff); #if 0 if (enclen(ONIG_ENCODING_SJIS, buf) != (p - buf)) return REGERR_INVALID_CODE_POINT_VALUE; #endif return (int )(p - buf); } static int mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end ARG_UNUSED, UChar* lower) { const UChar* p = *pp; if (ONIGENC_IS_MBC_ASCII(p)) { *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); (*pp)++; return 1; } else { int i; int len = enclen(ONIG_ENCODING_SJIS, p); for (i = 0; i < len; i++) { *lower++ = *p++; } (*pp) += len; return len; /* return byte length of converted char to lower */ } } #if 0 static int is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { return onigenc_mbn_is_mbc_ambiguous(ONIG_ENCODING_SJIS, flag, pp, end); } #endif #if 0 static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (code < 128) 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 FALSE; } #endif static UChar* left_adjust_char_head(const UChar* start, const UChar* s) { const UChar *p; int len; if (s <= start) return (UChar* )s; p = s; if (SJIS_ISMB_TRAIL(*p)) { while (p > start) { if (! SJIS_ISMB_FIRST(*--p)) { p++; break; } } } len = enclen(ONIG_ENCODING_SJIS, p); if (p + len > s) return (UChar* )p; p += len; return (UChar* )(p + ((s - p) & ~1)); } static int is_allowed_reverse_match(const UChar* s, const UChar* end ARG_UNUSED) { const UChar c = *s; return (SJIS_ISMB_TRAIL(c) ? FALSE : TRUE); } static const OnigCodePoint CR_Hiragana[] = { 1, 0x829f, 0x82f1 }; /* CR_Hiragana */ static const OnigCodePoint CR_Katakana[] = { 4, 0x00a6, 0x00af, 0x00b1, 0x00dd, 0x8340, 0x837e, 0x8380, 0x8396, }; /* CR_Katakana */ static const OnigCodePoint* PropertyList[] = { CR_Hiragana, CR_Katakana }; static int property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end) { struct PropertyNameCtype* pc; int len = (int )(end - p); char q[32]; if (len < sizeof(q) - 1) { xmemcpy(q, p, (size_t )len); q[len] = '\0'; pc = euc_jp_lookup_property_name(q, len); if (pc != 0) return pc->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } static int is_code_ctype(OnigCodePoint code, unsigned int ctype) { if (ctype <= ONIGENC_MAX_STD_CTYPE) { if (code < 128) return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype); else { if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) { return (code_to_mbclen(code) > 1 ? TRUE : FALSE); } } } else { ctype -= (ONIGENC_MAX_STD_CTYPE + 1); if (ctype >= (unsigned int )(sizeof(PropertyList)/sizeof(PropertyList[0]))) return ONIGERR_TYPE_BUG; return onig_is_in_code_range((UChar* )PropertyList[ctype], code); } return FALSE; } static int get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]) { if (ctype <= ONIGENC_MAX_STD_CTYPE) { return ONIG_NO_SUPPORT_CONFIG; } else { *sb_out = 0x80; ctype -= (ONIGENC_MAX_STD_CTYPE + 1); if (ctype >= (OnigCtype )(sizeof(PropertyList)/sizeof(PropertyList[0]))) return ONIGERR_TYPE_BUG; *ranges = PropertyList[ctype]; return 0; } } OnigEncodingType OnigEncodingSJIS = { mbc_enc_len, "Shift_JIS", /* name */ 2, /* max byte length */ 1, /* min byte length */ onigenc_is_mbc_newline_0x0a, mbc_to_code, code_to_mbclen, code_to_mbc, mbc_case_fold, onigenc_ascii_apply_all_case_fold, onigenc_ascii_get_case_fold_codes_by_str, property_name_to_ctype, is_code_ctype, get_ctype_code_range, left_adjust_char_head, is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/sjis_prop.c000066400000000000000000000125361321242335200165010ustar00rootroot00000000000000/* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -pt -T -L ANSI-C -N sjis_lookup_property_name --output-file sjis_prop.c sjis_prop.gperf */ /* Computed positions: -k'1,3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif #line 1 "sjis_prop.gperf" #include #include "regenc.h" #define TOTAL_KEYWORDS 16 #define MIN_WORD_LENGTH 4 #define MAX_WORD_LENGTH 8 #define MIN_HASH_VALUE 4 #define MAX_HASH_VALUE 55 /* maximum key range = 52, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static unsigned char asso_values[] = { 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 0, 3, 10, 25, 56, 56, 30, 0, 56, 56, 0, 20, 56, 56, 56, 15, 56, 56, 20, 56, 30, 56, 0, 0, 56, 56, 56, 56, 56, 56, 56, 56, 15, 56, 56, 56, 56, 56, 25, 56, 10, 56, 56, 56, 56, 5, 56, 0, 56, 0, 56, 5, 56, 56, 20, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 }; 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 struct PropertyNameCtype * sjis_lookup_property_name (register const char *str, register unsigned int len) { static struct PropertyNameCtype wordlist[] = { {""}, {""}, {""}, {""}, #line 23 "sjis_prop.gperf" {"Word", 12}, #line 12 "sjis_prop.gperf" {"Alpha", 1}, {""}, {""}, #line 26 "sjis_prop.gperf" {"Hiragana", 15}, {""}, #line 24 "sjis_prop.gperf" {"Alnum", 13}, {""}, {""}, #line 27 "sjis_prop.gperf" {"Katakana", 16}, {""}, #line 25 "sjis_prop.gperf" {"ASCII", 14}, #line 22 "sjis_prop.gperf" {"XDigit", 11}, {""}, {""}, {""}, #line 14 "sjis_prop.gperf" {"Cntrl", 3}, {""}, {""}, #line 13 "sjis_prop.gperf" {"Blank", 2}, {""}, #line 19 "sjis_prop.gperf" {"Punct", 8}, {""}, {""}, {""}, {""}, #line 18 "sjis_prop.gperf" {"Print", 7}, {""}, {""}, {""}, {""}, #line 21 "sjis_prop.gperf" {"Upper", 10}, {""}, {""}, {""}, {""}, #line 20 "sjis_prop.gperf" {"Space", 9}, {""}, {""}, {""}, {""}, #line 17 "sjis_prop.gperf" {"Lower", 6}, {""}, {""}, {""}, {""}, #line 16 "sjis_prop.gperf" {"Graph", 5}, {""}, {""}, {""}, {""}, #line 15 "sjis_prop.gperf" {"Digit", 4} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; if (*str == *s && !strcmp (str + 1, s + 1)) return &wordlist[key]; } } return 0; } oniguruma-6.7.0/src/sjis_prop.gperf000066400000000000000000000004741321242335200173600ustar00rootroot00000000000000%{ #include #include "regenc.h" %} struct PropertyNameCtype { char *name; int ctype; }; %% Alpha, 1 Blank, 2 Cntrl, 3 Digit, 4 Graph, 5 Lower, 6 Print, 7 Punct, 8 Space, 9 Upper, 10 XDigit, 11 Word, 12 Alnum, 13 ASCII, 14 Hiragana, 15 Katakana, 16 oniguruma-6.7.0/src/st.c000066400000000000000000000261171321242335200151170ustar00rootroot00000000000000/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ /* static char sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */ #include #include #include #ifdef _WIN32 #include #endif #include "regint.h" #include "st.h" typedef struct st_table_entry st_table_entry; struct st_table_entry { unsigned int hash; st_data_t key; st_data_t record; st_table_entry *next; }; #define ST_DEFAULT_MAX_DENSITY 5 #define ST_DEFAULT_INIT_TABLE_SIZE 11 /* * DEFAULT_MAX_DENSITY is the default for the largest we allow the * average number of items per bin before increasing the number of * bins * * DEFAULT_INIT_TABLE_SIZE is the default for the number of bins * allocated initially * */ static int numcmp(long, long); static int numhash(long); static struct st_hash_type type_numhash = { numcmp, numhash, }; /* extern int strcmp(const char *, const char *); */ static int strhash(const char *); static struct st_hash_type type_strhash = { strcmp, strhash, }; static void rehash(st_table *); #define alloc(type) (type*)xmalloc((unsigned)sizeof(type)) #define Calloc(n,s) (char*)xcalloc((n),(s)) #define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)((x),(y)) == 0) #define do_hash(key,table) (unsigned int)(*(table)->type->hash)((key)) #define do_hash_bin(key,table) (do_hash(key, table)%(table)->num_bins) /* * MINSIZE is the minimum size of a dictionary. */ #define MINSIZE 8 /* Table of prime numbers 2^n+a, 2<=n<=30. */ static const long primes[] = { 8 + 3, 16 + 3, 32 + 5, 64 + 3, 128 + 3, 256 + 27, 512 + 9, 1024 + 9, 2048 + 5, 4096 + 3, 8192 + 27, 16384 + 43, 32768 + 3, 65536 + 45, 131072 + 29, 262144 + 3, 524288 + 21, 1048576 + 7, 2097152 + 17, 4194304 + 15, 8388608 + 9, 16777216 + 43, 33554432 + 35, 67108864 + 15, 134217728 + 29, 268435456 + 3, 536870912 + 11, 1073741824 + 85, 0 }; static int new_size(size) int size; { int i; #if 0 for (i=3; i<31; i++) { if ((1< size) return 1< size) return primes[i]; } /* Ran out of polynomials */ return -1; /* should raise exception */ #endif } #ifdef HASH_LOG static int collision = 0; static int init_st = 0; static void stat_col(void) { FILE *f = fopen("/tmp/col", "w"); if (f == 0) return ; (void) fprintf(f, "collision: %d\n", collision); (void) fclose(f); } #endif st_table* st_init_table_with_size(type, size) struct st_hash_type *type; int size; { st_table *tbl; #ifdef HASH_LOG if (init_st == 0) { init_st = 1; atexit(stat_col); } #endif size = new_size(size); /* round up to prime number */ tbl = alloc(st_table); if (tbl == 0) return 0; tbl->type = type; tbl->num_entries = 0; tbl->num_bins = size; tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*)); if (tbl->bins == 0) { free(tbl); return 0; } return tbl; } st_table* st_init_table(type) struct st_hash_type *type; { return st_init_table_with_size(type, 0); } st_table* st_init_numtable(void) { return st_init_table(&type_numhash); } st_table* st_init_numtable_with_size(size) int size; { return st_init_table_with_size(&type_numhash, size); } st_table* st_init_strtable(void) { return st_init_table(&type_strhash); } st_table* st_init_strtable_with_size(size) int size; { return st_init_table_with_size(&type_strhash, size); } void st_free_table(table) st_table *table; { register st_table_entry *ptr, *next; int i; for(i = 0; i < table->num_bins; i++) { ptr = table->bins[i]; while (ptr != 0) { next = ptr->next; free(ptr); ptr = next; } } free(table->bins); free(table); } #define PTR_NOT_EQUAL(table, ptr, hash_val, key) \ ((ptr) != 0 && (ptr->hash != (hash_val) || !EQUAL((table), (key), (ptr)->key))) #ifdef HASH_LOG #define COLLISION collision++ #else #define COLLISION #endif #define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\ bin_pos = hash_val%(table)->num_bins;\ ptr = (table)->bins[bin_pos];\ if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\ COLLISION;\ while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\ ptr = ptr->next;\ }\ ptr = ptr->next;\ }\ } while (0) int st_lookup(table, key, value) st_table *table; register st_data_t key; st_data_t *value; { unsigned int hash_val, bin_pos; register st_table_entry *ptr; hash_val = do_hash(key, table); FIND_ENTRY(table, ptr, hash_val, bin_pos); if (ptr == 0) { return 0; } else { if (value != 0) *value = ptr->record; return 1; } } #define ADD_DIRECT(table, key, value, hash_val, bin_pos, ret) \ do {\ st_table_entry *entry;\ if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\ rehash(table);\ bin_pos = hash_val % table->num_bins;\ }\ entry = alloc(st_table_entry);\ if (IS_NULL(entry)) return ret;\ entry->hash = hash_val;\ entry->key = key;\ entry->record = value;\ entry->next = table->bins[bin_pos];\ table->bins[bin_pos] = entry;\ table->num_entries++;\ } while (0) int st_insert(table, key, value) register st_table *table; register st_data_t key; st_data_t value; { unsigned int hash_val, bin_pos; register st_table_entry *ptr; hash_val = do_hash(key, table); FIND_ENTRY(table, ptr, hash_val, bin_pos); if (ptr == 0) { ADD_DIRECT(table, key, value, hash_val, bin_pos, ONIGERR_MEMORY); return 0; } else { ptr->record = value; return 1; } } void st_add_direct(table, key, value) st_table *table; st_data_t key; st_data_t value; { unsigned int hash_val, bin_pos; hash_val = do_hash(key, table); bin_pos = hash_val % table->num_bins; ADD_DIRECT(table, key, value, hash_val, bin_pos,); } static void rehash(table) register st_table *table; { register st_table_entry *ptr, *next, **new_bins; int i, old_num_bins = table->num_bins, new_num_bins; unsigned int hash_val; new_num_bins = new_size(old_num_bins+1); new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*)); if (new_bins == 0) { return ; } for(i = 0; i < old_num_bins; i++) { ptr = table->bins[i]; while (ptr != 0) { next = ptr->next; hash_val = ptr->hash % new_num_bins; ptr->next = new_bins[hash_val]; new_bins[hash_val] = ptr; ptr = next; } } free(table->bins); table->num_bins = new_num_bins; table->bins = new_bins; } st_table* st_copy(old_table) st_table *old_table; { st_table *new_table; st_table_entry *ptr, *entry; int i, num_bins = old_table->num_bins; new_table = alloc(st_table); if (new_table == 0) { return 0; } *new_table = *old_table; new_table->bins = (st_table_entry**) Calloc((unsigned)num_bins, sizeof(st_table_entry*)); if (new_table->bins == 0) { free(new_table); return 0; } for(i = 0; i < num_bins; i++) { new_table->bins[i] = 0; ptr = old_table->bins[i]; while (ptr != 0) { entry = alloc(st_table_entry); if (entry == 0) { free(new_table->bins); free(new_table); return 0; } *entry = *ptr; entry->next = new_table->bins[i]; new_table->bins[i] = entry; ptr = ptr->next; } } return new_table; } int st_delete(table, key, value) register st_table *table; register st_data_t *key; st_data_t *value; { unsigned int hash_val; st_table_entry *tmp; register st_table_entry *ptr; hash_val = do_hash_bin(*key, table); ptr = table->bins[hash_val]; if (ptr == 0) { if (value != 0) *value = 0; return 0; } if (EQUAL(table, *key, ptr->key)) { table->bins[hash_val] = ptr->next; table->num_entries--; if (value != 0) *value = ptr->record; *key = ptr->key; free(ptr); return 1; } for(; ptr->next != 0; ptr = ptr->next) { if (EQUAL(table, ptr->next->key, *key)) { tmp = ptr->next; ptr->next = ptr->next->next; table->num_entries--; if (value != 0) *value = tmp->record; *key = tmp->key; free(tmp); return 1; } } return 0; } int st_delete_safe(table, key, value, never) register st_table *table; register st_data_t *key; st_data_t *value; st_data_t never; { unsigned int hash_val; register st_table_entry *ptr; hash_val = do_hash_bin(*key, table); ptr = table->bins[hash_val]; if (ptr == 0) { if (value != 0) *value = 0; return 0; } for(; ptr != 0; ptr = ptr->next) { if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) { table->num_entries--; *key = ptr->key; if (value != 0) *value = ptr->record; ptr->key = ptr->record = never; return 1; } } return 0; } static int #if defined(__GNUC__) delete_never(st_data_t key __attribute__ ((unused)), st_data_t value, st_data_t never) #else delete_never(key, value, never) st_data_t key, value, never; #endif { if (value == never) return ST_DELETE; return ST_CONTINUE; } void st_cleanup_safe(table, never) st_table *table; st_data_t never; { int num_entries = table->num_entries; st_foreach(table, delete_never, never); table->num_entries = num_entries; } int st_foreach(table, func, arg) st_table *table; int (*func)(); st_data_t arg; { st_table_entry *ptr, *last, *tmp; enum st_retval retval; int i; for(i = 0; i < table->num_bins; i++) { last = 0; for(ptr = table->bins[i]; ptr != 0;) { retval = (*func)(ptr->key, ptr->record, arg); switch (retval) { case ST_CHECK: /* check if hash is modified during iteration */ tmp = 0; if (i < table->num_bins) { for (tmp = table->bins[i]; tmp; tmp=tmp->next) { if (tmp == ptr) break; } } if (!tmp) { /* call func with error notice */ return 1; } /* fall through */ case ST_CONTINUE: last = ptr; ptr = ptr->next; break; case ST_STOP: return 0; case ST_DELETE: tmp = ptr; if (last == 0) { table->bins[i] = ptr->next; } else { last->next = ptr->next; } ptr = ptr->next; free(tmp); table->num_entries--; } } } return 0; } static int strhash(string) register const char *string; { register int c; #ifdef HASH_ELFHASH register unsigned int h = 0, g; while ((c = *string++) != '\0') { h = ( h << 4 ) + c; if ( g = h & 0xF0000000 ) h ^= g >> 24; h &= ~g; } return h; #elif HASH_PERL register int val = 0; while ((c = *string++) != '\0') { val += c; val += (val << 10); val ^= (val >> 6); } val += (val << 3); val ^= (val >> 11); return val + (val << 15); #else register int val = 0; while ((c = *string++) != '\0') { val = val*997 + c; } return val + (val>>5); #endif } static int numcmp(x, y) long x, y; { return x != y; } static int numhash(n) long n; { return n; } oniguruma-6.7.0/src/st.h000066400000000000000000000032761321242335200151250ustar00rootroot00000000000000/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */ /* @(#) st.h 5.1 89/12/14 */ #ifndef ST_INCLUDED #define ST_INCLUDED #ifdef _WIN32 # include typedef ULONG_PTR st_data_t; #else typedef unsigned long st_data_t; #endif #define ST_DATA_T_DEFINED typedef struct st_table st_table; struct st_hash_type { int (*compare)(); int (*hash)(); }; struct st_table { struct st_hash_type *type; int num_bins; int num_entries; struct st_table_entry **bins; }; #define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0) enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK}; #ifndef _ # define _(args) args #endif #ifndef ANYARGS # ifdef __cplusplus # define ANYARGS ... # else # define ANYARGS # endif #endif st_table *st_init_table _((struct st_hash_type *)); st_table *st_init_table_with_size _((struct st_hash_type *, int)); st_table *st_init_numtable _((void)); st_table *st_init_numtable_with_size _((int)); st_table *st_init_strtable _((void)); st_table *st_init_strtable_with_size _((int)); int st_delete _((st_table *, st_data_t *, st_data_t *)); int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t)); int st_insert _((st_table *, st_data_t, st_data_t)); int st_lookup _((st_table *, st_data_t, st_data_t *)); int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t)); void st_add_direct _((st_table *, st_data_t, st_data_t)); void st_free_table _((st_table *)); void st_cleanup_safe _((st_table *, st_data_t)); st_table *st_copy _((st_table *)); #define ST_NUMCMP ((int (*)()) 0) #define ST_NUMHASH ((int (*)()) -2) #define st_numcmp ST_NUMCMP #define st_numhash ST_NUMHASH #endif /* ST_INCLUDED */ oniguruma-6.7.0/src/unicode-7.0/000077500000000000000000000000001321242335200162465ustar00rootroot00000000000000oniguruma-6.7.0/src/unicode-7.0/unicode_fold1_key.c000066400000000000000000000416571321242335200220120ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf */ /* Computed positions: -k'1-3' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 1055 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 6 #define MAX_HASH_VALUE 1196 /* maximum key range = 1191, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { 7, 5, 9, 57, 1, 12, 682, 788, 676, 782, 665, 294, 885, 291, 884, 288, 879, 275, 873, 776, 659, 772, 379, 745, 45, 272, 871, 266, 865, 157, 2, 14, 815, 198, 697, 675, 28, 628, 479, 615, 471, 545, 463, 551, 0, 303, 650, 524, 454, 504, 648, 1054, 637, 1051, 262, 1045, 450, 1042, 440, 1073, 864, 1035, 860, 849, 845, 1032, 632, 621, 252, 429, 242, 614, 232, 838, 221, 835, 210, 1028, 139, 1022, 127, 832, 115, 1017, 97, 1011, 87, 963, 200, 949, 77, 178, 190, 0, 417, 1038, 602, 724, 117, 634, 44, 1055, 60, 331, 27, 816, 168, 1007, 156, 997, 144, 1001, 408, 387, 396, 991, 280, 763, 272, 981, 294, 769, 321, 532, 497, 535, 587, 560, 488, 964, 82, 125, 584, 474, 371, 213, 555, 457, 813, 667, 64, 448, 810, 508, 990, 1197, 954, 1197, 798, 519, 793, 1197, 787, 1197, 986, 1197, 188, 431, 374, 1197, 319, 288, 166, 1197, 763, 1197, 16, 8, 747, 1197, 981, 397, 945, 1197, 108, 313, 740, 306, 942, 180, 494, 298, 939, 469, 927, 390, 923, 279, 734, 267, 920, 257, 727, 234, 721, 304, 917, 264, 914, 1023, 909, 329, 908, 1014, 181, 555, 869, 212, 623, 202, 905, 887, 552, 813, 718, 688, 581, 664, 536, 439, 533, 418, 530, 384, 364, 255, 357, 221, 311, 281, 349, 229, 339, 143, 520, 114, 513, 268, 710, 63, 703, 48, 696, 240, 604, 97, 505, 155, 897, 152, 36, 24, 850, 105, 18, 100, 749, 15, 430 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } int unicode_fold1_key(OnigCodePoint codes[]) { static const int wordlist[] = { -1, -1, -1, -1, -1, -1, 2970, 2286, 1013, 1511, 1451, 1490, 231, 171, 210, 2724, 559, 502, 541, 1319, 1259, 1298, 1824, 2376, 1118, 1680, 1250, 1812, 387, 165, 493, 2877, 156, 1827, 2304, 1037, 1602, 1499, 147, 315, 219, 12, 2811, 643, 1244, 1806, 1343, 1307, 1956, 1866, 2658, 2301, 1031, 1595, 1481, 2478, 309, 201, 0, 2805, 637, 532, 120, 1331, 1289, 1944, 1860, 2652, 1034, 1599, 2475, 2337, 312, 1656, 6, 2808, 640, 114, 1821, 1337, 688, 1950, 884, 2655, 2277, 1004, 1580, 2685, 881, 294, 1076, 1641, 2790, 622, 2265, 992, 1574, 2835, 1938, 288, 2637, 1421, 2784, 613, 2259, 986, 1571, 2964, 1932, 285, 2631, 132, 2781, 607, 159, 2388, 1130, 1692, 1929, 153, 2628, 3084, 2253, 980, 1568, 1028, 1592, 282, 102, 306, 2778, 601, 2802, 3078, 2247, 974, 1565, 354, 2625, 279, 2649, 676, 2775, 598, 1424, 3072, 2241, 968, 1562, 2154, 2622, 276, 1046, 1611, 2772, 595, 324, 96, 27, 2820, 655, 875, 2619, 1361, 1043, 1608, 144, 2667, 321, 138, 3183, 2817, 652, 2370, 1112, 1355, 1040, 1605, 2148, 2664, 318, 2871, 18, 2814, 2955, 2280, 1007, 1349, 2433, 1962, 1737, 2661, 399, 421, 2943, 2361, 1103, 2283, 1010, 1583, 375, 2007, 297, 2862, 2937, 2793, 625, 2271, 998, 1577, 1181, 2709, 291, 2640, 429, 2787, 3066, 2235, 962, 1559, 1178, 1935, 2931, 2634, 425, 2769, 592, 3060, 2229, 956, 1556, 3114, 1436, 2616, 2925, 77, 2766, 589, 3054, 2223, 950, 1553, 2019, 89, 2613, 817, 2919, 2763, 3048, 2217, 944, 1550, 3129, 1926, 126, 2610, 2130, 2760, 3042, 2211, 938, 1547, 3123, 1920, 2142, 2607, 833, 2757, 3000, 2169, 896, 1526, 1163, 1914, 243, 2604, 827, 2736, 574, 2319, 1058, 1623, 108, 1896, 336, 2958, 52, 2076, 1055, 1620, 2124, 1385, 333, 1974, 46, 83, 664, 2961, 783, 1379, 381, 1968, 1061, 1626, 703, 3177, 339, 2949, 59, 2973, 670, 2487, 2565, 1391, 3093, 1980, 2136, 2913, 2469, 1211, 1773, 776, 2490, 459, 2568, 80, 2367, 1109, 2907, 1064, 1629, 769, 2022, 342, 2868, 65, 709, 1169, 2583, 2901, 1397, 417, 1986, 759, 706, 9, 2133, 1217, 1779, 2895, 1340, 465, 1953, 92, 3087, 2547, 2472, 1214, 1776, 2889, 2025, 462, 739, 86, 2466, 1208, 1770, 2484, 789, 456, 730, 2463, 1205, 1767, 2145, 851, 453, 724, 2328, 3105, 1647, 2364, 1106, 357, 2139, 712, 2841, 679, 1478, 2865, 1433, 198, 2127, 807, 2676, 529, 450, 2712, 1286, 2121, 1854, 37, 405, 857, 1052, 1617, 1370, 3180, 330, 393, 40, 2826, 661, 854, 3174, 1373, 1049, 1614, 2079, 2118, 327, 848, 34, 2823, 2289, 1016, 1586, 1367, 845, 300, 447, 2670, 2796, 628, 3171, 3045, 2214, 941, 1256, 1818, 2643, 264, 499, 378, 168, 586, 3012, 2181, 908, 1532, 1917, 444, 249, 2112, 753, 2742, 3006, 2175, 902, 1529, 2982, 1908, 246, 1517, 691, 2739, 237, 2562, 3165, 2730, 565, 1902, 1508, 1325, 2106, 228, 1442, 2040, 2721, 556, 1505, 402, 1316, 225, 1884, 2034, 2718, 553, 1502, 3159, 1313, 222, 1878, 1430, 2715, 550, 1073, 1638, 1310, 2046, 1872, 2397, 1139, 1701, 673, 1067, 1632, 1415, 2574, 2004, 2985, 71, 2481, 1238, 1800, 2010, 1403, 483, 1992, 135, 366, 1223, 1785, 2850, 697, 471, 2052, 105, 1220, 1782, 2979, 369, 468, 746, 99, 700, 2892, 2460, 1202, 1764, 2457, 1199, 1761, 2454, 1196, 1758, 68, 345, 2157, 74, 2829, 1400, 721, 1989, 1406, 2151, 1995, 2967, 736, 2445, 1187, 1749, 2331, 1175, 1650, 2115, 1881, 360, 2109, 878, 2844, 2103, 348, 2016, 1439, 2832, 2556, 863, 2679, 1412, 3168, 2001, 2550, 3162, 860, 2526, 3156, 2085, 2451, 1193, 1755, 2325, 1079, 1644, 842, 1070, 1635, 839, 2520, 2838, 836, 2514, 3138, 1427, 2508, 3117, 1409, 2673, 1998, 2295, 1022, 1589, 1235, 1797, 303, -1, 2097, 2799, 129, 821, 3051, 2220, 947, -1, 718, 2646, 267, 3039, 2208, 935, 2439, 3150, 1743, 261, -1, 1923, 1875, 583, 3036, 2205, 932, 1544, 1911, 2994, 2163, 890, 1523, 2754, 580, 1869, 634, 715, 1448, 571, 2988, 1941, 2976, 1520, 1890, 1514, 240, 1445, 234, 2733, 568, 2727, 562, 1328, 1475, 1322, -1, 195, -1, 3126, 1460, 526, 441, 180, 1283, 363, 1848, 511, -1, 685, 1268, 1457, 1842, 830, 177, 2541, -1, 1454, 508, 2070, 174, 1265, 1863, 1836, 505, 2100, 438, 1262, 2058, 1830, 1232, 1794, 1496, -1, 480, 216, 123, 1229, 1791, 547, 3153, 477, 1304, 117, 1226, 1788, -1, 2898, 474, 2094, 111, 2448, 1190, 1752, 2418, 1160, 1722, 2298, 1025, 414, 2415, 1157, 1719, 2055, 3147, 411, 2061, 2409, 1151, 1713, -1, -1, 408, 2391, 1133, 1695, -1, -1, 396, 2091, 2379, 1121, 1683, 1253, 1815, 390, 872, 496, 2880, 162, 2601, 2067, 1857, 869, 3144, -1, 2373, 1115, 1677, 2598, 866, 384, 2322, 49, 2874, 667, -1, 2595, 1382, 62, 1971, 786, -1, -1, 1394, 2589, 1983, 780, 2064, 1851, 2355, 1097, 1674, 1845, 764, 372, 2352, 1094, 1671, 1839, 727, 2349, 1091, 1668, 2856, 1833, 2703, -1, -1, 2853, -1, -1, 2700, 2340, 1082, 1659, 2334, 2697, 1653, 2307, 1493, 435, 694, 213, 2847, 682, 15, 544, 646, 2688, 1301, 1346, 2682, 1959, 3081, 2250, 977, 3063, 2232, 959, 3057, 2226, 953, 273, 2088, -1, 270, 3030, 2199, 926, 1541, 3027, 2196, 923, 1247, 1809, 2751, 255, 490, 3141, 150, 577, 3024, 2193, 920, 1538, 3018, 2187, 914, 1535, 1487, 2748, 2436, 207, 1740, 2745, 1484, 538, 1472, 204, 1295, 192, -1, 535, 1469, 523, 1292, 189, 1280, 1466, 1463, 520, 186, 183, 1277, 432, 517, 514, -1, 1274, 1271, 1241, 1803, -1, 2013, 487, -1, 141, 2442, 1184, 1746, 2430, 2427, 1734, 1731, 3120, -1, 2424, 2082, 1728, 2421, 2592, 1725, 2412, 1154, 1716, 2406, 1148, 1710, 824, 2403, 1145, 1707, 3135, 2586, 2928, -1, -1, 2910, -1, -1, 2904, 2400, 1142, 1704, 2394, 1136, 1698, 2385, 1127, 1689, 3132, 2274, 1001, 3108, 3102, 2886, 2346, 1088, 1665, 3096, 619, -1, 3090, 2037, 2535, 2268, 995, 811, 804, 2049, 2505, 351, 2694, 797, 616, -1, 793, -1, 1418, 773, 2580, 2499, 756, 2382, 1124, 1686, 749, 2493, 2358, 1100, 56, 2883, 2343, 1085, 1662, 1388, 2859, 1977, 743, 2313, 43, 733, 2577, 2316, 2706, 1376, 24, 1965, 2691, 2310, 31, 1358, 658, 2262, 989, 1364, 21, 1172, 649, 2256, 983, 1352, 610, 3075, 2244, 971, 1166, -1, 604, 3069, 2238, 965, 2028, 3033, 2202, 929, 3021, 2190, 917, 258, 2292, 1019, 252, 3009, 2178, 905, 3003, 2172, 899, 631, 2544, 2952, 2997, 2166, 893, 2991, 2160, 887, 1905, 3111, -1, 1899, -1, -1, 3, 2946, -1, 1893, 3099, 1334, 1887, 1947, -1, 814, 3015, 2184, 911, 2538, -1, -1, -1, 2532, 801, -1, -1, -1, -1, 2502, -1, -1, -1, -1, -1, 2496, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2940, -1, -1, -1, -1, -1, 2934, 2571, -1, -1, -1, 2922, -1, -1, -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2073, -1, -1, -1, -1, -1, 2559, -1, -1, -1, -1, -1, 2553, -1, 2529, -1, -1, 2043, -1, -1, 2523, -1, -1, -1, -1, 2517, 2511, 2031 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode-7.0/unicode_fold2_key.c000066400000000000000000000061311321242335200217770ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf */ /* Computed positions: -k'3,6' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 59 #define MIN_WORD_LENGTH 6 #define MAX_WORD_LENGTH 6 #define MIN_HASH_VALUE 0 #define MAX_HASH_VALUE 58 /* maximum key range = 59, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned char asso_values[] = { 58, 57, 56, 55, 54, 53, 52, 16, 50, 59, 15, 59, 25, 59, 59, 59, 59, 59, 59, 3, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 48, 47, 46, 45, 44, 43, 42, 59, 59, 59, 59, 59, 59, 59, 59, 59, 21, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 2, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 40, 20, 39, 38, 37, 14, 5, 36, 20, 7, 25, 34, 29, 32, 16, 59, 31, 59, 59, 2, 1, 59, 25, 15, 59, 14, 59, 59, 28, 59, 2, 59, 59, 59, 11, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 24, 59, 22, 59, 59, 11, 59, 59, 59, 59, 59, 7, 59, 0, 59, 59, 16, 59, 1, 59, 59, 16, 59, 59, 59, 15, 59, 59, 59, 6, 59, 59, 59, 59, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; } int unicode_fold2_key(OnigCodePoint codes[]) { static const int wordlist[] = { 101, 253, 76, 29, 24, 239, 96, 71, 92, 67, 4, 62, 8, 58, 234, 109, 164, 88, 84, 80, 214, 0, 54, 261, 50, 105, 121, 125, 257, 42, 38, 249, 46, 117, 12, 113, 244, 229, 224, 219, 209, 16, 204, 199, 194, 189, 184, 179, 174, 169, 20, 34, 159, 154, 149, 144, 139, 134, 129 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode-7.0/unicode_fold3_key.c000066400000000000000000000052051321242335200220010ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf */ /* Computed positions: -k'3,6,9' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 14 #define MIN_WORD_LENGTH 9 #define MAX_WORD_LENGTH 9 #define MIN_HASH_VALUE 0 #define MAX_HASH_VALUE 13 /* maximum key range = 14, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned char asso_values[] = { 6, 3, 14, 14, 14, 14, 14, 14, 1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 4, 14, 14, 5, 14, 14, 4, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 10, 14, 14, 14, 14, 14, 9, 14, 1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 8, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; } int unicode_fold3_key(OnigCodePoint codes[]) { static const int wordlist[] = { 62, 47, 31, 57, 41, 25, 52, 36, 20, 67, 15, 10, 5, 0 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds3 + index, 3) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode-7.0/unicode_fold_data.c000066400000000000000000002467471321242335200220610ustar00rootroot00000000000000/* This file was generated by make_unicode_fold_data.py. */ #include "regenc.h" #define CASEFOLD_VERSION 7_0_0 OnigCodePoint OnigUnicodeFolds1[] = { /* 0*/ 0x0061, 1, 0x0041, /* LATIN CAPITAL LETTER A */ /* 3*/ 0x0062, 1, 0x0042, /* LATIN CAPITAL LETTER B */ /* 6*/ 0x0063, 1, 0x0043, /* LATIN CAPITAL LETTER C */ /* 9*/ 0x0064, 1, 0x0044, /* LATIN CAPITAL LETTER D */ /* 12*/ 0x0065, 1, 0x0045, /* LATIN CAPITAL LETTER E */ /* 15*/ 0x0066, 1, 0x0046, /* LATIN CAPITAL LETTER F */ /* 18*/ 0x0067, 1, 0x0047, /* LATIN CAPITAL LETTER G */ /* 21*/ 0x0068, 1, 0x0048, /* LATIN CAPITAL LETTER H */ /* 24*/ 0x006a, 1, 0x004a, /* LATIN CAPITAL LETTER J */ /* 27*/ 0x006b, 2, 0x004b, 0x212a, /* LATIN CAPITAL LETTER K */ /* 31*/ 0x006c, 1, 0x004c, /* LATIN CAPITAL LETTER L */ /* 34*/ 0x006d, 1, 0x004d, /* LATIN CAPITAL LETTER M */ /* 37*/ 0x006e, 1, 0x004e, /* LATIN CAPITAL LETTER N */ /* 40*/ 0x006f, 1, 0x004f, /* LATIN CAPITAL LETTER O */ /* 43*/ 0x0070, 1, 0x0050, /* LATIN CAPITAL LETTER P */ /* 46*/ 0x0071, 1, 0x0051, /* LATIN CAPITAL LETTER Q */ /* 49*/ 0x0072, 1, 0x0052, /* LATIN CAPITAL LETTER R */ /* 52*/ 0x0073, 2, 0x0053, 0x017f, /* LATIN CAPITAL LETTER S */ /* 56*/ 0x0074, 1, 0x0054, /* LATIN CAPITAL LETTER T */ /* 59*/ 0x0075, 1, 0x0055, /* LATIN CAPITAL LETTER U */ /* 62*/ 0x0076, 1, 0x0056, /* LATIN CAPITAL LETTER V */ /* 65*/ 0x0077, 1, 0x0057, /* LATIN CAPITAL LETTER W */ /* 68*/ 0x0078, 1, 0x0058, /* LATIN CAPITAL LETTER X */ /* 71*/ 0x0079, 1, 0x0059, /* LATIN CAPITAL LETTER Y */ /* 74*/ 0x007a, 1, 0x005a, /* LATIN CAPITAL LETTER Z */ /* 77*/ 0x00e0, 1, 0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */ /* 80*/ 0x00e1, 1, 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */ /* 83*/ 0x00e2, 1, 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /* 86*/ 0x00e3, 1, 0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */ /* 89*/ 0x00e4, 1, 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAER.. */ /* 92*/ 0x00e5, 2, 0x00c5, 0x212b, /* LATIN CAPITAL LETTER A WITH RING .. */ /* 96*/ 0x00e6, 1, 0x00c6, /* LATIN CAPITAL LETTER AE */ /* 99*/ 0x00e7, 1, 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ /* 102*/ 0x00e8, 1, 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */ /* 105*/ 0x00e9, 1, 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */ /* 108*/ 0x00ea, 1, 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /* 111*/ 0x00eb, 1, 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAER.. */ /* 114*/ 0x00ec, 1, 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */ /* 117*/ 0x00ed, 1, 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */ /* 120*/ 0x00ee, 1, 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCU.. */ /* 123*/ 0x00ef, 1, 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAER.. */ /* 126*/ 0x00f0, 1, 0x00d0, /* LATIN CAPITAL LETTER ETH */ /* 129*/ 0x00f1, 1, 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */ /* 132*/ 0x00f2, 1, 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */ /* 135*/ 0x00f3, 1, 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */ /* 138*/ 0x00f4, 1, 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /* 141*/ 0x00f5, 1, 0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */ /* 144*/ 0x00f6, 1, 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAER.. */ /* 147*/ 0x00f8, 1, 0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */ /* 150*/ 0x00f9, 1, 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */ /* 153*/ 0x00fa, 1, 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */ /* 156*/ 0x00fb, 1, 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ /* 159*/ 0x00fc, 1, 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 162*/ 0x00fd, 1, 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */ /* 165*/ 0x00fe, 1, 0x00de, /* LATIN CAPITAL LETTER THORN */ /* 168*/ 0x00ff, 1, 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAER.. */ /* 171*/ 0x0101, 1, 0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */ /* 174*/ 0x0103, 1, 0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */ /* 177*/ 0x0105, 1, 0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */ /* 180*/ 0x0107, 1, 0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */ /* 183*/ 0x0109, 1, 0x0108, /* LATIN CAPITAL LETTER C WITH CIRCU.. */ /* 186*/ 0x010b, 1, 0x010a, /* LATIN CAPITAL LETTER C WITH DOT A.. */ /* 189*/ 0x010d, 1, 0x010c, /* LATIN CAPITAL LETTER C WITH CARON */ /* 192*/ 0x010f, 1, 0x010e, /* LATIN CAPITAL LETTER D WITH CARON */ /* 195*/ 0x0111, 1, 0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */ /* 198*/ 0x0113, 1, 0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */ /* 201*/ 0x0115, 1, 0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */ /* 204*/ 0x0117, 1, 0x0116, /* LATIN CAPITAL LETTER E WITH DOT A.. */ /* 207*/ 0x0119, 1, 0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */ /* 210*/ 0x011b, 1, 0x011a, /* LATIN CAPITAL LETTER E WITH CARON */ /* 213*/ 0x011d, 1, 0x011c, /* LATIN CAPITAL LETTER G WITH CIRCU.. */ /* 216*/ 0x011f, 1, 0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */ /* 219*/ 0x0121, 1, 0x0120, /* LATIN CAPITAL LETTER G WITH DOT A.. */ /* 222*/ 0x0123, 1, 0x0122, /* LATIN CAPITAL LETTER G WITH CEDIL.. */ /* 225*/ 0x0125, 1, 0x0124, /* LATIN CAPITAL LETTER H WITH CIRCU.. */ /* 228*/ 0x0127, 1, 0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */ /* 231*/ 0x0129, 1, 0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */ /* 234*/ 0x012b, 1, 0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */ /* 237*/ 0x012d, 1, 0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */ /* 240*/ 0x012f, 1, 0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */ /* 243*/ 0x0133, 1, 0x0132, /* LATIN CAPITAL LIGATURE IJ */ /* 246*/ 0x0135, 1, 0x0134, /* LATIN CAPITAL LETTER J WITH CIRCU.. */ /* 249*/ 0x0137, 1, 0x0136, /* LATIN CAPITAL LETTER K WITH CEDIL.. */ /* 252*/ 0x013a, 1, 0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */ /* 255*/ 0x013c, 1, 0x013b, /* LATIN CAPITAL LETTER L WITH CEDIL.. */ /* 258*/ 0x013e, 1, 0x013d, /* LATIN CAPITAL LETTER L WITH CARON */ /* 261*/ 0x0140, 1, 0x013f, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ /* 264*/ 0x0142, 1, 0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */ /* 267*/ 0x0144, 1, 0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */ /* 270*/ 0x0146, 1, 0x0145, /* LATIN CAPITAL LETTER N WITH CEDIL.. */ /* 273*/ 0x0148, 1, 0x0147, /* LATIN CAPITAL LETTER N WITH CARON */ /* 276*/ 0x014b, 1, 0x014a, /* LATIN CAPITAL LETTER ENG */ /* 279*/ 0x014d, 1, 0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */ /* 282*/ 0x014f, 1, 0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */ /* 285*/ 0x0151, 1, 0x0150, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ /* 288*/ 0x0153, 1, 0x0152, /* LATIN CAPITAL LIGATURE OE */ /* 291*/ 0x0155, 1, 0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */ /* 294*/ 0x0157, 1, 0x0156, /* LATIN CAPITAL LETTER R WITH CEDIL.. */ /* 297*/ 0x0159, 1, 0x0158, /* LATIN CAPITAL LETTER R WITH CARON */ /* 300*/ 0x015b, 1, 0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */ /* 303*/ 0x015d, 1, 0x015c, /* LATIN CAPITAL LETTER S WITH CIRCU.. */ /* 306*/ 0x015f, 1, 0x015e, /* LATIN CAPITAL LETTER S WITH CEDIL.. */ /* 309*/ 0x0161, 1, 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ /* 312*/ 0x0163, 1, 0x0162, /* LATIN CAPITAL LETTER T WITH CEDIL.. */ /* 315*/ 0x0165, 1, 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */ /* 318*/ 0x0167, 1, 0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */ /* 321*/ 0x0169, 1, 0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */ /* 324*/ 0x016b, 1, 0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */ /* 327*/ 0x016d, 1, 0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */ /* 330*/ 0x016f, 1, 0x016e, /* LATIN CAPITAL LETTER U WITH RING .. */ /* 333*/ 0x0171, 1, 0x0170, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ /* 336*/ 0x0173, 1, 0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */ /* 339*/ 0x0175, 1, 0x0174, /* LATIN CAPITAL LETTER W WITH CIRCU.. */ /* 342*/ 0x0177, 1, 0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCU.. */ /* 345*/ 0x017a, 1, 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */ /* 348*/ 0x017c, 1, 0x017b, /* LATIN CAPITAL LETTER Z WITH DOT A.. */ /* 351*/ 0x017e, 1, 0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */ /* 354*/ 0x0180, 1, 0x0243, /* LATIN CAPITAL LETTER B WITH STROKE */ /* 357*/ 0x0183, 1, 0x0182, /* LATIN CAPITAL LETTER B WITH TOPBAR */ /* 360*/ 0x0185, 1, 0x0184, /* LATIN CAPITAL LETTER TONE SIX */ /* 363*/ 0x0188, 1, 0x0187, /* LATIN CAPITAL LETTER C WITH HOOK */ /* 366*/ 0x018c, 1, 0x018b, /* LATIN CAPITAL LETTER D WITH TOPBAR */ /* 369*/ 0x0192, 1, 0x0191, /* LATIN CAPITAL LETTER F WITH HOOK */ /* 372*/ 0x0195, 1, 0x01f6, /* LATIN CAPITAL LETTER HWAIR */ /* 375*/ 0x0199, 1, 0x0198, /* LATIN CAPITAL LETTER K WITH HOOK */ /* 378*/ 0x019a, 1, 0x023d, /* LATIN CAPITAL LETTER L WITH BAR */ /* 381*/ 0x019e, 1, 0x0220, /* LATIN CAPITAL LETTER N WITH LONG .. */ /* 384*/ 0x01a1, 1, 0x01a0, /* LATIN CAPITAL LETTER O WITH HORN */ /* 387*/ 0x01a3, 1, 0x01a2, /* LATIN CAPITAL LETTER OI */ /* 390*/ 0x01a5, 1, 0x01a4, /* LATIN CAPITAL LETTER P WITH HOOK */ /* 393*/ 0x01a8, 1, 0x01a7, /* LATIN CAPITAL LETTER TONE TWO */ /* 396*/ 0x01ad, 1, 0x01ac, /* LATIN CAPITAL LETTER T WITH HOOK */ /* 399*/ 0x01b0, 1, 0x01af, /* LATIN CAPITAL LETTER U WITH HORN */ /* 402*/ 0x01b4, 1, 0x01b3, /* LATIN CAPITAL LETTER Y WITH HOOK */ /* 405*/ 0x01b6, 1, 0x01b5, /* LATIN CAPITAL LETTER Z WITH STROKE */ /* 408*/ 0x01b9, 1, 0x01b8, /* LATIN CAPITAL LETTER EZH REVERSED */ /* 411*/ 0x01bd, 1, 0x01bc, /* LATIN CAPITAL LETTER TONE FIVE */ /* 414*/ 0x01bf, 1, 0x01f7, /* LATIN CAPITAL LETTER WYNN */ /* 417*/ 0x01c6, 2, 0x01c4, 0x01c5, /* LATIN CAPITAL LETTER DZ WITH CARON */ /* 421*/ 0x01c9, 2, 0x01c7, 0x01c8, /* LATIN CAPITAL LETTER LJ */ /* 425*/ 0x01cc, 2, 0x01ca, 0x01cb, /* LATIN CAPITAL LETTER NJ */ /* 429*/ 0x01ce, 1, 0x01cd, /* LATIN CAPITAL LETTER A WITH CARON */ /* 432*/ 0x01d0, 1, 0x01cf, /* LATIN CAPITAL LETTER I WITH CARON */ /* 435*/ 0x01d2, 1, 0x01d1, /* LATIN CAPITAL LETTER O WITH CARON */ /* 438*/ 0x01d4, 1, 0x01d3, /* LATIN CAPITAL LETTER U WITH CARON */ /* 441*/ 0x01d6, 1, 0x01d5, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 444*/ 0x01d8, 1, 0x01d7, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 447*/ 0x01da, 1, 0x01d9, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 450*/ 0x01dc, 1, 0x01db, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 453*/ 0x01dd, 1, 0x018e, /* LATIN CAPITAL LETTER REVERSED E */ /* 456*/ 0x01df, 1, 0x01de, /* LATIN CAPITAL LETTER A WITH DIAER.. */ /* 459*/ 0x01e1, 1, 0x01e0, /* LATIN CAPITAL LETTER A WITH DOT A.. */ /* 462*/ 0x01e3, 1, 0x01e2, /* LATIN CAPITAL LETTER AE WITH MACR.. */ /* 465*/ 0x01e5, 1, 0x01e4, /* LATIN CAPITAL LETTER G WITH STROKE */ /* 468*/ 0x01e7, 1, 0x01e6, /* LATIN CAPITAL LETTER G WITH CARON */ /* 471*/ 0x01e9, 1, 0x01e8, /* LATIN CAPITAL LETTER K WITH CARON */ /* 474*/ 0x01eb, 1, 0x01ea, /* LATIN CAPITAL LETTER O WITH OGONEK */ /* 477*/ 0x01ed, 1, 0x01ec, /* LATIN CAPITAL LETTER O WITH OGONE.. */ /* 480*/ 0x01ef, 1, 0x01ee, /* LATIN CAPITAL LETTER EZH WITH CAR.. */ /* 483*/ 0x01f3, 2, 0x01f1, 0x01f2, /* LATIN CAPITAL LETTER DZ */ /* 487*/ 0x01f5, 1, 0x01f4, /* LATIN CAPITAL LETTER G WITH ACUTE */ /* 490*/ 0x01f9, 1, 0x01f8, /* LATIN CAPITAL LETTER N WITH GRAVE */ /* 493*/ 0x01fb, 1, 0x01fa, /* LATIN CAPITAL LETTER A WITH RING .. */ /* 496*/ 0x01fd, 1, 0x01fc, /* LATIN CAPITAL LETTER AE WITH ACUTE */ /* 499*/ 0x01ff, 1, 0x01fe, /* LATIN CAPITAL LETTER O WITH STROK.. */ /* 502*/ 0x0201, 1, 0x0200, /* LATIN CAPITAL LETTER A WITH DOUBL.. */ /* 505*/ 0x0203, 1, 0x0202, /* LATIN CAPITAL LETTER A WITH INVER.. */ /* 508*/ 0x0205, 1, 0x0204, /* LATIN CAPITAL LETTER E WITH DOUBL.. */ /* 511*/ 0x0207, 1, 0x0206, /* LATIN CAPITAL LETTER E WITH INVER.. */ /* 514*/ 0x0209, 1, 0x0208, /* LATIN CAPITAL LETTER I WITH DOUBL.. */ /* 517*/ 0x020b, 1, 0x020a, /* LATIN CAPITAL LETTER I WITH INVER.. */ /* 520*/ 0x020d, 1, 0x020c, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ /* 523*/ 0x020f, 1, 0x020e, /* LATIN CAPITAL LETTER O WITH INVER.. */ /* 526*/ 0x0211, 1, 0x0210, /* LATIN CAPITAL LETTER R WITH DOUBL.. */ /* 529*/ 0x0213, 1, 0x0212, /* LATIN CAPITAL LETTER R WITH INVER.. */ /* 532*/ 0x0215, 1, 0x0214, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ /* 535*/ 0x0217, 1, 0x0216, /* LATIN CAPITAL LETTER U WITH INVER.. */ /* 538*/ 0x0219, 1, 0x0218, /* LATIN CAPITAL LETTER S WITH COMMA.. */ /* 541*/ 0x021b, 1, 0x021a, /* LATIN CAPITAL LETTER T WITH COMMA.. */ /* 544*/ 0x021d, 1, 0x021c, /* LATIN CAPITAL LETTER YOGH */ /* 547*/ 0x021f, 1, 0x021e, /* LATIN CAPITAL LETTER H WITH CARON */ /* 550*/ 0x0223, 1, 0x0222, /* LATIN CAPITAL LETTER OU */ /* 553*/ 0x0225, 1, 0x0224, /* LATIN CAPITAL LETTER Z WITH HOOK */ /* 556*/ 0x0227, 1, 0x0226, /* LATIN CAPITAL LETTER A WITH DOT A.. */ /* 559*/ 0x0229, 1, 0x0228, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ /* 562*/ 0x022b, 1, 0x022a, /* LATIN CAPITAL LETTER O WITH DIAER.. */ /* 565*/ 0x022d, 1, 0x022c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /* 568*/ 0x022f, 1, 0x022e, /* LATIN CAPITAL LETTER O WITH DOT A.. */ /* 571*/ 0x0231, 1, 0x0230, /* LATIN CAPITAL LETTER O WITH DOT A.. */ /* 574*/ 0x0233, 1, 0x0232, /* LATIN CAPITAL LETTER Y WITH MACRON */ /* 577*/ 0x023c, 1, 0x023b, /* LATIN CAPITAL LETTER C WITH STROKE */ /* 580*/ 0x023f, 1, 0x2c7e, /* LATIN CAPITAL LETTER S WITH SWASH.. */ /* 583*/ 0x0240, 1, 0x2c7f, /* LATIN CAPITAL LETTER Z WITH SWASH.. */ /* 586*/ 0x0242, 1, 0x0241, /* LATIN CAPITAL LETTER GLOTTAL STOP */ /* 589*/ 0x0247, 1, 0x0246, /* LATIN CAPITAL LETTER E WITH STROKE */ /* 592*/ 0x0249, 1, 0x0248, /* LATIN CAPITAL LETTER J WITH STROKE */ /* 595*/ 0x024b, 1, 0x024a, /* LATIN CAPITAL LETTER SMALL Q WITH.. */ /* 598*/ 0x024d, 1, 0x024c, /* LATIN CAPITAL LETTER R WITH STROKE */ /* 601*/ 0x024f, 1, 0x024e, /* LATIN CAPITAL LETTER Y WITH STROKE */ /* 604*/ 0x0250, 1, 0x2c6f, /* LATIN CAPITAL LETTER TURNED A */ /* 607*/ 0x0251, 1, 0x2c6d, /* LATIN CAPITAL LETTER ALPHA */ /* 610*/ 0x0252, 1, 0x2c70, /* LATIN CAPITAL LETTER TURNED ALPHA */ /* 613*/ 0x0253, 1, 0x0181, /* LATIN CAPITAL LETTER B WITH HOOK */ /* 616*/ 0x0254, 1, 0x0186, /* LATIN CAPITAL LETTER OPEN O */ /* 619*/ 0x0256, 1, 0x0189, /* LATIN CAPITAL LETTER AFRICAN D */ /* 622*/ 0x0257, 1, 0x018a, /* LATIN CAPITAL LETTER D WITH HOOK */ /* 625*/ 0x0259, 1, 0x018f, /* LATIN CAPITAL LETTER SCHWA */ /* 628*/ 0x025b, 1, 0x0190, /* LATIN CAPITAL LETTER OPEN E */ /* 631*/ 0x025c, 1, 0xa7ab, /* LATIN CAPITAL LETTER REVERSED OPE.. */ /* 634*/ 0x0260, 1, 0x0193, /* LATIN CAPITAL LETTER G WITH HOOK */ /* 637*/ 0x0261, 1, 0xa7ac, /* LATIN CAPITAL LETTER SCRIPT G */ /* 640*/ 0x0263, 1, 0x0194, /* LATIN CAPITAL LETTER GAMMA */ /* 643*/ 0x0265, 1, 0xa78d, /* LATIN CAPITAL LETTER TURNED H */ /* 646*/ 0x0266, 1, 0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */ /* 649*/ 0x0268, 1, 0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */ /* 652*/ 0x0269, 1, 0x0196, /* LATIN CAPITAL LETTER IOTA */ /* 655*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ /* 658*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */ /* 661*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */ /* 664*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */ /* 667*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */ /* 670*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */ /* 673*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */ /* 676*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */ /* 679*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */ /* 682*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */ /* 685*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */ /* 688*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */ /* 691*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */ /* 694*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */ /* 697*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */ /* 700*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */ /* 703*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */ /* 706*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */ /* 709*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ /* 712*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */ /* 715*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */ /* 718*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */ /* 721*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */ /* 724*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */ /* 727*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /* 730*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */ /* 733*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */ /* 736*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */ /* 739*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */ /* 743*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */ /* 746*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */ /* 749*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */ /* 753*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */ /* 756*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */ /* 759*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */ /* 764*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */ /* 769*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */ /* 773*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */ /* 776*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */ /* 780*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */ /* 783*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */ /* 786*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */ /* 789*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */ /* 793*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */ /* 797*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */ /* 801*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */ /* 804*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ /* 807*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */ /* 811*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */ /* 814*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */ /* 817*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */ /* 821*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */ /* 824*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /* 827*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /* 830*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /* 833*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */ /* 836*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */ /* 839*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */ /* 842*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */ /* 845*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */ /* 848*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */ /* 851*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */ /* 854*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */ /* 857*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */ /* 860*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */ /* 863*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */ /* 866*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */ /* 869*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */ /* 872*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */ /* 875*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ /* 878*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */ /* 881*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */ /* 884*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */ /* 887*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */ /* 890*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */ /* 893*/ 0x0432, 1, 0x0412, /* CYRILLIC CAPITAL LETTER VE */ /* 896*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ /* 899*/ 0x0434, 1, 0x0414, /* CYRILLIC CAPITAL LETTER DE */ /* 902*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */ /* 905*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ /* 908*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ /* 911*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */ /* 914*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ /* 917*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */ /* 920*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */ /* 923*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */ /* 926*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */ /* 929*/ 0x043e, 1, 0x041e, /* CYRILLIC CAPITAL LETTER O */ /* 932*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */ /* 935*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */ /* 938*/ 0x0441, 1, 0x0421, /* CYRILLIC CAPITAL LETTER ES */ /* 941*/ 0x0442, 1, 0x0422, /* CYRILLIC CAPITAL LETTER TE */ /* 944*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */ /* 947*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */ /* 950*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */ /* 953*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ /* 956*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ /* 959*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ /* 962*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ /* 965*/ 0x044a, 1, 0x042a, /* CYRILLIC CAPITAL LETTER HARD SIGN */ /* 968*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ /* 971*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ /* 974*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */ /* 977*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */ /* 980*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */ /* 983*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */ /* 986*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */ /* 989*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ /* 992*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ /* 995*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */ /* 998*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ /*1001*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */ /*1004*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */ /*1007*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */ /*1010*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ /*1013*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ /*1016*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ /*1019*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ /*1022*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */ /*1025*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ /*1028*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ /*1031*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */ /*1034*/ 0x0463, 1, 0x0462, /* CYRILLIC CAPITAL LETTER YAT */ /*1037*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ /*1040*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ /*1043*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*1046*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */ /*1049*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*1052*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */ /*1055*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */ /*1058*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */ /*1061*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */ /*1064*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */ /*1067*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */ /*1070*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */ /*1073*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */ /*1076*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */ /*1079*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */ /*1082*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */ /*1085*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */ /*1088*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */ /*1091*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1094*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1097*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1100*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1103*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ /*1106*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */ /*1109*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */ /*1112*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */ /*1115*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ /*1118*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */ /*1121*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */ /*1124*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */ /*1127*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1130*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */ /*1133*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */ /*1136*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ /*1139*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */ /*1142*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */ /*1145*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */ /*1148*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1151*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1154*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */ /*1157*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1160*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1163*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1166*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */ /*1169*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */ /*1172*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */ /*1175*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */ /*1178*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */ /*1181*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */ /*1184*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */ /*1187*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */ /*1190*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */ /*1193*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */ /*1196*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */ /*1199*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */ /*1202*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */ /*1205*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1208*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ /*1211*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1214*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */ /*1217*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */ /*1220*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */ /*1223*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */ /*1226*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */ /*1229*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */ /*1232*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */ /*1235*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */ /*1238*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */ /*1241*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1244*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1247*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ /*1250*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1253*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */ /*1256*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */ /*1259*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */ /*1262*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */ /*1265*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ /*1268*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ /*1271*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */ /*1274*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */ /*1277*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */ /*1280*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */ /*1283*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*1286*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */ /*1289*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */ /*1292*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */ /*1295*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */ /*1298*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */ /*1301*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */ /*1304*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */ /*1307*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */ /*1310*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */ /*1313*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */ /*1316*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */ /*1319*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */ /*1322*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */ /*1325*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */ /*1328*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */ /*1331*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */ /*1334*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */ /*1337*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */ /*1340*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */ /*1343*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */ /*1346*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */ /*1349*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */ /*1352*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */ /*1355*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */ /*1358*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */ /*1361*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */ /*1364*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */ /*1367*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */ /*1370*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */ /*1373*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */ /*1376*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */ /*1379*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */ /*1382*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */ /*1385*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */ /*1388*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */ /*1391*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */ /*1394*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */ /*1397*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */ /*1400*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */ /*1403*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */ /*1406*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */ /*1409*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */ /*1412*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */ /*1415*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */ /*1418*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */ /*1421*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */ /*1424*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */ /*1427*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */ /*1430*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */ /*1433*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */ /*1436*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */ /*1439*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */ /*1442*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */ /*1445*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */ /*1448*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */ /*1451*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */ /*1454*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */ /*1457*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */ /*1460*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */ /*1463*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ /*1466*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */ /*1469*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */ /*1472*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */ /*1475*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */ /*1478*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */ /*1481*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */ /*1484*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */ /*1487*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1490*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */ /*1493*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ /*1496*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */ /*1499*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */ /*1502*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */ /*1505*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */ /*1508*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */ /*1511*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */ /*1514*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */ /*1517*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */ /*1520*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */ /*1523*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */ /*1526*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */ /*1529*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */ /*1532*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */ /*1535*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */ /*1538*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */ /*1541*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */ /*1544*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */ /*1547*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */ /*1550*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */ /*1553*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */ /*1556*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */ /*1559*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */ /*1562*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */ /*1565*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /*1568*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /*1571*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */ /*1574*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */ /*1577*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */ /*1580*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */ /*1583*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */ /*1586*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */ /*1589*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */ /*1592*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */ /*1595*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */ /*1599*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */ /*1602*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */ /*1605*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */ /*1608*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */ /*1611*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */ /*1614*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */ /*1617*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */ /*1620*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */ /*1623*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /*1626*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */ /*1629*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ /*1632*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */ /*1635*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */ /*1638*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */ /*1641*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */ /*1644*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */ /*1647*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */ /*1650*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */ /*1653*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */ /*1656*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */ /*1659*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */ /*1662*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */ /*1665*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */ /*1668*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */ /*1671*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */ /*1674*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */ /*1677*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */ /*1680*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */ /*1683*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1686*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1689*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1692*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1695*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1698*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1701*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1704*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1707*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1710*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1713*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */ /*1716*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */ /*1719*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */ /*1722*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1725*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1728*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1731*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1734*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1737*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */ /*1740*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */ /*1743*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */ /*1746*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */ /*1749*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*1752*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*1755*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*1758*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*1761*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*1764*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*1767*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*1770*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*1773*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*1776*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*1779*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */ /*1782*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */ /*1785*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*1788*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*1791*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*1794*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*1797*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*1800*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */ /*1803*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */ /*1806*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */ /*1809*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */ /*1812*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ /*1815*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ /*1818*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */ /*1821*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*1824*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*1827*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*1830*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*1833*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*1836*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*1839*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*1842*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*1845*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1848*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1851*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1854*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1857*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1860*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1863*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*1866*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*1869*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*1872*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*1875*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*1878*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*1881*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*1884*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*1887*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*1890*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*1893*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*1896*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*1899*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*1902*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*1905*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*1908*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*1911*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1914*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1917*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1920*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1923*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1926*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1929*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*1932*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*1935*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*1938*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*1941*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*1944*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*1947*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*1950*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*1953*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*1956*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*1959*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*1962*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*1965*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ /*1968*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */ /*1971*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1974*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*1977*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */ /*1980*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */ /*1983*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */ /*1986*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */ /*1989*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1992*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*1995*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*1998*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2001*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */ /*2004*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */ /*2007*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ /*2010*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */ /*2013*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */ /*2016*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */ /*2019*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2022*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2025*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */ /*2028*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */ /*2031*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */ /*2034*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */ /*2037*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */ /*2040*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */ /*2043*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */ /*2046*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */ /*2049*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */ /*2052*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */ /*2055*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */ /*2058*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */ /*2061*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */ /*2064*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */ /*2067*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */ /*2070*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */ /*2073*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */ /*2076*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */ /*2079*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */ /*2082*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */ /*2085*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */ /*2088*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */ /*2091*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */ /*2094*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */ /*2097*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */ /*2100*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */ /*2103*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */ /*2106*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */ /*2109*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */ /*2112*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */ /*2115*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */ /*2118*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */ /*2121*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */ /*2124*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */ /*2127*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */ /*2130*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */ /*2133*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */ /*2136*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */ /*2139*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */ /*2142*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */ /*2145*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */ /*2148*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */ /*2151*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */ /*2154*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */ /*2157*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */ /*2160*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */ /*2163*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */ /*2166*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */ /*2169*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */ /*2172*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */ /*2175*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */ /*2178*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */ /*2181*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */ /*2184*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */ /*2187*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */ /*2190*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */ /*2193*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */ /*2196*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */ /*2199*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */ /*2202*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */ /*2205*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */ /*2208*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */ /*2211*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */ /*2214*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */ /*2217*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */ /*2220*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */ /*2223*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */ /*2226*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */ /*2229*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */ /*2232*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */ /*2235*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */ /*2238*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */ /*2241*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */ /*2244*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */ /*2247*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */ /*2250*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */ /*2253*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */ /*2256*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */ /*2259*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */ /*2262*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */ /*2265*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */ /*2268*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ /*2271*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ /*2274*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */ /*2277*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ /*2280*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */ /*2283*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ /*2286*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */ /*2289*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */ /*2292*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */ /*2295*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */ /*2298*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */ /*2301*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */ /*2304*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */ /*2307*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */ /*2310*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */ /*2313*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */ /*2316*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */ /*2319*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */ /*2322*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */ /*2325*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */ /*2328*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */ /*2331*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */ /*2334*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */ /*2337*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */ /*2340*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */ /*2343*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */ /*2346*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */ /*2349*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */ /*2352*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */ /*2355*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */ /*2358*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */ /*2361*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */ /*2364*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */ /*2367*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */ /*2370*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */ /*2373*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */ /*2376*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */ /*2379*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */ /*2382*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */ /*2385*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */ /*2388*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */ /*2391*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */ /*2394*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */ /*2397*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */ /*2400*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */ /*2403*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2406*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2409*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */ /*2412*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */ /*2415*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2418*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2421*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */ /*2424*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */ /*2427*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2430*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2433*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */ /*2436*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */ /*2439*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2442*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2445*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */ /*2448*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2451*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2454*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2457*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2460*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2463*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2466*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2469*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2472*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2475*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2478*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2481*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */ /*2484*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */ /*2487*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */ /*2490*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */ /*2493*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */ /*2496*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */ /*2499*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */ /*2502*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */ /*2505*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */ /*2508*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */ /*2511*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */ /*2514*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */ /*2517*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */ /*2520*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */ /*2523*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */ /*2526*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */ /*2529*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */ /*2532*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */ /*2535*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */ /*2538*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */ /*2541*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */ /*2544*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */ /*2547*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */ /*2550*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */ /*2553*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */ /*2556*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */ /*2559*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */ /*2562*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */ /*2565*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */ /*2568*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */ /*2571*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */ /*2574*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */ /*2577*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */ /*2580*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */ /*2583*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */ /*2586*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */ /*2589*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */ /*2592*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */ /*2595*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */ /*2598*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */ /*2601*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */ /*2604*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */ /*2607*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */ /*2610*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2613*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */ /*2616*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */ /*2619*/ 0xa64b, 1, 0xa64a, /* CYRILLIC CAPITAL LETTER MONOGRAPH.. */ /*2622*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */ /*2625*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */ /*2628*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ /*2631*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*2634*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2637*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */ /*2640*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */ /*2643*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */ /*2646*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*2649*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */ /*2652*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2655*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */ /*2658*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */ /*2661*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */ /*2664*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */ /*2667*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */ /*2670*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */ /*2673*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */ /*2676*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */ /*2679*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */ /*2682*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */ /*2685*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */ /*2688*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */ /*2691*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */ /*2694*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */ /*2697*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */ /*2700*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */ /*2703*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */ /*2706*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */ /*2709*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */ /*2712*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */ /*2715*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ /*2718*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ /*2721*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */ /*2724*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */ /*2727*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */ /*2730*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */ /*2733*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */ /*2736*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */ /*2739*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */ /*2742*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */ /*2745*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */ /*2748*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */ /*2751*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */ /*2754*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */ /*2757*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */ /*2760*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */ /*2763*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */ /*2766*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */ /*2769*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */ /*2772*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */ /*2775*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */ /*2778*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */ /*2781*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */ /*2784*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */ /*2787*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */ /*2790*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */ /*2793*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */ /*2796*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */ /*2799*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */ /*2802*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */ /*2805*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */ /*2808*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */ /*2811*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */ /*2814*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */ /*2817*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */ /*2820*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */ /*2823*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */ /*2826*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */ /*2829*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */ /*2832*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */ /*2835*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */ /*2838*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */ /*2841*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */ /*2844*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */ /*2847*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */ /*2850*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */ /*2853*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */ /*2856*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */ /*2859*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */ /*2862*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */ /*2865*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */ /*2868*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */ /*2871*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */ /*2874*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */ /*2877*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */ /*2880*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */ /*2883*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */ /*2886*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */ /*2889*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ /*2892*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ /*2895*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ /*2898*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ /*2901*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ /*2904*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ /*2907*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ /*2910*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ /*2913*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ /*2916*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ /*2919*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ /*2922*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ /*2925*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ /*2928*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ /*2931*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ /*2934*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ /*2937*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ /*2940*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ /*2943*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ /*2946*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ /*2949*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ /*2952*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ /*2955*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ /*2958*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ /*2961*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ /*2964*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ /*2967*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ /*2970*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ /*2973*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ /*2976*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ /*2979*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ /*2982*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ /*2985*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ /*2988*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ /*2991*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ /*2994*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ /*2997*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ /*3000*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ /*3003*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ /*3006*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ /*3009*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ /*3012*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ /*3015*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ /*3018*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ /*3021*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ /*3024*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ /*3027*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ /*3030*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ /*3033*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ /*3036*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ /*3039*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ /*3042*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ /*3045*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ /*3048*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ /*3051*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ /*3054*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ /*3057*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ /*3060*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ /*3063*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ /*3066*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ /*3069*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ /*3072*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ /*3075*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ /*3078*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ /*3081*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ /*3084*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ /*3087*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ /*3090*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ /*3093*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ /*3096*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ /*3099*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ /*3102*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ /*3105*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ /*3108*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ /*3111*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ /*3114*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ /*3117*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ /*3120*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ /*3123*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ /*3126*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ /*3129*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ /*3132*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ /*3135*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ /*3138*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ /*3141*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ /*3144*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ /*3147*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ /*3150*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ /*3153*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ /*3156*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ /*3159*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ /*3162*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ /*3165*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ /*3168*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ /*3171*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ /*3174*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ /*3177*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ /*3180*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ #define FOLDS1_NORMAL_END_INDEX 3183 /* ----- LOCALE ----- */ /*3183*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ #define FOLDS1_END_INDEX 3186 }; OnigCodePoint OnigUnicodeFolds2[] = { /* LATIN SMALL LETTER A WITH RIGHT HALF RING */ /* 0*/ 0x0061, 0x02be, 1, 0x1e9a, /* LATIN SMALL LIGATURE FF */ /* 4*/ 0x0066, 0x0066, 1, 0xfb00, /* LATIN SMALL LIGATURE FI */ /* 8*/ 0x0066, 0x0069, 1, 0xfb01, /* LATIN SMALL LIGATURE FL */ /* 12*/ 0x0066, 0x006c, 1, 0xfb02, /* LATIN SMALL LETTER H WITH LINE BELOW */ /* 16*/ 0x0068, 0x0331, 1, 0x1e96, /* LATIN SMALL LETTER J WITH CARON */ /* 20*/ 0x006a, 0x030c, 1, 0x01f0, /* LATIN SMALL LETTER SHARP S */ /* 24*/ 0x0073, 0x0073, 2, 0x00df, 0x1e9e, /* LATIN SMALL LIGATURE LONG S T */ /* 29*/ 0x0073, 0x0074, 2, 0xfb05, 0xfb06, /* LATIN SMALL LETTER T WITH DIAERESIS */ /* 34*/ 0x0074, 0x0308, 1, 0x1e97, /* LATIN SMALL LETTER W WITH RING ABOVE */ /* 38*/ 0x0077, 0x030a, 1, 0x1e98, /* LATIN SMALL LETTER Y WITH RING ABOVE */ /* 42*/ 0x0079, 0x030a, 1, 0x1e99, /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ /* 46*/ 0x02bc, 0x006e, 1, 0x0149, /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */ /* 50*/ 0x03ac, 0x03b9, 1, 0x1fb4, /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */ /* 54*/ 0x03ae, 0x03b9, 1, 0x1fc4, /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */ /* 58*/ 0x03b1, 0x0342, 1, 0x1fb6, /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */ /* 62*/ 0x03b1, 0x03b9, 2, 0x1fb3, 0x1fbc, /* GREEK SMALL LETTER ETA WITH PERISPOMENI */ /* 67*/ 0x03b7, 0x0342, 1, 0x1fc6, /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */ /* 71*/ 0x03b7, 0x03b9, 2, 0x1fc3, 0x1fcc, /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */ /* 76*/ 0x03b9, 0x0342, 1, 0x1fd6, /* GREEK SMALL LETTER RHO WITH PSILI */ /* 80*/ 0x03c1, 0x0313, 1, 0x1fe4, /* GREEK SMALL LETTER UPSILON WITH PSILI */ /* 84*/ 0x03c5, 0x0313, 1, 0x1f50, /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */ /* 88*/ 0x03c5, 0x0342, 1, 0x1fe6, /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */ /* 92*/ 0x03c9, 0x0342, 1, 0x1ff6, /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */ /* 96*/ 0x03c9, 0x03b9, 2, 0x1ff3, 0x1ffc, /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */ /* 101*/ 0x03ce, 0x03b9, 1, 0x1ff4, /* ARMENIAN SMALL LIGATURE ECH YIWN */ /* 105*/ 0x0565, 0x0582, 1, 0x0587, /* ARMENIAN SMALL LIGATURE MEN ECH */ /* 109*/ 0x0574, 0x0565, 1, 0xfb14, /* ARMENIAN SMALL LIGATURE MEN INI */ /* 113*/ 0x0574, 0x056b, 1, 0xfb15, /* ARMENIAN SMALL LIGATURE MEN XEH */ /* 117*/ 0x0574, 0x056d, 1, 0xfb17, /* ARMENIAN SMALL LIGATURE MEN NOW */ /* 121*/ 0x0574, 0x0576, 1, 0xfb13, /* ARMENIAN SMALL LIGATURE VEW NOW */ /* 125*/ 0x057e, 0x0576, 1, 0xfb16, /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */ /* 129*/ 0x1f00, 0x03b9, 2, 0x1f80, 0x1f88, /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */ /* 134*/ 0x1f01, 0x03b9, 2, 0x1f81, 0x1f89, /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 139*/ 0x1f02, 0x03b9, 2, 0x1f82, 0x1f8a, /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 144*/ 0x1f03, 0x03b9, 2, 0x1f83, 0x1f8b, /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 149*/ 0x1f04, 0x03b9, 2, 0x1f84, 0x1f8c, /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 154*/ 0x1f05, 0x03b9, 2, 0x1f85, 0x1f8d, /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 159*/ 0x1f06, 0x03b9, 2, 0x1f86, 0x1f8e, /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 164*/ 0x1f07, 0x03b9, 2, 0x1f87, 0x1f8f, /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */ /* 169*/ 0x1f20, 0x03b9, 2, 0x1f90, 0x1f98, /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */ /* 174*/ 0x1f21, 0x03b9, 2, 0x1f91, 0x1f99, /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 179*/ 0x1f22, 0x03b9, 2, 0x1f92, 0x1f9a, /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 184*/ 0x1f23, 0x03b9, 2, 0x1f93, 0x1f9b, /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 189*/ 0x1f24, 0x03b9, 2, 0x1f94, 0x1f9c, /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 194*/ 0x1f25, 0x03b9, 2, 0x1f95, 0x1f9d, /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 199*/ 0x1f26, 0x03b9, 2, 0x1f96, 0x1f9e, /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 204*/ 0x1f27, 0x03b9, 2, 0x1f97, 0x1f9f, /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */ /* 209*/ 0x1f60, 0x03b9, 2, 0x1fa0, 0x1fa8, /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */ /* 214*/ 0x1f61, 0x03b9, 2, 0x1fa1, 0x1fa9, /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 219*/ 0x1f62, 0x03b9, 2, 0x1fa2, 0x1faa, /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 224*/ 0x1f63, 0x03b9, 2, 0x1fa3, 0x1fab, /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 229*/ 0x1f64, 0x03b9, 2, 0x1fa4, 0x1fac, /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 234*/ 0x1f65, 0x03b9, 2, 0x1fa5, 0x1fad, /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 239*/ 0x1f66, 0x03b9, 2, 0x1fa6, 0x1fae, /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 244*/ 0x1f67, 0x03b9, 2, 0x1fa7, 0x1faf, /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */ /* 249*/ 0x1f70, 0x03b9, 1, 0x1fb2, /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */ /* 253*/ 0x1f74, 0x03b9, 1, 0x1fc2, /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */ /* 257*/ 0x1f7c, 0x03b9, 1, 0x1ff2, #define FOLDS2_NORMAL_END_INDEX 261 /* ----- LOCALE ----- */ /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ /* 261*/ 0x0069, 0x0307, 1, 0x0130, #define FOLDS2_END_INDEX 265 }; OnigCodePoint OnigUnicodeFolds3[] = { /* LATIN SMALL LIGATURE FFI */ /* 0*/ 0x0066, 0x0066, 0x0069, 1, 0xfb03, /* LATIN SMALL LIGATURE FFL */ /* 5*/ 0x0066, 0x0066, 0x006c, 1, 0xfb04, /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 10*/ 0x03b1, 0x0342, 0x03b9, 1, 0x1fb7, /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 15*/ 0x03b7, 0x0342, 0x03b9, 1, 0x1fc7, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */ /* 20*/ 0x03b9, 0x0308, 0x0300, 1, 0x1fd2, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ /* 25*/ 0x03b9, 0x0308, 0x0301, 2, 0x0390, 0x1fd3, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */ /* 31*/ 0x03b9, 0x0308, 0x0342, 1, 0x1fd7, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */ /* 36*/ 0x03c5, 0x0308, 0x0300, 1, 0x1fe2, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ /* 41*/ 0x03c5, 0x0308, 0x0301, 2, 0x03b0, 0x1fe3, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */ /* 47*/ 0x03c5, 0x0308, 0x0342, 1, 0x1fe7, /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */ /* 52*/ 0x03c5, 0x0313, 0x0300, 1, 0x1f52, /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */ /* 57*/ 0x03c5, 0x0313, 0x0301, 1, 0x1f54, /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */ /* 62*/ 0x03c5, 0x0313, 0x0342, 1, 0x1f56, /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 67*/ 0x03c9, 0x0342, 0x03b9, 1, 0x1ff7, #define FOLDS3_NORMAL_END_INDEX 72 /* ----- LOCALE ----- */ #define FOLDS3_END_INDEX 72 }; oniguruma-6.7.0/src/unicode-7.0/unicode_property_data.c000066400000000000000000016256471321242335200230220ustar00rootroot00000000000000/* 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) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif /* Generated by make_unicode_property_data.py. */ /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint CR_NEWLINE[] = { 1, 0x000a, 0x000a, }; /* END of CR_NEWLINE */ /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint CR_Alpha[] = { 600, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x065f, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07ca, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b2, 0x08e4, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, 0x09f0, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a70, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d60, 0x0d63, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b80, 0x1ba9, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa69d, 0xa69f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabea, 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, 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, 0x1037a, 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, 0x10900, 0x10915, 0x10920, 0x10939, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x112b0, 0x112e8, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ static const OnigCodePoint CR_Blank[] = { 8, 0x0009, 0x0009, 0x0020, 0x0020, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Blank */ /* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ static const OnigCodePoint CR_Cntrl[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, }; /* END of CR_Cntrl */ /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint CR_Digit[] = { 50, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0be6, 0x0bef, 0x0c66, 0x0c6f, 0x0ce6, 0x0cef, 0x0d66, 0x0d6f, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f29, 0x1040, 0x1049, 0x1090, 0x1099, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19d9, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0xa620, 0xa629, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x104a0, 0x104a9, 0x11066, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x118e0, 0x118e9, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint CR_Graph[] = { 605, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b2, 0x08e4, 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, 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, 0x0af1, 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, 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, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c78, 0x0c7f, 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, 0x0d60, 0x0d63, 0x0d66, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f4, 0x1400, 0x167f, 0x1681, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x200b, 0x2027, 0x202a, 0x202e, 0x2030, 0x205e, 0x2060, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20bd, 0x20d0, 0x20f0, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa69d, 0xa69f, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fb, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe2d, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c9, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1dd, 0x1d200, 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, 0x1d7ff, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Graph */ /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint CR_Lower[] = { 633, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02b8, 0x02c0, 0x02c1, 0x02e0, 0x02e4, 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, 0x037a, 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, 0x03fc, 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, 0x1d00, 0x1dbf, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2170, 0x217f, 0x2184, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7d, 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, 0x2ce4, 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, 0xa69d, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727, 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa731, 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, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Lower */ /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint CR_Print[] = { 602, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b2, 0x08e4, 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, 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, 0x0af1, 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, 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, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c78, 0x0c7f, 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, 0x0d60, 0x0d63, 0x0d66, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f4, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027, 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20bd, 0x20d0, 0x20f0, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa69d, 0xa69f, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fb, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe2d, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c9, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1dd, 0x1d200, 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, 0x1d7ff, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Print */ /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint CR_Punct[] = { 155, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005b, 0x005d, 0x005f, 0x005f, 0x007b, 0x007b, 0x007d, 0x007d, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00ab, 0x00ab, 0x00b6, 0x00b7, 0x00bb, 0x00bb, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x058a, 0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f3a, 0x0f3d, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2010, 0x2027, 0x2030, 0x2043, 0x2045, 0x2051, 0x2053, 0x205e, 0x207d, 0x207e, 0x208d, 0x208e, 0x2308, 0x230b, 0x2329, 0x232a, 0x2768, 0x2775, 0x27c5, 0x27c6, 0x27e6, 0x27ef, 0x2983, 0x2998, 0x29d8, 0x29db, 0x29fc, 0x29fd, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e42, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, 0x3030, 0x3030, 0x303d, 0x303d, 0x30a0, 0x30a0, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfd3e, 0xfd3f, 0xfe10, 0xfe19, 0xfe30, 0xfe52, 0xfe54, 0xfe61, 0xfe63, 0xfe63, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff0a, 0xff0c, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3b, 0xff3d, 0xff3f, 0xff3f, 0xff5b, 0xff5b, 0xff5d, 0xff5d, 0xff5f, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c8, 0x111cd, 0x111cd, 0x11238, 0x1123d, 0x114c6, 0x114c6, 0x115c1, 0x115c9, 0x11641, 0x11643, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, }; /* END of CR_Punct */ /* PROPERTY: 'Space': POSIX [[:Space:]] */ static const OnigCodePoint CR_Space[] = { 10, 0x0009, 0x000d, 0x0020, 0x0020, 0x0085, 0x0085, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x2028, 0x2029, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Space */ /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint CR_Upper[] = { 627, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 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, 0xa7b1, 0xff21, 0xff3a, 0x10400, 0x10427, 0x118a0, 0x118bf, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 0x1d7ca, 0x1d7ca, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, }; /* END of CR_Upper */ /* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ static const OnigCodePoint CR_XDigit[] = { 3, 0x0030, 0x0039, 0x0041, 0x0046, 0x0061, 0x0066, }; /* END of CR_XDigit */ /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint CR_Word[] = { 629, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 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, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, 0x0483, 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, 0x08b2, 0x08e4, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x1380, 0x138f, 0x13a0, 0x13f4, 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, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abe, 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, 0x20f0, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2e2f, 0x2e2f, 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, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa672, 0xa674, 0xa67d, 0xa67f, 0xa69d, 0xa69f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c4, 0xa8d0, 0xa8d9, 0xa8e0, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0xfe2d, 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, 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, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11237, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c0, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint CR_Alnum[] = { 630, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x0669, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07c0, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b2, 0x08e4, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0966, 0x096f, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 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, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0be6, 0x0bef, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d60, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f20, 0x0f29, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x1090, 0x1099, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1946, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b50, 0x1b59, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa69d, 0xa69f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa900, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabea, 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, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 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, 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, 0x10900, 0x10915, 0x10920, 0x10939, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x112b0, 0x112e8, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ static const OnigCodePoint CR_ASCII[] = { 1, 0x0000, 0x007f, }; /* END of CR_ASCII */ /* PROPERTY: 'Any': - */ static const OnigCodePoint CR_Any[] = { 1, 0x0000, 0x10ffff, }; /* END of CR_Any */ /* PROPERTY: 'Assigned': - */ static const OnigCodePoint CR_Assigned[] = { 600, 0x0000, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b2, 0x08e4, 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, 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, 0x0af1, 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, 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, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c78, 0x0c7f, 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, 0x0d60, 0x0d63, 0x0d66, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f4, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20bd, 0x20d0, 0x20f0, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa69d, 0xa69f, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fb, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xd800, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe2d, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c9, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1dd, 0x1d200, 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, 0x1d7ff, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Assigned */ /* PROPERTY: 'C': Major Category */ static const OnigCodePoint CR_C[] = { 603, 0x0000, 0x001f, 0x007f, 0x009f, 0x00ad, 0x00ad, 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, 0x0605, 0x061c, 0x061d, 0x06dd, 0x06dd, 0x070e, 0x070f, 0x074b, 0x074c, 0x07b2, 0x07bf, 0x07fb, 0x07ff, 0x082e, 0x082f, 0x083f, 0x083f, 0x085c, 0x085d, 0x085f, 0x089f, 0x08b3, 0x08e3, 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, 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, 0x0c5a, 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, 0x0d5f, 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, 0x13f5, 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, 0x180e, 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, 0x200b, 0x200f, 0x202a, 0x202e, 0x2060, 0x206f, 0x2072, 0x2073, 0x208f, 0x208f, 0x209d, 0x209f, 0x20be, 0x20cf, 0x20f1, 0x20ff, 0x218a, 0x218f, 0x23fb, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, 0x2bba, 0x2bbc, 0x2bc9, 0x2bc9, 0x2bd2, 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, 0x9fcd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa69e, 0xa69e, 0xa6f8, 0xa6ff, 0xa78f, 0xa78f, 0xa7ae, 0xa7af, 0xa7b2, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, 0xa8da, 0xa8df, 0xa8fc, 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, 0xab60, 0xab63, 0xab66, 0xabbf, 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, 0xfe2e, 0xfe2f, 0xfe53, 0xfe53, 0xfe67, 0xfe67, 0xfe6c, 0xfe6f, 0xfe75, 0xfe75, 0xfefd, 0xff00, 0xffbf, 0xffc1, 0xffc8, 0xffc9, 0xffd0, 0xffd1, 0xffd8, 0xffd9, 0xffdd, 0xffdf, 0xffe7, 0xffe7, 0xffef, 0xfffb, 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, 0x108ff, 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x1097f, 0x109b8, 0x109bd, 0x109c0, 0x109ff, 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, 0x10e5f, 0x10e7f, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110bd, 0x110bd, 0x110c2, 0x110cf, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, 0x11144, 0x1114f, 0x11177, 0x1117f, 0x111c9, 0x111cc, 0x111ce, 0x111cf, 0x111db, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, 0x1123e, 0x112af, 0x112eb, 0x112ef, 0x112fa, 0x11300, 0x11304, 0x11304, 0x1130d, 0x1130e, 0x11311, 0x11312, 0x11329, 0x11329, 0x11331, 0x11331, 0x11334, 0x11334, 0x1133a, 0x1133b, 0x11345, 0x11346, 0x11349, 0x1134a, 0x1134e, 0x11356, 0x11358, 0x1135c, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, 0x115ca, 0x115ff, 0x11645, 0x1164f, 0x1165a, 0x1167f, 0x116b8, 0x116bf, 0x116ca, 0x1189f, 0x118f3, 0x118fe, 0x11900, 0x11abf, 0x11af9, 0x11fff, 0x12399, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x12fff, 0x1342f, 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, 0x1bca0, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d173, 0x1d17a, 0x1d1de, 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, 0x1d800, 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, 0x1f32d, 0x1f32f, 0x1f37e, 0x1f37f, 0x1f3cf, 0x1f3d3, 0x1f3f8, 0x1f3ff, 0x1f4ff, 0x1f4ff, 0x1f54b, 0x1f54f, 0x1f57a, 0x1f57a, 0x1f5a4, 0x1f5a4, 0x1f643, 0x1f644, 0x1f6d0, 0x1f6df, 0x1f6ed, 0x1f6ef, 0x1f6f4, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d5, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2f7ff, 0x2fa1e, 0xe00ff, 0xe01f0, 0x10ffff, }; /* END of CR_C */ /* PROPERTY: 'Cc': General Category */ #define CR_Cc CR_Cntrl /* PROPERTY: 'Cf': General Category */ static const OnigCodePoint CR_Cf[] = { 17, 0x00ad, 0x00ad, 0x0600, 0x0605, 0x061c, 0x061c, 0x06dd, 0x06dd, 0x070f, 0x070f, 0x180e, 0x180e, 0x200b, 0x200f, 0x202a, 0x202e, 0x2060, 0x2064, 0x2066, 0x206f, 0xfeff, 0xfeff, 0xfff9, 0xfffb, 0x110bd, 0x110bd, 0x1bca0, 0x1bca3, 0x1d173, 0x1d17a, 0xe0001, 0xe0001, 0xe0020, 0xe007f, }; /* END of CR_Cf */ /* PROPERTY: 'Cn': General Category */ static const OnigCodePoint CR_Cn[] = { 600, 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, 0x08b3, 0x08e3, 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, 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, 0x0c5a, 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, 0x0d5f, 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, 0x13f5, 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, 0x20be, 0x20cf, 0x20f1, 0x20ff, 0x218a, 0x218f, 0x23fb, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, 0x2bba, 0x2bbc, 0x2bc9, 0x2bc9, 0x2bd2, 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, 0x9fcd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa69e, 0xa69e, 0xa6f8, 0xa6ff, 0xa78f, 0xa78f, 0xa7ae, 0xa7af, 0xa7b2, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, 0xa8da, 0xa8df, 0xa8fc, 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, 0xab60, 0xab63, 0xab66, 0xabbf, 0xabee, 0xabef, 0xabfa, 0xabff, 0xd7a4, 0xd7af, 0xd7c7, 0xd7ca, 0xd7fc, 0xd7ff, 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, 0xfe2e, 0xfe2f, 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, 0x108ff, 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x1097f, 0x109b8, 0x109bd, 0x109c0, 0x109ff, 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, 0x10e5f, 0x10e7f, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110c2, 0x110cf, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, 0x11144, 0x1114f, 0x11177, 0x1117f, 0x111c9, 0x111cc, 0x111ce, 0x111cf, 0x111db, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, 0x1123e, 0x112af, 0x112eb, 0x112ef, 0x112fa, 0x11300, 0x11304, 0x11304, 0x1130d, 0x1130e, 0x11311, 0x11312, 0x11329, 0x11329, 0x11331, 0x11331, 0x11334, 0x11334, 0x1133a, 0x1133b, 0x11345, 0x11346, 0x11349, 0x1134a, 0x1134e, 0x11356, 0x11358, 0x1135c, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, 0x115ca, 0x115ff, 0x11645, 0x1164f, 0x1165a, 0x1167f, 0x116b8, 0x116bf, 0x116ca, 0x1189f, 0x118f3, 0x118fe, 0x11900, 0x11abf, 0x11af9, 0x11fff, 0x12399, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x12fff, 0x1342f, 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, 0x1d1de, 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, 0x1d800, 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, 0x1f32d, 0x1f32f, 0x1f37e, 0x1f37f, 0x1f3cf, 0x1f3d3, 0x1f3f8, 0x1f3ff, 0x1f4ff, 0x1f4ff, 0x1f54b, 0x1f54f, 0x1f57a, 0x1f57a, 0x1f5a4, 0x1f5a4, 0x1f643, 0x1f644, 0x1f6d0, 0x1f6df, 0x1f6ed, 0x1f6ef, 0x1f6f4, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d5, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, 0xffffe, 0xfffff, 0x10fffe, 0x10ffff, }; /* END of CR_Cn */ /* PROPERTY: 'Co': General Category */ static const OnigCodePoint CR_Co[] = { 3, 0xe000, 0xf8ff, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Co */ /* PROPERTY: 'Cs': General Category */ static const OnigCodePoint CR_Cs[] = { 1, 0xd800, 0xdfff, }; /* END of CR_Cs */ /* PROPERTY: 'L': Major Category */ static const OnigCodePoint CR_L[] = { 537, 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, 0x08b2, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16f1, 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, 0x19c1, 0x19c7, 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, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2183, 0x2184, 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, 0x2e2f, 0x2e2f, 0x3005, 0x3006, 0x3031, 0x3035, 0x303b, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa67f, 0xa69d, 0xa6a0, 0xa6e5, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, 0xa840, 0xa873, 0xa882, 0xa8b3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f, 0x10330, 0x10340, 0x10342, 0x10349, 0x10350, 0x10375, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, 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, 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, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x1122b, 0x112b0, 0x112de, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x1133d, 0x1135d, 0x11361, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115ae, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x13000, 0x1342e, 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, 0x2f800, 0x2fa1d, }; /* END of CR_L */ /* PROPERTY: 'LC': General Category */ static const OnigCodePoint CR_LC[] = { 117, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x01ba, 0x01bc, 0x01bf, 0x01c4, 0x0293, 0x0295, 0x02af, 0x0370, 0x0373, 0x0376, 0x0377, 0x037b, 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, 0x1d00, 0x1d2b, 0x1d6b, 0x1d77, 0x1d79, 0x1d9a, 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, 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, 0x2183, 0x2184, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2c7b, 0x2c7e, 0x2ce4, 0x2ceb, 0x2cee, 0x2cf2, 0x2cf3, 0x2d00, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0xa640, 0xa66d, 0xa680, 0xa69b, 0xa722, 0xa76f, 0xa771, 0xa787, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, 0xab64, 0xab65, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0x10400, 0x1044f, 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, }; /* END of CR_LC */ /* PROPERTY: 'Ll': General Category */ static const OnigCodePoint CR_Ll[] = { 625, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02af, 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, 0x03fc, 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, 0x1d00, 0x1d2b, 0x1d6b, 0x1d77, 0x1d79, 0x1d9a, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2184, 0x2184, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7b, 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, 0x2ce4, 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, 0xa731, 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, 0xa771, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, 0xab64, 0xab65, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Ll */ /* PROPERTY: 'Lm': General Category */ static const OnigCodePoint CR_Lm[] = { 56, 0x02b0, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0374, 0x0374, 0x037a, 0x037a, 0x0559, 0x0559, 0x0640, 0x0640, 0x06e5, 0x06e6, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x081a, 0x081a, 0x0824, 0x0824, 0x0828, 0x0828, 0x0971, 0x0971, 0x0e46, 0x0e46, 0x0ec6, 0x0ec6, 0x10fc, 0x10fc, 0x17d7, 0x17d7, 0x1843, 0x1843, 0x1aa7, 0x1aa7, 0x1c78, 0x1c7d, 0x1d2c, 0x1d6a, 0x1d78, 0x1d78, 0x1d9b, 0x1dbf, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x2c7c, 0x2c7d, 0x2d6f, 0x2d6f, 0x2e2f, 0x2e2f, 0x3005, 0x3005, 0x3031, 0x3035, 0x303b, 0x303b, 0x309d, 0x309e, 0x30fc, 0x30fe, 0xa015, 0xa015, 0xa4f8, 0xa4fd, 0xa60c, 0xa60c, 0xa67f, 0xa67f, 0xa69c, 0xa69d, 0xa717, 0xa71f, 0xa770, 0xa770, 0xa788, 0xa788, 0xa7f8, 0xa7f9, 0xa9cf, 0xa9cf, 0xa9e6, 0xa9e6, 0xaa70, 0xaa70, 0xaadd, 0xaadd, 0xaaf3, 0xaaf4, 0xab5c, 0xab5f, 0xff70, 0xff70, 0xff9e, 0xff9f, 0x16b40, 0x16b43, 0x16f93, 0x16f9f, }; /* END of CR_Lm */ /* PROPERTY: 'Lo': General Category */ static const OnigCodePoint CR_Lo[] = { 417, 0x00aa, 0x00aa, 0x00ba, 0x00ba, 0x01bb, 0x01bb, 0x01c0, 0x01c3, 0x0294, 0x0294, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0620, 0x063f, 0x0641, 0x064a, 0x066e, 0x066f, 0x0671, 0x06d3, 0x06d5, 0x06d5, 0x06ee, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x0710, 0x0712, 0x072f, 0x074d, 0x07a5, 0x07b1, 0x07b1, 0x07ca, 0x07ea, 0x0800, 0x0815, 0x0840, 0x0858, 0x08a0, 0x08b2, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, 0x0958, 0x0961, 0x0972, 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, 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, 0x0c59, 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, 0x0d60, 0x0d61, 0x0d7a, 0x0d7f, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0e01, 0x0e30, 0x0e32, 0x0e33, 0x0e40, 0x0e45, 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, 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, 0x10d0, 0x10fa, 0x10fd, 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, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16f1, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1711, 0x1720, 0x1731, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780, 0x17b3, 0x17dc, 0x17dc, 0x1820, 0x1842, 0x1844, 0x1877, 0x1880, 0x18a8, 0x18aa, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19c1, 0x19c7, 0x1a00, 0x1a16, 0x1a20, 0x1a54, 0x1b05, 0x1b33, 0x1b45, 0x1b4b, 0x1b83, 0x1ba0, 0x1bae, 0x1baf, 0x1bba, 0x1be5, 0x1c00, 0x1c23, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c77, 0x1ce9, 0x1cec, 0x1cee, 0x1cf1, 0x1cf5, 0x1cf6, 0x2135, 0x2138, 0x2d30, 0x2d67, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x3006, 0x3006, 0x303c, 0x303c, 0x3041, 0x3096, 0x309f, 0x309f, 0x30a1, 0x30fa, 0x30ff, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa014, 0xa016, 0xa48c, 0xa4d0, 0xa4f7, 0xa500, 0xa60b, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa66e, 0xa66e, 0xa6a0, 0xa6e5, 0xa7f7, 0xa7f7, 0xa7fb, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, 0xa840, 0xa873, 0xa882, 0xa8b3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa90a, 0xa925, 0xa930, 0xa946, 0xa960, 0xa97c, 0xa984, 0xa9b2, 0xa9e0, 0xa9e4, 0xa9e7, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa28, 0xaa40, 0xaa42, 0xaa44, 0xaa4b, 0xaa60, 0xaa6f, 0xaa71, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaaaf, 0xaab1, 0xaab1, 0xaab5, 0xaab6, 0xaab9, 0xaabd, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadc, 0xaae0, 0xaaea, 0xaaf2, 0xaaf2, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xabc0, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 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, 0xff66, 0xff6f, 0xff71, 0xff9d, 0xffa0, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f, 0x10330, 0x10340, 0x10342, 0x10349, 0x10350, 0x10375, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, 0x10450, 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, 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, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x1122b, 0x112b0, 0x112de, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x1133d, 0x1135d, 0x11361, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115ae, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b2f, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f50, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 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, 0x2f800, 0x2fa1d, }; /* END of CR_Lo */ /* PROPERTY: 'Lt': General Category */ static const OnigCodePoint CR_Lt[] = { 10, 0x01c5, 0x01c5, 0x01c8, 0x01c8, 0x01cb, 0x01cb, 0x01f2, 0x01f2, 0x1f88, 0x1f8f, 0x1f98, 0x1f9f, 0x1fa8, 0x1faf, 0x1fbc, 0x1fbc, 0x1fcc, 0x1fcc, 0x1ffc, 0x1ffc, }; /* END of CR_Lt */ /* PROPERTY: 'Lu': General Category */ static const OnigCodePoint CR_Lu[] = { 622, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 0x2183, 0x2183, 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, 0xa7b1, 0xff21, 0xff3a, 0x10400, 0x10427, 0x118a0, 0x118bf, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 0x1d7ca, 0x1d7ca, }; /* END of CR_Lu */ /* PROPERTY: 'M': Major Category */ static const OnigCodePoint CR_M[] = { 229, 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, 0x08e4, 0x0903, 0x093a, 0x093c, 0x093e, 0x094f, 0x0951, 0x0957, 0x0962, 0x0963, 0x0981, 0x0983, 0x09bc, 0x09bc, 0x09be, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cd, 0x09d7, 0x09d7, 0x09e2, 0x09e3, 0x0a01, 0x0a03, 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4d, 0x0a51, 0x0a51, 0x0a70, 0x0a71, 0x0a75, 0x0a75, 0x0a81, 0x0a83, 0x0abc, 0x0abc, 0x0abe, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acd, 0x0ae2, 0x0ae3, 0x0b01, 0x0b03, 0x0b3c, 0x0b3c, 0x0b3e, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, 0x0b56, 0x0b57, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcd, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c3e, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c62, 0x0c63, 0x0c81, 0x0c83, 0x0cbc, 0x0cbc, 0x0cbe, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, 0x0ce2, 0x0ce3, 0x0d01, 0x0d03, 0x0d3e, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d62, 0x0d63, 0x0d82, 0x0d83, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e31, 0x0e31, 0x0e34, 0x0e3a, 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, 0x0eb4, 0x0eb9, 0x0ebb, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, 0x0f35, 0x0f35, 0x0f37, 0x0f37, 0x0f39, 0x0f39, 0x0f3e, 0x0f3f, 0x0f71, 0x0f84, 0x0f86, 0x0f87, 0x0f8d, 0x0f97, 0x0f99, 0x0fbc, 0x0fc6, 0x0fc6, 0x102b, 0x103e, 0x1056, 0x1059, 0x105e, 0x1060, 0x1062, 0x1064, 0x1067, 0x106d, 0x1071, 0x1074, 0x1082, 0x108d, 0x108f, 0x108f, 0x109a, 0x109d, 0x135d, 0x135f, 0x1712, 0x1714, 0x1732, 0x1734, 0x1752, 0x1753, 0x1772, 0x1773, 0x17b4, 0x17d3, 0x17dd, 0x17dd, 0x180b, 0x180d, 0x18a9, 0x18a9, 0x1920, 0x192b, 0x1930, 0x193b, 0x19b0, 0x19c0, 0x19c8, 0x19c9, 0x1a17, 0x1a1b, 0x1a55, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a7f, 0x1ab0, 0x1abe, 0x1b00, 0x1b04, 0x1b34, 0x1b44, 0x1b6b, 0x1b73, 0x1b80, 0x1b82, 0x1ba1, 0x1bad, 0x1be6, 0x1bf3, 0x1c24, 0x1c37, 0x1cd0, 0x1cd2, 0x1cd4, 0x1ce8, 0x1ced, 0x1ced, 0x1cf2, 0x1cf4, 0x1cf8, 0x1cf9, 0x1dc0, 0x1df5, 0x1dfc, 0x1dff, 0x20d0, 0x20f0, 0x2cef, 0x2cf1, 0x2d7f, 0x2d7f, 0x2de0, 0x2dff, 0x302a, 0x302f, 0x3099, 0x309a, 0xa66f, 0xa672, 0xa674, 0xa67d, 0xa69f, 0xa69f, 0xa6f0, 0xa6f1, 0xa802, 0xa802, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa823, 0xa827, 0xa880, 0xa881, 0xa8b4, 0xa8c4, 0xa8e0, 0xa8f1, 0xa926, 0xa92d, 0xa947, 0xa953, 0xa980, 0xa983, 0xa9b3, 0xa9c0, 0xa9e5, 0xa9e5, 0xaa29, 0xaa36, 0xaa43, 0xaa43, 0xaa4c, 0xaa4d, 0xaa7b, 0xaa7d, 0xaab0, 0xaab0, 0xaab2, 0xaab4, 0xaab7, 0xaab8, 0xaabe, 0xaabf, 0xaac1, 0xaac1, 0xaaeb, 0xaaef, 0xaaf5, 0xaaf6, 0xabe3, 0xabea, 0xabec, 0xabed, 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe2d, 0x101fd, 0x101fd, 0x102e0, 0x102e0, 0x10376, 0x1037a, 0x10a01, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a0f, 0x10a38, 0x10a3a, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x11000, 0x11002, 0x11038, 0x11046, 0x1107f, 0x11082, 0x110b0, 0x110ba, 0x11100, 0x11102, 0x11127, 0x11134, 0x11173, 0x11173, 0x11180, 0x11182, 0x111b3, 0x111c0, 0x1122c, 0x11237, 0x112df, 0x112ea, 0x11301, 0x11303, 0x1133c, 0x1133c, 0x1133e, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x11362, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x114b0, 0x114c3, 0x115af, 0x115b5, 0x115b8, 0x115c0, 0x11630, 0x11640, 0x116ab, 0x116b7, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16f51, 0x16f7e, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d169, 0x1d16d, 0x1d172, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, 0x1d242, 0x1d244, 0x1e8d0, 0x1e8d6, 0xe0100, 0xe01ef, }; /* END of CR_M */ /* PROPERTY: 'Mc': General Category */ static const OnigCodePoint CR_Mc[] = { 147, 0x0903, 0x0903, 0x093b, 0x093b, 0x093e, 0x0940, 0x0949, 0x094c, 0x094e, 0x094f, 0x0982, 0x0983, 0x09be, 0x09c0, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09d7, 0x09d7, 0x0a03, 0x0a03, 0x0a3e, 0x0a40, 0x0a83, 0x0a83, 0x0abe, 0x0ac0, 0x0ac9, 0x0ac9, 0x0acb, 0x0acc, 0x0b02, 0x0b03, 0x0b3e, 0x0b3e, 0x0b40, 0x0b40, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b57, 0x0b57, 0x0bbe, 0x0bbf, 0x0bc1, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcc, 0x0bd7, 0x0bd7, 0x0c01, 0x0c03, 0x0c41, 0x0c44, 0x0c82, 0x0c83, 0x0cbe, 0x0cbe, 0x0cc0, 0x0cc4, 0x0cc7, 0x0cc8, 0x0cca, 0x0ccb, 0x0cd5, 0x0cd6, 0x0d02, 0x0d03, 0x0d3e, 0x0d40, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d82, 0x0d83, 0x0dcf, 0x0dd1, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0f3e, 0x0f3f, 0x0f7f, 0x0f7f, 0x102b, 0x102c, 0x1031, 0x1031, 0x1038, 0x1038, 0x103b, 0x103c, 0x1056, 0x1057, 0x1062, 0x1064, 0x1067, 0x106d, 0x1083, 0x1084, 0x1087, 0x108c, 0x108f, 0x108f, 0x109a, 0x109c, 0x17b6, 0x17b6, 0x17be, 0x17c5, 0x17c7, 0x17c8, 0x1923, 0x1926, 0x1929, 0x192b, 0x1930, 0x1931, 0x1933, 0x1938, 0x19b0, 0x19c0, 0x19c8, 0x19c9, 0x1a19, 0x1a1a, 0x1a55, 0x1a55, 0x1a57, 0x1a57, 0x1a61, 0x1a61, 0x1a63, 0x1a64, 0x1a6d, 0x1a72, 0x1b04, 0x1b04, 0x1b35, 0x1b35, 0x1b3b, 0x1b3b, 0x1b3d, 0x1b41, 0x1b43, 0x1b44, 0x1b82, 0x1b82, 0x1ba1, 0x1ba1, 0x1ba6, 0x1ba7, 0x1baa, 0x1baa, 0x1be7, 0x1be7, 0x1bea, 0x1bec, 0x1bee, 0x1bee, 0x1bf2, 0x1bf3, 0x1c24, 0x1c2b, 0x1c34, 0x1c35, 0x1ce1, 0x1ce1, 0x1cf2, 0x1cf3, 0x302e, 0x302f, 0xa823, 0xa824, 0xa827, 0xa827, 0xa880, 0xa881, 0xa8b4, 0xa8c3, 0xa952, 0xa953, 0xa983, 0xa983, 0xa9b4, 0xa9b5, 0xa9ba, 0xa9bb, 0xa9bd, 0xa9c0, 0xaa2f, 0xaa30, 0xaa33, 0xaa34, 0xaa4d, 0xaa4d, 0xaa7b, 0xaa7b, 0xaa7d, 0xaa7d, 0xaaeb, 0xaaeb, 0xaaee, 0xaaef, 0xaaf5, 0xaaf5, 0xabe3, 0xabe4, 0xabe6, 0xabe7, 0xabe9, 0xabea, 0xabec, 0xabec, 0x11000, 0x11000, 0x11002, 0x11002, 0x11082, 0x11082, 0x110b0, 0x110b2, 0x110b7, 0x110b8, 0x1112c, 0x1112c, 0x11182, 0x11182, 0x111b3, 0x111b5, 0x111bf, 0x111c0, 0x1122c, 0x1122e, 0x11232, 0x11233, 0x11235, 0x11235, 0x112e0, 0x112e2, 0x11302, 0x11303, 0x1133e, 0x1133f, 0x11341, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x11362, 0x11363, 0x114b0, 0x114b2, 0x114b9, 0x114b9, 0x114bb, 0x114be, 0x114c1, 0x114c1, 0x115af, 0x115b1, 0x115b8, 0x115bb, 0x115be, 0x115be, 0x11630, 0x11632, 0x1163b, 0x1163c, 0x1163e, 0x1163e, 0x116ac, 0x116ac, 0x116ae, 0x116af, 0x116b6, 0x116b6, 0x16f51, 0x16f7e, 0x1d165, 0x1d166, 0x1d16d, 0x1d172, }; /* END of CR_Mc */ /* PROPERTY: 'Me': General Category */ static const OnigCodePoint CR_Me[] = { 5, 0x0488, 0x0489, 0x1abe, 0x1abe, 0x20dd, 0x20e0, 0x20e2, 0x20e4, 0xa670, 0xa672, }; /* END of CR_Me */ /* PROPERTY: 'Mn': General Category */ static const OnigCodePoint CR_Mn[] = { 255, 0x0300, 0x036f, 0x0483, 0x0487, 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, 0x08e4, 0x0902, 0x093a, 0x093a, 0x093c, 0x093c, 0x0941, 0x0948, 0x094d, 0x094d, 0x0951, 0x0957, 0x0962, 0x0963, 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, 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, 0x1abd, 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, 0x20d0, 0x20dc, 0x20e1, 0x20e1, 0x20e5, 0x20f0, 0x2cef, 0x2cf1, 0x2d7f, 0x2d7f, 0x2de0, 0x2dff, 0x302a, 0x302d, 0x3099, 0x309a, 0xa66f, 0xa66f, 0xa674, 0xa67d, 0xa69f, 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, 0xfe2d, 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, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, 0x112df, 0x112df, 0x112e3, 0x112ea, 0x11301, 0x11301, 0x1133c, 0x1133c, 0x11340, 0x11340, 0x11366, 0x1136c, 0x11370, 0x11374, 0x114b3, 0x114b8, 0x114ba, 0x114ba, 0x114bf, 0x114c0, 0x114c2, 0x114c3, 0x115b2, 0x115b5, 0x115bc, 0x115bd, 0x115bf, 0x115c0, 0x11633, 0x1163a, 0x1163d, 0x1163d, 0x1163f, 0x11640, 0x116ab, 0x116ab, 0x116ad, 0x116ad, 0x116b0, 0x116b5, 0x116b7, 0x116b7, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d167, 0x1d169, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, 0x1d242, 0x1d244, 0x1e8d0, 0x1e8d6, 0xe0100, 0xe01ef, }; /* END of CR_Mn */ /* PROPERTY: 'N': Major Category */ static const OnigCodePoint CR_N[] = { 105, 0x0030, 0x0039, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x09f4, 0x09f9, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0b72, 0x0b77, 0x0be6, 0x0bf2, 0x0c66, 0x0c6f, 0x0c78, 0x0c7e, 0x0ce6, 0x0cef, 0x0d66, 0x0d75, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f33, 0x1040, 0x1049, 0x1090, 0x1099, 0x1369, 0x137c, 0x16ee, 0x16f0, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19da, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0x2070, 0x2070, 0x2074, 0x2079, 0x2080, 0x2089, 0x2150, 0x2182, 0x2185, 0x2189, 0x2460, 0x249b, 0x24ea, 0x24ff, 0x2776, 0x2793, 0x2cfd, 0x2cfd, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, 0x3192, 0x3195, 0x3220, 0x3229, 0x3248, 0x324f, 0x3251, 0x325f, 0x3280, 0x3289, 0x32b1, 0x32bf, 0xa620, 0xa629, 0xa6e6, 0xa6ef, 0xa830, 0xa835, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x10107, 0x10133, 0x10140, 0x10178, 0x1018a, 0x1018b, 0x102e1, 0x102fb, 0x10320, 0x10323, 0x10341, 0x10341, 0x1034a, 0x1034a, 0x103d1, 0x103d5, 0x104a0, 0x104a9, 0x10858, 0x1085f, 0x10879, 0x1087f, 0x108a7, 0x108af, 0x10916, 0x1091b, 0x10a40, 0x10a47, 0x10a7d, 0x10a7e, 0x10a9d, 0x10a9f, 0x10aeb, 0x10aef, 0x10b58, 0x10b5f, 0x10b78, 0x10b7f, 0x10ba9, 0x10baf, 0x10e60, 0x10e7e, 0x11052, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x111e1, 0x111f4, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x118e0, 0x118f2, 0x12400, 0x1246e, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x1d360, 0x1d371, 0x1d7ce, 0x1d7ff, 0x1e8c7, 0x1e8cf, 0x1f100, 0x1f10c, }; /* END of CR_N */ /* PROPERTY: 'Nd': General Category */ #define CR_Nd CR_Digit /* PROPERTY: 'Nl': General Category */ static const OnigCodePoint CR_Nl[] = { 12, 0x16ee, 0x16f0, 0x2160, 0x2182, 0x2185, 0x2188, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, 0xa6e6, 0xa6ef, 0x10140, 0x10174, 0x10341, 0x10341, 0x1034a, 0x1034a, 0x103d1, 0x103d5, 0x12400, 0x1246e, }; /* END of CR_Nl */ /* PROPERTY: 'No': General Category */ static const OnigCodePoint CR_No[] = { 52, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, 0x09f4, 0x09f9, 0x0b72, 0x0b77, 0x0bf0, 0x0bf2, 0x0c78, 0x0c7e, 0x0d70, 0x0d75, 0x0f2a, 0x0f33, 0x1369, 0x137c, 0x17f0, 0x17f9, 0x19da, 0x19da, 0x2070, 0x2070, 0x2074, 0x2079, 0x2080, 0x2089, 0x2150, 0x215f, 0x2189, 0x2189, 0x2460, 0x249b, 0x24ea, 0x24ff, 0x2776, 0x2793, 0x2cfd, 0x2cfd, 0x3192, 0x3195, 0x3220, 0x3229, 0x3248, 0x324f, 0x3251, 0x325f, 0x3280, 0x3289, 0x32b1, 0x32bf, 0xa830, 0xa835, 0x10107, 0x10133, 0x10175, 0x10178, 0x1018a, 0x1018b, 0x102e1, 0x102fb, 0x10320, 0x10323, 0x10858, 0x1085f, 0x10879, 0x1087f, 0x108a7, 0x108af, 0x10916, 0x1091b, 0x10a40, 0x10a47, 0x10a7d, 0x10a7e, 0x10a9d, 0x10a9f, 0x10aeb, 0x10aef, 0x10b58, 0x10b5f, 0x10b78, 0x10b7f, 0x10ba9, 0x10baf, 0x10e60, 0x10e7e, 0x11052, 0x11065, 0x111e1, 0x111f4, 0x118ea, 0x118f2, 0x16b5b, 0x16b61, 0x1d360, 0x1d371, 0x1e8c7, 0x1e8cf, 0x1f100, 0x1f10c, }; /* END of CR_No */ /* PROPERTY: 'P': Major Category */ #define CR_P CR_Punct /* PROPERTY: 'Pc': General Category */ static const OnigCodePoint CR_Pc[] = { 6, 0x005f, 0x005f, 0x203f, 0x2040, 0x2054, 0x2054, 0xfe33, 0xfe34, 0xfe4d, 0xfe4f, 0xff3f, 0xff3f, }; /* END of CR_Pc */ /* PROPERTY: 'Pd': General Category */ static const OnigCodePoint CR_Pd[] = { 17, 0x002d, 0x002d, 0x058a, 0x058a, 0x05be, 0x05be, 0x1400, 0x1400, 0x1806, 0x1806, 0x2010, 0x2015, 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_Pd */ /* PROPERTY: 'Pe': General Category */ static const OnigCodePoint CR_Pe[] = { 72, 0x0029, 0x0029, 0x005d, 0x005d, 0x007d, 0x007d, 0x0f3b, 0x0f3b, 0x0f3d, 0x0f3d, 0x169c, 0x169c, 0x2046, 0x2046, 0x207e, 0x207e, 0x208e, 0x208e, 0x2309, 0x2309, 0x230b, 0x230b, 0x232a, 0x232a, 0x2769, 0x2769, 0x276b, 0x276b, 0x276d, 0x276d, 0x276f, 0x276f, 0x2771, 0x2771, 0x2773, 0x2773, 0x2775, 0x2775, 0x27c6, 0x27c6, 0x27e7, 0x27e7, 0x27e9, 0x27e9, 0x27eb, 0x27eb, 0x27ed, 0x27ed, 0x27ef, 0x27ef, 0x2984, 0x2984, 0x2986, 0x2986, 0x2988, 0x2988, 0x298a, 0x298a, 0x298c, 0x298c, 0x298e, 0x298e, 0x2990, 0x2990, 0x2992, 0x2992, 0x2994, 0x2994, 0x2996, 0x2996, 0x2998, 0x2998, 0x29d9, 0x29d9, 0x29db, 0x29db, 0x29fd, 0x29fd, 0x2e23, 0x2e23, 0x2e25, 0x2e25, 0x2e27, 0x2e27, 0x2e29, 0x2e29, 0x3009, 0x3009, 0x300b, 0x300b, 0x300d, 0x300d, 0x300f, 0x300f, 0x3011, 0x3011, 0x3015, 0x3015, 0x3017, 0x3017, 0x3019, 0x3019, 0x301b, 0x301b, 0x301e, 0x301f, 0xfd3e, 0xfd3e, 0xfe18, 0xfe18, 0xfe36, 0xfe36, 0xfe38, 0xfe38, 0xfe3a, 0xfe3a, 0xfe3c, 0xfe3c, 0xfe3e, 0xfe3e, 0xfe40, 0xfe40, 0xfe42, 0xfe42, 0xfe44, 0xfe44, 0xfe48, 0xfe48, 0xfe5a, 0xfe5a, 0xfe5c, 0xfe5c, 0xfe5e, 0xfe5e, 0xff09, 0xff09, 0xff3d, 0xff3d, 0xff5d, 0xff5d, 0xff60, 0xff60, 0xff63, 0xff63, }; /* END of CR_Pe */ /* PROPERTY: 'Pf': General Category */ static const OnigCodePoint CR_Pf[] = { 10, 0x00bb, 0x00bb, 0x2019, 0x2019, 0x201d, 0x201d, 0x203a, 0x203a, 0x2e03, 0x2e03, 0x2e05, 0x2e05, 0x2e0a, 0x2e0a, 0x2e0d, 0x2e0d, 0x2e1d, 0x2e1d, 0x2e21, 0x2e21, }; /* END of CR_Pf */ /* PROPERTY: 'Pi': General Category */ static const OnigCodePoint CR_Pi[] = { 11, 0x00ab, 0x00ab, 0x2018, 0x2018, 0x201b, 0x201c, 0x201f, 0x201f, 0x2039, 0x2039, 0x2e02, 0x2e02, 0x2e04, 0x2e04, 0x2e09, 0x2e09, 0x2e0c, 0x2e0c, 0x2e1c, 0x2e1c, 0x2e20, 0x2e20, }; /* END of CR_Pi */ /* PROPERTY: 'Po': General Category */ static const OnigCodePoint CR_Po[] = { 151, 0x0021, 0x0023, 0x0025, 0x0027, 0x002a, 0x002a, 0x002c, 0x002c, 0x002e, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005c, 0x005c, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00b6, 0x00b7, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x0589, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x166d, 0x166e, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x1805, 0x1807, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2016, 0x2017, 0x2020, 0x2027, 0x2030, 0x2038, 0x203b, 0x203e, 0x2041, 0x2043, 0x2047, 0x2051, 0x2053, 0x2053, 0x2055, 0x205e, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e01, 0x2e06, 0x2e08, 0x2e0b, 0x2e0b, 0x2e0e, 0x2e16, 0x2e18, 0x2e19, 0x2e1b, 0x2e1b, 0x2e1e, 0x2e1f, 0x2e2a, 0x2e2e, 0x2e30, 0x2e39, 0x2e3c, 0x2e3f, 0x2e41, 0x2e41, 0x3001, 0x3003, 0x303d, 0x303d, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfe10, 0xfe16, 0xfe19, 0xfe19, 0xfe30, 0xfe30, 0xfe45, 0xfe46, 0xfe49, 0xfe4c, 0xfe50, 0xfe52, 0xfe54, 0xfe57, 0xfe5f, 0xfe61, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff07, 0xff0a, 0xff0a, 0xff0c, 0xff0c, 0xff0e, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3c, 0xff3c, 0xff61, 0xff61, 0xff64, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c8, 0x111cd, 0x111cd, 0x11238, 0x1123d, 0x114c6, 0x114c6, 0x115c1, 0x115c9, 0x11641, 0x11643, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, }; /* END of CR_Po */ /* PROPERTY: 'Ps': General Category */ static const OnigCodePoint CR_Ps[] = { 75, 0x0028, 0x0028, 0x005b, 0x005b, 0x007b, 0x007b, 0x0f3a, 0x0f3a, 0x0f3c, 0x0f3c, 0x169b, 0x169b, 0x201a, 0x201a, 0x201e, 0x201e, 0x2045, 0x2045, 0x207d, 0x207d, 0x208d, 0x208d, 0x2308, 0x2308, 0x230a, 0x230a, 0x2329, 0x2329, 0x2768, 0x2768, 0x276a, 0x276a, 0x276c, 0x276c, 0x276e, 0x276e, 0x2770, 0x2770, 0x2772, 0x2772, 0x2774, 0x2774, 0x27c5, 0x27c5, 0x27e6, 0x27e6, 0x27e8, 0x27e8, 0x27ea, 0x27ea, 0x27ec, 0x27ec, 0x27ee, 0x27ee, 0x2983, 0x2983, 0x2985, 0x2985, 0x2987, 0x2987, 0x2989, 0x2989, 0x298b, 0x298b, 0x298d, 0x298d, 0x298f, 0x298f, 0x2991, 0x2991, 0x2993, 0x2993, 0x2995, 0x2995, 0x2997, 0x2997, 0x29d8, 0x29d8, 0x29da, 0x29da, 0x29fc, 0x29fc, 0x2e22, 0x2e22, 0x2e24, 0x2e24, 0x2e26, 0x2e26, 0x2e28, 0x2e28, 0x2e42, 0x2e42, 0x3008, 0x3008, 0x300a, 0x300a, 0x300c, 0x300c, 0x300e, 0x300e, 0x3010, 0x3010, 0x3014, 0x3014, 0x3016, 0x3016, 0x3018, 0x3018, 0x301a, 0x301a, 0x301d, 0x301d, 0xfd3f, 0xfd3f, 0xfe17, 0xfe17, 0xfe35, 0xfe35, 0xfe37, 0xfe37, 0xfe39, 0xfe39, 0xfe3b, 0xfe3b, 0xfe3d, 0xfe3d, 0xfe3f, 0xfe3f, 0xfe41, 0xfe41, 0xfe43, 0xfe43, 0xfe47, 0xfe47, 0xfe59, 0xfe59, 0xfe5b, 0xfe5b, 0xfe5d, 0xfe5d, 0xff08, 0xff08, 0xff3b, 0xff3b, 0xff5b, 0xff5b, 0xff5f, 0xff5f, 0xff62, 0xff62, }; /* END of CR_Ps */ /* PROPERTY: 'S': Major Category */ static const OnigCodePoint CR_S[] = { 210, 0x0024, 0x0024, 0x002b, 0x002b, 0x003c, 0x003e, 0x005e, 0x005e, 0x0060, 0x0060, 0x007c, 0x007c, 0x007e, 0x007e, 0x00a2, 0x00a6, 0x00a8, 0x00a9, 0x00ac, 0x00ac, 0x00ae, 0x00b1, 0x00b4, 0x00b4, 0x00b8, 0x00b8, 0x00d7, 0x00d7, 0x00f7, 0x00f7, 0x02c2, 0x02c5, 0x02d2, 0x02df, 0x02e5, 0x02eb, 0x02ed, 0x02ed, 0x02ef, 0x02ff, 0x0375, 0x0375, 0x0384, 0x0385, 0x03f6, 0x03f6, 0x0482, 0x0482, 0x058d, 0x058f, 0x0606, 0x0608, 0x060b, 0x060b, 0x060e, 0x060f, 0x06de, 0x06de, 0x06e9, 0x06e9, 0x06fd, 0x06fe, 0x07f6, 0x07f6, 0x09f2, 0x09f3, 0x09fa, 0x09fb, 0x0af1, 0x0af1, 0x0b70, 0x0b70, 0x0bf3, 0x0bfa, 0x0c7f, 0x0c7f, 0x0d79, 0x0d79, 0x0e3f, 0x0e3f, 0x0f01, 0x0f03, 0x0f13, 0x0f13, 0x0f15, 0x0f17, 0x0f1a, 0x0f1f, 0x0f34, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fce, 0x0fcf, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, 0x17db, 0x17db, 0x1940, 0x1940, 0x19de, 0x19ff, 0x1b61, 0x1b6a, 0x1b74, 0x1b7c, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, 0x2044, 0x2044, 0x2052, 0x2052, 0x207a, 0x207c, 0x208a, 0x208c, 0x20a0, 0x20bd, 0x2100, 0x2101, 0x2103, 0x2106, 0x2108, 0x2109, 0x2114, 0x2114, 0x2116, 0x2118, 0x211e, 0x2123, 0x2125, 0x2125, 0x2127, 0x2127, 0x2129, 0x2129, 0x212e, 0x212e, 0x213a, 0x213b, 0x2140, 0x2144, 0x214a, 0x214d, 0x214f, 0x214f, 0x2190, 0x2307, 0x230c, 0x2328, 0x232b, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x249c, 0x24e9, 0x2500, 0x2767, 0x2794, 0x27c4, 0x27c7, 0x27e5, 0x27f0, 0x2982, 0x2999, 0x29d7, 0x29dc, 0x29fb, 0x29fe, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3004, 0x3004, 0x3012, 0x3013, 0x3020, 0x3020, 0x3036, 0x3037, 0x303e, 0x303f, 0x309b, 0x309c, 0x3190, 0x3191, 0x3196, 0x319f, 0x31c0, 0x31e3, 0x3200, 0x321e, 0x322a, 0x3247, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, 0x32c0, 0x32fe, 0x3300, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa700, 0xa716, 0xa720, 0xa721, 0xa789, 0xa78a, 0xa828, 0xa82b, 0xa836, 0xa839, 0xaa77, 0xaa79, 0xab5b, 0xab5b, 0xfb29, 0xfb29, 0xfbb2, 0xfbc1, 0xfdfc, 0xfdfd, 0xfe62, 0xfe62, 0xfe64, 0xfe66, 0xfe69, 0xfe69, 0xff04, 0xff04, 0xff0b, 0xff0b, 0xff1c, 0xff1e, 0xff3e, 0xff3e, 0xff40, 0xff40, 0xff5c, 0xff5c, 0xff5e, 0xff5e, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfffc, 0xfffd, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018c, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d164, 0x1d16a, 0x1d16c, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1dd, 0x1d200, 0x1d241, 0x1d245, 0x1d245, 0x1d300, 0x1d356, 0x1d6c1, 0x1d6c1, 0x1d6db, 0x1d6db, 0x1d6fb, 0x1d6fb, 0x1d715, 0x1d715, 0x1d735, 0x1d735, 0x1d74f, 0x1d74f, 0x1d76f, 0x1d76f, 0x1d789, 0x1d789, 0x1d7a9, 0x1d7a9, 0x1d7c3, 0x1d7c3, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b, 0x1f170, 0x1f19a, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23a, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, }; /* END of CR_S */ /* PROPERTY: 'Sc': General Category */ static const OnigCodePoint CR_Sc[] = { 17, 0x0024, 0x0024, 0x00a2, 0x00a5, 0x058f, 0x058f, 0x060b, 0x060b, 0x09f2, 0x09f3, 0x09fb, 0x09fb, 0x0af1, 0x0af1, 0x0bf9, 0x0bf9, 0x0e3f, 0x0e3f, 0x17db, 0x17db, 0x20a0, 0x20bd, 0xa838, 0xa838, 0xfdfc, 0xfdfc, 0xfe69, 0xfe69, 0xff04, 0xff04, 0xffe0, 0xffe1, 0xffe5, 0xffe6, }; /* END of CR_Sc */ /* PROPERTY: 'Sk': General Category */ static const OnigCodePoint CR_Sk[] = { 28, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b8, 0x00b8, 0x02c2, 0x02c5, 0x02d2, 0x02df, 0x02e5, 0x02eb, 0x02ed, 0x02ed, 0x02ef, 0x02ff, 0x0375, 0x0375, 0x0384, 0x0385, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, 0x309b, 0x309c, 0xa700, 0xa716, 0xa720, 0xa721, 0xa789, 0xa78a, 0xab5b, 0xab5b, 0xfbb2, 0xfbc1, 0xff3e, 0xff3e, 0xff40, 0xff40, 0xffe3, 0xffe3, }; /* END of CR_Sk */ /* PROPERTY: 'Sm': General Category */ static const OnigCodePoint CR_Sm[] = { 64, 0x002b, 0x002b, 0x003c, 0x003e, 0x007c, 0x007c, 0x007e, 0x007e, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00d7, 0x00d7, 0x00f7, 0x00f7, 0x03f6, 0x03f6, 0x0606, 0x0608, 0x2044, 0x2044, 0x2052, 0x2052, 0x207a, 0x207c, 0x208a, 0x208c, 0x2118, 0x2118, 0x2140, 0x2144, 0x214b, 0x214b, 0x2190, 0x2194, 0x219a, 0x219b, 0x21a0, 0x21a0, 0x21a3, 0x21a3, 0x21a6, 0x21a6, 0x21ae, 0x21ae, 0x21ce, 0x21cf, 0x21d2, 0x21d2, 0x21d4, 0x21d4, 0x21f4, 0x22ff, 0x2320, 0x2321, 0x237c, 0x237c, 0x239b, 0x23b3, 0x23dc, 0x23e1, 0x25b7, 0x25b7, 0x25c1, 0x25c1, 0x25f8, 0x25ff, 0x266f, 0x266f, 0x27c0, 0x27c4, 0x27c7, 0x27e5, 0x27f0, 0x27ff, 0x2900, 0x2982, 0x2999, 0x29d7, 0x29dc, 0x29fb, 0x29fe, 0x2aff, 0x2b30, 0x2b44, 0x2b47, 0x2b4c, 0xfb29, 0xfb29, 0xfe62, 0xfe62, 0xfe64, 0xfe66, 0xff0b, 0xff0b, 0xff1c, 0xff1e, 0xff5c, 0xff5c, 0xff5e, 0xff5e, 0xffe2, 0xffe2, 0xffe9, 0xffec, 0x1d6c1, 0x1d6c1, 0x1d6db, 0x1d6db, 0x1d6fb, 0x1d6fb, 0x1d715, 0x1d715, 0x1d735, 0x1d735, 0x1d74f, 0x1d74f, 0x1d76f, 0x1d76f, 0x1d789, 0x1d789, 0x1d7a9, 0x1d7a9, 0x1d7c3, 0x1d7c3, 0x1eef0, 0x1eef1, }; /* END of CR_Sm */ /* PROPERTY: 'So': General Category */ static const OnigCodePoint CR_So[] = { 165, 0x00a6, 0x00a6, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00b0, 0x00b0, 0x0482, 0x0482, 0x058d, 0x058e, 0x060e, 0x060f, 0x06de, 0x06de, 0x06e9, 0x06e9, 0x06fd, 0x06fe, 0x07f6, 0x07f6, 0x09fa, 0x09fa, 0x0b70, 0x0b70, 0x0bf3, 0x0bf8, 0x0bfa, 0x0bfa, 0x0c7f, 0x0c7f, 0x0d79, 0x0d79, 0x0f01, 0x0f03, 0x0f13, 0x0f13, 0x0f15, 0x0f17, 0x0f1a, 0x0f1f, 0x0f34, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fce, 0x0fcf, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, 0x1940, 0x1940, 0x19de, 0x19ff, 0x1b61, 0x1b6a, 0x1b74, 0x1b7c, 0x2100, 0x2101, 0x2103, 0x2106, 0x2108, 0x2109, 0x2114, 0x2114, 0x2116, 0x2117, 0x211e, 0x2123, 0x2125, 0x2125, 0x2127, 0x2127, 0x2129, 0x2129, 0x212e, 0x212e, 0x213a, 0x213b, 0x214a, 0x214a, 0x214c, 0x214d, 0x214f, 0x214f, 0x2195, 0x2199, 0x219c, 0x219f, 0x21a1, 0x21a2, 0x21a4, 0x21a5, 0x21a7, 0x21ad, 0x21af, 0x21cd, 0x21d0, 0x21d1, 0x21d3, 0x21d3, 0x21d5, 0x21f3, 0x2300, 0x2307, 0x230c, 0x231f, 0x2322, 0x2328, 0x232b, 0x237b, 0x237d, 0x239a, 0x23b4, 0x23db, 0x23e2, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x249c, 0x24e9, 0x2500, 0x25b6, 0x25b8, 0x25c0, 0x25c2, 0x25f7, 0x2600, 0x266e, 0x2670, 0x2767, 0x2794, 0x27bf, 0x2800, 0x28ff, 0x2b00, 0x2b2f, 0x2b45, 0x2b46, 0x2b4d, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3004, 0x3004, 0x3012, 0x3013, 0x3020, 0x3020, 0x3036, 0x3037, 0x303e, 0x303f, 0x3190, 0x3191, 0x3196, 0x319f, 0x31c0, 0x31e3, 0x3200, 0x321e, 0x322a, 0x3247, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, 0x32c0, 0x32fe, 0x3300, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa828, 0xa82b, 0xa836, 0xa837, 0xa839, 0xa839, 0xaa77, 0xaa79, 0xfdfd, 0xfdfd, 0xffe4, 0xffe4, 0xffe8, 0xffe8, 0xffed, 0xffee, 0xfffc, 0xfffd, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018c, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d164, 0x1d16a, 0x1d16c, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1dd, 0x1d200, 0x1d241, 0x1d245, 0x1d245, 0x1d300, 0x1d356, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b, 0x1f170, 0x1f19a, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23a, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, }; /* END of CR_So */ /* PROPERTY: 'Z': Major Category */ 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 */ /* PROPERTY: 'Zl': General Category */ static const OnigCodePoint CR_Zl[] = { 1, 0x2028, 0x2028, }; /* END of CR_Zl */ /* PROPERTY: 'Zp': General Category */ static const OnigCodePoint CR_Zp[] = { 1, 0x2029, 0x2029, }; /* END of CR_Zp */ /* PROPERTY: 'Zs': General Category */ static const OnigCodePoint CR_Zs[] = { 7, 0x0020, 0x0020, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Zs */ /* 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: '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 /* PROPERTY: 'Cased': Derived Property */ static const OnigCodePoint CR_Cased[] = { 127, 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, 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, 0xa7b1, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0x10400, 0x1044f, 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: 'Case_Ignorable': Derived Property */ static const OnigCodePoint CR_Case_Ignorable[] = { 335, 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, 0x08e4, 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, 0xa69d, 0xa69f, 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, 0xfe2d, 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, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, 0x112df, 0x112df, 0x112e3, 0x112ea, 0x11301, 0x11301, 0x1133c, 0x1133c, 0x11340, 0x11340, 0x11366, 0x1136c, 0x11370, 0x11374, 0x114b3, 0x114b8, 0x114ba, 0x114ba, 0x114bf, 0x114c0, 0x114c2, 0x114c3, 0x115b2, 0x115b5, 0x115bc, 0x115bd, 0x115bf, 0x115c0, 0x11633, 0x1163a, 0x1163d, 0x1163d, 0x1163f, 0x11640, 0x116ab, 0x116ab, 0x116ad, 0x116ad, 0x116b0, 0x116b5, 0x116b7, 0x116b7, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16b40, 0x16b43, 0x16f8f, 0x16f9f, 0x1bc9d, 0x1bc9e, 0x1bca0, 0x1bca3, 0x1d167, 0x1d169, 0x1d173, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, 0x1d242, 0x1d244, 0x1e8d0, 0x1e8d6, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, }; /* END of CR_Case_Ignorable */ /* PROPERTY: 'Changes_When_Lowercased': Derived Property */ static const OnigCodePoint CR_Changes_When_Lowercased[] = { 585, 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, 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, 0xa7b1, 0xff21, 0xff3a, 0x10400, 0x10427, 0x118a0, 0x118bf, }; /* END of CR_Changes_When_Lowercased */ /* PROPERTY: 'Changes_When_Uppercased': Derived Property */ static const OnigCodePoint CR_Changes_When_Uppercased[] = { 599, 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, 0x029e, 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, 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, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x118c0, 0x118df, }; /* END of CR_Changes_When_Uppercased */ /* PROPERTY: 'Changes_When_Titlecased': Derived Property */ static const OnigCodePoint CR_Changes_When_Titlecased[] = { 600, 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, 0x029e, 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, 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, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x118c0, 0x118df, }; /* END of CR_Changes_When_Titlecased */ /* PROPERTY: 'Changes_When_Casefolded': Derived Property */ static const OnigCodePoint CR_Changes_When_Casefolded[] = { 596, 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, 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, 0xa7b1, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0x10400, 0x10427, 0x118a0, 0x118bf, }; /* END of CR_Changes_When_Casefolded */ /* PROPERTY: 'Changes_When_Casemapped': Derived Property */ static const OnigCodePoint CR_Changes_When_Casemapped[] = { 107, 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, 0x029e, 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, 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, 0xa7b1, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff21, 0xff3a, 0xff41, 0xff5a, 0x10400, 0x1044f, 0x118a0, 0x118df, }; /* END of CR_Changes_When_Casemapped */ /* PROPERTY: 'ID_Start': Derived Property */ static const OnigCodePoint CR_ID_Start[] = { 538, 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, 0x08b2, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x13f4, 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, 0x19c1, 0x19c7, 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, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa67f, 0xa69d, 0xa6a0, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, 0xa840, 0xa873, 0xa882, 0xa8b3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 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, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x1122b, 0x112b0, 0x112de, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x1133d, 0x1135d, 0x11361, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115ae, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 0x2f800, 0x2fa1d, }; /* END of CR_ID_Start */ /* PROPERTY: 'ID_Continue': Derived Property */ static const OnigCodePoint CR_ID_Continue[] = { 626, 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, 0x08b2, 0x08e4, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x13f4, 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, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa66f, 0xa674, 0xa67d, 0xa67f, 0xa69d, 0xa69f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c4, 0xa8d0, 0xa8d9, 0xa8e0, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0xfe2d, 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, 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, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11237, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c0, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 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, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, }; /* END of CR_ID_Continue */ /* PROPERTY: 'XID_Start': Derived Property */ static const OnigCodePoint CR_XID_Start[] = { 545, 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, 0x037b, 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, 0x08b2, 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, 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, 0x0c59, 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, 0x0d60, 0x0d61, 0x0d7a, 0x0d7f, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0e01, 0x0e30, 0x0e32, 0x0e32, 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, 0x0eb2, 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, 0x13f4, 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, 0x19c1, 0x19c7, 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, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa67f, 0xa69d, 0xa6a0, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa822, 0xa840, 0xa873, 0xa882, 0xa8b3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0xfc5d, 0xfc64, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdf9, 0xfe71, 0xfe71, 0xfe73, 0xfe73, 0xfe77, 0xfe77, 0xfe79, 0xfe79, 0xfe7b, 0xfe7b, 0xfe7d, 0xfe7d, 0xfe7f, 0xfefc, 0xff21, 0xff3a, 0xff41, 0xff5a, 0xff66, 0xff9d, 0xffa0, 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, 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, 0x11003, 0x11037, 0x11083, 0x110af, 0x110d0, 0x110e8, 0x11103, 0x11126, 0x11150, 0x11172, 0x11176, 0x11176, 0x11183, 0x111b2, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x1122b, 0x112b0, 0x112de, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x1133d, 0x1135d, 0x11361, 0x11480, 0x114af, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115ae, 0x11600, 0x1162f, 0x11644, 0x11644, 0x11680, 0x116aa, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 0x2f800, 0x2fa1d, }; /* END of CR_XID_Start */ /* PROPERTY: 'XID_Continue': Derived Property */ static const OnigCodePoint CR_XID_Continue[] = { 633, 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, 0x08b2, 0x08e4, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x13f4, 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, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa66f, 0xa674, 0xa67d, 0xa67f, 0xa69d, 0xa69f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c4, 0xa8d0, 0xa8d9, 0xa8e0, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0xfe2d, 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, 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, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11237, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c0, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 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, 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[] = { 272, 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, 0x08e4, 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, 0xa69f, 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, 0xfe2d, 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, 0x1122f, 0x11231, 0x11234, 0x11234, 0x11236, 0x11237, 0x112df, 0x112df, 0x112e3, 0x112ea, 0x11301, 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, 0x11633, 0x1163a, 0x1163d, 0x1163d, 0x1163f, 0x11640, 0x116ab, 0x116ab, 0x116ad, 0x116ad, 0x116b0, 0x116b5, 0x116b7, 0x116b7, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d165, 0x1d167, 0x1d169, 0x1d16e, 0x1d172, 0x1d17b, 0x1d182, 0x1d185, 0x1d18b, 0x1d1aa, 0x1d1ad, 0x1d242, 0x1d244, 0x1e8d0, 0x1e8d6, 0xe0100, 0xe01ef, }; /* END of CR_Grapheme_Extend */ /* PROPERTY: 'Grapheme_Base': Derived Property */ static const OnigCodePoint CR_Grapheme_Base[] = { 724, 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, 0x08b2, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x13f4, 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, 0x20bd, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 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, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa66e, 0xa673, 0xa673, 0xa67e, 0xa69d, 0xa6a0, 0xa6ef, 0xa6f2, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa824, 0xa827, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c3, 0xa8ce, 0xa8d9, 0xa8f2, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 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, 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, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1122e, 0x11232, 0x11233, 0x11235, 0x11235, 0x11238, 0x1123d, 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, 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, 0x115c9, 0x11600, 0x11632, 0x1163b, 0x1163c, 0x1163e, 0x1163e, 0x11641, 0x11644, 0x11650, 0x11659, 0x11680, 0x116aa, 0x116ac, 0x116ac, 0x116ae, 0x116af, 0x116b6, 0x116b6, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 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, 0x1d1dd, 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, 0x1d7ff, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Grapheme_Base */ /* PROPERTY: 'Grapheme_Link': Derived Property */ static const OnigCodePoint CR_Grapheme_Link[] = { 40, 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, }; /* END of CR_Grapheme_Link */ /* PROPERTY: 'Common': Script */ static const OnigCodePoint CR_Common[] = { 165, 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, 0x0660, 0x0669, 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, 0x20bd, 0x2100, 0x2125, 0x2127, 0x2129, 0x212c, 0x2131, 0x2133, 0x214d, 0x214f, 0x215f, 0x2189, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x27ff, 0x2900, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 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, 0x1d1dd, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0xe0001, 0xe0001, 0xe0020, 0xe007f, }; /* END of CR_Common */ /* PROPERTY: 'Latin': Script */ static const OnigCodePoint CR_Latin[] = { 33, 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, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa7ff, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 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, 0xa69d, 0xa69f, 0xa69f, }; /* 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[] = { 55, 0x0600, 0x0604, 0x0606, 0x060b, 0x060d, 0x061a, 0x061e, 0x061e, 0x0620, 0x063f, 0x0641, 0x064a, 0x0656, 0x065f, 0x066a, 0x066f, 0x0671, 0x06dc, 0x06de, 0x06ff, 0x0750, 0x077f, 0x08a0, 0x08b2, 0x08e4, 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, 0xa8fb, }; /* 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[] = { 13, 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, }; /* 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, 0x0c59, 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, 0x0d60, 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[] = { 1, 0x13a0, 0x13f4, }; /* 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[] = { 15, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x3005, 0x3005, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303b, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Han */ /* PROPERTY: 'Yi': Script */ static const OnigCodePoint CR_Yi[] = { 2, 0xa000, 0xa48c, 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[] = { 3, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, }; /* 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[] = { 2, 0x109a0, 0x109b7, 0x109be, 0x109bf, }; /* 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[] = { 3, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, }; /* 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[] = { 14, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 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, 0x115c9, }; /* 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: '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[] = { 86, 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, 0x11238, 0x1123c, 0x115c2, 0x115c5, 0x115c9, 0x115c9, 0x11641, 0x11642, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b39, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, }; /* 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, 0x08e4, 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, 0x19b0, 0x19c0, 0x19c8, 0x19c9, 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, 0xa69f, 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, 0x11301, 0x11303, 0x1133e, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11357, 0x11357, 0x11362, 0x11363, 0x114b0, 0x114c1, 0x115af, 0x115b5, 0x115b8, 0x115be, 0x11630, 0x1163e, 0x11640, 0x11640, 0x116ab, 0x116b5, 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[] = { 11, 0x3006, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Ideographic */ /* PROPERTY: 'Diacritic': Binary Property */ static const OnigCodePoint CR_Diacritic[] = { 145, 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, 0x08e4, 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, 0xfe2d, 0xff3e, 0xff3e, 0xff40, 0xff40, 0xff70, 0xff70, 0xff9e, 0xff9f, 0xffe3, 0xffe3, 0x102e0, 0x102e0, 0x10ae5, 0x10ae6, 0x110b9, 0x110ba, 0x11133, 0x11134, 0x11173, 0x11173, 0x111c0, 0x111c0, 0x11235, 0x11236, 0x112e9, 0x112ea, 0x1133c, 0x1133c, 0x1134d, 0x1134d, 0x11366, 0x1136c, 0x11370, 0x11374, 0x114c2, 0x114c3, 0x115bf, 0x115c0, 0x1163f, 0x1163f, 0x116b6, 0x116b7, 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[] = { 12, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xfa0e, 0xfa0f, 0xfa11, 0xfa11, 0xfa13, 0xfa14, 0xfa1f, 0xfa1f, 0xfa21, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa29, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, }; /* 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, 0xe0020, 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[] = { 5, 0x0e40, 0x0e44, 0x0ec0, 0x0ec4, 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 */ static const OnigCodePoint CR_Other_ID_Continue[] = { 4, 0x00b7, 0x00b7, 0x0387, 0x0387, 0x1369, 0x1371, 0x19da, 0x19da, }; /* END of CR_Other_ID_Continue */ /* PROPERTY: 'STerm': Binary Property */ static const OnigCodePoint CR_STerm[] = { 60, 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, 0x11238, 0x11239, 0x1123b, 0x1123c, 0x115c2, 0x115c3, 0x115c9, 0x115c9, 0x11641, 0x11642, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b38, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, }; /* END of CR_STerm */ /* PROPERTY: 'Variation_Selector': Binary Property */ static const OnigCodePoint CR_Variation_Selector[] = { 3, 0x180b, 0x180d, 0xfe00, 0xfe0f, 0xe0100, 0xe01ef, }; /* END of CR_Variation_Selector */ /* 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: '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[] = { 598, 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, 0x08b3, 0x08e3, 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, 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, 0x0c5a, 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, 0x0d5f, 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, 0x13f5, 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, 0x20be, 0x20cf, 0x20f1, 0x20ff, 0x218a, 0x218f, 0x23fb, 0x23ff, 0x2427, 0x243f, 0x244b, 0x245f, 0x2b74, 0x2b75, 0x2b96, 0x2b97, 0x2bba, 0x2bbc, 0x2bc9, 0x2bc9, 0x2bd2, 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, 0x9fcd, 0x9fff, 0xa48d, 0xa48f, 0xa4c7, 0xa4cf, 0xa62c, 0xa63f, 0xa69e, 0xa69e, 0xa6f8, 0xa6ff, 0xa78f, 0xa78f, 0xa7ae, 0xa7af, 0xa7b2, 0xa7f6, 0xa82c, 0xa82f, 0xa83a, 0xa83f, 0xa878, 0xa87f, 0xa8c5, 0xa8cd, 0xa8da, 0xa8df, 0xa8fc, 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, 0xab60, 0xab63, 0xab66, 0xabbf, 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, 0xfe2e, 0xfe2f, 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, 0x108ff, 0x1091c, 0x1091e, 0x1093a, 0x1093e, 0x10940, 0x1097f, 0x109b8, 0x109bd, 0x109c0, 0x109ff, 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, 0x10e5f, 0x10e7f, 0x10fff, 0x1104e, 0x11051, 0x11070, 0x1107e, 0x110c2, 0x110cf, 0x110e9, 0x110ef, 0x110fa, 0x110ff, 0x11135, 0x11135, 0x11144, 0x1114f, 0x11177, 0x1117f, 0x111c9, 0x111cc, 0x111ce, 0x111cf, 0x111db, 0x111e0, 0x111f5, 0x111ff, 0x11212, 0x11212, 0x1123e, 0x112af, 0x112eb, 0x112ef, 0x112fa, 0x11300, 0x11304, 0x11304, 0x1130d, 0x1130e, 0x11311, 0x11312, 0x11329, 0x11329, 0x11331, 0x11331, 0x11334, 0x11334, 0x1133a, 0x1133b, 0x11345, 0x11346, 0x11349, 0x1134a, 0x1134e, 0x11356, 0x11358, 0x1135c, 0x11364, 0x11365, 0x1136d, 0x1136f, 0x11375, 0x1147f, 0x114c8, 0x114cf, 0x114da, 0x1157f, 0x115b6, 0x115b7, 0x115ca, 0x115ff, 0x11645, 0x1164f, 0x1165a, 0x1167f, 0x116b8, 0x116bf, 0x116ca, 0x1189f, 0x118f3, 0x118fe, 0x11900, 0x11abf, 0x11af9, 0x11fff, 0x12399, 0x123ff, 0x1246f, 0x1246f, 0x12475, 0x12fff, 0x1342f, 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, 0x1d1de, 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, 0x1d800, 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, 0x1f32d, 0x1f32f, 0x1f37e, 0x1f37f, 0x1f3cf, 0x1f3d3, 0x1f3f8, 0x1f3ff, 0x1f4ff, 0x1f4ff, 0x1f54b, 0x1f54f, 0x1f57a, 0x1f57a, 0x1f5a4, 0x1f5a4, 0x1f643, 0x1f644, 0x1f6d0, 0x1f6df, 0x1f6ed, 0x1f6ef, 0x1f6f4, 0x1f6ff, 0x1f774, 0x1f77f, 0x1f7d5, 0x1f7ff, 0x1f80c, 0x1f80f, 0x1f848, 0x1f84f, 0x1f85a, 0x1f85f, 0x1f888, 0x1f88f, 0x1f8ae, 0x1ffff, 0x2a6d7, 0x2a6ff, 0x2b735, 0x2b73f, 0x2b81e, 0x2f7ff, 0x2fa1e, 0xe0000, 0xe0002, 0xe001f, 0xe0080, 0xe00ff, 0xe01f0, 0x10ffff, }; /* END of CR_Unknown */ /* PROPERTY: 'In_Basic_Latin': Block */ #define CR_In_Basic_Latin CR_ASCII /* PROPERTY: 'In_Latin_1_Supplement': Block */ static const OnigCodePoint CR_In_Latin_1_Supplement[] = { 1, 0x0080, 0x00ff, }; /* END of CR_In_Latin_1_Supplement */ /* PROPERTY: 'In_Latin_Extended_A': Block */ static const OnigCodePoint CR_In_Latin_Extended_A[] = { 1, 0x0100, 0x017f, }; /* END of CR_In_Latin_Extended_A */ /* PROPERTY: 'In_Latin_Extended_B': Block */ static const OnigCodePoint CR_In_Latin_Extended_B[] = { 1, 0x0180, 0x024f, }; /* END of CR_In_Latin_Extended_B */ /* PROPERTY: 'In_IPA_Extensions': Block */ static const OnigCodePoint CR_In_IPA_Extensions[] = { 1, 0x0250, 0x02af, }; /* END of CR_In_IPA_Extensions */ /* PROPERTY: 'In_Spacing_Modifier_Letters': Block */ static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = { 1, 0x02b0, 0x02ff, }; /* END of CR_In_Spacing_Modifier_Letters */ /* PROPERTY: 'In_Combining_Diacritical_Marks': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = { 1, 0x0300, 0x036f, }; /* END of CR_In_Combining_Diacritical_Marks */ /* PROPERTY: 'In_Greek_and_Coptic': Block */ static const OnigCodePoint CR_In_Greek_and_Coptic[] = { 1, 0x0370, 0x03ff, }; /* END of CR_In_Greek_and_Coptic */ /* PROPERTY: 'In_Cyrillic': Block */ static const OnigCodePoint CR_In_Cyrillic[] = { 1, 0x0400, 0x04ff, }; /* END of CR_In_Cyrillic */ /* PROPERTY: 'In_Cyrillic_Supplement': Block */ static const OnigCodePoint CR_In_Cyrillic_Supplement[] = { 1, 0x0500, 0x052f, }; /* END of CR_In_Cyrillic_Supplement */ /* PROPERTY: 'In_Armenian': Block */ static const OnigCodePoint CR_In_Armenian[] = { 1, 0x0530, 0x058f, }; /* END of CR_In_Armenian */ /* PROPERTY: 'In_Hebrew': Block */ static const OnigCodePoint CR_In_Hebrew[] = { 1, 0x0590, 0x05ff, }; /* END of CR_In_Hebrew */ /* PROPERTY: 'In_Arabic': Block */ static const OnigCodePoint CR_In_Arabic[] = { 1, 0x0600, 0x06ff, }; /* END of CR_In_Arabic */ /* PROPERTY: 'In_Syriac': Block */ static const OnigCodePoint CR_In_Syriac[] = { 1, 0x0700, 0x074f, }; /* END of CR_In_Syriac */ /* PROPERTY: 'In_Arabic_Supplement': Block */ static const OnigCodePoint CR_In_Arabic_Supplement[] = { 1, 0x0750, 0x077f, }; /* END of CR_In_Arabic_Supplement */ /* PROPERTY: 'In_Thaana': Block */ static const OnigCodePoint CR_In_Thaana[] = { 1, 0x0780, 0x07bf, }; /* END of CR_In_Thaana */ /* PROPERTY: 'In_NKo': Block */ static const OnigCodePoint CR_In_NKo[] = { 1, 0x07c0, 0x07ff, }; /* END of CR_In_NKo */ /* PROPERTY: 'In_Samaritan': Block */ static const OnigCodePoint CR_In_Samaritan[] = { 1, 0x0800, 0x083f, }; /* END of CR_In_Samaritan */ /* PROPERTY: 'In_Mandaic': Block */ static const OnigCodePoint CR_In_Mandaic[] = { 1, 0x0840, 0x085f, }; /* END of CR_In_Mandaic */ /* PROPERTY: 'In_Arabic_Extended_A': Block */ static const OnigCodePoint CR_In_Arabic_Extended_A[] = { 1, 0x08a0, 0x08ff, }; /* END of CR_In_Arabic_Extended_A */ /* PROPERTY: 'In_Devanagari': Block */ static const OnigCodePoint CR_In_Devanagari[] = { 1, 0x0900, 0x097f, }; /* END of CR_In_Devanagari */ /* PROPERTY: 'In_Bengali': Block */ static const OnigCodePoint CR_In_Bengali[] = { 1, 0x0980, 0x09ff, }; /* END of CR_In_Bengali */ /* PROPERTY: 'In_Gurmukhi': Block */ static const OnigCodePoint CR_In_Gurmukhi[] = { 1, 0x0a00, 0x0a7f, }; /* END of CR_In_Gurmukhi */ /* PROPERTY: 'In_Gujarati': Block */ static const OnigCodePoint CR_In_Gujarati[] = { 1, 0x0a80, 0x0aff, }; /* END of CR_In_Gujarati */ /* PROPERTY: 'In_Oriya': Block */ static const OnigCodePoint CR_In_Oriya[] = { 1, 0x0b00, 0x0b7f, }; /* END of CR_In_Oriya */ /* PROPERTY: 'In_Tamil': Block */ static const OnigCodePoint CR_In_Tamil[] = { 1, 0x0b80, 0x0bff, }; /* END of CR_In_Tamil */ /* PROPERTY: 'In_Telugu': Block */ static const OnigCodePoint CR_In_Telugu[] = { 1, 0x0c00, 0x0c7f, }; /* END of CR_In_Telugu */ /* PROPERTY: 'In_Kannada': Block */ static const OnigCodePoint CR_In_Kannada[] = { 1, 0x0c80, 0x0cff, }; /* END of CR_In_Kannada */ /* PROPERTY: 'In_Malayalam': Block */ static const OnigCodePoint CR_In_Malayalam[] = { 1, 0x0d00, 0x0d7f, }; /* END of CR_In_Malayalam */ /* PROPERTY: 'In_Sinhala': Block */ static const OnigCodePoint CR_In_Sinhala[] = { 1, 0x0d80, 0x0dff, }; /* END of CR_In_Sinhala */ /* PROPERTY: 'In_Thai': Block */ static const OnigCodePoint CR_In_Thai[] = { 1, 0x0e00, 0x0e7f, }; /* END of CR_In_Thai */ /* PROPERTY: 'In_Lao': Block */ static const OnigCodePoint CR_In_Lao[] = { 1, 0x0e80, 0x0eff, }; /* END of CR_In_Lao */ /* PROPERTY: 'In_Tibetan': Block */ static const OnigCodePoint CR_In_Tibetan[] = { 1, 0x0f00, 0x0fff, }; /* END of CR_In_Tibetan */ /* PROPERTY: 'In_Myanmar': Block */ static const OnigCodePoint CR_In_Myanmar[] = { 1, 0x1000, 0x109f, }; /* END of CR_In_Myanmar */ /* PROPERTY: 'In_Georgian': Block */ static const OnigCodePoint CR_In_Georgian[] = { 1, 0x10a0, 0x10ff, }; /* END of CR_In_Georgian */ /* PROPERTY: 'In_Hangul_Jamo': Block */ static const OnigCodePoint CR_In_Hangul_Jamo[] = { 1, 0x1100, 0x11ff, }; /* END of CR_In_Hangul_Jamo */ /* PROPERTY: 'In_Ethiopic': Block */ static const OnigCodePoint CR_In_Ethiopic[] = { 1, 0x1200, 0x137f, }; /* END of CR_In_Ethiopic */ /* PROPERTY: 'In_Ethiopic_Supplement': Block */ static const OnigCodePoint CR_In_Ethiopic_Supplement[] = { 1, 0x1380, 0x139f, }; /* END of CR_In_Ethiopic_Supplement */ /* PROPERTY: 'In_Cherokee': Block */ static const OnigCodePoint CR_In_Cherokee[] = { 1, 0x13a0, 0x13ff, }; /* END of CR_In_Cherokee */ /* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics': Block */ static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = { 1, 0x1400, 0x167f, }; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics */ /* PROPERTY: 'In_Ogham': Block */ static const OnigCodePoint CR_In_Ogham[] = { 1, 0x1680, 0x169f, }; /* END of CR_In_Ogham */ /* PROPERTY: 'In_Runic': Block */ static const OnigCodePoint CR_In_Runic[] = { 1, 0x16a0, 0x16ff, }; /* END of CR_In_Runic */ /* PROPERTY: 'In_Tagalog': Block */ static const OnigCodePoint CR_In_Tagalog[] = { 1, 0x1700, 0x171f, }; /* END of CR_In_Tagalog */ /* PROPERTY: 'In_Hanunoo': Block */ static const OnigCodePoint CR_In_Hanunoo[] = { 1, 0x1720, 0x173f, }; /* END of CR_In_Hanunoo */ /* PROPERTY: 'In_Buhid': Block */ static const OnigCodePoint CR_In_Buhid[] = { 1, 0x1740, 0x175f, }; /* END of CR_In_Buhid */ /* PROPERTY: 'In_Tagbanwa': Block */ static const OnigCodePoint CR_In_Tagbanwa[] = { 1, 0x1760, 0x177f, }; /* END of CR_In_Tagbanwa */ /* PROPERTY: 'In_Khmer': Block */ static const OnigCodePoint CR_In_Khmer[] = { 1, 0x1780, 0x17ff, }; /* END of CR_In_Khmer */ /* PROPERTY: 'In_Mongolian': Block */ static const OnigCodePoint CR_In_Mongolian[] = { 1, 0x1800, 0x18af, }; /* END of CR_In_Mongolian */ /* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */ static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = { 1, 0x18b0, 0x18ff, }; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */ /* PROPERTY: 'In_Limbu': Block */ static const OnigCodePoint CR_In_Limbu[] = { 1, 0x1900, 0x194f, }; /* END of CR_In_Limbu */ /* PROPERTY: 'In_Tai_Le': Block */ static const OnigCodePoint CR_In_Tai_Le[] = { 1, 0x1950, 0x197f, }; /* END of CR_In_Tai_Le */ /* PROPERTY: 'In_New_Tai_Lue': Block */ static const OnigCodePoint CR_In_New_Tai_Lue[] = { 1, 0x1980, 0x19df, }; /* END of CR_In_New_Tai_Lue */ /* PROPERTY: 'In_Khmer_Symbols': Block */ static const OnigCodePoint CR_In_Khmer_Symbols[] = { 1, 0x19e0, 0x19ff, }; /* END of CR_In_Khmer_Symbols */ /* PROPERTY: 'In_Buginese': Block */ static const OnigCodePoint CR_In_Buginese[] = { 1, 0x1a00, 0x1a1f, }; /* END of CR_In_Buginese */ /* PROPERTY: 'In_Tai_Tham': Block */ static const OnigCodePoint CR_In_Tai_Tham[] = { 1, 0x1a20, 0x1aaf, }; /* END of CR_In_Tai_Tham */ /* PROPERTY: 'In_Combining_Diacritical_Marks_Extended': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Extended[] = { 1, 0x1ab0, 0x1aff, }; /* END of CR_In_Combining_Diacritical_Marks_Extended */ /* PROPERTY: 'In_Balinese': Block */ static const OnigCodePoint CR_In_Balinese[] = { 1, 0x1b00, 0x1b7f, }; /* END of CR_In_Balinese */ /* PROPERTY: 'In_Sundanese': Block */ static const OnigCodePoint CR_In_Sundanese[] = { 1, 0x1b80, 0x1bbf, }; /* END of CR_In_Sundanese */ /* PROPERTY: 'In_Batak': Block */ static const OnigCodePoint CR_In_Batak[] = { 1, 0x1bc0, 0x1bff, }; /* END of CR_In_Batak */ /* PROPERTY: 'In_Lepcha': Block */ static const OnigCodePoint CR_In_Lepcha[] = { 1, 0x1c00, 0x1c4f, }; /* END of CR_In_Lepcha */ /* PROPERTY: 'In_Ol_Chiki': Block */ #define CR_In_Ol_Chiki CR_Ol_Chiki /* PROPERTY: 'In_Sundanese_Supplement': Block */ static const OnigCodePoint CR_In_Sundanese_Supplement[] = { 1, 0x1cc0, 0x1ccf, }; /* END of CR_In_Sundanese_Supplement */ /* PROPERTY: 'In_Vedic_Extensions': Block */ static const OnigCodePoint CR_In_Vedic_Extensions[] = { 1, 0x1cd0, 0x1cff, }; /* END of CR_In_Vedic_Extensions */ /* PROPERTY: 'In_Phonetic_Extensions': Block */ static const OnigCodePoint CR_In_Phonetic_Extensions[] = { 1, 0x1d00, 0x1d7f, }; /* END of CR_In_Phonetic_Extensions */ /* PROPERTY: 'In_Phonetic_Extensions_Supplement': Block */ static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = { 1, 0x1d80, 0x1dbf, }; /* END of CR_In_Phonetic_Extensions_Supplement */ /* PROPERTY: 'In_Combining_Diacritical_Marks_Supplement': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = { 1, 0x1dc0, 0x1dff, }; /* END of CR_In_Combining_Diacritical_Marks_Supplement */ /* PROPERTY: 'In_Latin_Extended_Additional': Block */ static const OnigCodePoint CR_In_Latin_Extended_Additional[] = { 1, 0x1e00, 0x1eff, }; /* END of CR_In_Latin_Extended_Additional */ /* PROPERTY: 'In_Greek_Extended': Block */ static const OnigCodePoint CR_In_Greek_Extended[] = { 1, 0x1f00, 0x1fff, }; /* END of CR_In_Greek_Extended */ /* PROPERTY: 'In_General_Punctuation': Block */ static const OnigCodePoint CR_In_General_Punctuation[] = { 1, 0x2000, 0x206f, }; /* END of CR_In_General_Punctuation */ /* PROPERTY: 'In_Superscripts_and_Subscripts': Block */ static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = { 1, 0x2070, 0x209f, }; /* END of CR_In_Superscripts_and_Subscripts */ /* PROPERTY: 'In_Currency_Symbols': Block */ static const OnigCodePoint CR_In_Currency_Symbols[] = { 1, 0x20a0, 0x20cf, }; /* END of CR_In_Currency_Symbols */ /* PROPERTY: 'In_Combining_Diacritical_Marks_for_Symbols': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = { 1, 0x20d0, 0x20ff, }; /* END of CR_In_Combining_Diacritical_Marks_for_Symbols */ /* PROPERTY: 'In_Letterlike_Symbols': Block */ static const OnigCodePoint CR_In_Letterlike_Symbols[] = { 1, 0x2100, 0x214f, }; /* END of CR_In_Letterlike_Symbols */ /* PROPERTY: 'In_Number_Forms': Block */ static const OnigCodePoint CR_In_Number_Forms[] = { 1, 0x2150, 0x218f, }; /* END of CR_In_Number_Forms */ /* PROPERTY: 'In_Arrows': Block */ static const OnigCodePoint CR_In_Arrows[] = { 1, 0x2190, 0x21ff, }; /* END of CR_In_Arrows */ /* PROPERTY: 'In_Mathematical_Operators': Block */ static const OnigCodePoint CR_In_Mathematical_Operators[] = { 1, 0x2200, 0x22ff, }; /* END of CR_In_Mathematical_Operators */ /* PROPERTY: 'In_Miscellaneous_Technical': Block */ static const OnigCodePoint CR_In_Miscellaneous_Technical[] = { 1, 0x2300, 0x23ff, }; /* END of CR_In_Miscellaneous_Technical */ /* PROPERTY: 'In_Control_Pictures': Block */ static const OnigCodePoint CR_In_Control_Pictures[] = { 1, 0x2400, 0x243f, }; /* END of CR_In_Control_Pictures */ /* PROPERTY: 'In_Optical_Character_Recognition': Block */ static const OnigCodePoint CR_In_Optical_Character_Recognition[] = { 1, 0x2440, 0x245f, }; /* END of CR_In_Optical_Character_Recognition */ /* PROPERTY: 'In_Enclosed_Alphanumerics': Block */ static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = { 1, 0x2460, 0x24ff, }; /* END of CR_In_Enclosed_Alphanumerics */ /* PROPERTY: 'In_Box_Drawing': Block */ static const OnigCodePoint CR_In_Box_Drawing[] = { 1, 0x2500, 0x257f, }; /* END of CR_In_Box_Drawing */ /* PROPERTY: 'In_Block_Elements': Block */ static const OnigCodePoint CR_In_Block_Elements[] = { 1, 0x2580, 0x259f, }; /* END of CR_In_Block_Elements */ /* PROPERTY: 'In_Geometric_Shapes': Block */ static const OnigCodePoint CR_In_Geometric_Shapes[] = { 1, 0x25a0, 0x25ff, }; /* END of CR_In_Geometric_Shapes */ /* PROPERTY: 'In_Miscellaneous_Symbols': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = { 1, 0x2600, 0x26ff, }; /* END of CR_In_Miscellaneous_Symbols */ /* PROPERTY: 'In_Dingbats': Block */ static const OnigCodePoint CR_In_Dingbats[] = { 1, 0x2700, 0x27bf, }; /* END of CR_In_Dingbats */ /* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_A': Block */ static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = { 1, 0x27c0, 0x27ef, }; /* END of CR_In_Miscellaneous_Mathematical_Symbols_A */ /* PROPERTY: 'In_Supplemental_Arrows_A': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = { 1, 0x27f0, 0x27ff, }; /* END of CR_In_Supplemental_Arrows_A */ /* PROPERTY: 'In_Braille_Patterns': Block */ #define CR_In_Braille_Patterns CR_Braille /* PROPERTY: 'In_Supplemental_Arrows_B': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = { 1, 0x2900, 0x297f, }; /* END of CR_In_Supplemental_Arrows_B */ /* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_B': Block */ static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = { 1, 0x2980, 0x29ff, }; /* END of CR_In_Miscellaneous_Mathematical_Symbols_B */ /* PROPERTY: 'In_Supplemental_Mathematical_Operators': Block */ static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = { 1, 0x2a00, 0x2aff, }; /* END of CR_In_Supplemental_Mathematical_Operators */ /* PROPERTY: 'In_Miscellaneous_Symbols_and_Arrows': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = { 1, 0x2b00, 0x2bff, }; /* END of CR_In_Miscellaneous_Symbols_and_Arrows */ /* PROPERTY: 'In_Glagolitic': Block */ static const OnigCodePoint CR_In_Glagolitic[] = { 1, 0x2c00, 0x2c5f, }; /* END of CR_In_Glagolitic */ /* PROPERTY: 'In_Latin_Extended_C': Block */ static const OnigCodePoint CR_In_Latin_Extended_C[] = { 1, 0x2c60, 0x2c7f, }; /* END of CR_In_Latin_Extended_C */ /* PROPERTY: 'In_Coptic': Block */ static const OnigCodePoint CR_In_Coptic[] = { 1, 0x2c80, 0x2cff, }; /* END of CR_In_Coptic */ /* PROPERTY: 'In_Georgian_Supplement': Block */ static const OnigCodePoint CR_In_Georgian_Supplement[] = { 1, 0x2d00, 0x2d2f, }; /* END of CR_In_Georgian_Supplement */ /* PROPERTY: 'In_Tifinagh': Block */ static const OnigCodePoint CR_In_Tifinagh[] = { 1, 0x2d30, 0x2d7f, }; /* END of CR_In_Tifinagh */ /* PROPERTY: 'In_Ethiopic_Extended': Block */ static const OnigCodePoint CR_In_Ethiopic_Extended[] = { 1, 0x2d80, 0x2ddf, }; /* END of CR_In_Ethiopic_Extended */ /* PROPERTY: 'In_Cyrillic_Extended_A': Block */ static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = { 1, 0x2de0, 0x2dff, }; /* END of CR_In_Cyrillic_Extended_A */ /* PROPERTY: 'In_Supplemental_Punctuation': Block */ static const OnigCodePoint CR_In_Supplemental_Punctuation[] = { 1, 0x2e00, 0x2e7f, }; /* END of CR_In_Supplemental_Punctuation */ /* PROPERTY: 'In_CJK_Radicals_Supplement': Block */ static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = { 1, 0x2e80, 0x2eff, }; /* END of CR_In_CJK_Radicals_Supplement */ /* PROPERTY: 'In_Kangxi_Radicals': Block */ static const OnigCodePoint CR_In_Kangxi_Radicals[] = { 1, 0x2f00, 0x2fdf, }; /* END of CR_In_Kangxi_Radicals */ /* PROPERTY: 'In_Ideographic_Description_Characters': Block */ static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = { 1, 0x2ff0, 0x2fff, }; /* END of CR_In_Ideographic_Description_Characters */ /* PROPERTY: 'In_CJK_Symbols_and_Punctuation': Block */ static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = { 1, 0x3000, 0x303f, }; /* END of CR_In_CJK_Symbols_and_Punctuation */ /* PROPERTY: 'In_Hiragana': Block */ static const OnigCodePoint CR_In_Hiragana[] = { 1, 0x3040, 0x309f, }; /* END of CR_In_Hiragana */ /* PROPERTY: 'In_Katakana': Block */ static const OnigCodePoint CR_In_Katakana[] = { 1, 0x30a0, 0x30ff, }; /* END of CR_In_Katakana */ /* PROPERTY: 'In_Bopomofo': Block */ static const OnigCodePoint CR_In_Bopomofo[] = { 1, 0x3100, 0x312f, }; /* END of CR_In_Bopomofo */ /* PROPERTY: 'In_Hangul_Compatibility_Jamo': Block */ static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = { 1, 0x3130, 0x318f, }; /* END of CR_In_Hangul_Compatibility_Jamo */ /* PROPERTY: 'In_Kanbun': Block */ static const OnigCodePoint CR_In_Kanbun[] = { 1, 0x3190, 0x319f, }; /* END of CR_In_Kanbun */ /* PROPERTY: 'In_Bopomofo_Extended': Block */ static const OnigCodePoint CR_In_Bopomofo_Extended[] = { 1, 0x31a0, 0x31bf, }; /* END of CR_In_Bopomofo_Extended */ /* PROPERTY: 'In_CJK_Strokes': Block */ static const OnigCodePoint CR_In_CJK_Strokes[] = { 1, 0x31c0, 0x31ef, }; /* END of CR_In_CJK_Strokes */ /* PROPERTY: 'In_Katakana_Phonetic_Extensions': Block */ static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = { 1, 0x31f0, 0x31ff, }; /* END of CR_In_Katakana_Phonetic_Extensions */ /* PROPERTY: 'In_Enclosed_CJK_Letters_and_Months': Block */ static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = { 1, 0x3200, 0x32ff, }; /* END of CR_In_Enclosed_CJK_Letters_and_Months */ /* PROPERTY: 'In_CJK_Compatibility': Block */ static const OnigCodePoint CR_In_CJK_Compatibility[] = { 1, 0x3300, 0x33ff, }; /* END of CR_In_CJK_Compatibility */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_A': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = { 1, 0x3400, 0x4dbf, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_A */ /* PROPERTY: 'In_Yijing_Hexagram_Symbols': Block */ static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = { 1, 0x4dc0, 0x4dff, }; /* END of CR_In_Yijing_Hexagram_Symbols */ /* PROPERTY: 'In_CJK_Unified_Ideographs': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = { 1, 0x4e00, 0x9fff, }; /* END of CR_In_CJK_Unified_Ideographs */ /* PROPERTY: 'In_Yi_Syllables': Block */ static const OnigCodePoint CR_In_Yi_Syllables[] = { 1, 0xa000, 0xa48f, }; /* END of CR_In_Yi_Syllables */ /* PROPERTY: 'In_Yi_Radicals': Block */ static const OnigCodePoint CR_In_Yi_Radicals[] = { 1, 0xa490, 0xa4cf, }; /* END of CR_In_Yi_Radicals */ /* PROPERTY: 'In_Lisu': Block */ #define CR_In_Lisu CR_Lisu /* PROPERTY: 'In_Vai': Block */ static const OnigCodePoint CR_In_Vai[] = { 1, 0xa500, 0xa63f, }; /* END of CR_In_Vai */ /* PROPERTY: 'In_Cyrillic_Extended_B': Block */ static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = { 1, 0xa640, 0xa69f, }; /* END of CR_In_Cyrillic_Extended_B */ /* PROPERTY: 'In_Bamum': Block */ static const OnigCodePoint CR_In_Bamum[] = { 1, 0xa6a0, 0xa6ff, }; /* END of CR_In_Bamum */ /* PROPERTY: 'In_Modifier_Tone_Letters': Block */ static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = { 1, 0xa700, 0xa71f, }; /* END of CR_In_Modifier_Tone_Letters */ /* PROPERTY: 'In_Latin_Extended_D': Block */ static const OnigCodePoint CR_In_Latin_Extended_D[] = { 1, 0xa720, 0xa7ff, }; /* END of CR_In_Latin_Extended_D */ /* PROPERTY: 'In_Syloti_Nagri': Block */ static const OnigCodePoint CR_In_Syloti_Nagri[] = { 1, 0xa800, 0xa82f, }; /* END of CR_In_Syloti_Nagri */ /* PROPERTY: 'In_Common_Indic_Number_Forms': Block */ static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = { 1, 0xa830, 0xa83f, }; /* END of CR_In_Common_Indic_Number_Forms */ /* PROPERTY: 'In_Phags_pa': Block */ static const OnigCodePoint CR_In_Phags_pa[] = { 1, 0xa840, 0xa87f, }; /* END of CR_In_Phags_pa */ /* PROPERTY: 'In_Saurashtra': Block */ static const OnigCodePoint CR_In_Saurashtra[] = { 1, 0xa880, 0xa8df, }; /* END of CR_In_Saurashtra */ /* PROPERTY: 'In_Devanagari_Extended': Block */ static const OnigCodePoint CR_In_Devanagari_Extended[] = { 1, 0xa8e0, 0xa8ff, }; /* END of CR_In_Devanagari_Extended */ /* PROPERTY: 'In_Kayah_Li': Block */ static const OnigCodePoint CR_In_Kayah_Li[] = { 1, 0xa900, 0xa92f, }; /* END of CR_In_Kayah_Li */ /* PROPERTY: 'In_Rejang': Block */ static const OnigCodePoint CR_In_Rejang[] = { 1, 0xa930, 0xa95f, }; /* END of CR_In_Rejang */ /* PROPERTY: 'In_Hangul_Jamo_Extended_A': Block */ static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = { 1, 0xa960, 0xa97f, }; /* END of CR_In_Hangul_Jamo_Extended_A */ /* PROPERTY: 'In_Javanese': Block */ static const OnigCodePoint CR_In_Javanese[] = { 1, 0xa980, 0xa9df, }; /* END of CR_In_Javanese */ /* PROPERTY: 'In_Myanmar_Extended_B': Block */ static const OnigCodePoint CR_In_Myanmar_Extended_B[] = { 1, 0xa9e0, 0xa9ff, }; /* END of CR_In_Myanmar_Extended_B */ /* PROPERTY: 'In_Cham': Block */ static const OnigCodePoint CR_In_Cham[] = { 1, 0xaa00, 0xaa5f, }; /* END of CR_In_Cham */ /* PROPERTY: 'In_Myanmar_Extended_A': Block */ static const OnigCodePoint CR_In_Myanmar_Extended_A[] = { 1, 0xaa60, 0xaa7f, }; /* END of CR_In_Myanmar_Extended_A */ /* PROPERTY: 'In_Tai_Viet': Block */ static const OnigCodePoint CR_In_Tai_Viet[] = { 1, 0xaa80, 0xaadf, }; /* END of CR_In_Tai_Viet */ /* PROPERTY: 'In_Meetei_Mayek_Extensions': Block */ static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = { 1, 0xaae0, 0xaaff, }; /* END of CR_In_Meetei_Mayek_Extensions */ /* PROPERTY: 'In_Ethiopic_Extended_A': Block */ static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = { 1, 0xab00, 0xab2f, }; /* END of CR_In_Ethiopic_Extended_A */ /* PROPERTY: 'In_Latin_Extended_E': Block */ static const OnigCodePoint CR_In_Latin_Extended_E[] = { 1, 0xab30, 0xab6f, }; /* END of CR_In_Latin_Extended_E */ /* PROPERTY: 'In_Meetei_Mayek': Block */ static const OnigCodePoint CR_In_Meetei_Mayek[] = { 1, 0xabc0, 0xabff, }; /* END of CR_In_Meetei_Mayek */ /* PROPERTY: 'In_Hangul_Syllables': Block */ static const OnigCodePoint CR_In_Hangul_Syllables[] = { 1, 0xac00, 0xd7af, }; /* END of CR_In_Hangul_Syllables */ /* PROPERTY: 'In_Hangul_Jamo_Extended_B': Block */ static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = { 1, 0xd7b0, 0xd7ff, }; /* END of CR_In_Hangul_Jamo_Extended_B */ /* PROPERTY: 'In_High_Surrogates': Block */ static const OnigCodePoint CR_In_High_Surrogates[] = { 1, 0xd800, 0xdb7f, }; /* END of CR_In_High_Surrogates */ /* PROPERTY: 'In_High_Private_Use_Surrogates': Block */ static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = { 1, 0xdb80, 0xdbff, }; /* END of CR_In_High_Private_Use_Surrogates */ /* PROPERTY: 'In_Low_Surrogates': Block */ static const OnigCodePoint CR_In_Low_Surrogates[] = { 1, 0xdc00, 0xdfff, }; /* END of CR_In_Low_Surrogates */ /* PROPERTY: 'In_Private_Use_Area': Block */ static const OnigCodePoint CR_In_Private_Use_Area[] = { 1, 0xe000, 0xf8ff, }; /* END of CR_In_Private_Use_Area */ /* PROPERTY: 'In_CJK_Compatibility_Ideographs': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = { 1, 0xf900, 0xfaff, }; /* END of CR_In_CJK_Compatibility_Ideographs */ /* PROPERTY: 'In_Alphabetic_Presentation_Forms': Block */ static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = { 1, 0xfb00, 0xfb4f, }; /* END of CR_In_Alphabetic_Presentation_Forms */ /* PROPERTY: 'In_Arabic_Presentation_Forms_A': Block */ static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = { 1, 0xfb50, 0xfdff, }; /* END of CR_In_Arabic_Presentation_Forms_A */ /* PROPERTY: 'In_Variation_Selectors': Block */ static const OnigCodePoint CR_In_Variation_Selectors[] = { 1, 0xfe00, 0xfe0f, }; /* END of CR_In_Variation_Selectors */ /* PROPERTY: 'In_Vertical_Forms': Block */ static const OnigCodePoint CR_In_Vertical_Forms[] = { 1, 0xfe10, 0xfe1f, }; /* END of CR_In_Vertical_Forms */ /* PROPERTY: 'In_Combining_Half_Marks': Block */ static const OnigCodePoint CR_In_Combining_Half_Marks[] = { 1, 0xfe20, 0xfe2f, }; /* END of CR_In_Combining_Half_Marks */ /* PROPERTY: 'In_CJK_Compatibility_Forms': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = { 1, 0xfe30, 0xfe4f, }; /* END of CR_In_CJK_Compatibility_Forms */ /* PROPERTY: 'In_Small_Form_Variants': Block */ static const OnigCodePoint CR_In_Small_Form_Variants[] = { 1, 0xfe50, 0xfe6f, }; /* END of CR_In_Small_Form_Variants */ /* PROPERTY: 'In_Arabic_Presentation_Forms_B': Block */ static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = { 1, 0xfe70, 0xfeff, }; /* END of CR_In_Arabic_Presentation_Forms_B */ /* PROPERTY: 'In_Halfwidth_and_Fullwidth_Forms': Block */ static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = { 1, 0xff00, 0xffef, }; /* END of CR_In_Halfwidth_and_Fullwidth_Forms */ /* PROPERTY: 'In_Specials': Block */ static const OnigCodePoint CR_In_Specials[] = { 1, 0xfff0, 0xffff, }; /* END of CR_In_Specials */ /* PROPERTY: 'In_Linear_B_Syllabary': Block */ static const OnigCodePoint CR_In_Linear_B_Syllabary[] = { 1, 0x10000, 0x1007f, }; /* END of CR_In_Linear_B_Syllabary */ /* PROPERTY: 'In_Linear_B_Ideograms': Block */ static const OnigCodePoint CR_In_Linear_B_Ideograms[] = { 1, 0x10080, 0x100ff, }; /* END of CR_In_Linear_B_Ideograms */ /* PROPERTY: 'In_Aegean_Numbers': Block */ static const OnigCodePoint CR_In_Aegean_Numbers[] = { 1, 0x10100, 0x1013f, }; /* END of CR_In_Aegean_Numbers */ /* PROPERTY: 'In_Ancient_Greek_Numbers': Block */ static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = { 1, 0x10140, 0x1018f, }; /* END of CR_In_Ancient_Greek_Numbers */ /* PROPERTY: 'In_Ancient_Symbols': Block */ static const OnigCodePoint CR_In_Ancient_Symbols[] = { 1, 0x10190, 0x101cf, }; /* END of CR_In_Ancient_Symbols */ /* PROPERTY: 'In_Phaistos_Disc': Block */ static const OnigCodePoint CR_In_Phaistos_Disc[] = { 1, 0x101d0, 0x101ff, }; /* END of CR_In_Phaistos_Disc */ /* PROPERTY: 'In_Lycian': Block */ static const OnigCodePoint CR_In_Lycian[] = { 1, 0x10280, 0x1029f, }; /* END of CR_In_Lycian */ /* PROPERTY: 'In_Carian': Block */ static const OnigCodePoint CR_In_Carian[] = { 1, 0x102a0, 0x102df, }; /* END of CR_In_Carian */ /* PROPERTY: 'In_Coptic_Epact_Numbers': Block */ static const OnigCodePoint CR_In_Coptic_Epact_Numbers[] = { 1, 0x102e0, 0x102ff, }; /* END of CR_In_Coptic_Epact_Numbers */ /* PROPERTY: 'In_Old_Italic': Block */ static const OnigCodePoint CR_In_Old_Italic[] = { 1, 0x10300, 0x1032f, }; /* END of CR_In_Old_Italic */ /* PROPERTY: 'In_Gothic': Block */ static const OnigCodePoint CR_In_Gothic[] = { 1, 0x10330, 0x1034f, }; /* END of CR_In_Gothic */ /* PROPERTY: 'In_Old_Permic': Block */ static const OnigCodePoint CR_In_Old_Permic[] = { 1, 0x10350, 0x1037f, }; /* END of CR_In_Old_Permic */ /* PROPERTY: 'In_Ugaritic': Block */ static const OnigCodePoint CR_In_Ugaritic[] = { 1, 0x10380, 0x1039f, }; /* END of CR_In_Ugaritic */ /* PROPERTY: 'In_Old_Persian': Block */ static const OnigCodePoint CR_In_Old_Persian[] = { 1, 0x103a0, 0x103df, }; /* END of CR_In_Old_Persian */ /* PROPERTY: 'In_Deseret': Block */ #define CR_In_Deseret CR_Deseret /* PROPERTY: 'In_Shavian': Block */ #define CR_In_Shavian CR_Shavian /* PROPERTY: 'In_Osmanya': Block */ static const OnigCodePoint CR_In_Osmanya[] = { 1, 0x10480, 0x104af, }; /* END of CR_In_Osmanya */ /* PROPERTY: 'In_Elbasan': Block */ static const OnigCodePoint CR_In_Elbasan[] = { 1, 0x10500, 0x1052f, }; /* END of CR_In_Elbasan */ /* PROPERTY: 'In_Caucasian_Albanian': Block */ static const OnigCodePoint CR_In_Caucasian_Albanian[] = { 1, 0x10530, 0x1056f, }; /* END of CR_In_Caucasian_Albanian */ /* PROPERTY: 'In_Linear_A': Block */ static const OnigCodePoint CR_In_Linear_A[] = { 1, 0x10600, 0x1077f, }; /* END of CR_In_Linear_A */ /* PROPERTY: 'In_Cypriot_Syllabary': Block */ static const OnigCodePoint CR_In_Cypriot_Syllabary[] = { 1, 0x10800, 0x1083f, }; /* END of CR_In_Cypriot_Syllabary */ /* PROPERTY: 'In_Imperial_Aramaic': Block */ static const OnigCodePoint CR_In_Imperial_Aramaic[] = { 1, 0x10840, 0x1085f, }; /* END of CR_In_Imperial_Aramaic */ /* PROPERTY: 'In_Palmyrene': Block */ #define CR_In_Palmyrene CR_Palmyrene /* PROPERTY: 'In_Nabataean': Block */ static const OnigCodePoint CR_In_Nabataean[] = { 1, 0x10880, 0x108af, }; /* END of CR_In_Nabataean */ /* PROPERTY: 'In_Phoenician': Block */ static const OnigCodePoint CR_In_Phoenician[] = { 1, 0x10900, 0x1091f, }; /* END of CR_In_Phoenician */ /* PROPERTY: 'In_Lydian': Block */ static const OnigCodePoint CR_In_Lydian[] = { 1, 0x10920, 0x1093f, }; /* END of CR_In_Lydian */ /* PROPERTY: 'In_Meroitic_Hieroglyphs': Block */ #define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs /* PROPERTY: 'In_Meroitic_Cursive': Block */ static const OnigCodePoint CR_In_Meroitic_Cursive[] = { 1, 0x109a0, 0x109ff, }; /* END of CR_In_Meroitic_Cursive */ /* PROPERTY: 'In_Kharoshthi': Block */ static const OnigCodePoint CR_In_Kharoshthi[] = { 1, 0x10a00, 0x10a5f, }; /* END of CR_In_Kharoshthi */ /* PROPERTY: 'In_Old_South_Arabian': Block */ #define CR_In_Old_South_Arabian CR_Old_South_Arabian /* PROPERTY: 'In_Old_North_Arabian': Block */ #define CR_In_Old_North_Arabian CR_Old_North_Arabian /* PROPERTY: 'In_Manichaean': Block */ static const OnigCodePoint CR_In_Manichaean[] = { 1, 0x10ac0, 0x10aff, }; /* END of CR_In_Manichaean */ /* PROPERTY: 'In_Avestan': Block */ static const OnigCodePoint CR_In_Avestan[] = { 1, 0x10b00, 0x10b3f, }; /* END of CR_In_Avestan */ /* PROPERTY: 'In_Inscriptional_Parthian': Block */ static const OnigCodePoint CR_In_Inscriptional_Parthian[] = { 1, 0x10b40, 0x10b5f, }; /* END of CR_In_Inscriptional_Parthian */ /* PROPERTY: 'In_Inscriptional_Pahlavi': Block */ static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = { 1, 0x10b60, 0x10b7f, }; /* END of CR_In_Inscriptional_Pahlavi */ /* PROPERTY: 'In_Psalter_Pahlavi': Block */ static const OnigCodePoint CR_In_Psalter_Pahlavi[] = { 1, 0x10b80, 0x10baf, }; /* END of CR_In_Psalter_Pahlavi */ /* PROPERTY: 'In_Old_Turkic': Block */ static const OnigCodePoint CR_In_Old_Turkic[] = { 1, 0x10c00, 0x10c4f, }; /* END of CR_In_Old_Turkic */ /* PROPERTY: 'In_Rumi_Numeral_Symbols': Block */ static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = { 1, 0x10e60, 0x10e7f, }; /* END of CR_In_Rumi_Numeral_Symbols */ /* PROPERTY: 'In_Brahmi': Block */ static const OnigCodePoint CR_In_Brahmi[] = { 1, 0x11000, 0x1107f, }; /* END of CR_In_Brahmi */ /* PROPERTY: 'In_Kaithi': Block */ static const OnigCodePoint CR_In_Kaithi[] = { 1, 0x11080, 0x110cf, }; /* END of CR_In_Kaithi */ /* PROPERTY: 'In_Sora_Sompeng': Block */ static const OnigCodePoint CR_In_Sora_Sompeng[] = { 1, 0x110d0, 0x110ff, }; /* END of CR_In_Sora_Sompeng */ /* PROPERTY: 'In_Chakma': Block */ static const OnigCodePoint CR_In_Chakma[] = { 1, 0x11100, 0x1114f, }; /* END of CR_In_Chakma */ /* PROPERTY: 'In_Mahajani': Block */ static const OnigCodePoint CR_In_Mahajani[] = { 1, 0x11150, 0x1117f, }; /* END of CR_In_Mahajani */ /* PROPERTY: 'In_Sharada': Block */ static const OnigCodePoint CR_In_Sharada[] = { 1, 0x11180, 0x111df, }; /* END of CR_In_Sharada */ /* PROPERTY: 'In_Sinhala_Archaic_Numbers': Block */ static const OnigCodePoint CR_In_Sinhala_Archaic_Numbers[] = { 1, 0x111e0, 0x111ff, }; /* END of CR_In_Sinhala_Archaic_Numbers */ /* PROPERTY: 'In_Khojki': Block */ static const OnigCodePoint CR_In_Khojki[] = { 1, 0x11200, 0x1124f, }; /* END of CR_In_Khojki */ /* PROPERTY: 'In_Khudawadi': Block */ static const OnigCodePoint CR_In_Khudawadi[] = { 1, 0x112b0, 0x112ff, }; /* END of CR_In_Khudawadi */ /* PROPERTY: 'In_Grantha': Block */ static const OnigCodePoint CR_In_Grantha[] = { 1, 0x11300, 0x1137f, }; /* END of CR_In_Grantha */ /* PROPERTY: 'In_Tirhuta': Block */ static const OnigCodePoint CR_In_Tirhuta[] = { 1, 0x11480, 0x114df, }; /* END of CR_In_Tirhuta */ /* PROPERTY: 'In_Siddham': Block */ static const OnigCodePoint CR_In_Siddham[] = { 1, 0x11580, 0x115ff, }; /* END of CR_In_Siddham */ /* PROPERTY: 'In_Modi': Block */ static const OnigCodePoint CR_In_Modi[] = { 1, 0x11600, 0x1165f, }; /* END of CR_In_Modi */ /* PROPERTY: 'In_Takri': Block */ static const OnigCodePoint CR_In_Takri[] = { 1, 0x11680, 0x116cf, }; /* END of CR_In_Takri */ /* PROPERTY: 'In_Warang_Citi': Block */ static const OnigCodePoint CR_In_Warang_Citi[] = { 1, 0x118a0, 0x118ff, }; /* END of CR_In_Warang_Citi */ /* PROPERTY: 'In_Pau_Cin_Hau': Block */ static const OnigCodePoint CR_In_Pau_Cin_Hau[] = { 1, 0x11ac0, 0x11aff, }; /* END of CR_In_Pau_Cin_Hau */ /* PROPERTY: 'In_Cuneiform': Block */ static const OnigCodePoint CR_In_Cuneiform[] = { 1, 0x12000, 0x123ff, }; /* END of CR_In_Cuneiform */ /* PROPERTY: 'In_Cuneiform_Numbers_and_Punctuation': Block */ static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = { 1, 0x12400, 0x1247f, }; /* END of CR_In_Cuneiform_Numbers_and_Punctuation */ /* PROPERTY: 'In_Egyptian_Hieroglyphs': Block */ static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = { 1, 0x13000, 0x1342f, }; /* END of CR_In_Egyptian_Hieroglyphs */ /* PROPERTY: 'In_Bamum_Supplement': Block */ static const OnigCodePoint CR_In_Bamum_Supplement[] = { 1, 0x16800, 0x16a3f, }; /* END of CR_In_Bamum_Supplement */ /* PROPERTY: 'In_Mro': Block */ static const OnigCodePoint CR_In_Mro[] = { 1, 0x16a40, 0x16a6f, }; /* END of CR_In_Mro */ /* PROPERTY: 'In_Bassa_Vah': Block */ static const OnigCodePoint CR_In_Bassa_Vah[] = { 1, 0x16ad0, 0x16aff, }; /* END of CR_In_Bassa_Vah */ /* PROPERTY: 'In_Pahawh_Hmong': Block */ static const OnigCodePoint CR_In_Pahawh_Hmong[] = { 1, 0x16b00, 0x16b8f, }; /* END of CR_In_Pahawh_Hmong */ /* PROPERTY: 'In_Miao': Block */ static const OnigCodePoint CR_In_Miao[] = { 1, 0x16f00, 0x16f9f, }; /* END of CR_In_Miao */ /* PROPERTY: 'In_Kana_Supplement': Block */ static const OnigCodePoint CR_In_Kana_Supplement[] = { 1, 0x1b000, 0x1b0ff, }; /* END of CR_In_Kana_Supplement */ /* PROPERTY: 'In_Duployan': Block */ static const OnigCodePoint CR_In_Duployan[] = { 1, 0x1bc00, 0x1bc9f, }; /* END of CR_In_Duployan */ /* PROPERTY: 'In_Shorthand_Format_Controls': Block */ static const OnigCodePoint CR_In_Shorthand_Format_Controls[] = { 1, 0x1bca0, 0x1bcaf, }; /* END of CR_In_Shorthand_Format_Controls */ /* PROPERTY: 'In_Byzantine_Musical_Symbols': Block */ static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = { 1, 0x1d000, 0x1d0ff, }; /* END of CR_In_Byzantine_Musical_Symbols */ /* PROPERTY: 'In_Musical_Symbols': Block */ static const OnigCodePoint CR_In_Musical_Symbols[] = { 1, 0x1d100, 0x1d1ff, }; /* END of CR_In_Musical_Symbols */ /* PROPERTY: 'In_Ancient_Greek_Musical_Notation': Block */ static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = { 1, 0x1d200, 0x1d24f, }; /* END of CR_In_Ancient_Greek_Musical_Notation */ /* PROPERTY: 'In_Tai_Xuan_Jing_Symbols': Block */ static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = { 1, 0x1d300, 0x1d35f, }; /* END of CR_In_Tai_Xuan_Jing_Symbols */ /* PROPERTY: 'In_Counting_Rod_Numerals': Block */ static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = { 1, 0x1d360, 0x1d37f, }; /* END of CR_In_Counting_Rod_Numerals */ /* PROPERTY: 'In_Mathematical_Alphanumeric_Symbols': Block */ static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = { 1, 0x1d400, 0x1d7ff, }; /* END of CR_In_Mathematical_Alphanumeric_Symbols */ /* PROPERTY: 'In_Mende_Kikakui': Block */ static const OnigCodePoint CR_In_Mende_Kikakui[] = { 1, 0x1e800, 0x1e8df, }; /* END of CR_In_Mende_Kikakui */ /* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1, 0x1ee00, 0x1eeff, }; /* END of CR_In_Arabic_Mathematical_Alphabetic_Symbols */ /* PROPERTY: 'In_Mahjong_Tiles': Block */ static const OnigCodePoint CR_In_Mahjong_Tiles[] = { 1, 0x1f000, 0x1f02f, }; /* END of CR_In_Mahjong_Tiles */ /* PROPERTY: 'In_Domino_Tiles': Block */ static const OnigCodePoint CR_In_Domino_Tiles[] = { 1, 0x1f030, 0x1f09f, }; /* END of CR_In_Domino_Tiles */ /* PROPERTY: 'In_Playing_Cards': Block */ static const OnigCodePoint CR_In_Playing_Cards[] = { 1, 0x1f0a0, 0x1f0ff, }; /* END of CR_In_Playing_Cards */ /* PROPERTY: 'In_Enclosed_Alphanumeric_Supplement': Block */ static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = { 1, 0x1f100, 0x1f1ff, }; /* END of CR_In_Enclosed_Alphanumeric_Supplement */ /* PROPERTY: 'In_Enclosed_Ideographic_Supplement': Block */ static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = { 1, 0x1f200, 0x1f2ff, }; /* END of CR_In_Enclosed_Ideographic_Supplement */ /* PROPERTY: 'In_Miscellaneous_Symbols_and_Pictographs': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Pictographs[] = { 1, 0x1f300, 0x1f5ff, }; /* END of CR_In_Miscellaneous_Symbols_and_Pictographs */ /* PROPERTY: 'In_Emoticons': Block */ static const OnigCodePoint CR_In_Emoticons[] = { 1, 0x1f600, 0x1f64f, }; /* END of CR_In_Emoticons */ /* PROPERTY: 'In_Ornamental_Dingbats': Block */ static const OnigCodePoint CR_In_Ornamental_Dingbats[] = { 1, 0x1f650, 0x1f67f, }; /* END of CR_In_Ornamental_Dingbats */ /* PROPERTY: 'In_Transport_and_Map_Symbols': Block */ static const OnigCodePoint CR_In_Transport_and_Map_Symbols[] = { 1, 0x1f680, 0x1f6ff, }; /* END of CR_In_Transport_and_Map_Symbols */ /* PROPERTY: 'In_Alchemical_Symbols': Block */ static const OnigCodePoint CR_In_Alchemical_Symbols[] = { 1, 0x1f700, 0x1f77f, }; /* END of CR_In_Alchemical_Symbols */ /* PROPERTY: 'In_Geometric_Shapes_Extended': Block */ static const OnigCodePoint CR_In_Geometric_Shapes_Extended[] = { 1, 0x1f780, 0x1f7ff, }; /* END of CR_In_Geometric_Shapes_Extended */ /* PROPERTY: 'In_Supplemental_Arrows_C': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_C[] = { 1, 0x1f800, 0x1f8ff, }; /* END of CR_In_Supplemental_Arrows_C */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, 0x20000, 0x2a6df, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_B */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_C': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = { 1, 0x2a700, 0x2b73f, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_C */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_D': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = { 1, 0x2b740, 0x2b81f, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_D */ /* PROPERTY: 'In_CJK_Compatibility_Ideographs_Supplement': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1, 0x2f800, 0x2fa1f, }; /* END of CR_In_CJK_Compatibility_Ideographs_Supplement */ /* PROPERTY: 'In_Tags': Block */ static const OnigCodePoint CR_In_Tags[] = { 1, 0xe0000, 0xe007f, }; /* END of CR_In_Tags */ /* PROPERTY: 'In_Variation_Selectors_Supplement': Block */ static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = { 1, 0xe0100, 0xe01ef, }; /* END of CR_In_Variation_Selectors_Supplement */ /* PROPERTY: 'In_Supplementary_Private_Use_Area_A': Block */ static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = { 1, 0xf0000, 0xfffff, }; /* END of CR_In_Supplementary_Private_Use_Area_A */ /* PROPERTY: 'In_Supplementary_Private_Use_Area_B': Block */ static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = { 1, 0x100000, 0x10ffff, }; /* END of CR_In_Supplementary_Private_Use_Area_B */ /* PROPERTY: 'In_No_Block': Block */ static const OnigCodePoint CR_In_No_Block[] = { 40, 0x0860, 0x089f, 0x1c80, 0x1cbf, 0x2fe0, 0x2fef, 0xab70, 0xabbf, 0x10200, 0x1027f, 0x103e0, 0x103ff, 0x104b0, 0x104ff, 0x10570, 0x105ff, 0x10780, 0x107ff, 0x108b0, 0x108ff, 0x10940, 0x1097f, 0x10aa0, 0x10abf, 0x10bb0, 0x10bff, 0x10c50, 0x10e5f, 0x10e80, 0x10fff, 0x11250, 0x112af, 0x11380, 0x1147f, 0x114e0, 0x1157f, 0x11660, 0x1167f, 0x116d0, 0x1189f, 0x11900, 0x11abf, 0x11b00, 0x11fff, 0x12480, 0x12fff, 0x13430, 0x167ff, 0x16a70, 0x16acf, 0x16b90, 0x16eff, 0x16fa0, 0x1afff, 0x1b100, 0x1bbff, 0x1bcb0, 0x1cfff, 0x1d250, 0x1d2ff, 0x1d380, 0x1d3ff, 0x1d800, 0x1e7ff, 0x1e8e0, 0x1edff, 0x1ef00, 0x1efff, 0x1f900, 0x1ffff, 0x2a6e0, 0x2a6ff, 0x2b820, 0x2f7ff, 0x2fa20, 0xdffff, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, }; /* END of CR_In_No_Block */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, CR_Alpha, CR_Blank, CR_Cntrl, CR_Digit, CR_Graph, CR_Lower, CR_Print, CR_Punct, CR_Space, CR_Upper, CR_XDigit, CR_Word, CR_Alnum, CR_ASCII, CR_Any, CR_Assigned, CR_C, CR_Cc, CR_Cf, CR_Cn, CR_Co, CR_Cs, CR_L, CR_LC, CR_Ll, CR_Lm, CR_Lo, CR_Lt, CR_Lu, CR_M, CR_Mc, CR_Me, CR_Mn, CR_N, CR_Nd, CR_Nl, CR_No, CR_P, CR_Pc, CR_Pd, CR_Pe, CR_Pf, CR_Pi, CR_Po, CR_Ps, CR_S, CR_Sc, 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_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_White_Space, CR_Bidi_Control, CR_Join_Control, CR_Dash, CR_Hyphen, CR_Quotation_Mark, 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_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_In_Basic_Latin, CR_In_Latin_1_Supplement, CR_In_Latin_Extended_A, CR_In_Latin_Extended_B, CR_In_IPA_Extensions, CR_In_Spacing_Modifier_Letters, CR_In_Combining_Diacritical_Marks, CR_In_Greek_and_Coptic, CR_In_Cyrillic, CR_In_Cyrillic_Supplement, CR_In_Armenian, CR_In_Hebrew, CR_In_Arabic, CR_In_Syriac, CR_In_Arabic_Supplement, CR_In_Thaana, CR_In_NKo, CR_In_Samaritan, CR_In_Mandaic, CR_In_Arabic_Extended_A, CR_In_Devanagari, CR_In_Bengali, CR_In_Gurmukhi, CR_In_Gujarati, CR_In_Oriya, CR_In_Tamil, CR_In_Telugu, CR_In_Kannada, CR_In_Malayalam, CR_In_Sinhala, CR_In_Thai, CR_In_Lao, CR_In_Tibetan, CR_In_Myanmar, CR_In_Georgian, CR_In_Hangul_Jamo, CR_In_Ethiopic, CR_In_Ethiopic_Supplement, CR_In_Cherokee, CR_In_Unified_Canadian_Aboriginal_Syllabics, CR_In_Ogham, CR_In_Runic, CR_In_Tagalog, CR_In_Hanunoo, CR_In_Buhid, CR_In_Tagbanwa, CR_In_Khmer, CR_In_Mongolian, CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended, CR_In_Limbu, CR_In_Tai_Le, CR_In_New_Tai_Lue, CR_In_Khmer_Symbols, CR_In_Buginese, CR_In_Tai_Tham, CR_In_Combining_Diacritical_Marks_Extended, CR_In_Balinese, CR_In_Sundanese, CR_In_Batak, CR_In_Lepcha, CR_In_Ol_Chiki, CR_In_Sundanese_Supplement, CR_In_Vedic_Extensions, CR_In_Phonetic_Extensions, CR_In_Phonetic_Extensions_Supplement, CR_In_Combining_Diacritical_Marks_Supplement, CR_In_Latin_Extended_Additional, CR_In_Greek_Extended, CR_In_General_Punctuation, CR_In_Superscripts_and_Subscripts, CR_In_Currency_Symbols, CR_In_Combining_Diacritical_Marks_for_Symbols, CR_In_Letterlike_Symbols, CR_In_Number_Forms, CR_In_Arrows, CR_In_Mathematical_Operators, CR_In_Miscellaneous_Technical, CR_In_Control_Pictures, CR_In_Optical_Character_Recognition, CR_In_Enclosed_Alphanumerics, CR_In_Box_Drawing, CR_In_Block_Elements, CR_In_Geometric_Shapes, CR_In_Miscellaneous_Symbols, CR_In_Dingbats, CR_In_Miscellaneous_Mathematical_Symbols_A, CR_In_Supplemental_Arrows_A, CR_In_Braille_Patterns, CR_In_Supplemental_Arrows_B, CR_In_Miscellaneous_Mathematical_Symbols_B, CR_In_Supplemental_Mathematical_Operators, CR_In_Miscellaneous_Symbols_and_Arrows, CR_In_Glagolitic, CR_In_Latin_Extended_C, CR_In_Coptic, CR_In_Georgian_Supplement, CR_In_Tifinagh, CR_In_Ethiopic_Extended, CR_In_Cyrillic_Extended_A, CR_In_Supplemental_Punctuation, CR_In_CJK_Radicals_Supplement, CR_In_Kangxi_Radicals, CR_In_Ideographic_Description_Characters, CR_In_CJK_Symbols_and_Punctuation, CR_In_Hiragana, CR_In_Katakana, CR_In_Bopomofo, CR_In_Hangul_Compatibility_Jamo, CR_In_Kanbun, CR_In_Bopomofo_Extended, CR_In_CJK_Strokes, CR_In_Katakana_Phonetic_Extensions, CR_In_Enclosed_CJK_Letters_and_Months, CR_In_CJK_Compatibility, CR_In_CJK_Unified_Ideographs_Extension_A, CR_In_Yijing_Hexagram_Symbols, CR_In_CJK_Unified_Ideographs, CR_In_Yi_Syllables, CR_In_Yi_Radicals, CR_In_Lisu, CR_In_Vai, CR_In_Cyrillic_Extended_B, CR_In_Bamum, CR_In_Modifier_Tone_Letters, CR_In_Latin_Extended_D, CR_In_Syloti_Nagri, CR_In_Common_Indic_Number_Forms, CR_In_Phags_pa, CR_In_Saurashtra, CR_In_Devanagari_Extended, CR_In_Kayah_Li, CR_In_Rejang, CR_In_Hangul_Jamo_Extended_A, CR_In_Javanese, CR_In_Myanmar_Extended_B, CR_In_Cham, CR_In_Myanmar_Extended_A, CR_In_Tai_Viet, CR_In_Meetei_Mayek_Extensions, CR_In_Ethiopic_Extended_A, CR_In_Latin_Extended_E, CR_In_Meetei_Mayek, CR_In_Hangul_Syllables, CR_In_Hangul_Jamo_Extended_B, CR_In_High_Surrogates, CR_In_High_Private_Use_Surrogates, CR_In_Low_Surrogates, CR_In_Private_Use_Area, CR_In_CJK_Compatibility_Ideographs, CR_In_Alphabetic_Presentation_Forms, CR_In_Arabic_Presentation_Forms_A, CR_In_Variation_Selectors, CR_In_Vertical_Forms, CR_In_Combining_Half_Marks, CR_In_CJK_Compatibility_Forms, CR_In_Small_Form_Variants, CR_In_Arabic_Presentation_Forms_B, CR_In_Halfwidth_and_Fullwidth_Forms, CR_In_Specials, CR_In_Linear_B_Syllabary, CR_In_Linear_B_Ideograms, CR_In_Aegean_Numbers, CR_In_Ancient_Greek_Numbers, CR_In_Ancient_Symbols, CR_In_Phaistos_Disc, CR_In_Lycian, CR_In_Carian, CR_In_Coptic_Epact_Numbers, CR_In_Old_Italic, CR_In_Gothic, CR_In_Old_Permic, CR_In_Ugaritic, CR_In_Old_Persian, CR_In_Deseret, CR_In_Shavian, CR_In_Osmanya, CR_In_Elbasan, CR_In_Caucasian_Albanian, CR_In_Linear_A, CR_In_Cypriot_Syllabary, CR_In_Imperial_Aramaic, CR_In_Palmyrene, CR_In_Nabataean, CR_In_Phoenician, CR_In_Lydian, CR_In_Meroitic_Hieroglyphs, CR_In_Meroitic_Cursive, CR_In_Kharoshthi, CR_In_Old_South_Arabian, CR_In_Old_North_Arabian, CR_In_Manichaean, CR_In_Avestan, CR_In_Inscriptional_Parthian, CR_In_Inscriptional_Pahlavi, CR_In_Psalter_Pahlavi, CR_In_Old_Turkic, CR_In_Rumi_Numeral_Symbols, CR_In_Brahmi, CR_In_Kaithi, CR_In_Sora_Sompeng, CR_In_Chakma, CR_In_Mahajani, CR_In_Sharada, CR_In_Sinhala_Archaic_Numbers, CR_In_Khojki, CR_In_Khudawadi, CR_In_Grantha, CR_In_Tirhuta, CR_In_Siddham, CR_In_Modi, CR_In_Takri, CR_In_Warang_Citi, CR_In_Pau_Cin_Hau, CR_In_Cuneiform, CR_In_Cuneiform_Numbers_and_Punctuation, CR_In_Egyptian_Hieroglyphs, CR_In_Bamum_Supplement, CR_In_Mro, CR_In_Bassa_Vah, CR_In_Pahawh_Hmong, CR_In_Miao, CR_In_Kana_Supplement, CR_In_Duployan, CR_In_Shorthand_Format_Controls, CR_In_Byzantine_Musical_Symbols, CR_In_Musical_Symbols, CR_In_Ancient_Greek_Musical_Notation, CR_In_Tai_Xuan_Jing_Symbols, CR_In_Counting_Rod_Numerals, CR_In_Mathematical_Alphanumeric_Symbols, CR_In_Mende_Kikakui, CR_In_Arabic_Mathematical_Alphabetic_Symbols, CR_In_Mahjong_Tiles, CR_In_Domino_Tiles, CR_In_Playing_Cards, CR_In_Enclosed_Alphanumeric_Supplement, CR_In_Enclosed_Ideographic_Supplement, CR_In_Miscellaneous_Symbols_and_Pictographs, CR_In_Emoticons, CR_In_Ornamental_Dingbats, CR_In_Transport_and_Map_Symbols, CR_In_Alchemical_Symbols, CR_In_Geometric_Shapes_Extended, CR_In_Supplemental_Arrows_C, CR_In_CJK_Unified_Ideographs_Extension_B, CR_In_CJK_Unified_Ideographs_Extension_C, CR_In_CJK_Unified_Ideographs_Extension_D, CR_In_CJK_Compatibility_Ideographs_Supplement, CR_In_Tags, CR_In_Variation_Selectors_Supplement, CR_In_Supplementary_Private_Use_Area_A, CR_In_Supplementary_Private_Use_Area_B, CR_In_No_Block, }; #define TOTAL_KEYWORDS 690 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 #define MAX_HASH_VALUE 5359 /* maximum key range = 5359, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 static unsigned char gperf_downcase[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #endif #ifndef GPERF_CASE_STRNCMP #define GPERF_CASE_STRNCMP 1 static int gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n) { for (; n > 0;) { unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; if (c1 != 0 && c1 == c2) { n--; continue; } return (int)c1 - (int)c2; } return 0; } #endif #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 11, 999, 15, 386, 41, 66, 1086, 566, 2, 120, 1707, 128, 3, 0, 177, 759, 1, 229, 28, 66, 1059, 392, 13, 341, 753, 6, 5360, 5360, 5360, 5360, 5360, 5360, 11, 999, 15, 386, 41, 66, 1086, 566, 2, 120, 1707, 128, 3, 0, 177, 759, 1, 229, 28, 66, 1059, 392, 13, 341, 753, 6, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360, 5360 }; register int hval = len; switch (hval) { default: hval += asso_values[(unsigned char)str[15]]; /*FALLTHROUGH*/ case 15: case 14: case 13: case 12: hval += asso_values[(unsigned char)str[11]]; /*FALLTHROUGH*/ case 11: case 10: case 9: case 8: case 7: case 6: hval += asso_values[(unsigned char)str[5]]; /*FALLTHROUGH*/ case 5: hval += asso_values[(unsigned char)str[4]]; /*FALLTHROUGH*/ case 4: case 3: hval += asso_values[(unsigned char)str[2]]; /*FALLTHROUGH*/ case 2: hval += asso_values[(unsigned char)str[1]]; /*FALLTHROUGH*/ case 1: hval += asso_values[(unsigned char)str[0]]; break; } 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) { static const struct PropertyNameCtype wordlist[] = { {""}, {"n", 34}, {""}, {""}, {""}, {"mn", 33}, {""}, {"m", 30}, {""}, {""}, {""}, {""}, {""}, {"z", 51}, {""}, {""}, {""}, {"cn", 20}, {""}, {"inmanichaean", 422}, {"mani", 185}, {"ci", 60}, {""}, {""}, {""}, {""}, {""}, {""}, {"zzzz", 231}, {"qaai", 114}, {""}, {"c", 17}, {""}, {""}, {""}, {"mc", 31}, {"sm", 49}, {""}, {""}, {""}, {"incham", 367}, {""}, {"qaac", 128}, {""}, {""}, {""}, {""}, {"cc", 18}, {""}, {"mandaic", 168}, {"cwcm", 65}, {""}, {""}, {""}, {""}, {"insamaritan", 249}, {""}, {"s", 46}, {"cans", 101}, {""}, {"sc", 47}, {""}, {""}, {"ascii", 14}, {"zs", 54}, {""}, {""}, {"inarmenian", 242}, {""}, {""}, {""}, {""}, {"incuneiform", 445}, {"cs", 22}, {""}, {""}, {""}, {""}, {""}, {""}, {"incommonindicnumberforms", 358}, {""}, {""}, {""}, {""}, {""}, {""}, {"me", 32}, {""}, {"inthai", 262}, {""}, {"inavestan", 423}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inipaextensions", 236}, {""}, {"initialpunctuation", 43}, {"newline", 0}, {"inancientsymbols", 395}, {""}, {""}, {""}, {"inthaana", 247}, {"inmusicalsymbols", 457}, {""}, {""}, {"cwcf", 64}, {""}, {""}, {"mtei", 159}, {"newtailue", 129}, {""}, {""}, {""}, {""}, {""}, {""}, {"inspecials", 390}, {""}, {""}, {""}, {""}, {""}, {""}, {"incuneiformnumbersandpunctuation", 446}, {""}, {"innewtailue", 283}, {""}, {""}, {"lm", 26}, {""}, {"inmiscellaneousmathematicalsymbolsa", 317}, {""}, {""}, {""}, {""}, {""}, {""}, {"lina", 183}, {"sterm", 227}, {""}, {"intaitham", 286}, {"cf", 19}, {"alnum", 13}, {""}, {"inmyanmarextendeda", 368}, {"intransportandmapsymbols", 472}, {"lana", 151}, {"inlycian", 397}, {""}, {""}, {"inmalayalam", 260}, {""}, {"lc", 24}, {""}, {""}, {"cwt", 63}, {""}, {""}, {"taile", 120}, {"inmiscellaneoussymbols", 315}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inmiscellaneoussymbolsandarrows", 323}, {""}, {""}, {""}, {""}, {"inmiscellaneoussymbolsandpictographs", 469}, {""}, {""}, {"incontrolpictures", 309}, {""}, {""}, {"sinhala", 92}, {""}, {""}, {""}, {"inlineara", 410}, {""}, {""}, {""}, {"taiviet", 152}, {""}, {"miao", 172}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"intamil", 257}, {"latn", 75}, {"latin", 75}, {"ital", 111}, {"taml", 88}, {"inosmanya", 407}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"osma", 124}, {""}, {"inlowsurrogates", 378}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inlatinextendeda", 234}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inlatinextendedc", 325}, {""}, {"intaile", 282}, {"armn", 78}, {""}, {"armi", 160}, {"tale", 120}, {""}, {""}, {"armenian", 78}, {"inmyanmar", 265}, {"inrunic", 273}, {"incarian", 398}, {"l", 23}, {"nl", 36}, {""}, {""}, {"cari", 148}, {"lt", 28}, {""}, {"zl", 52}, {""}, {""}, {""}, {"wara", 198}, {"inlinearbideograms", 392}, {"inmeeteimayekextensions", 370}, {"inwarangciti", 443}, {"carian", 148}, {"incyrillic", 240}, {""}, {"samr", 155}, {""}, {""}, {""}, {"connectorpunctuation", 39}, {""}, {""}, {"samaritan", 155}, {""}, {"insyriac", 245}, {""}, {""}, {"cwl", 61}, {""}, {"arabic", 80}, {"insharada", 434}, {""}, {"merc", 170}, {""}, {""}, {""}, {"inlatinextendede", 372}, {""}, {"inruminumeralsymbols", 428}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inmiscellaneoustechnical", 308}, {""}, {""}, {""}, {""}, {""}, {""}, {"inideographicdescriptioncharacters", 334}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inemoticons", 470}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"joinc", 201}, {""}, {""}, {""}, {"incherokee", 270}, {""}, {""}, {"tamil", 88}, {"cntrl", 3}, {"term", 205}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inopticalcharacterrecognition", 310}, {""}, {""}, {"no", 37}, {""}, {""}, {""}, {""}, {"innko", 248}, {"inlatinextendedadditional", 298}, {""}, {"inmro", 449}, {"inenclosedalphanumerics", 311}, {""}, {""}, {""}, {""}, {""}, {"co", 21}, {""}, {""}, {""}, {""}, {"inmiao", 452}, {""}, {"common", 74}, {""}, {""}, {""}, {""}, {""}, {"so", 50}, {""}, {"ll", 25}, {""}, {"lineara", 183}, {""}, {"loe", 224}, {""}, {"di", 70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inmodi", 441}, {""}, {"invai", 352}, {"mand", 168}, {""}, {""}, {""}, {""}, {""}, {"vai", 143}, {"vaii", 143}, {"inenclosedalphanumericsupplement", 467}, {"dia", 211}, {""}, {"inmandaic", 250}, {""}, {""}, {""}, {""}, {"sind", 196}, {"idc", 67}, {""}, {""}, {""}, {"meroiticcursive", 170}, {""}, {""}, {""}, {"inenclosedcjklettersandmonths", 344}, {""}, {""}, {""}, {""}, {"mend", 186}, {"oriya", 87}, {""}, {""}, {"terminalpunctuation", 205}, {""}, {""}, {""}, {"inshavian", 406}, {""}, {""}, {""}, {""}, {"ids", 66}, {""}, {"sora", 174}, {"vs", 228}, {""}, {""}, {""}, {"mero", 171}, {"inarrows", 306}, {""}, {""}, {""}, {""}, {""}, {""}, {"intaixuanjingsymbols", 459}, {""}, {""}, {""}, {""}, {""}, {"insundanese", 289}, {""}, {""}, {""}, {""}, {""}, {""}, {"indominotiles", 465}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"lo", 27}, {""}, {"idst", 218}, {""}, {""}, {"inlao", 263}, {""}, {""}, {""}, {""}, {"mongolian", 105}, {""}, {"lao", 94}, {"laoo", 94}, {""}, {""}, {"titlecaseletter", 28}, {"avst", 153}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ext", 212}, {""}, {""}, {"idcontinue", 67}, {""}, {"inscriptionalparthian", 162}, {""}, {""}, {""}, {"inlydian", 416}, {""}, {"avestan", 153}, {""}, {""}, {""}, {"indeseret", 405}, {""}, {""}, {"inspacingmodifierletters", 237}, {""}, {"intaiviet", 369}, {"java", 158}, {"tavt", 152}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inshorthandformatcontrols", 455}, {""}, {""}, {""}, {"odi", 221}, {""}, {"modi", 187}, {""}, {""}, {""}, {"injavanese", 365}, {""}, {"zinh", 114}, {"insylotinagri", 357}, {"han", 109}, {""}, {""}, {"hani", 109}, {"oidc", 226}, {""}, {""}, {""}, {""}, {"mro", 188}, {"mroo", 188}, {""}, {""}, {"inolditalic", 400}, {"inmahajani", 433}, {""}, {""}, {"oids", 225}, {""}, {"cham", 150}, {"sinh", 92}, {""}, {""}, {""}, {""}, {"manichaean", 185}, {""}, {""}, {""}, {""}, {"ideo", 210}, {""}, {"lowercase", 57}, {"javanese", 158}, {""}, {""}, {"insinhala", 261}, {""}, {"lineseparator", 52}, {"insmallformvariants", 387}, {""}, {"format", 19}, {"shaw", 123}, {"chakma", 169}, {""}, {"shavian", 123}, {""}, {""}, {""}, {""}, {"joincontrol", 201}, {""}, {""}, {""}, {""}, {""}, {"inethiopic", 268}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"thai", 93}, {"math", 55}, {""}, {""}, {""}, {"diacritic", 211}, {""}, {""}, {"inoldturkic", 427}, {"thaa", 82}, {"insundanesesupplement", 293}, {"inmodifiertoneletters", 355}, {""}, {""}, {""}, {""}, {""}, {"taitham", 151}, {""}, {""}, {""}, {""}, {"thaana", 82}, {""}, {""}, {""}, {""}, {""}, {"insinhalaarchaicnumbers", 435}, {""}, {"ethi", 99}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"whitespace", 199}, {""}, {"asciihexdigit", 208}, {"mahj", 184}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"intifinagh", 328}, {"dsrt", 113}, {""}, {""}, {"invariationselectors", 383}, {""}, {""}, {"tifinagh", 131}, {""}, {"mahajani", 184}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"idstart", 66}, {""}, {""}, {""}, {"control", 18}, {""}, {""}, {""}, {""}, {""}, {"decimalnumber", 35}, {"letter", 23}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"xidc", 69}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hano", 116}, {"yi", 110}, {""}, {"xids", 68}, {""}, {"yiii", 110}, {"invariationselectorssupplement", 481}, {"pi", 43}, {"inogham", 272}, {""}, {""}, {""}, {""}, {"inolchiki", 292}, {""}, {""}, {"nd", 35}, {""}, {""}, {""}, {""}, {""}, {""}, {"lower", 6}, {""}, {""}, {""}, {""}, {""}, {"radical", 219}, {""}, {"canadianaboriginal", 101}, {""}, {"pc", 39}, {"olditalic", 111}, {""}, {""}, {""}, {""}, {""}, {"deseret", 113}, {""}, {""}, {""}, {"sd", 223}, {""}, {""}, {"inphaistosdisc", 396}, {"sidd", 195}, {"indevanagari", 252}, {"casedletter", 24}, {"word", 12}, {""}, {""}, {"hira", 106}, {""}, {"insiddham", 440}, {""}, {""}, {"ps", 45}, {""}, {""}, {""}, {""}, {"inoldnortharabian", 421}, {""}, {""}, {""}, {""}, {"invedicextensions", 294}, {""}, {"inhiragana", 336}, {""}, {"cased", 59}, {""}, {""}, {"deva", 83}, {""}, {""}, {""}, {""}, {""}, {""}, {"inmathematicalalphanumericsymbols", 461}, {"devanagari", 83}, {"pe", 41}, {""}, {""}, {""}, {""}, {""}, {""}, {"inoldsoutharabian", 420}, {""}, {""}, {""}, {""}, {"cher", 100}, {""}, {""}, {""}, {""}, {"inscriptionalpahlavi", 163}, {"inmahjongtiles", 464}, {""}, {""}, {""}, {"incoptic", 326}, {""}, {"tirh", 197}, {""}, {"xdigit", 11}, {""}, {""}, {"lowercaseletter", 25}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"xidstart", 68}, {""}, {"idsbinaryoperator", 217}, {"intirhuta", 439}, {""}, {"space", 9}, {""}, {""}, {""}, {""}, {""}, {"mlym", 91}, {""}, {"pf", 42}, {""}, {""}, {""}, {"patws", 229}, {"inenclosedideographicsupplement", 468}, {""}, {""}, {""}, {"lyci", 147}, {"wspace", 199}, {""}, {"palm", 191}, {""}, {""}, {"incopticepactnumbers", 399}, {"inverticalforms", 384}, {"oalpha", 209}, {""}, {""}, {"lycian", 147}, {""}, {""}, {""}, {""}, {"malayalam", 91}, {""}, {""}, {""}, {""}, {"inlepcha", 291}, {""}, {"alpha", 1}, {""}, {""}, {""}, {""}, {""}, {""}, {"psalterpahlavi", 194}, {""}, {""}, {""}, {""}, {""}, {"hanunoo", 116}, {""}, {""}, {""}, {"inyijinghexagramsymbols", 347}, {"modifierletter", 26}, {"inpalmyrene", 413}, {""}, {""}, {"lepc", 141}, {""}, {""}, {""}, {""}, {"inoriya", 256}, {""}, {""}, {""}, {""}, {""}, {"xidcontinue", 69}, {""}, {""}, {""}, {""}, {"ahex", 208}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"oldpersian", 133}, {""}, {""}, {""}, {"letternumber", 36}, {""}, {""}, {""}, {"osmanya", 124}, {""}, {""}, {"finalpunctuation", 42}, {""}, {""}, {"oldpermic", 193}, {"inlatinextendedd", 356}, {"olower", 213}, {""}, {"coptic", 128}, {"sylotinagri", 132}, {"inphoenician", 415}, {"mymr", 96}, {""}, {""}, {"dash", 202}, {""}, {""}, {""}, {"mathsymbol", 49}, {""}, {""}, {""}, {"siddham", 195}, {""}, {"incyrillicextendeda", 330}, {"ininscriptionalparthian", 424}, {"ininscriptionalpahlavi", 425}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"myanmar", 96}, {""}, {""}, {"sharada", 173}, {"copt", 128}, {""}, {"innabataean", 414}, {"bamum", 157}, {""}, {""}, {""}, {"imperialaramaic", 160}, {"syrc", 81}, {""}, {""}, {""}, {""}, {""}, {""}, {"perm", 193}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbasiclatin", 232}, {"nchar", 215}, {""}, {"inarabic", 244}, {""}, {"innumberforms", 305}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"syriac", 81}, {""}, {""}, {"prti", 162}, {""}, {"inelbasan", 408}, {"inyiradicals", 350}, {""}, {""}, {""}, {"inimperialaramaic", 412}, {""}, {""}, {"bass", 177}, {"extender", 212}, {""}, {"cprt", 125}, {""}, {""}, {""}, {""}, {""}, {""}, {"nbat", 190}, {"inlinearbsyllabary", 391}, {"inlatin1supplement", 233}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbyzantinemusicalsymbols", 456}, {"sylo", 132}, {""}, {""}, {""}, {""}, {""}, {"nabataean", 190}, {""}, {"otheridcontinue", 226}, {"inarabicpresentationformsa", 382}, {""}, {""}, {"inmongolian", 279}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"noncharactercodepoint", 215}, {""}, {""}, {""}, {"po", 44}, {""}, {"intibetan", 264}, {"privateuse", 21}, {"ingrantha", 438}, {"otheralphabetic", 209}, {"incaucasianalbanian", 409}, {""}, {""}, {""}, {"inbraillepatterns", 319}, {"inmiscellaneousmathematicalsymbolsb", 321}, {"print", 7}, {""}, {"cyrl", 77}, {""}, {""}, {""}, {"linb", 121}, {""}, {""}, {"limb", 119}, {"tibt", 95}, {""}, {""}, {"inmyanmarextendedb", 366}, {""}, {""}, {""}, {"bali", 135}, {""}, {""}, {"closepunctuation", 41}, {"sundanese", 140}, {""}, {""}, {"tibetan", 95}, {""}, {""}, {"cuneiform", 136}, {""}, {""}, {""}, {"saurashtra", 144}, {"inancientgreekmusicalnotation", 458}, {"ingeneralpunctuation", 300}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"orya", 87}, {""}, {"spaceseparator", 54}, {""}, {""}, {"inancientgreeknumbers", 394}, {""}, {""}, {"inbalinese", 288}, {"elba", 179}, {"otheridstart", 225}, {""}, {""}, {""}, {"bengali", 84}, {""}, {""}, {""}, {""}, {"tagbanwa", 118}, {"inherited", 114}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inunifiedcanadianaboriginalsyllabics", 271}, {"othersymbol", 50}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"shrd", 173}, {"elbasan", 179}, {""}, {"intags", 480}, {""}, {""}, {""}, {"patternwhitespace", 229}, {"lisu", 156}, {"tfng", 131}, {"symbol", 46}, {""}, {""}, {""}, {""}, {"balinese", 135}, {""}, {"softdotted", 223}, {"ingujarati", 255}, {"otherlowercase", 213}, {""}, {"inprivateusearea", 379}, {""}, {""}, {""}, {""}, {""}, {"indevanagariextended", 361}, {""}, {""}, {"narb", 189}, {""}, {"brai", 126}, {""}, {""}, {""}, {""}, {""}, {""}, {"brahmi", 167}, {""}, {"arab", 80}, {""}, {""}, {""}, {""}, {""}, {"variationselector", 228}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"talu", 129}, {""}, {"mong", 105}, {"sarb", 161}, {"other", 17}, {"lydi", 149}, {""}, {""}, {"cyrillic", 77}, {"inblockelements", 313}, {"othernumber", 37}, {""}, {""}, {"ogam", 102}, {""}, {""}, {"lydian", 149}, {"induployan", 454}, {""}, {""}, {""}, {""}, {""}, {""}, {"hex", 207}, {""}, {""}, {""}, {""}, {""}, {"telu", 89}, {""}, {""}, {""}, {""}, {""}, {""}, {"incountingrodnumerals", 460}, {"separator", 51}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"xpeo", 133}, {"runic", 103}, {"caseignorable", 60}, {""}, {"inugaritic", 403}, {""}, {"omath", 206}, {""}, {"gran", 180}, {"saur", 144}, {"ingurmukhi", 254}, {""}, {""}, {""}, {"inoldpersian", 404}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inletterlikesymbols", 304}, {"inoldpermic", 402}, {"warangciti", 198}, {"insaurashtra", 360}, {""}, {""}, {"inphoneticextensions", 295}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"gothic", 112}, {"inethiopicextendeda", 371}, {"insorasompeng", 431}, {"meroitichieroglyphs", 171}, {""}, {""}, {""}, {""}, {""}, {"linearb", 121}, {""}, {""}, {""}, {""}, {""}, {"ingeometricshapes", 314}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ingreekandcoptic", 239}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incurrencysymbols", 302}, {""}, {"inphoneticextensionssupplement", 296}, {""}, {""}, {"otherletter", 27}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"idsb", 217}, {""}, {""}, {"bidic", 200}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incyrillicsupplement", 241}, {""}, {""}, {""}, {"inalphabeticpresentationforms", 381}, {"rjng", 146}, {"tirhuta", 197}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inornamentaldingbats", 471}, {""}, {""}, {""}, {"inrejang", 363}, {""}, {""}, {"phli", 163}, {""}, {""}, {"inmathematicaloperators", 307}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"patternsyntax", 230}, {""}, {""}, {""}, {""}, {""}, {"sund", 140}, {"inarabicextendeda", 251}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inpsalterpahlavi", 426}, {""}, {""}, {""}, {""}, {""}, {""}, {"grext", 71}, {""}, {""}, {"unassigned", 20}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ingeorgian", 266}, {""}, {"plrd", 172}, {""}, {""}, {""}, {""}, {""}, {"indingbats", 316}, {""}, {"phoenician", 137}, {""}, {""}, {""}, {""}, {"p", 38}, {"any", 15}, {"runr", 103}, {"lepcha", 141}, {""}, {""}, {""}, {"zp", 53}, {""}, {""}, {""}, {""}, {""}, {""}, {"pd", 40}, {""}, {""}, {""}, {"geor", 97}, {""}, {""}, {""}, {""}, {""}, {"braille", 126}, {""}, {""}, {""}, {"assigned", 16}, {"inmeroitichieroglyphs", 417}, {""}, {""}, {""}, {""}, {""}, {""}, {"glagolitic", 130}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"number", 34}, {""}, {""}, {"inunifiedcanadianaboriginalsyllabicsextended", 280}, {"ingreekextended", 299}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbrahmi", 429}, {""}, {""}, {""}, {""}, {""}, {""}, {"patsyn", 230}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"digit", 4}, {""}, {""}, {""}, {""}, {"othermath", 206}, {""}, {"inyisyllables", 349}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ethiopic", 99}, {"inbassavah", 450}, {""}, {""}, {"incombininghalfmarks", 385}, {""}, {"deprecated", 222}, {""}, {""}, {""}, {""}, {""}, {"insuperscriptsandsubscripts", 301}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hmng", 181}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hang", 98}, {""}, {""}, {"phnx", 137}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hebrew", 79}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"insupplementalmathematicaloperators", 322}, {"incombiningdiacriticalmarks", 238}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incombiningdiacriticalmarksforsymbols", 303}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"logicalorderexception", 224}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"bidicontrol", 200}, {"idstrinaryoperator", 218}, {"inarabicmathematicalalphabeticsymbols", 463}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkannada", 259}, {""}, {""}, {""}, {"kana", 107}, {""}, {""}, {"sorasompeng", 174}, {"incombiningdiacriticalmarkssupplement", 297}, {""}, {""}, {"cakm", 169}, {""}, {"inethiopicextended", 329}, {"ingothic", 401}, {""}, {""}, {""}, {""}, {"ingeometricshapesextended", 474}, {""}, {""}, {""}, {""}, {""}, {"inchakma", 432}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"otherdefaultignorablecodepoint", 221}, {""}, {""}, {""}, {""}, {"inalchemicalsymbols", 473}, {""}, {"ideographic", 210}, {""}, {""}, {"xsux", 136}, {""}, {"modifiersymbol", 48}, {""}, {""}, {""}, {"cypriot", 125}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkaithi", 430}, {""}, {""}, {""}, {""}, {""}, {"takri", 175}, {"incjkcompatibilityforms", 386}, {""}, {"inplayingcards", 466}, {"inethiopicsupplement", 269}, {""}, {"incjkcompatibilityideographs", 380}, {""}, {""}, {""}, {""}, {""}, {""}, {"uideo", 220}, {"inkatakana", 337}, {"mendekikakui", 186}, {"brah", 167}, {""}, {""}, {""}, {"inhanunoo", 275}, {""}, {""}, {""}, {"inhebrew", 243}, {""}, {""}, {"incjkstrokes", 342}, {""}, {""}, {""}, {"otherpunctuation", 44}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hebr", 79}, {"ogham", 102}, {""}, {""}, {""}, {""}, {""}, {"meeteimayek", 159}, {"incjkcompatibilityideographssupplement", 479}, {"pauc", 192}, {""}, {""}, {""}, {"kali", 145}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhangulsyllables", 374}, {""}, {""}, {""}, {""}, {"inmeeteimayek", 373}, {""}, {"insupplementalarrowsa", 318}, {""}, {""}, {"inphagspa", 359}, {"insupplementalarrowsc", 475}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhalfwidthandfullwidthforms", 389}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"hangul", 98}, {"goth", 112}, {""}, {""}, {""}, {""}, {"inhanguljamoextendeda", 364}, {""}, {""}, {"inarabicsupplement", 246}, {""}, {"inkanasupplement", 453}, {""}, {""}, {""}, {"hiragana", 106}, {""}, {"incypriotsyllabary", 411}, {""}, {""}, {""}, {""}, {"inmeroiticcursive", 418}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"palmyrene", 191}, {""}, {""}, {"alphabetic", 56}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"dep", 222}, {""}, {""}, {""}, {""}, {""}, {"mark", 30}, {"punct", 8}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbuhid", 276}, {""}, {""}, {"inkharoshthi", 419}, {""}, {""}, {""}, {""}, {""}, {"ogrext", 216}, {"inkhmersymbols", 284}, {""}, {""}, {""}, {"grantha", 180}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkhmer", 278}, {""}, {""}, {""}, {"incyrillicextendedb", 353}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"oldturkic", 164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"intakri", 442}, {""}, {"bassavah", 177}, {"inkhojki", 436}, {"takr", 175}, {""}, {""}, {"inhanguljamo", 267}, {""}, {""}, {""}, {""}, {""}, {""}, {"graphemebase", 72}, {""}, {""}, {""}, {"olck", 142}, {""}, {""}, {""}, {""}, {""}, {""}, {"olchiki", 142}, {""}, {""}, {"defaultignorablecodepoint", 70}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incombiningdiacriticalmarksextended", 287}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"nko", 139}, {"nkoo", 139}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbamum", 354}, {""}, {""}, {"bamu", 157}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inarabicpresentationformsb", 388}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbengali", 253}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"knda", 90}, {""}, {"hexdigit", 207}, {"oldnortharabian", 189}, {""}, {""}, {"inmendekikakui", 462}, {""}, {"bopo", 108}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbopomofo", 338}, {"hyphen", 203}, {""}, {""}, {""}, {""}, {"beng", 84}, {""}, {""}, {"kannada", 90}, {""}, {""}, {""}, {""}, {""}, {""}, {"inbuginese", 285}, {"phagspa", 138}, {""}, {""}, {"changeswhencasemapped", 65}, {""}, {"combiningmark", 30}, {""}, {""}, {"cwu", 62}, {""}, {"caucasianalbanian", 176}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"otheruppercase", 214}, {""}, {""}, {"tagb", 118}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"intagbanwa", 277}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inaegeannumbers", 393}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inlimbu", 281}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"changeswhencasefolded", 64}, {""}, {""}, {"enclosingmark", 32}, {""}, {"inlatinextendedb", 235}, {""}, {""}, {""}, {"phlp", 194}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inglagolitic", 324}, {""}, {""}, {""}, {""}, {""}, {"changeswhentitlecased", 63}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ugaritic", 122}, {"lu", 29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"limbu", 119}, {""}, {""}, {""}, {"intagalog", 274}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"zyyy", 74}, {""}, {""}, {""}, {""}, {"inbamumsupplement", 448}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inlisu", 351}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"kaithi", 165}, {""}, {""}, {""}, {"bopomofo", 108}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"glag", 130}, {""}, {""}, {""}, {""}, {""}, {""}, {"intelugu", 258}, {""}, {"dashpunctuation", 40}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"dupl", 178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"kthi", 165}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"tglg", 115}, {""}, {""}, {""}, {"graphemeextend", 71}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhighprivateusesurrogates", 377}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"ugar", 122}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"georgian", 97}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"insupplementaryprivateuseareaa", 482}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"phag", 138}, {""}, {""}, {""}, {"grbase", 72}, {""}, {""}, {""}, {""}, {""}, {""}, {"inpahawhhmong", 451}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"graph", 5}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkatakanaphoneticextensions", 343}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"changeswhenlowercased", 61}, {"inkayahli", 362}, {"currencysymbol", 47}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"gujr", 86}, {""}, {"oupper", 214}, {"kharoshthi", 134}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"khmr", 104}, {""}, {""}, {""}, {""}, {"incjkcompatibility", 345}, {"gujarati", 86}, {""}, {"khar", 134}, {"spacingmark", 31}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"cherokee", 100}, {""}, {""}, {""}, {""}, {""}, {"tagalog", 115}, {""}, {""}, {""}, {"incjksymbolsandpunctuation", 335}, {""}, {""}, {"rejang", 146}, {""}, {""}, {""}, {""}, {""}, {"khoj", 182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"othergraphemeextend", 216}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"surrogate", 22}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"egyp", 154}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"aghb", 176}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"nonspacingmark", 33}, {"ingeorgiansupplement", 327}, {""}, {""}, {"orkh", 164}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inegyptianhieroglyphs", 447}, {""}, {""}, {""}, {""}, {""}, {"insupplementalpunctuation", 331}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkanbun", 340}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"khmer", 104}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"batk", 166}, {""}, {""}, {""}, {""}, {"inbatak", 290}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"innoblock", 484}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"insupplementalarrowsb", 320}, {""}, {""}, {""}, {""}, {""}, {"inkangxiradicals", 333}, {""}, {"uppercase", 58}, {""}, {""}, {""}, {""}, {"openpunctuation", 45}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhanguljamoextendedb", 375}, {""}, {""}, {""}, {""}, {""}, {""}, {"paucinhau", 192}, {""}, {""}, {""}, {""}, {""}, {"inpaucinhau", 444}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incjkradicalssupplement", 332}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"oldsoutharabian", 161}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"punctuation", 38}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"unknown", 231}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"egyptianhieroglyphs", 154}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"pahawhhmong", 181}, {""}, {"buhd", 117}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"upper", 10}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"grek", 76}, {"inbopomofoextended", 341}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"uppercaseletter", 29}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"duployan", 178}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"bugi", 127}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inkhudawadi", 437}, {""}, {""}, {""}, {""}, {""}, {""}, {"kayahli", 145}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"buginese", 127}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"quotationmark", 204}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"unifiedideograph", 220}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"khudawadi", 196}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhighsurrogates", 376}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"paragraphseparator", 53}, {""}, {""}, {"incjkunifiedideographsextensiona", 346}, {""}, {""}, {""}, {"incjkunifiedideographsextensionc", 477}, {""}, {""}, {"incjkunifiedideographs", 348}, {""}, {""}, {""}, {""}, {"buhid", 117}, {"insupplementaryprivateuseareab", 483}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"changeswhenuppercased", 62}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"qmark", 204}, {""}, {""}, {"guru", 85}, {""}, {""}, {""}, {""}, {""}, {""}, {"sk", 48}, {"telugu", 89}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"katakana", 107}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inhangulcompatibilityjamo", 339}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incjkunifiedideographsextensiond", 478}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"inboxdrawing", 312}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"khojki", 182}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"incjkunifiedideographsextensionb", 476}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"batak", 166}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"blank", 2}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"greek", 76}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"grlink", 73}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"gurmukhi", 85}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {"graphemelink", 73} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') return &wordlist[key]; } } return 0; } #define PROPERTY_VERSION 7_0_0 #define PROPERTY_NAME_MAX_SIZE 59 #define CODE_RANGES_NUM 485 oniguruma-6.7.0/src/unicode-7.0/unicode_property_data_posix.c000066400000000000000000002447161321242335200242350ustar00rootroot00000000000000/* 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) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif /* Generated by make_unicode_property_data.py. */ /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint CR_NEWLINE[] = { 1, 0x000a, 0x000a, }; /* END of CR_NEWLINE */ /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint CR_Alpha[] = { 600, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x065f, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07ca, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b2, 0x08e4, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, 0x09f0, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a70, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d60, 0x0d63, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b80, 0x1ba9, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa69d, 0xa69f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabea, 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, 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, 0x1037a, 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, 0x10900, 0x10915, 0x10920, 0x10939, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x112b0, 0x112e8, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ static const OnigCodePoint CR_Blank[] = { 8, 0x0009, 0x0009, 0x0020, 0x0020, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Blank */ /* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ static const OnigCodePoint CR_Cntrl[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, }; /* END of CR_Cntrl */ /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint CR_Digit[] = { 50, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0be6, 0x0bef, 0x0c66, 0x0c6f, 0x0ce6, 0x0cef, 0x0d66, 0x0d6f, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f29, 0x1040, 0x1049, 0x1090, 0x1099, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19d9, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0xa620, 0xa629, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x104a0, 0x104a9, 0x11066, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x118e0, 0x118e9, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint CR_Graph[] = { 605, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b2, 0x08e4, 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, 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, 0x0af1, 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, 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, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c78, 0x0c7f, 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, 0x0d60, 0x0d63, 0x0d66, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f4, 0x1400, 0x167f, 0x1681, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x200b, 0x2027, 0x202a, 0x202e, 0x2030, 0x205e, 0x2060, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20bd, 0x20d0, 0x20f0, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa69d, 0xa69f, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fb, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe2d, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c9, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1dd, 0x1d200, 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, 0x1d7ff, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Graph */ /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint CR_Lower[] = { 633, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02b8, 0x02c0, 0x02c1, 0x02e0, 0x02e4, 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, 0x037a, 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, 0x03fc, 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, 0x1d00, 0x1dbf, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2170, 0x217f, 0x2184, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7d, 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, 0x2ce4, 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, 0xa69d, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727, 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa731, 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, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Lower */ /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint CR_Print[] = { 602, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b2, 0x08e4, 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, 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, 0x0af1, 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, 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, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c78, 0x0c7f, 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, 0x0d60, 0x0d63, 0x0d66, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f4, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027, 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20bd, 0x20d0, 0x20f0, 0x2100, 0x2189, 0x2190, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fcc, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa69d, 0xa69f, 0xa6f7, 0xa700, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fb, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe2d, 0xfe30, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10900, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111c8, 0x111cd, 0x111cd, 0x111d0, 0x111da, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c9, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x12470, 0x12474, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1dd, 0x1d200, 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, 0x1d7ff, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0x1f32c, 0x1f330, 0x1f37d, 0x1f380, 0x1f3ce, 0x1f3d4, 0x1f3f7, 0x1f400, 0x1f4fe, 0x1f500, 0x1f54a, 0x1f550, 0x1f579, 0x1f57b, 0x1f5a3, 0x1f5a5, 0x1f642, 0x1f645, 0x1f6cf, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f3, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Print */ /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint CR_Punct[] = { 155, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005b, 0x005d, 0x005f, 0x005f, 0x007b, 0x007b, 0x007d, 0x007d, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00ab, 0x00ab, 0x00b6, 0x00b7, 0x00bb, 0x00bb, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x058a, 0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f3a, 0x0f3d, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2010, 0x2027, 0x2030, 0x2043, 0x2045, 0x2051, 0x2053, 0x205e, 0x207d, 0x207e, 0x208d, 0x208e, 0x2308, 0x230b, 0x2329, 0x232a, 0x2768, 0x2775, 0x27c5, 0x27c6, 0x27e6, 0x27ef, 0x2983, 0x2998, 0x29d8, 0x29db, 0x29fc, 0x29fd, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e42, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, 0x3030, 0x3030, 0x303d, 0x303d, 0x30a0, 0x30a0, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfd3e, 0xfd3f, 0xfe10, 0xfe19, 0xfe30, 0xfe52, 0xfe54, 0xfe61, 0xfe63, 0xfe63, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff0a, 0xff0c, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3b, 0xff3d, 0xff3f, 0xff3f, 0xff5b, 0xff5b, 0xff5d, 0xff5d, 0xff5f, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c8, 0x111cd, 0x111cd, 0x11238, 0x1123d, 0x114c6, 0x114c6, 0x115c1, 0x115c9, 0x11641, 0x11643, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, }; /* END of CR_Punct */ /* PROPERTY: 'Space': POSIX [[:Space:]] */ static const OnigCodePoint CR_Space[] = { 10, 0x0009, 0x000d, 0x0020, 0x0020, 0x0085, 0x0085, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x2028, 0x2029, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Space */ /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint CR_Upper[] = { 627, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 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, 0xa7b1, 0xff21, 0xff3a, 0x10400, 0x10427, 0x118a0, 0x118bf, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 0x1d7ca, 0x1d7ca, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, }; /* END of CR_Upper */ /* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ static const OnigCodePoint CR_XDigit[] = { 3, 0x0030, 0x0039, 0x0041, 0x0046, 0x0061, 0x0066, }; /* END of CR_XDigit */ /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint CR_Word[] = { 629, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 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, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, 0x0483, 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, 0x08b2, 0x08e4, 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, 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, 0x0c59, 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, 0x0d60, 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, 0x1380, 0x138f, 0x13a0, 0x13f4, 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, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abe, 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, 0x20f0, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2e2f, 0x2e2f, 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, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa672, 0xa674, 0xa67d, 0xa67f, 0xa69d, 0xa69f, 0xa6f1, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c4, 0xa8d0, 0xa8d9, 0xa8e0, 0xa8f7, 0xa8fb, 0xa8fb, 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, 0xab5f, 0xab64, 0xab65, 0xabc0, 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, 0xfe2d, 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, 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, 0x11000, 0x11046, 0x11066, 0x1106f, 0x1107f, 0x110ba, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x1113f, 0x11150, 0x11173, 0x11176, 0x11176, 0x11180, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11237, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11480, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115c0, 0x11600, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint CR_Alnum[] = { 630, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x0669, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07c0, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b2, 0x08e4, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0966, 0x096f, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 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, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0be6, 0x0bef, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c59, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d60, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f20, 0x0f29, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x1090, 0x1099, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f4, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1946, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b50, 0x1b59, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f, 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fcc, 0xa000, 0xa48c, 0xa4d0, 0xa4fd, 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa69d, 0xa69f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b1, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa900, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab5f, 0xab64, 0xab65, 0xabc0, 0xabea, 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, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 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, 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, 0x10900, 0x10915, 0x10920, 0x10939, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111d0, 0x111da, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x112b0, 0x112e8, 0x112f0, 0x112f9, 0x11301, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, 0x116c0, 0x116c9, 0x118a0, 0x118e9, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12398, 0x12400, 0x1246e, 0x13000, 0x1342e, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2f800, 0x2fa1d, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ static const OnigCodePoint CR_ASCII[] = { 1, 0x0000, 0x007f, }; /* END of CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, CR_Alpha, CR_Blank, CR_Cntrl, CR_Digit, CR_Graph, CR_Lower, CR_Print, CR_Punct, CR_Space, CR_Upper, CR_XDigit, CR_Word, CR_Alnum, CR_ASCII, }; #define TOTAL_KEYWORDS 15 #define MIN_WORD_LENGTH 4 #define MAX_WORD_LENGTH 7 #define MIN_HASH_VALUE 5 #define MAX_HASH_VALUE 19 /* maximum key range = 15, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 static unsigned char gperf_downcase[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #endif #ifndef GPERF_CASE_STRNCMP #define GPERF_CASE_STRNCMP 1 static int gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n) { for (; n > 0;) { unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; if (c1 != 0 && c1 == c2) { n--; continue; } return (int)c1 - (int)c2; } return 0; } #endif #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static const unsigned char asso_values[] = { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 12, 5, 3, 20, 20, 10, 20, 0, 20, 20, 9, 20, 1, 20, 0, 20, 9, 7, 3, 6, 20, 2, 3, 20, 20, 20, 20, 20, 20, 20, 20, 2, 12, 5, 3, 20, 20, 10, 20, 0, 20, 20, 9, 20, 1, 20, 0, 20, 9, 7, 3, 6, 20, 2, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; 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) { static const struct PropertyNameCtype wordlist[] = { {""}, {""}, {""}, {""}, {""}, {"print", 7}, {"punct", 8}, {"alpha", 1}, {"alnum", 13}, {"xdigit", 11}, {"newline", 0}, {"upper", 10}, {"ascii", 14}, {"cntrl", 3}, {"space", 9}, {"word", 12}, {"lower", 6}, {"graph", 5}, {"digit", 4}, {"blank", 2} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register const char *s = wordlist[key].name; if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') return &wordlist[key]; } } return 0; } #define PROPERTY_VERSION 7_0_0 #define PROPERTY_NAME_MAX_SIZE 17 #define CODE_RANGES_NUM 15 oniguruma-6.7.0/src/unicode-7.0/unicode_unfold_key.c000066400000000000000000001226071321242335200222670ustar00rootroot00000000000000/* This file was converted by gperf_unfold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: /Library/Developer/CommandLineTools/usr/bin/gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf */ /* Computed positions: -k'1-3' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 1180 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 6 #define MAX_HASH_VALUE 1572 /* maximum key range = 1567, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { 52, 5, 3, 9, 68, 1, 7, 1573, 1573, 1573, 1573, 1573, 1573, 1573, 405, 1177, 394, 37, 382, 1175, 370, 1215, 349, 1170, 328, 128, 318, 1164, 304, 1159, 715, 2, 4, 1157, 22, 14, 360, 138, 293, 1145, 277, 1139, 266, 1133, 692, 0, 670, 1125, 99, 1119, 88, 1115, 43, 1071, 77, 1106, 32, 969, 66, 1100, 55, 1137, 717, 1085, 180, 981, 993, 521, 977, 54, 970, 1091, 836, 1082, 1074, 189, 308, 1204, 426, 693, 455, 484, 824, 383, 492, 915, 657, 1061, 252, 932, 203, 905, 647, 1040, 640, 1016, 633, 820, 615, 565, 511, 477, 231, 149, 176, 455, 1032, 426, 672, 418, 608, 382, 591, 777, 581, 371, 820, 200, 565, 1202, 553, 1201, 540, 1200, 529, 1188, 965, 1573, 954, 1573, 1196, 381, 1059, 1573, 1193, 542, 122, 436, 113, 268, 1042, 298, 812, 100, 800, 199, 784, 364, 472, 1183, 960, 1181, 508, 802, 162, 405, 503, 1179, 241, 1169, 484, 1163, 287, 452, 224, 1035, 215, 123, 8, 837, 790, 1158, 781, 1144, 133, 1009, 157, 999, 118, 989, 109, 924, 172, 921, 167, 895, 148, 1016, 465, 1015, 453, 577, 446, 978, 774, 994, 441, 894, 415, 967, 436, 946, 339, 813, 398, 630, 764, 620, 427, 559, 421, 916, 911, 686, 757, 741, 750, 814, 852, 903, 1012, 583, 891, 1125, 885, 1176, 627, 1053, 739, 44, 728, 1148, 600, 247, 846, 329, 705, 328, 880, 1573, 681, 270, 874, 1573, 870, 242, 866, 233, 862, 374, 858, 213, 343, 1573, 943, 127, 17, 143, 833, 72, 1005, 467, 261, 319, 522, 26, 141, 30, 25, 19 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+14] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } const struct ByUnfoldKey * unicode_unfold_key(OnigCodePoint code) { static const struct ByUnfoldKey wordlist[] = { {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x1041f, 3060, 1}, {0xffffffff, -1, 0}, {0x10411, 3018, 1}, {0xffffffff, -1, 0}, {0x10412, 3021, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x10415, 3030, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x10414, 3027, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x10403, 2976, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x10426, 3081, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x2c1f, 2253, 1}, {0x041f, 932, 1}, {0x2c11, 2211, 1}, {0x0411, 890, 1}, {0x2c12, 2214, 1}, {0x0412, 893, 1}, {0x1e12, 1478, 1}, {0x0112, 198, 1}, {0x2c9a, 2364, 1}, {0x049a, 1106, 1}, {0x1e9a, 0, 2}, {0x0512, 1286, 1}, {0x1f9a, 179, 2}, {0x0212, 529, 1}, {0x2c15, 2223, 1}, {0x0415, 902, 1}, {0xa79a, 2865, 1}, {0x2cf2, 2481, 1}, {0x04f2, 1238, 1}, {0x1ef2, 1800, 1}, {0x01f2, 483, 1}, {0x1ff2, 257, 2}, {0x2c14, 2220, 1}, {0x0414, 899, 1}, {0x1e14, 1481, 1}, {0x0114, 201, 1}, {0x04fe, 1256, 1}, {0x1efe, 1818, 1}, {0x01fe, 499, 1}, {0x0514, 1289, 1}, {0x1ffb, 2004, 1}, {0x0214, 532, 1}, {0x2c2a, 2286, 1}, {0x042a, 965, 1}, {0x1e2a, 1514, 1}, {0x012a, 234, 1}, {0x1f2a, 1869, 1}, {0x2c03, 2169, 1}, {0x0403, 992, 1}, {0x052a, 1322, 1}, {0xa72a, 2727, 1}, {0x022a, 562, 1}, {0x10424, 3075, 1}, {0x2c26, 2274, 1}, {0x0426, 953, 1}, {0x1e26, 1508, 1}, {0x0126, 228, 1}, {0x01d7, 444, 1}, {0x1fd7, 31, 3}, {0xff2a, 2916, 1}, {0x0526, 1316, 1}, {0xa726, 2721, 1}, {0x0226, 556, 1}, {0x10422, 3069, 1}, {0x212a, 27, 1}, {0x2c2e, 2298, 1}, {0x042e, 977, 1}, {0x1e2e, 1520, 1}, {0x012e, 240, 1}, {0x1f2e, 1881, 1}, {0xff26, 2904, 1}, {0x0537, 1349, 1}, {0x052e, 1328, 1}, {0xa72e, 2733, 1}, {0x022e, 568, 1}, {0x2126, 817, 1}, {0x2c2c, 2292, 1}, {0x042c, 971, 1}, {0x1e2c, 1517, 1}, {0x012c, 237, 1}, {0x1f2c, 1875, 1}, {0xff37, 2955, 1}, {0xff2e, 2928, 1}, {0x052c, 1325, 1}, {0xa72c, 2730, 1}, {0x022c, 565, 1}, {0x039a, 769, 1}, {0x2c28, 2280, 1}, {0x0428, 959, 1}, {0x1e28, 1511, 1}, {0x0128, 231, 1}, {0x1f28, 1863, 1}, {0x1040b, 3000, 1}, {0xff2c, 2922, 1}, {0x0528, 1319, 1}, {0xa728, 2724, 1}, {0x0228, 559, 1}, {0x03ff, 721, 1}, {0x2c24, 2268, 1}, {0x0424, 947, 1}, {0x1e24, 1505, 1}, {0x0124, 225, 1}, {0x10417, 3036, 1}, {0x03fe, 718, 1}, {0xff28, 2910, 1}, {0x0524, 1313, 1}, {0xa724, 2718, 1}, {0x0224, 553, 1}, {0x03fd, 715, 1}, {0x2c22, 2262, 1}, {0x0422, 941, 1}, {0x1e22, 1502, 1}, {0x0122, 222, 1}, {0x0181, 613, 1}, {0x1f81, 134, 2}, {0xff24, 2898, 1}, {0x0522, 1310, 1}, {0xa722, 2715, 1}, {0x0222, 550, 1}, {0x2ca6, 2382, 1}, {0x04a6, 1124, 1}, {0x1ea6, 1686, 1}, {0x01a6, 676, 1}, {0x1fa6, 239, 2}, {0x047c, 1073, 1}, {0x1e7c, 1638, 1}, {0xff22, 2892, 1}, {0xa7a6, 2883, 1}, {0x2ca4, 2379, 1}, {0x04a4, 1121, 1}, {0x1ea4, 1683, 1}, {0x01a4, 390, 1}, {0x1fa4, 229, 2}, {0x047a, 1070, 1}, {0x1e7a, 1635, 1}, {0x1e99, 42, 2}, {0xa7a4, 2880, 1}, {0x1f99, 174, 2}, {0x2c0b, 2193, 1}, {0x040b, 1016, 1}, {0x01f1, 483, 1}, {0xa69a, 2712, 1}, {0x1f0b, 1830, 1}, {0x2ca0, 2373, 1}, {0x04a0, 1115, 1}, {0x1ea0, 1677, 1}, {0x01a0, 384, 1}, {0x1fa0, 209, 2}, {0x2c17, 2229, 1}, {0x0417, 908, 1}, {0x03f5, 749, 1}, {0xa7a0, 2874, 1}, {0x04fc, 1253, 1}, {0x1efc, 1815, 1}, {0x01fc, 496, 1}, {0x1ffc, 96, 2}, {0x10a6, 2502, 1}, {0x1ff3, 96, 2}, {0x2cac, 2391, 1}, {0x04ac, 1133, 1}, {0x1eac, 1695, 1}, {0x01ac, 396, 1}, {0x1fac, 229, 2}, {0x1f59, 1929, 1}, {0x0059, 71, 1}, {0x10a4, 2496, 1}, {0xa7ac, 637, 1}, {0x2ca2, 2376, 1}, {0x04a2, 1118, 1}, {0x1ea2, 1680, 1}, {0x01a2, 387, 1}, {0x1fa2, 219, 2}, {0x2c8c, 2343, 1}, {0x048c, 1085, 1}, {0x1e8c, 1662, 1}, {0xa7a2, 2877, 1}, {0x1f8c, 149, 2}, {0x2caa, 2388, 1}, {0x04aa, 1130, 1}, {0x1eaa, 1692, 1}, {0x10a0, 2484, 1}, {0x1faa, 219, 2}, {0x2ca8, 2385, 1}, {0x04a8, 1127, 1}, {0x1ea8, 1689, 1}, {0xa7aa, 646, 1}, {0x1fa8, 209, 2}, {0x03a6, 807, 1}, {0x1e5a, 1586, 1}, {0x015a, 300, 1}, {0xa7a8, 2886, 1}, {0x005a, 74, 1}, {0x1e32, 1526, 1}, {0x0132, 243, 1}, {0xa75a, 2796, 1}, {0x10ac, 2520, 1}, {0x03a4, 801, 1}, {0x0532, 1334, 1}, {0xa732, 2736, 1}, {0x0232, 574, 1}, {0x118a6, 3105, 1}, {0x0399, 764, 1}, {0x013d, 258, 1}, {0x1f3d, 1902, 1}, {0x10a2, 2490, 1}, {0x03f1, 793, 1}, {0x053d, 1367, 1}, {0xff32, 2940, 1}, {0x023d, 378, 1}, {0x118a4, 3099, 1}, {0x2c67, 2310, 1}, {0x03a0, 789, 1}, {0x2132, 2028, 1}, {0x1f83, 144, 2}, {0x10aa, 2514, 1}, {0x1e4c, 1565, 1}, {0x014c, 279, 1}, {0x1f4c, 1923, 1}, {0x004c, 31, 1}, {0x10a8, 2508, 1}, {0x054c, 1412, 1}, {0xa74c, 2775, 1}, {0x024c, 598, 1}, {0x2ced, 2478, 1}, {0x118a0, 3087, 1}, {0x2c98, 2361, 1}, {0x0498, 1103, 1}, {0x1e98, 38, 2}, {0x0198, 375, 1}, {0x1f98, 169, 2}, {0x1041c, 3051, 1}, {0x2183, 2079, 1}, {0x2167, 2052, 1}, {0xa798, 2862, 1}, {0x2c96, 2358, 1}, {0x0496, 1100, 1}, {0x1e96, 16, 2}, {0x0196, 652, 1}, {0x1f96, 199, 2}, {0x118ac, 3123, 1}, {0x038c, 827, 1}, {0x1041a, 3045, 1}, {0xa796, 2859, 1}, {0x1e58, 1583, 1}, {0x0158, 297, 1}, {0x03aa, 821, 1}, {0x0058, 68, 1}, {0x1fe9, 2022, 1}, {0x118a2, 3093, 1}, {0xa758, 2793, 1}, {0x03a8, 814, 1}, {0x2c90, 2349, 1}, {0x0490, 1091, 1}, {0x1e90, 1668, 1}, {0x0190, 628, 1}, {0x1f90, 169, 2}, {0x1fe7, 47, 3}, {0x10418, 3039, 1}, {0x118aa, 3117, 1}, {0xa790, 2853, 1}, {0x01db, 450, 1}, {0x1fdb, 1986, 1}, {0x00db, 156, 1}, {0x118a8, 3111, 1}, {0x1e4a, 1562, 1}, {0x014a, 276, 1}, {0x1f4a, 1917, 1}, {0x004a, 24, 1}, {0x1040e, 3009, 1}, {0x054a, 1406, 1}, {0xa74a, 2772, 1}, {0x024a, 595, 1}, {0x04f8, 1247, 1}, {0x1ef8, 1809, 1}, {0x01f8, 490, 1}, {0x1ff8, 1989, 1}, {0x2c1c, 2244, 1}, {0x041c, 923, 1}, {0x1e1c, 1493, 1}, {0x011c, 213, 1}, {0x1f1c, 1857, 1}, {0x017d, 351, 1}, {0x1040c, 3003, 1}, {0x051c, 1301, 1}, {0x1fe3, 41, 3}, {0x021c, 544, 1}, {0xa77d, 1445, 1}, {0x2c1a, 2238, 1}, {0x041a, 917, 1}, {0x1e1a, 1490, 1}, {0x011a, 210, 1}, {0x1f1a, 1851, 1}, {0x1040a, 2997, 1}, {0x0398, 759, 1}, {0x051a, 1298, 1}, {0xa68c, 2691, 1}, {0x021a, 541, 1}, {0x2c94, 2355, 1}, {0x0494, 1097, 1}, {0x1e94, 1674, 1}, {0x0194, 640, 1}, {0x1f94, 189, 2}, {0x0396, 753, 1}, {0x2c18, 2232, 1}, {0x0418, 911, 1}, {0x1e18, 1487, 1}, {0x0118, 207, 1}, {0x1f18, 1845, 1}, {0x2c7f, 583, 1}, {0xa65a, 2643, 1}, {0x0518, 1295, 1}, {0x017f, 52, 1}, {0x0218, 538, 1}, {0x10408, 2991, 1}, {0x2c0e, 2202, 1}, {0x040e, 1025, 1}, {0x1e0e, 1472, 1}, {0x010e, 192, 1}, {0x1f0e, 1839, 1}, {0x0390, 25, 3}, {0x1e3e, 1544, 1}, {0x050e, 1280, 1}, {0x1f3e, 1905, 1}, {0x020e, 523, 1}, {0x10416, 3033, 1}, {0x053e, 1370, 1}, {0xa73e, 2754, 1}, {0x023e, 2307, 1}, {0x2c0c, 2196, 1}, {0x040c, 1019, 1}, {0x1e0c, 1469, 1}, {0x010c, 189, 1}, {0x1f0c, 1833, 1}, {0x1ff9, 1992, 1}, {0x10406, 2985, 1}, {0x050c, 1277, 1}, {0xa64c, 2622, 1}, {0x020c, 520, 1}, {0x2c0a, 2190, 1}, {0x040a, 1013, 1}, {0x1e0a, 1466, 1}, {0x010a, 186, 1}, {0x1f0a, 1827, 1}, {0x00df, 24, 2}, {0x00dd, 162, 1}, {0x050a, 1274, 1}, {0x10404, 2979, 1}, {0x020a, 517, 1}, {0xa698, 2709, 1}, {0x2cbc, 2415, 1}, {0x04bc, 1157, 1}, {0x1ebc, 1719, 1}, {0x01bc, 411, 1}, {0x1fbc, 62, 2}, {0x04ee, 1232, 1}, {0x1eee, 1794, 1}, {0x01ee, 480, 1}, {0xa696, 2706, 1}, {0x10402, 2973, 1}, {0x2c08, 2184, 1}, {0x0408, 1007, 1}, {0x1e08, 1463, 1}, {0x0108, 183, 1}, {0x1f08, 1821, 1}, {0xa658, 2640, 1}, {0x0394, 746, 1}, {0x0508, 1271, 1}, {0xfb15, 113, 2}, {0x0208, 514, 1}, {0x10400, 2967, 1}, {0x2c16, 2226, 1}, {0x0416, 905, 1}, {0x1e16, 1484, 1}, {0x0116, 204, 1}, {0xa690, 2697, 1}, {0xfb14, 109, 2}, {0x037f, 878, 1}, {0x0516, 1292, 1}, {0x1f85, 154, 2}, {0x0216, 535, 1}, {0x2c06, 2178, 1}, {0x0406, 1001, 1}, {0x1e06, 1460, 1}, {0x0106, 180, 1}, {0x2ceb, 2475, 1}, {0xa64a, 2619, 1}, {0x10bc, 2568, 1}, {0x0506, 1268, 1}, {0x1feb, 1998, 1}, {0x0206, 511, 1}, {0xfb03, 0, 3}, {0x2c75, 2322, 1}, {0x2c04, 2172, 1}, {0x0404, 995, 1}, {0x1e04, 1457, 1}, {0x0104, 177, 1}, {0x0145, 270, 1}, {0x03f9, 875, 1}, {0x0045, 12, 1}, {0x0504, 1265, 1}, {0x0545, 1391, 1}, {0x0204, 508, 1}, {0x0245, 697, 1}, {0x2165, 2046, 1}, {0x2c02, 2166, 1}, {0x0402, 989, 1}, {0x1e02, 1454, 1}, {0x0102, 174, 1}, {0x2cbe, 2418, 1}, {0x04be, 1160, 1}, {0x1ebe, 1722, 1}, {0x0502, 1262, 1}, {0x1fbe, 764, 1}, {0x0202, 505, 1}, {0x2161, 2034, 1}, {0x2c00, 2160, 1}, {0x0400, 983, 1}, {0x1e00, 1451, 1}, {0x0100, 171, 1}, {0x1f8d, 154, 2}, {0xa694, 2703, 1}, {0x03ee, 872, 1}, {0x0500, 1259, 1}, {0xa78d, 643, 1}, {0x0200, 502, 1}, {0x2cb8, 2409, 1}, {0x04b8, 1151, 1}, {0x1eb8, 1713, 1}, {0x01b8, 408, 1}, {0x1fb8, 2007, 1}, {0x118bc, 3171, 1}, {0x2cc4, 2427, 1}, {0x1f5f, 1938, 1}, {0x1ec4, 1731, 1}, {0x01c4, 417, 1}, {0x1fc4, 54, 2}, {0x00c4, 89, 1}, {0x2cc2, 2424, 1}, {0x1e40, 1547, 1}, {0x1ec2, 1728, 1}, {0x1f5d, 1935, 1}, {0x1fc2, 253, 2}, {0x00c2, 83, 1}, {0x0540, 1376, 1}, {0xa740, 2757, 1}, {0x10be, 2574, 1}, {0x2cba, 2412, 1}, {0x04ba, 1154, 1}, {0x1eba, 1716, 1}, {0x017b, 348, 1}, {0x1fba, 1965, 1}, {0x2cb6, 2406, 1}, {0x04b6, 1148, 1}, {0x1eb6, 1710, 1}, {0xa77b, 2832, 1}, {0x1fb6, 58, 2}, {0x2cb2, 2400, 1}, {0x04b2, 1142, 1}, {0x1eb2, 1704, 1}, {0x01b2, 694, 1}, {0x1fb2, 249, 2}, {0x0345, 764, 1}, {0x10b8, 2556, 1}, {0x2cb0, 2397, 1}, {0x04b0, 1139, 1}, {0x1eb0, 1701, 1}, {0x1f95, 194, 2}, {0x1e42, 1550, 1}, {0x10c4, 2592, 1}, {0x1f5b, 1932, 1}, {0x0042, 3, 1}, {0xa7b0, 703, 1}, {0x0542, 1382, 1}, {0xa742, 2760, 1}, {0x10c2, 2586, 1}, {0x2cae, 2394, 1}, {0x04ae, 1136, 1}, {0x1eae, 1698, 1}, {0x01ae, 685, 1}, {0x1fae, 239, 2}, {0x01f7, 414, 1}, {0x1ff7, 67, 3}, {0x2c86, 2334, 1}, {0x10ba, 2562, 1}, {0x1e86, 1653, 1}, {0x0186, 616, 1}, {0x1f86, 159, 2}, {0x24bc, 2100, 1}, {0x10b6, 2550, 1}, {0x118be, 3177, 1}, {0xa786, 2847, 1}, {0xfb17, 117, 2}, {0x0057, 65, 1}, {0x10b2, 2538, 1}, {0x2c92, 2352, 1}, {0x0492, 1094, 1}, {0x1e92, 1671, 1}, {0x0143, 267, 1}, {0x1f92, 179, 2}, {0x0043, 6, 1}, {0x10b0, 2532, 1}, {0x0543, 1385, 1}, {0xa792, 2856, 1}, {0x0243, 354, 1}, {0x1e46, 1556, 1}, {0x03c2, 797, 1}, {0x118b8, 3159, 1}, {0x0046, 15, 1}, {0xffffffff, -1, 0}, {0x0546, 1394, 1}, {0xa746, 2766, 1}, {0x0246, 589, 1}, {0x10ae, 2526, 1}, {0x2c8e, 2346, 1}, {0x048e, 1088, 1}, {0x1e8e, 1665, 1}, {0x018e, 453, 1}, {0x1f8e, 159, 2}, {0x2c8a, 2340, 1}, {0x048a, 1082, 1}, {0x1e8a, 1659, 1}, {0x018a, 622, 1}, {0x1f8a, 139, 2}, {0x1e56, 1580, 1}, {0x0156, 294, 1}, {0x1f56, 62, 3}, {0x0056, 62, 1}, {0x118ba, 3165, 1}, {0x0556, 1442, 1}, {0xa756, 2790, 1}, {0x0395, 749, 1}, {0x03b0, 41, 3}, {0x118b6, 3153, 1}, {0x04fa, 1250, 1}, {0x1efa, 1812, 1}, {0x01fa, 493, 1}, {0x1ffa, 2001, 1}, {0x118b2, 3141, 1}, {0x0535, 1343, 1}, {0x2c6e, 664, 1}, {0x046e, 1052, 1}, {0x1e6e, 1617, 1}, {0x016e, 330, 1}, {0x1f6e, 1959, 1}, {0x118b0, 3135, 1}, {0x03f7, 881, 1}, {0x24be, 2106, 1}, {0xa76e, 2826, 1}, {0xff35, 2949, 1}, {0xffffffff, -1, 0}, {0x0386, 724, 1}, {0x046c, 1049, 1}, {0x1e6c, 1614, 1}, {0x016c, 327, 1}, {0x1f6c, 1953, 1}, {0x0179, 345, 1}, {0x118ae, 3129, 1}, {0xffffffff, -1, 0}, {0xa76c, 2823, 1}, {0xa640, 2604, 1}, {0xa779, 2829, 1}, {0x216e, 2073, 1}, {0x0392, 739, 1}, {0x24b8, 2088, 1}, {0x046a, 1046, 1}, {0x1e6a, 1611, 1}, {0x016a, 324, 1}, {0x1f6a, 1947, 1}, {0xffffffff, -1, 0}, {0x24c4, 2124, 1}, {0x04c3, 1166, 1}, {0xa76a, 2820, 1}, {0x216c, 2067, 1}, {0x1fc3, 71, 2}, {0x00c3, 86, 1}, {0x24c2, 2118, 1}, {0x0468, 1043, 1}, {0x1e68, 1608, 1}, {0x0168, 321, 1}, {0x1f68, 1941, 1}, {0x0055, 59, 1}, {0x038e, 830, 1}, {0x0555, 1439, 1}, {0xa768, 2817, 1}, {0x24ba, 2094, 1}, {0x216a, 2061, 1}, {0x038a, 733, 1}, {0xffffffff, -1, 0}, {0xa642, 2607, 1}, {0x24b6, 2082, 1}, {0x01b1, 691, 1}, {0x2c64, 673, 1}, {0x0464, 1037, 1}, {0x1e64, 1602, 1}, {0x0164, 315, 1}, {0xa7b1, 682, 1}, {0x01cf, 432, 1}, {0x2168, 2055, 1}, {0x00cf, 123, 1}, {0xa764, 2811, 1}, {0x03fa, 884, 1}, {0x2c62, 655, 1}, {0x0462, 1034, 1}, {0x1e62, 1599, 1}, {0x0162, 312, 1}, {0xa686, 2682, 1}, {0x10c3, 2589, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xa762, 2808, 1}, {0x2cda, 2460, 1}, {0x04da, 1202, 1}, {0x1eda, 1764, 1}, {0x2164, 2043, 1}, {0x1fda, 1983, 1}, {0x00da, 153, 1}, {0xffffffff, -1, 0}, {0xa692, 2700, 1}, {0x2c60, 2301, 1}, {0x0460, 1031, 1}, {0x1e60, 1595, 1}, {0x0160, 309, 1}, {0xffffffff, -1, 0}, {0x2162, 2037, 1}, {0x10b1, 2535, 1}, {0xa646, 2613, 1}, {0xa760, 2805, 1}, {0x1e54, 1577, 1}, {0x0154, 291, 1}, {0x1f54, 57, 3}, {0x0054, 56, 1}, {0x04c1, 1163, 1}, {0x0554, 1436, 1}, {0xa754, 2787, 1}, {0x10420, 3063, 1}, {0x00c1, 80, 1}, {0xa68e, 2694, 1}, {0x2cd4, 2451, 1}, {0x04d4, 1193, 1}, {0x1ed4, 1755, 1}, {0x2160, 2031, 1}, {0xa68a, 2688, 1}, {0x00d4, 138, 1}, {0xffffffff, -1, 0}, {0xa656, 2637, 1}, {0x1e52, 1574, 1}, {0x0152, 288, 1}, {0x1f52, 52, 3}, {0x0052, 49, 1}, {0xffffffff, -1, 0}, {0x0552, 1430, 1}, {0xa752, 2784, 1}, {0x1e50, 1571, 1}, {0x0150, 285, 1}, {0x1f50, 84, 2}, {0x0050, 43, 1}, {0x1041e, 3057, 1}, {0x0550, 1424, 1}, {0xa750, 2781, 1}, {0x1e4e, 1568, 1}, {0x014e, 282, 1}, {0x03cf, 836, 1}, {0x004e, 37, 1}, {0xffffffff, -1, 0}, {0x054e, 1418, 1}, {0xa74e, 2778, 1}, {0x024e, 601, 1}, {0x10c1, 2583, 1}, {0x118b1, 3138, 1}, {0x1e48, 1559, 1}, {0xffffffff, -1, 0}, {0x1f48, 1911, 1}, {0x0048, 21, 1}, {0xa66c, 2670, 1}, {0x0548, 1400, 1}, {0xa748, 2769, 1}, {0x0248, 592, 1}, {0x10bf, 2577, 1}, {0x03da, 842, 1}, {0x10410, 3015, 1}, {0x2c20, 2256, 1}, {0x0420, 935, 1}, {0x1e20, 1499, 1}, {0x0120, 219, 1}, {0x1e5e, 1592, 1}, {0x015e, 306, 1}, {0xa66a, 2667, 1}, {0x0520, 1307, 1}, {0xffffffff, -1, 0}, {0x0220, 381, 1}, {0xa75e, 2802, 1}, {0x2ce2, 2472, 1}, {0x04e2, 1214, 1}, {0x1ee2, 1776, 1}, {0x01e2, 462, 1}, {0x1fe2, 36, 3}, {0xffffffff, -1, 0}, {0x04c7, 1172, 1}, {0xa668, 2664, 1}, {0x01c7, 421, 1}, {0x1fc7, 15, 3}, {0x00c7, 99, 1}, {0x2c1e, 2250, 1}, {0x041e, 929, 1}, {0x1e1e, 1496, 1}, {0x011e, 216, 1}, {0x0141, 264, 1}, {0x24c3, 2121, 1}, {0x0041, 0, 1}, {0x051e, 1304, 1}, {0x0541, 1379, 1}, {0x021e, 547, 1}, {0x0241, 586, 1}, {0xfb16, 125, 2}, {0xa664, 2658, 1}, {0x2cde, 2466, 1}, {0x04de, 1208, 1}, {0x1ede, 1770, 1}, {0x01de, 456, 1}, {0xffffffff, -1, 0}, {0x00de, 165, 1}, {0x118bf, 3180, 1}, {0xffffffff, -1, 0}, {0xfb06, 29, 2}, {0xa662, 2655, 1}, {0x2c10, 2208, 1}, {0x0410, 887, 1}, {0x1e10, 1475, 1}, {0x0110, 195, 1}, {0x1e30, 1523, 1}, {0x0130, 261, 2}, {0x24cf, 2157, 1}, {0x0510, 1283, 1}, {0x10c7, 2598, 1}, {0x0210, 526, 1}, {0xfb04, 5, 3}, {0x0230, 571, 1}, {0xffffffff, -1, 0}, {0x2cd8, 2457, 1}, {0x04d8, 1199, 1}, {0x1ed8, 1761, 1}, {0xa660, 2652, 1}, {0x1fd8, 2013, 1}, {0x00d8, 147, 1}, {0xff30, 2934, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb02, 12, 2}, {0xa654, 2634, 1}, {0x2cd6, 2454, 1}, {0x04d6, 1196, 1}, {0x1ed6, 1758, 1}, {0x04c9, 1175, 1}, {0x1fd6, 76, 2}, {0x00d6, 144, 1}, {0x1fc9, 1974, 1}, {0x00c9, 105, 1}, {0xffffffff, -1, 0}, {0xfb00, 4, 2}, {0x03e2, 854, 1}, {0x2cca, 2436, 1}, {0xffffffff, -1, 0}, {0x1eca, 1740, 1}, {0x01ca, 425, 1}, {0x1fca, 1977, 1}, {0x00ca, 108, 1}, {0xa652, 2631, 1}, {0x2cc8, 2433, 1}, {0x24c1, 2115, 1}, {0x1ec8, 1737, 1}, {0x01c8, 421, 1}, {0x1fc8, 1971, 1}, {0x00c8, 102, 1}, {0xa650, 2628, 1}, {0x2cc0, 2421, 1}, {0x04c0, 1184, 1}, {0x1ec0, 1725, 1}, {0xffffffff, -1, 0}, {0x24bf, 2109, 1}, {0x00c0, 77, 1}, {0xa64e, 2625, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x03de, 848, 1}, {0x2cb4, 2403, 1}, {0x04b4, 1145, 1}, {0x1eb4, 1707, 1}, {0x2c63, 1448, 1}, {0x1fb4, 50, 2}, {0xffffffff, -1, 0}, {0xa648, 2616, 1}, {0x2c9e, 2370, 1}, {0x049e, 1112, 1}, {0x1e9e, 24, 2}, {0x2c84, 2331, 1}, {0x1f9e, 199, 2}, {0x1e84, 1650, 1}, {0x0184, 360, 1}, {0x1f84, 149, 2}, {0xa79e, 2871, 1}, {0x2c9c, 2367, 1}, {0x049c, 1109, 1}, {0xa784, 2844, 1}, {0x019c, 661, 1}, {0x1f9c, 189, 2}, {0xa65e, 2649, 1}, {0x03d8, 839, 1}, {0xffffffff, -1, 0}, {0xa79c, 2868, 1}, {0x2163, 2040, 1}, {0x2c82, 2328, 1}, {0x10c0, 2580, 1}, {0x1e82, 1647, 1}, {0x0182, 357, 1}, {0x1f82, 139, 2}, {0x018b, 366, 1}, {0x1f8b, 144, 2}, {0x03d6, 789, 1}, {0xa782, 2841, 1}, {0xffffffff, -1, 0}, {0xa78b, 2850, 1}, {0x10b4, 2544, 1}, {0x2c80, 2325, 1}, {0x0480, 1079, 1}, {0x1e80, 1644, 1}, {0x04cb, 1178, 1}, {0x1f80, 129, 2}, {0x01cb, 425, 1}, {0x1fcb, 1980, 1}, {0x00cb, 111, 1}, {0xa780, 2838, 1}, {0x0466, 1040, 1}, {0x1e66, 1605, 1}, {0x0166, 318, 1}, {0x24c7, 2133, 1}, {0x0053, 52, 1}, {0x1e44, 1553, 1}, {0x0553, 1433, 1}, {0xa766, 2814, 1}, {0x0044, 9, 1}, {0xffffffff, -1, 0}, {0x0544, 1388, 1}, {0xa744, 2763, 1}, {0x0244, 688, 1}, {0x04f4, 1241, 1}, {0x1ef4, 1803, 1}, {0x01f4, 487, 1}, {0x1ff4, 101, 2}, {0x1e3a, 1538, 1}, {0x1e9b, 1595, 1}, {0x1f3a, 1893, 1}, {0x1f9b, 184, 2}, {0x2166, 2049, 1}, {0x053a, 1358, 1}, {0xa73a, 2748, 1}, {0x023a, 2304, 1}, {0x2cdc, 2463, 1}, {0x04dc, 1205, 1}, {0x1edc, 1767, 1}, {0x039e, 783, 1}, {0x10bd, 2571, 1}, {0x00dc, 159, 1}, {0x2ccc, 2439, 1}, {0xff3a, 2964, 1}, {0x1ecc, 1743, 1}, {0x118b4, 3147, 1}, {0x1fcc, 71, 2}, {0x00cc, 114, 1}, {0x039c, 776, 1}, {0x04ec, 1229, 1}, {0x1eec, 1791, 1}, {0x01ec, 477, 1}, {0x1fec, 2025, 1}, {0x04ea, 1226, 1}, {0x1eea, 1788, 1}, {0x01ea, 474, 1}, {0x1fea, 1995, 1}, {0x04e8, 1223, 1}, {0x1ee8, 1785, 1}, {0x01e8, 471, 1}, {0x1fe8, 2019, 1}, {0x04e6, 1220, 1}, {0x1ee6, 1782, 1}, {0x01e6, 468, 1}, {0x1fe6, 88, 2}, {0x04e4, 1217, 1}, {0x1ee4, 1779, 1}, {0x01e4, 465, 1}, {0x1fe4, 80, 2}, {0x24c9, 2139, 1}, {0x2ce0, 2469, 1}, {0x04e0, 1211, 1}, {0x1ee0, 1773, 1}, {0x01e0, 459, 1}, {0xffffffff, -1, 0}, {0x2cd2, 2448, 1}, {0x04d2, 1190, 1}, {0x1ed2, 1752, 1}, {0x24ca, 2142, 1}, {0x1fd2, 20, 3}, {0x00d2, 132, 1}, {0x2cd0, 2445, 1}, {0x04d0, 1187, 1}, {0x1ed0, 1749, 1}, {0x118bd, 3174, 1}, {0x24c8, 2136, 1}, {0x00d0, 126, 1}, {0x01b7, 700, 1}, {0x1fb7, 10, 3}, {0x1fab, 224, 2}, {0xffffffff, -1, 0}, {0x03f4, 759, 1}, {0x24c0, 2112, 1}, {0xa7ab, 631, 1}, {0x04cd, 1181, 1}, {0x039b, 773, 1}, {0x01cd, 429, 1}, {0xa684, 2679, 1}, {0x00cd, 117, 1}, {0x1f4d, 1926, 1}, {0x004d, 34, 1}, {0x2cc6, 2430, 1}, {0x054d, 1415, 1}, {0x1ec6, 1734, 1}, {0x03dc, 845, 1}, {0x1fc6, 67, 2}, {0x00c6, 96, 1}, {0x04c5, 1169, 1}, {0x0147, 273, 1}, {0x01c5, 417, 1}, {0x0047, 18, 1}, {0x00c5, 92, 1}, {0x0547, 1397, 1}, {0xa682, 2676, 1}, {0x01a9, 679, 1}, {0x1fa9, 214, 2}, {0x03ec, 869, 1}, {0x01a7, 393, 1}, {0x1fa7, 244, 2}, {0xffffffff, -1, 0}, {0x03ea, 866, 1}, {0x10b7, 2553, 1}, {0x10ab, 2517, 1}, {0xffffffff, -1, 0}, {0x03e8, 863, 1}, {0xa680, 2673, 1}, {0x1f4b, 1920, 1}, {0x004b, 27, 1}, {0x03e6, 860, 1}, {0x054b, 1409, 1}, {0x10cd, 2601, 1}, {0xffffffff, -1, 0}, {0x03e4, 857, 1}, {0xa666, 2661, 1}, {0x04f0, 1235, 1}, {0x1ef0, 1797, 1}, {0x01f0, 20, 2}, {0xa644, 2610, 1}, {0x03e0, 851, 1}, {0xffffffff, -1, 0}, {0x1fbb, 1968, 1}, {0x24bd, 2103, 1}, {0x24cb, 2145, 1}, {0x10c5, 2595, 1}, {0x2c72, 2319, 1}, {0x0472, 1058, 1}, {0x1e72, 1623, 1}, {0x0172, 336, 1}, {0x10a9, 2511, 1}, {0x03d0, 739, 1}, {0x2c88, 2337, 1}, {0x10a7, 2505, 1}, {0x1e88, 1656, 1}, {0x03ab, 824, 1}, {0x1f88, 129, 2}, {0x2c70, 610, 1}, {0x0470, 1055, 1}, {0x1e70, 1620, 1}, {0x0170, 333, 1}, {0x2c2b, 2289, 1}, {0x042b, 968, 1}, {0x1fb9, 2010, 1}, {0x1e38, 1535, 1}, {0x1f2b, 1872, 1}, {0x1f38, 1887, 1}, {0x118b7, 3156, 1}, {0x118ab, 3120, 1}, {0x0538, 1352, 1}, {0xa738, 2745, 1}, {0x1e36, 1532, 1}, {0x0136, 249, 1}, {0x01b3, 402, 1}, {0x1fb3, 62, 2}, {0x10bb, 2565, 1}, {0x0536, 1346, 1}, {0xa736, 2742, 1}, {0xff2b, 2919, 1}, {0xff38, 2958, 1}, {0x0533, 1337, 1}, {0x03a9, 817, 1}, {0x24cc, 2148, 1}, {0x212b, 92, 1}, {0x03a7, 811, 1}, {0x1fa5, 234, 2}, {0xff36, 2952, 1}, {0x1e34, 1529, 1}, {0x0134, 246, 1}, {0x01b5, 405, 1}, {0xff33, 2943, 1}, {0x00b5, 776, 1}, {0x0534, 1340, 1}, {0xa734, 2739, 1}, {0x118a9, 3114, 1}, {0x1fa3, 224, 2}, {0x10b9, 2559, 1}, {0x118a7, 3108, 1}, {0x04f6, 1244, 1}, {0x1ef6, 1806, 1}, {0x01f6, 372, 1}, {0x1ff6, 92, 2}, {0xff34, 2946, 1}, {0x03f0, 769, 1}, {0x2cce, 2442, 1}, {0x1fa1, 214, 2}, {0x1ece, 1746, 1}, {0x10b3, 2541, 1}, {0xffffffff, -1, 0}, {0x00ce, 120, 1}, {0x01af, 399, 1}, {0x1faf, 244, 2}, {0x1fad, 234, 2}, {0x0051, 46, 1}, {0x0372, 709, 1}, {0x0551, 1427, 1}, {0xa7ad, 658, 1}, {0x10427, 3084, 1}, {0x10a5, 2499, 1}, {0x118bb, 3168, 1}, {0x0388, 727, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x10b5, 2547, 1}, {0x24b7, 2085, 1}, {0x0370, 706, 1}, {0x1e5c, 1589, 1}, {0x015c, 303, 1}, {0x10a3, 2493, 1}, {0x1e97, 34, 2}, {0x0197, 649, 1}, {0x1f97, 204, 2}, {0xa75c, 2799, 1}, {0x24cd, 2151, 1}, {0x2c7e, 580, 1}, {0x047e, 1076, 1}, {0x1e7e, 1641, 1}, {0x004f, 40, 1}, {0x10a1, 2487, 1}, {0x054f, 1421, 1}, {0x118b9, 3162, 1}, {0x24c6, 2130, 1}, {0xa77e, 2835, 1}, {0xffffffff, -1, 0}, {0x10af, 2529, 1}, {0x10ad, 2523, 1}, {0x24c5, 2127, 1}, {0xffffffff, -1, 0}, {0x01d5, 441, 1}, {0x03a5, 804, 1}, {0x00d5, 141, 1}, {0x118b3, 3144, 1}, {0x0476, 1064, 1}, {0x1e76, 1629, 1}, {0x0176, 342, 1}, {0xffffffff, -1, 0}, {0x0149, 46, 2}, {0x1f49, 1914, 1}, {0x0049, 3183, 1}, {0x03a3, 797, 1}, {0x0549, 1403, 1}, {0x10425, 3078, 1}, {0x118a5, 3102, 1}, {0x2c27, 2277, 1}, {0x0427, 956, 1}, {0x10423, 3072, 1}, {0xffffffff, -1, 0}, {0x118b5, 3150, 1}, {0x1e3c, 1541, 1}, {0x03a1, 793, 1}, {0x1f3c, 1899, 1}, {0x10421, 3066, 1}, {0x118a3, 3096, 1}, {0x053c, 1364, 1}, {0xa73c, 2751, 1}, {0xa688, 2685, 1}, {0x24bb, 2097, 1}, {0x013b, 255, 1}, {0x1f3b, 1896, 1}, {0x1041d, 3054, 1}, {0xff27, 2907, 1}, {0x053b, 1361, 1}, {0x118a1, 3090, 1}, {0x023b, 577, 1}, {0x0531, 1331, 1}, {0x1041b, 3048, 1}, {0x0139, 252, 1}, {0x1f39, 1890, 1}, {0x118af, 3132, 1}, {0x118ad, 3126, 1}, {0x0539, 1355, 1}, {0x10419, 3042, 1}, {0x2c2d, 2295, 1}, {0x042d, 974, 1}, {0xff31, 2937, 1}, {0x0397, 756, 1}, {0x1f2d, 1878, 1}, {0x24b9, 2091, 1}, {0x2c29, 2283, 1}, {0x0429, 962, 1}, {0xff39, 2961, 1}, {0xffffffff, -1, 0}, {0x1f29, 1866, 1}, {0x10413, 3024, 1}, {0xffffffff, -1, 0}, {0x1040f, 3012, 1}, {0xffffffff, -1, 0}, {0x2c25, 2271, 1}, {0x0425, 950, 1}, {0xff2d, 2925, 1}, {0x1040d, 3006, 1}, {0x2c23, 2265, 1}, {0x0423, 944, 1}, {0x03d5, 807, 1}, {0xffffffff, -1, 0}, {0xff29, 2913, 1}, {0x10409, 2994, 1}, {0x2c21, 2259, 1}, {0x0421, 938, 1}, {0x0376, 712, 1}, {0x01d1, 435, 1}, {0x10405, 2982, 1}, {0x00d1, 129, 1}, {0x10401, 2970, 1}, {0xff25, 2901, 1}, {0x2c1d, 2247, 1}, {0x041d, 926, 1}, {0xffffffff, -1, 0}, {0xff23, 2895, 1}, {0x1f1d, 1860, 1}, {0x042f, 980, 1}, {0x2c1b, 2241, 1}, {0x041b, 920, 1}, {0x1f2f, 1884, 1}, {0xff21, 2889, 1}, {0x1f1b, 1854, 1}, {0xffffffff, -1, 0}, {0x2c19, 2235, 1}, {0x0419, 914, 1}, {0x019f, 670, 1}, {0x1f9f, 204, 2}, {0x1f19, 1848, 1}, {0x24ce, 2154, 1}, {0x01d9, 447, 1}, {0x1fd9, 2016, 1}, {0x00d9, 150, 1}, {0xff2f, 2931, 1}, {0xa65c, 2646, 1}, {0xffffffff, -1, 0}, {0x2c13, 2217, 1}, {0x0413, 896, 1}, {0x2c0f, 2205, 1}, {0x040f, 1028, 1}, {0x019d, 667, 1}, {0x1f9d, 194, 2}, {0x1f0f, 1842, 1}, {0x2c0d, 2199, 1}, {0x040d, 1022, 1}, {0x0193, 634, 1}, {0x1f93, 184, 2}, {0x1f0d, 1836, 1}, {0x10407, 2988, 1}, {0x2c09, 2187, 1}, {0x0409, 1010, 1}, {0x0191, 369, 1}, {0x1f91, 174, 2}, {0x1f09, 1824, 1}, {0x2c05, 2175, 1}, {0x0405, 998, 1}, {0x2c01, 2163, 1}, {0x0401, 986, 1}, {0x01d3, 438, 1}, {0x1fd3, 25, 3}, {0x00d3, 135, 1}, {0x018f, 625, 1}, {0x1f8f, 164, 2}, {0x0189, 619, 1}, {0x1f89, 134, 2}, {0x0187, 363, 1}, {0x1f87, 164, 2}, {0x2c6f, 604, 1}, {0xffffffff, -1, 0}, {0x0587, 105, 2}, {0xffffffff, -1, 0}, {0x1f6f, 1962, 1}, {0x03d1, 759, 1}, {0x0478, 1067, 1}, {0x1e78, 1632, 1}, {0x0178, 168, 1}, {0x0474, 1061, 1}, {0x1e74, 1626, 1}, {0x0174, 339, 1}, {0x2c6d, 607, 1}, {0x2c6b, 2316, 1}, {0x2c69, 2313, 1}, {0xffffffff, -1, 0}, {0x1f6d, 1956, 1}, {0x1f6b, 1950, 1}, {0x1f69, 1944, 1}, {0x013f, 261, 1}, {0x1f3f, 1908, 1}, {0xffffffff, -1, 0}, {0x216f, 2076, 1}, {0x053f, 1373, 1}, {0x039f, 786, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x2c07, 2181, 1}, {0x0407, 1004, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x216d, 2070, 1}, {0x216b, 2064, 1}, {0x2169, 2058, 1}, {0xffffffff, -1, 0}, {0x039d, 780, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x0393, 743, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x0391, 736, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x038f, 833, 1}, {0xffffffff, -1, 0}, {0x0389, 730, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb13, 121, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb05, 29, 2}, {0xffffffff, -1, 0}, {0xfb01, 8, 2} }; if (0 == 0) { int key = hash(&code); if (key <= MAX_HASH_VALUE) { OnigCodePoint gcode = wordlist[key].code; if (code == gcode) return &wordlist[key]; } } return 0; } oniguruma-6.7.0/src/unicode.c000066400000000000000000000557541321242335200161300ustar00rootroot00000000000000/********************************************************************** unicode.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regint.h" struct PoolPropertyNameCtype { short int name; short int ctype; }; #define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \ ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0) static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = { 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0, 0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0, 0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2 }; #include "st.h" #include "unicode_fold_data.c" extern int onigenc_unicode_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end, UChar* fold) { const struct ByUnfoldKey* buk; OnigCodePoint code; int i, len, rlen; const UChar *p = *pp; code = ONIGENC_MBC_TO_CODE(enc, p, end); len = enclen(enc, p); *pp += len; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (code == 0x0130) { return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold); } #if 0 if (code == 0x0049) { return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold); } #endif } #endif buk = unicode_unfold_key(code); if (buk != 0) { if (buk->fold_len == 1) { return ONIGENC_CODE_TO_MBC(enc, *FOLDS1_FOLD(buk->index), fold); } else { OnigCodePoint* addr; FOLDS_FOLD_ADDR_BUK(buk, addr); rlen = 0; for (i = 0; i < buk->fold_len; i++) { OnigCodePoint c = addr[i]; len = ONIGENC_CODE_TO_MBC(enc, c, fold); fold += len; rlen += len; } return rlen; } } for (i = 0; i < len; i++) { *fold++ = *p++; } return len; } static int apply_case_fold1(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) { int i, j, k, n, r; for (i = from; i < to; ) { OnigCodePoint fold = *FOLDS1_FOLD(i); n = FOLDS1_UNFOLDS_NUM(i); for (j = 0; j < n; j++) { OnigCodePoint unfold = FOLDS1_UNFOLDS(i)[j]; r = (*f)(fold, &unfold, 1, arg); if (r != 0) return r; r = (*f)(unfold, &fold, 1, arg); if (r != 0) return r; for (k = 0; k < j; k++) { OnigCodePoint unfold2 = FOLDS1_UNFOLDS(i)[k]; r = (*f)(unfold, &unfold2, 1, arg); if (r != 0) return r; r = (*f)(unfold2, &unfold, 1, arg); if (r != 0) return r; } } i = FOLDS1_NEXT_INDEX(i); } return 0; } static int apply_case_fold2(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) { int i, j, k, n, r; for (i = from; i < to; ) { OnigCodePoint* fold = FOLDS2_FOLD(i); n = FOLDS2_UNFOLDS_NUM(i); for (j = 0; j < n; j++) { OnigCodePoint unfold = FOLDS2_UNFOLDS(i)[j]; r = (*f)(unfold, fold, 2, arg); if (r != 0) return r; for (k = 0; k < j; k++) { OnigCodePoint unfold2 = FOLDS2_UNFOLDS(i)[k]; r = (*f)(unfold, &unfold2, 1, arg); if (r != 0) return r; r = (*f)(unfold2, &unfold, 1, arg); if (r != 0) return r; } } i = FOLDS2_NEXT_INDEX(i); } return 0; } static int apply_case_fold3(int from, int to, OnigApplyAllCaseFoldFunc f, void* arg) { int i, j, k, n, r; for (i = from; i < to; ) { OnigCodePoint* fold = FOLDS3_FOLD(i); n = FOLDS3_UNFOLDS_NUM(i); for (j = 0; j < n; j++) { OnigCodePoint unfold = FOLDS3_UNFOLDS(i)[j]; r = (*f)(unfold, fold, 3, arg); if (r != 0) return r; for (k = 0; k < j; k++) { OnigCodePoint unfold2 = FOLDS3_UNFOLDS(i)[k]; r = (*f)(unfold, &unfold2, 1, arg); if (r != 0) return r; r = (*f)(unfold2, &unfold, 1, arg); if (r != 0) return r; } } i = FOLDS3_NEXT_INDEX(i); } return 0; } extern int onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg) { int r; r = apply_case_fold1(0, FOLDS1_NORMAL_END_INDEX, f, arg); if (r != 0) return r; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { code = 0x0131; r = (*f)(0x0049, &code, 1, arg); if (r != 0) return r; code = 0x0049; r = (*f)(0x0131, &code, 1, arg); if (r != 0) return r; code = 0x0130; r = (*f)(0x0069, &code, 1, arg); if (r != 0) return r; code = 0x0069; r = (*f)(0x0130, &code, 1, arg); if (r != 0) return r; } else { #endif r = apply_case_fold1(FOLDS1_NORMAL_END_INDEX, FOLDS1_END_INDEX, f, arg); if (r != 0) return r; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI } #endif if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) return 0; r = apply_case_fold2(0, FOLDS2_NORMAL_END_INDEX, f, arg); if (r != 0) return r; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) { #endif r = apply_case_fold2(FOLDS2_NORMAL_END_INDEX, FOLDS2_END_INDEX, f, arg); if (r != 0) return r; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI } #endif r = apply_case_fold3(0, FOLDS3_NORMAL_END_INDEX, f, arg); if (r != 0) return r; return 0; } extern int onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { int n, m, i, j, k, len; OnigCodePoint code, codes[3]; const struct ByUnfoldKey* buk; n = 0; code = ONIGENC_MBC_TO_CODE(enc, p, end); len = enclen(enc, p); #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (code == 0x0049) { items[0].byte_len = len; items[0].code_len = 1; items[0].code[0] = 0x0131; return 1; } else if (code == 0x0130) { items[0].byte_len = len; items[0].code_len = 1; items[0].code[0] = 0x0069; return 1; } else if (code == 0x0131) { items[0].byte_len = len; items[0].code_len = 1; items[0].code[0] = 0x0049; return 1; } else if (code == 0x0069) { items[0].byte_len = len; items[0].code_len = 1; items[0].code[0] = 0x0130; return 1; } } #endif buk = unicode_unfold_key(code); if (buk != 0) { if (buk->fold_len == 1) { int un; items[0].byte_len = len; items[0].code_len = 1; items[0].code[0] = *FOLDS1_FOLD(buk->index); n++; un = FOLDS1_UNFOLDS_NUM(buk->index); for (i = 0; i < un; i++) { OnigCodePoint unfold = FOLDS1_UNFOLDS(buk->index)[i]; if (unfold != code) { items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = unfold; n++; } } code = items[0].code[0]; // for multi-code to unfold search. } else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { OnigCodePoint cs[3][4]; int fn, ncs[3]; if (buk->fold_len == 2) { m = FOLDS2_UNFOLDS_NUM(buk->index); for (i = 0; i < m; i++) { OnigCodePoint unfold = FOLDS2_UNFOLDS(buk->index)[i]; if (unfold == code) continue; items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = unfold; n++; } for (fn = 0; fn < 2; fn++) { int index; cs[fn][0] = FOLDS2_FOLD(buk->index)[fn]; index = unicode_fold1_key(&cs[fn][0]); if (index >= 0) { int m = FOLDS1_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; } ncs[fn] = m + 1; } else ncs[fn] = 1; } for (i = 0; i < ncs[0]; i++) { for (j = 0; j < ncs[1]; j++) { items[n].byte_len = len; items[n].code_len = 2; items[n].code[0] = cs[0][i]; items[n].code[1] = cs[1][j]; n++; } } } else { /* fold_len == 3 */ m = FOLDS3_UNFOLDS_NUM(buk->index); for (i = 0; i < m; i++) { OnigCodePoint unfold = FOLDS3_UNFOLDS(buk->index)[i]; if (unfold == code) continue; items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = unfold; n++; } for (fn = 0; fn < 3; fn++) { int index; cs[fn][0] = FOLDS3_FOLD(buk->index)[fn]; index = unicode_fold1_key(&cs[fn][0]); if (index >= 0) { int m = FOLDS1_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { cs[fn][i+1] = FOLDS1_UNFOLDS(index)[i]; } ncs[fn] = m + 1; } else ncs[fn] = 1; } for (i = 0; i < ncs[0]; i++) { for (j = 0; j < ncs[1]; j++) { for (k = 0; k < ncs[2]; k++) { items[n].byte_len = len; items[n].code_len = 3; items[n].code[0] = cs[0][i]; items[n].code[1] = cs[1][j]; items[n].code[2] = cs[2][k]; n++; } } } } /* multi char folded code is not head of another folded multi char */ return n; } } else { int index = unicode_fold1_key(&code); if (index >= 0) { int m = FOLDS1_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = FOLDS1_UNFOLDS(index)[i]; n++; } } } if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) == 0) return n; p += len; if (p < end) { int clen; int index; codes[0] = code; code = ONIGENC_MBC_TO_CODE(enc, p, end); buk = unicode_unfold_key(code); if (buk != 0 && buk->fold_len == 1) { codes[1] = *FOLDS1_FOLD(buk->index); } else codes[1] = code; clen = enclen(enc, p); len += clen; index = unicode_fold2_key(codes); if (index >= 0) { m = FOLDS2_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = FOLDS2_UNFOLDS(index)[i]; n++; } } p += clen; if (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); buk = unicode_unfold_key(code); if (buk != 0 && buk->fold_len == 1) { codes[2] = *FOLDS1_FOLD(buk->index); } else codes[2] = code; clen = enclen(enc, p); len += clen; index = unicode_fold3_key(codes); if (index >= 0) { m = FOLDS3_UNFOLDS_NUM(index); for (i = 0; i < m; i++) { items[n].byte_len = len; items[n].code_len = 1; items[n].code[0] = FOLDS3_UNFOLDS(index)[i]; n++; } } } } 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 = (OnigCodePoint )EGCB_RANGE_NUM; low < high; ) { x = (low + high) >> 1; if (code > EGCB_RANGES[x].end) low = x + 1; else high = x; } type = (low < (OnigCodePoint )EGCB_RANGE_NUM && code >= EGCB_RANGES[low].start) ? EGCB_RANGES[low].type : EGCB_Other; return type; } #define IS_CONTROL_CR_LF(code) ((code) <= EGCB_Control && (code) >= EGCB_CR) #define IS_HANGUL(code) ((code) >= EGCB_L) /* GB1 and GB2 are outside of this function. */ static enum EGCB_BREAK_TYPE unicode_egcb_is_break_2code(OnigCodePoint from_code, OnigCodePoint to_code) { enum EGCB_TYPE from; enum EGCB_TYPE to; from = egcb_get_type(from_code); to = egcb_get_type(to_code); /* short cut */ if (from == 0 && to == 0) goto GB999; /* GB3 */ if (from == EGCB_CR && to == EGCB_LF) return EGCB_NOT_BREAK; /* GB4 */ if (IS_CONTROL_CR_LF(from)) return EGCB_BREAK; /* GB5 */ if (IS_CONTROL_CR_LF(to)) return EGCB_BREAK; if (IS_HANGUL(from) && IS_HANGUL(to)) { /* GB6 */ if (from == EGCB_L && to != EGCB_T) return EGCB_NOT_BREAK; /* GB7 */ if ((from == EGCB_LV || from == EGCB_V) && (to == EGCB_V || to == EGCB_T)) return EGCB_NOT_BREAK; /* GB8 */ if ((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 */ } /* Undefine __GNUC__ for Escape warnings in Clang. ./unicode_property_data.c:26730:44: warning: static variable 'unicode_prop_name_pool_contents' is used in an inline function with external linkage [-Wstatic-in-inline] register const char *s = o + unicode_prop_name_pool; */ #ifdef __clang__ #undef __GNUC__ #endif #ifdef USE_UNICODE_PROPERTIES #include "unicode_property_data.c" #else #include "unicode_property_data_posix.c" #endif #define USER_DEFINED_PROPERTY_MAX_NUM 20 typedef struct { int ctype; OnigCodePoint* ranges; } UserDefinedPropertyValue; static int UserDefinedPropertyNum; static UserDefinedPropertyValue UserDefinedPropertyRanges[USER_DEFINED_PROPERTY_MAX_NUM]; static st_table* UserDefinedPropertyTable; extern int onig_unicode_define_user_property(const char* name, OnigCodePoint* ranges) { UserDefinedPropertyValue* e; int r; int i; int n; int len; int c; char* s; if (UserDefinedPropertyNum >= USER_DEFINED_PROPERTY_MAX_NUM) return ONIGERR_TOO_MANY_USER_DEFINED_OBJECTS; len = (int )strlen(name); if (len >= PROPERTY_NAME_MAX_SIZE) return ONIGERR_TOO_LONG_PROPERTY_NAME; s = (char* )xmalloc(len + 1); if (s == 0) return ONIGERR_MEMORY; n = 0; for (i = 0; i < len; i++) { c = name[i]; if (c <= 0 || c >= 0x80) { xfree(s); return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } if (c != ' ' && c != '-' && c != '_') { s[n] = c; n++; } } s[n] = '\0'; if (UserDefinedPropertyTable == 0) { UserDefinedPropertyTable = onig_st_init_strend_table_with_size(10); } e = UserDefinedPropertyRanges + UserDefinedPropertyNum; e->ctype = CODE_RANGES_NUM + UserDefinedPropertyNum; e->ranges = ranges; r = onig_st_insert_strend(UserDefinedPropertyTable, (const UChar* )s, (const UChar* )s + n, (hash_data_type )((void* )e)); if (r < 0) return r; UserDefinedPropertyNum++; return 0; } extern int onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype) { if ( #ifdef USE_UNICODE_PROPERTIES ctype <= ONIGENC_MAX_STD_CTYPE && #endif code < 256) { return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype); } if (ctype >= CODE_RANGES_NUM) { int index = ctype - CODE_RANGES_NUM; if (index < UserDefinedPropertyNum) return onig_is_in_code_range((UChar* )UserDefinedPropertyRanges[index].ranges, code); else return ONIGERR_TYPE_BUG; } return onig_is_in_code_range((UChar* )CodeRanges[ctype], code); } extern int onigenc_unicode_ctype_code_range(OnigCtype ctype, const OnigCodePoint* ranges[]) { if (ctype >= CODE_RANGES_NUM) { int index = ctype - CODE_RANGES_NUM; if (index < UserDefinedPropertyNum) { *ranges = UserDefinedPropertyRanges[index].ranges; return 0; } else return ONIGERR_TYPE_BUG; } *ranges = CodeRanges[ctype]; return 0; } extern int onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]) { *sb_out = 0x00; return onigenc_unicode_ctype_code_range(ctype, ranges); } extern int onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end) { int len; UChar *p; OnigCodePoint code; const struct PoolPropertyNameCtype* pc; char buf[PROPERTY_NAME_MAX_SIZE]; p = name; len = 0; while (p < end) { code = ONIGENC_MBC_TO_CODE(enc, p, end); if (code >= 0x80) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; if (code != ' ' && code != '-' && code != '_') { buf[len++] = (char )code; if (len >= PROPERTY_NAME_MAX_SIZE) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } p += enclen(enc, p); } buf[len] = 0; if (UserDefinedPropertyTable != 0) { UserDefinedPropertyValue* e; e = (UserDefinedPropertyValue* )NULL; onig_st_lookup_strend(UserDefinedPropertyTable, (const UChar* )buf, (const UChar* )buf + len, (hash_data_type* )((void* )(&e))); if (e != 0) { return e->ctype; } } pc = unicode_lookup_property_name(buf, len); if (pc != 0) { /* fprintf(stderr, "LOOKUP: %s: %d\n", buf, pc->ctype); */ #ifndef USE_UNICODE_PROPERTIES if (pc->ctype > ONIGENC_MAX_STD_CTYPE) return ONIGERR_INVALID_CHAR_PROPERTY_NAME; #endif return (int )pc->ctype; } return ONIGERR_INVALID_CHAR_PROPERTY_NAME; } oniguruma-6.7.0/src/unicode_egcb_data.c000066400000000000000000001413601321242335200200660ustar00rootroot00000000000000/* unicode_egcb_data.c: Generated by make_unicode_egcb_data.py. */ /*- * Copyright (c) 2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #define GRAPHEME_BREAK_PROPERTY_VERSION 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 } }; oniguruma-6.7.0/src/unicode_fold1_key.c000066400000000000000000000454421321242335200200560ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold1_key unicode_fold1_key.gperf */ /* Computed positions: -k'1-3' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 1196 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 6 #define MAX_HASH_VALUE 1304 /* maximum key range = 1299, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { 7, 5, 93, 4, 1, 16, 893, 1162, 891, 1085, 889, 380, 8, 376, 1101, 332, 1100, 329, 1099, 3, 874, 943, 870, 914, 87, 322, 1095, 317, 1093, 579, 2, 11, 1054, 13, 956, 902, 31, 775, 632, 343, 619, 330, 611, 323, 0, 27, 850, 311, 599, 309, 849, 1240, 862, 1226, 445, 1220, 591, 888, 583, 1253, 1091, 1217, 1087, 1079, 1074, 419, 858, 845, 441, 304, 400, 842, 394, 1067, 389, 1053, 383, 1211, 218, 1206, 202, 436, 194, 1202, 181, 1183, 153, 1177, 376, 1166, 166, 56, 323, 0, 571, 112, 834, 877, 1035, 609, 123, 901, 145, 684, 115, 933, 364, 1163, 345, 603, 311, 144, 573, 162, 563, 1188, 260, 964, 240, 1174, 476, 1034, 453, 814, 669, 454, 815, 799, 656, 1242, 963, 113, 806, 270, 561, 304, 795, 268, 1031, 581, 1157, 182, 44, 467, 1154, 1305, 1042, 1305, 1028, 387, 869, 1305, 362, 1305, 1142, 1305, 639, 234, 1060, 1305, 1131, 381, 190, 194, 780, 185, 140, 34, 209, 173, 1021, 369, 1017, 145, 1150, 834, 788, 820, 1011, 116, 773, 658, 1004, 1241, 767, 64, 762, 648, 756, 510, 999, 487, 750, 254, 740, 625, 733, 662, 728, 992, 720, 713, 533, 986, 515, 169, 427, 702, 266, 693, 687, 644, 337, 963, 556, 954, 524, 947, 329, 942, 288, 931, 229, 925, 104, 1143, 80, 908, 48, 1138, 71, 1133, 59, 1131, 295, 605, 276, 525, 547, 1107, 540, 406, 504, 156, 920, 93, 493, 84, 676, 34, 247, 4, 1128, 14, 18, 32, 220, 2, 131 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+3] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif int unicode_fold1_key(OnigCodePoint codes[]) { static const short int wordlist[] = { -1, -1, -1, -1, -1, -1, 3240, 2547, 1016, 1772, 1712, 1751, 231, 171, 210, 884, 165, 1724, 147, 2085, 183, 2106, 2082, 1322, 1262, 1301, 1253, 2073, 153, 887, 493, 1274, 156, 3243, 2088, 2748, 2826, 2793, 2745, 3234, 1760, 2985, 2772, 219, 1460, 2829, 159, 2835, 144, 2127, 2751, 2601, 1085, 1920, 1310, 2730, 1214, 2034, 1643, 854, 459, 3456, 80, 2541, 1010, 2844, 2283, 1220, 2040, 1655, 860, 465, 3468, 92, 1514, 756, 405, 2286, 2733, 1217, 2037, 1649, 857, 462, 3462, 86, 2394, 2727, 1211, 2031, 1637, 851, 456, 3450, 1700, 3228, 1742, 2406, 138, 201, 559, 502, 541, 1694, 878, 2121, 3507, 132, 514, 2400, 1292, 2724, 1208, 2028, 1631, 848, 453, 3444, 2388, 2553, 1022, 2808, 2565, 1040, 1863, 354, 1496, 315, 399, 12, 2562, 1034, 1856, 2217, 2268, 309, 1427, 0, 1346, 1259, 2079, 2205, 2382, 499, 694, 168, 1334, 2637, 1121, 1941, 1457, 2577, 387, 1037, 1860, 1478, 3072, 312, 31, 6, 2526, 995, 1835, 2211, 3066, 288, 1688, 1367, 1340, 3501, 126, 2193, 3603, 2538, 1007, 1841, 37, 1178, 294, 1574, 824, 3138, 3387, 1466, 2199, 1373, 3069, 532, 2520, 989, 1832, 2949, 3213, 285, 3045, 1454, 3597, 2631, 1115, 2190, 3354, 2514, 983, 1829, 1448, 3225, 282, 3051, 3348, 2508, 977, 1826, 631, 676, 279, 643, 2640, 1124, 1944, 1463, 3207, 390, 3042, 637, 3342, 2502, 971, 1823, 1256, 2076, 276, 3132, 496, 3201, 162, 3039, 2721, 1205, 2025, 1625, 845, 3195, 3438, 3036, 658, 640, 378, 2580, 1061, 1884, 3141, 712, 336, 613, 52, 1247, 2067, 3189, 2235, 3033, 2301, 3540, 2919, 1388, 1538, 786, 622, 2376, 1058, 1881, 2913, 709, 333, 2700, 46, 2004, 1583, 833, 2229, 3396, 2295, 607, 691, 1382, 1226, 2046, 1667, 866, 471, 3480, 105, 1445, 2916, 1433, 601, 2718, 1202, 2022, 1619, 842, 2892, 3432, 598, 1223, 2043, 1661, 863, 468, 3474, 99, 3315, 2475, 944, 2898, 2418, 3255, 264, 3249, 595, 1049, 1872, 3591, 2178, 324, 2340, 27, 2370, 1439, 2889, 3237, 2544, 1013, 1844, 2412, 1364, 297, 2715, 1199, 2019, 1613, 839, 2886, 3426, 3162, 2706, 1190, 2010, 1595, 2142, 2883, 3408, 2817, 3081, 1046, 1869, 2277, 2811, 321, 3549, 3606, 664, 2136, 3231, 2787, 3054, 2880, 2781, 2364, 1358, 2616, 1100, 1935, 1043, 1866, 372, 2346, 318, 2853, 18, 1472, 3585, 393, 2223, 2532, 1001, 1838, 3078, 1352, 291, 3336, 2496, 965, 1820, 381, 2196, 3330, 2490, 959, 1817, 369, 3324, 2484, 953, 1814, 586, 3075, 3318, 2478, 947, 1811, 2775, 655, 2187, 2739, 2769, 3219, 1682, 3048, 2181, 3495, 120, 3579, 3183, 625, 3030, 3303, 2463, 932, 3177, 3561, 3027, 258, -1, 3171, 2697, 3024, 2001, 1577, 827, 3165, 3390, 3021, 3351, 2511, 980, 652, -1, 3312, 2472, 941, 1808, 3270, 2430, 899, 1787, -1, 2289, 243, 2928, 2175, -1, 1067, 1890, 2157, 715, 342, 345, 65, 74, -1, 2901, 2247, 2256, 2313, 2322, 3198, 1400, 1409, -1, 366, 3159, 706, 3018, 592, 1064, 1887, 2997, 700, 339, 589, 59, -1, 2925, -1, 2241, 3090, 2307, 1532, 779, 1394, 2742, 1241, 2061, 1697, 881, 483, -1, 135, 3111, 2964, -1, 2922, 1235, 2055, 1685, 875, 480, 3498, 123, 3543, 1526, 772, 2694, 2895, 1998, 1571, 820, 421, 3384, 3156, 2877, 2712, 1196, 2016, 1607, 1670, 2874, 3420, 3483, 108, 2691, 2871, 1995, 1565, 814, 574, 3378, 2868, 1232, 2052, 1679, 872, 477, 3492, 117, 1229, 2049, 1673, 869, 474, 3486, 111, 2358, 2709, 1193, 2013, 1601, 697, 2589, 3414, 1908, 1055, 1878, 357, -1, 330, 670, 40, 2550, 1019, 1847, 1052, 1875, 300, 1436, 327, 1376, 34, 2865, 3282, 2442, 911, 1793, 363, 2352, 249, 1370, 3276, 2436, 905, 1790, 2169, 3102, 246, 3087, 3252, -1, 3537, 1778, 2163, 2574, 237, 3057, 2823, 3084, 1664, 3573, 24, 3477, 102, 1769, -1, 1328, 228, 3003, 3531, 1361, 2202, 1766, 2145, -1, 225, 3000, 2862, 1319, 1544, 792, 2139, 3357, -1, 2991, 1763, 1316, 2415, 222, 2859, 2622, 1106, 3567, -1, 2133, 375, 2982, 2856, 1592, 1313, 432, 3405, 1520, 762, 2979, 679, 2274, 661, 1076, 1899, 2850, 724, 1502, 742, 1166, 628, 1550, 2976, 2265, 3363, 2331, 1070, 1893, 1418, 3123, 685, 2343, 71, 1244, 2064, 1703, 2253, 487, 2319, 141, -1, 1406, -1, 2703, 1187, 2007, 1589, 9, 565, 3402, 1184, 2214, 1586, 836, 429, 3399, 1343, 2937, 634, 1181, 556, 1580, 830, 425, 3393, -1, 3510, 2904, 553, 2931, 1172, -1, 1562, 810, 417, 3375, 2688, -1, 1992, 1559, 807, 550, 3372, -1, 2685, 3558, 1989, 1553, 800, 2682, 3366, 1986, 1547, 796, -1, 3360, 2679, 1163, 1983, 1541, 789, 414, -1, 3516, -1, 673, 2676, 1160, 1980, 1535, 783, 411, 2670, 1154, 1974, 1523, 767, 408, 2667, 1151, 1971, 1517, 759, 2664, 1148, 1968, 1511, 752, 3555, 2658, 1142, 1962, 1499, 739, 3552, 2970, 2634, 1118, 1938, 1451, 2271, 384, 2130, 3546, 2652, 1136, 1956, 1487, 730, 396, -1, 2592, 3153, 1911, 3528, -1, 360, 3150, 2847, 721, 348, 3525, 2586, 1082, 1905, -1, 2262, 1442, 2328, 3519, 3135, 1415, 1073, 1896, 3513, 718, -1, 68, 1430, 1490, 733, 2250, 2259, 2316, 2325, 3105, 1403, 1412, -1, 3093, 2556, 1025, 1850, 1484, 727, 303, 3099, 3321, 2481, 950, 3309, 2469, 938, 267, 3258, 3246, 261, 1781, 1775, 2184, 240, 234, 2172, 3306, 2466, 935, 1805, 3264, 2424, 893, 1784, 1331, 1325, -1, 3060, 2613, 1097, 1932, 1739, 2151, 3168, 198, 1736, 2559, 1028, 195, -1, 2115, -1, 2994, 2988, 2109, 1289, 3279, 2439, 908, 1286, 1721, 3015, 1718, 180, 1715, 177, 2802, 174, 2166, 2103, 2796, 2097, 3117, 2091, 1271, -1, 1268, 3, 1265, -1, 1640, 2208, 2124, 3453, 77, 2766, 1337, 2760, 2280, 2754, 1238, 2058, 1691, -1, 2118, 3504, 129, 1628, 2841, 450, 3441, -1, 2568, 1622, 2940, 447, 3435, 583, 2391, 15, 2805, 568, 562, 2220, 1616, 2934, 444, 3429, 1349, 1610, 580, 441, 3423, 2112, 571, 2379, 1604, 1757, 438, 3417, 216, 2373, 529, 1079, 1902, 1598, 526, 435, 3411, 2799, 49, 1307, 2367, 2907, 2232, 2337, 2298, 2361, 1424, 1385, -1, 511, 2838, 508, 2355, 505, 1175, -1, 1568, 817, -1, 3381, 1169, 2349, 1556, 804, 3096, 3369, 2673, 1157, 1977, 1529, 776, 2661, 1145, 1965, 1505, 746, 2961, 3594, 2655, 1139, 1959, 1493, 736, 3588, 2646, 1130, 1950, 1475, 2643, 1127, 1947, 1469, -1, 646, 3582, 2610, 1094, 1929, 2595, 3576, 1914, 2583, -1, 1031, 1853, -1, 3570, 306, 62, 2607, 1091, 1926, 2244, -1, 2310, 3564, 547, 1397, 3147, 3333, 2493, 962, 3144, 1754, 667, 273, 213, 2625, 1109, 3114, -1, -1, 3108, 3327, 2487, 956, 3063, 1304, 3534, 270, 3300, 2460, 929, 1802, 3522, 3297, 2457, 926, 2832, -1, -1, 255, 3180, 3294, 2454, 923, 1799, 3288, 2448, 917, 1796, 3126, 1748, 2100, 1745, 207, 3174, 204, 1733, 1730, 1727, 192, 189, 186, 2736, 3012, 1298, 1676, 1295, 2763, 3489, 114, 1283, 1280, 1277, -1, -1, 2820, 3009, 2814, -1, 682, 3006, 2790, 2784, 2778, 1250, 2070, 2628, 1112, 490, 1658, 150, 1652, 3471, 96, 3465, 89, 1646, 2619, 1103, 3459, 83, 1634, 544, -1, 3447, 2649, 1133, 1953, 1481, 2604, 1088, 1923, 2598, -1, 1917, -1, -1, 2409, 2571, 2403, 3129, 2535, 1004, 2958, 2397, 21, 2943, 577, 2094, 2385, 2910, 3120, 2529, 998, 1355, -1, 56, 2955, 2523, 992, 2238, 538, 2304, 535, 2757, 1391, -1, 523, 520, 517, 43, -1, -1, 3222, 2226, 2973, 2292, 2517, 986, 1379, 3345, 2505, 974, -1, 3216, 3339, 2499, 968, -1, -1, 3210, 3291, 2451, 920, 3273, 2433, 902, 252, -1, 703, 3267, 2427, 896, 3600, -1, -1, 2160, -1, -1, 3204, 1709, -1, 2154, 3192, 3261, 2421, 890, -1, 3186, 1508, 749, 402, 351, 1706, -1, 688, 2148, 3285, 2445, 914, 2334, 649, -1, 1421, 619, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 616, -1, -1, -1, -1, -1, 610, -1, -1, -1, -1, -1, 2967, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2952, 604, -1, 2946 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE && key >= 0) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds1 + index, 1) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode_fold2_key.c000066400000000000000000000063071321242335200200540ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold2_key unicode_fold2_key.gperf */ /* Computed positions: -k'3,6' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 59 #define MIN_WORD_LENGTH 6 #define MAX_WORD_LENGTH 6 #define MIN_HASH_VALUE 0 #define MAX_HASH_VALUE 58 /* maximum key range = 59, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned char asso_values[] = { 58, 57, 56, 55, 54, 53, 52, 16, 50, 59, 15, 59, 25, 59, 59, 59, 59, 59, 59, 3, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 49, 48, 47, 46, 45, 44, 43, 42, 59, 59, 59, 59, 59, 59, 59, 59, 59, 21, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 2, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 40, 20, 39, 38, 37, 14, 5, 36, 20, 7, 25, 34, 29, 32, 16, 59, 31, 59, 59, 2, 1, 59, 25, 15, 59, 14, 59, 59, 28, 59, 2, 59, 59, 59, 11, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 24, 59, 22, 59, 59, 11, 59, 59, 59, 59, 59, 7, 59, 0, 59, 59, 16, 59, 1, 59, 59, 16, 59, 59, 59, 15, 59, 59, 59, 6, 59, 59, 59, 59, 0, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; } #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif int unicode_fold2_key(OnigCodePoint codes[]) { static const short int wordlist[] = { 101, 253, 76, 29, 24, 239, 96, 71, 92, 67, 4, 62, 8, 58, 234, 109, 164, 88, 84, 80, 214, 0, 54, 261, 50, 105, 121, 125, 257, 42, 38, 249, 46, 117, 12, 113, 244, 229, 224, 219, 209, 16, 204, 199, 194, 189, 184, 179, 174, 169, 20, 34, 159, 154, 149, 144, 139, 134, 129 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE && key >= 0) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds2 + index, 2) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode_fold3_key.c000066400000000000000000000053631321242335200200560ustar00rootroot00000000000000/* This file was converted by gperf_fold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1 -N unicode_fold3_key unicode_fold3_key.gperf */ /* Computed positions: -k'3,6,9' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 14 #define MIN_WORD_LENGTH 9 #define MAX_WORD_LENGTH 9 #define MIN_HASH_VALUE 0 #define MAX_HASH_VALUE 13 /* maximum key range = 14, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned char asso_values[] = { 6, 3, 14, 14, 14, 14, 14, 14, 1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 4, 14, 14, 5, 14, 14, 4, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 10, 14, 14, 14, 14, 14, 9, 14, 1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 8, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 8)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 5)] + asso_values[(unsigned char)onig_codes_byte_at(codes, 2)]; } #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif int unicode_fold3_key(OnigCodePoint codes[]) { static const short int wordlist[] = { 62, 47, 31, 57, 41, 25, 52, 36, 20, 67, 15, 10, 5, 0 }; if (0 == 0) { int key = hash(codes); if (key <= MAX_HASH_VALUE && key >= 0) { int index = wordlist[key]; if (index >= 0 && onig_codes_cmp(codes, OnigUnicodeFolds3 + index, 3) == 0) return index; } } return -1; } oniguruma-6.7.0/src/unicode_fold_data.c000066400000000000000000002717501321242335200201210ustar00rootroot00000000000000/* This file was generated by make_unicode_fold_data.py. */ #include "regenc.h" #define CASEFOLD_VERSION 8_0_0 OnigCodePoint OnigUnicodeFolds1[] = { /* 0*/ 0x0061, 1, 0x0041, /* LATIN CAPITAL LETTER A */ /* 3*/ 0x0062, 1, 0x0042, /* LATIN CAPITAL LETTER B */ /* 6*/ 0x0063, 1, 0x0043, /* LATIN CAPITAL LETTER C */ /* 9*/ 0x0064, 1, 0x0044, /* LATIN CAPITAL LETTER D */ /* 12*/ 0x0065, 1, 0x0045, /* LATIN CAPITAL LETTER E */ /* 15*/ 0x0066, 1, 0x0046, /* LATIN CAPITAL LETTER F */ /* 18*/ 0x0067, 1, 0x0047, /* LATIN CAPITAL LETTER G */ /* 21*/ 0x0068, 1, 0x0048, /* LATIN CAPITAL LETTER H */ /* 24*/ 0x006a, 1, 0x004a, /* LATIN CAPITAL LETTER J */ /* 27*/ 0x006b, 2, 0x004b, 0x212a, /* LATIN CAPITAL LETTER K */ /* 31*/ 0x006c, 1, 0x004c, /* LATIN CAPITAL LETTER L */ /* 34*/ 0x006d, 1, 0x004d, /* LATIN CAPITAL LETTER M */ /* 37*/ 0x006e, 1, 0x004e, /* LATIN CAPITAL LETTER N */ /* 40*/ 0x006f, 1, 0x004f, /* LATIN CAPITAL LETTER O */ /* 43*/ 0x0070, 1, 0x0050, /* LATIN CAPITAL LETTER P */ /* 46*/ 0x0071, 1, 0x0051, /* LATIN CAPITAL LETTER Q */ /* 49*/ 0x0072, 1, 0x0052, /* LATIN CAPITAL LETTER R */ /* 52*/ 0x0073, 2, 0x0053, 0x017f, /* LATIN CAPITAL LETTER S */ /* 56*/ 0x0074, 1, 0x0054, /* LATIN CAPITAL LETTER T */ /* 59*/ 0x0075, 1, 0x0055, /* LATIN CAPITAL LETTER U */ /* 62*/ 0x0076, 1, 0x0056, /* LATIN CAPITAL LETTER V */ /* 65*/ 0x0077, 1, 0x0057, /* LATIN CAPITAL LETTER W */ /* 68*/ 0x0078, 1, 0x0058, /* LATIN CAPITAL LETTER X */ /* 71*/ 0x0079, 1, 0x0059, /* LATIN CAPITAL LETTER Y */ /* 74*/ 0x007a, 1, 0x005a, /* LATIN CAPITAL LETTER Z */ /* 77*/ 0x00e0, 1, 0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */ /* 80*/ 0x00e1, 1, 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */ /* 83*/ 0x00e2, 1, 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /* 86*/ 0x00e3, 1, 0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */ /* 89*/ 0x00e4, 1, 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAER.. */ /* 92*/ 0x00e5, 2, 0x00c5, 0x212b, /* LATIN CAPITAL LETTER A WITH RING .. */ /* 96*/ 0x00e6, 1, 0x00c6, /* LATIN CAPITAL LETTER AE */ /* 99*/ 0x00e7, 1, 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ /* 102*/ 0x00e8, 1, 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */ /* 105*/ 0x00e9, 1, 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */ /* 108*/ 0x00ea, 1, 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /* 111*/ 0x00eb, 1, 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAER.. */ /* 114*/ 0x00ec, 1, 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */ /* 117*/ 0x00ed, 1, 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */ /* 120*/ 0x00ee, 1, 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCU.. */ /* 123*/ 0x00ef, 1, 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAER.. */ /* 126*/ 0x00f0, 1, 0x00d0, /* LATIN CAPITAL LETTER ETH */ /* 129*/ 0x00f1, 1, 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */ /* 132*/ 0x00f2, 1, 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */ /* 135*/ 0x00f3, 1, 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */ /* 138*/ 0x00f4, 1, 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /* 141*/ 0x00f5, 1, 0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */ /* 144*/ 0x00f6, 1, 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAER.. */ /* 147*/ 0x00f8, 1, 0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */ /* 150*/ 0x00f9, 1, 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */ /* 153*/ 0x00fa, 1, 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */ /* 156*/ 0x00fb, 1, 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ /* 159*/ 0x00fc, 1, 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 162*/ 0x00fd, 1, 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */ /* 165*/ 0x00fe, 1, 0x00de, /* LATIN CAPITAL LETTER THORN */ /* 168*/ 0x00ff, 1, 0x0178, /* LATIN CAPITAL LETTER Y WITH DIAER.. */ /* 171*/ 0x0101, 1, 0x0100, /* LATIN CAPITAL LETTER A WITH MACRON */ /* 174*/ 0x0103, 1, 0x0102, /* LATIN CAPITAL LETTER A WITH BREVE */ /* 177*/ 0x0105, 1, 0x0104, /* LATIN CAPITAL LETTER A WITH OGONEK */ /* 180*/ 0x0107, 1, 0x0106, /* LATIN CAPITAL LETTER C WITH ACUTE */ /* 183*/ 0x0109, 1, 0x0108, /* LATIN CAPITAL LETTER C WITH CIRCU.. */ /* 186*/ 0x010b, 1, 0x010a, /* LATIN CAPITAL LETTER C WITH DOT A.. */ /* 189*/ 0x010d, 1, 0x010c, /* LATIN CAPITAL LETTER C WITH CARON */ /* 192*/ 0x010f, 1, 0x010e, /* LATIN CAPITAL LETTER D WITH CARON */ /* 195*/ 0x0111, 1, 0x0110, /* LATIN CAPITAL LETTER D WITH STROKE */ /* 198*/ 0x0113, 1, 0x0112, /* LATIN CAPITAL LETTER E WITH MACRON */ /* 201*/ 0x0115, 1, 0x0114, /* LATIN CAPITAL LETTER E WITH BREVE */ /* 204*/ 0x0117, 1, 0x0116, /* LATIN CAPITAL LETTER E WITH DOT A.. */ /* 207*/ 0x0119, 1, 0x0118, /* LATIN CAPITAL LETTER E WITH OGONEK */ /* 210*/ 0x011b, 1, 0x011a, /* LATIN CAPITAL LETTER E WITH CARON */ /* 213*/ 0x011d, 1, 0x011c, /* LATIN CAPITAL LETTER G WITH CIRCU.. */ /* 216*/ 0x011f, 1, 0x011e, /* LATIN CAPITAL LETTER G WITH BREVE */ /* 219*/ 0x0121, 1, 0x0120, /* LATIN CAPITAL LETTER G WITH DOT A.. */ /* 222*/ 0x0123, 1, 0x0122, /* LATIN CAPITAL LETTER G WITH CEDIL.. */ /* 225*/ 0x0125, 1, 0x0124, /* LATIN CAPITAL LETTER H WITH CIRCU.. */ /* 228*/ 0x0127, 1, 0x0126, /* LATIN CAPITAL LETTER H WITH STROKE */ /* 231*/ 0x0129, 1, 0x0128, /* LATIN CAPITAL LETTER I WITH TILDE */ /* 234*/ 0x012b, 1, 0x012a, /* LATIN CAPITAL LETTER I WITH MACRON */ /* 237*/ 0x012d, 1, 0x012c, /* LATIN CAPITAL LETTER I WITH BREVE */ /* 240*/ 0x012f, 1, 0x012e, /* LATIN CAPITAL LETTER I WITH OGONEK */ /* 243*/ 0x0133, 1, 0x0132, /* LATIN CAPITAL LIGATURE IJ */ /* 246*/ 0x0135, 1, 0x0134, /* LATIN CAPITAL LETTER J WITH CIRCU.. */ /* 249*/ 0x0137, 1, 0x0136, /* LATIN CAPITAL LETTER K WITH CEDIL.. */ /* 252*/ 0x013a, 1, 0x0139, /* LATIN CAPITAL LETTER L WITH ACUTE */ /* 255*/ 0x013c, 1, 0x013b, /* LATIN CAPITAL LETTER L WITH CEDIL.. */ /* 258*/ 0x013e, 1, 0x013d, /* LATIN CAPITAL LETTER L WITH CARON */ /* 261*/ 0x0140, 1, 0x013f, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ /* 264*/ 0x0142, 1, 0x0141, /* LATIN CAPITAL LETTER L WITH STROKE */ /* 267*/ 0x0144, 1, 0x0143, /* LATIN CAPITAL LETTER N WITH ACUTE */ /* 270*/ 0x0146, 1, 0x0145, /* LATIN CAPITAL LETTER N WITH CEDIL.. */ /* 273*/ 0x0148, 1, 0x0147, /* LATIN CAPITAL LETTER N WITH CARON */ /* 276*/ 0x014b, 1, 0x014a, /* LATIN CAPITAL LETTER ENG */ /* 279*/ 0x014d, 1, 0x014c, /* LATIN CAPITAL LETTER O WITH MACRON */ /* 282*/ 0x014f, 1, 0x014e, /* LATIN CAPITAL LETTER O WITH BREVE */ /* 285*/ 0x0151, 1, 0x0150, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ /* 288*/ 0x0153, 1, 0x0152, /* LATIN CAPITAL LIGATURE OE */ /* 291*/ 0x0155, 1, 0x0154, /* LATIN CAPITAL LETTER R WITH ACUTE */ /* 294*/ 0x0157, 1, 0x0156, /* LATIN CAPITAL LETTER R WITH CEDIL.. */ /* 297*/ 0x0159, 1, 0x0158, /* LATIN CAPITAL LETTER R WITH CARON */ /* 300*/ 0x015b, 1, 0x015a, /* LATIN CAPITAL LETTER S WITH ACUTE */ /* 303*/ 0x015d, 1, 0x015c, /* LATIN CAPITAL LETTER S WITH CIRCU.. */ /* 306*/ 0x015f, 1, 0x015e, /* LATIN CAPITAL LETTER S WITH CEDIL.. */ /* 309*/ 0x0161, 1, 0x0160, /* LATIN CAPITAL LETTER S WITH CARON */ /* 312*/ 0x0163, 1, 0x0162, /* LATIN CAPITAL LETTER T WITH CEDIL.. */ /* 315*/ 0x0165, 1, 0x0164, /* LATIN CAPITAL LETTER T WITH CARON */ /* 318*/ 0x0167, 1, 0x0166, /* LATIN CAPITAL LETTER T WITH STROKE */ /* 321*/ 0x0169, 1, 0x0168, /* LATIN CAPITAL LETTER U WITH TILDE */ /* 324*/ 0x016b, 1, 0x016a, /* LATIN CAPITAL LETTER U WITH MACRON */ /* 327*/ 0x016d, 1, 0x016c, /* LATIN CAPITAL LETTER U WITH BREVE */ /* 330*/ 0x016f, 1, 0x016e, /* LATIN CAPITAL LETTER U WITH RING .. */ /* 333*/ 0x0171, 1, 0x0170, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ /* 336*/ 0x0173, 1, 0x0172, /* LATIN CAPITAL LETTER U WITH OGONEK */ /* 339*/ 0x0175, 1, 0x0174, /* LATIN CAPITAL LETTER W WITH CIRCU.. */ /* 342*/ 0x0177, 1, 0x0176, /* LATIN CAPITAL LETTER Y WITH CIRCU.. */ /* 345*/ 0x017a, 1, 0x0179, /* LATIN CAPITAL LETTER Z WITH ACUTE */ /* 348*/ 0x017c, 1, 0x017b, /* LATIN CAPITAL LETTER Z WITH DOT A.. */ /* 351*/ 0x017e, 1, 0x017d, /* LATIN CAPITAL LETTER Z WITH CARON */ /* 354*/ 0x0180, 1, 0x0243, /* LATIN CAPITAL LETTER B WITH STROKE */ /* 357*/ 0x0183, 1, 0x0182, /* LATIN CAPITAL LETTER B WITH TOPBAR */ /* 360*/ 0x0185, 1, 0x0184, /* LATIN CAPITAL LETTER TONE SIX */ /* 363*/ 0x0188, 1, 0x0187, /* LATIN CAPITAL LETTER C WITH HOOK */ /* 366*/ 0x018c, 1, 0x018b, /* LATIN CAPITAL LETTER D WITH TOPBAR */ /* 369*/ 0x0192, 1, 0x0191, /* LATIN CAPITAL LETTER F WITH HOOK */ /* 372*/ 0x0195, 1, 0x01f6, /* LATIN CAPITAL LETTER HWAIR */ /* 375*/ 0x0199, 1, 0x0198, /* LATIN CAPITAL LETTER K WITH HOOK */ /* 378*/ 0x019a, 1, 0x023d, /* LATIN CAPITAL LETTER L WITH BAR */ /* 381*/ 0x019e, 1, 0x0220, /* LATIN CAPITAL LETTER N WITH LONG .. */ /* 384*/ 0x01a1, 1, 0x01a0, /* LATIN CAPITAL LETTER O WITH HORN */ /* 387*/ 0x01a3, 1, 0x01a2, /* LATIN CAPITAL LETTER OI */ /* 390*/ 0x01a5, 1, 0x01a4, /* LATIN CAPITAL LETTER P WITH HOOK */ /* 393*/ 0x01a8, 1, 0x01a7, /* LATIN CAPITAL LETTER TONE TWO */ /* 396*/ 0x01ad, 1, 0x01ac, /* LATIN CAPITAL LETTER T WITH HOOK */ /* 399*/ 0x01b0, 1, 0x01af, /* LATIN CAPITAL LETTER U WITH HORN */ /* 402*/ 0x01b4, 1, 0x01b3, /* LATIN CAPITAL LETTER Y WITH HOOK */ /* 405*/ 0x01b6, 1, 0x01b5, /* LATIN CAPITAL LETTER Z WITH STROKE */ /* 408*/ 0x01b9, 1, 0x01b8, /* LATIN CAPITAL LETTER EZH REVERSED */ /* 411*/ 0x01bd, 1, 0x01bc, /* LATIN CAPITAL LETTER TONE FIVE */ /* 414*/ 0x01bf, 1, 0x01f7, /* LATIN CAPITAL LETTER WYNN */ /* 417*/ 0x01c6, 2, 0x01c4, 0x01c5, /* LATIN CAPITAL LETTER DZ WITH CARON */ /* 421*/ 0x01c9, 2, 0x01c7, 0x01c8, /* LATIN CAPITAL LETTER LJ */ /* 425*/ 0x01cc, 2, 0x01ca, 0x01cb, /* LATIN CAPITAL LETTER NJ */ /* 429*/ 0x01ce, 1, 0x01cd, /* LATIN CAPITAL LETTER A WITH CARON */ /* 432*/ 0x01d0, 1, 0x01cf, /* LATIN CAPITAL LETTER I WITH CARON */ /* 435*/ 0x01d2, 1, 0x01d1, /* LATIN CAPITAL LETTER O WITH CARON */ /* 438*/ 0x01d4, 1, 0x01d3, /* LATIN CAPITAL LETTER U WITH CARON */ /* 441*/ 0x01d6, 1, 0x01d5, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 444*/ 0x01d8, 1, 0x01d7, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 447*/ 0x01da, 1, 0x01d9, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 450*/ 0x01dc, 1, 0x01db, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /* 453*/ 0x01dd, 1, 0x018e, /* LATIN CAPITAL LETTER REVERSED E */ /* 456*/ 0x01df, 1, 0x01de, /* LATIN CAPITAL LETTER A WITH DIAER.. */ /* 459*/ 0x01e1, 1, 0x01e0, /* LATIN CAPITAL LETTER A WITH DOT A.. */ /* 462*/ 0x01e3, 1, 0x01e2, /* LATIN CAPITAL LETTER AE WITH MACR.. */ /* 465*/ 0x01e5, 1, 0x01e4, /* LATIN CAPITAL LETTER G WITH STROKE */ /* 468*/ 0x01e7, 1, 0x01e6, /* LATIN CAPITAL LETTER G WITH CARON */ /* 471*/ 0x01e9, 1, 0x01e8, /* LATIN CAPITAL LETTER K WITH CARON */ /* 474*/ 0x01eb, 1, 0x01ea, /* LATIN CAPITAL LETTER O WITH OGONEK */ /* 477*/ 0x01ed, 1, 0x01ec, /* LATIN CAPITAL LETTER O WITH OGONE.. */ /* 480*/ 0x01ef, 1, 0x01ee, /* LATIN CAPITAL LETTER EZH WITH CAR.. */ /* 483*/ 0x01f3, 2, 0x01f1, 0x01f2, /* LATIN CAPITAL LETTER DZ */ /* 487*/ 0x01f5, 1, 0x01f4, /* LATIN CAPITAL LETTER G WITH ACUTE */ /* 490*/ 0x01f9, 1, 0x01f8, /* LATIN CAPITAL LETTER N WITH GRAVE */ /* 493*/ 0x01fb, 1, 0x01fa, /* LATIN CAPITAL LETTER A WITH RING .. */ /* 496*/ 0x01fd, 1, 0x01fc, /* LATIN CAPITAL LETTER AE WITH ACUTE */ /* 499*/ 0x01ff, 1, 0x01fe, /* LATIN CAPITAL LETTER O WITH STROK.. */ /* 502*/ 0x0201, 1, 0x0200, /* LATIN CAPITAL LETTER A WITH DOUBL.. */ /* 505*/ 0x0203, 1, 0x0202, /* LATIN CAPITAL LETTER A WITH INVER.. */ /* 508*/ 0x0205, 1, 0x0204, /* LATIN CAPITAL LETTER E WITH DOUBL.. */ /* 511*/ 0x0207, 1, 0x0206, /* LATIN CAPITAL LETTER E WITH INVER.. */ /* 514*/ 0x0209, 1, 0x0208, /* LATIN CAPITAL LETTER I WITH DOUBL.. */ /* 517*/ 0x020b, 1, 0x020a, /* LATIN CAPITAL LETTER I WITH INVER.. */ /* 520*/ 0x020d, 1, 0x020c, /* LATIN CAPITAL LETTER O WITH DOUBL.. */ /* 523*/ 0x020f, 1, 0x020e, /* LATIN CAPITAL LETTER O WITH INVER.. */ /* 526*/ 0x0211, 1, 0x0210, /* LATIN CAPITAL LETTER R WITH DOUBL.. */ /* 529*/ 0x0213, 1, 0x0212, /* LATIN CAPITAL LETTER R WITH INVER.. */ /* 532*/ 0x0215, 1, 0x0214, /* LATIN CAPITAL LETTER U WITH DOUBL.. */ /* 535*/ 0x0217, 1, 0x0216, /* LATIN CAPITAL LETTER U WITH INVER.. */ /* 538*/ 0x0219, 1, 0x0218, /* LATIN CAPITAL LETTER S WITH COMMA.. */ /* 541*/ 0x021b, 1, 0x021a, /* LATIN CAPITAL LETTER T WITH COMMA.. */ /* 544*/ 0x021d, 1, 0x021c, /* LATIN CAPITAL LETTER YOGH */ /* 547*/ 0x021f, 1, 0x021e, /* LATIN CAPITAL LETTER H WITH CARON */ /* 550*/ 0x0223, 1, 0x0222, /* LATIN CAPITAL LETTER OU */ /* 553*/ 0x0225, 1, 0x0224, /* LATIN CAPITAL LETTER Z WITH HOOK */ /* 556*/ 0x0227, 1, 0x0226, /* LATIN CAPITAL LETTER A WITH DOT A.. */ /* 559*/ 0x0229, 1, 0x0228, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ /* 562*/ 0x022b, 1, 0x022a, /* LATIN CAPITAL LETTER O WITH DIAER.. */ /* 565*/ 0x022d, 1, 0x022c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /* 568*/ 0x022f, 1, 0x022e, /* LATIN CAPITAL LETTER O WITH DOT A.. */ /* 571*/ 0x0231, 1, 0x0230, /* LATIN CAPITAL LETTER O WITH DOT A.. */ /* 574*/ 0x0233, 1, 0x0232, /* LATIN CAPITAL LETTER Y WITH MACRON */ /* 577*/ 0x023c, 1, 0x023b, /* LATIN CAPITAL LETTER C WITH STROKE */ /* 580*/ 0x023f, 1, 0x2c7e, /* LATIN CAPITAL LETTER S WITH SWASH.. */ /* 583*/ 0x0240, 1, 0x2c7f, /* LATIN CAPITAL LETTER Z WITH SWASH.. */ /* 586*/ 0x0242, 1, 0x0241, /* LATIN CAPITAL LETTER GLOTTAL STOP */ /* 589*/ 0x0247, 1, 0x0246, /* LATIN CAPITAL LETTER E WITH STROKE */ /* 592*/ 0x0249, 1, 0x0248, /* LATIN CAPITAL LETTER J WITH STROKE */ /* 595*/ 0x024b, 1, 0x024a, /* LATIN CAPITAL LETTER SMALL Q WITH.. */ /* 598*/ 0x024d, 1, 0x024c, /* LATIN CAPITAL LETTER R WITH STROKE */ /* 601*/ 0x024f, 1, 0x024e, /* LATIN CAPITAL LETTER Y WITH STROKE */ /* 604*/ 0x0250, 1, 0x2c6f, /* LATIN CAPITAL LETTER TURNED A */ /* 607*/ 0x0251, 1, 0x2c6d, /* LATIN CAPITAL LETTER ALPHA */ /* 610*/ 0x0252, 1, 0x2c70, /* LATIN CAPITAL LETTER TURNED ALPHA */ /* 613*/ 0x0253, 1, 0x0181, /* LATIN CAPITAL LETTER B WITH HOOK */ /* 616*/ 0x0254, 1, 0x0186, /* LATIN CAPITAL LETTER OPEN O */ /* 619*/ 0x0256, 1, 0x0189, /* LATIN CAPITAL LETTER AFRICAN D */ /* 622*/ 0x0257, 1, 0x018a, /* LATIN CAPITAL LETTER D WITH HOOK */ /* 625*/ 0x0259, 1, 0x018f, /* LATIN CAPITAL LETTER SCHWA */ /* 628*/ 0x025b, 1, 0x0190, /* LATIN CAPITAL LETTER OPEN E */ /* 631*/ 0x025c, 1, 0xa7ab, /* LATIN CAPITAL LETTER REVERSED OPE.. */ /* 634*/ 0x0260, 1, 0x0193, /* LATIN CAPITAL LETTER G WITH HOOK */ /* 637*/ 0x0261, 1, 0xa7ac, /* LATIN CAPITAL LETTER SCRIPT G */ /* 640*/ 0x0263, 1, 0x0194, /* LATIN CAPITAL LETTER GAMMA */ /* 643*/ 0x0265, 1, 0xa78d, /* LATIN CAPITAL LETTER TURNED H */ /* 646*/ 0x0266, 1, 0xa7aa, /* LATIN CAPITAL LETTER H WITH HOOK */ /* 649*/ 0x0268, 1, 0x0197, /* LATIN CAPITAL LETTER I WITH STROKE */ /* 652*/ 0x0269, 1, 0x0196, /* LATIN CAPITAL LETTER IOTA */ /* 655*/ 0x026b, 1, 0x2c62, /* LATIN CAPITAL LETTER L WITH MIDDL.. */ /* 658*/ 0x026c, 1, 0xa7ad, /* LATIN CAPITAL LETTER L WITH BELT */ /* 661*/ 0x026f, 1, 0x019c, /* LATIN CAPITAL LETTER TURNED M */ /* 664*/ 0x0271, 1, 0x2c6e, /* LATIN CAPITAL LETTER M WITH HOOK */ /* 667*/ 0x0272, 1, 0x019d, /* LATIN CAPITAL LETTER N WITH LEFT .. */ /* 670*/ 0x0275, 1, 0x019f, /* LATIN CAPITAL LETTER O WITH MIDDL.. */ /* 673*/ 0x027d, 1, 0x2c64, /* LATIN CAPITAL LETTER R WITH TAIL */ /* 676*/ 0x0280, 1, 0x01a6, /* LATIN LETTER YR */ /* 679*/ 0x0283, 1, 0x01a9, /* LATIN CAPITAL LETTER ESH */ /* 682*/ 0x0287, 1, 0xa7b1, /* LATIN CAPITAL LETTER TURNED T */ /* 685*/ 0x0288, 1, 0x01ae, /* LATIN CAPITAL LETTER T WITH RETRO.. */ /* 688*/ 0x0289, 1, 0x0244, /* LATIN CAPITAL LETTER U BAR */ /* 691*/ 0x028a, 1, 0x01b1, /* LATIN CAPITAL LETTER UPSILON */ /* 694*/ 0x028b, 1, 0x01b2, /* LATIN CAPITAL LETTER V WITH HOOK */ /* 697*/ 0x028c, 1, 0x0245, /* LATIN CAPITAL LETTER TURNED V */ /* 700*/ 0x0292, 1, 0x01b7, /* LATIN CAPITAL LETTER EZH */ /* 703*/ 0x029d, 1, 0xa7b2, /* LATIN CAPITAL LETTER J WITH CROSS.. */ /* 706*/ 0x029e, 1, 0xa7b0, /* LATIN CAPITAL LETTER TURNED K */ /* 709*/ 0x0371, 1, 0x0370, /* GREEK CAPITAL LETTER HETA */ /* 712*/ 0x0373, 1, 0x0372, /* GREEK CAPITAL LETTER ARCHAIC SAMPI */ /* 715*/ 0x0377, 1, 0x0376, /* GREEK CAPITAL LETTER PAMPHYLIAN D.. */ /* 718*/ 0x037b, 1, 0x03fd, /* GREEK CAPITAL REVERSED LUNATE SIG.. */ /* 721*/ 0x037c, 1, 0x03fe, /* GREEK CAPITAL DOTTED LUNATE SIGMA.. */ /* 724*/ 0x037d, 1, 0x03ff, /* GREEK CAPITAL REVERSED DOTTED LUN.. */ /* 727*/ 0x03ac, 1, 0x0386, /* GREEK CAPITAL LETTER ALPHA WITH T.. */ /* 730*/ 0x03ad, 1, 0x0388, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /* 733*/ 0x03ae, 1, 0x0389, /* GREEK CAPITAL LETTER ETA WITH TON.. */ /* 736*/ 0x03af, 1, 0x038a, /* GREEK CAPITAL LETTER IOTA WITH TO.. */ /* 739*/ 0x03b1, 1, 0x0391, /* GREEK CAPITAL LETTER ALPHA */ /* 742*/ 0x03b2, 2, 0x0392, 0x03d0, /* GREEK CAPITAL LETTER BETA */ /* 746*/ 0x03b3, 1, 0x0393, /* GREEK CAPITAL LETTER GAMMA */ /* 749*/ 0x03b4, 1, 0x0394, /* GREEK CAPITAL LETTER DELTA */ /* 752*/ 0x03b5, 2, 0x0395, 0x03f5, /* GREEK CAPITAL LETTER EPSILON */ /* 756*/ 0x03b6, 1, 0x0396, /* GREEK CAPITAL LETTER ZETA */ /* 759*/ 0x03b7, 1, 0x0397, /* GREEK CAPITAL LETTER ETA */ /* 762*/ 0x03b8, 3, 0x0398, 0x03d1, 0x03f4, /* GREEK CAPITAL LETTER THETA */ /* 767*/ 0x03b9, 3, 0x0345, 0x0399, 0x1fbe, /* COMBINING GREEK YPOGEGRAMMENI */ /* 772*/ 0x03ba, 2, 0x039a, 0x03f0, /* GREEK CAPITAL LETTER KAPPA */ /* 776*/ 0x03bb, 1, 0x039b, /* GREEK CAPITAL LETTER LAMDA */ /* 779*/ 0x03bc, 2, 0x00b5, 0x039c, /* MICRO SIGN */ /* 783*/ 0x03bd, 1, 0x039d, /* GREEK CAPITAL LETTER NU */ /* 786*/ 0x03be, 1, 0x039e, /* GREEK CAPITAL LETTER XI */ /* 789*/ 0x03bf, 1, 0x039f, /* GREEK CAPITAL LETTER OMICRON */ /* 792*/ 0x03c0, 2, 0x03a0, 0x03d6, /* GREEK CAPITAL LETTER PI */ /* 796*/ 0x03c1, 2, 0x03a1, 0x03f1, /* GREEK CAPITAL LETTER RHO */ /* 800*/ 0x03c3, 2, 0x03a3, 0x03c2, /* GREEK CAPITAL LETTER SIGMA */ /* 804*/ 0x03c4, 1, 0x03a4, /* GREEK CAPITAL LETTER TAU */ /* 807*/ 0x03c5, 1, 0x03a5, /* GREEK CAPITAL LETTER UPSILON */ /* 810*/ 0x03c6, 2, 0x03a6, 0x03d5, /* GREEK CAPITAL LETTER PHI */ /* 814*/ 0x03c7, 1, 0x03a7, /* GREEK CAPITAL LETTER CHI */ /* 817*/ 0x03c8, 1, 0x03a8, /* GREEK CAPITAL LETTER PSI */ /* 820*/ 0x03c9, 2, 0x03a9, 0x2126, /* GREEK CAPITAL LETTER OMEGA */ /* 824*/ 0x03ca, 1, 0x03aa, /* GREEK CAPITAL LETTER IOTA WITH DI.. */ /* 827*/ 0x03cb, 1, 0x03ab, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /* 830*/ 0x03cc, 1, 0x038c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /* 833*/ 0x03cd, 1, 0x038e, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /* 836*/ 0x03ce, 1, 0x038f, /* GREEK CAPITAL LETTER OMEGA WITH T.. */ /* 839*/ 0x03d7, 1, 0x03cf, /* GREEK CAPITAL KAI SYMBOL */ /* 842*/ 0x03d9, 1, 0x03d8, /* GREEK LETTER ARCHAIC KOPPA */ /* 845*/ 0x03db, 1, 0x03da, /* GREEK LETTER STIGMA */ /* 848*/ 0x03dd, 1, 0x03dc, /* GREEK LETTER DIGAMMA */ /* 851*/ 0x03df, 1, 0x03de, /* GREEK LETTER KOPPA */ /* 854*/ 0x03e1, 1, 0x03e0, /* GREEK LETTER SAMPI */ /* 857*/ 0x03e3, 1, 0x03e2, /* COPTIC CAPITAL LETTER SHEI */ /* 860*/ 0x03e5, 1, 0x03e4, /* COPTIC CAPITAL LETTER FEI */ /* 863*/ 0x03e7, 1, 0x03e6, /* COPTIC CAPITAL LETTER KHEI */ /* 866*/ 0x03e9, 1, 0x03e8, /* COPTIC CAPITAL LETTER HORI */ /* 869*/ 0x03eb, 1, 0x03ea, /* COPTIC CAPITAL LETTER GANGIA */ /* 872*/ 0x03ed, 1, 0x03ec, /* COPTIC CAPITAL LETTER SHIMA */ /* 875*/ 0x03ef, 1, 0x03ee, /* COPTIC CAPITAL LETTER DEI */ /* 878*/ 0x03f2, 1, 0x03f9, /* GREEK CAPITAL LUNATE SIGMA SYMBOL */ /* 881*/ 0x03f3, 1, 0x037f, /* GREEK CAPITAL LETTER YOT */ /* 884*/ 0x03f8, 1, 0x03f7, /* GREEK CAPITAL LETTER SHO */ /* 887*/ 0x03fb, 1, 0x03fa, /* GREEK CAPITAL LETTER SAN */ /* 890*/ 0x0430, 1, 0x0410, /* CYRILLIC CAPITAL LETTER A */ /* 893*/ 0x0431, 1, 0x0411, /* CYRILLIC CAPITAL LETTER BE */ /* 896*/ 0x0432, 1, 0x0412, /* CYRILLIC CAPITAL LETTER VE */ /* 899*/ 0x0433, 1, 0x0413, /* CYRILLIC CAPITAL LETTER GHE */ /* 902*/ 0x0434, 1, 0x0414, /* CYRILLIC CAPITAL LETTER DE */ /* 905*/ 0x0435, 1, 0x0415, /* CYRILLIC CAPITAL LETTER IE */ /* 908*/ 0x0436, 1, 0x0416, /* CYRILLIC CAPITAL LETTER ZHE */ /* 911*/ 0x0437, 1, 0x0417, /* CYRILLIC CAPITAL LETTER ZE */ /* 914*/ 0x0438, 1, 0x0418, /* CYRILLIC CAPITAL LETTER I */ /* 917*/ 0x0439, 1, 0x0419, /* CYRILLIC CAPITAL LETTER SHORT I */ /* 920*/ 0x043a, 1, 0x041a, /* CYRILLIC CAPITAL LETTER KA */ /* 923*/ 0x043b, 1, 0x041b, /* CYRILLIC CAPITAL LETTER EL */ /* 926*/ 0x043c, 1, 0x041c, /* CYRILLIC CAPITAL LETTER EM */ /* 929*/ 0x043d, 1, 0x041d, /* CYRILLIC CAPITAL LETTER EN */ /* 932*/ 0x043e, 1, 0x041e, /* CYRILLIC CAPITAL LETTER O */ /* 935*/ 0x043f, 1, 0x041f, /* CYRILLIC CAPITAL LETTER PE */ /* 938*/ 0x0440, 1, 0x0420, /* CYRILLIC CAPITAL LETTER ER */ /* 941*/ 0x0441, 1, 0x0421, /* CYRILLIC CAPITAL LETTER ES */ /* 944*/ 0x0442, 1, 0x0422, /* CYRILLIC CAPITAL LETTER TE */ /* 947*/ 0x0443, 1, 0x0423, /* CYRILLIC CAPITAL LETTER U */ /* 950*/ 0x0444, 1, 0x0424, /* CYRILLIC CAPITAL LETTER EF */ /* 953*/ 0x0445, 1, 0x0425, /* CYRILLIC CAPITAL LETTER HA */ /* 956*/ 0x0446, 1, 0x0426, /* CYRILLIC CAPITAL LETTER TSE */ /* 959*/ 0x0447, 1, 0x0427, /* CYRILLIC CAPITAL LETTER CHE */ /* 962*/ 0x0448, 1, 0x0428, /* CYRILLIC CAPITAL LETTER SHA */ /* 965*/ 0x0449, 1, 0x0429, /* CYRILLIC CAPITAL LETTER SHCHA */ /* 968*/ 0x044a, 1, 0x042a, /* CYRILLIC CAPITAL LETTER HARD SIGN */ /* 971*/ 0x044b, 1, 0x042b, /* CYRILLIC CAPITAL LETTER YERU */ /* 974*/ 0x044c, 1, 0x042c, /* CYRILLIC CAPITAL LETTER SOFT SIGN */ /* 977*/ 0x044d, 1, 0x042d, /* CYRILLIC CAPITAL LETTER E */ /* 980*/ 0x044e, 1, 0x042e, /* CYRILLIC CAPITAL LETTER YU */ /* 983*/ 0x044f, 1, 0x042f, /* CYRILLIC CAPITAL LETTER YA */ /* 986*/ 0x0450, 1, 0x0400, /* CYRILLIC CAPITAL LETTER IE WITH G.. */ /* 989*/ 0x0451, 1, 0x0401, /* CYRILLIC CAPITAL LETTER IO */ /* 992*/ 0x0452, 1, 0x0402, /* CYRILLIC CAPITAL LETTER DJE */ /* 995*/ 0x0453, 1, 0x0403, /* CYRILLIC CAPITAL LETTER GJE */ /* 998*/ 0x0454, 1, 0x0404, /* CYRILLIC CAPITAL LETTER UKRAINIAN.. */ /*1001*/ 0x0455, 1, 0x0405, /* CYRILLIC CAPITAL LETTER DZE */ /*1004*/ 0x0456, 1, 0x0406, /* CYRILLIC CAPITAL LETTER BYELORUSS.. */ /*1007*/ 0x0457, 1, 0x0407, /* CYRILLIC CAPITAL LETTER YI */ /*1010*/ 0x0458, 1, 0x0408, /* CYRILLIC CAPITAL LETTER JE */ /*1013*/ 0x0459, 1, 0x0409, /* CYRILLIC CAPITAL LETTER LJE */ /*1016*/ 0x045a, 1, 0x040a, /* CYRILLIC CAPITAL LETTER NJE */ /*1019*/ 0x045b, 1, 0x040b, /* CYRILLIC CAPITAL LETTER TSHE */ /*1022*/ 0x045c, 1, 0x040c, /* CYRILLIC CAPITAL LETTER KJE */ /*1025*/ 0x045d, 1, 0x040d, /* CYRILLIC CAPITAL LETTER I WITH GR.. */ /*1028*/ 0x045e, 1, 0x040e, /* CYRILLIC CAPITAL LETTER SHORT U */ /*1031*/ 0x045f, 1, 0x040f, /* CYRILLIC CAPITAL LETTER DZHE */ /*1034*/ 0x0461, 1, 0x0460, /* CYRILLIC CAPITAL LETTER OMEGA */ /*1037*/ 0x0463, 1, 0x0462, /* CYRILLIC CAPITAL LETTER YAT */ /*1040*/ 0x0465, 1, 0x0464, /* CYRILLIC CAPITAL LETTER IOTIFIED E */ /*1043*/ 0x0467, 1, 0x0466, /* CYRILLIC CAPITAL LETTER LITTLE YUS */ /*1046*/ 0x0469, 1, 0x0468, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*1049*/ 0x046b, 1, 0x046a, /* CYRILLIC CAPITAL LETTER BIG YUS */ /*1052*/ 0x046d, 1, 0x046c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*1055*/ 0x046f, 1, 0x046e, /* CYRILLIC CAPITAL LETTER KSI */ /*1058*/ 0x0471, 1, 0x0470, /* CYRILLIC CAPITAL LETTER PSI */ /*1061*/ 0x0473, 1, 0x0472, /* CYRILLIC CAPITAL LETTER FITA */ /*1064*/ 0x0475, 1, 0x0474, /* CYRILLIC CAPITAL LETTER IZHITSA */ /*1067*/ 0x0477, 1, 0x0476, /* CYRILLIC CAPITAL LETTER IZHITSA W.. */ /*1070*/ 0x0479, 1, 0x0478, /* CYRILLIC CAPITAL LETTER UK */ /*1073*/ 0x047b, 1, 0x047a, /* CYRILLIC CAPITAL LETTER ROUND OME.. */ /*1076*/ 0x047d, 1, 0x047c, /* CYRILLIC CAPITAL LETTER OMEGA WIT.. */ /*1079*/ 0x047f, 1, 0x047e, /* CYRILLIC CAPITAL LETTER OT */ /*1082*/ 0x0481, 1, 0x0480, /* CYRILLIC CAPITAL LETTER KOPPA */ /*1085*/ 0x048b, 1, 0x048a, /* CYRILLIC CAPITAL LETTER SHORT I W.. */ /*1088*/ 0x048d, 1, 0x048c, /* CYRILLIC CAPITAL LETTER SEMISOFT .. */ /*1091*/ 0x048f, 1, 0x048e, /* CYRILLIC CAPITAL LETTER ER WITH T.. */ /*1094*/ 0x0491, 1, 0x0490, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1097*/ 0x0493, 1, 0x0492, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1100*/ 0x0495, 1, 0x0494, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1103*/ 0x0497, 1, 0x0496, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1106*/ 0x0499, 1, 0x0498, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ /*1109*/ 0x049b, 1, 0x049a, /* CYRILLIC CAPITAL LETTER KA WITH D.. */ /*1112*/ 0x049d, 1, 0x049c, /* CYRILLIC CAPITAL LETTER KA WITH V.. */ /*1115*/ 0x049f, 1, 0x049e, /* CYRILLIC CAPITAL LETTER KA WITH S.. */ /*1118*/ 0x04a1, 1, 0x04a0, /* CYRILLIC CAPITAL LETTER BASHKIR KA */ /*1121*/ 0x04a3, 1, 0x04a2, /* CYRILLIC CAPITAL LETTER EN WITH D.. */ /*1124*/ 0x04a5, 1, 0x04a4, /* CYRILLIC CAPITAL LIGATURE EN GHE */ /*1127*/ 0x04a7, 1, 0x04a6, /* CYRILLIC CAPITAL LETTER PE WITH M.. */ /*1130*/ 0x04a9, 1, 0x04a8, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1133*/ 0x04ab, 1, 0x04aa, /* CYRILLIC CAPITAL LETTER ES WITH D.. */ /*1136*/ 0x04ad, 1, 0x04ac, /* CYRILLIC CAPITAL LETTER TE WITH D.. */ /*1139*/ 0x04af, 1, 0x04ae, /* CYRILLIC CAPITAL LETTER STRAIGHT U */ /*1142*/ 0x04b1, 1, 0x04b0, /* CYRILLIC CAPITAL LETTER STRAIGHT .. */ /*1145*/ 0x04b3, 1, 0x04b2, /* CYRILLIC CAPITAL LETTER HA WITH D.. */ /*1148*/ 0x04b5, 1, 0x04b4, /* CYRILLIC CAPITAL LIGATURE TE TSE */ /*1151*/ 0x04b7, 1, 0x04b6, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1154*/ 0x04b9, 1, 0x04b8, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1157*/ 0x04bb, 1, 0x04ba, /* CYRILLIC CAPITAL LETTER SHHA */ /*1160*/ 0x04bd, 1, 0x04bc, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1163*/ 0x04bf, 1, 0x04be, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1166*/ 0x04c2, 1, 0x04c1, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1169*/ 0x04c4, 1, 0x04c3, /* CYRILLIC CAPITAL LETTER KA WITH H.. */ /*1172*/ 0x04c6, 1, 0x04c5, /* CYRILLIC CAPITAL LETTER EL WITH T.. */ /*1175*/ 0x04c8, 1, 0x04c7, /* CYRILLIC CAPITAL LETTER EN WITH H.. */ /*1178*/ 0x04ca, 1, 0x04c9, /* CYRILLIC CAPITAL LETTER EN WITH T.. */ /*1181*/ 0x04cc, 1, 0x04cb, /* CYRILLIC CAPITAL LETTER KHAKASSIA.. */ /*1184*/ 0x04ce, 1, 0x04cd, /* CYRILLIC CAPITAL LETTER EM WITH T.. */ /*1187*/ 0x04cf, 1, 0x04c0, /* CYRILLIC LETTER PALOCHKA */ /*1190*/ 0x04d1, 1, 0x04d0, /* CYRILLIC CAPITAL LETTER A WITH BR.. */ /*1193*/ 0x04d3, 1, 0x04d2, /* CYRILLIC CAPITAL LETTER A WITH DI.. */ /*1196*/ 0x04d5, 1, 0x04d4, /* CYRILLIC CAPITAL LIGATURE A IE */ /*1199*/ 0x04d7, 1, 0x04d6, /* CYRILLIC CAPITAL LETTER IE WITH B.. */ /*1202*/ 0x04d9, 1, 0x04d8, /* CYRILLIC CAPITAL LETTER SCHWA */ /*1205*/ 0x04db, 1, 0x04da, /* CYRILLIC CAPITAL LETTER SCHWA WIT.. */ /*1208*/ 0x04dd, 1, 0x04dc, /* CYRILLIC CAPITAL LETTER ZHE WITH .. */ /*1211*/ 0x04df, 1, 0x04de, /* CYRILLIC CAPITAL LETTER ZE WITH D.. */ /*1214*/ 0x04e1, 1, 0x04e0, /* CYRILLIC CAPITAL LETTER ABKHASIAN.. */ /*1217*/ 0x04e3, 1, 0x04e2, /* CYRILLIC CAPITAL LETTER I WITH MA.. */ /*1220*/ 0x04e5, 1, 0x04e4, /* CYRILLIC CAPITAL LETTER I WITH DI.. */ /*1223*/ 0x04e7, 1, 0x04e6, /* CYRILLIC CAPITAL LETTER O WITH DI.. */ /*1226*/ 0x04e9, 1, 0x04e8, /* CYRILLIC CAPITAL LETTER BARRED O */ /*1229*/ 0x04eb, 1, 0x04ea, /* CYRILLIC CAPITAL LETTER BARRED O .. */ /*1232*/ 0x04ed, 1, 0x04ec, /* CYRILLIC CAPITAL LETTER E WITH DI.. */ /*1235*/ 0x04ef, 1, 0x04ee, /* CYRILLIC CAPITAL LETTER U WITH MA.. */ /*1238*/ 0x04f1, 1, 0x04f0, /* CYRILLIC CAPITAL LETTER U WITH DI.. */ /*1241*/ 0x04f3, 1, 0x04f2, /* CYRILLIC CAPITAL LETTER U WITH DO.. */ /*1244*/ 0x04f5, 1, 0x04f4, /* CYRILLIC CAPITAL LETTER CHE WITH .. */ /*1247*/ 0x04f7, 1, 0x04f6, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1250*/ 0x04f9, 1, 0x04f8, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ /*1253*/ 0x04fb, 1, 0x04fa, /* CYRILLIC CAPITAL LETTER GHE WITH .. */ /*1256*/ 0x04fd, 1, 0x04fc, /* CYRILLIC CAPITAL LETTER HA WITH H.. */ /*1259*/ 0x04ff, 1, 0x04fe, /* CYRILLIC CAPITAL LETTER HA WITH S.. */ /*1262*/ 0x0501, 1, 0x0500, /* CYRILLIC CAPITAL LETTER KOMI DE */ /*1265*/ 0x0503, 1, 0x0502, /* CYRILLIC CAPITAL LETTER KOMI DJE */ /*1268*/ 0x0505, 1, 0x0504, /* CYRILLIC CAPITAL LETTER KOMI ZJE */ /*1271*/ 0x0507, 1, 0x0506, /* CYRILLIC CAPITAL LETTER KOMI DZJE */ /*1274*/ 0x0509, 1, 0x0508, /* CYRILLIC CAPITAL LETTER KOMI LJE */ /*1277*/ 0x050b, 1, 0x050a, /* CYRILLIC CAPITAL LETTER KOMI NJE */ /*1280*/ 0x050d, 1, 0x050c, /* CYRILLIC CAPITAL LETTER KOMI SJE */ /*1283*/ 0x050f, 1, 0x050e, /* CYRILLIC CAPITAL LETTER KOMI TJE */ /*1286*/ 0x0511, 1, 0x0510, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*1289*/ 0x0513, 1, 0x0512, /* CYRILLIC CAPITAL LETTER EL WITH H.. */ /*1292*/ 0x0515, 1, 0x0514, /* CYRILLIC CAPITAL LETTER LHA */ /*1295*/ 0x0517, 1, 0x0516, /* CYRILLIC CAPITAL LETTER RHA */ /*1298*/ 0x0519, 1, 0x0518, /* CYRILLIC CAPITAL LETTER YAE */ /*1301*/ 0x051b, 1, 0x051a, /* CYRILLIC CAPITAL LETTER QA */ /*1304*/ 0x051d, 1, 0x051c, /* CYRILLIC CAPITAL LETTER WE */ /*1307*/ 0x051f, 1, 0x051e, /* CYRILLIC CAPITAL LETTER ALEUT KA */ /*1310*/ 0x0521, 1, 0x0520, /* CYRILLIC CAPITAL LETTER EL WITH M.. */ /*1313*/ 0x0523, 1, 0x0522, /* CYRILLIC CAPITAL LETTER EN WITH M.. */ /*1316*/ 0x0525, 1, 0x0524, /* CYRILLIC CAPITAL LETTER PE WITH D.. */ /*1319*/ 0x0527, 1, 0x0526, /* CYRILLIC CAPITAL LETTER SHHA WITH.. */ /*1322*/ 0x0529, 1, 0x0528, /* CYRILLIC CAPITAL LETTER EN WITH L.. */ /*1325*/ 0x052b, 1, 0x052a, /* CYRILLIC CAPITAL LETTER DZZHE */ /*1328*/ 0x052d, 1, 0x052c, /* CYRILLIC CAPITAL LETTER DCHE */ /*1331*/ 0x052f, 1, 0x052e, /* CYRILLIC CAPITAL LETTER EL WITH D.. */ /*1334*/ 0x0561, 1, 0x0531, /* ARMENIAN CAPITAL LETTER AYB */ /*1337*/ 0x0562, 1, 0x0532, /* ARMENIAN CAPITAL LETTER BEN */ /*1340*/ 0x0563, 1, 0x0533, /* ARMENIAN CAPITAL LETTER GIM */ /*1343*/ 0x0564, 1, 0x0534, /* ARMENIAN CAPITAL LETTER DA */ /*1346*/ 0x0565, 1, 0x0535, /* ARMENIAN CAPITAL LETTER ECH */ /*1349*/ 0x0566, 1, 0x0536, /* ARMENIAN CAPITAL LETTER ZA */ /*1352*/ 0x0567, 1, 0x0537, /* ARMENIAN CAPITAL LETTER EH */ /*1355*/ 0x0568, 1, 0x0538, /* ARMENIAN CAPITAL LETTER ET */ /*1358*/ 0x0569, 1, 0x0539, /* ARMENIAN CAPITAL LETTER TO */ /*1361*/ 0x056a, 1, 0x053a, /* ARMENIAN CAPITAL LETTER ZHE */ /*1364*/ 0x056b, 1, 0x053b, /* ARMENIAN CAPITAL LETTER INI */ /*1367*/ 0x056c, 1, 0x053c, /* ARMENIAN CAPITAL LETTER LIWN */ /*1370*/ 0x056d, 1, 0x053d, /* ARMENIAN CAPITAL LETTER XEH */ /*1373*/ 0x056e, 1, 0x053e, /* ARMENIAN CAPITAL LETTER CA */ /*1376*/ 0x056f, 1, 0x053f, /* ARMENIAN CAPITAL LETTER KEN */ /*1379*/ 0x0570, 1, 0x0540, /* ARMENIAN CAPITAL LETTER HO */ /*1382*/ 0x0571, 1, 0x0541, /* ARMENIAN CAPITAL LETTER JA */ /*1385*/ 0x0572, 1, 0x0542, /* ARMENIAN CAPITAL LETTER GHAD */ /*1388*/ 0x0573, 1, 0x0543, /* ARMENIAN CAPITAL LETTER CHEH */ /*1391*/ 0x0574, 1, 0x0544, /* ARMENIAN CAPITAL LETTER MEN */ /*1394*/ 0x0575, 1, 0x0545, /* ARMENIAN CAPITAL LETTER YI */ /*1397*/ 0x0576, 1, 0x0546, /* ARMENIAN CAPITAL LETTER NOW */ /*1400*/ 0x0577, 1, 0x0547, /* ARMENIAN CAPITAL LETTER SHA */ /*1403*/ 0x0578, 1, 0x0548, /* ARMENIAN CAPITAL LETTER VO */ /*1406*/ 0x0579, 1, 0x0549, /* ARMENIAN CAPITAL LETTER CHA */ /*1409*/ 0x057a, 1, 0x054a, /* ARMENIAN CAPITAL LETTER PEH */ /*1412*/ 0x057b, 1, 0x054b, /* ARMENIAN CAPITAL LETTER JHEH */ /*1415*/ 0x057c, 1, 0x054c, /* ARMENIAN CAPITAL LETTER RA */ /*1418*/ 0x057d, 1, 0x054d, /* ARMENIAN CAPITAL LETTER SEH */ /*1421*/ 0x057e, 1, 0x054e, /* ARMENIAN CAPITAL LETTER VEW */ /*1424*/ 0x057f, 1, 0x054f, /* ARMENIAN CAPITAL LETTER TIWN */ /*1427*/ 0x0580, 1, 0x0550, /* ARMENIAN CAPITAL LETTER REH */ /*1430*/ 0x0581, 1, 0x0551, /* ARMENIAN CAPITAL LETTER CO */ /*1433*/ 0x0582, 1, 0x0552, /* ARMENIAN CAPITAL LETTER YIWN */ /*1436*/ 0x0583, 1, 0x0553, /* ARMENIAN CAPITAL LETTER PIWR */ /*1439*/ 0x0584, 1, 0x0554, /* ARMENIAN CAPITAL LETTER KEH */ /*1442*/ 0x0585, 1, 0x0555, /* ARMENIAN CAPITAL LETTER OH */ /*1445*/ 0x0586, 1, 0x0556, /* ARMENIAN CAPITAL LETTER FEH */ /*1448*/ 0x13a0, 1, 0xab70, /* CHEROKEE SMALL LETTER A */ /*1451*/ 0x13a1, 1, 0xab71, /* CHEROKEE SMALL LETTER E */ /*1454*/ 0x13a2, 1, 0xab72, /* CHEROKEE SMALL LETTER I */ /*1457*/ 0x13a3, 1, 0xab73, /* CHEROKEE SMALL LETTER O */ /*1460*/ 0x13a4, 1, 0xab74, /* CHEROKEE SMALL LETTER U */ /*1463*/ 0x13a5, 1, 0xab75, /* CHEROKEE SMALL LETTER V */ /*1466*/ 0x13a6, 1, 0xab76, /* CHEROKEE SMALL LETTER GA */ /*1469*/ 0x13a7, 1, 0xab77, /* CHEROKEE SMALL LETTER KA */ /*1472*/ 0x13a8, 1, 0xab78, /* CHEROKEE SMALL LETTER GE */ /*1475*/ 0x13a9, 1, 0xab79, /* CHEROKEE SMALL LETTER GI */ /*1478*/ 0x13aa, 1, 0xab7a, /* CHEROKEE SMALL LETTER GO */ /*1481*/ 0x13ab, 1, 0xab7b, /* CHEROKEE SMALL LETTER GU */ /*1484*/ 0x13ac, 1, 0xab7c, /* CHEROKEE SMALL LETTER GV */ /*1487*/ 0x13ad, 1, 0xab7d, /* CHEROKEE SMALL LETTER HA */ /*1490*/ 0x13ae, 1, 0xab7e, /* CHEROKEE SMALL LETTER HE */ /*1493*/ 0x13af, 1, 0xab7f, /* CHEROKEE SMALL LETTER HI */ /*1496*/ 0x13b0, 1, 0xab80, /* CHEROKEE SMALL LETTER HO */ /*1499*/ 0x13b1, 1, 0xab81, /* CHEROKEE SMALL LETTER HU */ /*1502*/ 0x13b2, 1, 0xab82, /* CHEROKEE SMALL LETTER HV */ /*1505*/ 0x13b3, 1, 0xab83, /* CHEROKEE SMALL LETTER LA */ /*1508*/ 0x13b4, 1, 0xab84, /* CHEROKEE SMALL LETTER LE */ /*1511*/ 0x13b5, 1, 0xab85, /* CHEROKEE SMALL LETTER LI */ /*1514*/ 0x13b6, 1, 0xab86, /* CHEROKEE SMALL LETTER LO */ /*1517*/ 0x13b7, 1, 0xab87, /* CHEROKEE SMALL LETTER LU */ /*1520*/ 0x13b8, 1, 0xab88, /* CHEROKEE SMALL LETTER LV */ /*1523*/ 0x13b9, 1, 0xab89, /* CHEROKEE SMALL LETTER MA */ /*1526*/ 0x13ba, 1, 0xab8a, /* CHEROKEE SMALL LETTER ME */ /*1529*/ 0x13bb, 1, 0xab8b, /* CHEROKEE SMALL LETTER MI */ /*1532*/ 0x13bc, 1, 0xab8c, /* CHEROKEE SMALL LETTER MO */ /*1535*/ 0x13bd, 1, 0xab8d, /* CHEROKEE SMALL LETTER MU */ /*1538*/ 0x13be, 1, 0xab8e, /* CHEROKEE SMALL LETTER NA */ /*1541*/ 0x13bf, 1, 0xab8f, /* CHEROKEE SMALL LETTER HNA */ /*1544*/ 0x13c0, 1, 0xab90, /* CHEROKEE SMALL LETTER NAH */ /*1547*/ 0x13c1, 1, 0xab91, /* CHEROKEE SMALL LETTER NE */ /*1550*/ 0x13c2, 1, 0xab92, /* CHEROKEE SMALL LETTER NI */ /*1553*/ 0x13c3, 1, 0xab93, /* CHEROKEE SMALL LETTER NO */ /*1556*/ 0x13c4, 1, 0xab94, /* CHEROKEE SMALL LETTER NU */ /*1559*/ 0x13c5, 1, 0xab95, /* CHEROKEE SMALL LETTER NV */ /*1562*/ 0x13c6, 1, 0xab96, /* CHEROKEE SMALL LETTER QUA */ /*1565*/ 0x13c7, 1, 0xab97, /* CHEROKEE SMALL LETTER QUE */ /*1568*/ 0x13c8, 1, 0xab98, /* CHEROKEE SMALL LETTER QUI */ /*1571*/ 0x13c9, 1, 0xab99, /* CHEROKEE SMALL LETTER QUO */ /*1574*/ 0x13ca, 1, 0xab9a, /* CHEROKEE SMALL LETTER QUU */ /*1577*/ 0x13cb, 1, 0xab9b, /* CHEROKEE SMALL LETTER QUV */ /*1580*/ 0x13cc, 1, 0xab9c, /* CHEROKEE SMALL LETTER SA */ /*1583*/ 0x13cd, 1, 0xab9d, /* CHEROKEE SMALL LETTER S */ /*1586*/ 0x13ce, 1, 0xab9e, /* CHEROKEE SMALL LETTER SE */ /*1589*/ 0x13cf, 1, 0xab9f, /* CHEROKEE SMALL LETTER SI */ /*1592*/ 0x13d0, 1, 0xaba0, /* CHEROKEE SMALL LETTER SO */ /*1595*/ 0x13d1, 1, 0xaba1, /* CHEROKEE SMALL LETTER SU */ /*1598*/ 0x13d2, 1, 0xaba2, /* CHEROKEE SMALL LETTER SV */ /*1601*/ 0x13d3, 1, 0xaba3, /* CHEROKEE SMALL LETTER DA */ /*1604*/ 0x13d4, 1, 0xaba4, /* CHEROKEE SMALL LETTER TA */ /*1607*/ 0x13d5, 1, 0xaba5, /* CHEROKEE SMALL LETTER DE */ /*1610*/ 0x13d6, 1, 0xaba6, /* CHEROKEE SMALL LETTER TE */ /*1613*/ 0x13d7, 1, 0xaba7, /* CHEROKEE SMALL LETTER DI */ /*1616*/ 0x13d8, 1, 0xaba8, /* CHEROKEE SMALL LETTER TI */ /*1619*/ 0x13d9, 1, 0xaba9, /* CHEROKEE SMALL LETTER DO */ /*1622*/ 0x13da, 1, 0xabaa, /* CHEROKEE SMALL LETTER DU */ /*1625*/ 0x13db, 1, 0xabab, /* CHEROKEE SMALL LETTER DV */ /*1628*/ 0x13dc, 1, 0xabac, /* CHEROKEE SMALL LETTER DLA */ /*1631*/ 0x13dd, 1, 0xabad, /* CHEROKEE SMALL LETTER TLA */ /*1634*/ 0x13de, 1, 0xabae, /* CHEROKEE SMALL LETTER TLE */ /*1637*/ 0x13df, 1, 0xabaf, /* CHEROKEE SMALL LETTER TLI */ /*1640*/ 0x13e0, 1, 0xabb0, /* CHEROKEE SMALL LETTER TLO */ /*1643*/ 0x13e1, 1, 0xabb1, /* CHEROKEE SMALL LETTER TLU */ /*1646*/ 0x13e2, 1, 0xabb2, /* CHEROKEE SMALL LETTER TLV */ /*1649*/ 0x13e3, 1, 0xabb3, /* CHEROKEE SMALL LETTER TSA */ /*1652*/ 0x13e4, 1, 0xabb4, /* CHEROKEE SMALL LETTER TSE */ /*1655*/ 0x13e5, 1, 0xabb5, /* CHEROKEE SMALL LETTER TSI */ /*1658*/ 0x13e6, 1, 0xabb6, /* CHEROKEE SMALL LETTER TSO */ /*1661*/ 0x13e7, 1, 0xabb7, /* CHEROKEE SMALL LETTER TSU */ /*1664*/ 0x13e8, 1, 0xabb8, /* CHEROKEE SMALL LETTER TSV */ /*1667*/ 0x13e9, 1, 0xabb9, /* CHEROKEE SMALL LETTER WA */ /*1670*/ 0x13ea, 1, 0xabba, /* CHEROKEE SMALL LETTER WE */ /*1673*/ 0x13eb, 1, 0xabbb, /* CHEROKEE SMALL LETTER WI */ /*1676*/ 0x13ec, 1, 0xabbc, /* CHEROKEE SMALL LETTER WO */ /*1679*/ 0x13ed, 1, 0xabbd, /* CHEROKEE SMALL LETTER WU */ /*1682*/ 0x13ee, 1, 0xabbe, /* CHEROKEE SMALL LETTER WV */ /*1685*/ 0x13ef, 1, 0xabbf, /* CHEROKEE SMALL LETTER YA */ /*1688*/ 0x13f0, 1, 0x13f8, /* CHEROKEE SMALL LETTER YE */ /*1691*/ 0x13f1, 1, 0x13f9, /* CHEROKEE SMALL LETTER YI */ /*1694*/ 0x13f2, 1, 0x13fa, /* CHEROKEE SMALL LETTER YO */ /*1697*/ 0x13f3, 1, 0x13fb, /* CHEROKEE SMALL LETTER YU */ /*1700*/ 0x13f4, 1, 0x13fc, /* CHEROKEE SMALL LETTER YV */ /*1703*/ 0x13f5, 1, 0x13fd, /* CHEROKEE SMALL LETTER MV */ /*1706*/ 0x1d79, 1, 0xa77d, /* LATIN CAPITAL LETTER INSULAR G */ /*1709*/ 0x1d7d, 1, 0x2c63, /* LATIN CAPITAL LETTER P WITH STROKE */ /*1712*/ 0x1e01, 1, 0x1e00, /* LATIN CAPITAL LETTER A WITH RING .. */ /*1715*/ 0x1e03, 1, 0x1e02, /* LATIN CAPITAL LETTER B WITH DOT A.. */ /*1718*/ 0x1e05, 1, 0x1e04, /* LATIN CAPITAL LETTER B WITH DOT B.. */ /*1721*/ 0x1e07, 1, 0x1e06, /* LATIN CAPITAL LETTER B WITH LINE .. */ /*1724*/ 0x1e09, 1, 0x1e08, /* LATIN CAPITAL LETTER C WITH CEDIL.. */ /*1727*/ 0x1e0b, 1, 0x1e0a, /* LATIN CAPITAL LETTER D WITH DOT A.. */ /*1730*/ 0x1e0d, 1, 0x1e0c, /* LATIN CAPITAL LETTER D WITH DOT B.. */ /*1733*/ 0x1e0f, 1, 0x1e0e, /* LATIN CAPITAL LETTER D WITH LINE .. */ /*1736*/ 0x1e11, 1, 0x1e10, /* LATIN CAPITAL LETTER D WITH CEDIL.. */ /*1739*/ 0x1e13, 1, 0x1e12, /* LATIN CAPITAL LETTER D WITH CIRCU.. */ /*1742*/ 0x1e15, 1, 0x1e14, /* LATIN CAPITAL LETTER E WITH MACRO.. */ /*1745*/ 0x1e17, 1, 0x1e16, /* LATIN CAPITAL LETTER E WITH MACRO.. */ /*1748*/ 0x1e19, 1, 0x1e18, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1751*/ 0x1e1b, 1, 0x1e1a, /* LATIN CAPITAL LETTER E WITH TILDE.. */ /*1754*/ 0x1e1d, 1, 0x1e1c, /* LATIN CAPITAL LETTER E WITH CEDIL.. */ /*1757*/ 0x1e1f, 1, 0x1e1e, /* LATIN CAPITAL LETTER F WITH DOT A.. */ /*1760*/ 0x1e21, 1, 0x1e20, /* LATIN CAPITAL LETTER G WITH MACRON */ /*1763*/ 0x1e23, 1, 0x1e22, /* LATIN CAPITAL LETTER H WITH DOT A.. */ /*1766*/ 0x1e25, 1, 0x1e24, /* LATIN CAPITAL LETTER H WITH DOT B.. */ /*1769*/ 0x1e27, 1, 0x1e26, /* LATIN CAPITAL LETTER H WITH DIAER.. */ /*1772*/ 0x1e29, 1, 0x1e28, /* LATIN CAPITAL LETTER H WITH CEDIL.. */ /*1775*/ 0x1e2b, 1, 0x1e2a, /* LATIN CAPITAL LETTER H WITH BREVE.. */ /*1778*/ 0x1e2d, 1, 0x1e2c, /* LATIN CAPITAL LETTER I WITH TILDE.. */ /*1781*/ 0x1e2f, 1, 0x1e2e, /* LATIN CAPITAL LETTER I WITH DIAER.. */ /*1784*/ 0x1e31, 1, 0x1e30, /* LATIN CAPITAL LETTER K WITH ACUTE */ /*1787*/ 0x1e33, 1, 0x1e32, /* LATIN CAPITAL LETTER K WITH DOT B.. */ /*1790*/ 0x1e35, 1, 0x1e34, /* LATIN CAPITAL LETTER K WITH LINE .. */ /*1793*/ 0x1e37, 1, 0x1e36, /* LATIN CAPITAL LETTER L WITH DOT B.. */ /*1796*/ 0x1e39, 1, 0x1e38, /* LATIN CAPITAL LETTER L WITH DOT B.. */ /*1799*/ 0x1e3b, 1, 0x1e3a, /* LATIN CAPITAL LETTER L WITH LINE .. */ /*1802*/ 0x1e3d, 1, 0x1e3c, /* LATIN CAPITAL LETTER L WITH CIRCU.. */ /*1805*/ 0x1e3f, 1, 0x1e3e, /* LATIN CAPITAL LETTER M WITH ACUTE */ /*1808*/ 0x1e41, 1, 0x1e40, /* LATIN CAPITAL LETTER M WITH DOT A.. */ /*1811*/ 0x1e43, 1, 0x1e42, /* LATIN CAPITAL LETTER M WITH DOT B.. */ /*1814*/ 0x1e45, 1, 0x1e44, /* LATIN CAPITAL LETTER N WITH DOT A.. */ /*1817*/ 0x1e47, 1, 0x1e46, /* LATIN CAPITAL LETTER N WITH DOT B.. */ /*1820*/ 0x1e49, 1, 0x1e48, /* LATIN CAPITAL LETTER N WITH LINE .. */ /*1823*/ 0x1e4b, 1, 0x1e4a, /* LATIN CAPITAL LETTER N WITH CIRCU.. */ /*1826*/ 0x1e4d, 1, 0x1e4c, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /*1829*/ 0x1e4f, 1, 0x1e4e, /* LATIN CAPITAL LETTER O WITH TILDE.. */ /*1832*/ 0x1e51, 1, 0x1e50, /* LATIN CAPITAL LETTER O WITH MACRO.. */ /*1835*/ 0x1e53, 1, 0x1e52, /* LATIN CAPITAL LETTER O WITH MACRO.. */ /*1838*/ 0x1e55, 1, 0x1e54, /* LATIN CAPITAL LETTER P WITH ACUTE */ /*1841*/ 0x1e57, 1, 0x1e56, /* LATIN CAPITAL LETTER P WITH DOT A.. */ /*1844*/ 0x1e59, 1, 0x1e58, /* LATIN CAPITAL LETTER R WITH DOT A.. */ /*1847*/ 0x1e5b, 1, 0x1e5a, /* LATIN CAPITAL LETTER R WITH DOT B.. */ /*1850*/ 0x1e5d, 1, 0x1e5c, /* LATIN CAPITAL LETTER R WITH DOT B.. */ /*1853*/ 0x1e5f, 1, 0x1e5e, /* LATIN CAPITAL LETTER R WITH LINE .. */ /*1856*/ 0x1e61, 2, 0x1e60, 0x1e9b, /* LATIN CAPITAL LETTER S WITH DOT A.. */ /*1860*/ 0x1e63, 1, 0x1e62, /* LATIN CAPITAL LETTER S WITH DOT B.. */ /*1863*/ 0x1e65, 1, 0x1e64, /* LATIN CAPITAL LETTER S WITH ACUTE.. */ /*1866*/ 0x1e67, 1, 0x1e66, /* LATIN CAPITAL LETTER S WITH CARON.. */ /*1869*/ 0x1e69, 1, 0x1e68, /* LATIN CAPITAL LETTER S WITH DOT B.. */ /*1872*/ 0x1e6b, 1, 0x1e6a, /* LATIN CAPITAL LETTER T WITH DOT A.. */ /*1875*/ 0x1e6d, 1, 0x1e6c, /* LATIN CAPITAL LETTER T WITH DOT B.. */ /*1878*/ 0x1e6f, 1, 0x1e6e, /* LATIN CAPITAL LETTER T WITH LINE .. */ /*1881*/ 0x1e71, 1, 0x1e70, /* LATIN CAPITAL LETTER T WITH CIRCU.. */ /*1884*/ 0x1e73, 1, 0x1e72, /* LATIN CAPITAL LETTER U WITH DIAER.. */ /*1887*/ 0x1e75, 1, 0x1e74, /* LATIN CAPITAL LETTER U WITH TILDE.. */ /*1890*/ 0x1e77, 1, 0x1e76, /* LATIN CAPITAL LETTER U WITH CIRCU.. */ /*1893*/ 0x1e79, 1, 0x1e78, /* LATIN CAPITAL LETTER U WITH TILDE.. */ /*1896*/ 0x1e7b, 1, 0x1e7a, /* LATIN CAPITAL LETTER U WITH MACRO.. */ /*1899*/ 0x1e7d, 1, 0x1e7c, /* LATIN CAPITAL LETTER V WITH TILDE */ /*1902*/ 0x1e7f, 1, 0x1e7e, /* LATIN CAPITAL LETTER V WITH DOT B.. */ /*1905*/ 0x1e81, 1, 0x1e80, /* LATIN CAPITAL LETTER W WITH GRAVE */ /*1908*/ 0x1e83, 1, 0x1e82, /* LATIN CAPITAL LETTER W WITH ACUTE */ /*1911*/ 0x1e85, 1, 0x1e84, /* LATIN CAPITAL LETTER W WITH DIAER.. */ /*1914*/ 0x1e87, 1, 0x1e86, /* LATIN CAPITAL LETTER W WITH DOT A.. */ /*1917*/ 0x1e89, 1, 0x1e88, /* LATIN CAPITAL LETTER W WITH DOT B.. */ /*1920*/ 0x1e8b, 1, 0x1e8a, /* LATIN CAPITAL LETTER X WITH DOT A.. */ /*1923*/ 0x1e8d, 1, 0x1e8c, /* LATIN CAPITAL LETTER X WITH DIAER.. */ /*1926*/ 0x1e8f, 1, 0x1e8e, /* LATIN CAPITAL LETTER Y WITH DOT A.. */ /*1929*/ 0x1e91, 1, 0x1e90, /* LATIN CAPITAL LETTER Z WITH CIRCU.. */ /*1932*/ 0x1e93, 1, 0x1e92, /* LATIN CAPITAL LETTER Z WITH DOT B.. */ /*1935*/ 0x1e95, 1, 0x1e94, /* LATIN CAPITAL LETTER Z WITH LINE .. */ /*1938*/ 0x1ea1, 1, 0x1ea0, /* LATIN CAPITAL LETTER A WITH DOT B.. */ /*1941*/ 0x1ea3, 1, 0x1ea2, /* LATIN CAPITAL LETTER A WITH HOOK .. */ /*1944*/ 0x1ea5, 1, 0x1ea4, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1947*/ 0x1ea7, 1, 0x1ea6, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1950*/ 0x1ea9, 1, 0x1ea8, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1953*/ 0x1eab, 1, 0x1eaa, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1956*/ 0x1ead, 1, 0x1eac, /* LATIN CAPITAL LETTER A WITH CIRCU.. */ /*1959*/ 0x1eaf, 1, 0x1eae, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1962*/ 0x1eb1, 1, 0x1eb0, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1965*/ 0x1eb3, 1, 0x1eb2, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1968*/ 0x1eb5, 1, 0x1eb4, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1971*/ 0x1eb7, 1, 0x1eb6, /* LATIN CAPITAL LETTER A WITH BREVE.. */ /*1974*/ 0x1eb9, 1, 0x1eb8, /* LATIN CAPITAL LETTER E WITH DOT B.. */ /*1977*/ 0x1ebb, 1, 0x1eba, /* LATIN CAPITAL LETTER E WITH HOOK .. */ /*1980*/ 0x1ebd, 1, 0x1ebc, /* LATIN CAPITAL LETTER E WITH TILDE */ /*1983*/ 0x1ebf, 1, 0x1ebe, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1986*/ 0x1ec1, 1, 0x1ec0, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1989*/ 0x1ec3, 1, 0x1ec2, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1992*/ 0x1ec5, 1, 0x1ec4, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1995*/ 0x1ec7, 1, 0x1ec6, /* LATIN CAPITAL LETTER E WITH CIRCU.. */ /*1998*/ 0x1ec9, 1, 0x1ec8, /* LATIN CAPITAL LETTER I WITH HOOK .. */ /*2001*/ 0x1ecb, 1, 0x1eca, /* LATIN CAPITAL LETTER I WITH DOT B.. */ /*2004*/ 0x1ecd, 1, 0x1ecc, /* LATIN CAPITAL LETTER O WITH DOT B.. */ /*2007*/ 0x1ecf, 1, 0x1ece, /* LATIN CAPITAL LETTER O WITH HOOK .. */ /*2010*/ 0x1ed1, 1, 0x1ed0, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*2013*/ 0x1ed3, 1, 0x1ed2, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*2016*/ 0x1ed5, 1, 0x1ed4, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*2019*/ 0x1ed7, 1, 0x1ed6, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*2022*/ 0x1ed9, 1, 0x1ed8, /* LATIN CAPITAL LETTER O WITH CIRCU.. */ /*2025*/ 0x1edb, 1, 0x1eda, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*2028*/ 0x1edd, 1, 0x1edc, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*2031*/ 0x1edf, 1, 0x1ede, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*2034*/ 0x1ee1, 1, 0x1ee0, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*2037*/ 0x1ee3, 1, 0x1ee2, /* LATIN CAPITAL LETTER O WITH HORN .. */ /*2040*/ 0x1ee5, 1, 0x1ee4, /* LATIN CAPITAL LETTER U WITH DOT B.. */ /*2043*/ 0x1ee7, 1, 0x1ee6, /* LATIN CAPITAL LETTER U WITH HOOK .. */ /*2046*/ 0x1ee9, 1, 0x1ee8, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*2049*/ 0x1eeb, 1, 0x1eea, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*2052*/ 0x1eed, 1, 0x1eec, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*2055*/ 0x1eef, 1, 0x1eee, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*2058*/ 0x1ef1, 1, 0x1ef0, /* LATIN CAPITAL LETTER U WITH HORN .. */ /*2061*/ 0x1ef3, 1, 0x1ef2, /* LATIN CAPITAL LETTER Y WITH GRAVE */ /*2064*/ 0x1ef5, 1, 0x1ef4, /* LATIN CAPITAL LETTER Y WITH DOT B.. */ /*2067*/ 0x1ef7, 1, 0x1ef6, /* LATIN CAPITAL LETTER Y WITH HOOK .. */ /*2070*/ 0x1ef9, 1, 0x1ef8, /* LATIN CAPITAL LETTER Y WITH TILDE */ /*2073*/ 0x1efb, 1, 0x1efa, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ /*2076*/ 0x1efd, 1, 0x1efc, /* LATIN CAPITAL LETTER MIDDLE-WELSH.. */ /*2079*/ 0x1eff, 1, 0x1efe, /* LATIN CAPITAL LETTER Y WITH LOOP */ /*2082*/ 0x1f00, 1, 0x1f08, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*2085*/ 0x1f01, 1, 0x1f09, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*2088*/ 0x1f02, 1, 0x1f0a, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*2091*/ 0x1f03, 1, 0x1f0b, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*2094*/ 0x1f04, 1, 0x1f0c, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*2097*/ 0x1f05, 1, 0x1f0d, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*2100*/ 0x1f06, 1, 0x1f0e, /* GREEK CAPITAL LETTER ALPHA WITH P.. */ /*2103*/ 0x1f07, 1, 0x1f0f, /* GREEK CAPITAL LETTER ALPHA WITH D.. */ /*2106*/ 0x1f10, 1, 0x1f18, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2109*/ 0x1f11, 1, 0x1f19, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2112*/ 0x1f12, 1, 0x1f1a, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2115*/ 0x1f13, 1, 0x1f1b, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2118*/ 0x1f14, 1, 0x1f1c, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2121*/ 0x1f15, 1, 0x1f1d, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2124*/ 0x1f20, 1, 0x1f28, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*2127*/ 0x1f21, 1, 0x1f29, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*2130*/ 0x1f22, 1, 0x1f2a, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*2133*/ 0x1f23, 1, 0x1f2b, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*2136*/ 0x1f24, 1, 0x1f2c, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*2139*/ 0x1f25, 1, 0x1f2d, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*2142*/ 0x1f26, 1, 0x1f2e, /* GREEK CAPITAL LETTER ETA WITH PSI.. */ /*2145*/ 0x1f27, 1, 0x1f2f, /* GREEK CAPITAL LETTER ETA WITH DAS.. */ /*2148*/ 0x1f30, 1, 0x1f38, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*2151*/ 0x1f31, 1, 0x1f39, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*2154*/ 0x1f32, 1, 0x1f3a, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*2157*/ 0x1f33, 1, 0x1f3b, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*2160*/ 0x1f34, 1, 0x1f3c, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*2163*/ 0x1f35, 1, 0x1f3d, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*2166*/ 0x1f36, 1, 0x1f3e, /* GREEK CAPITAL LETTER IOTA WITH PS.. */ /*2169*/ 0x1f37, 1, 0x1f3f, /* GREEK CAPITAL LETTER IOTA WITH DA.. */ /*2172*/ 0x1f40, 1, 0x1f48, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2175*/ 0x1f41, 1, 0x1f49, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2178*/ 0x1f42, 1, 0x1f4a, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2181*/ 0x1f43, 1, 0x1f4b, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2184*/ 0x1f44, 1, 0x1f4c, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2187*/ 0x1f45, 1, 0x1f4d, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2190*/ 0x1f51, 1, 0x1f59, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2193*/ 0x1f53, 1, 0x1f5b, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2196*/ 0x1f55, 1, 0x1f5d, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2199*/ 0x1f57, 1, 0x1f5f, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2202*/ 0x1f60, 1, 0x1f68, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*2205*/ 0x1f61, 1, 0x1f69, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*2208*/ 0x1f62, 1, 0x1f6a, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*2211*/ 0x1f63, 1, 0x1f6b, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*2214*/ 0x1f64, 1, 0x1f6c, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*2217*/ 0x1f65, 1, 0x1f6d, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*2220*/ 0x1f66, 1, 0x1f6e, /* GREEK CAPITAL LETTER OMEGA WITH P.. */ /*2223*/ 0x1f67, 1, 0x1f6f, /* GREEK CAPITAL LETTER OMEGA WITH D.. */ /*2226*/ 0x1f70, 1, 0x1fba, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ /*2229*/ 0x1f71, 1, 0x1fbb, /* GREEK CAPITAL LETTER ALPHA WITH O.. */ /*2232*/ 0x1f72, 1, 0x1fc8, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2235*/ 0x1f73, 1, 0x1fc9, /* GREEK CAPITAL LETTER EPSILON WITH.. */ /*2238*/ 0x1f74, 1, 0x1fca, /* GREEK CAPITAL LETTER ETA WITH VAR.. */ /*2241*/ 0x1f75, 1, 0x1fcb, /* GREEK CAPITAL LETTER ETA WITH OXIA */ /*2244*/ 0x1f76, 1, 0x1fda, /* GREEK CAPITAL LETTER IOTA WITH VA.. */ /*2247*/ 0x1f77, 1, 0x1fdb, /* GREEK CAPITAL LETTER IOTA WITH OX.. */ /*2250*/ 0x1f78, 1, 0x1ff8, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2253*/ 0x1f79, 1, 0x1ff9, /* GREEK CAPITAL LETTER OMICRON WITH.. */ /*2256*/ 0x1f7a, 1, 0x1fea, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2259*/ 0x1f7b, 1, 0x1feb, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2262*/ 0x1f7c, 1, 0x1ffa, /* GREEK CAPITAL LETTER OMEGA WITH V.. */ /*2265*/ 0x1f7d, 1, 0x1ffb, /* GREEK CAPITAL LETTER OMEGA WITH O.. */ /*2268*/ 0x1fb0, 1, 0x1fb8, /* GREEK CAPITAL LETTER ALPHA WITH V.. */ /*2271*/ 0x1fb1, 1, 0x1fb9, /* GREEK CAPITAL LETTER ALPHA WITH M.. */ /*2274*/ 0x1fd0, 1, 0x1fd8, /* GREEK CAPITAL LETTER IOTA WITH VR.. */ /*2277*/ 0x1fd1, 1, 0x1fd9, /* GREEK CAPITAL LETTER IOTA WITH MA.. */ /*2280*/ 0x1fe0, 1, 0x1fe8, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2283*/ 0x1fe1, 1, 0x1fe9, /* GREEK CAPITAL LETTER UPSILON WITH.. */ /*2286*/ 0x1fe5, 1, 0x1fec, /* GREEK CAPITAL LETTER RHO WITH DAS.. */ /*2289*/ 0x214e, 1, 0x2132, /* TURNED CAPITAL F */ /*2292*/ 0x2170, 1, 0x2160, /* ROMAN NUMERAL ONE */ /*2295*/ 0x2171, 1, 0x2161, /* ROMAN NUMERAL TWO */ /*2298*/ 0x2172, 1, 0x2162, /* ROMAN NUMERAL THREE */ /*2301*/ 0x2173, 1, 0x2163, /* ROMAN NUMERAL FOUR */ /*2304*/ 0x2174, 1, 0x2164, /* ROMAN NUMERAL FIVE */ /*2307*/ 0x2175, 1, 0x2165, /* ROMAN NUMERAL SIX */ /*2310*/ 0x2176, 1, 0x2166, /* ROMAN NUMERAL SEVEN */ /*2313*/ 0x2177, 1, 0x2167, /* ROMAN NUMERAL EIGHT */ /*2316*/ 0x2178, 1, 0x2168, /* ROMAN NUMERAL NINE */ /*2319*/ 0x2179, 1, 0x2169, /* ROMAN NUMERAL TEN */ /*2322*/ 0x217a, 1, 0x216a, /* ROMAN NUMERAL ELEVEN */ /*2325*/ 0x217b, 1, 0x216b, /* ROMAN NUMERAL TWELVE */ /*2328*/ 0x217c, 1, 0x216c, /* ROMAN NUMERAL FIFTY */ /*2331*/ 0x217d, 1, 0x216d, /* ROMAN NUMERAL ONE HUNDRED */ /*2334*/ 0x217e, 1, 0x216e, /* ROMAN NUMERAL FIVE HUNDRED */ /*2337*/ 0x217f, 1, 0x216f, /* ROMAN NUMERAL ONE THOUSAND */ /*2340*/ 0x2184, 1, 0x2183, /* ROMAN NUMERAL REVERSED ONE HUNDRED */ /*2343*/ 0x24d0, 1, 0x24b6, /* CIRCLED LATIN CAPITAL LETTER A */ /*2346*/ 0x24d1, 1, 0x24b7, /* CIRCLED LATIN CAPITAL LETTER B */ /*2349*/ 0x24d2, 1, 0x24b8, /* CIRCLED LATIN CAPITAL LETTER C */ /*2352*/ 0x24d3, 1, 0x24b9, /* CIRCLED LATIN CAPITAL LETTER D */ /*2355*/ 0x24d4, 1, 0x24ba, /* CIRCLED LATIN CAPITAL LETTER E */ /*2358*/ 0x24d5, 1, 0x24bb, /* CIRCLED LATIN CAPITAL LETTER F */ /*2361*/ 0x24d6, 1, 0x24bc, /* CIRCLED LATIN CAPITAL LETTER G */ /*2364*/ 0x24d7, 1, 0x24bd, /* CIRCLED LATIN CAPITAL LETTER H */ /*2367*/ 0x24d8, 1, 0x24be, /* CIRCLED LATIN CAPITAL LETTER I */ /*2370*/ 0x24d9, 1, 0x24bf, /* CIRCLED LATIN CAPITAL LETTER J */ /*2373*/ 0x24da, 1, 0x24c0, /* CIRCLED LATIN CAPITAL LETTER K */ /*2376*/ 0x24db, 1, 0x24c1, /* CIRCLED LATIN CAPITAL LETTER L */ /*2379*/ 0x24dc, 1, 0x24c2, /* CIRCLED LATIN CAPITAL LETTER M */ /*2382*/ 0x24dd, 1, 0x24c3, /* CIRCLED LATIN CAPITAL LETTER N */ /*2385*/ 0x24de, 1, 0x24c4, /* CIRCLED LATIN CAPITAL LETTER O */ /*2388*/ 0x24df, 1, 0x24c5, /* CIRCLED LATIN CAPITAL LETTER P */ /*2391*/ 0x24e0, 1, 0x24c6, /* CIRCLED LATIN CAPITAL LETTER Q */ /*2394*/ 0x24e1, 1, 0x24c7, /* CIRCLED LATIN CAPITAL LETTER R */ /*2397*/ 0x24e2, 1, 0x24c8, /* CIRCLED LATIN CAPITAL LETTER S */ /*2400*/ 0x24e3, 1, 0x24c9, /* CIRCLED LATIN CAPITAL LETTER T */ /*2403*/ 0x24e4, 1, 0x24ca, /* CIRCLED LATIN CAPITAL LETTER U */ /*2406*/ 0x24e5, 1, 0x24cb, /* CIRCLED LATIN CAPITAL LETTER V */ /*2409*/ 0x24e6, 1, 0x24cc, /* CIRCLED LATIN CAPITAL LETTER W */ /*2412*/ 0x24e7, 1, 0x24cd, /* CIRCLED LATIN CAPITAL LETTER X */ /*2415*/ 0x24e8, 1, 0x24ce, /* CIRCLED LATIN CAPITAL LETTER Y */ /*2418*/ 0x24e9, 1, 0x24cf, /* CIRCLED LATIN CAPITAL LETTER Z */ /*2421*/ 0x2c30, 1, 0x2c00, /* GLAGOLITIC CAPITAL LETTER AZU */ /*2424*/ 0x2c31, 1, 0x2c01, /* GLAGOLITIC CAPITAL LETTER BUKY */ /*2427*/ 0x2c32, 1, 0x2c02, /* GLAGOLITIC CAPITAL LETTER VEDE */ /*2430*/ 0x2c33, 1, 0x2c03, /* GLAGOLITIC CAPITAL LETTER GLAGOLI */ /*2433*/ 0x2c34, 1, 0x2c04, /* GLAGOLITIC CAPITAL LETTER DOBRO */ /*2436*/ 0x2c35, 1, 0x2c05, /* GLAGOLITIC CAPITAL LETTER YESTU */ /*2439*/ 0x2c36, 1, 0x2c06, /* GLAGOLITIC CAPITAL LETTER ZHIVETE */ /*2442*/ 0x2c37, 1, 0x2c07, /* GLAGOLITIC CAPITAL LETTER DZELO */ /*2445*/ 0x2c38, 1, 0x2c08, /* GLAGOLITIC CAPITAL LETTER ZEMLJA */ /*2448*/ 0x2c39, 1, 0x2c09, /* GLAGOLITIC CAPITAL LETTER IZHE */ /*2451*/ 0x2c3a, 1, 0x2c0a, /* GLAGOLITIC CAPITAL LETTER INITIAL.. */ /*2454*/ 0x2c3b, 1, 0x2c0b, /* GLAGOLITIC CAPITAL LETTER I */ /*2457*/ 0x2c3c, 1, 0x2c0c, /* GLAGOLITIC CAPITAL LETTER DJERVI */ /*2460*/ 0x2c3d, 1, 0x2c0d, /* GLAGOLITIC CAPITAL LETTER KAKO */ /*2463*/ 0x2c3e, 1, 0x2c0e, /* GLAGOLITIC CAPITAL LETTER LJUDIJE */ /*2466*/ 0x2c3f, 1, 0x2c0f, /* GLAGOLITIC CAPITAL LETTER MYSLITE */ /*2469*/ 0x2c40, 1, 0x2c10, /* GLAGOLITIC CAPITAL LETTER NASHI */ /*2472*/ 0x2c41, 1, 0x2c11, /* GLAGOLITIC CAPITAL LETTER ONU */ /*2475*/ 0x2c42, 1, 0x2c12, /* GLAGOLITIC CAPITAL LETTER POKOJI */ /*2478*/ 0x2c43, 1, 0x2c13, /* GLAGOLITIC CAPITAL LETTER RITSI */ /*2481*/ 0x2c44, 1, 0x2c14, /* GLAGOLITIC CAPITAL LETTER SLOVO */ /*2484*/ 0x2c45, 1, 0x2c15, /* GLAGOLITIC CAPITAL LETTER TVRIDO */ /*2487*/ 0x2c46, 1, 0x2c16, /* GLAGOLITIC CAPITAL LETTER UKU */ /*2490*/ 0x2c47, 1, 0x2c17, /* GLAGOLITIC CAPITAL LETTER FRITU */ /*2493*/ 0x2c48, 1, 0x2c18, /* GLAGOLITIC CAPITAL LETTER HERU */ /*2496*/ 0x2c49, 1, 0x2c19, /* GLAGOLITIC CAPITAL LETTER OTU */ /*2499*/ 0x2c4a, 1, 0x2c1a, /* GLAGOLITIC CAPITAL LETTER PE */ /*2502*/ 0x2c4b, 1, 0x2c1b, /* GLAGOLITIC CAPITAL LETTER SHTA */ /*2505*/ 0x2c4c, 1, 0x2c1c, /* GLAGOLITIC CAPITAL LETTER TSI */ /*2508*/ 0x2c4d, 1, 0x2c1d, /* GLAGOLITIC CAPITAL LETTER CHRIVI */ /*2511*/ 0x2c4e, 1, 0x2c1e, /* GLAGOLITIC CAPITAL LETTER SHA */ /*2514*/ 0x2c4f, 1, 0x2c1f, /* GLAGOLITIC CAPITAL LETTER YERU */ /*2517*/ 0x2c50, 1, 0x2c20, /* GLAGOLITIC CAPITAL LETTER YERI */ /*2520*/ 0x2c51, 1, 0x2c21, /* GLAGOLITIC CAPITAL LETTER YATI */ /*2523*/ 0x2c52, 1, 0x2c22, /* GLAGOLITIC CAPITAL LETTER SPIDERY.. */ /*2526*/ 0x2c53, 1, 0x2c23, /* GLAGOLITIC CAPITAL LETTER YU */ /*2529*/ 0x2c54, 1, 0x2c24, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ /*2532*/ 0x2c55, 1, 0x2c25, /* GLAGOLITIC CAPITAL LETTER SMALL Y.. */ /*2535*/ 0x2c56, 1, 0x2c26, /* GLAGOLITIC CAPITAL LETTER YO */ /*2538*/ 0x2c57, 1, 0x2c27, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ /*2541*/ 0x2c58, 1, 0x2c28, /* GLAGOLITIC CAPITAL LETTER BIG YUS */ /*2544*/ 0x2c59, 1, 0x2c29, /* GLAGOLITIC CAPITAL LETTER IOTATED.. */ /*2547*/ 0x2c5a, 1, 0x2c2a, /* GLAGOLITIC CAPITAL LETTER FITA */ /*2550*/ 0x2c5b, 1, 0x2c2b, /* GLAGOLITIC CAPITAL LETTER IZHITSA */ /*2553*/ 0x2c5c, 1, 0x2c2c, /* GLAGOLITIC CAPITAL LETTER SHTAPIC */ /*2556*/ 0x2c5d, 1, 0x2c2d, /* GLAGOLITIC CAPITAL LETTER TROKUTA.. */ /*2559*/ 0x2c5e, 1, 0x2c2e, /* GLAGOLITIC CAPITAL LETTER LATINAT.. */ /*2562*/ 0x2c61, 1, 0x2c60, /* LATIN CAPITAL LETTER L WITH DOUBL.. */ /*2565*/ 0x2c65, 1, 0x023a, /* LATIN CAPITAL LETTER A WITH STROKE */ /*2568*/ 0x2c66, 1, 0x023e, /* LATIN CAPITAL LETTER T WITH DIAGO.. */ /*2571*/ 0x2c68, 1, 0x2c67, /* LATIN CAPITAL LETTER H WITH DESCE.. */ /*2574*/ 0x2c6a, 1, 0x2c69, /* LATIN CAPITAL LETTER K WITH DESCE.. */ /*2577*/ 0x2c6c, 1, 0x2c6b, /* LATIN CAPITAL LETTER Z WITH DESCE.. */ /*2580*/ 0x2c73, 1, 0x2c72, /* LATIN CAPITAL LETTER W WITH HOOK */ /*2583*/ 0x2c76, 1, 0x2c75, /* LATIN CAPITAL LETTER HALF H */ /*2586*/ 0x2c81, 1, 0x2c80, /* COPTIC CAPITAL LETTER ALFA */ /*2589*/ 0x2c83, 1, 0x2c82, /* COPTIC CAPITAL LETTER VIDA */ /*2592*/ 0x2c85, 1, 0x2c84, /* COPTIC CAPITAL LETTER GAMMA */ /*2595*/ 0x2c87, 1, 0x2c86, /* COPTIC CAPITAL LETTER DALDA */ /*2598*/ 0x2c89, 1, 0x2c88, /* COPTIC CAPITAL LETTER EIE */ /*2601*/ 0x2c8b, 1, 0x2c8a, /* COPTIC CAPITAL LETTER SOU */ /*2604*/ 0x2c8d, 1, 0x2c8c, /* COPTIC CAPITAL LETTER ZATA */ /*2607*/ 0x2c8f, 1, 0x2c8e, /* COPTIC CAPITAL LETTER HATE */ /*2610*/ 0x2c91, 1, 0x2c90, /* COPTIC CAPITAL LETTER THETHE */ /*2613*/ 0x2c93, 1, 0x2c92, /* COPTIC CAPITAL LETTER IAUDA */ /*2616*/ 0x2c95, 1, 0x2c94, /* COPTIC CAPITAL LETTER KAPA */ /*2619*/ 0x2c97, 1, 0x2c96, /* COPTIC CAPITAL LETTER LAULA */ /*2622*/ 0x2c99, 1, 0x2c98, /* COPTIC CAPITAL LETTER MI */ /*2625*/ 0x2c9b, 1, 0x2c9a, /* COPTIC CAPITAL LETTER NI */ /*2628*/ 0x2c9d, 1, 0x2c9c, /* COPTIC CAPITAL LETTER KSI */ /*2631*/ 0x2c9f, 1, 0x2c9e, /* COPTIC CAPITAL LETTER O */ /*2634*/ 0x2ca1, 1, 0x2ca0, /* COPTIC CAPITAL LETTER PI */ /*2637*/ 0x2ca3, 1, 0x2ca2, /* COPTIC CAPITAL LETTER RO */ /*2640*/ 0x2ca5, 1, 0x2ca4, /* COPTIC CAPITAL LETTER SIMA */ /*2643*/ 0x2ca7, 1, 0x2ca6, /* COPTIC CAPITAL LETTER TAU */ /*2646*/ 0x2ca9, 1, 0x2ca8, /* COPTIC CAPITAL LETTER UA */ /*2649*/ 0x2cab, 1, 0x2caa, /* COPTIC CAPITAL LETTER FI */ /*2652*/ 0x2cad, 1, 0x2cac, /* COPTIC CAPITAL LETTER KHI */ /*2655*/ 0x2caf, 1, 0x2cae, /* COPTIC CAPITAL LETTER PSI */ /*2658*/ 0x2cb1, 1, 0x2cb0, /* COPTIC CAPITAL LETTER OOU */ /*2661*/ 0x2cb3, 1, 0x2cb2, /* COPTIC CAPITAL LETTER DIALECT-P A.. */ /*2664*/ 0x2cb5, 1, 0x2cb4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2667*/ 0x2cb7, 1, 0x2cb6, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2670*/ 0x2cb9, 1, 0x2cb8, /* COPTIC CAPITAL LETTER DIALECT-P K.. */ /*2673*/ 0x2cbb, 1, 0x2cba, /* COPTIC CAPITAL LETTER DIALECT-P NI */ /*2676*/ 0x2cbd, 1, 0x2cbc, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2679*/ 0x2cbf, 1, 0x2cbe, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2682*/ 0x2cc1, 1, 0x2cc0, /* COPTIC CAPITAL LETTER SAMPI */ /*2685*/ 0x2cc3, 1, 0x2cc2, /* COPTIC CAPITAL LETTER CROSSED SHEI */ /*2688*/ 0x2cc5, 1, 0x2cc4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2691*/ 0x2cc7, 1, 0x2cc6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2694*/ 0x2cc9, 1, 0x2cc8, /* COPTIC CAPITAL LETTER AKHMIMIC KH.. */ /*2697*/ 0x2ccb, 1, 0x2cca, /* COPTIC CAPITAL LETTER DIALECT-P H.. */ /*2700*/ 0x2ccd, 1, 0x2ccc, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2703*/ 0x2ccf, 1, 0x2cce, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2706*/ 0x2cd1, 1, 0x2cd0, /* COPTIC CAPITAL LETTER L-SHAPED HA */ /*2709*/ 0x2cd3, 1, 0x2cd2, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2712*/ 0x2cd5, 1, 0x2cd4, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2715*/ 0x2cd7, 1, 0x2cd6, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2718*/ 0x2cd9, 1, 0x2cd8, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2721*/ 0x2cdb, 1, 0x2cda, /* COPTIC CAPITAL LETTER OLD COPTIC .. */ /*2724*/ 0x2cdd, 1, 0x2cdc, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2727*/ 0x2cdf, 1, 0x2cde, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2730*/ 0x2ce1, 1, 0x2ce0, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2733*/ 0x2ce3, 1, 0x2ce2, /* COPTIC CAPITAL LETTER OLD NUBIAN .. */ /*2736*/ 0x2cec, 1, 0x2ceb, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2739*/ 0x2cee, 1, 0x2ced, /* COPTIC CAPITAL LETTER CRYPTOGRAMM.. */ /*2742*/ 0x2cf3, 1, 0x2cf2, /* COPTIC CAPITAL LETTER BOHAIRIC KH.. */ /*2745*/ 0x2d00, 1, 0x10a0, /* GEORGIAN CAPITAL LETTER AN */ /*2748*/ 0x2d01, 1, 0x10a1, /* GEORGIAN CAPITAL LETTER BAN */ /*2751*/ 0x2d02, 1, 0x10a2, /* GEORGIAN CAPITAL LETTER GAN */ /*2754*/ 0x2d03, 1, 0x10a3, /* GEORGIAN CAPITAL LETTER DON */ /*2757*/ 0x2d04, 1, 0x10a4, /* GEORGIAN CAPITAL LETTER EN */ /*2760*/ 0x2d05, 1, 0x10a5, /* GEORGIAN CAPITAL LETTER VIN */ /*2763*/ 0x2d06, 1, 0x10a6, /* GEORGIAN CAPITAL LETTER ZEN */ /*2766*/ 0x2d07, 1, 0x10a7, /* GEORGIAN CAPITAL LETTER TAN */ /*2769*/ 0x2d08, 1, 0x10a8, /* GEORGIAN CAPITAL LETTER IN */ /*2772*/ 0x2d09, 1, 0x10a9, /* GEORGIAN CAPITAL LETTER KAN */ /*2775*/ 0x2d0a, 1, 0x10aa, /* GEORGIAN CAPITAL LETTER LAS */ /*2778*/ 0x2d0b, 1, 0x10ab, /* GEORGIAN CAPITAL LETTER MAN */ /*2781*/ 0x2d0c, 1, 0x10ac, /* GEORGIAN CAPITAL LETTER NAR */ /*2784*/ 0x2d0d, 1, 0x10ad, /* GEORGIAN CAPITAL LETTER ON */ /*2787*/ 0x2d0e, 1, 0x10ae, /* GEORGIAN CAPITAL LETTER PAR */ /*2790*/ 0x2d0f, 1, 0x10af, /* GEORGIAN CAPITAL LETTER ZHAR */ /*2793*/ 0x2d10, 1, 0x10b0, /* GEORGIAN CAPITAL LETTER RAE */ /*2796*/ 0x2d11, 1, 0x10b1, /* GEORGIAN CAPITAL LETTER SAN */ /*2799*/ 0x2d12, 1, 0x10b2, /* GEORGIAN CAPITAL LETTER TAR */ /*2802*/ 0x2d13, 1, 0x10b3, /* GEORGIAN CAPITAL LETTER UN */ /*2805*/ 0x2d14, 1, 0x10b4, /* GEORGIAN CAPITAL LETTER PHAR */ /*2808*/ 0x2d15, 1, 0x10b5, /* GEORGIAN CAPITAL LETTER KHAR */ /*2811*/ 0x2d16, 1, 0x10b6, /* GEORGIAN CAPITAL LETTER GHAN */ /*2814*/ 0x2d17, 1, 0x10b7, /* GEORGIAN CAPITAL LETTER QAR */ /*2817*/ 0x2d18, 1, 0x10b8, /* GEORGIAN CAPITAL LETTER SHIN */ /*2820*/ 0x2d19, 1, 0x10b9, /* GEORGIAN CAPITAL LETTER CHIN */ /*2823*/ 0x2d1a, 1, 0x10ba, /* GEORGIAN CAPITAL LETTER CAN */ /*2826*/ 0x2d1b, 1, 0x10bb, /* GEORGIAN CAPITAL LETTER JIL */ /*2829*/ 0x2d1c, 1, 0x10bc, /* GEORGIAN CAPITAL LETTER CIL */ /*2832*/ 0x2d1d, 1, 0x10bd, /* GEORGIAN CAPITAL LETTER CHAR */ /*2835*/ 0x2d1e, 1, 0x10be, /* GEORGIAN CAPITAL LETTER XAN */ /*2838*/ 0x2d1f, 1, 0x10bf, /* GEORGIAN CAPITAL LETTER JHAN */ /*2841*/ 0x2d20, 1, 0x10c0, /* GEORGIAN CAPITAL LETTER HAE */ /*2844*/ 0x2d21, 1, 0x10c1, /* GEORGIAN CAPITAL LETTER HE */ /*2847*/ 0x2d22, 1, 0x10c2, /* GEORGIAN CAPITAL LETTER HIE */ /*2850*/ 0x2d23, 1, 0x10c3, /* GEORGIAN CAPITAL LETTER WE */ /*2853*/ 0x2d24, 1, 0x10c4, /* GEORGIAN CAPITAL LETTER HAR */ /*2856*/ 0x2d25, 1, 0x10c5, /* GEORGIAN CAPITAL LETTER HOE */ /*2859*/ 0x2d27, 1, 0x10c7, /* GEORGIAN CAPITAL LETTER YN */ /*2862*/ 0x2d2d, 1, 0x10cd, /* GEORGIAN CAPITAL LETTER AEN */ /*2865*/ 0xa641, 1, 0xa640, /* CYRILLIC CAPITAL LETTER ZEMLYA */ /*2868*/ 0xa643, 1, 0xa642, /* CYRILLIC CAPITAL LETTER DZELO */ /*2871*/ 0xa645, 1, 0xa644, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2874*/ 0xa647, 1, 0xa646, /* CYRILLIC CAPITAL LETTER IOTA */ /*2877*/ 0xa649, 1, 0xa648, /* CYRILLIC CAPITAL LETTER DJERV */ /*2880*/ 0xa64b, 1, 0xa64a, /* CYRILLIC CAPITAL LETTER MONOGRAPH.. */ /*2883*/ 0xa64d, 1, 0xa64c, /* CYRILLIC CAPITAL LETTER BROAD OME.. */ /*2886*/ 0xa64f, 1, 0xa64e, /* CYRILLIC CAPITAL LETTER NEUTRAL Y.. */ /*2889*/ 0xa651, 1, 0xa650, /* CYRILLIC CAPITAL LETTER YERU WITH.. */ /*2892*/ 0xa653, 1, 0xa652, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*2895*/ 0xa655, 1, 0xa654, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2898*/ 0xa657, 1, 0xa656, /* CYRILLIC CAPITAL LETTER IOTIFIED A */ /*2901*/ 0xa659, 1, 0xa658, /* CYRILLIC CAPITAL LETTER CLOSED LI.. */ /*2904*/ 0xa65b, 1, 0xa65a, /* CYRILLIC CAPITAL LETTER BLENDED Y.. */ /*2907*/ 0xa65d, 1, 0xa65c, /* CYRILLIC CAPITAL LETTER IOTIFIED .. */ /*2910*/ 0xa65f, 1, 0xa65e, /* CYRILLIC CAPITAL LETTER YN */ /*2913*/ 0xa661, 1, 0xa660, /* CYRILLIC CAPITAL LETTER REVERSED .. */ /*2916*/ 0xa663, 1, 0xa662, /* CYRILLIC CAPITAL LETTER SOFT DE */ /*2919*/ 0xa665, 1, 0xa664, /* CYRILLIC CAPITAL LETTER SOFT EL */ /*2922*/ 0xa667, 1, 0xa666, /* CYRILLIC CAPITAL LETTER SOFT EM */ /*2925*/ 0xa669, 1, 0xa668, /* CYRILLIC CAPITAL LETTER MONOCULAR.. */ /*2928*/ 0xa66b, 1, 0xa66a, /* CYRILLIC CAPITAL LETTER BINOCULAR.. */ /*2931*/ 0xa66d, 1, 0xa66c, /* CYRILLIC CAPITAL LETTER DOUBLE MO.. */ /*2934*/ 0xa681, 1, 0xa680, /* CYRILLIC CAPITAL LETTER DWE */ /*2937*/ 0xa683, 1, 0xa682, /* CYRILLIC CAPITAL LETTER DZWE */ /*2940*/ 0xa685, 1, 0xa684, /* CYRILLIC CAPITAL LETTER ZHWE */ /*2943*/ 0xa687, 1, 0xa686, /* CYRILLIC CAPITAL LETTER CCHE */ /*2946*/ 0xa689, 1, 0xa688, /* CYRILLIC CAPITAL LETTER DZZE */ /*2949*/ 0xa68b, 1, 0xa68a, /* CYRILLIC CAPITAL LETTER TE WITH M.. */ /*2952*/ 0xa68d, 1, 0xa68c, /* CYRILLIC CAPITAL LETTER TWE */ /*2955*/ 0xa68f, 1, 0xa68e, /* CYRILLIC CAPITAL LETTER TSWE */ /*2958*/ 0xa691, 1, 0xa690, /* CYRILLIC CAPITAL LETTER TSSE */ /*2961*/ 0xa693, 1, 0xa692, /* CYRILLIC CAPITAL LETTER TCHE */ /*2964*/ 0xa695, 1, 0xa694, /* CYRILLIC CAPITAL LETTER HWE */ /*2967*/ 0xa697, 1, 0xa696, /* CYRILLIC CAPITAL LETTER SHWE */ /*2970*/ 0xa699, 1, 0xa698, /* CYRILLIC CAPITAL LETTER DOUBLE O */ /*2973*/ 0xa69b, 1, 0xa69a, /* CYRILLIC CAPITAL LETTER CROSSED O */ /*2976*/ 0xa723, 1, 0xa722, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ /*2979*/ 0xa725, 1, 0xa724, /* LATIN CAPITAL LETTER EGYPTOLOGICA.. */ /*2982*/ 0xa727, 1, 0xa726, /* LATIN CAPITAL LETTER HENG */ /*2985*/ 0xa729, 1, 0xa728, /* LATIN CAPITAL LETTER TZ */ /*2988*/ 0xa72b, 1, 0xa72a, /* LATIN CAPITAL LETTER TRESILLO */ /*2991*/ 0xa72d, 1, 0xa72c, /* LATIN CAPITAL LETTER CUATRILLO */ /*2994*/ 0xa72f, 1, 0xa72e, /* LATIN CAPITAL LETTER CUATRILLO WI.. */ /*2997*/ 0xa733, 1, 0xa732, /* LATIN CAPITAL LETTER AA */ /*3000*/ 0xa735, 1, 0xa734, /* LATIN CAPITAL LETTER AO */ /*3003*/ 0xa737, 1, 0xa736, /* LATIN CAPITAL LETTER AU */ /*3006*/ 0xa739, 1, 0xa738, /* LATIN CAPITAL LETTER AV */ /*3009*/ 0xa73b, 1, 0xa73a, /* LATIN CAPITAL LETTER AV WITH HORI.. */ /*3012*/ 0xa73d, 1, 0xa73c, /* LATIN CAPITAL LETTER AY */ /*3015*/ 0xa73f, 1, 0xa73e, /* LATIN CAPITAL LETTER REVERSED C W.. */ /*3018*/ 0xa741, 1, 0xa740, /* LATIN CAPITAL LETTER K WITH STROKE */ /*3021*/ 0xa743, 1, 0xa742, /* LATIN CAPITAL LETTER K WITH DIAGO.. */ /*3024*/ 0xa745, 1, 0xa744, /* LATIN CAPITAL LETTER K WITH STROK.. */ /*3027*/ 0xa747, 1, 0xa746, /* LATIN CAPITAL LETTER BROKEN L */ /*3030*/ 0xa749, 1, 0xa748, /* LATIN CAPITAL LETTER L WITH HIGH .. */ /*3033*/ 0xa74b, 1, 0xa74a, /* LATIN CAPITAL LETTER O WITH LONG .. */ /*3036*/ 0xa74d, 1, 0xa74c, /* LATIN CAPITAL LETTER O WITH LOOP */ /*3039*/ 0xa74f, 1, 0xa74e, /* LATIN CAPITAL LETTER OO */ /*3042*/ 0xa751, 1, 0xa750, /* LATIN CAPITAL LETTER P WITH STROK.. */ /*3045*/ 0xa753, 1, 0xa752, /* LATIN CAPITAL LETTER P WITH FLOUR.. */ /*3048*/ 0xa755, 1, 0xa754, /* LATIN CAPITAL LETTER P WITH SQUIR.. */ /*3051*/ 0xa757, 1, 0xa756, /* LATIN CAPITAL LETTER Q WITH STROK.. */ /*3054*/ 0xa759, 1, 0xa758, /* LATIN CAPITAL LETTER Q WITH DIAGO.. */ /*3057*/ 0xa75b, 1, 0xa75a, /* LATIN CAPITAL LETTER R ROTUNDA */ /*3060*/ 0xa75d, 1, 0xa75c, /* LATIN CAPITAL LETTER RUM ROTUNDA */ /*3063*/ 0xa75f, 1, 0xa75e, /* LATIN CAPITAL LETTER V WITH DIAGO.. */ /*3066*/ 0xa761, 1, 0xa760, /* LATIN CAPITAL LETTER VY */ /*3069*/ 0xa763, 1, 0xa762, /* LATIN CAPITAL LETTER VISIGOTHIC Z */ /*3072*/ 0xa765, 1, 0xa764, /* LATIN CAPITAL LETTER THORN WITH S.. */ /*3075*/ 0xa767, 1, 0xa766, /* LATIN CAPITAL LETTER THORN WITH S.. */ /*3078*/ 0xa769, 1, 0xa768, /* LATIN CAPITAL LETTER VEND */ /*3081*/ 0xa76b, 1, 0xa76a, /* LATIN CAPITAL LETTER ET */ /*3084*/ 0xa76d, 1, 0xa76c, /* LATIN CAPITAL LETTER IS */ /*3087*/ 0xa76f, 1, 0xa76e, /* LATIN CAPITAL LETTER CON */ /*3090*/ 0xa77a, 1, 0xa779, /* LATIN CAPITAL LETTER INSULAR D */ /*3093*/ 0xa77c, 1, 0xa77b, /* LATIN CAPITAL LETTER INSULAR F */ /*3096*/ 0xa77f, 1, 0xa77e, /* LATIN CAPITAL LETTER TURNED INSUL.. */ /*3099*/ 0xa781, 1, 0xa780, /* LATIN CAPITAL LETTER TURNED L */ /*3102*/ 0xa783, 1, 0xa782, /* LATIN CAPITAL LETTER INSULAR R */ /*3105*/ 0xa785, 1, 0xa784, /* LATIN CAPITAL LETTER INSULAR S */ /*3108*/ 0xa787, 1, 0xa786, /* LATIN CAPITAL LETTER INSULAR T */ /*3111*/ 0xa78c, 1, 0xa78b, /* LATIN CAPITAL LETTER SALTILLO */ /*3114*/ 0xa791, 1, 0xa790, /* LATIN CAPITAL LETTER N WITH DESCE.. */ /*3117*/ 0xa793, 1, 0xa792, /* LATIN CAPITAL LETTER C WITH BAR */ /*3120*/ 0xa797, 1, 0xa796, /* LATIN CAPITAL LETTER B WITH FLOUR.. */ /*3123*/ 0xa799, 1, 0xa798, /* LATIN CAPITAL LETTER F WITH STROKE */ /*3126*/ 0xa79b, 1, 0xa79a, /* LATIN CAPITAL LETTER VOLAPUK AE */ /*3129*/ 0xa79d, 1, 0xa79c, /* LATIN CAPITAL LETTER VOLAPUK OE */ /*3132*/ 0xa79f, 1, 0xa79e, /* LATIN CAPITAL LETTER VOLAPUK UE */ /*3135*/ 0xa7a1, 1, 0xa7a0, /* LATIN CAPITAL LETTER G WITH OBLIQ.. */ /*3138*/ 0xa7a3, 1, 0xa7a2, /* LATIN CAPITAL LETTER K WITH OBLIQ.. */ /*3141*/ 0xa7a5, 1, 0xa7a4, /* LATIN CAPITAL LETTER N WITH OBLIQ.. */ /*3144*/ 0xa7a7, 1, 0xa7a6, /* LATIN CAPITAL LETTER R WITH OBLIQ.. */ /*3147*/ 0xa7a9, 1, 0xa7a8, /* LATIN CAPITAL LETTER S WITH OBLIQ.. */ /*3150*/ 0xa7b5, 1, 0xa7b4, /* LATIN CAPITAL LETTER BETA */ /*3153*/ 0xa7b7, 1, 0xa7b6, /* LATIN CAPITAL LETTER OMEGA */ /*3156*/ 0xab53, 1, 0xa7b3, /* LATIN CAPITAL LETTER CHI */ /*3159*/ 0xff41, 1, 0xff21, /* FULLWIDTH LATIN CAPITAL LETTER A */ /*3162*/ 0xff42, 1, 0xff22, /* FULLWIDTH LATIN CAPITAL LETTER B */ /*3165*/ 0xff43, 1, 0xff23, /* FULLWIDTH LATIN CAPITAL LETTER C */ /*3168*/ 0xff44, 1, 0xff24, /* FULLWIDTH LATIN CAPITAL LETTER D */ /*3171*/ 0xff45, 1, 0xff25, /* FULLWIDTH LATIN CAPITAL LETTER E */ /*3174*/ 0xff46, 1, 0xff26, /* FULLWIDTH LATIN CAPITAL LETTER F */ /*3177*/ 0xff47, 1, 0xff27, /* FULLWIDTH LATIN CAPITAL LETTER G */ /*3180*/ 0xff48, 1, 0xff28, /* FULLWIDTH LATIN CAPITAL LETTER H */ /*3183*/ 0xff49, 1, 0xff29, /* FULLWIDTH LATIN CAPITAL LETTER I */ /*3186*/ 0xff4a, 1, 0xff2a, /* FULLWIDTH LATIN CAPITAL LETTER J */ /*3189*/ 0xff4b, 1, 0xff2b, /* FULLWIDTH LATIN CAPITAL LETTER K */ /*3192*/ 0xff4c, 1, 0xff2c, /* FULLWIDTH LATIN CAPITAL LETTER L */ /*3195*/ 0xff4d, 1, 0xff2d, /* FULLWIDTH LATIN CAPITAL LETTER M */ /*3198*/ 0xff4e, 1, 0xff2e, /* FULLWIDTH LATIN CAPITAL LETTER N */ /*3201*/ 0xff4f, 1, 0xff2f, /* FULLWIDTH LATIN CAPITAL LETTER O */ /*3204*/ 0xff50, 1, 0xff30, /* FULLWIDTH LATIN CAPITAL LETTER P */ /*3207*/ 0xff51, 1, 0xff31, /* FULLWIDTH LATIN CAPITAL LETTER Q */ /*3210*/ 0xff52, 1, 0xff32, /* FULLWIDTH LATIN CAPITAL LETTER R */ /*3213*/ 0xff53, 1, 0xff33, /* FULLWIDTH LATIN CAPITAL LETTER S */ /*3216*/ 0xff54, 1, 0xff34, /* FULLWIDTH LATIN CAPITAL LETTER T */ /*3219*/ 0xff55, 1, 0xff35, /* FULLWIDTH LATIN CAPITAL LETTER U */ /*3222*/ 0xff56, 1, 0xff36, /* FULLWIDTH LATIN CAPITAL LETTER V */ /*3225*/ 0xff57, 1, 0xff37, /* FULLWIDTH LATIN CAPITAL LETTER W */ /*3228*/ 0xff58, 1, 0xff38, /* FULLWIDTH LATIN CAPITAL LETTER X */ /*3231*/ 0xff59, 1, 0xff39, /* FULLWIDTH LATIN CAPITAL LETTER Y */ /*3234*/ 0xff5a, 1, 0xff3a, /* FULLWIDTH LATIN CAPITAL LETTER Z */ /*3237*/ 0x010428, 1, 0x010400, /* DESERET CAPITAL LETTER LONG I */ /*3240*/ 0x010429, 1, 0x010401, /* DESERET CAPITAL LETTER LONG E */ /*3243*/ 0x01042a, 1, 0x010402, /* DESERET CAPITAL LETTER LONG A */ /*3246*/ 0x01042b, 1, 0x010403, /* DESERET CAPITAL LETTER LONG AH */ /*3249*/ 0x01042c, 1, 0x010404, /* DESERET CAPITAL LETTER LONG O */ /*3252*/ 0x01042d, 1, 0x010405, /* DESERET CAPITAL LETTER LONG OO */ /*3255*/ 0x01042e, 1, 0x010406, /* DESERET CAPITAL LETTER SHORT I */ /*3258*/ 0x01042f, 1, 0x010407, /* DESERET CAPITAL LETTER SHORT E */ /*3261*/ 0x010430, 1, 0x010408, /* DESERET CAPITAL LETTER SHORT A */ /*3264*/ 0x010431, 1, 0x010409, /* DESERET CAPITAL LETTER SHORT AH */ /*3267*/ 0x010432, 1, 0x01040a, /* DESERET CAPITAL LETTER SHORT O */ /*3270*/ 0x010433, 1, 0x01040b, /* DESERET CAPITAL LETTER SHORT OO */ /*3273*/ 0x010434, 1, 0x01040c, /* DESERET CAPITAL LETTER AY */ /*3276*/ 0x010435, 1, 0x01040d, /* DESERET CAPITAL LETTER OW */ /*3279*/ 0x010436, 1, 0x01040e, /* DESERET CAPITAL LETTER WU */ /*3282*/ 0x010437, 1, 0x01040f, /* DESERET CAPITAL LETTER YEE */ /*3285*/ 0x010438, 1, 0x010410, /* DESERET CAPITAL LETTER H */ /*3288*/ 0x010439, 1, 0x010411, /* DESERET CAPITAL LETTER PEE */ /*3291*/ 0x01043a, 1, 0x010412, /* DESERET CAPITAL LETTER BEE */ /*3294*/ 0x01043b, 1, 0x010413, /* DESERET CAPITAL LETTER TEE */ /*3297*/ 0x01043c, 1, 0x010414, /* DESERET CAPITAL LETTER DEE */ /*3300*/ 0x01043d, 1, 0x010415, /* DESERET CAPITAL LETTER CHEE */ /*3303*/ 0x01043e, 1, 0x010416, /* DESERET CAPITAL LETTER JEE */ /*3306*/ 0x01043f, 1, 0x010417, /* DESERET CAPITAL LETTER KAY */ /*3309*/ 0x010440, 1, 0x010418, /* DESERET CAPITAL LETTER GAY */ /*3312*/ 0x010441, 1, 0x010419, /* DESERET CAPITAL LETTER EF */ /*3315*/ 0x010442, 1, 0x01041a, /* DESERET CAPITAL LETTER VEE */ /*3318*/ 0x010443, 1, 0x01041b, /* DESERET CAPITAL LETTER ETH */ /*3321*/ 0x010444, 1, 0x01041c, /* DESERET CAPITAL LETTER THEE */ /*3324*/ 0x010445, 1, 0x01041d, /* DESERET CAPITAL LETTER ES */ /*3327*/ 0x010446, 1, 0x01041e, /* DESERET CAPITAL LETTER ZEE */ /*3330*/ 0x010447, 1, 0x01041f, /* DESERET CAPITAL LETTER ESH */ /*3333*/ 0x010448, 1, 0x010420, /* DESERET CAPITAL LETTER ZHEE */ /*3336*/ 0x010449, 1, 0x010421, /* DESERET CAPITAL LETTER ER */ /*3339*/ 0x01044a, 1, 0x010422, /* DESERET CAPITAL LETTER EL */ /*3342*/ 0x01044b, 1, 0x010423, /* DESERET CAPITAL LETTER EM */ /*3345*/ 0x01044c, 1, 0x010424, /* DESERET CAPITAL LETTER EN */ /*3348*/ 0x01044d, 1, 0x010425, /* DESERET CAPITAL LETTER ENG */ /*3351*/ 0x01044e, 1, 0x010426, /* DESERET CAPITAL LETTER OI */ /*3354*/ 0x01044f, 1, 0x010427, /* DESERET CAPITAL LETTER EW */ /*3357*/ 0x010cc0, 1, 0x010c80, /* OLD HUNGARIAN CAPITAL LETTER A */ /*3360*/ 0x010cc1, 1, 0x010c81, /* OLD HUNGARIAN CAPITAL LETTER AA */ /*3363*/ 0x010cc2, 1, 0x010c82, /* OLD HUNGARIAN CAPITAL LETTER EB */ /*3366*/ 0x010cc3, 1, 0x010c83, /* OLD HUNGARIAN CAPITAL LETTER AMB */ /*3369*/ 0x010cc4, 1, 0x010c84, /* OLD HUNGARIAN CAPITAL LETTER EC */ /*3372*/ 0x010cc5, 1, 0x010c85, /* OLD HUNGARIAN CAPITAL LETTER ENC */ /*3375*/ 0x010cc6, 1, 0x010c86, /* OLD HUNGARIAN CAPITAL LETTER ECS */ /*3378*/ 0x010cc7, 1, 0x010c87, /* OLD HUNGARIAN CAPITAL LETTER ED */ /*3381*/ 0x010cc8, 1, 0x010c88, /* OLD HUNGARIAN CAPITAL LETTER AND */ /*3384*/ 0x010cc9, 1, 0x010c89, /* OLD HUNGARIAN CAPITAL LETTER E */ /*3387*/ 0x010cca, 1, 0x010c8a, /* OLD HUNGARIAN CAPITAL LETTER CLOS.. */ /*3390*/ 0x010ccb, 1, 0x010c8b, /* OLD HUNGARIAN CAPITAL LETTER EE */ /*3393*/ 0x010ccc, 1, 0x010c8c, /* OLD HUNGARIAN CAPITAL LETTER EF */ /*3396*/ 0x010ccd, 1, 0x010c8d, /* OLD HUNGARIAN CAPITAL LETTER EG */ /*3399*/ 0x010cce, 1, 0x010c8e, /* OLD HUNGARIAN CAPITAL LETTER EGY */ /*3402*/ 0x010ccf, 1, 0x010c8f, /* OLD HUNGARIAN CAPITAL LETTER EH */ /*3405*/ 0x010cd0, 1, 0x010c90, /* OLD HUNGARIAN CAPITAL LETTER I */ /*3408*/ 0x010cd1, 1, 0x010c91, /* OLD HUNGARIAN CAPITAL LETTER II */ /*3411*/ 0x010cd2, 1, 0x010c92, /* OLD HUNGARIAN CAPITAL LETTER EJ */ /*3414*/ 0x010cd3, 1, 0x010c93, /* OLD HUNGARIAN CAPITAL LETTER EK */ /*3417*/ 0x010cd4, 1, 0x010c94, /* OLD HUNGARIAN CAPITAL LETTER AK */ /*3420*/ 0x010cd5, 1, 0x010c95, /* OLD HUNGARIAN CAPITAL LETTER UNK */ /*3423*/ 0x010cd6, 1, 0x010c96, /* OLD HUNGARIAN CAPITAL LETTER EL */ /*3426*/ 0x010cd7, 1, 0x010c97, /* OLD HUNGARIAN CAPITAL LETTER ELY */ /*3429*/ 0x010cd8, 1, 0x010c98, /* OLD HUNGARIAN CAPITAL LETTER EM */ /*3432*/ 0x010cd9, 1, 0x010c99, /* OLD HUNGARIAN CAPITAL LETTER EN */ /*3435*/ 0x010cda, 1, 0x010c9a, /* OLD HUNGARIAN CAPITAL LETTER ENY */ /*3438*/ 0x010cdb, 1, 0x010c9b, /* OLD HUNGARIAN CAPITAL LETTER O */ /*3441*/ 0x010cdc, 1, 0x010c9c, /* OLD HUNGARIAN CAPITAL LETTER OO */ /*3444*/ 0x010cdd, 1, 0x010c9d, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ /*3447*/ 0x010cde, 1, 0x010c9e, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ /*3450*/ 0x010cdf, 1, 0x010c9f, /* OLD HUNGARIAN CAPITAL LETTER OEE */ /*3453*/ 0x010ce0, 1, 0x010ca0, /* OLD HUNGARIAN CAPITAL LETTER EP */ /*3456*/ 0x010ce1, 1, 0x010ca1, /* OLD HUNGARIAN CAPITAL LETTER EMP */ /*3459*/ 0x010ce2, 1, 0x010ca2, /* OLD HUNGARIAN CAPITAL LETTER ER */ /*3462*/ 0x010ce3, 1, 0x010ca3, /* OLD HUNGARIAN CAPITAL LETTER SHOR.. */ /*3465*/ 0x010ce4, 1, 0x010ca4, /* OLD HUNGARIAN CAPITAL LETTER ES */ /*3468*/ 0x010ce5, 1, 0x010ca5, /* OLD HUNGARIAN CAPITAL LETTER ESZ */ /*3471*/ 0x010ce6, 1, 0x010ca6, /* OLD HUNGARIAN CAPITAL LETTER ET */ /*3474*/ 0x010ce7, 1, 0x010ca7, /* OLD HUNGARIAN CAPITAL LETTER ENT */ /*3477*/ 0x010ce8, 1, 0x010ca8, /* OLD HUNGARIAN CAPITAL LETTER ETY */ /*3480*/ 0x010ce9, 1, 0x010ca9, /* OLD HUNGARIAN CAPITAL LETTER ECH */ /*3483*/ 0x010cea, 1, 0x010caa, /* OLD HUNGARIAN CAPITAL LETTER U */ /*3486*/ 0x010ceb, 1, 0x010cab, /* OLD HUNGARIAN CAPITAL LETTER UU */ /*3489*/ 0x010cec, 1, 0x010cac, /* OLD HUNGARIAN CAPITAL LETTER NIKO.. */ /*3492*/ 0x010ced, 1, 0x010cad, /* OLD HUNGARIAN CAPITAL LETTER RUDI.. */ /*3495*/ 0x010cee, 1, 0x010cae, /* OLD HUNGARIAN CAPITAL LETTER EV */ /*3498*/ 0x010cef, 1, 0x010caf, /* OLD HUNGARIAN CAPITAL LETTER EZ */ /*3501*/ 0x010cf0, 1, 0x010cb0, /* OLD HUNGARIAN CAPITAL LETTER EZS */ /*3504*/ 0x010cf1, 1, 0x010cb1, /* OLD HUNGARIAN CAPITAL LETTER ENT-.. */ /*3507*/ 0x010cf2, 1, 0x010cb2, /* OLD HUNGARIAN CAPITAL LETTER US */ /*3510*/ 0x0118c0, 1, 0x0118a0, /* WARANG CITI CAPITAL LETTER NGAA */ /*3513*/ 0x0118c1, 1, 0x0118a1, /* WARANG CITI CAPITAL LETTER A */ /*3516*/ 0x0118c2, 1, 0x0118a2, /* WARANG CITI CAPITAL LETTER WI */ /*3519*/ 0x0118c3, 1, 0x0118a3, /* WARANG CITI CAPITAL LETTER YU */ /*3522*/ 0x0118c4, 1, 0x0118a4, /* WARANG CITI CAPITAL LETTER YA */ /*3525*/ 0x0118c5, 1, 0x0118a5, /* WARANG CITI CAPITAL LETTER YO */ /*3528*/ 0x0118c6, 1, 0x0118a6, /* WARANG CITI CAPITAL LETTER II */ /*3531*/ 0x0118c7, 1, 0x0118a7, /* WARANG CITI CAPITAL LETTER UU */ /*3534*/ 0x0118c8, 1, 0x0118a8, /* WARANG CITI CAPITAL LETTER E */ /*3537*/ 0x0118c9, 1, 0x0118a9, /* WARANG CITI CAPITAL LETTER O */ /*3540*/ 0x0118ca, 1, 0x0118aa, /* WARANG CITI CAPITAL LETTER ANG */ /*3543*/ 0x0118cb, 1, 0x0118ab, /* WARANG CITI CAPITAL LETTER GA */ /*3546*/ 0x0118cc, 1, 0x0118ac, /* WARANG CITI CAPITAL LETTER KO */ /*3549*/ 0x0118cd, 1, 0x0118ad, /* WARANG CITI CAPITAL LETTER ENY */ /*3552*/ 0x0118ce, 1, 0x0118ae, /* WARANG CITI CAPITAL LETTER YUJ */ /*3555*/ 0x0118cf, 1, 0x0118af, /* WARANG CITI CAPITAL LETTER UC */ /*3558*/ 0x0118d0, 1, 0x0118b0, /* WARANG CITI CAPITAL LETTER ENN */ /*3561*/ 0x0118d1, 1, 0x0118b1, /* WARANG CITI CAPITAL LETTER ODD */ /*3564*/ 0x0118d2, 1, 0x0118b2, /* WARANG CITI CAPITAL LETTER TTE */ /*3567*/ 0x0118d3, 1, 0x0118b3, /* WARANG CITI CAPITAL LETTER NUNG */ /*3570*/ 0x0118d4, 1, 0x0118b4, /* WARANG CITI CAPITAL LETTER DA */ /*3573*/ 0x0118d5, 1, 0x0118b5, /* WARANG CITI CAPITAL LETTER AT */ /*3576*/ 0x0118d6, 1, 0x0118b6, /* WARANG CITI CAPITAL LETTER AM */ /*3579*/ 0x0118d7, 1, 0x0118b7, /* WARANG CITI CAPITAL LETTER BU */ /*3582*/ 0x0118d8, 1, 0x0118b8, /* WARANG CITI CAPITAL LETTER PU */ /*3585*/ 0x0118d9, 1, 0x0118b9, /* WARANG CITI CAPITAL LETTER HIYO */ /*3588*/ 0x0118da, 1, 0x0118ba, /* WARANG CITI CAPITAL LETTER HOLO */ /*3591*/ 0x0118db, 1, 0x0118bb, /* WARANG CITI CAPITAL LETTER HORR */ /*3594*/ 0x0118dc, 1, 0x0118bc, /* WARANG CITI CAPITAL LETTER HAR */ /*3597*/ 0x0118dd, 1, 0x0118bd, /* WARANG CITI CAPITAL LETTER SSUU */ /*3600*/ 0x0118de, 1, 0x0118be, /* WARANG CITI CAPITAL LETTER SII */ /*3603*/ 0x0118df, 1, 0x0118bf, /* WARANG CITI CAPITAL LETTER VIYO */ #define FOLDS1_NORMAL_END_INDEX 3606 /* ----- LOCALE ----- */ /*3606*/ 0x0069, 1, 0x0049, /* LATIN CAPITAL LETTER I */ #define FOLDS1_END_INDEX 3609 }; OnigCodePoint OnigUnicodeFolds2[] = { /* LATIN SMALL LETTER A WITH RIGHT HALF RING */ /* 0*/ 0x0061, 0x02be, 1, 0x1e9a, /* LATIN SMALL LIGATURE FF */ /* 4*/ 0x0066, 0x0066, 1, 0xfb00, /* LATIN SMALL LIGATURE FI */ /* 8*/ 0x0066, 0x0069, 1, 0xfb01, /* LATIN SMALL LIGATURE FL */ /* 12*/ 0x0066, 0x006c, 1, 0xfb02, /* LATIN SMALL LETTER H WITH LINE BELOW */ /* 16*/ 0x0068, 0x0331, 1, 0x1e96, /* LATIN SMALL LETTER J WITH CARON */ /* 20*/ 0x006a, 0x030c, 1, 0x01f0, /* LATIN SMALL LETTER SHARP S */ /* 24*/ 0x0073, 0x0073, 2, 0x00df, 0x1e9e, /* LATIN SMALL LIGATURE LONG S T */ /* 29*/ 0x0073, 0x0074, 2, 0xfb05, 0xfb06, /* LATIN SMALL LETTER T WITH DIAERESIS */ /* 34*/ 0x0074, 0x0308, 1, 0x1e97, /* LATIN SMALL LETTER W WITH RING ABOVE */ /* 38*/ 0x0077, 0x030a, 1, 0x1e98, /* LATIN SMALL LETTER Y WITH RING ABOVE */ /* 42*/ 0x0079, 0x030a, 1, 0x1e99, /* LATIN SMALL LETTER N PRECEDED BY APOSTROPHE */ /* 46*/ 0x02bc, 0x006e, 1, 0x0149, /* GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI */ /* 50*/ 0x03ac, 0x03b9, 1, 0x1fb4, /* GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI */ /* 54*/ 0x03ae, 0x03b9, 1, 0x1fc4, /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI */ /* 58*/ 0x03b1, 0x0342, 1, 0x1fb6, /* GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI */ /* 62*/ 0x03b1, 0x03b9, 2, 0x1fb3, 0x1fbc, /* GREEK SMALL LETTER ETA WITH PERISPOMENI */ /* 67*/ 0x03b7, 0x0342, 1, 0x1fc6, /* GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI */ /* 71*/ 0x03b7, 0x03b9, 2, 0x1fc3, 0x1fcc, /* GREEK SMALL LETTER IOTA WITH PERISPOMENI */ /* 76*/ 0x03b9, 0x0342, 1, 0x1fd6, /* GREEK SMALL LETTER RHO WITH PSILI */ /* 80*/ 0x03c1, 0x0313, 1, 0x1fe4, /* GREEK SMALL LETTER UPSILON WITH PSILI */ /* 84*/ 0x03c5, 0x0313, 1, 0x1f50, /* GREEK SMALL LETTER UPSILON WITH PERISPOMENI */ /* 88*/ 0x03c5, 0x0342, 1, 0x1fe6, /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI */ /* 92*/ 0x03c9, 0x0342, 1, 0x1ff6, /* GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI */ /* 96*/ 0x03c9, 0x03b9, 2, 0x1ff3, 0x1ffc, /* GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI */ /* 101*/ 0x03ce, 0x03b9, 1, 0x1ff4, /* ARMENIAN SMALL LIGATURE ECH YIWN */ /* 105*/ 0x0565, 0x0582, 1, 0x0587, /* ARMENIAN SMALL LIGATURE MEN ECH */ /* 109*/ 0x0574, 0x0565, 1, 0xfb14, /* ARMENIAN SMALL LIGATURE MEN INI */ /* 113*/ 0x0574, 0x056b, 1, 0xfb15, /* ARMENIAN SMALL LIGATURE MEN XEH */ /* 117*/ 0x0574, 0x056d, 1, 0xfb17, /* ARMENIAN SMALL LIGATURE MEN NOW */ /* 121*/ 0x0574, 0x0576, 1, 0xfb13, /* ARMENIAN SMALL LIGATURE VEW NOW */ /* 125*/ 0x057e, 0x0576, 1, 0xfb16, /* GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI */ /* 129*/ 0x1f00, 0x03b9, 2, 0x1f80, 0x1f88, /* GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI */ /* 134*/ 0x1f01, 0x03b9, 2, 0x1f81, 0x1f89, /* GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 139*/ 0x1f02, 0x03b9, 2, 0x1f82, 0x1f8a, /* GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 144*/ 0x1f03, 0x03b9, 2, 0x1f83, 0x1f8b, /* GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 149*/ 0x1f04, 0x03b9, 2, 0x1f84, 0x1f8c, /* GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 154*/ 0x1f05, 0x03b9, 2, 0x1f85, 0x1f8d, /* GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 159*/ 0x1f06, 0x03b9, 2, 0x1f86, 0x1f8e, /* GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 164*/ 0x1f07, 0x03b9, 2, 0x1f87, 0x1f8f, /* GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI */ /* 169*/ 0x1f20, 0x03b9, 2, 0x1f90, 0x1f98, /* GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI */ /* 174*/ 0x1f21, 0x03b9, 2, 0x1f91, 0x1f99, /* GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 179*/ 0x1f22, 0x03b9, 2, 0x1f92, 0x1f9a, /* GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 184*/ 0x1f23, 0x03b9, 2, 0x1f93, 0x1f9b, /* GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 189*/ 0x1f24, 0x03b9, 2, 0x1f94, 0x1f9c, /* GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 194*/ 0x1f25, 0x03b9, 2, 0x1f95, 0x1f9d, /* GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 199*/ 0x1f26, 0x03b9, 2, 0x1f96, 0x1f9e, /* GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 204*/ 0x1f27, 0x03b9, 2, 0x1f97, 0x1f9f, /* GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI */ /* 209*/ 0x1f60, 0x03b9, 2, 0x1fa0, 0x1fa8, /* GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI */ /* 214*/ 0x1f61, 0x03b9, 2, 0x1fa1, 0x1fa9, /* GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI */ /* 219*/ 0x1f62, 0x03b9, 2, 0x1fa2, 0x1faa, /* GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI */ /* 224*/ 0x1f63, 0x03b9, 2, 0x1fa3, 0x1fab, /* GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI */ /* 229*/ 0x1f64, 0x03b9, 2, 0x1fa4, 0x1fac, /* GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI */ /* 234*/ 0x1f65, 0x03b9, 2, 0x1fa5, 0x1fad, /* GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI */ /* 239*/ 0x1f66, 0x03b9, 2, 0x1fa6, 0x1fae, /* GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI */ /* 244*/ 0x1f67, 0x03b9, 2, 0x1fa7, 0x1faf, /* GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI */ /* 249*/ 0x1f70, 0x03b9, 1, 0x1fb2, /* GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI */ /* 253*/ 0x1f74, 0x03b9, 1, 0x1fc2, /* GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI */ /* 257*/ 0x1f7c, 0x03b9, 1, 0x1ff2, #define FOLDS2_NORMAL_END_INDEX 261 /* ----- LOCALE ----- */ /* LATIN CAPITAL LETTER I WITH DOT ABOVE */ /* 261*/ 0x0069, 0x0307, 1, 0x0130, #define FOLDS2_END_INDEX 265 }; OnigCodePoint OnigUnicodeFolds3[] = { /* LATIN SMALL LIGATURE FFI */ /* 0*/ 0x0066, 0x0066, 0x0069, 1, 0xfb03, /* LATIN SMALL LIGATURE FFL */ /* 5*/ 0x0066, 0x0066, 0x006c, 1, 0xfb04, /* GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 10*/ 0x03b1, 0x0342, 0x03b9, 1, 0x1fb7, /* GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 15*/ 0x03b7, 0x0342, 0x03b9, 1, 0x1fc7, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA */ /* 20*/ 0x03b9, 0x0308, 0x0300, 1, 0x1fd2, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS */ /* 25*/ 0x03b9, 0x0308, 0x0301, 2, 0x0390, 0x1fd3, /* GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI */ /* 31*/ 0x03b9, 0x0308, 0x0342, 1, 0x1fd7, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA */ /* 36*/ 0x03c5, 0x0308, 0x0300, 1, 0x1fe2, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS */ /* 41*/ 0x03c5, 0x0308, 0x0301, 2, 0x03b0, 0x1fe3, /* GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI */ /* 47*/ 0x03c5, 0x0308, 0x0342, 1, 0x1fe7, /* GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA */ /* 52*/ 0x03c5, 0x0313, 0x0300, 1, 0x1f52, /* GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA */ /* 57*/ 0x03c5, 0x0313, 0x0301, 1, 0x1f54, /* GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI */ /* 62*/ 0x03c5, 0x0313, 0x0342, 1, 0x1f56, /* GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI */ /* 67*/ 0x03c9, 0x0342, 0x03b9, 1, 0x1ff7, #define FOLDS3_NORMAL_END_INDEX 72 /* ----- LOCALE ----- */ #define FOLDS3_END_INDEX 72 }; oniguruma-6.7.0/src/unicode_property_data.c000066400000000000000000020413701321242335200210540ustar00rootroot00000000000000/* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -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) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif /* Generated by make_unicode_property_data.py. */ /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint CR_NEWLINE[] = { 1, 0x000a, 0x000a, }; /* END of CR_NEWLINE */ /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint CR_Alpha[] = { 617, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x065f, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07ca, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b4, 0x08e3, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, 0x09f0, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a70, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0af9, 0x0af9, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d5f, 0x0d63, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b80, 0x1ba9, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 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, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fd, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabea, 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, 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, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 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, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112e8, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x115d8, 0x115dd, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, 0x11700, 0x11719, 0x1171d, 0x1172a, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ static const OnigCodePoint CR_Blank[] = { 8, 0x0009, 0x0009, 0x0020, 0x0020, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Blank */ /* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ static const OnigCodePoint CR_Cntrl[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, }; /* END of CR_Cntrl */ /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint CR_Digit[] = { 51, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0be6, 0x0bef, 0x0c66, 0x0c6f, 0x0ce6, 0x0cef, 0x0d66, 0x0d6f, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f29, 0x1040, 0x1049, 0x1090, 0x1099, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19d9, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0xa620, 0xa629, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x104a0, 0x104a9, 0x11066, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x11730, 0x11739, 0x118e0, 0x118e9, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint CR_Graph[] = { 618, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b4, 0x08e3, 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, 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, 0x0af1, 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, 0x0b77, 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, 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, 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, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x167f, 0x1681, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x200b, 0x2027, 0x202a, 0x202e, 0x2030, 0x205e, 0x2060, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 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, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 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, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 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, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 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, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 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, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Graph */ /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint CR_Lower[] = { 637, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02b8, 0x02c0, 0x02c1, 0x02e0, 0x02e4, 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, 0x037a, 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, 0x03fc, 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, 0x1d00, 0x1dbf, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2170, 0x217f, 0x2184, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7d, 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, 0x2ce4, 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, 0xa69d, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727, 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa731, 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, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Lower */ /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint CR_Print[] = { 615, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b4, 0x08e3, 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, 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, 0x0af1, 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, 0x0b77, 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, 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, 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, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027, 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 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, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 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, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 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, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 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, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 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, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Print */ /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint CR_Punct[] = { 161, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005b, 0x005d, 0x005f, 0x005f, 0x007b, 0x007b, 0x007d, 0x007d, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00ab, 0x00ab, 0x00b6, 0x00b7, 0x00bb, 0x00bb, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x058a, 0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f3a, 0x0f3d, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2010, 0x2027, 0x2030, 0x2043, 0x2045, 0x2051, 0x2053, 0x205e, 0x207d, 0x207e, 0x208d, 0x208e, 0x2308, 0x230b, 0x2329, 0x232a, 0x2768, 0x2775, 0x27c5, 0x27c6, 0x27e6, 0x27ef, 0x2983, 0x2998, 0x29d8, 0x29db, 0x29fc, 0x29fd, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e42, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, 0x3030, 0x3030, 0x303d, 0x303d, 0x30a0, 0x30a0, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa8fc, 0xa8fc, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfd3e, 0xfd3f, 0xfe10, 0xfe19, 0xfe30, 0xfe52, 0xfe54, 0xfe61, 0xfe63, 0xfe63, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff0a, 0xff0c, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3b, 0xff3d, 0xff3f, 0xff3f, 0xff5b, 0xff5b, 0xff5d, 0xff5d, 0xff5f, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c9, 0x111cd, 0x111cd, 0x111db, 0x111db, 0x111dd, 0x111df, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x114c6, 0x114c6, 0x115c1, 0x115d7, 0x11641, 0x11643, 0x1173c, 0x1173e, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, }; /* END of CR_Punct */ /* PROPERTY: 'Space': POSIX [[:Space:]] */ static const OnigCodePoint CR_Space[] = { 10, 0x0009, 0x000d, 0x0020, 0x0020, 0x0085, 0x0085, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x2028, 0x2029, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Space */ /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint CR_Upper[] = { 630, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 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, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 0x1d7ca, 0x1d7ca, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, }; /* END of CR_Upper */ /* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ static const OnigCodePoint CR_XDigit[] = { 3, 0x0030, 0x0039, 0x0041, 0x0046, 0x0061, 0x0066, }; /* END of CR_XDigit */ /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint CR_Word[] = { 654, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 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, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, 0x0483, 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, 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, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abe, 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, 0x20f0, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2e2f, 0x2e2f, 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, 0xa672, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint CR_Alnum[] = { 648, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x0669, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07c0, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b4, 0x08e3, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0966, 0x096f, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 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, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, 0x0af9, 0x0af9, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0be6, 0x0bef, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f20, 0x0f29, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x1090, 0x1099, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1946, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b50, 0x1b59, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 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, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fd, 0xa900, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabea, 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, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 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, 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, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111d0, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112e8, 0x112f0, 0x112f9, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x115d8, 0x115dd, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172a, 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, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ static const OnigCodePoint CR_ASCII[] = { 1, 0x0000, 0x007f, }; /* 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, 0x0000, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b4, 0x08e3, 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, 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, 0x0af1, 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, 0x0b77, 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, 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, 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, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 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, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xd800, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 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, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 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, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 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, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 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, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 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, 0x0000, 0x001f, 0x007f, 0x009f, 0x00ad, 0x00ad, 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, 0x0605, 0x061c, 0x061d, 0x06dd, 0x06dd, 0x070e, 0x070f, 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, 0x180e, 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, 0x200b, 0x200f, 0x202a, 0x202e, 0x2060, 0x206f, 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, 0xff00, 0xffbf, 0xffc1, 0xffc8, 0xffc9, 0xffd0, 0xffd1, 0xffd8, 0xffd9, 0xffdd, 0xffdf, 0xffe7, 0xffe7, 0xffef, 0xfffb, 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, 0x110bd, 0x110bd, 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, 0x1bca0, 0x1cfff, 0x1d0f6, 0x1d0ff, 0x1d127, 0x1d128, 0x1d173, 0x1d17a, 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, 0xe00ff, 0xe01f0, 0x10ffff, }; /* END of CR_C */ /* PROPERTY: 'Canadian_Aboriginal': Script */ static const OnigCodePoint CR_Canadian_Aboriginal[] = { 2, 0x1400, 0x167f, 0x18b0, 0x18f5, }; /* END of CR_Canadian_Aboriginal */ /* PROPERTY: 'Carian': Script */ static const OnigCodePoint CR_Carian[] = { 1, 0x102a0, 0x102d0, }; /* END of CR_Carian */ /* PROPERTY: 'Case_Ignorable': Derived Property */ static const OnigCodePoint CR_Case_Ignorable[] = { 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 /* PROPERTY: 'Cf': General Category */ static const OnigCodePoint CR_Cf[] = { 17, 0x00ad, 0x00ad, 0x0600, 0x0605, 0x061c, 0x061c, 0x06dd, 0x06dd, 0x070f, 0x070f, 0x180e, 0x180e, 0x200b, 0x200f, 0x202a, 0x202e, 0x2060, 0x2064, 0x2066, 0x206f, 0xfeff, 0xfeff, 0xfff9, 0xfffb, 0x110bd, 0x110bd, 0x1bca0, 0x1bca3, 0x1d173, 0x1d17a, 0xe0001, 0xe0001, 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, 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, 0xd7ff, 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, 0xeffff, 0xffffe, 0xfffff, 0x10fffe, 0x10ffff, }; /* END of CR_Cn */ /* PROPERTY: 'Co': General Category */ static const OnigCodePoint CR_Co[] = { 3, 0xe000, 0xf8ff, 0xf0000, 0xffffd, 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, 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, 0x16f1, 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, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2183, 0x2184, 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, 0x2e2f, 0x2e2f, 0x3005, 0x3006, 0x3031, 0x3035, 0x303b, 0x303c, 0x3041, 0x3096, 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, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa67f, 0xa69d, 0xa6a0, 0xa6e5, 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, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f, 0x10330, 0x10340, 0x10342, 0x10349, 0x10350, 0x10375, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, 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, 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_L */ /* PROPERTY: 'LC': General Category */ static const OnigCodePoint CR_LC[] = { 122, 0x0041, 0x005a, 0x0061, 0x007a, 0x00b5, 0x00b5, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x01ba, 0x01bc, 0x01bf, 0x01c4, 0x0293, 0x0295, 0x02af, 0x0370, 0x0373, 0x0376, 0x0377, 0x037b, 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, 0x1d2b, 0x1d6b, 0x1d77, 0x1d79, 0x1d9a, 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, 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, 0x2183, 0x2184, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2c7b, 0x2c7e, 0x2ce4, 0x2ceb, 0x2cee, 0x2cf2, 0x2cf3, 0x2d00, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0xa640, 0xa66d, 0xa680, 0xa69b, 0xa722, 0xa76f, 0xa771, 0xa787, 0xa78b, 0xa78e, 0xa790, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, 0xab60, 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, }; /* 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, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02af, 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, 0x03fc, 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, 0x1d00, 0x1d2b, 0x1d6b, 0x1d77, 0x1d79, 0x1d9a, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2184, 0x2184, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7b, 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, 0x2ce4, 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, 0xa731, 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, 0xa771, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7fa, 0xa7fa, 0xab30, 0xab5a, 0xab60, 0xab65, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Ll */ /* PROPERTY: 'Lm': General Category */ static const OnigCodePoint CR_Lm[] = { 56, 0x02b0, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0374, 0x0374, 0x037a, 0x037a, 0x0559, 0x0559, 0x0640, 0x0640, 0x06e5, 0x06e6, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x081a, 0x081a, 0x0824, 0x0824, 0x0828, 0x0828, 0x0971, 0x0971, 0x0e46, 0x0e46, 0x0ec6, 0x0ec6, 0x10fc, 0x10fc, 0x17d7, 0x17d7, 0x1843, 0x1843, 0x1aa7, 0x1aa7, 0x1c78, 0x1c7d, 0x1d2c, 0x1d6a, 0x1d78, 0x1d78, 0x1d9b, 0x1dbf, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x2c7c, 0x2c7d, 0x2d6f, 0x2d6f, 0x2e2f, 0x2e2f, 0x3005, 0x3005, 0x3031, 0x3035, 0x303b, 0x303b, 0x309d, 0x309e, 0x30fc, 0x30fe, 0xa015, 0xa015, 0xa4f8, 0xa4fd, 0xa60c, 0xa60c, 0xa67f, 0xa67f, 0xa69c, 0xa69d, 0xa717, 0xa71f, 0xa770, 0xa770, 0xa788, 0xa788, 0xa7f8, 0xa7f9, 0xa9cf, 0xa9cf, 0xa9e6, 0xa9e6, 0xaa70, 0xaa70, 0xaadd, 0xaadd, 0xaaf3, 0xaaf4, 0xab5c, 0xab5f, 0xff70, 0xff70, 0xff9e, 0xff9f, 0x16b40, 0x16b43, 0x16f93, 0x16f9f, }; /* END of CR_Lm */ /* PROPERTY: 'Lo': General Category */ static const OnigCodePoint CR_Lo[] = { 433, 0x00aa, 0x00aa, 0x00ba, 0x00ba, 0x01bb, 0x01bb, 0x01c0, 0x01c3, 0x0294, 0x0294, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0620, 0x063f, 0x0641, 0x064a, 0x066e, 0x066f, 0x0671, 0x06d3, 0x06d5, 0x06d5, 0x06ee, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x0710, 0x0712, 0x072f, 0x074d, 0x07a5, 0x07b1, 0x07b1, 0x07ca, 0x07ea, 0x0800, 0x0815, 0x0840, 0x0858, 0x08a0, 0x08b4, 0x0904, 0x0939, 0x093d, 0x093d, 0x0950, 0x0950, 0x0958, 0x0961, 0x0972, 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, 0x0e45, 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, 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, 0x10d0, 0x10fa, 0x10fd, 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, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16f1, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1711, 0x1720, 0x1731, 0x1740, 0x1751, 0x1760, 0x176c, 0x176e, 0x1770, 0x1780, 0x17b3, 0x17dc, 0x17dc, 0x1820, 0x1842, 0x1844, 0x1877, 0x1880, 0x18a8, 0x18aa, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a16, 0x1a20, 0x1a54, 0x1b05, 0x1b33, 0x1b45, 0x1b4b, 0x1b83, 0x1ba0, 0x1bae, 0x1baf, 0x1bba, 0x1be5, 0x1c00, 0x1c23, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c77, 0x1ce9, 0x1cec, 0x1cee, 0x1cf1, 0x1cf5, 0x1cf6, 0x2135, 0x2138, 0x2d30, 0x2d67, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x3006, 0x3006, 0x303c, 0x303c, 0x3041, 0x3096, 0x309f, 0x309f, 0x30a1, 0x30fa, 0x30ff, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fd5, 0xa000, 0xa014, 0xa016, 0xa48c, 0xa4d0, 0xa4f7, 0xa500, 0xa60b, 0xa610, 0xa61f, 0xa62a, 0xa62b, 0xa66e, 0xa66e, 0xa6a0, 0xa6e5, 0xa78f, 0xa78f, 0xa7f7, 0xa7f7, 0xa7fb, 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, 0xa9e0, 0xa9e4, 0xa9e7, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa28, 0xaa40, 0xaa42, 0xaa44, 0xaa4b, 0xaa60, 0xaa6f, 0xaa71, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaaaf, 0xaab1, 0xaab1, 0xaab5, 0xaab6, 0xaab9, 0xaabd, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadc, 0xaae0, 0xaaea, 0xaaf2, 0xaaf2, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xabc0, 0xabe2, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 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, 0xff66, 0xff6f, 0xff71, 0xff9d, 0xffa0, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f, 0x10330, 0x10340, 0x10342, 0x10349, 0x10350, 0x10375, 0x10380, 0x1039d, 0x103a0, 0x103c3, 0x103c8, 0x103cf, 0x10450, 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, 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, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12399, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b2f, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f50, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 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_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, 0x01c5, 0x01c5, 0x01c8, 0x01c8, 0x01cb, 0x01cb, 0x01f2, 0x01f2, 0x1f88, 0x1f8f, 0x1f98, 0x1f9f, 0x1fa8, 0x1faf, 0x1fbc, 0x1fbc, 0x1fcc, 0x1fcc, 0x1ffc, 0x1ffc, }; /* END of CR_Lt */ /* PROPERTY: 'Lu': General Category */ static const OnigCodePoint CR_Lu[] = { 625, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 0x2183, 0x2183, 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, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 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, 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, 0x0903, 0x093a, 0x093c, 0x093e, 0x094f, 0x0951, 0x0957, 0x0962, 0x0963, 0x0981, 0x0983, 0x09bc, 0x09bc, 0x09be, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cd, 0x09d7, 0x09d7, 0x09e2, 0x09e3, 0x0a01, 0x0a03, 0x0a3c, 0x0a3c, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4d, 0x0a51, 0x0a51, 0x0a70, 0x0a71, 0x0a75, 0x0a75, 0x0a81, 0x0a83, 0x0abc, 0x0abc, 0x0abe, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acd, 0x0ae2, 0x0ae3, 0x0b01, 0x0b03, 0x0b3c, 0x0b3c, 0x0b3e, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4d, 0x0b56, 0x0b57, 0x0b62, 0x0b63, 0x0b82, 0x0b82, 0x0bbe, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcd, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c3e, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4d, 0x0c55, 0x0c56, 0x0c62, 0x0c63, 0x0c81, 0x0c83, 0x0cbc, 0x0cbc, 0x0cbe, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccd, 0x0cd5, 0x0cd6, 0x0ce2, 0x0ce3, 0x0d01, 0x0d03, 0x0d3e, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4d, 0x0d57, 0x0d57, 0x0d62, 0x0d63, 0x0d82, 0x0d83, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e31, 0x0e31, 0x0e34, 0x0e3a, 0x0e47, 0x0e4e, 0x0eb1, 0x0eb1, 0x0eb4, 0x0eb9, 0x0ebb, 0x0ebc, 0x0ec8, 0x0ecd, 0x0f18, 0x0f19, 0x0f35, 0x0f35, 0x0f37, 0x0f37, 0x0f39, 0x0f39, 0x0f3e, 0x0f3f, 0x0f71, 0x0f84, 0x0f86, 0x0f87, 0x0f8d, 0x0f97, 0x0f99, 0x0fbc, 0x0fc6, 0x0fc6, 0x102b, 0x103e, 0x1056, 0x1059, 0x105e, 0x1060, 0x1062, 0x1064, 0x1067, 0x106d, 0x1071, 0x1074, 0x1082, 0x108d, 0x108f, 0x108f, 0x109a, 0x109d, 0x135d, 0x135f, 0x1712, 0x1714, 0x1732, 0x1734, 0x1752, 0x1753, 0x1772, 0x1773, 0x17b4, 0x17d3, 0x17dd, 0x17dd, 0x180b, 0x180d, 0x18a9, 0x18a9, 0x1920, 0x192b, 0x1930, 0x193b, 0x1a17, 0x1a1b, 0x1a55, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a7f, 0x1ab0, 0x1abe, 0x1b00, 0x1b04, 0x1b34, 0x1b44, 0x1b6b, 0x1b73, 0x1b80, 0x1b82, 0x1ba1, 0x1bad, 0x1be6, 0x1bf3, 0x1c24, 0x1c37, 0x1cd0, 0x1cd2, 0x1cd4, 0x1ce8, 0x1ced, 0x1ced, 0x1cf2, 0x1cf4, 0x1cf8, 0x1cf9, 0x1dc0, 0x1df5, 0x1dfc, 0x1dff, 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, 0xa823, 0xa827, 0xa880, 0xa881, 0xa8b4, 0xa8c4, 0xa8e0, 0xa8f1, 0xa926, 0xa92d, 0xa947, 0xa953, 0xa980, 0xa983, 0xa9b3, 0xa9c0, 0xa9e5, 0xa9e5, 0xaa29, 0xaa36, 0xaa43, 0xaa43, 0xaa4c, 0xaa4d, 0xaa7b, 0xaa7d, 0xaab0, 0xaab0, 0xaab2, 0xaab4, 0xaab7, 0xaab8, 0xaabe, 0xaabf, 0xaac1, 0xaac1, 0xaaeb, 0xaaef, 0xaaf5, 0xaaf6, 0xabe3, 0xabea, 0xabec, 0xabed, 0xfb1e, 0xfb1e, 0xfe00, 0xfe0f, 0xfe20, 0xfe2f, 0x101fd, 0x101fd, 0x102e0, 0x102e0, 0x10376, 0x1037a, 0x10a01, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a0f, 0x10a38, 0x10a3a, 0x10a3f, 0x10a3f, 0x10ae5, 0x10ae6, 0x11000, 0x11002, 0x11038, 0x11046, 0x1107f, 0x11082, 0x110b0, 0x110ba, 0x11100, 0x11102, 0x11127, 0x11134, 0x11173, 0x11173, 0x11180, 0x11182, 0x111b3, 0x111c0, 0x111ca, 0x111cc, 0x1122c, 0x11237, 0x112df, 0x112ea, 0x11300, 0x11303, 0x1133c, 0x1133c, 0x1133e, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x11362, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x114b0, 0x114c3, 0x115af, 0x115b5, 0x115b8, 0x115c0, 0x115dc, 0x115dd, 0x11630, 0x11640, 0x116ab, 0x116b7, 0x1171d, 0x1172b, 0x16af0, 0x16af4, 0x16b30, 0x16b36, 0x16f51, 0x16f7e, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d165, 0x1d169, 0x1d16d, 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_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, 0x0903, 0x0903, 0x093b, 0x093b, 0x093e, 0x0940, 0x0949, 0x094c, 0x094e, 0x094f, 0x0982, 0x0983, 0x09be, 0x09c0, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09d7, 0x09d7, 0x0a03, 0x0a03, 0x0a3e, 0x0a40, 0x0a83, 0x0a83, 0x0abe, 0x0ac0, 0x0ac9, 0x0ac9, 0x0acb, 0x0acc, 0x0b02, 0x0b03, 0x0b3e, 0x0b3e, 0x0b40, 0x0b40, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b57, 0x0b57, 0x0bbe, 0x0bbf, 0x0bc1, 0x0bc2, 0x0bc6, 0x0bc8, 0x0bca, 0x0bcc, 0x0bd7, 0x0bd7, 0x0c01, 0x0c03, 0x0c41, 0x0c44, 0x0c82, 0x0c83, 0x0cbe, 0x0cbe, 0x0cc0, 0x0cc4, 0x0cc7, 0x0cc8, 0x0cca, 0x0ccb, 0x0cd5, 0x0cd6, 0x0d02, 0x0d03, 0x0d3e, 0x0d40, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d57, 0x0d57, 0x0d82, 0x0d83, 0x0dcf, 0x0dd1, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0f3e, 0x0f3f, 0x0f7f, 0x0f7f, 0x102b, 0x102c, 0x1031, 0x1031, 0x1038, 0x1038, 0x103b, 0x103c, 0x1056, 0x1057, 0x1062, 0x1064, 0x1067, 0x106d, 0x1083, 0x1084, 0x1087, 0x108c, 0x108f, 0x108f, 0x109a, 0x109c, 0x17b6, 0x17b6, 0x17be, 0x17c5, 0x17c7, 0x17c8, 0x1923, 0x1926, 0x1929, 0x192b, 0x1930, 0x1931, 0x1933, 0x1938, 0x1a19, 0x1a1a, 0x1a55, 0x1a55, 0x1a57, 0x1a57, 0x1a61, 0x1a61, 0x1a63, 0x1a64, 0x1a6d, 0x1a72, 0x1b04, 0x1b04, 0x1b35, 0x1b35, 0x1b3b, 0x1b3b, 0x1b3d, 0x1b41, 0x1b43, 0x1b44, 0x1b82, 0x1b82, 0x1ba1, 0x1ba1, 0x1ba6, 0x1ba7, 0x1baa, 0x1baa, 0x1be7, 0x1be7, 0x1bea, 0x1bec, 0x1bee, 0x1bee, 0x1bf2, 0x1bf3, 0x1c24, 0x1c2b, 0x1c34, 0x1c35, 0x1ce1, 0x1ce1, 0x1cf2, 0x1cf3, 0x302e, 0x302f, 0xa823, 0xa824, 0xa827, 0xa827, 0xa880, 0xa881, 0xa8b4, 0xa8c3, 0xa952, 0xa953, 0xa983, 0xa983, 0xa9b4, 0xa9b5, 0xa9ba, 0xa9bb, 0xa9bd, 0xa9c0, 0xaa2f, 0xaa30, 0xaa33, 0xaa34, 0xaa4d, 0xaa4d, 0xaa7b, 0xaa7b, 0xaa7d, 0xaa7d, 0xaaeb, 0xaaeb, 0xaaee, 0xaaef, 0xaaf5, 0xaaf5, 0xabe3, 0xabe4, 0xabe6, 0xabe7, 0xabe9, 0xabea, 0xabec, 0xabec, 0x11000, 0x11000, 0x11002, 0x11002, 0x11082, 0x11082, 0x110b0, 0x110b2, 0x110b7, 0x110b8, 0x1112c, 0x1112c, 0x11182, 0x11182, 0x111b3, 0x111b5, 0x111bf, 0x111c0, 0x1122c, 0x1122e, 0x11232, 0x11233, 0x11235, 0x11235, 0x112e0, 0x112e2, 0x11302, 0x11303, 0x1133e, 0x1133f, 0x11341, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11357, 0x11357, 0x11362, 0x11363, 0x114b0, 0x114b2, 0x114b9, 0x114b9, 0x114bb, 0x114be, 0x114c1, 0x114c1, 0x115af, 0x115b1, 0x115b8, 0x115bb, 0x115be, 0x115be, 0x11630, 0x11632, 0x1163b, 0x1163c, 0x1163e, 0x1163e, 0x116ac, 0x116ac, 0x116ae, 0x116af, 0x116b6, 0x116b6, 0x11720, 0x11721, 0x11726, 0x11726, 0x16f51, 0x16f7e, 0x1d165, 0x1d166, 0x1d16d, 0x1d172, }; /* END of CR_Mc */ /* PROPERTY: 'Me': General Category */ static const OnigCodePoint CR_Me[] = { 5, 0x0488, 0x0489, 0x1abe, 0x1abe, 0x20dd, 0x20e0, 0x20e2, 0x20e4, 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, 0x0300, 0x036f, 0x0483, 0x0487, 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, 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, 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, 0x1abd, 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, 0x20d0, 0x20dc, 0x20e1, 0x20e1, 0x20e5, 0x20f0, 0x2cef, 0x2cf1, 0x2d7f, 0x2d7f, 0x2de0, 0x2dff, 0x302a, 0x302d, 0x3099, 0x309a, 0xa66f, 0xa66f, 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, 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, 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, 0x16f8f, 0x16f92, 0x1bc9d, 0x1bc9e, 0x1d167, 0x1d169, 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_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, 0x0030, 0x0039, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x09f4, 0x09f9, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0b72, 0x0b77, 0x0be6, 0x0bf2, 0x0c66, 0x0c6f, 0x0c78, 0x0c7e, 0x0ce6, 0x0cef, 0x0d66, 0x0d75, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f33, 0x1040, 0x1049, 0x1090, 0x1099, 0x1369, 0x137c, 0x16ee, 0x16f0, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19da, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0x2070, 0x2070, 0x2074, 0x2079, 0x2080, 0x2089, 0x2150, 0x2182, 0x2185, 0x2189, 0x2460, 0x249b, 0x24ea, 0x24ff, 0x2776, 0x2793, 0x2cfd, 0x2cfd, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, 0x3192, 0x3195, 0x3220, 0x3229, 0x3248, 0x324f, 0x3251, 0x325f, 0x3280, 0x3289, 0x32b1, 0x32bf, 0xa620, 0xa629, 0xa6e6, 0xa6ef, 0xa830, 0xa835, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x10107, 0x10133, 0x10140, 0x10178, 0x1018a, 0x1018b, 0x102e1, 0x102fb, 0x10320, 0x10323, 0x10341, 0x10341, 0x1034a, 0x1034a, 0x103d1, 0x103d5, 0x104a0, 0x104a9, 0x10858, 0x1085f, 0x10879, 0x1087f, 0x108a7, 0x108af, 0x108fb, 0x108ff, 0x10916, 0x1091b, 0x109bc, 0x109bd, 0x109c0, 0x109cf, 0x109d2, 0x109ff, 0x10a40, 0x10a47, 0x10a7d, 0x10a7e, 0x10a9d, 0x10a9f, 0x10aeb, 0x10aef, 0x10b58, 0x10b5f, 0x10b78, 0x10b7f, 0x10ba9, 0x10baf, 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11052, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x111e1, 0x111f4, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x11730, 0x1173b, 0x118e0, 0x118f2, 0x12400, 0x1246e, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x1d360, 0x1d371, 0x1d7ce, 0x1d7ff, 0x1e8c7, 0x1e8cf, 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, 0x16ee, 0x16f0, 0x2160, 0x2182, 0x2185, 0x2188, 0x3007, 0x3007, 0x3021, 0x3029, 0x3038, 0x303a, 0xa6e6, 0xa6ef, 0x10140, 0x10174, 0x10341, 0x10341, 0x1034a, 0x1034a, 0x103d1, 0x103d5, 0x12400, 0x1246e, }; /* END of CR_Nl */ /* PROPERTY: 'No': General Category */ static const OnigCodePoint CR_No[] = { 58, 0x00b2, 0x00b3, 0x00b9, 0x00b9, 0x00bc, 0x00be, 0x09f4, 0x09f9, 0x0b72, 0x0b77, 0x0bf0, 0x0bf2, 0x0c78, 0x0c7e, 0x0d70, 0x0d75, 0x0f2a, 0x0f33, 0x1369, 0x137c, 0x17f0, 0x17f9, 0x19da, 0x19da, 0x2070, 0x2070, 0x2074, 0x2079, 0x2080, 0x2089, 0x2150, 0x215f, 0x2189, 0x2189, 0x2460, 0x249b, 0x24ea, 0x24ff, 0x2776, 0x2793, 0x2cfd, 0x2cfd, 0x3192, 0x3195, 0x3220, 0x3229, 0x3248, 0x324f, 0x3251, 0x325f, 0x3280, 0x3289, 0x32b1, 0x32bf, 0xa830, 0xa835, 0x10107, 0x10133, 0x10175, 0x10178, 0x1018a, 0x1018b, 0x102e1, 0x102fb, 0x10320, 0x10323, 0x10858, 0x1085f, 0x10879, 0x1087f, 0x108a7, 0x108af, 0x108fb, 0x108ff, 0x10916, 0x1091b, 0x109bc, 0x109bd, 0x109c0, 0x109cf, 0x109d2, 0x109ff, 0x10a40, 0x10a47, 0x10a7d, 0x10a7e, 0x10a9d, 0x10a9f, 0x10aeb, 0x10aef, 0x10b58, 0x10b5f, 0x10b78, 0x10b7f, 0x10ba9, 0x10baf, 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11052, 0x11065, 0x111e1, 0x111f4, 0x1173a, 0x1173b, 0x118ea, 0x118f2, 0x16b5b, 0x16b61, 0x1d360, 0x1d371, 0x1e8c7, 0x1e8cf, 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, 0x005f, 0x005f, 0x203f, 0x2040, 0x2054, 0x2054, 0xfe33, 0xfe34, 0xfe4d, 0xfe4f, 0xff3f, 0xff3f, }; /* END of CR_Pc */ /* PROPERTY: 'Pd': General Category */ static const OnigCodePoint CR_Pd[] = { 17, 0x002d, 0x002d, 0x058a, 0x058a, 0x05be, 0x05be, 0x1400, 0x1400, 0x1806, 0x1806, 0x2010, 0x2015, 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_Pd */ /* PROPERTY: 'Pe': General Category */ static const OnigCodePoint CR_Pe[] = { 72, 0x0029, 0x0029, 0x005d, 0x005d, 0x007d, 0x007d, 0x0f3b, 0x0f3b, 0x0f3d, 0x0f3d, 0x169c, 0x169c, 0x2046, 0x2046, 0x207e, 0x207e, 0x208e, 0x208e, 0x2309, 0x2309, 0x230b, 0x230b, 0x232a, 0x232a, 0x2769, 0x2769, 0x276b, 0x276b, 0x276d, 0x276d, 0x276f, 0x276f, 0x2771, 0x2771, 0x2773, 0x2773, 0x2775, 0x2775, 0x27c6, 0x27c6, 0x27e7, 0x27e7, 0x27e9, 0x27e9, 0x27eb, 0x27eb, 0x27ed, 0x27ed, 0x27ef, 0x27ef, 0x2984, 0x2984, 0x2986, 0x2986, 0x2988, 0x2988, 0x298a, 0x298a, 0x298c, 0x298c, 0x298e, 0x298e, 0x2990, 0x2990, 0x2992, 0x2992, 0x2994, 0x2994, 0x2996, 0x2996, 0x2998, 0x2998, 0x29d9, 0x29d9, 0x29db, 0x29db, 0x29fd, 0x29fd, 0x2e23, 0x2e23, 0x2e25, 0x2e25, 0x2e27, 0x2e27, 0x2e29, 0x2e29, 0x3009, 0x3009, 0x300b, 0x300b, 0x300d, 0x300d, 0x300f, 0x300f, 0x3011, 0x3011, 0x3015, 0x3015, 0x3017, 0x3017, 0x3019, 0x3019, 0x301b, 0x301b, 0x301e, 0x301f, 0xfd3e, 0xfd3e, 0xfe18, 0xfe18, 0xfe36, 0xfe36, 0xfe38, 0xfe38, 0xfe3a, 0xfe3a, 0xfe3c, 0xfe3c, 0xfe3e, 0xfe3e, 0xfe40, 0xfe40, 0xfe42, 0xfe42, 0xfe44, 0xfe44, 0xfe48, 0xfe48, 0xfe5a, 0xfe5a, 0xfe5c, 0xfe5c, 0xfe5e, 0xfe5e, 0xff09, 0xff09, 0xff3d, 0xff3d, 0xff5d, 0xff5d, 0xff60, 0xff60, 0xff63, 0xff63, }; /* END of CR_Pe */ /* PROPERTY: 'Pf': General Category */ static const OnigCodePoint CR_Pf[] = { 10, 0x00bb, 0x00bb, 0x2019, 0x2019, 0x201d, 0x201d, 0x203a, 0x203a, 0x2e03, 0x2e03, 0x2e05, 0x2e05, 0x2e0a, 0x2e0a, 0x2e0d, 0x2e0d, 0x2e1d, 0x2e1d, 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, 0x00ab, 0x00ab, 0x2018, 0x2018, 0x201b, 0x201c, 0x201f, 0x201f, 0x2039, 0x2039, 0x2e02, 0x2e02, 0x2e04, 0x2e04, 0x2e09, 0x2e09, 0x2e0c, 0x2e0c, 0x2e1c, 0x2e1c, 0x2e20, 0x2e20, }; /* END of CR_Pi */ /* PROPERTY: 'Po': General Category */ static const OnigCodePoint CR_Po[] = { 157, 0x0021, 0x0023, 0x0025, 0x0027, 0x002a, 0x002a, 0x002c, 0x002c, 0x002e, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005c, 0x005c, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00b6, 0x00b7, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x0589, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x166d, 0x166e, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x1805, 0x1807, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2016, 0x2017, 0x2020, 0x2027, 0x2030, 0x2038, 0x203b, 0x203e, 0x2041, 0x2043, 0x2047, 0x2051, 0x2053, 0x2053, 0x2055, 0x205e, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e01, 0x2e06, 0x2e08, 0x2e0b, 0x2e0b, 0x2e0e, 0x2e16, 0x2e18, 0x2e19, 0x2e1b, 0x2e1b, 0x2e1e, 0x2e1f, 0x2e2a, 0x2e2e, 0x2e30, 0x2e39, 0x2e3c, 0x2e3f, 0x2e41, 0x2e41, 0x3001, 0x3003, 0x303d, 0x303d, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa8fc, 0xa8fc, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfe10, 0xfe16, 0xfe19, 0xfe19, 0xfe30, 0xfe30, 0xfe45, 0xfe46, 0xfe49, 0xfe4c, 0xfe50, 0xfe52, 0xfe54, 0xfe57, 0xfe5f, 0xfe61, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff07, 0xff0a, 0xff0a, 0xff0c, 0xff0c, 0xff0e, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3c, 0xff3c, 0xff61, 0xff61, 0xff64, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c9, 0x111cd, 0x111cd, 0x111db, 0x111db, 0x111dd, 0x111df, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x114c6, 0x114c6, 0x115c1, 0x115d7, 0x11641, 0x11643, 0x1173c, 0x1173e, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, }; /* END of CR_Po */ /* PROPERTY: 'Ps': General Category */ static const OnigCodePoint CR_Ps[] = { 75, 0x0028, 0x0028, 0x005b, 0x005b, 0x007b, 0x007b, 0x0f3a, 0x0f3a, 0x0f3c, 0x0f3c, 0x169b, 0x169b, 0x201a, 0x201a, 0x201e, 0x201e, 0x2045, 0x2045, 0x207d, 0x207d, 0x208d, 0x208d, 0x2308, 0x2308, 0x230a, 0x230a, 0x2329, 0x2329, 0x2768, 0x2768, 0x276a, 0x276a, 0x276c, 0x276c, 0x276e, 0x276e, 0x2770, 0x2770, 0x2772, 0x2772, 0x2774, 0x2774, 0x27c5, 0x27c5, 0x27e6, 0x27e6, 0x27e8, 0x27e8, 0x27ea, 0x27ea, 0x27ec, 0x27ec, 0x27ee, 0x27ee, 0x2983, 0x2983, 0x2985, 0x2985, 0x2987, 0x2987, 0x2989, 0x2989, 0x298b, 0x298b, 0x298d, 0x298d, 0x298f, 0x298f, 0x2991, 0x2991, 0x2993, 0x2993, 0x2995, 0x2995, 0x2997, 0x2997, 0x29d8, 0x29d8, 0x29da, 0x29da, 0x29fc, 0x29fc, 0x2e22, 0x2e22, 0x2e24, 0x2e24, 0x2e26, 0x2e26, 0x2e28, 0x2e28, 0x2e42, 0x2e42, 0x3008, 0x3008, 0x300a, 0x300a, 0x300c, 0x300c, 0x300e, 0x300e, 0x3010, 0x3010, 0x3014, 0x3014, 0x3016, 0x3016, 0x3018, 0x3018, 0x301a, 0x301a, 0x301d, 0x301d, 0xfd3f, 0xfd3f, 0xfe17, 0xfe17, 0xfe35, 0xfe35, 0xfe37, 0xfe37, 0xfe39, 0xfe39, 0xfe3b, 0xfe3b, 0xfe3d, 0xfe3d, 0xfe3f, 0xfe3f, 0xfe41, 0xfe41, 0xfe43, 0xfe43, 0xfe47, 0xfe47, 0xfe59, 0xfe59, 0xfe5b, 0xfe5b, 0xfe5d, 0xfe5d, 0xff08, 0xff08, 0xff3b, 0xff3b, 0xff5b, 0xff5b, 0xff5f, 0xff5f, 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, 0x0024, 0x0024, 0x002b, 0x002b, 0x003c, 0x003e, 0x005e, 0x005e, 0x0060, 0x0060, 0x007c, 0x007c, 0x007e, 0x007e, 0x00a2, 0x00a6, 0x00a8, 0x00a9, 0x00ac, 0x00ac, 0x00ae, 0x00b1, 0x00b4, 0x00b4, 0x00b8, 0x00b8, 0x00d7, 0x00d7, 0x00f7, 0x00f7, 0x02c2, 0x02c5, 0x02d2, 0x02df, 0x02e5, 0x02eb, 0x02ed, 0x02ed, 0x02ef, 0x02ff, 0x0375, 0x0375, 0x0384, 0x0385, 0x03f6, 0x03f6, 0x0482, 0x0482, 0x058d, 0x058f, 0x0606, 0x0608, 0x060b, 0x060b, 0x060e, 0x060f, 0x06de, 0x06de, 0x06e9, 0x06e9, 0x06fd, 0x06fe, 0x07f6, 0x07f6, 0x09f2, 0x09f3, 0x09fa, 0x09fb, 0x0af1, 0x0af1, 0x0b70, 0x0b70, 0x0bf3, 0x0bfa, 0x0c7f, 0x0c7f, 0x0d79, 0x0d79, 0x0e3f, 0x0e3f, 0x0f01, 0x0f03, 0x0f13, 0x0f13, 0x0f15, 0x0f17, 0x0f1a, 0x0f1f, 0x0f34, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fce, 0x0fcf, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, 0x17db, 0x17db, 0x1940, 0x1940, 0x19de, 0x19ff, 0x1b61, 0x1b6a, 0x1b74, 0x1b7c, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, 0x2044, 0x2044, 0x2052, 0x2052, 0x207a, 0x207c, 0x208a, 0x208c, 0x20a0, 0x20be, 0x2100, 0x2101, 0x2103, 0x2106, 0x2108, 0x2109, 0x2114, 0x2114, 0x2116, 0x2118, 0x211e, 0x2123, 0x2125, 0x2125, 0x2127, 0x2127, 0x2129, 0x2129, 0x212e, 0x212e, 0x213a, 0x213b, 0x2140, 0x2144, 0x214a, 0x214d, 0x214f, 0x214f, 0x218a, 0x218b, 0x2190, 0x2307, 0x230c, 0x2328, 0x232b, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x249c, 0x24e9, 0x2500, 0x2767, 0x2794, 0x27c4, 0x27c7, 0x27e5, 0x27f0, 0x2982, 0x2999, 0x29d7, 0x29dc, 0x29fb, 0x29fe, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2bec, 0x2bef, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3004, 0x3004, 0x3012, 0x3013, 0x3020, 0x3020, 0x3036, 0x3037, 0x303e, 0x303f, 0x309b, 0x309c, 0x3190, 0x3191, 0x3196, 0x319f, 0x31c0, 0x31e3, 0x3200, 0x321e, 0x322a, 0x3247, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, 0x32c0, 0x32fe, 0x3300, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa700, 0xa716, 0xa720, 0xa721, 0xa789, 0xa78a, 0xa828, 0xa82b, 0xa836, 0xa839, 0xaa77, 0xaa79, 0xab5b, 0xab5b, 0xfb29, 0xfb29, 0xfbb2, 0xfbc1, 0xfdfc, 0xfdfd, 0xfe62, 0xfe62, 0xfe64, 0xfe66, 0xfe69, 0xfe69, 0xff04, 0xff04, 0xff0b, 0xff0b, 0xff1c, 0xff1e, 0xff3e, 0xff3e, 0xff40, 0xff40, 0xff5c, 0xff5c, 0xff5e, 0xff5e, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfffc, 0xfffd, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018c, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x1173f, 0x1173f, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d164, 0x1d16a, 0x1d16c, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1e8, 0x1d200, 0x1d241, 0x1d245, 0x1d245, 0x1d300, 0x1d356, 0x1d6c1, 0x1d6c1, 0x1d6db, 0x1d6db, 0x1d6fb, 0x1d6fb, 0x1d715, 0x1d715, 0x1d735, 0x1d735, 0x1d74f, 0x1d74f, 0x1d76f, 0x1d76f, 0x1d789, 0x1d789, 0x1d7a9, 0x1d7a9, 0x1d7c3, 0x1d7c3, 0x1d800, 0x1d9ff, 0x1da37, 0x1da3a, 0x1da6d, 0x1da74, 0x1da76, 0x1da83, 0x1da85, 0x1da86, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 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, }; /* 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, 0x0024, 0x0024, 0x00a2, 0x00a5, 0x058f, 0x058f, 0x060b, 0x060b, 0x09f2, 0x09f3, 0x09fb, 0x09fb, 0x0af1, 0x0af1, 0x0bf9, 0x0bf9, 0x0e3f, 0x0e3f, 0x17db, 0x17db, 0x20a0, 0x20be, 0xa838, 0xa838, 0xfdfc, 0xfdfc, 0xfe69, 0xfe69, 0xff04, 0xff04, 0xffe0, 0xffe1, 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, 0x005e, 0x005e, 0x0060, 0x0060, 0x00a8, 0x00a8, 0x00af, 0x00af, 0x00b4, 0x00b4, 0x00b8, 0x00b8, 0x02c2, 0x02c5, 0x02d2, 0x02df, 0x02e5, 0x02eb, 0x02ed, 0x02ed, 0x02ef, 0x02ff, 0x0375, 0x0375, 0x0384, 0x0385, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf, 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, 0x309b, 0x309c, 0xa700, 0xa716, 0xa720, 0xa721, 0xa789, 0xa78a, 0xab5b, 0xab5b, 0xfbb2, 0xfbc1, 0xff3e, 0xff3e, 0xff40, 0xff40, 0xffe3, 0xffe3, 0x1f3fb, 0x1f3ff, }; /* END of CR_Sk */ /* PROPERTY: 'Sm': General Category */ static const OnigCodePoint CR_Sm[] = { 64, 0x002b, 0x002b, 0x003c, 0x003e, 0x007c, 0x007c, 0x007e, 0x007e, 0x00ac, 0x00ac, 0x00b1, 0x00b1, 0x00d7, 0x00d7, 0x00f7, 0x00f7, 0x03f6, 0x03f6, 0x0606, 0x0608, 0x2044, 0x2044, 0x2052, 0x2052, 0x207a, 0x207c, 0x208a, 0x208c, 0x2118, 0x2118, 0x2140, 0x2144, 0x214b, 0x214b, 0x2190, 0x2194, 0x219a, 0x219b, 0x21a0, 0x21a0, 0x21a3, 0x21a3, 0x21a6, 0x21a6, 0x21ae, 0x21ae, 0x21ce, 0x21cf, 0x21d2, 0x21d2, 0x21d4, 0x21d4, 0x21f4, 0x22ff, 0x2320, 0x2321, 0x237c, 0x237c, 0x239b, 0x23b3, 0x23dc, 0x23e1, 0x25b7, 0x25b7, 0x25c1, 0x25c1, 0x25f8, 0x25ff, 0x266f, 0x266f, 0x27c0, 0x27c4, 0x27c7, 0x27e5, 0x27f0, 0x27ff, 0x2900, 0x2982, 0x2999, 0x29d7, 0x29dc, 0x29fb, 0x29fe, 0x2aff, 0x2b30, 0x2b44, 0x2b47, 0x2b4c, 0xfb29, 0xfb29, 0xfe62, 0xfe62, 0xfe64, 0xfe66, 0xff0b, 0xff0b, 0xff1c, 0xff1e, 0xff5c, 0xff5c, 0xff5e, 0xff5e, 0xffe2, 0xffe2, 0xffe9, 0xffec, 0x1d6c1, 0x1d6c1, 0x1d6db, 0x1d6db, 0x1d6fb, 0x1d6fb, 0x1d715, 0x1d715, 0x1d735, 0x1d735, 0x1d74f, 0x1d74f, 0x1d76f, 0x1d76f, 0x1d789, 0x1d789, 0x1d7a9, 0x1d7a9, 0x1d7c3, 0x1d7c3, 0x1eef0, 0x1eef1, }; /* END of CR_Sm */ /* PROPERTY: 'So': General Category */ static const OnigCodePoint CR_So[] = { 170, 0x00a6, 0x00a6, 0x00a9, 0x00a9, 0x00ae, 0x00ae, 0x00b0, 0x00b0, 0x0482, 0x0482, 0x058d, 0x058e, 0x060e, 0x060f, 0x06de, 0x06de, 0x06e9, 0x06e9, 0x06fd, 0x06fe, 0x07f6, 0x07f6, 0x09fa, 0x09fa, 0x0b70, 0x0b70, 0x0bf3, 0x0bf8, 0x0bfa, 0x0bfa, 0x0c7f, 0x0c7f, 0x0d79, 0x0d79, 0x0f01, 0x0f03, 0x0f13, 0x0f13, 0x0f15, 0x0f17, 0x0f1a, 0x0f1f, 0x0f34, 0x0f34, 0x0f36, 0x0f36, 0x0f38, 0x0f38, 0x0fbe, 0x0fc5, 0x0fc7, 0x0fcc, 0x0fce, 0x0fcf, 0x0fd5, 0x0fd8, 0x109e, 0x109f, 0x1390, 0x1399, 0x1940, 0x1940, 0x19de, 0x19ff, 0x1b61, 0x1b6a, 0x1b74, 0x1b7c, 0x2100, 0x2101, 0x2103, 0x2106, 0x2108, 0x2109, 0x2114, 0x2114, 0x2116, 0x2117, 0x211e, 0x2123, 0x2125, 0x2125, 0x2127, 0x2127, 0x2129, 0x2129, 0x212e, 0x212e, 0x213a, 0x213b, 0x214a, 0x214a, 0x214c, 0x214d, 0x214f, 0x214f, 0x218a, 0x218b, 0x2195, 0x2199, 0x219c, 0x219f, 0x21a1, 0x21a2, 0x21a4, 0x21a5, 0x21a7, 0x21ad, 0x21af, 0x21cd, 0x21d0, 0x21d1, 0x21d3, 0x21d3, 0x21d5, 0x21f3, 0x2300, 0x2307, 0x230c, 0x231f, 0x2322, 0x2328, 0x232b, 0x237b, 0x237d, 0x239a, 0x23b4, 0x23db, 0x23e2, 0x23fa, 0x2400, 0x2426, 0x2440, 0x244a, 0x249c, 0x24e9, 0x2500, 0x25b6, 0x25b8, 0x25c0, 0x25c2, 0x25f7, 0x2600, 0x266e, 0x2670, 0x2767, 0x2794, 0x27bf, 0x2800, 0x28ff, 0x2b00, 0x2b2f, 0x2b45, 0x2b46, 0x2b4d, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2bec, 0x2bef, 0x2ce5, 0x2cea, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3004, 0x3004, 0x3012, 0x3013, 0x3020, 0x3020, 0x3036, 0x3037, 0x303e, 0x303f, 0x3190, 0x3191, 0x3196, 0x319f, 0x31c0, 0x31e3, 0x3200, 0x321e, 0x322a, 0x3247, 0x3250, 0x3250, 0x3260, 0x327f, 0x328a, 0x32b0, 0x32c0, 0x32fe, 0x3300, 0x33ff, 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa828, 0xa82b, 0xa836, 0xa837, 0xa839, 0xa839, 0xaa77, 0xaa79, 0xfdfd, 0xfdfd, 0xffe4, 0xffe4, 0xffe8, 0xffe8, 0xffed, 0xffee, 0xfffc, 0xfffd, 0x10137, 0x1013f, 0x10179, 0x10189, 0x1018c, 0x1018c, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fc, 0x10877, 0x10878, 0x10ac8, 0x10ac8, 0x1173f, 0x1173f, 0x16b3c, 0x16b3f, 0x16b45, 0x16b45, 0x1bc9c, 0x1bc9c, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d164, 0x1d16a, 0x1d16c, 0x1d183, 0x1d184, 0x1d18c, 0x1d1a9, 0x1d1ae, 0x1d1e8, 0x1d200, 0x1d241, 0x1d245, 0x1d245, 0x1d300, 0x1d356, 0x1d800, 0x1d9ff, 0x1da37, 0x1da3a, 0x1da6d, 0x1da74, 0x1da76, 0x1da83, 0x1da85, 0x1da86, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b, 0x1f170, 0x1f19a, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23a, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f3fa, 0x1f400, 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, }; /* END of CR_So */ /* 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: 'Sora_Sompeng': Script */ static const OnigCodePoint CR_Sora_Sompeng[] = { 2, 0x110d0, 0x110e8, 0x110f0, 0x110f9, }; /* END of CR_Sora_Sompeng */ /* PROPERTY: 'Sundanese': Script */ static const OnigCodePoint CR_Sundanese[] = { 2, 0x1b80, 0x1bbf, 0x1cc0, 0x1cc7, }; /* END of CR_Sundanese */ /* PROPERTY: 'Syloti_Nagri': Script */ static const OnigCodePoint CR_Syloti_Nagri[] = { 1, 0xa800, 0xa82b, }; /* END of CR_Syloti_Nagri */ /* PROPERTY: 'Syriac': Script */ static const OnigCodePoint CR_Syriac[] = { 3, 0x0700, 0x070d, 0x070f, 0x074a, 0x074d, 0x074f, }; /* END of CR_Syriac */ /* PROPERTY: 'Tagalog': Script */ static const OnigCodePoint CR_Tagalog[] = { 2, 0x1700, 0x170c, 0x170e, 0x1714, }; /* END of CR_Tagalog */ /* PROPERTY: 'Tagbanwa': Script */ static const OnigCodePoint CR_Tagbanwa[] = { 3, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, }; /* END of CR_Tagbanwa */ /* PROPERTY: 'Tai_Le': Script */ static const OnigCodePoint CR_Tai_Le[] = { 2, 0x1950, 0x196d, 0x1970, 0x1974, }; /* END of CR_Tai_Le */ /* 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: 'Takri': Script */ static const OnigCodePoint CR_Takri[] = { 2, 0x11680, 0x116b7, 0x116c0, 0x116c9, }; /* END of CR_Takri */ /* 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: '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, 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, 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, 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: '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 */ /* 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, 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: 'XID_Start': Derived Property */ static const OnigCodePoint CR_XID_Start[] = { 562, 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, 0x037b, 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, 0x0e32, 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, 0x0eb2, 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, 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, 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, 0xfc5d, 0xfc64, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdf9, 0xfe71, 0xfe71, 0xfe73, 0xfe73, 0xfe77, 0xfe77, 0xfe79, 0xfe79, 0xfe7b, 0xfe7b, 0xfe7d, 0xfe7d, 0xfe7f, 0xfefc, 0xff21, 0xff3a, 0xff41, 0xff5a, 0xff66, 0xff9d, 0xffa0, 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_XID_Start */ /* PROPERTY: 'Yi': Script */ static const OnigCodePoint CR_Yi[] = { 2, 0xa000, 0xa48c, 0xa490, 0xa4c6, }; /* END of CR_Yi */ /* PROPERTY: 'Z': Major Category */ 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 */ /* PROPERTY: 'Zl': General Category */ static const OnigCodePoint CR_Zl[] = { 1, 0x2028, 0x2028, }; /* END of CR_Zl */ /* PROPERTY: 'Zp': General Category */ static const OnigCodePoint CR_Zp[] = { 1, 0x2029, 0x2029, }; /* END of CR_Zp */ /* PROPERTY: 'Zs': General Category */ static const OnigCodePoint CR_Zs[] = { 7, 0x0020, 0x0020, 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 /* PROPERTY: 'In_Latin_1_Supplement': Block */ static const OnigCodePoint CR_In_Latin_1_Supplement[] = { 1, 0x0080, 0x00ff, }; /* END of CR_In_Latin_1_Supplement */ /* PROPERTY: 'In_Latin_Extended_A': Block */ static const OnigCodePoint CR_In_Latin_Extended_A[] = { 1, 0x0100, 0x017f, }; /* END of CR_In_Latin_Extended_A */ /* PROPERTY: 'In_Latin_Extended_B': Block */ static const OnigCodePoint CR_In_Latin_Extended_B[] = { 1, 0x0180, 0x024f, }; /* END of CR_In_Latin_Extended_B */ /* PROPERTY: 'In_IPA_Extensions': Block */ static const OnigCodePoint CR_In_IPA_Extensions[] = { 1, 0x0250, 0x02af, }; /* END of CR_In_IPA_Extensions */ /* PROPERTY: 'In_Spacing_Modifier_Letters': Block */ static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = { 1, 0x02b0, 0x02ff, }; /* END of CR_In_Spacing_Modifier_Letters */ /* PROPERTY: 'In_Combining_Diacritical_Marks': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = { 1, 0x0300, 0x036f, }; /* END of CR_In_Combining_Diacritical_Marks */ /* PROPERTY: 'In_Greek_and_Coptic': Block */ static const OnigCodePoint CR_In_Greek_and_Coptic[] = { 1, 0x0370, 0x03ff, }; /* END of CR_In_Greek_and_Coptic */ /* PROPERTY: 'In_Cyrillic': Block */ static const OnigCodePoint CR_In_Cyrillic[] = { 1, 0x0400, 0x04ff, }; /* END of CR_In_Cyrillic */ /* PROPERTY: 'In_Cyrillic_Supplement': Block */ static const OnigCodePoint CR_In_Cyrillic_Supplement[] = { 1, 0x0500, 0x052f, }; /* END of CR_In_Cyrillic_Supplement */ /* PROPERTY: 'In_Armenian': Block */ static const OnigCodePoint CR_In_Armenian[] = { 1, 0x0530, 0x058f, }; /* END of CR_In_Armenian */ /* PROPERTY: 'In_Hebrew': Block */ static const OnigCodePoint CR_In_Hebrew[] = { 1, 0x0590, 0x05ff, }; /* END of CR_In_Hebrew */ /* PROPERTY: 'In_Arabic': Block */ static const OnigCodePoint CR_In_Arabic[] = { 1, 0x0600, 0x06ff, }; /* END of CR_In_Arabic */ /* PROPERTY: 'In_Syriac': Block */ static const OnigCodePoint CR_In_Syriac[] = { 1, 0x0700, 0x074f, }; /* END of CR_In_Syriac */ /* PROPERTY: 'In_Arabic_Supplement': Block */ static const OnigCodePoint CR_In_Arabic_Supplement[] = { 1, 0x0750, 0x077f, }; /* END of CR_In_Arabic_Supplement */ /* PROPERTY: 'In_Thaana': Block */ static const OnigCodePoint CR_In_Thaana[] = { 1, 0x0780, 0x07bf, }; /* END of CR_In_Thaana */ /* PROPERTY: 'In_NKo': Block */ static const OnigCodePoint CR_In_NKo[] = { 1, 0x07c0, 0x07ff, }; /* END of CR_In_NKo */ /* PROPERTY: 'In_Samaritan': Block */ static const OnigCodePoint CR_In_Samaritan[] = { 1, 0x0800, 0x083f, }; /* END of CR_In_Samaritan */ /* PROPERTY: 'In_Mandaic': Block */ static const OnigCodePoint CR_In_Mandaic[] = { 1, 0x0840, 0x085f, }; /* END of CR_In_Mandaic */ /* PROPERTY: 'In_Arabic_Extended_A': Block */ static const OnigCodePoint CR_In_Arabic_Extended_A[] = { 1, 0x08a0, 0x08ff, }; /* END of CR_In_Arabic_Extended_A */ /* PROPERTY: 'In_Devanagari': Block */ static const OnigCodePoint CR_In_Devanagari[] = { 1, 0x0900, 0x097f, }; /* END of CR_In_Devanagari */ /* PROPERTY: 'In_Bengali': Block */ static const OnigCodePoint CR_In_Bengali[] = { 1, 0x0980, 0x09ff, }; /* END of CR_In_Bengali */ /* PROPERTY: 'In_Gurmukhi': Block */ static const OnigCodePoint CR_In_Gurmukhi[] = { 1, 0x0a00, 0x0a7f, }; /* END of CR_In_Gurmukhi */ /* PROPERTY: 'In_Gujarati': Block */ static const OnigCodePoint CR_In_Gujarati[] = { 1, 0x0a80, 0x0aff, }; /* END of CR_In_Gujarati */ /* PROPERTY: 'In_Oriya': Block */ static const OnigCodePoint CR_In_Oriya[] = { 1, 0x0b00, 0x0b7f, }; /* END of CR_In_Oriya */ /* PROPERTY: 'In_Tamil': Block */ static const OnigCodePoint CR_In_Tamil[] = { 1, 0x0b80, 0x0bff, }; /* END of CR_In_Tamil */ /* PROPERTY: 'In_Telugu': Block */ static const OnigCodePoint CR_In_Telugu[] = { 1, 0x0c00, 0x0c7f, }; /* END of CR_In_Telugu */ /* PROPERTY: 'In_Kannada': Block */ static const OnigCodePoint CR_In_Kannada[] = { 1, 0x0c80, 0x0cff, }; /* END of CR_In_Kannada */ /* PROPERTY: 'In_Malayalam': Block */ static const OnigCodePoint CR_In_Malayalam[] = { 1, 0x0d00, 0x0d7f, }; /* END of CR_In_Malayalam */ /* PROPERTY: 'In_Sinhala': Block */ static const OnigCodePoint CR_In_Sinhala[] = { 1, 0x0d80, 0x0dff, }; /* END of CR_In_Sinhala */ /* PROPERTY: 'In_Thai': Block */ static const OnigCodePoint CR_In_Thai[] = { 1, 0x0e00, 0x0e7f, }; /* END of CR_In_Thai */ /* PROPERTY: 'In_Lao': Block */ static const OnigCodePoint CR_In_Lao[] = { 1, 0x0e80, 0x0eff, }; /* END of CR_In_Lao */ /* PROPERTY: 'In_Tibetan': Block */ static const OnigCodePoint CR_In_Tibetan[] = { 1, 0x0f00, 0x0fff, }; /* END of CR_In_Tibetan */ /* PROPERTY: 'In_Myanmar': Block */ static const OnigCodePoint CR_In_Myanmar[] = { 1, 0x1000, 0x109f, }; /* END of CR_In_Myanmar */ /* PROPERTY: 'In_Georgian': Block */ static const OnigCodePoint CR_In_Georgian[] = { 1, 0x10a0, 0x10ff, }; /* END of CR_In_Georgian */ /* PROPERTY: 'In_Hangul_Jamo': Block */ static const OnigCodePoint CR_In_Hangul_Jamo[] = { 1, 0x1100, 0x11ff, }; /* END of CR_In_Hangul_Jamo */ /* PROPERTY: 'In_Ethiopic': Block */ static const OnigCodePoint CR_In_Ethiopic[] = { 1, 0x1200, 0x137f, }; /* END of CR_In_Ethiopic */ /* PROPERTY: 'In_Ethiopic_Supplement': Block */ static const OnigCodePoint CR_In_Ethiopic_Supplement[] = { 1, 0x1380, 0x139f, }; /* END of CR_In_Ethiopic_Supplement */ /* PROPERTY: 'In_Cherokee': Block */ static const OnigCodePoint CR_In_Cherokee[] = { 1, 0x13a0, 0x13ff, }; /* END of CR_In_Cherokee */ /* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics': Block */ static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = { 1, 0x1400, 0x167f, }; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics */ /* PROPERTY: 'In_Ogham': Block */ static const OnigCodePoint CR_In_Ogham[] = { 1, 0x1680, 0x169f, }; /* END of CR_In_Ogham */ /* PROPERTY: 'In_Runic': Block */ static const OnigCodePoint CR_In_Runic[] = { 1, 0x16a0, 0x16ff, }; /* END of CR_In_Runic */ /* PROPERTY: 'In_Tagalog': Block */ static const OnigCodePoint CR_In_Tagalog[] = { 1, 0x1700, 0x171f, }; /* END of CR_In_Tagalog */ /* PROPERTY: 'In_Hanunoo': Block */ static const OnigCodePoint CR_In_Hanunoo[] = { 1, 0x1720, 0x173f, }; /* END of CR_In_Hanunoo */ /* PROPERTY: 'In_Buhid': Block */ static const OnigCodePoint CR_In_Buhid[] = { 1, 0x1740, 0x175f, }; /* END of CR_In_Buhid */ /* PROPERTY: 'In_Tagbanwa': Block */ static const OnigCodePoint CR_In_Tagbanwa[] = { 1, 0x1760, 0x177f, }; /* END of CR_In_Tagbanwa */ /* PROPERTY: 'In_Khmer': Block */ static const OnigCodePoint CR_In_Khmer[] = { 1, 0x1780, 0x17ff, }; /* END of CR_In_Khmer */ /* PROPERTY: 'In_Mongolian': Block */ static const OnigCodePoint CR_In_Mongolian[] = { 1, 0x1800, 0x18af, }; /* END of CR_In_Mongolian */ /* PROPERTY: 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */ static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = { 1, 0x18b0, 0x18ff, }; /* END of CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */ /* PROPERTY: 'In_Limbu': Block */ static const OnigCodePoint CR_In_Limbu[] = { 1, 0x1900, 0x194f, }; /* END of CR_In_Limbu */ /* PROPERTY: 'In_Tai_Le': Block */ static const OnigCodePoint CR_In_Tai_Le[] = { 1, 0x1950, 0x197f, }; /* END of CR_In_Tai_Le */ /* PROPERTY: 'In_New_Tai_Lue': Block */ static const OnigCodePoint CR_In_New_Tai_Lue[] = { 1, 0x1980, 0x19df, }; /* END of CR_In_New_Tai_Lue */ /* PROPERTY: 'In_Khmer_Symbols': Block */ static const OnigCodePoint CR_In_Khmer_Symbols[] = { 1, 0x19e0, 0x19ff, }; /* END of CR_In_Khmer_Symbols */ /* PROPERTY: 'In_Buginese': Block */ static const OnigCodePoint CR_In_Buginese[] = { 1, 0x1a00, 0x1a1f, }; /* END of CR_In_Buginese */ /* PROPERTY: 'In_Tai_Tham': Block */ static const OnigCodePoint CR_In_Tai_Tham[] = { 1, 0x1a20, 0x1aaf, }; /* END of CR_In_Tai_Tham */ /* PROPERTY: 'In_Combining_Diacritical_Marks_Extended': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Extended[] = { 1, 0x1ab0, 0x1aff, }; /* END of CR_In_Combining_Diacritical_Marks_Extended */ /* PROPERTY: 'In_Balinese': Block */ static const OnigCodePoint CR_In_Balinese[] = { 1, 0x1b00, 0x1b7f, }; /* END of CR_In_Balinese */ /* PROPERTY: 'In_Sundanese': Block */ static const OnigCodePoint CR_In_Sundanese[] = { 1, 0x1b80, 0x1bbf, }; /* END of CR_In_Sundanese */ /* PROPERTY: 'In_Batak': Block */ static const OnigCodePoint CR_In_Batak[] = { 1, 0x1bc0, 0x1bff, }; /* END of CR_In_Batak */ /* PROPERTY: 'In_Lepcha': Block */ static const OnigCodePoint CR_In_Lepcha[] = { 1, 0x1c00, 0x1c4f, }; /* END of CR_In_Lepcha */ /* PROPERTY: 'In_Ol_Chiki': Block */ #define CR_In_Ol_Chiki CR_Ol_Chiki /* PROPERTY: 'In_Sundanese_Supplement': Block */ static const OnigCodePoint CR_In_Sundanese_Supplement[] = { 1, 0x1cc0, 0x1ccf, }; /* END of CR_In_Sundanese_Supplement */ /* PROPERTY: 'In_Vedic_Extensions': Block */ static const OnigCodePoint CR_In_Vedic_Extensions[] = { 1, 0x1cd0, 0x1cff, }; /* END of CR_In_Vedic_Extensions */ /* PROPERTY: 'In_Phonetic_Extensions': Block */ static const OnigCodePoint CR_In_Phonetic_Extensions[] = { 1, 0x1d00, 0x1d7f, }; /* END of CR_In_Phonetic_Extensions */ /* PROPERTY: 'In_Phonetic_Extensions_Supplement': Block */ static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = { 1, 0x1d80, 0x1dbf, }; /* END of CR_In_Phonetic_Extensions_Supplement */ /* PROPERTY: 'In_Combining_Diacritical_Marks_Supplement': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = { 1, 0x1dc0, 0x1dff, }; /* END of CR_In_Combining_Diacritical_Marks_Supplement */ /* PROPERTY: 'In_Latin_Extended_Additional': Block */ static const OnigCodePoint CR_In_Latin_Extended_Additional[] = { 1, 0x1e00, 0x1eff, }; /* END of CR_In_Latin_Extended_Additional */ /* PROPERTY: 'In_Greek_Extended': Block */ static const OnigCodePoint CR_In_Greek_Extended[] = { 1, 0x1f00, 0x1fff, }; /* END of CR_In_Greek_Extended */ /* PROPERTY: 'In_General_Punctuation': Block */ static const OnigCodePoint CR_In_General_Punctuation[] = { 1, 0x2000, 0x206f, }; /* END of CR_In_General_Punctuation */ /* PROPERTY: 'In_Superscripts_and_Subscripts': Block */ static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = { 1, 0x2070, 0x209f, }; /* END of CR_In_Superscripts_and_Subscripts */ /* PROPERTY: 'In_Currency_Symbols': Block */ static const OnigCodePoint CR_In_Currency_Symbols[] = { 1, 0x20a0, 0x20cf, }; /* END of CR_In_Currency_Symbols */ /* PROPERTY: 'In_Combining_Diacritical_Marks_for_Symbols': Block */ static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = { 1, 0x20d0, 0x20ff, }; /* END of CR_In_Combining_Diacritical_Marks_for_Symbols */ /* PROPERTY: 'In_Letterlike_Symbols': Block */ static const OnigCodePoint CR_In_Letterlike_Symbols[] = { 1, 0x2100, 0x214f, }; /* END of CR_In_Letterlike_Symbols */ /* PROPERTY: 'In_Number_Forms': Block */ static const OnigCodePoint CR_In_Number_Forms[] = { 1, 0x2150, 0x218f, }; /* END of CR_In_Number_Forms */ /* PROPERTY: 'In_Arrows': Block */ static const OnigCodePoint CR_In_Arrows[] = { 1, 0x2190, 0x21ff, }; /* END of CR_In_Arrows */ /* PROPERTY: 'In_Mathematical_Operators': Block */ static const OnigCodePoint CR_In_Mathematical_Operators[] = { 1, 0x2200, 0x22ff, }; /* END of CR_In_Mathematical_Operators */ /* PROPERTY: 'In_Miscellaneous_Technical': Block */ static const OnigCodePoint CR_In_Miscellaneous_Technical[] = { 1, 0x2300, 0x23ff, }; /* END of CR_In_Miscellaneous_Technical */ /* PROPERTY: 'In_Control_Pictures': Block */ static const OnigCodePoint CR_In_Control_Pictures[] = { 1, 0x2400, 0x243f, }; /* END of CR_In_Control_Pictures */ /* PROPERTY: 'In_Optical_Character_Recognition': Block */ static const OnigCodePoint CR_In_Optical_Character_Recognition[] = { 1, 0x2440, 0x245f, }; /* END of CR_In_Optical_Character_Recognition */ /* PROPERTY: 'In_Enclosed_Alphanumerics': Block */ static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = { 1, 0x2460, 0x24ff, }; /* END of CR_In_Enclosed_Alphanumerics */ /* PROPERTY: 'In_Box_Drawing': Block */ static const OnigCodePoint CR_In_Box_Drawing[] = { 1, 0x2500, 0x257f, }; /* END of CR_In_Box_Drawing */ /* PROPERTY: 'In_Block_Elements': Block */ static const OnigCodePoint CR_In_Block_Elements[] = { 1, 0x2580, 0x259f, }; /* END of CR_In_Block_Elements */ /* PROPERTY: 'In_Geometric_Shapes': Block */ static const OnigCodePoint CR_In_Geometric_Shapes[] = { 1, 0x25a0, 0x25ff, }; /* END of CR_In_Geometric_Shapes */ /* PROPERTY: 'In_Miscellaneous_Symbols': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = { 1, 0x2600, 0x26ff, }; /* END of CR_In_Miscellaneous_Symbols */ /* PROPERTY: 'In_Dingbats': Block */ static const OnigCodePoint CR_In_Dingbats[] = { 1, 0x2700, 0x27bf, }; /* END of CR_In_Dingbats */ /* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_A': Block */ static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = { 1, 0x27c0, 0x27ef, }; /* END of CR_In_Miscellaneous_Mathematical_Symbols_A */ /* PROPERTY: 'In_Supplemental_Arrows_A': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = { 1, 0x27f0, 0x27ff, }; /* END of CR_In_Supplemental_Arrows_A */ /* PROPERTY: 'In_Braille_Patterns': Block */ #define CR_In_Braille_Patterns CR_Braille /* PROPERTY: 'In_Supplemental_Arrows_B': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = { 1, 0x2900, 0x297f, }; /* END of CR_In_Supplemental_Arrows_B */ /* PROPERTY: 'In_Miscellaneous_Mathematical_Symbols_B': Block */ static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = { 1, 0x2980, 0x29ff, }; /* END of CR_In_Miscellaneous_Mathematical_Symbols_B */ /* PROPERTY: 'In_Supplemental_Mathematical_Operators': Block */ static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = { 1, 0x2a00, 0x2aff, }; /* END of CR_In_Supplemental_Mathematical_Operators */ /* PROPERTY: 'In_Miscellaneous_Symbols_and_Arrows': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = { 1, 0x2b00, 0x2bff, }; /* END of CR_In_Miscellaneous_Symbols_and_Arrows */ /* PROPERTY: 'In_Glagolitic': Block */ static const OnigCodePoint CR_In_Glagolitic[] = { 1, 0x2c00, 0x2c5f, }; /* END of CR_In_Glagolitic */ /* PROPERTY: 'In_Latin_Extended_C': Block */ static const OnigCodePoint CR_In_Latin_Extended_C[] = { 1, 0x2c60, 0x2c7f, }; /* END of CR_In_Latin_Extended_C */ /* PROPERTY: 'In_Coptic': Block */ static const OnigCodePoint CR_In_Coptic[] = { 1, 0x2c80, 0x2cff, }; /* END of CR_In_Coptic */ /* PROPERTY: 'In_Georgian_Supplement': Block */ static const OnigCodePoint CR_In_Georgian_Supplement[] = { 1, 0x2d00, 0x2d2f, }; /* END of CR_In_Georgian_Supplement */ /* PROPERTY: 'In_Tifinagh': Block */ static const OnigCodePoint CR_In_Tifinagh[] = { 1, 0x2d30, 0x2d7f, }; /* END of CR_In_Tifinagh */ /* PROPERTY: 'In_Ethiopic_Extended': Block */ static const OnigCodePoint CR_In_Ethiopic_Extended[] = { 1, 0x2d80, 0x2ddf, }; /* END of CR_In_Ethiopic_Extended */ /* PROPERTY: 'In_Cyrillic_Extended_A': Block */ static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = { 1, 0x2de0, 0x2dff, }; /* END of CR_In_Cyrillic_Extended_A */ /* PROPERTY: 'In_Supplemental_Punctuation': Block */ static const OnigCodePoint CR_In_Supplemental_Punctuation[] = { 1, 0x2e00, 0x2e7f, }; /* END of CR_In_Supplemental_Punctuation */ /* PROPERTY: 'In_CJK_Radicals_Supplement': Block */ static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = { 1, 0x2e80, 0x2eff, }; /* END of CR_In_CJK_Radicals_Supplement */ /* PROPERTY: 'In_Kangxi_Radicals': Block */ static const OnigCodePoint CR_In_Kangxi_Radicals[] = { 1, 0x2f00, 0x2fdf, }; /* END of CR_In_Kangxi_Radicals */ /* PROPERTY: 'In_Ideographic_Description_Characters': Block */ static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = { 1, 0x2ff0, 0x2fff, }; /* END of CR_In_Ideographic_Description_Characters */ /* PROPERTY: 'In_CJK_Symbols_and_Punctuation': Block */ static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = { 1, 0x3000, 0x303f, }; /* END of CR_In_CJK_Symbols_and_Punctuation */ /* PROPERTY: 'In_Hiragana': Block */ static const OnigCodePoint CR_In_Hiragana[] = { 1, 0x3040, 0x309f, }; /* END of CR_In_Hiragana */ /* PROPERTY: 'In_Katakana': Block */ static const OnigCodePoint CR_In_Katakana[] = { 1, 0x30a0, 0x30ff, }; /* END of CR_In_Katakana */ /* PROPERTY: 'In_Bopomofo': Block */ static const OnigCodePoint CR_In_Bopomofo[] = { 1, 0x3100, 0x312f, }; /* END of CR_In_Bopomofo */ /* PROPERTY: 'In_Hangul_Compatibility_Jamo': Block */ static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = { 1, 0x3130, 0x318f, }; /* END of CR_In_Hangul_Compatibility_Jamo */ /* PROPERTY: 'In_Kanbun': Block */ static const OnigCodePoint CR_In_Kanbun[] = { 1, 0x3190, 0x319f, }; /* END of CR_In_Kanbun */ /* PROPERTY: 'In_Bopomofo_Extended': Block */ static const OnigCodePoint CR_In_Bopomofo_Extended[] = { 1, 0x31a0, 0x31bf, }; /* END of CR_In_Bopomofo_Extended */ /* PROPERTY: 'In_CJK_Strokes': Block */ static const OnigCodePoint CR_In_CJK_Strokes[] = { 1, 0x31c0, 0x31ef, }; /* END of CR_In_CJK_Strokes */ /* PROPERTY: 'In_Katakana_Phonetic_Extensions': Block */ static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = { 1, 0x31f0, 0x31ff, }; /* END of CR_In_Katakana_Phonetic_Extensions */ /* PROPERTY: 'In_Enclosed_CJK_Letters_and_Months': Block */ static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = { 1, 0x3200, 0x32ff, }; /* END of CR_In_Enclosed_CJK_Letters_and_Months */ /* PROPERTY: 'In_CJK_Compatibility': Block */ static const OnigCodePoint CR_In_CJK_Compatibility[] = { 1, 0x3300, 0x33ff, }; /* END of CR_In_CJK_Compatibility */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_A': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = { 1, 0x3400, 0x4dbf, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_A */ /* PROPERTY: 'In_Yijing_Hexagram_Symbols': Block */ static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = { 1, 0x4dc0, 0x4dff, }; /* END of CR_In_Yijing_Hexagram_Symbols */ /* PROPERTY: 'In_CJK_Unified_Ideographs': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = { 1, 0x4e00, 0x9fff, }; /* END of CR_In_CJK_Unified_Ideographs */ /* PROPERTY: 'In_Yi_Syllables': Block */ static const OnigCodePoint CR_In_Yi_Syllables[] = { 1, 0xa000, 0xa48f, }; /* END of CR_In_Yi_Syllables */ /* PROPERTY: 'In_Yi_Radicals': Block */ static const OnigCodePoint CR_In_Yi_Radicals[] = { 1, 0xa490, 0xa4cf, }; /* END of CR_In_Yi_Radicals */ /* PROPERTY: 'In_Lisu': Block */ #define CR_In_Lisu CR_Lisu /* PROPERTY: 'In_Vai': Block */ static const OnigCodePoint CR_In_Vai[] = { 1, 0xa500, 0xa63f, }; /* END of CR_In_Vai */ /* PROPERTY: 'In_Cyrillic_Extended_B': Block */ static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = { 1, 0xa640, 0xa69f, }; /* END of CR_In_Cyrillic_Extended_B */ /* PROPERTY: 'In_Bamum': Block */ static const OnigCodePoint CR_In_Bamum[] = { 1, 0xa6a0, 0xa6ff, }; /* END of CR_In_Bamum */ /* PROPERTY: 'In_Modifier_Tone_Letters': Block */ static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = { 1, 0xa700, 0xa71f, }; /* END of CR_In_Modifier_Tone_Letters */ /* PROPERTY: 'In_Latin_Extended_D': Block */ static const OnigCodePoint CR_In_Latin_Extended_D[] = { 1, 0xa720, 0xa7ff, }; /* END of CR_In_Latin_Extended_D */ /* PROPERTY: 'In_Syloti_Nagri': Block */ static const OnigCodePoint CR_In_Syloti_Nagri[] = { 1, 0xa800, 0xa82f, }; /* END of CR_In_Syloti_Nagri */ /* PROPERTY: 'In_Common_Indic_Number_Forms': Block */ static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = { 1, 0xa830, 0xa83f, }; /* END of CR_In_Common_Indic_Number_Forms */ /* PROPERTY: 'In_Phags_pa': Block */ static const OnigCodePoint CR_In_Phags_pa[] = { 1, 0xa840, 0xa87f, }; /* END of CR_In_Phags_pa */ /* PROPERTY: 'In_Saurashtra': Block */ static const OnigCodePoint CR_In_Saurashtra[] = { 1, 0xa880, 0xa8df, }; /* END of CR_In_Saurashtra */ /* PROPERTY: 'In_Devanagari_Extended': Block */ static const OnigCodePoint CR_In_Devanagari_Extended[] = { 1, 0xa8e0, 0xa8ff, }; /* END of CR_In_Devanagari_Extended */ /* PROPERTY: 'In_Kayah_Li': Block */ static const OnigCodePoint CR_In_Kayah_Li[] = { 1, 0xa900, 0xa92f, }; /* END of CR_In_Kayah_Li */ /* PROPERTY: 'In_Rejang': Block */ static const OnigCodePoint CR_In_Rejang[] = { 1, 0xa930, 0xa95f, }; /* END of CR_In_Rejang */ /* PROPERTY: 'In_Hangul_Jamo_Extended_A': Block */ static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = { 1, 0xa960, 0xa97f, }; /* END of CR_In_Hangul_Jamo_Extended_A */ /* PROPERTY: 'In_Javanese': Block */ static const OnigCodePoint CR_In_Javanese[] = { 1, 0xa980, 0xa9df, }; /* END of CR_In_Javanese */ /* PROPERTY: 'In_Myanmar_Extended_B': Block */ static const OnigCodePoint CR_In_Myanmar_Extended_B[] = { 1, 0xa9e0, 0xa9ff, }; /* END of CR_In_Myanmar_Extended_B */ /* PROPERTY: 'In_Cham': Block */ static const OnigCodePoint CR_In_Cham[] = { 1, 0xaa00, 0xaa5f, }; /* END of CR_In_Cham */ /* PROPERTY: 'In_Myanmar_Extended_A': Block */ static const OnigCodePoint CR_In_Myanmar_Extended_A[] = { 1, 0xaa60, 0xaa7f, }; /* END of CR_In_Myanmar_Extended_A */ /* PROPERTY: 'In_Tai_Viet': Block */ static const OnigCodePoint CR_In_Tai_Viet[] = { 1, 0xaa80, 0xaadf, }; /* END of CR_In_Tai_Viet */ /* PROPERTY: 'In_Meetei_Mayek_Extensions': Block */ static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = { 1, 0xaae0, 0xaaff, }; /* END of CR_In_Meetei_Mayek_Extensions */ /* PROPERTY: 'In_Ethiopic_Extended_A': Block */ static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = { 1, 0xab00, 0xab2f, }; /* END of CR_In_Ethiopic_Extended_A */ /* PROPERTY: 'In_Latin_Extended_E': Block */ static const OnigCodePoint CR_In_Latin_Extended_E[] = { 1, 0xab30, 0xab6f, }; /* END of CR_In_Latin_Extended_E */ /* PROPERTY: 'In_Cherokee_Supplement': Block */ static const OnigCodePoint CR_In_Cherokee_Supplement[] = { 1, 0xab70, 0xabbf, }; /* END of CR_In_Cherokee_Supplement */ /* PROPERTY: 'In_Meetei_Mayek': Block */ static const OnigCodePoint CR_In_Meetei_Mayek[] = { 1, 0xabc0, 0xabff, }; /* END of CR_In_Meetei_Mayek */ /* PROPERTY: 'In_Hangul_Syllables': Block */ static const OnigCodePoint CR_In_Hangul_Syllables[] = { 1, 0xac00, 0xd7af, }; /* END of CR_In_Hangul_Syllables */ /* PROPERTY: 'In_Hangul_Jamo_Extended_B': Block */ static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = { 1, 0xd7b0, 0xd7ff, }; /* END of CR_In_Hangul_Jamo_Extended_B */ /* PROPERTY: 'In_High_Surrogates': Block */ static const OnigCodePoint CR_In_High_Surrogates[] = { 1, 0xd800, 0xdb7f, }; /* END of CR_In_High_Surrogates */ /* PROPERTY: 'In_High_Private_Use_Surrogates': Block */ static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = { 1, 0xdb80, 0xdbff, }; /* END of CR_In_High_Private_Use_Surrogates */ /* PROPERTY: 'In_Low_Surrogates': Block */ static const OnigCodePoint CR_In_Low_Surrogates[] = { 1, 0xdc00, 0xdfff, }; /* END of CR_In_Low_Surrogates */ /* PROPERTY: 'In_Private_Use_Area': Block */ static const OnigCodePoint CR_In_Private_Use_Area[] = { 1, 0xe000, 0xf8ff, }; /* END of CR_In_Private_Use_Area */ /* PROPERTY: 'In_CJK_Compatibility_Ideographs': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = { 1, 0xf900, 0xfaff, }; /* END of CR_In_CJK_Compatibility_Ideographs */ /* PROPERTY: 'In_Alphabetic_Presentation_Forms': Block */ static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = { 1, 0xfb00, 0xfb4f, }; /* END of CR_In_Alphabetic_Presentation_Forms */ /* PROPERTY: 'In_Arabic_Presentation_Forms_A': Block */ static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = { 1, 0xfb50, 0xfdff, }; /* END of CR_In_Arabic_Presentation_Forms_A */ /* PROPERTY: 'In_Variation_Selectors': Block */ static const OnigCodePoint CR_In_Variation_Selectors[] = { 1, 0xfe00, 0xfe0f, }; /* END of CR_In_Variation_Selectors */ /* PROPERTY: 'In_Vertical_Forms': Block */ static const OnigCodePoint CR_In_Vertical_Forms[] = { 1, 0xfe10, 0xfe1f, }; /* END of CR_In_Vertical_Forms */ /* PROPERTY: 'In_Combining_Half_Marks': Block */ static const OnigCodePoint CR_In_Combining_Half_Marks[] = { 1, 0xfe20, 0xfe2f, }; /* END of CR_In_Combining_Half_Marks */ /* PROPERTY: 'In_CJK_Compatibility_Forms': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = { 1, 0xfe30, 0xfe4f, }; /* END of CR_In_CJK_Compatibility_Forms */ /* PROPERTY: 'In_Small_Form_Variants': Block */ static const OnigCodePoint CR_In_Small_Form_Variants[] = { 1, 0xfe50, 0xfe6f, }; /* END of CR_In_Small_Form_Variants */ /* PROPERTY: 'In_Arabic_Presentation_Forms_B': Block */ static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = { 1, 0xfe70, 0xfeff, }; /* END of CR_In_Arabic_Presentation_Forms_B */ /* PROPERTY: 'In_Halfwidth_and_Fullwidth_Forms': Block */ static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = { 1, 0xff00, 0xffef, }; /* END of CR_In_Halfwidth_and_Fullwidth_Forms */ /* PROPERTY: 'In_Specials': Block */ static const OnigCodePoint CR_In_Specials[] = { 1, 0xfff0, 0xffff, }; /* END of CR_In_Specials */ /* PROPERTY: 'In_Linear_B_Syllabary': Block */ static const OnigCodePoint CR_In_Linear_B_Syllabary[] = { 1, 0x10000, 0x1007f, }; /* END of CR_In_Linear_B_Syllabary */ /* PROPERTY: 'In_Linear_B_Ideograms': Block */ static const OnigCodePoint CR_In_Linear_B_Ideograms[] = { 1, 0x10080, 0x100ff, }; /* END of CR_In_Linear_B_Ideograms */ /* PROPERTY: 'In_Aegean_Numbers': Block */ static const OnigCodePoint CR_In_Aegean_Numbers[] = { 1, 0x10100, 0x1013f, }; /* END of CR_In_Aegean_Numbers */ /* PROPERTY: 'In_Ancient_Greek_Numbers': Block */ static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = { 1, 0x10140, 0x1018f, }; /* END of CR_In_Ancient_Greek_Numbers */ /* PROPERTY: 'In_Ancient_Symbols': Block */ static const OnigCodePoint CR_In_Ancient_Symbols[] = { 1, 0x10190, 0x101cf, }; /* END of CR_In_Ancient_Symbols */ /* PROPERTY: 'In_Phaistos_Disc': Block */ static const OnigCodePoint CR_In_Phaistos_Disc[] = { 1, 0x101d0, 0x101ff, }; /* END of CR_In_Phaistos_Disc */ /* PROPERTY: 'In_Lycian': Block */ static const OnigCodePoint CR_In_Lycian[] = { 1, 0x10280, 0x1029f, }; /* END of CR_In_Lycian */ /* PROPERTY: 'In_Carian': Block */ static const OnigCodePoint CR_In_Carian[] = { 1, 0x102a0, 0x102df, }; /* END of CR_In_Carian */ /* PROPERTY: 'In_Coptic_Epact_Numbers': Block */ static const OnigCodePoint CR_In_Coptic_Epact_Numbers[] = { 1, 0x102e0, 0x102ff, }; /* END of CR_In_Coptic_Epact_Numbers */ /* PROPERTY: 'In_Old_Italic': Block */ static const OnigCodePoint CR_In_Old_Italic[] = { 1, 0x10300, 0x1032f, }; /* END of CR_In_Old_Italic */ /* PROPERTY: 'In_Gothic': Block */ static const OnigCodePoint CR_In_Gothic[] = { 1, 0x10330, 0x1034f, }; /* END of CR_In_Gothic */ /* PROPERTY: 'In_Old_Permic': Block */ static const OnigCodePoint CR_In_Old_Permic[] = { 1, 0x10350, 0x1037f, }; /* END of CR_In_Old_Permic */ /* PROPERTY: 'In_Ugaritic': Block */ static const OnigCodePoint CR_In_Ugaritic[] = { 1, 0x10380, 0x1039f, }; /* END of CR_In_Ugaritic */ /* PROPERTY: 'In_Old_Persian': Block */ static const OnigCodePoint CR_In_Old_Persian[] = { 1, 0x103a0, 0x103df, }; /* END of CR_In_Old_Persian */ /* PROPERTY: 'In_Deseret': Block */ #define CR_In_Deseret CR_Deseret /* PROPERTY: 'In_Shavian': Block */ #define CR_In_Shavian CR_Shavian /* PROPERTY: 'In_Osmanya': Block */ static const OnigCodePoint CR_In_Osmanya[] = { 1, 0x10480, 0x104af, }; /* END of CR_In_Osmanya */ /* PROPERTY: 'In_Elbasan': Block */ static const OnigCodePoint CR_In_Elbasan[] = { 1, 0x10500, 0x1052f, }; /* END of CR_In_Elbasan */ /* PROPERTY: 'In_Caucasian_Albanian': Block */ static const OnigCodePoint CR_In_Caucasian_Albanian[] = { 1, 0x10530, 0x1056f, }; /* END of CR_In_Caucasian_Albanian */ /* PROPERTY: 'In_Linear_A': Block */ static const OnigCodePoint CR_In_Linear_A[] = { 1, 0x10600, 0x1077f, }; /* END of CR_In_Linear_A */ /* PROPERTY: 'In_Cypriot_Syllabary': Block */ static const OnigCodePoint CR_In_Cypriot_Syllabary[] = { 1, 0x10800, 0x1083f, }; /* END of CR_In_Cypriot_Syllabary */ /* PROPERTY: 'In_Imperial_Aramaic': Block */ static const OnigCodePoint CR_In_Imperial_Aramaic[] = { 1, 0x10840, 0x1085f, }; /* END of CR_In_Imperial_Aramaic */ /* PROPERTY: 'In_Palmyrene': Block */ #define CR_In_Palmyrene CR_Palmyrene /* PROPERTY: 'In_Nabataean': Block */ static const OnigCodePoint CR_In_Nabataean[] = { 1, 0x10880, 0x108af, }; /* END of CR_In_Nabataean */ /* PROPERTY: 'In_Hatran': Block */ static const OnigCodePoint CR_In_Hatran[] = { 1, 0x108e0, 0x108ff, }; /* END of CR_In_Hatran */ /* PROPERTY: 'In_Phoenician': Block */ static const OnigCodePoint CR_In_Phoenician[] = { 1, 0x10900, 0x1091f, }; /* END of CR_In_Phoenician */ /* PROPERTY: 'In_Lydian': Block */ static const OnigCodePoint CR_In_Lydian[] = { 1, 0x10920, 0x1093f, }; /* END of CR_In_Lydian */ /* PROPERTY: 'In_Meroitic_Hieroglyphs': Block */ #define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs /* PROPERTY: 'In_Meroitic_Cursive': Block */ static const OnigCodePoint CR_In_Meroitic_Cursive[] = { 1, 0x109a0, 0x109ff, }; /* END of CR_In_Meroitic_Cursive */ /* PROPERTY: 'In_Kharoshthi': Block */ static const OnigCodePoint CR_In_Kharoshthi[] = { 1, 0x10a00, 0x10a5f, }; /* END of CR_In_Kharoshthi */ /* PROPERTY: 'In_Old_South_Arabian': Block */ #define CR_In_Old_South_Arabian CR_Old_South_Arabian /* PROPERTY: 'In_Old_North_Arabian': Block */ #define CR_In_Old_North_Arabian CR_Old_North_Arabian /* PROPERTY: 'In_Manichaean': Block */ static const OnigCodePoint CR_In_Manichaean[] = { 1, 0x10ac0, 0x10aff, }; /* END of CR_In_Manichaean */ /* PROPERTY: 'In_Avestan': Block */ static const OnigCodePoint CR_In_Avestan[] = { 1, 0x10b00, 0x10b3f, }; /* END of CR_In_Avestan */ /* PROPERTY: 'In_Inscriptional_Parthian': Block */ static const OnigCodePoint CR_In_Inscriptional_Parthian[] = { 1, 0x10b40, 0x10b5f, }; /* END of CR_In_Inscriptional_Parthian */ /* PROPERTY: 'In_Inscriptional_Pahlavi': Block */ static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = { 1, 0x10b60, 0x10b7f, }; /* END of CR_In_Inscriptional_Pahlavi */ /* PROPERTY: 'In_Psalter_Pahlavi': Block */ static const OnigCodePoint CR_In_Psalter_Pahlavi[] = { 1, 0x10b80, 0x10baf, }; /* END of CR_In_Psalter_Pahlavi */ /* PROPERTY: 'In_Old_Turkic': Block */ static const OnigCodePoint CR_In_Old_Turkic[] = { 1, 0x10c00, 0x10c4f, }; /* END of CR_In_Old_Turkic */ /* PROPERTY: 'In_Old_Hungarian': Block */ static const OnigCodePoint CR_In_Old_Hungarian[] = { 1, 0x10c80, 0x10cff, }; /* END of CR_In_Old_Hungarian */ /* PROPERTY: 'In_Rumi_Numeral_Symbols': Block */ static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = { 1, 0x10e60, 0x10e7f, }; /* END of CR_In_Rumi_Numeral_Symbols */ /* PROPERTY: 'In_Brahmi': Block */ static const OnigCodePoint CR_In_Brahmi[] = { 1, 0x11000, 0x1107f, }; /* END of CR_In_Brahmi */ /* PROPERTY: 'In_Kaithi': Block */ static const OnigCodePoint CR_In_Kaithi[] = { 1, 0x11080, 0x110cf, }; /* END of CR_In_Kaithi */ /* PROPERTY: 'In_Sora_Sompeng': Block */ static const OnigCodePoint CR_In_Sora_Sompeng[] = { 1, 0x110d0, 0x110ff, }; /* END of CR_In_Sora_Sompeng */ /* PROPERTY: 'In_Chakma': Block */ static const OnigCodePoint CR_In_Chakma[] = { 1, 0x11100, 0x1114f, }; /* END of CR_In_Chakma */ /* PROPERTY: 'In_Mahajani': Block */ static const OnigCodePoint CR_In_Mahajani[] = { 1, 0x11150, 0x1117f, }; /* END of CR_In_Mahajani */ /* PROPERTY: 'In_Sharada': Block */ static const OnigCodePoint CR_In_Sharada[] = { 1, 0x11180, 0x111df, }; /* END of CR_In_Sharada */ /* PROPERTY: 'In_Sinhala_Archaic_Numbers': Block */ static const OnigCodePoint CR_In_Sinhala_Archaic_Numbers[] = { 1, 0x111e0, 0x111ff, }; /* END of CR_In_Sinhala_Archaic_Numbers */ /* PROPERTY: 'In_Khojki': Block */ static const OnigCodePoint CR_In_Khojki[] = { 1, 0x11200, 0x1124f, }; /* END of CR_In_Khojki */ /* PROPERTY: 'In_Multani': Block */ static const OnigCodePoint CR_In_Multani[] = { 1, 0x11280, 0x112af, }; /* END of CR_In_Multani */ /* PROPERTY: 'In_Khudawadi': Block */ static const OnigCodePoint CR_In_Khudawadi[] = { 1, 0x112b0, 0x112ff, }; /* END of CR_In_Khudawadi */ /* PROPERTY: 'In_Grantha': Block */ static const OnigCodePoint CR_In_Grantha[] = { 1, 0x11300, 0x1137f, }; /* END of CR_In_Grantha */ /* PROPERTY: 'In_Tirhuta': Block */ static const OnigCodePoint CR_In_Tirhuta[] = { 1, 0x11480, 0x114df, }; /* END of CR_In_Tirhuta */ /* PROPERTY: 'In_Siddham': Block */ static const OnigCodePoint CR_In_Siddham[] = { 1, 0x11580, 0x115ff, }; /* END of CR_In_Siddham */ /* PROPERTY: 'In_Modi': Block */ static const OnigCodePoint CR_In_Modi[] = { 1, 0x11600, 0x1165f, }; /* END of CR_In_Modi */ /* PROPERTY: 'In_Takri': Block */ static const OnigCodePoint CR_In_Takri[] = { 1, 0x11680, 0x116cf, }; /* END of CR_In_Takri */ /* PROPERTY: 'In_Ahom': Block */ static const OnigCodePoint CR_In_Ahom[] = { 1, 0x11700, 0x1173f, }; /* END of CR_In_Ahom */ /* PROPERTY: 'In_Warang_Citi': Block */ static const OnigCodePoint CR_In_Warang_Citi[] = { 1, 0x118a0, 0x118ff, }; /* END of CR_In_Warang_Citi */ /* PROPERTY: 'In_Pau_Cin_Hau': Block */ static const OnigCodePoint CR_In_Pau_Cin_Hau[] = { 1, 0x11ac0, 0x11aff, }; /* END of CR_In_Pau_Cin_Hau */ /* PROPERTY: 'In_Cuneiform': Block */ static const OnigCodePoint CR_In_Cuneiform[] = { 1, 0x12000, 0x123ff, }; /* END of CR_In_Cuneiform */ /* PROPERTY: 'In_Cuneiform_Numbers_and_Punctuation': Block */ static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = { 1, 0x12400, 0x1247f, }; /* END of CR_In_Cuneiform_Numbers_and_Punctuation */ /* PROPERTY: 'In_Early_Dynastic_Cuneiform': Block */ static const OnigCodePoint CR_In_Early_Dynastic_Cuneiform[] = { 1, 0x12480, 0x1254f, }; /* END of CR_In_Early_Dynastic_Cuneiform */ /* PROPERTY: 'In_Egyptian_Hieroglyphs': Block */ static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = { 1, 0x13000, 0x1342f, }; /* END of CR_In_Egyptian_Hieroglyphs */ /* PROPERTY: 'In_Anatolian_Hieroglyphs': Block */ static const OnigCodePoint CR_In_Anatolian_Hieroglyphs[] = { 1, 0x14400, 0x1467f, }; /* END of CR_In_Anatolian_Hieroglyphs */ /* PROPERTY: 'In_Bamum_Supplement': Block */ static const OnigCodePoint CR_In_Bamum_Supplement[] = { 1, 0x16800, 0x16a3f, }; /* END of CR_In_Bamum_Supplement */ /* PROPERTY: 'In_Mro': Block */ static const OnigCodePoint CR_In_Mro[] = { 1, 0x16a40, 0x16a6f, }; /* END of CR_In_Mro */ /* PROPERTY: 'In_Bassa_Vah': Block */ static const OnigCodePoint CR_In_Bassa_Vah[] = { 1, 0x16ad0, 0x16aff, }; /* END of CR_In_Bassa_Vah */ /* PROPERTY: 'In_Pahawh_Hmong': Block */ static const OnigCodePoint CR_In_Pahawh_Hmong[] = { 1, 0x16b00, 0x16b8f, }; /* END of CR_In_Pahawh_Hmong */ /* PROPERTY: 'In_Miao': Block */ static const OnigCodePoint CR_In_Miao[] = { 1, 0x16f00, 0x16f9f, }; /* END of CR_In_Miao */ /* PROPERTY: 'In_Kana_Supplement': Block */ static const OnigCodePoint CR_In_Kana_Supplement[] = { 1, 0x1b000, 0x1b0ff, }; /* END of CR_In_Kana_Supplement */ /* PROPERTY: 'In_Duployan': Block */ static const OnigCodePoint CR_In_Duployan[] = { 1, 0x1bc00, 0x1bc9f, }; /* END of CR_In_Duployan */ /* PROPERTY: 'In_Shorthand_Format_Controls': Block */ static const OnigCodePoint CR_In_Shorthand_Format_Controls[] = { 1, 0x1bca0, 0x1bcaf, }; /* END of CR_In_Shorthand_Format_Controls */ /* PROPERTY: 'In_Byzantine_Musical_Symbols': Block */ static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = { 1, 0x1d000, 0x1d0ff, }; /* END of CR_In_Byzantine_Musical_Symbols */ /* PROPERTY: 'In_Musical_Symbols': Block */ static const OnigCodePoint CR_In_Musical_Symbols[] = { 1, 0x1d100, 0x1d1ff, }; /* END of CR_In_Musical_Symbols */ /* PROPERTY: 'In_Ancient_Greek_Musical_Notation': Block */ static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = { 1, 0x1d200, 0x1d24f, }; /* END of CR_In_Ancient_Greek_Musical_Notation */ /* PROPERTY: 'In_Tai_Xuan_Jing_Symbols': Block */ static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = { 1, 0x1d300, 0x1d35f, }; /* END of CR_In_Tai_Xuan_Jing_Symbols */ /* PROPERTY: 'In_Counting_Rod_Numerals': Block */ static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = { 1, 0x1d360, 0x1d37f, }; /* END of CR_In_Counting_Rod_Numerals */ /* PROPERTY: 'In_Mathematical_Alphanumeric_Symbols': Block */ static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = { 1, 0x1d400, 0x1d7ff, }; /* END of CR_In_Mathematical_Alphanumeric_Symbols */ /* PROPERTY: 'In_Sutton_SignWriting': Block */ static const OnigCodePoint CR_In_Sutton_SignWriting[] = { 1, 0x1d800, 0x1daaf, }; /* END of CR_In_Sutton_SignWriting */ /* PROPERTY: 'In_Mende_Kikakui': Block */ static const OnigCodePoint CR_In_Mende_Kikakui[] = { 1, 0x1e800, 0x1e8df, }; /* END of CR_In_Mende_Kikakui */ /* PROPERTY: 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */ static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = { 1, 0x1ee00, 0x1eeff, }; /* END of CR_In_Arabic_Mathematical_Alphabetic_Symbols */ /* PROPERTY: 'In_Mahjong_Tiles': Block */ static const OnigCodePoint CR_In_Mahjong_Tiles[] = { 1, 0x1f000, 0x1f02f, }; /* END of CR_In_Mahjong_Tiles */ /* PROPERTY: 'In_Domino_Tiles': Block */ static const OnigCodePoint CR_In_Domino_Tiles[] = { 1, 0x1f030, 0x1f09f, }; /* END of CR_In_Domino_Tiles */ /* PROPERTY: 'In_Playing_Cards': Block */ static const OnigCodePoint CR_In_Playing_Cards[] = { 1, 0x1f0a0, 0x1f0ff, }; /* END of CR_In_Playing_Cards */ /* PROPERTY: 'In_Enclosed_Alphanumeric_Supplement': Block */ static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = { 1, 0x1f100, 0x1f1ff, }; /* END of CR_In_Enclosed_Alphanumeric_Supplement */ /* PROPERTY: 'In_Enclosed_Ideographic_Supplement': Block */ static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = { 1, 0x1f200, 0x1f2ff, }; /* END of CR_In_Enclosed_Ideographic_Supplement */ /* PROPERTY: 'In_Miscellaneous_Symbols_and_Pictographs': Block */ static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Pictographs[] = { 1, 0x1f300, 0x1f5ff, }; /* END of CR_In_Miscellaneous_Symbols_and_Pictographs */ /* PROPERTY: 'In_Emoticons': Block */ static const OnigCodePoint CR_In_Emoticons[] = { 1, 0x1f600, 0x1f64f, }; /* END of CR_In_Emoticons */ /* PROPERTY: 'In_Ornamental_Dingbats': Block */ static const OnigCodePoint CR_In_Ornamental_Dingbats[] = { 1, 0x1f650, 0x1f67f, }; /* END of CR_In_Ornamental_Dingbats */ /* PROPERTY: 'In_Transport_and_Map_Symbols': Block */ static const OnigCodePoint CR_In_Transport_and_Map_Symbols[] = { 1, 0x1f680, 0x1f6ff, }; /* END of CR_In_Transport_and_Map_Symbols */ /* PROPERTY: 'In_Alchemical_Symbols': Block */ static const OnigCodePoint CR_In_Alchemical_Symbols[] = { 1, 0x1f700, 0x1f77f, }; /* END of CR_In_Alchemical_Symbols */ /* PROPERTY: 'In_Geometric_Shapes_Extended': Block */ static const OnigCodePoint CR_In_Geometric_Shapes_Extended[] = { 1, 0x1f780, 0x1f7ff, }; /* END of CR_In_Geometric_Shapes_Extended */ /* PROPERTY: 'In_Supplemental_Arrows_C': Block */ static const OnigCodePoint CR_In_Supplemental_Arrows_C[] = { 1, 0x1f800, 0x1f8ff, }; /* END of CR_In_Supplemental_Arrows_C */ /* PROPERTY: 'In_Supplemental_Symbols_and_Pictographs': Block */ static const OnigCodePoint CR_In_Supplemental_Symbols_and_Pictographs[] = { 1, 0x1f900, 0x1f9ff, }; /* END of CR_In_Supplemental_Symbols_and_Pictographs */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_B': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = { 1, 0x20000, 0x2a6df, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_B */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_C': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = { 1, 0x2a700, 0x2b73f, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_C */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_D': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = { 1, 0x2b740, 0x2b81f, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_D */ /* PROPERTY: 'In_CJK_Unified_Ideographs_Extension_E': Block */ static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_E[] = { 1, 0x2b820, 0x2ceaf, }; /* END of CR_In_CJK_Unified_Ideographs_Extension_E */ /* PROPERTY: 'In_CJK_Compatibility_Ideographs_Supplement': Block */ static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = { 1, 0x2f800, 0x2fa1f, }; /* END of CR_In_CJK_Compatibility_Ideographs_Supplement */ /* PROPERTY: 'In_Tags': Block */ static const OnigCodePoint CR_In_Tags[] = { 1, 0xe0000, 0xe007f, }; /* END of CR_In_Tags */ /* PROPERTY: 'In_Variation_Selectors_Supplement': Block */ static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = { 1, 0xe0100, 0xe01ef, }; /* END of CR_In_Variation_Selectors_Supplement */ /* PROPERTY: 'In_Supplementary_Private_Use_Area_A': Block */ static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = { 1, 0xf0000, 0xfffff, }; /* END of CR_In_Supplementary_Private_Use_Area_A */ /* PROPERTY: 'In_Supplementary_Private_Use_Area_B': Block */ static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = { 1, 0x100000, 0x10ffff, }; /* END of CR_In_Supplementary_Private_Use_Area_B */ /* PROPERTY: 'In_No_Block': Block */ static const OnigCodePoint CR_In_No_Block[] = { 42, 0x0860, 0x089f, 0x1c80, 0x1cbf, 0x2fe0, 0x2fef, 0x10200, 0x1027f, 0x103e0, 0x103ff, 0x104b0, 0x104ff, 0x10570, 0x105ff, 0x10780, 0x107ff, 0x108b0, 0x108df, 0x10940, 0x1097f, 0x10aa0, 0x10abf, 0x10bb0, 0x10bff, 0x10c50, 0x10c7f, 0x10d00, 0x10e5f, 0x10e80, 0x10fff, 0x11250, 0x1127f, 0x11380, 0x1147f, 0x114e0, 0x1157f, 0x11660, 0x1167f, 0x116d0, 0x116ff, 0x11740, 0x1189f, 0x11900, 0x11abf, 0x11b00, 0x11fff, 0x12550, 0x12fff, 0x13430, 0x143ff, 0x14680, 0x167ff, 0x16a70, 0x16acf, 0x16b90, 0x16eff, 0x16fa0, 0x1afff, 0x1b100, 0x1bbff, 0x1bcb0, 0x1cfff, 0x1d250, 0x1d2ff, 0x1d380, 0x1d3ff, 0x1dab0, 0x1e7ff, 0x1e8e0, 0x1edff, 0x1ef00, 0x1efff, 0x1fa00, 0x1ffff, 0x2a6e0, 0x2a6ff, 0x2ceb0, 0x2f7ff, 0x2fa20, 0xdffff, 0xe0080, 0xe00ff, 0xe01f0, 0xeffff, }; /* END of CR_In_No_Block */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, CR_Alpha, CR_Blank, CR_Cntrl, CR_Digit, CR_Graph, CR_Lower, CR_Print, CR_Punct, CR_Space, CR_Upper, CR_XDigit, 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_Soft_Dotted, CR_Sora_Sompeng, CR_Sundanese, CR_Syloti_Nagri, CR_Syriac, CR_Tagalog, CR_Tagbanwa, CR_Tai_Le, CR_Tai_Tham, CR_Tai_Viet, CR_Takri, CR_Tamil, CR_Telugu, CR_Terminal_Punctuation, CR_Thaana, CR_Thai, CR_Tibetan, CR_Tifinagh, CR_Tirhuta, CR_Ugaritic, CR_Unified_Ideograph, 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, CR_In_Latin_Extended_B, CR_In_IPA_Extensions, CR_In_Spacing_Modifier_Letters, CR_In_Combining_Diacritical_Marks, CR_In_Greek_and_Coptic, CR_In_Cyrillic, CR_In_Cyrillic_Supplement, CR_In_Armenian, CR_In_Hebrew, CR_In_Arabic, CR_In_Syriac, CR_In_Arabic_Supplement, CR_In_Thaana, CR_In_NKo, CR_In_Samaritan, CR_In_Mandaic, CR_In_Arabic_Extended_A, CR_In_Devanagari, CR_In_Bengali, CR_In_Gurmukhi, CR_In_Gujarati, CR_In_Oriya, CR_In_Tamil, CR_In_Telugu, CR_In_Kannada, CR_In_Malayalam, CR_In_Sinhala, CR_In_Thai, CR_In_Lao, CR_In_Tibetan, CR_In_Myanmar, CR_In_Georgian, CR_In_Hangul_Jamo, CR_In_Ethiopic, CR_In_Ethiopic_Supplement, CR_In_Cherokee, CR_In_Unified_Canadian_Aboriginal_Syllabics, CR_In_Ogham, CR_In_Runic, CR_In_Tagalog, CR_In_Hanunoo, CR_In_Buhid, CR_In_Tagbanwa, CR_In_Khmer, CR_In_Mongolian, CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended, CR_In_Limbu, CR_In_Tai_Le, CR_In_New_Tai_Lue, CR_In_Khmer_Symbols, CR_In_Buginese, CR_In_Tai_Tham, CR_In_Combining_Diacritical_Marks_Extended, CR_In_Balinese, CR_In_Sundanese, CR_In_Batak, CR_In_Lepcha, CR_In_Ol_Chiki, CR_In_Sundanese_Supplement, CR_In_Vedic_Extensions, CR_In_Phonetic_Extensions, CR_In_Phonetic_Extensions_Supplement, CR_In_Combining_Diacritical_Marks_Supplement, CR_In_Latin_Extended_Additional, CR_In_Greek_Extended, CR_In_General_Punctuation, CR_In_Superscripts_and_Subscripts, CR_In_Currency_Symbols, CR_In_Combining_Diacritical_Marks_for_Symbols, CR_In_Letterlike_Symbols, CR_In_Number_Forms, CR_In_Arrows, CR_In_Mathematical_Operators, CR_In_Miscellaneous_Technical, CR_In_Control_Pictures, CR_In_Optical_Character_Recognition, CR_In_Enclosed_Alphanumerics, CR_In_Box_Drawing, CR_In_Block_Elements, CR_In_Geometric_Shapes, CR_In_Miscellaneous_Symbols, CR_In_Dingbats, CR_In_Miscellaneous_Mathematical_Symbols_A, CR_In_Supplemental_Arrows_A, CR_In_Braille_Patterns, CR_In_Supplemental_Arrows_B, CR_In_Miscellaneous_Mathematical_Symbols_B, CR_In_Supplemental_Mathematical_Operators, CR_In_Miscellaneous_Symbols_and_Arrows, CR_In_Glagolitic, CR_In_Latin_Extended_C, CR_In_Coptic, CR_In_Georgian_Supplement, CR_In_Tifinagh, CR_In_Ethiopic_Extended, CR_In_Cyrillic_Extended_A, CR_In_Supplemental_Punctuation, CR_In_CJK_Radicals_Supplement, CR_In_Kangxi_Radicals, CR_In_Ideographic_Description_Characters, CR_In_CJK_Symbols_and_Punctuation, CR_In_Hiragana, CR_In_Katakana, CR_In_Bopomofo, CR_In_Hangul_Compatibility_Jamo, CR_In_Kanbun, CR_In_Bopomofo_Extended, CR_In_CJK_Strokes, CR_In_Katakana_Phonetic_Extensions, CR_In_Enclosed_CJK_Letters_and_Months, CR_In_CJK_Compatibility, CR_In_CJK_Unified_Ideographs_Extension_A, CR_In_Yijing_Hexagram_Symbols, CR_In_CJK_Unified_Ideographs, CR_In_Yi_Syllables, CR_In_Yi_Radicals, CR_In_Lisu, CR_In_Vai, CR_In_Cyrillic_Extended_B, CR_In_Bamum, CR_In_Modifier_Tone_Letters, CR_In_Latin_Extended_D, CR_In_Syloti_Nagri, CR_In_Common_Indic_Number_Forms, CR_In_Phags_pa, CR_In_Saurashtra, CR_In_Devanagari_Extended, CR_In_Kayah_Li, CR_In_Rejang, CR_In_Hangul_Jamo_Extended_A, CR_In_Javanese, CR_In_Myanmar_Extended_B, CR_In_Cham, CR_In_Myanmar_Extended_A, CR_In_Tai_Viet, CR_In_Meetei_Mayek_Extensions, CR_In_Ethiopic_Extended_A, CR_In_Latin_Extended_E, CR_In_Cherokee_Supplement, CR_In_Meetei_Mayek, CR_In_Hangul_Syllables, CR_In_Hangul_Jamo_Extended_B, CR_In_High_Surrogates, CR_In_High_Private_Use_Surrogates, CR_In_Low_Surrogates, CR_In_Private_Use_Area, CR_In_CJK_Compatibility_Ideographs, CR_In_Alphabetic_Presentation_Forms, CR_In_Arabic_Presentation_Forms_A, CR_In_Variation_Selectors, CR_In_Vertical_Forms, CR_In_Combining_Half_Marks, CR_In_CJK_Compatibility_Forms, CR_In_Small_Form_Variants, CR_In_Arabic_Presentation_Forms_B, CR_In_Halfwidth_and_Fullwidth_Forms, CR_In_Specials, CR_In_Linear_B_Syllabary, CR_In_Linear_B_Ideograms, CR_In_Aegean_Numbers, CR_In_Ancient_Greek_Numbers, CR_In_Ancient_Symbols, CR_In_Phaistos_Disc, CR_In_Lycian, CR_In_Carian, CR_In_Coptic_Epact_Numbers, CR_In_Old_Italic, CR_In_Gothic, CR_In_Old_Permic, CR_In_Ugaritic, CR_In_Old_Persian, CR_In_Deseret, CR_In_Shavian, CR_In_Osmanya, CR_In_Elbasan, CR_In_Caucasian_Albanian, CR_In_Linear_A, CR_In_Cypriot_Syllabary, CR_In_Imperial_Aramaic, CR_In_Palmyrene, CR_In_Nabataean, CR_In_Hatran, CR_In_Phoenician, CR_In_Lydian, CR_In_Meroitic_Hieroglyphs, CR_In_Meroitic_Cursive, CR_In_Kharoshthi, CR_In_Old_South_Arabian, CR_In_Old_North_Arabian, CR_In_Manichaean, CR_In_Avestan, CR_In_Inscriptional_Parthian, CR_In_Inscriptional_Pahlavi, CR_In_Psalter_Pahlavi, CR_In_Old_Turkic, CR_In_Old_Hungarian, CR_In_Rumi_Numeral_Symbols, CR_In_Brahmi, CR_In_Kaithi, CR_In_Sora_Sompeng, CR_In_Chakma, CR_In_Mahajani, CR_In_Sharada, CR_In_Sinhala_Archaic_Numbers, CR_In_Khojki, CR_In_Multani, CR_In_Khudawadi, CR_In_Grantha, CR_In_Tirhuta, CR_In_Siddham, CR_In_Modi, CR_In_Takri, CR_In_Ahom, CR_In_Warang_Citi, CR_In_Pau_Cin_Hau, CR_In_Cuneiform, CR_In_Cuneiform_Numbers_and_Punctuation, CR_In_Early_Dynastic_Cuneiform, CR_In_Egyptian_Hieroglyphs, CR_In_Anatolian_Hieroglyphs, CR_In_Bamum_Supplement, CR_In_Mro, CR_In_Bassa_Vah, CR_In_Pahawh_Hmong, CR_In_Miao, CR_In_Kana_Supplement, CR_In_Duployan, CR_In_Shorthand_Format_Controls, CR_In_Byzantine_Musical_Symbols, CR_In_Musical_Symbols, CR_In_Ancient_Greek_Musical_Notation, CR_In_Tai_Xuan_Jing_Symbols, CR_In_Counting_Rod_Numerals, CR_In_Mathematical_Alphanumeric_Symbols, CR_In_Sutton_SignWriting, CR_In_Mende_Kikakui, CR_In_Arabic_Mathematical_Alphabetic_Symbols, CR_In_Mahjong_Tiles, CR_In_Domino_Tiles, CR_In_Playing_Cards, CR_In_Enclosed_Alphanumeric_Supplement, CR_In_Enclosed_Ideographic_Supplement, CR_In_Miscellaneous_Symbols_and_Pictographs, CR_In_Emoticons, CR_In_Ornamental_Dingbats, CR_In_Transport_and_Map_Symbols, CR_In_Alchemical_Symbols, CR_In_Geometric_Shapes_Extended, CR_In_Supplemental_Arrows_C, CR_In_Supplemental_Symbols_and_Pictographs, CR_In_CJK_Unified_Ideographs_Extension_B, CR_In_CJK_Unified_Ideographs_Extension_C, CR_In_CJK_Unified_Ideographs_Extension_D, CR_In_CJK_Unified_Ideographs_Extension_E, CR_In_CJK_Compatibility_Ideographs_Supplement, CR_In_Tags, CR_In_Variation_Selectors_Supplement, CR_In_Supplementary_Private_Use_Area_A, CR_In_Supplementary_Private_Use_Area_B, CR_In_No_Block, }; #define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) #define TOTAL_KEYWORDS 711 #define MIN_WORD_LENGTH 1 #define MAX_WORD_LENGTH 44 #define MIN_HASH_VALUE 1 #define MAX_HASH_VALUE 5162 /* maximum key range = 5162, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 static unsigned char gperf_downcase[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #endif #ifndef GPERF_CASE_STRNCMP #define GPERF_CASE_STRNCMP 1 static int gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n) { for (; n > 0;) { unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; if (c1 != 0 && c1 == c2) { n--; continue; } return (int)c1 - (int)c2; } return 0; } #endif #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 11, 1103, 8, 582, 38, 53, 1066, 293, 2, 67, 1766, 129, 7, 0, 271, 719, 0, 210, 33, 71, 1001, 1376, 537, 22, 1162, 1, 5163, 5163, 5163, 5163, 5163, 5163, 11, 1103, 8, 582, 38, 53, 1066, 293, 2, 67, 1766, 129, 7, 0, 271, 719, 0, 210, 33, 71, 1001, 1376, 537, 22, 1162, 1, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163, 5163 }; register int hval = len; switch (hval) { default: hval += asso_values[(unsigned char)str[15]]; /*FALLTHROUGH*/ case 15: case 14: case 13: case 12: hval += asso_values[(unsigned char)str[11]]; /*FALLTHROUGH*/ case 11: case 10: case 9: case 8: case 7: case 6: hval += asso_values[(unsigned char)str[5]]; /*FALLTHROUGH*/ case 5: hval += asso_values[(unsigned char)str[4]]; /*FALLTHROUGH*/ case 4: case 3: hval += asso_values[(unsigned char)str[2]]; /*FALLTHROUGH*/ case 2: hval += asso_values[(unsigned char)str[1]]; /*FALLTHROUGH*/ case 1: hval += asso_values[(unsigned char)str[0]]; break; } return hval + asso_values[(unsigned char)str[len - 1]]; } struct unicode_prop_name_pool_t { char unicode_prop_name_pool_str1[sizeof("n")]; char unicode_prop_name_pool_str3[sizeof("z")]; char unicode_prop_name_pool_str8[sizeof("zzzz")]; char unicode_prop_name_pool_str9[sizeof("mn")]; char unicode_prop_name_pool_str10[sizeof("cn")]; char unicode_prop_name_pool_str14[sizeof("ci")]; char unicode_prop_name_pool_str15[sizeof("m")]; char unicode_prop_name_pool_str17[sizeof("c")]; char unicode_prop_name_pool_str23[sizeof("inmanichaean")]; char unicode_prop_name_pool_str24[sizeof("mani")]; char unicode_prop_name_pool_str25[sizeof("mc")]; char unicode_prop_name_pool_str26[sizeof("cc")]; char unicode_prop_name_pool_str28[sizeof("qaai")]; char unicode_prop_name_pool_str34[sizeof("qaac")]; char unicode_prop_name_pool_str41[sizeof("incham")]; char unicode_prop_name_pool_str46[sizeof("mandaic")]; char unicode_prop_name_pool_str49[sizeof("sm")]; char unicode_prop_name_pool_str51[sizeof("sc")]; char unicode_prop_name_pool_str56[sizeof("cans")]; char unicode_prop_name_pool_str61[sizeof("ascii")]; char unicode_prop_name_pool_str64[sizeof("insamaritan")]; char unicode_prop_name_pool_str66[sizeof("incuneiform")]; char unicode_prop_name_pool_str67[sizeof("s")]; char unicode_prop_name_pool_str68[sizeof("inarmenian")]; char unicode_prop_name_pool_str69[sizeof("zs")]; char unicode_prop_name_pool_str76[sizeof("cs")]; char unicode_prop_name_pool_str85[sizeof("me")]; char unicode_prop_name_pool_str90[sizeof("incommonindicnumberforms")]; char unicode_prop_name_pool_str93[sizeof("inavestan")]; char unicode_prop_name_pool_str94[sizeof("inthai")]; char unicode_prop_name_pool_str103[sizeof("inipaextensions")]; char unicode_prop_name_pool_str108[sizeof("initialpunctuation")]; char unicode_prop_name_pool_str112[sizeof("inancientsymbols")]; char unicode_prop_name_pool_str114[sizeof("inthaana")]; char unicode_prop_name_pool_str116[sizeof("cf")]; char unicode_prop_name_pool_str118[sizeof("incuneiformnumbersandpunctuation")]; char unicode_prop_name_pool_str122[sizeof("mtei")]; char unicode_prop_name_pool_str124[sizeof("inspecials")]; char unicode_prop_name_pool_str133[sizeof("inmusicalsymbols")]; char unicode_prop_name_pool_str141[sizeof("inmiscellaneousmathematicalsymbolsa")]; char unicode_prop_name_pool_str145[sizeof("lm")]; char unicode_prop_name_pool_str146[sizeof("lina")]; char unicode_prop_name_pool_str147[sizeof("lc")]; char unicode_prop_name_pool_str149[sizeof("inlycian")]; char unicode_prop_name_pool_str155[sizeof("lana")]; char unicode_prop_name_pool_str157[sizeof("intaixuanjingsymbols")]; char unicode_prop_name_pool_str158[sizeof("inmyanmarextendeda")]; char unicode_prop_name_pool_str159[sizeof("alnum")]; char unicode_prop_name_pool_str161[sizeof("sterm")]; char unicode_prop_name_pool_str162[sizeof("intaitham")]; char unicode_prop_name_pool_str163[sizeof("intransportandmapsymbols")]; char unicode_prop_name_pool_str165[sizeof("taile")]; char unicode_prop_name_pool_str167[sizeof("inmalayalam")]; char unicode_prop_name_pool_str176[sizeof("inmiscellaneoussymbols")]; char unicode_prop_name_pool_str177[sizeof("incontrolpictures")]; char unicode_prop_name_pool_str185[sizeof("inmiscellaneoussymbolsandarrows")]; char unicode_prop_name_pool_str189[sizeof("inlineara")]; char unicode_prop_name_pool_str190[sizeof("inmiscellaneoussymbolsandpictographs")]; char unicode_prop_name_pool_str193[sizeof("sinhala")]; char unicode_prop_name_pool_str202[sizeof("taiviet")]; char unicode_prop_name_pool_str205[sizeof("ext")]; char unicode_prop_name_pool_str215[sizeof("latn")]; char unicode_prop_name_pool_str216[sizeof("latin")]; char unicode_prop_name_pool_str217[sizeof("ital")]; char unicode_prop_name_pool_str218[sizeof("intamil")]; char unicode_prop_name_pool_str220[sizeof("inmultani")]; char unicode_prop_name_pool_str222[sizeof("taml")]; char unicode_prop_name_pool_str229[sizeof("inrunic")]; char unicode_prop_name_pool_str230[sizeof("incarian")]; char unicode_prop_name_pool_str232[sizeof("armn")]; char unicode_prop_name_pool_str234[sizeof("armi")]; char unicode_prop_name_pool_str235[sizeof("cari")]; char unicode_prop_name_pool_str236[sizeof("inlatinextendedc")]; char unicode_prop_name_pool_str238[sizeof("armenian")]; char unicode_prop_name_pool_str239[sizeof("inmyanmar")]; char unicode_prop_name_pool_str240[sizeof("incyrillic")]; char unicode_prop_name_pool_str242[sizeof("inlatinextendeda")]; char unicode_prop_name_pool_str246[sizeof("carian")]; char unicode_prop_name_pool_str249[sizeof("intaile")]; char unicode_prop_name_pool_str253[sizeof("tale")]; char unicode_prop_name_pool_str256[sizeof("arabic")]; char unicode_prop_name_pool_str259[sizeof("l")]; char unicode_prop_name_pool_str260[sizeof("nl")]; char unicode_prop_name_pool_str261[sizeof("zl")]; char unicode_prop_name_pool_str263[sizeof("insyriac")]; char unicode_prop_name_pool_str265[sizeof("samr")]; char unicode_prop_name_pool_str267[sizeof("merc")]; char unicode_prop_name_pool_str269[sizeof("inlinearbideograms")]; char unicode_prop_name_pool_str272[sizeof("samaritan")]; char unicode_prop_name_pool_str273[sizeof("lt")]; char unicode_prop_name_pool_str276[sizeof("insharada")]; char unicode_prop_name_pool_str283[sizeof("inmeeteimayekextensions")]; char unicode_prop_name_pool_str292[sizeof("inruminumeralsymbols")]; char unicode_prop_name_pool_str295[sizeof("miao")]; char unicode_prop_name_pool_str296[sizeof("inlatinextendede")]; char unicode_prop_name_pool_str300[sizeof("zinh")]; char unicode_prop_name_pool_str304[sizeof("inahom")]; char unicode_prop_name_pool_str306[sizeof("incherokee")]; char unicode_prop_name_pool_str307[sizeof("han")]; char unicode_prop_name_pool_str310[sizeof("hani")]; char unicode_prop_name_pool_str311[sizeof("inosmanya")]; char unicode_prop_name_pool_str312[sizeof("inmiscellaneoustechnical")]; char unicode_prop_name_pool_str323[sizeof("cham")]; char unicode_prop_name_pool_str325[sizeof("inmahajani")]; char unicode_prop_name_pool_str326[sizeof("osma")]; char unicode_prop_name_pool_str329[sizeof("manichaean")]; char unicode_prop_name_pool_str330[sizeof("term")]; char unicode_prop_name_pool_str332[sizeof("sinh")]; char unicode_prop_name_pool_str342[sizeof("cntrl")]; char unicode_prop_name_pool_str347[sizeof("chakma")]; char unicode_prop_name_pool_str348[sizeof("insinhala")]; char unicode_prop_name_pool_str352[sizeof("tamil")]; char unicode_prop_name_pool_str353[sizeof("inethiopic")]; char unicode_prop_name_pool_str356[sizeof("connectorpunctuation")]; char unicode_prop_name_pool_str357[sizeof("shavian")]; char unicode_prop_name_pool_str361[sizeof("joinc")]; char unicode_prop_name_pool_str362[sizeof("inenclosedalphanumerics")]; char unicode_prop_name_pool_str368[sizeof("ahex")]; char unicode_prop_name_pool_str369[sizeof("inlatinextendedadditional")]; char unicode_prop_name_pool_str370[sizeof("lineara")]; char unicode_prop_name_pool_str377[sizeof("inenclosedcjklettersandmonths")]; char unicode_prop_name_pool_str378[sizeof("hex")]; char unicode_prop_name_pool_str381[sizeof("thai")]; char unicode_prop_name_pool_str382[sizeof("mahj")]; char unicode_prop_name_pool_str386[sizeof("math")]; char unicode_prop_name_pool_str389[sizeof("ll")]; char unicode_prop_name_pool_str390[sizeof("thaa")]; char unicode_prop_name_pool_str392[sizeof("hatran")]; char unicode_prop_name_pool_str399[sizeof("mahajani")]; char unicode_prop_name_pool_str400[sizeof("insinhalaarchaicnumbers")]; char unicode_prop_name_pool_str402[sizeof("taitham")]; char unicode_prop_name_pool_str403[sizeof("thaana")]; char unicode_prop_name_pool_str408[sizeof("ethi")]; char unicode_prop_name_pool_str409[sizeof("inenclosedalphanumericsupplement")]; char unicode_prop_name_pool_str414[sizeof("meroiticcursive")]; char unicode_prop_name_pool_str415[sizeof("inideographicdescriptioncharacters")]; char unicode_prop_name_pool_str419[sizeof("terminalpunctuation")]; char unicode_prop_name_pool_str426[sizeof("inemoticons")]; char unicode_prop_name_pool_str431[sizeof("intifinagh")]; char unicode_prop_name_pool_str433[sizeof("asciihexdigit")]; char unicode_prop_name_pool_str438[sizeof("tifinagh")]; char unicode_prop_name_pool_str451[sizeof("inearlydynasticcuneiform")]; char unicode_prop_name_pool_str457[sizeof("inopticalcharacterrecognition")]; char unicode_prop_name_pool_str479[sizeof("loe")]; char unicode_prop_name_pool_str486[sizeof("titlecaseletter")]; char unicode_prop_name_pool_str489[sizeof("inscriptionalparthian")]; char unicode_prop_name_pool_str510[sizeof("oriya")]; char unicode_prop_name_pool_str520[sizeof("hira")]; char unicode_prop_name_pool_str529[sizeof("sora")]; char unicode_prop_name_pool_str530[sizeof("mero")]; char unicode_prop_name_pool_str535[sizeof("inarrows")]; char unicode_prop_name_pool_str537[sizeof("inhiragana")]; char unicode_prop_name_pool_str544[sizeof("no")]; char unicode_prop_name_pool_str545[sizeof("inmahjongtiles")]; char unicode_prop_name_pool_str549[sizeof("innko")]; char unicode_prop_name_pool_str552[sizeof("co")]; char unicode_prop_name_pool_str553[sizeof("cher")]; char unicode_prop_name_pool_str556[sizeof("inmro")]; char unicode_prop_name_pool_str563[sizeof("common")]; char unicode_prop_name_pool_str564[sizeof("cwcm")]; char unicode_prop_name_pool_str568[sizeof("inmiao")]; char unicode_prop_name_pool_str573[sizeof("inscriptionalpahlavi")]; char unicode_prop_name_pool_str576[sizeof("inmathematicalalphanumericsymbols")]; char unicode_prop_name_pool_str577[sizeof("so")]; char unicode_prop_name_pool_str579[sizeof("hano")]; char unicode_prop_name_pool_str580[sizeof("tirh")]; char unicode_prop_name_pool_str584[sizeof("inhatran")]; char unicode_prop_name_pool_str585[sizeof("inolchiki")]; char unicode_prop_name_pool_str586[sizeof("ahom")]; char unicode_prop_name_pool_str588[sizeof("di")]; char unicode_prop_name_pool_str589[sizeof("hatr")]; char unicode_prop_name_pool_str591[sizeof("inogham")]; char unicode_prop_name_pool_str596[sizeof("intirhuta")]; char unicode_prop_name_pool_str601[sizeof("inmodi")]; char unicode_prop_name_pool_str603[sizeof("idc")]; char unicode_prop_name_pool_str604[sizeof("mand")]; char unicode_prop_name_pool_str608[sizeof("inmandaic")]; char unicode_prop_name_pool_str609[sizeof("dia")]; char unicode_prop_name_pool_str610[sizeof("cwcf")]; char unicode_prop_name_pool_str618[sizeof("xidc")]; char unicode_prop_name_pool_str621[sizeof("sind")]; char unicode_prop_name_pool_str622[sizeof("newline")]; char unicode_prop_name_pool_str631[sizeof("mend")]; char unicode_prop_name_pool_str635[sizeof("newtailue")]; char unicode_prop_name_pool_str638[sizeof("inshorthandformatcontrols")]; char unicode_prop_name_pool_str642[sizeof("anatolianhieroglyphs")]; char unicode_prop_name_pool_str643[sizeof("xids")]; char unicode_prop_name_pool_str653[sizeof("ids")]; char unicode_prop_name_pool_str659[sizeof("innewtailue")]; char unicode_prop_name_pool_str660[sizeof("insylotinagri")]; char unicode_prop_name_pool_str666[sizeof("insundanese")]; char unicode_prop_name_pool_str673[sizeof("lo")]; char unicode_prop_name_pool_str677[sizeof("indominotiles")]; char unicode_prop_name_pool_str678[sizeof("inlao")]; char unicode_prop_name_pool_str685[sizeof("lao")]; char unicode_prop_name_pool_str686[sizeof("laoo")]; char unicode_prop_name_pool_str687[sizeof("mongolian")]; char unicode_prop_name_pool_str690[sizeof("cwt")]; char unicode_prop_name_pool_str692[sizeof("idst")]; char unicode_prop_name_pool_str693[sizeof("format")]; char unicode_prop_name_pool_str696[sizeof("lineseparator")]; char unicode_prop_name_pool_str702[sizeof("letter")]; char unicode_prop_name_pool_str711[sizeof("idcontinue")]; char unicode_prop_name_pool_str714[sizeof("inanatolianhieroglyphs")]; char unicode_prop_name_pool_str723[sizeof("inlydian")]; char unicode_prop_name_pool_str725[sizeof("pi")]; char unicode_prop_name_pool_str726[sizeof("nchar")]; char unicode_prop_name_pool_str731[sizeof("inspacingmodifierletters")]; char unicode_prop_name_pool_str732[sizeof("oalpha")]; char unicode_prop_name_pool_str735[sizeof("indeseret")]; char unicode_prop_name_pool_str737[sizeof("pc")]; char unicode_prop_name_pool_str756[sizeof("xdigit")]; char unicode_prop_name_pool_str758[sizeof("inphaistosdisc")]; char unicode_prop_name_pool_str759[sizeof("joincontrol")]; char unicode_prop_name_pool_str760[sizeof("inlowsurrogates")]; char unicode_prop_name_pool_str762[sizeof("mro")]; char unicode_prop_name_pool_str763[sizeof("mroo")]; char unicode_prop_name_pool_str767[sizeof("xidstart")]; char unicode_prop_name_pool_str773[sizeof("wara")]; char unicode_prop_name_pool_str776[sizeof("inwarangciti")]; char unicode_prop_name_pool_str787[sizeof("ps")]; char unicode_prop_name_pool_str797[sizeof("pe")]; char unicode_prop_name_pool_str806[sizeof("cwl")]; char unicode_prop_name_pool_str816[sizeof("incoptic")]; char unicode_prop_name_pool_str824[sizeof("diacritic")]; char unicode_prop_name_pool_str827[sizeof("pf")]; char unicode_prop_name_pool_str844[sizeof("space")]; char unicode_prop_name_pool_str853[sizeof("hanunoo")]; char unicode_prop_name_pool_str856[sizeof("incyrillicextendeda")]; char unicode_prop_name_pool_str860[sizeof("odi")]; char unicode_prop_name_pool_str866[sizeof("modi")]; char unicode_prop_name_pool_str867[sizeof("oidc")]; char unicode_prop_name_pool_str868[sizeof("incopticepactnumbers")]; char unicode_prop_name_pool_str870[sizeof("palm")]; char unicode_prop_name_pool_str871[sizeof("insundanesesupplement")]; char unicode_prop_name_pool_str872[sizeof("patws")]; char unicode_prop_name_pool_str876[sizeof("inolditalic")]; char unicode_prop_name_pool_str877[sizeof("inlepcha")]; char unicode_prop_name_pool_str878[sizeof("shaw")]; char unicode_prop_name_pool_str880[sizeof("omath")]; char unicode_prop_name_pool_str886[sizeof("alpha")]; char unicode_prop_name_pool_str892[sizeof("oids")]; char unicode_prop_name_pool_str896[sizeof("control")]; char unicode_prop_name_pool_str897[sizeof("ideo")]; char unicode_prop_name_pool_str898[sizeof("lepc")]; char unicode_prop_name_pool_str899[sizeof("psalterpahlavi")]; char unicode_prop_name_pool_str900[sizeof("dsrt")]; char unicode_prop_name_pool_str902[sizeof("otheridcontinue")]; char unicode_prop_name_pool_str906[sizeof("inpalmyrene")]; char unicode_prop_name_pool_str907[sizeof("decimalnumber")]; char unicode_prop_name_pool_str915[sizeof("noncharactercodepoint")]; char unicode_prop_name_pool_str916[sizeof("idstart")]; char unicode_prop_name_pool_str917[sizeof("otheralphabetic")]; char unicode_prop_name_pool_str918[sizeof("letternumber")]; char unicode_prop_name_pool_str923[sizeof("dash")]; char unicode_prop_name_pool_str926[sizeof("xidcontinue")]; char unicode_prop_name_pool_str930[sizeof("finalpunctuation")]; char unicode_prop_name_pool_str931[sizeof("extender")]; char unicode_prop_name_pool_str935[sizeof("siddham")]; char unicode_prop_name_pool_str945[sizeof("inoldturkic")]; char unicode_prop_name_pool_str948[sizeof("sharada")]; char unicode_prop_name_pool_str951[sizeof("whitespace")]; char unicode_prop_name_pool_str956[sizeof("inmodifiertoneletters")]; char unicode_prop_name_pool_str958[sizeof("radical")]; char unicode_prop_name_pool_str960[sizeof("canadianaboriginal")]; char unicode_prop_name_pool_str969[sizeof("inethiopicextendeda")]; char unicode_prop_name_pool_str970[sizeof("imperialaramaic")]; char unicode_prop_name_pool_str978[sizeof("perm")]; char unicode_prop_name_pool_str979[sizeof("deseret")]; char unicode_prop_name_pool_str984[sizeof("casedletter")]; char unicode_prop_name_pool_str998[sizeof("inimperialaramaic")]; char unicode_prop_name_pool_str1001[sizeof("otheridstart")]; char unicode_prop_name_pool_str1006[sizeof("prti")]; char unicode_prop_name_pool_str1012[sizeof("cprt")]; char unicode_prop_name_pool_str1018[sizeof("othersymbol")]; char unicode_prop_name_pool_str1022[sizeof("coptic")]; char unicode_prop_name_pool_str1037[sizeof("otherlowercase")]; char unicode_prop_name_pool_str1038[sizeof("phnx")]; char unicode_prop_name_pool_str1042[sizeof("inphoenician")]; char unicode_prop_name_pool_str1049[sizeof("incaucasianalbanian")]; char unicode_prop_name_pool_str1050[sizeof("inlatin1supplement")]; char unicode_prop_name_pool_str1054[sizeof("xpeo")]; char unicode_prop_name_pool_str1058[sizeof("ininscriptionalparthian")]; char unicode_prop_name_pool_str1059[sizeof("ininscriptionalpahlavi")]; char unicode_prop_name_pool_str1060[sizeof("other")]; char unicode_prop_name_pool_str1061[sizeof("privateuse")]; char unicode_prop_name_pool_str1066[sizeof("othernumber")]; char unicode_prop_name_pool_str1071[sizeof("inenclosedideographicsupplement")]; char unicode_prop_name_pool_str1073[sizeof("copt")]; char unicode_prop_name_pool_str1078[sizeof("print")]; char unicode_prop_name_pool_str1080[sizeof("cuneiform")]; char unicode_prop_name_pool_str1081[sizeof("olditalic")]; char unicode_prop_name_pool_str1082[sizeof("xsux")]; char unicode_prop_name_pool_str1086[sizeof("inmongolian")]; char unicode_prop_name_pool_str1091[sizeof("inancientgreekmusicalnotation")]; char unicode_prop_name_pool_str1092[sizeof("sundanese")]; char unicode_prop_name_pool_str1093[sizeof("inoldnortharabian")]; char unicode_prop_name_pool_str1095[sizeof("patternsyntax")]; char unicode_prop_name_pool_str1098[sizeof("inherited")]; char unicode_prop_name_pool_str1099[sizeof("ingrantha")]; char unicode_prop_name_pool_str1100[sizeof("inphoneticextensions")]; char unicode_prop_name_pool_str1110[sizeof("saurashtra")]; char unicode_prop_name_pool_str1116[sizeof("inancientgreeknumbers")]; char unicode_prop_name_pool_str1122[sizeof("shrd")]; char unicode_prop_name_pool_str1126[sizeof("inoldsoutharabian")]; char unicode_prop_name_pool_str1127[sizeof("innabataean")]; char unicode_prop_name_pool_str1128[sizeof("inalphabeticpresentationforms")]; char unicode_prop_name_pool_str1129[sizeof("spaceseparator")]; char unicode_prop_name_pool_str1135[sizeof("olower")]; char unicode_prop_name_pool_str1137[sizeof("ingeneralpunctuation")]; char unicode_prop_name_pool_str1138[sizeof("inunifiedcanadianaboriginalsyllabics")]; char unicode_prop_name_pool_str1140[sizeof("bamum")]; char unicode_prop_name_pool_str1143[sizeof("inarabic")]; char unicode_prop_name_pool_str1147[sizeof("phli")]; char unicode_prop_name_pool_str1148[sizeof("inphoneticextensionssupplement")]; char unicode_prop_name_pool_str1150[sizeof("patternwhitespace")]; char unicode_prop_name_pool_str1152[sizeof("inbasiclatin")]; char unicode_prop_name_pool_str1154[sizeof("othermath")]; char unicode_prop_name_pool_str1155[sizeof("idsbinaryoperator")]; char unicode_prop_name_pool_str1156[sizeof("inmathematicaloperators")]; char unicode_prop_name_pool_str1157[sizeof("multani")]; char unicode_prop_name_pool_str1158[sizeof("ingujarati")]; char unicode_prop_name_pool_str1163[sizeof("inelbasan")]; char unicode_prop_name_pool_str1164[sizeof("inoldhungarian")]; char unicode_prop_name_pool_str1165[sizeof("innumberforms")]; char unicode_prop_name_pool_str1166[sizeof("nd")]; char unicode_prop_name_pool_str1168[sizeof("yi")]; char unicode_prop_name_pool_str1169[sizeof("lisu")]; char unicode_prop_name_pool_str1172[sizeof("yiii")]; char unicode_prop_name_pool_str1174[sizeof("inpsalterpahlavi")]; char unicode_prop_name_pool_str1178[sizeof("tagbanwa")]; char unicode_prop_name_pool_str1184[sizeof("bass")]; char unicode_prop_name_pool_str1189[sizeof("nbat")]; char unicode_prop_name_pool_str1190[sizeof("inbyzantinemusicalsymbols")]; char unicode_prop_name_pool_str1192[sizeof("closepunctuation")]; char unicode_prop_name_pool_str1194[sizeof("tfng")]; char unicode_prop_name_pool_str1195[sizeof("otherletter")]; char unicode_prop_name_pool_str1199[sizeof("sd")]; char unicode_prop_name_pool_str1202[sizeof("lowercase")]; char unicode_prop_name_pool_str1203[sizeof("sidd")]; char unicode_prop_name_pool_str1205[sizeof("nabataean")]; char unicode_prop_name_pool_str1207[sizeof("lepcha")]; char unicode_prop_name_pool_str1208[sizeof("inarabicpresentationformsa")]; char unicode_prop_name_pool_str1210[sizeof("modifierletter")]; char unicode_prop_name_pool_str1211[sizeof("intags")]; char unicode_prop_name_pool_str1212[sizeof("mult")]; char unicode_prop_name_pool_str1215[sizeof("insiddham")]; char unicode_prop_name_pool_str1216[sizeof("talu")]; char unicode_prop_name_pool_str1221[sizeof("cased")]; char unicode_prop_name_pool_str1223[sizeof("intibetan")]; char unicode_prop_name_pool_str1230[sizeof("separator")]; char unicode_prop_name_pool_str1232[sizeof("runic")]; char unicode_prop_name_pool_str1233[sizeof("inmiscellaneousmathematicalsymbolsb")]; char unicode_prop_name_pool_str1238[sizeof("linb")]; char unicode_prop_name_pool_str1239[sizeof("inbraillepatterns")]; char unicode_prop_name_pool_str1240[sizeof("oldpersian")]; char unicode_prop_name_pool_str1242[sizeof("inugaritic")]; char unicode_prop_name_pool_str1243[sizeof("telu")]; char unicode_prop_name_pool_str1245[sizeof("limb")]; char unicode_prop_name_pool_str1247[sizeof("oldpermic")]; char unicode_prop_name_pool_str1249[sizeof("bali")]; char unicode_prop_name_pool_str1250[sizeof("inmyanmarextendedb")]; char unicode_prop_name_pool_str1251[sizeof("tibt")]; char unicode_prop_name_pool_str1259[sizeof("saur")]; char unicode_prop_name_pool_str1263[sizeof("po")]; char unicode_prop_name_pool_str1265[sizeof("tibetan")]; char unicode_prop_name_pool_str1280[sizeof("insaurashtra")]; char unicode_prop_name_pool_str1284[sizeof("inbalinese")]; char unicode_prop_name_pool_str1285[sizeof("elba")]; char unicode_prop_name_pool_str1290[sizeof("bengali")]; char unicode_prop_name_pool_str1291[sizeof("gran")]; char unicode_prop_name_pool_str1295[sizeof("phoenician")]; char unicode_prop_name_pool_str1297[sizeof("ingurmukhi")]; char unicode_prop_name_pool_str1300[sizeof("caseignorable")]; char unicode_prop_name_pool_str1305[sizeof("lyci")]; char unicode_prop_name_pool_str1307[sizeof("inyijinghexagramsymbols")]; char unicode_prop_name_pool_str1309[sizeof("mlym")]; char unicode_prop_name_pool_str1316[sizeof("lycian")]; char unicode_prop_name_pool_str1321[sizeof("elbasan")]; char unicode_prop_name_pool_str1327[sizeof("balinese")]; char unicode_prop_name_pool_str1328[sizeof("narb")]; char unicode_prop_name_pool_str1330[sizeof("brai")]; char unicode_prop_name_pool_str1333[sizeof("insuttonsignwriting")]; char unicode_prop_name_pool_str1335[sizeof("insorasompeng")]; char unicode_prop_name_pool_str1336[sizeof("malayalam")]; char unicode_prop_name_pool_str1339[sizeof("arab")]; char unicode_prop_name_pool_str1341[sizeof("brahmi")]; char unicode_prop_name_pool_str1343[sizeof("incountingrodnumerals")]; char unicode_prop_name_pool_str1347[sizeof("rjng")]; char unicode_prop_name_pool_str1348[sizeof("mong")]; char unicode_prop_name_pool_str1352[sizeof("incyrillicsupplement")]; char unicode_prop_name_pool_str1359[sizeof("ogam")]; char unicode_prop_name_pool_str1361[sizeof("sarb")]; char unicode_prop_name_pool_str1362[sizeof("lower")]; char unicode_prop_name_pool_str1364[sizeof("inrejang")]; char unicode_prop_name_pool_str1370[sizeof("hmng")]; char unicode_prop_name_pool_str1373[sizeof("tirhuta")]; char unicode_prop_name_pool_str1374[sizeof("hang")]; char unicode_prop_name_pool_str1379[sizeof("wspace")]; char unicode_prop_name_pool_str1384[sizeof("inlatinextendedd")]; char unicode_prop_name_pool_str1387[sizeof("invai")]; char unicode_prop_name_pool_str1388[sizeof("incherokeesupplement")]; char unicode_prop_name_pool_str1390[sizeof("mymr")]; char unicode_prop_name_pool_str1394[sizeof("vai")]; char unicode_prop_name_pool_str1395[sizeof("vaii")]; char unicode_prop_name_pool_str1408[sizeof("ethiopic")]; char unicode_prop_name_pool_str1410[sizeof("sylotinagri")]; char unicode_prop_name_pool_str1415[sizeof("myanmar")]; char unicode_prop_name_pool_str1417[sizeof("syrc")]; char unicode_prop_name_pool_str1419[sizeof("inbrahmi")]; char unicode_prop_name_pool_str1423[sizeof("mathsymbol")]; char unicode_prop_name_pool_str1425[sizeof("runr")]; char unicode_prop_name_pool_str1431[sizeof("inshavian")]; char unicode_prop_name_pool_str1432[sizeof("gothic")]; char unicode_prop_name_pool_str1438[sizeof("syriac")]; char unicode_prop_name_pool_str1439[sizeof("p")]; char unicode_prop_name_pool_str1441[sizeof("zp")]; char unicode_prop_name_pool_str1442[sizeof("induployan")]; char unicode_prop_name_pool_str1444[sizeof("vs")]; char unicode_prop_name_pool_str1447[sizeof("ingreekandcoptic")]; char unicode_prop_name_pool_str1448[sizeof("ingothic")]; char unicode_prop_name_pool_str1451[sizeof("lowercaseletter")]; char unicode_prop_name_pool_str1455[sizeof("inoriya")]; char unicode_prop_name_pool_str1461[sizeof("grext")]; char unicode_prop_name_pool_str1462[sizeof("linearb")]; char unicode_prop_name_pool_str1463[sizeof("inyiradicals")]; char unicode_prop_name_pool_str1465[sizeof("inethiopicsupplement")]; char unicode_prop_name_pool_str1466[sizeof("inletterlikesymbols")]; char unicode_prop_name_pool_str1467[sizeof("ingeometricshapes")]; char unicode_prop_name_pool_str1469[sizeof("java")]; char unicode_prop_name_pool_str1470[sizeof("inblockelements")]; char unicode_prop_name_pool_str1472[sizeof("number")]; char unicode_prop_name_pool_str1473[sizeof("incombininghalfmarks")]; char unicode_prop_name_pool_str1474[sizeof("inbassavah")]; char unicode_prop_name_pool_str1489[sizeof("inlinearbsyllabary")]; char unicode_prop_name_pool_str1491[sizeof("osmanya")]; char unicode_prop_name_pool_str1495[sizeof("avst")]; char unicode_prop_name_pool_str1500[sizeof("hexdigit")]; char unicode_prop_name_pool_str1504[sizeof("injavanese")]; char unicode_prop_name_pool_str1513[sizeof("cyrl")]; char unicode_prop_name_pool_str1514[sizeof("avestan")]; char unicode_prop_name_pool_str1531[sizeof("intaiviet")]; char unicode_prop_name_pool_str1532[sizeof("inornamentaldingbats")]; char unicode_prop_name_pool_str1533[sizeof("tavt")]; char unicode_prop_name_pool_str1538[sizeof("javanese")]; char unicode_prop_name_pool_str1539[sizeof("inethiopicextended")]; char unicode_prop_name_pool_str1550[sizeof("inhalfwidthandfullwidthforms")]; char unicode_prop_name_pool_str1559[sizeof("ingeorgian")]; char unicode_prop_name_pool_str1561[sizeof("inarabicmathematicalalphabeticsymbols")]; char unicode_prop_name_pool_str1569[sizeof("hangul")]; char unicode_prop_name_pool_str1571[sizeof("insuperscriptsandsubscripts")]; char unicode_prop_name_pool_str1576[sizeof("inhanunoo")]; char unicode_prop_name_pool_str1578[sizeof("inhangulsyllables")]; char unicode_prop_name_pool_str1586[sizeof("inoldpersian")]; char unicode_prop_name_pool_str1589[sizeof("geor")]; char unicode_prop_name_pool_str1591[sizeof("otherpunctuation")]; char unicode_prop_name_pool_str1593[sizeof("inoldpermic")]; char unicode_prop_name_pool_str1598[sizeof("inalchemicalsymbols")]; char unicode_prop_name_pool_str1599[sizeof("sylo")]; char unicode_prop_name_pool_str1601[sizeof("hiragana")]; char unicode_prop_name_pool_str1604[sizeof("word")]; char unicode_prop_name_pool_str1612[sizeof("inmeroitichieroglyphs")]; char unicode_prop_name_pool_str1614[sizeof("insmallformvariants")]; char unicode_prop_name_pool_str1620[sizeof("sund")]; char unicode_prop_name_pool_str1621[sizeof("brah")]; char unicode_prop_name_pool_str1623[sizeof("insupplementalmathematicaloperators")]; char unicode_prop_name_pool_str1624[sizeof("glagolitic")]; char unicode_prop_name_pool_str1627[sizeof("braille")]; char unicode_prop_name_pool_str1639[sizeof("unassigned")]; char unicode_prop_name_pool_str1640[sizeof("sgnw")]; char unicode_prop_name_pool_str1644[sizeof("plrd")]; char unicode_prop_name_pool_str1648[sizeof("hebr")]; char unicode_prop_name_pool_str1649[sizeof("ogham")]; char unicode_prop_name_pool_str1654[sizeof("cyrillic")]; char unicode_prop_name_pool_str1658[sizeof("orya")]; char unicode_prop_name_pool_str1669[sizeof("grantha")]; char unicode_prop_name_pool_str1684[sizeof("invariationselectors")]; char unicode_prop_name_pool_str1693[sizeof("indingbats")]; char unicode_prop_name_pool_str1695[sizeof("inunifiedcanadianaboriginalsyllabicsextended")]; char unicode_prop_name_pool_str1702[sizeof("inhanguljamoextendeda")]; char unicode_prop_name_pool_str1705[sizeof("goth")]; char unicode_prop_name_pool_str1706[sizeof("graphemebase")]; char unicode_prop_name_pool_str1708[sizeof("bidic")]; char unicode_prop_name_pool_str1717[sizeof("ogrext")]; char unicode_prop_name_pool_str1724[sizeof("idsb")]; char unicode_prop_name_pool_str1732[sizeof("invariationselectorssupplement")]; char unicode_prop_name_pool_str1733[sizeof("assigned")]; char unicode_prop_name_pool_str1737[sizeof("symbol")]; char unicode_prop_name_pool_str1741[sizeof("ingreekextended")]; char unicode_prop_name_pool_str1743[sizeof("pauc")]; char unicode_prop_name_pool_str1752[sizeof("meroitichieroglyphs")]; char unicode_prop_name_pool_str1754[sizeof("logicalorderexception")]; char unicode_prop_name_pool_str1771[sizeof("incurrencysymbols")]; char unicode_prop_name_pool_str1775[sizeof("inarabicextendeda")]; char unicode_prop_name_pool_str1783[sizeof("insupplementalarrowsc")]; char unicode_prop_name_pool_str1786[sizeof("insupplementalarrowsa")]; char unicode_prop_name_pool_str1788[sizeof("inkannada")]; char unicode_prop_name_pool_str1792[sizeof("kana")]; char unicode_prop_name_pool_str1793[sizeof("phagspa")]; char unicode_prop_name_pool_str1796[sizeof("cakm")]; char unicode_prop_name_pool_str1797[sizeof("digit")]; char unicode_prop_name_pool_str1802[sizeof("softdotted")]; char unicode_prop_name_pool_str1806[sizeof("inchakma")]; char unicode_prop_name_pool_str1818[sizeof("inphagspa")]; char unicode_prop_name_pool_str1822[sizeof("inhighprivateusesurrogates")]; char unicode_prop_name_pool_str1836[sizeof("warangciti")]; char unicode_prop_name_pool_str1844[sizeof("incjkcompatibilityforms")]; char unicode_prop_name_pool_str1847[sizeof("idstrinaryoperator")]; char unicode_prop_name_pool_str1849[sizeof("incjkcompatibilityideographs")]; char unicode_prop_name_pool_str1851[sizeof("inkaithi")]; char unicode_prop_name_pool_str1857[sizeof("takri")]; char unicode_prop_name_pool_str1864[sizeof("phlp")]; char unicode_prop_name_pool_str1865[sizeof("mendekikakui")]; char unicode_prop_name_pool_str1867[sizeof("punct")]; char unicode_prop_name_pool_str1870[sizeof("otherdefaultignorablecodepoint")]; char unicode_prop_name_pool_str1871[sizeof("inkatakana")]; char unicode_prop_name_pool_str1878[sizeof("graph")]; char unicode_prop_name_pool_str1879[sizeof("lydi")]; char unicode_prop_name_pool_str1885[sizeof("pd")]; char unicode_prop_name_pool_str1887[sizeof("incjkstrokes")]; char unicode_prop_name_pool_str1890[sizeof("lydian")]; char unicode_prop_name_pool_str1895[sizeof("sorasompeng")]; char unicode_prop_name_pool_str1897[sizeof("incjkcompatibilityideographssupplement")]; char unicode_prop_name_pool_str1900[sizeof("meeteimayek")]; char unicode_prop_name_pool_str1909[sizeof("otheruppercase")]; char unicode_prop_name_pool_str1912[sizeof("kali")]; char unicode_prop_name_pool_str1915[sizeof("inhanguljamo")]; char unicode_prop_name_pool_str1917[sizeof("ideographic")]; char unicode_prop_name_pool_str1935[sizeof("inmeeteimayek")]; char unicode_prop_name_pool_str1948[sizeof("incyrillicextendedb")]; char unicode_prop_name_pool_str1964[sizeof("hluw")]; char unicode_prop_name_pool_str1969[sizeof("patsyn")]; char unicode_prop_name_pool_str1972[sizeof("incombiningdiacriticalmarks")]; char unicode_prop_name_pool_str1973[sizeof("inarabicsupplement")]; char unicode_prop_name_pool_str1975[sizeof("inkanasupplement")]; char unicode_prop_name_pool_str1977[sizeof("deprecated")]; char unicode_prop_name_pool_str1978[sizeof("inverticalforms")]; char unicode_prop_name_pool_str1982[sizeof("incombiningdiacriticalmarksforsymbols")]; char unicode_prop_name_pool_str1987[sizeof("indevanagari")]; char unicode_prop_name_pool_str1989[sizeof("inbuhid")]; char unicode_prop_name_pool_str1991[sizeof("alphabetic")]; char unicode_prop_name_pool_str1995[sizeof("oldhungarian")]; char unicode_prop_name_pool_str1998[sizeof("mark")]; char unicode_prop_name_pool_str2005[sizeof("inkharoshthi")]; char unicode_prop_name_pool_str2011[sizeof("deva")]; char unicode_prop_name_pool_str2012[sizeof("invedicextensions")]; char unicode_prop_name_pool_str2019[sizeof("devanagari")]; char unicode_prop_name_pool_str2020[sizeof("incombiningdiacriticalmarkssupplement")]; char unicode_prop_name_pool_str2024[sizeof("ingeometricshapesextended")]; char unicode_prop_name_pool_str2030[sizeof("inkhmer")]; char unicode_prop_name_pool_str2034[sizeof("changeswhencasemapped")]; char unicode_prop_name_pool_str2058[sizeof("intakri")]; char unicode_prop_name_pool_str2061[sizeof("dep")]; char unicode_prop_name_pool_str2062[sizeof("takr")]; char unicode_prop_name_pool_str2080[sizeof("changeswhencasefolded")]; char unicode_prop_name_pool_str2082[sizeof("kaithi")]; char unicode_prop_name_pool_str2093[sizeof("phag")]; char unicode_prop_name_pool_str2104[sizeof("inpahawhhmong")]; char unicode_prop_name_pool_str2106[sizeof("bidicontrol")]; char unicode_prop_name_pool_str2116[sizeof("inkhojki")]; char unicode_prop_name_pool_str2126[sizeof("bamu")]; char unicode_prop_name_pool_str2127[sizeof("inbamum")]; char unicode_prop_name_pool_str2128[sizeof("changeswhentitlecased")]; char unicode_prop_name_pool_str2131[sizeof("inkhmersymbols")]; char unicode_prop_name_pool_str2132[sizeof("uideo")]; char unicode_prop_name_pool_str2133[sizeof("lu")]; char unicode_prop_name_pool_str2136[sizeof("kthi")]; char unicode_prop_name_pool_str2145[sizeof("limbu")]; char unicode_prop_name_pool_str2147[sizeof("defaultignorablecodepoint")]; char unicode_prop_name_pool_str2151[sizeof("inplayingcards")]; char unicode_prop_name_pool_str2153[sizeof("inhebrew")]; char unicode_prop_name_pool_str2161[sizeof("modifiersymbol")]; char unicode_prop_name_pool_str2167[sizeof("ugaritic")]; char unicode_prop_name_pool_str2172[sizeof("inlisu")]; char unicode_prop_name_pool_str2173[sizeof("inglagolitic")]; char unicode_prop_name_pool_str2175[sizeof("inprivateusearea")]; char unicode_prop_name_pool_str2178[sizeof("olck")]; char unicode_prop_name_pool_str2182[sizeof("inbengali")]; char unicode_prop_name_pool_str2185[sizeof("olchiki")]; char unicode_prop_name_pool_str2195[sizeof("caucasianalbanian")]; char unicode_prop_name_pool_str2210[sizeof("oldturkic")]; char unicode_prop_name_pool_str2211[sizeof("beng")]; char unicode_prop_name_pool_str2212[sizeof("intelugu")]; char unicode_prop_name_pool_str2218[sizeof("hyphen")]; char unicode_prop_name_pool_str2221[sizeof("inbuginese")]; char unicode_prop_name_pool_str2225[sizeof("intagalog")]; char unicode_prop_name_pool_str2240[sizeof("cypriot")]; char unicode_prop_name_pool_str2249[sizeof("inlimbu")]; char unicode_prop_name_pool_str2252[sizeof("graphemeextend")]; char unicode_prop_name_pool_str2255[sizeof("tagb")]; char unicode_prop_name_pool_str2259[sizeof("incypriotsyllabary")]; char unicode_prop_name_pool_str2263[sizeof("intagbanwa")]; char unicode_prop_name_pool_str2268[sizeof("inaegeannumbers")]; char unicode_prop_name_pool_str2275[sizeof("inkatakanaphoneticextensions")]; char unicode_prop_name_pool_str2276[sizeof("glag")]; char unicode_prop_name_pool_str2277[sizeof("combiningmark")]; char unicode_prop_name_pool_str2278[sizeof("palmyrene")]; char unicode_prop_name_pool_str2280[sizeof("khmr")]; char unicode_prop_name_pool_str2284[sizeof("khar")]; char unicode_prop_name_pool_str2292[sizeof("ugar")]; char unicode_prop_name_pool_str2300[sizeof("inarabicpresentationformsb")]; char unicode_prop_name_pool_str2304[sizeof("insupplementaryprivateuseareaa")]; char unicode_prop_name_pool_str2306[sizeof("variationselector")]; char unicode_prop_name_pool_str2311[sizeof("nko")]; char unicode_prop_name_pool_str2312[sizeof("nkoo")]; char unicode_prop_name_pool_str2330[sizeof("inbamumsupplement")]; char unicode_prop_name_pool_str2336[sizeof("tglg")]; char unicode_prop_name_pool_str2338[sizeof("any")]; char unicode_prop_name_pool_str2339[sizeof("enclosingmark")]; char unicode_prop_name_pool_str2348[sizeof("gujr")]; char unicode_prop_name_pool_str2358[sizeof("changeswhenlowercased")]; char unicode_prop_name_pool_str2363[sizeof("knda")]; char unicode_prop_name_pool_str2364[sizeof("hung")]; char unicode_prop_name_pool_str2365[sizeof("gujarati")]; char unicode_prop_name_pool_str2368[sizeof("bopo")]; char unicode_prop_name_pool_str2373[sizeof("inmendekikakui")]; char unicode_prop_name_pool_str2376[sizeof("inbopomofo")]; char unicode_prop_name_pool_str2386[sizeof("kharoshthi")]; char unicode_prop_name_pool_str2388[sizeof("kannada")]; char unicode_prop_name_pool_str2401[sizeof("khoj")]; char unicode_prop_name_pool_str2422[sizeof("cherokee")]; char unicode_prop_name_pool_str2426[sizeof("inlatinextendedb")]; char unicode_prop_name_pool_str2432[sizeof("dashpunctuation")]; char unicode_prop_name_pool_str2435[sizeof("dupl")]; char unicode_prop_name_pool_str2443[sizeof("inyisyllables")]; char unicode_prop_name_pool_str2451[sizeof("georgian")]; char unicode_prop_name_pool_str2453[sizeof("rejang")]; char unicode_prop_name_pool_str2455[sizeof("oupper")]; char unicode_prop_name_pool_str2477[sizeof("aghb")]; char unicode_prop_name_pool_str2491[sizeof("khmer")]; char unicode_prop_name_pool_str2494[sizeof("grbase")]; char unicode_prop_name_pool_str2503[sizeof("currencysymbol")]; char unicode_prop_name_pool_str2529[sizeof("incombiningdiacriticalmarksextended")]; char unicode_prop_name_pool_str2542[sizeof("spacingmark")]; char unicode_prop_name_pool_str2544[sizeof("orkh")]; char unicode_prop_name_pool_str2550[sizeof("cwu")]; char unicode_prop_name_pool_str2552[sizeof("hebrew")]; char unicode_prop_name_pool_str2570[sizeof("insupplementalpunctuation")]; char unicode_prop_name_pool_str2581[sizeof("oldnortharabian")]; char unicode_prop_name_pool_str2587[sizeof("incjksymbolsandpunctuation")]; char unicode_prop_name_pool_str2590[sizeof("othergraphemeextend")]; char unicode_prop_name_pool_str2613[sizeof("indevanagariextended")]; char unicode_prop_name_pool_str2621[sizeof("tagalog")]; char unicode_prop_name_pool_str2628[sizeof("surrogate")]; char unicode_prop_name_pool_str2650[sizeof("bopomofo")]; char unicode_prop_name_pool_str2679[sizeof("ingeorgiansupplement")]; char unicode_prop_name_pool_str2704[sizeof("uppercase")]; char unicode_prop_name_pool_str2711[sizeof("unifiedideograph")]; char unicode_prop_name_pool_str2742[sizeof("inpaucinhau")]; char unicode_prop_name_pool_str2743[sizeof("paucinhau")]; char unicode_prop_name_pool_str2774[sizeof("insupplementalsymbolsandpictographs")]; char unicode_prop_name_pool_str2792[sizeof("nonspacingmark")]; char unicode_prop_name_pool_str2794[sizeof("inhanguljamoextendedb")]; char unicode_prop_name_pool_str2802[sizeof("inhighsurrogates")]; char unicode_prop_name_pool_str2803[sizeof("punctuation")]; char unicode_prop_name_pool_str2834[sizeof("openpunctuation")]; char unicode_prop_name_pool_str2835[sizeof("bassavah")]; char unicode_prop_name_pool_str2864[sizeof("upper")]; char unicode_prop_name_pool_str2878[sizeof("insupplementalarrowsb")]; char unicode_prop_name_pool_str2879[sizeof("inkanbun")]; char unicode_prop_name_pool_str2918[sizeof("inkangxiradicals")]; char unicode_prop_name_pool_str2922[sizeof("inmeroiticcursive")]; char unicode_prop_name_pool_str2925[sizeof("signwriting")]; char unicode_prop_name_pool_str2928[sizeof("incjkradicalssupplement")]; char unicode_prop_name_pool_str2930[sizeof("pahawhhmong")]; char unicode_prop_name_pool_str2952[sizeof("inkayahli")]; char unicode_prop_name_pool_str2953[sizeof("uppercaseletter")]; char unicode_prop_name_pool_str2955[sizeof("batk")]; char unicode_prop_name_pool_str2960[sizeof("inbatak")]; char unicode_prop_name_pool_str2968[sizeof("incjkcompatibility")]; char unicode_prop_name_pool_str2983[sizeof("buhd")]; char unicode_prop_name_pool_str2989[sizeof("egyp")]; char unicode_prop_name_pool_str3009[sizeof("innoblock")]; char unicode_prop_name_pool_str3043[sizeof("inegyptianhieroglyphs")]; char unicode_prop_name_pool_str3084[sizeof("grek")]; char unicode_prop_name_pool_str3176[sizeof("bugi")]; char unicode_prop_name_pool_str3230[sizeof("changeswhenuppercased")]; char unicode_prop_name_pool_str3234[sizeof("paragraphseparator")]; char unicode_prop_name_pool_str3254[sizeof("buginese")]; char unicode_prop_name_pool_str3282[sizeof("guru")]; char unicode_prop_name_pool_str3299[sizeof("inbopomofoextended")]; char unicode_prop_name_pool_str3312[sizeof("telugu")]; char unicode_prop_name_pool_str3343[sizeof("quotationmark")]; char unicode_prop_name_pool_str3364[sizeof("inkhudawadi")]; char unicode_prop_name_pool_str3370[sizeof("kayahli")]; char unicode_prop_name_pool_str3372[sizeof("oldsoutharabian")]; char unicode_prop_name_pool_str3396[sizeof("insupplementaryprivateuseareab")]; char unicode_prop_name_pool_str3479[sizeof("inhangulcompatibilityjamo")]; char unicode_prop_name_pool_str3491[sizeof("zyyy")]; char unicode_prop_name_pool_str3555[sizeof("qmark")]; char unicode_prop_name_pool_str3566[sizeof("buhid")]; char unicode_prop_name_pool_str3567[sizeof("sk")]; char unicode_prop_name_pool_str3582[sizeof("unknown")]; char unicode_prop_name_pool_str3619[sizeof("khudawadi")]; char unicode_prop_name_pool_str3644[sizeof("katakana")]; char unicode_prop_name_pool_str3670[sizeof("incjkunifiedideographsextensionc")]; char unicode_prop_name_pool_str3673[sizeof("incjkunifiedideographsextensiona")]; char unicode_prop_name_pool_str3685[sizeof("incjkunifiedideographs")]; char unicode_prop_name_pool_str3700[sizeof("incjkunifiedideographsextensione")]; char unicode_prop_name_pool_str3743[sizeof("duployan")]; char unicode_prop_name_pool_str3763[sizeof("egyptianhieroglyphs")]; char unicode_prop_name_pool_str3853[sizeof("inboxdrawing")]; char unicode_prop_name_pool_str4106[sizeof("khojki")]; char unicode_prop_name_pool_str4244[sizeof("incjkunifiedideographsextensiond")]; char unicode_prop_name_pool_str4722[sizeof("batak")]; char unicode_prop_name_pool_str4765[sizeof("incjkunifiedideographsextensionb")]; char unicode_prop_name_pool_str4780[sizeof("blank")]; char unicode_prop_name_pool_str4851[sizeof("greek")]; char unicode_prop_name_pool_str4943[sizeof("grlink")]; char unicode_prop_name_pool_str5054[sizeof("gurmukhi")]; char unicode_prop_name_pool_str5162[sizeof("graphemelink")]; }; static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = { "n", "z", "zzzz", "mn", "cn", "ci", "m", "c", "inmanichaean", "mani", "mc", "cc", "qaai", "qaac", "incham", "mandaic", "sm", "sc", "cans", "ascii", "insamaritan", "incuneiform", "s", "inarmenian", "zs", "cs", "me", "incommonindicnumberforms", "inavestan", "inthai", "inipaextensions", "initialpunctuation", "inancientsymbols", "inthaana", "cf", "incuneiformnumbersandpunctuation", "mtei", "inspecials", "inmusicalsymbols", "inmiscellaneousmathematicalsymbolsa", "lm", "lina", "lc", "inlycian", "lana", "intaixuanjingsymbols", "inmyanmarextendeda", "alnum", "sterm", "intaitham", "intransportandmapsymbols", "taile", "inmalayalam", "inmiscellaneoussymbols", "incontrolpictures", "inmiscellaneoussymbolsandarrows", "inlineara", "inmiscellaneoussymbolsandpictographs", "sinhala", "taiviet", "ext", "latn", "latin", "ital", "intamil", "inmultani", "taml", "inrunic", "incarian", "armn", "armi", "cari", "inlatinextendedc", "armenian", "inmyanmar", "incyrillic", "inlatinextendeda", "carian", "intaile", "tale", "arabic", "l", "nl", "zl", "insyriac", "samr", "merc", "inlinearbideograms", "samaritan", "lt", "insharada", "inmeeteimayekextensions", "inruminumeralsymbols", "miao", "inlatinextendede", "zinh", "inahom", "incherokee", "han", "hani", "inosmanya", "inmiscellaneoustechnical", "cham", "inmahajani", "osma", "manichaean", "term", "sinh", "cntrl", "chakma", "insinhala", "tamil", "inethiopic", "connectorpunctuation", "shavian", "joinc", "inenclosedalphanumerics", "ahex", "inlatinextendedadditional", "lineara", "inenclosedcjklettersandmonths", "hex", "thai", "mahj", "math", "ll", "thaa", "hatran", "mahajani", "insinhalaarchaicnumbers", "taitham", "thaana", "ethi", "inenclosedalphanumericsupplement", "meroiticcursive", "inideographicdescriptioncharacters", "terminalpunctuation", "inemoticons", "intifinagh", "asciihexdigit", "tifinagh", "inearlydynasticcuneiform", "inopticalcharacterrecognition", "loe", "titlecaseletter", "inscriptionalparthian", "oriya", "hira", "sora", "mero", "inarrows", "inhiragana", "no", "inmahjongtiles", "innko", "co", "cher", "inmro", "common", "cwcm", "inmiao", "inscriptionalpahlavi", "inmathematicalalphanumericsymbols", "so", "hano", "tirh", "inhatran", "inolchiki", "ahom", "di", "hatr", "inogham", "intirhuta", "inmodi", "idc", "mand", "inmandaic", "dia", "cwcf", "xidc", "sind", "newline", "mend", "newtailue", "inshorthandformatcontrols", "anatolianhieroglyphs", "xids", "ids", "innewtailue", "insylotinagri", "insundanese", "lo", "indominotiles", "inlao", "lao", "laoo", "mongolian", "cwt", "idst", "format", "lineseparator", "letter", "idcontinue", "inanatolianhieroglyphs", "inlydian", "pi", "nchar", "inspacingmodifierletters", "oalpha", "indeseret", "pc", "xdigit", "inphaistosdisc", "joincontrol", "inlowsurrogates", "mro", "mroo", "xidstart", "wara", "inwarangciti", "ps", "pe", "cwl", "incoptic", "diacritic", "pf", "space", "hanunoo", "incyrillicextendeda", "odi", "modi", "oidc", "incopticepactnumbers", "palm", "insundanesesupplement", "patws", "inolditalic", "inlepcha", "shaw", "omath", "alpha", "oids", "control", "ideo", "lepc", "psalterpahlavi", "dsrt", "otheridcontinue", "inpalmyrene", "decimalnumber", "noncharactercodepoint", "idstart", "otheralphabetic", "letternumber", "dash", "xidcontinue", "finalpunctuation", "extender", "siddham", "inoldturkic", "sharada", "whitespace", "inmodifiertoneletters", "radical", "canadianaboriginal", "inethiopicextendeda", "imperialaramaic", "perm", "deseret", "casedletter", "inimperialaramaic", "otheridstart", "prti", "cprt", "othersymbol", "coptic", "otherlowercase", "phnx", "inphoenician", "incaucasianalbanian", "inlatin1supplement", "xpeo", "ininscriptionalparthian", "ininscriptionalpahlavi", "other", "privateuse", "othernumber", "inenclosedideographicsupplement", "copt", "print", "cuneiform", "olditalic", "xsux", "inmongolian", "inancientgreekmusicalnotation", "sundanese", "inoldnortharabian", "patternsyntax", "inherited", "ingrantha", "inphoneticextensions", "saurashtra", "inancientgreeknumbers", "shrd", "inoldsoutharabian", "innabataean", "inalphabeticpresentationforms", "spaceseparator", "olower", "ingeneralpunctuation", "inunifiedcanadianaboriginalsyllabics", "bamum", "inarabic", "phli", "inphoneticextensionssupplement", "patternwhitespace", "inbasiclatin", "othermath", "idsbinaryoperator", "inmathematicaloperators", "multani", "ingujarati", "inelbasan", "inoldhungarian", "innumberforms", "nd", "yi", "lisu", "yiii", "inpsalterpahlavi", "tagbanwa", "bass", "nbat", "inbyzantinemusicalsymbols", "closepunctuation", "tfng", "otherletter", "sd", "lowercase", "sidd", "nabataean", "lepcha", "inarabicpresentationformsa", "modifierletter", "intags", "mult", "insiddham", "talu", "cased", "intibetan", "separator", "runic", "inmiscellaneousmathematicalsymbolsb", "linb", "inbraillepatterns", "oldpersian", "inugaritic", "telu", "limb", "oldpermic", "bali", "inmyanmarextendedb", "tibt", "saur", "po", "tibetan", "insaurashtra", "inbalinese", "elba", "bengali", "gran", "phoenician", "ingurmukhi", "caseignorable", "lyci", "inyijinghexagramsymbols", "mlym", "lycian", "elbasan", "balinese", "narb", "brai", "insuttonsignwriting", "insorasompeng", "malayalam", "arab", "brahmi", "incountingrodnumerals", "rjng", "mong", "incyrillicsupplement", "ogam", "sarb", "lower", "inrejang", "hmng", "tirhuta", "hang", "wspace", "inlatinextendedd", "invai", "incherokeesupplement", "mymr", "vai", "vaii", "ethiopic", "sylotinagri", "myanmar", "syrc", "inbrahmi", "mathsymbol", "runr", "inshavian", "gothic", "syriac", "p", "zp", "induployan", "vs", "ingreekandcoptic", "ingothic", "lowercaseletter", "inoriya", "grext", "linearb", "inyiradicals", "inethiopicsupplement", "inletterlikesymbols", "ingeometricshapes", "java", "inblockelements", "number", "incombininghalfmarks", "inbassavah", "inlinearbsyllabary", "osmanya", "avst", "hexdigit", "injavanese", "cyrl", "avestan", "intaiviet", "inornamentaldingbats", "tavt", "javanese", "inethiopicextended", "inhalfwidthandfullwidthforms", "ingeorgian", "inarabicmathematicalalphabeticsymbols", "hangul", "insuperscriptsandsubscripts", "inhanunoo", "inhangulsyllables", "inoldpersian", "geor", "otherpunctuation", "inoldpermic", "inalchemicalsymbols", "sylo", "hiragana", "word", "inmeroitichieroglyphs", "insmallformvariants", "sund", "brah", "insupplementalmathematicaloperators", "glagolitic", "braille", "unassigned", "sgnw", "plrd", "hebr", "ogham", "cyrillic", "orya", "grantha", "invariationselectors", "indingbats", "inunifiedcanadianaboriginalsyllabicsextended", "inhanguljamoextendeda", "goth", "graphemebase", "bidic", "ogrext", "idsb", "invariationselectorssupplement", "assigned", "symbol", "ingreekextended", "pauc", "meroitichieroglyphs", "logicalorderexception", "incurrencysymbols", "inarabicextendeda", "insupplementalarrowsc", "insupplementalarrowsa", "inkannada", "kana", "phagspa", "cakm", "digit", "softdotted", "inchakma", "inphagspa", "inhighprivateusesurrogates", "warangciti", "incjkcompatibilityforms", "idstrinaryoperator", "incjkcompatibilityideographs", "inkaithi", "takri", "phlp", "mendekikakui", "punct", "otherdefaultignorablecodepoint", "inkatakana", "graph", "lydi", "pd", "incjkstrokes", "lydian", "sorasompeng", "incjkcompatibilityideographssupplement", "meeteimayek", "otheruppercase", "kali", "inhanguljamo", "ideographic", "inmeeteimayek", "incyrillicextendedb", "hluw", "patsyn", "incombiningdiacriticalmarks", "inarabicsupplement", "inkanasupplement", "deprecated", "inverticalforms", "incombiningdiacriticalmarksforsymbols", "indevanagari", "inbuhid", "alphabetic", "oldhungarian", "mark", "inkharoshthi", "deva", "invedicextensions", "devanagari", "incombiningdiacriticalmarkssupplement", "ingeometricshapesextended", "inkhmer", "changeswhencasemapped", "intakri", "dep", "takr", "changeswhencasefolded", "kaithi", "phag", "inpahawhhmong", "bidicontrol", "inkhojki", "bamu", "inbamum", "changeswhentitlecased", "inkhmersymbols", "uideo", "lu", "kthi", "limbu", "defaultignorablecodepoint", "inplayingcards", "inhebrew", "modifiersymbol", "ugaritic", "inlisu", "inglagolitic", "inprivateusearea", "olck", "inbengali", "olchiki", "caucasianalbanian", "oldturkic", "beng", "intelugu", "hyphen", "inbuginese", "intagalog", "cypriot", "inlimbu", "graphemeextend", "tagb", "incypriotsyllabary", "intagbanwa", "inaegeannumbers", "inkatakanaphoneticextensions", "glag", "combiningmark", "palmyrene", "khmr", "khar", "ugar", "inarabicpresentationformsb", "insupplementaryprivateuseareaa", "variationselector", "nko", "nkoo", "inbamumsupplement", "tglg", "any", "enclosingmark", "gujr", "changeswhenlowercased", "knda", "hung", "gujarati", "bopo", "inmendekikakui", "inbopomofo", "kharoshthi", "kannada", "khoj", "cherokee", "inlatinextendedb", "dashpunctuation", "dupl", "inyisyllables", "georgian", "rejang", "oupper", "aghb", "khmer", "grbase", "currencysymbol", "incombiningdiacriticalmarksextended", "spacingmark", "orkh", "cwu", "hebrew", "insupplementalpunctuation", "oldnortharabian", "incjksymbolsandpunctuation", "othergraphemeextend", "indevanagariextended", "tagalog", "surrogate", "bopomofo", "ingeorgiansupplement", "uppercase", "unifiedideograph", "inpaucinhau", "paucinhau", "insupplementalsymbolsandpictographs", "nonspacingmark", "inhanguljamoextendedb", "inhighsurrogates", "punctuation", "openpunctuation", "bassavah", "upper", "insupplementalarrowsb", "inkanbun", "inkangxiradicals", "inmeroiticcursive", "signwriting", "incjkradicalssupplement", "pahawhhmong", "inkayahli", "uppercaseletter", "batk", "inbatak", "incjkcompatibility", "buhd", "egyp", "innoblock", "inegyptianhieroglyphs", "grek", "bugi", "changeswhenuppercased", "paragraphseparator", "buginese", "guru", "inbopomofoextended", "telugu", "quotationmark", "inkhudawadi", "kayahli", "oldsoutharabian", "insupplementaryprivateuseareab", "inhangulcompatibilityjamo", "zyyy", "qmark", "buhid", "sk", "unknown", "khudawadi", "katakana", "incjkunifiedideographsextensionc", "incjkunifiedideographsextensiona", "incjkunifiedideographs", "incjkunifiedideographsextensione", "duployan", "egyptianhieroglyphs", "inboxdrawing", "khojki", "incjkunifiedideographsextensiond", "batak", "incjkunifiedideographsextensionb", "blank", "greek", "grlink", "gurmukhi", "graphemelink" }; #define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif const struct PoolPropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { static const struct PoolPropertyNameCtype wordlist[] = { {-1}, {pool_offset(1), 144}, {-1}, {pool_offset(3), 234}, {-1}, {-1}, {-1}, {-1}, {pool_offset(8), 225}, {pool_offset(9), 138}, {pool_offset(10), 51}, {-1}, {-1}, {-1}, {pool_offset(14), 38}, {pool_offset(15), 125}, {-1}, {pool_offset(17), 35}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(23), 430}, {pool_offset(24), 129}, {pool_offset(25), 131}, {pool_offset(26), 41}, {-1}, {pool_offset(28), 94}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(34), 54}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(41), 373}, {-1}, {-1}, {-1}, {-1}, {pool_offset(46), 128}, {-1}, {-1}, {pool_offset(49), 202}, {-1}, {pool_offset(51), 195}, {-1}, {-1}, {-1}, {-1}, {pool_offset(56), 36}, {-1}, {-1}, {-1}, {-1}, {pool_offset(61), 14}, {-1}, {-1}, {pool_offset(64), 255}, {-1}, {pool_offset(66), 456}, {pool_offset(67), 191}, {pool_offset(68), 248}, {pool_offset(69), 237}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(76), 55}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(85), 132}, {-1}, {-1}, {-1}, {-1}, {pool_offset(90), 364}, {-1}, {-1}, {pool_offset(93), 431}, {pool_offset(94), 268}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(103), 242}, {-1}, {-1}, {-1}, {-1}, {pool_offset(108), 183}, {-1}, {-1}, {-1}, {pool_offset(112), 402}, {-1}, {pool_offset(114), 253}, {-1}, {pool_offset(116), 42}, {-1}, {pool_offset(118), 457}, {-1}, {-1}, {-1}, {pool_offset(122), 133}, {-1}, {pool_offset(124), 397}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(133), 470}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(141), 323}, {-1}, {-1}, {-1}, {pool_offset(145), 117}, {pool_offset(146), 113}, {pool_offset(147), 108}, {-1}, {pool_offset(149), 404}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(155), 212}, {-1}, {pool_offset(157), 472}, {pool_offset(158), 374}, {pool_offset(159), 13}, {-1}, {pool_offset(161), 192}, {pool_offset(162), 292}, {pool_offset(163), 486}, {-1}, {pool_offset(165), 211}, {-1}, {pool_offset(167), 266}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(176), 321}, {pool_offset(177), 315}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(185), 329}, {-1}, {-1}, {-1}, {pool_offset(189), 417}, {pool_offset(190), 483}, {-1}, {-1}, {pool_offset(193), 200}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(202), 213}, {-1}, {-1}, {pool_offset(205), 69}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(215), 110}, {pool_offset(216), 110}, {pool_offset(217), 155}, {pool_offset(218), 263}, {-1}, {pool_offset(220), 446}, {-1}, {pool_offset(222), 215}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(229), 279}, {pool_offset(230), 405}, {-1}, {pool_offset(232), 21}, {-1}, {pool_offset(234), 93}, {pool_offset(235), 37}, {pool_offset(236), 331}, {-1}, {pool_offset(238), 21}, {pool_offset(239), 271}, {pool_offset(240), 246}, {-1}, {pool_offset(242), 240}, {-1}, {-1}, {-1}, {pool_offset(246), 37}, {-1}, {-1}, {pool_offset(249), 288}, {-1}, {-1}, {-1}, {pool_offset(253), 211}, {-1}, {-1}, {pool_offset(256), 20}, {-1}, {-1}, {pool_offset(259), 107}, {pool_offset(260), 149}, {pool_offset(261), 235}, {-1}, {pool_offset(263), 251}, {-1}, {pool_offset(265), 193}, {-1}, {pool_offset(267), 135}, {-1}, {pool_offset(269), 399}, {-1}, {-1}, {pool_offset(272), 193}, {pool_offset(273), 121}, {-1}, {-1}, {pool_offset(276), 443}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(283), 376}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(292), 437}, {-1}, {-1}, {pool_offset(295), 137}, {pool_offset(296), 378}, {-1}, {-1}, {-1}, {pool_offset(300), 94}, {-1}, {-1}, {-1}, {pool_offset(304), 453}, {-1}, {pool_offset(306), 276}, {pool_offset(307), 80}, {-1}, {-1}, {pool_offset(310), 80}, {pool_offset(311), 414}, {pool_offset(312), 314}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(323), 44}, {-1}, {pool_offset(325), 442}, {pool_offset(326), 162}, {-1}, {-1}, {pool_offset(329), 129}, {pool_offset(330), 217}, {-1}, {pool_offset(332), 200}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(342), 3}, {-1}, {-1}, {-1}, {-1}, {pool_offset(347), 43}, {pool_offset(348), 267}, {-1}, {-1}, {-1}, {pool_offset(352), 215}, {pool_offset(353), 274}, {-1}, {-1}, {pool_offset(356), 177}, {pool_offset(357), 197}, {-1}, {-1}, {-1}, {pool_offset(361), 98}, {pool_offset(362), 317}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(368), 15}, {pool_offset(369), 304}, {pool_offset(370), 113}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(377), 350}, {pool_offset(378), 85}, {-1}, {-1}, {pool_offset(381), 219}, {pool_offset(382), 126}, {-1}, {-1}, {-1}, {pool_offset(386), 130}, {-1}, {-1}, {pool_offset(389), 116}, {pool_offset(390), 218}, {-1}, {pool_offset(392), 83}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(399), 126}, {pool_offset(400), 444}, {-1}, {pool_offset(402), 212}, {pool_offset(403), 218}, {-1}, {-1}, {-1}, {-1}, {pool_offset(408), 68}, {pool_offset(409), 481}, {-1}, {-1}, {-1}, {-1}, {pool_offset(414), 135}, {pool_offset(415), 340}, {-1}, {-1}, {-1}, {pool_offset(419), 217}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(426), 484}, {-1}, {-1}, {-1}, {-1}, {pool_offset(431), 334}, {-1}, {pool_offset(433), 15}, {-1}, {-1}, {-1}, {-1}, {pool_offset(438), 221}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(451), 458}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(457), 316}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(479), 119}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(486), 121}, {-1}, {-1}, {pool_offset(489), 96}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(510), 161}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(520), 86}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(529), 205}, {pool_offset(530), 136}, {-1}, {-1}, {-1}, {-1}, {pool_offset(535), 312}, {-1}, {pool_offset(537), 342}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(544), 150}, {pool_offset(545), 478}, {-1}, {-1}, {-1}, {pool_offset(549), 254}, {-1}, {-1}, {pool_offset(552), 52}, {pool_offset(553), 50}, {-1}, {-1}, {pool_offset(556), 462}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(563), 53}, {pool_offset(564), 46}, {-1}, {-1}, {-1}, {pool_offset(568), 465}, {-1}, {-1}, {-1}, {-1}, {pool_offset(573), 95}, {-1}, {-1}, {pool_offset(576), 474}, {pool_offset(577), 203}, {-1}, {pool_offset(579), 82}, {pool_offset(580), 222}, {-1}, {-1}, {-1}, {pool_offset(584), 422}, {pool_offset(585), 298}, {pool_offset(586), 16}, {-1}, {pool_offset(588), 60}, {pool_offset(589), 83}, {-1}, {pool_offset(591), 278}, {-1}, {-1}, {-1}, {-1}, {pool_offset(596), 449}, {-1}, {-1}, {-1}, {-1}, {pool_offset(601), 451}, {-1}, {pool_offset(603), 90}, {pool_offset(604), 128}, {-1}, {-1}, {-1}, {pool_offset(608), 256}, {pool_offset(609), 64}, {pool_offset(610), 45}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(618), 231}, {-1}, {-1}, {pool_offset(621), 106}, {pool_offset(622), 0}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(631), 134}, {-1}, {-1}, {-1}, {pool_offset(635), 147}, {-1}, {-1}, {pool_offset(638), 468}, {-1}, {-1}, {-1}, {pool_offset(642), 18}, {pool_offset(643), 232}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(653), 91}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(659), 289}, {pool_offset(660), 363}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(666), 295}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(673), 118}, {-1}, {-1}, {-1}, {pool_offset(677), 479}, {pool_offset(678), 269}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(685), 109}, {pool_offset(686), 109}, {pool_offset(687), 140}, {-1}, {-1}, {pool_offset(690), 48}, {-1}, {pool_offset(692), 89}, {pool_offset(693), 42}, {-1}, {-1}, {pool_offset(696), 235}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(702), 107}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(711), 90}, {-1}, {-1}, {pool_offset(714), 460}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(723), 424}, {-1}, {pool_offset(725), 183}, {pool_offset(726), 151}, {-1}, {-1}, {-1}, {-1}, {pool_offset(731), 243}, {pool_offset(732), 163}, {-1}, {-1}, {pool_offset(735), 412}, {-1}, {pool_offset(737), 177}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(756), 11}, {-1}, {pool_offset(758), 403}, {pool_offset(759), 98}, {pool_offset(760), 385}, {-1}, {pool_offset(762), 141}, {pool_offset(763), 141}, {-1}, {-1}, {-1}, {pool_offset(767), 232}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(773), 229}, {-1}, {-1}, {pool_offset(776), 454}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(787), 185}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(797), 179}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(806), 47}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(816), 332}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(824), 64}, {-1}, {-1}, {pool_offset(827), 180}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(844), 9}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(853), 82}, {-1}, {-1}, {pool_offset(856), 336}, {-1}, {-1}, {-1}, {pool_offset(860), 164}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(866), 139}, {pool_offset(867), 166}, {pool_offset(868), 406}, {-1}, {pool_offset(870), 173}, {pool_offset(871), 299}, {pool_offset(872), 175}, {-1}, {-1}, {-1}, {pool_offset(876), 407}, {pool_offset(877), 297}, {pool_offset(878), 197}, {-1}, {pool_offset(880), 169}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(886), 1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(892), 167}, {-1}, {-1}, {-1}, {pool_offset(896), 41}, {pool_offset(897), 92}, {pool_offset(898), 111}, {pool_offset(899), 186}, {pool_offset(900), 62}, {-1}, {pool_offset(902), 166}, {-1}, {-1}, {-1}, {pool_offset(906), 420}, {pool_offset(907), 146}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(915), 151}, {pool_offset(916), 91}, {pool_offset(917), 163}, {pool_offset(918), 149}, {-1}, {-1}, {-1}, {-1}, {pool_offset(923), 59}, {-1}, {-1}, {pool_offset(926), 231}, {-1}, {-1}, {-1}, {pool_offset(930), 180}, {pool_offset(931), 69}, {-1}, {-1}, {-1}, {pool_offset(935), 198}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(945), 435}, {-1}, {-1}, {pool_offset(948), 196}, {-1}, {-1}, {pool_offset(951), 230}, {-1}, {-1}, {-1}, {-1}, {pool_offset(956), 361}, {-1}, {pool_offset(958), 188}, {-1}, {pool_offset(960), 36}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(969), 377}, {pool_offset(970), 93}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(978), 157}, {pool_offset(979), 62}, {-1}, {-1}, {-1}, {-1}, {pool_offset(984), 108}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(998), 419}, {-1}, {-1}, {pool_offset(1001), 167}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1006), 96}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1012), 57}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1018), 203}, {-1}, {-1}, {-1}, {pool_offset(1022), 54}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1037), 168}, {pool_offset(1038), 182}, {-1}, {-1}, {-1}, {pool_offset(1042), 423}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1049), 416}, {pool_offset(1050), 239}, {-1}, {-1}, {-1}, {pool_offset(1054), 158}, {-1}, {-1}, {-1}, {pool_offset(1058), 432}, {pool_offset(1059), 433}, {pool_offset(1060), 35}, {pool_offset(1061), 52}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1066), 150}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1071), 482}, {-1}, {pool_offset(1073), 54}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1078), 7}, {-1}, {pool_offset(1080), 56}, {pool_offset(1081), 155}, {pool_offset(1082), 56}, {-1}, {-1}, {-1}, {pool_offset(1086), 285}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1091), 471}, {pool_offset(1092), 206}, {pool_offset(1093), 429}, {-1}, {pool_offset(1095), 174}, {-1}, {-1}, {pool_offset(1098), 94}, {pool_offset(1099), 448}, {pool_offset(1100), 301}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1110), 194}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1116), 401}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1122), 196}, {-1}, {-1}, {-1}, {pool_offset(1126), 428}, {pool_offset(1127), 421}, {pool_offset(1128), 388}, {pool_offset(1129), 237}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1135), 168}, {-1}, {pool_offset(1137), 306}, {pool_offset(1138), 277}, {-1}, {pool_offset(1140), 25}, {-1}, {-1}, {pool_offset(1143), 250}, {-1}, {-1}, {-1}, {pool_offset(1147), 95}, {pool_offset(1148), 302}, {-1}, {pool_offset(1150), 175}, {-1}, {pool_offset(1152), 238}, {-1}, {pool_offset(1154), 169}, {pool_offset(1155), 88}, {pool_offset(1156), 313}, {pool_offset(1157), 142}, {pool_offset(1158), 261}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1163), 415}, {pool_offset(1164), 436}, {pool_offset(1165), 311}, {pool_offset(1166), 146}, {-1}, {pool_offset(1168), 233}, {pool_offset(1169), 115}, {-1}, {-1}, {pool_offset(1172), 233}, {-1}, {pool_offset(1174), 434}, {-1}, {-1}, {-1}, {pool_offset(1178), 210}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1184), 26}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1189), 145}, {pool_offset(1190), 469}, {-1}, {pool_offset(1192), 179}, {-1}, {pool_offset(1194), 221}, {pool_offset(1195), 118}, {-1}, {-1}, {-1}, {pool_offset(1199), 204}, {-1}, {-1}, {pool_offset(1202), 120}, {pool_offset(1203), 198}, {-1}, {pool_offset(1205), 145}, {-1}, {pool_offset(1207), 111}, {pool_offset(1208), 389}, {-1}, {pool_offset(1210), 117}, {pool_offset(1211), 496}, {pool_offset(1212), 142}, {-1}, {-1}, {pool_offset(1215), 450}, {pool_offset(1216), 147}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1221), 39}, {-1}, {pool_offset(1223), 270}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1230), 234}, {-1}, {pool_offset(1232), 190}, {pool_offset(1233), 327}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1238), 114}, {pool_offset(1239), 325}, {pool_offset(1240), 158}, {-1}, {pool_offset(1242), 410}, {pool_offset(1243), 216}, {-1}, {pool_offset(1245), 112}, {-1}, {pool_offset(1247), 157}, {-1}, {pool_offset(1249), 24}, {pool_offset(1250), 372}, {pool_offset(1251), 220}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1259), 194}, {-1}, {-1}, {-1}, {pool_offset(1263), 184}, {-1}, {pool_offset(1265), 220}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1280), 366}, {-1}, {-1}, {-1}, {pool_offset(1284), 294}, {pool_offset(1285), 67}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1290), 28}, {pool_offset(1291), 73}, {-1}, {-1}, {-1}, {pool_offset(1295), 182}, {-1}, {pool_offset(1297), 260}, {-1}, {-1}, {pool_offset(1300), 38}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1305), 123}, {-1}, {pool_offset(1307), 353}, {-1}, {pool_offset(1309), 127}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1316), 123}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1321), 67}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1327), 24}, {pool_offset(1328), 156}, {-1}, {pool_offset(1330), 32}, {-1}, {-1}, {pool_offset(1333), 475}, {-1}, {pool_offset(1335), 440}, {pool_offset(1336), 127}, {-1}, {-1}, {pool_offset(1339), 20}, {-1}, {pool_offset(1341), 31}, {-1}, {pool_offset(1343), 473}, {-1}, {-1}, {-1}, {pool_offset(1347), 189}, {pool_offset(1348), 140}, {-1}, {-1}, {-1}, {pool_offset(1352), 247}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1359), 152}, {-1}, {pool_offset(1361), 159}, {pool_offset(1362), 6}, {-1}, {pool_offset(1364), 369}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1370), 172}, {-1}, {-1}, {pool_offset(1373), 222}, {pool_offset(1374), 81}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1379), 230}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1384), 362}, {-1}, {-1}, {pool_offset(1387), 358}, {pool_offset(1388), 379}, {-1}, {pool_offset(1390), 143}, {-1}, {-1}, {-1}, {pool_offset(1394), 227}, {pool_offset(1395), 227}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1408), 68}, {-1}, {pool_offset(1410), 207}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1415), 143}, {-1}, {pool_offset(1417), 208}, {-1}, {pool_offset(1419), 438}, {-1}, {-1}, {-1}, {pool_offset(1423), 202}, {-1}, {pool_offset(1425), 190}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1431), 413}, {pool_offset(1432), 72}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1438), 208}, {pool_offset(1439), 171}, {-1}, {pool_offset(1441), 236}, {pool_offset(1442), 467}, {-1}, {pool_offset(1444), 228}, {-1}, {-1}, {pool_offset(1447), 245}, {pool_offset(1448), 408}, {-1}, {-1}, {pool_offset(1451), 116}, {-1}, {-1}, {-1}, {pool_offset(1455), 262}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1461), 75}, {pool_offset(1462), 114}, {pool_offset(1463), 356}, {-1}, {pool_offset(1465), 275}, {pool_offset(1466), 310}, {pool_offset(1467), 320}, {-1}, {pool_offset(1469), 97}, {pool_offset(1470), 319}, {-1}, {pool_offset(1472), 144}, {pool_offset(1473), 392}, {pool_offset(1474), 463}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1489), 398}, {-1}, {pool_offset(1491), 162}, {-1}, {-1}, {-1}, {pool_offset(1495), 23}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1500), 85}, {-1}, {-1}, {-1}, {pool_offset(1504), 371}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1513), 58}, {pool_offset(1514), 23}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1531), 375}, {pool_offset(1532), 485}, {pool_offset(1533), 213}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1538), 97}, {pool_offset(1539), 335}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1550), 396}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1559), 272}, {-1}, {pool_offset(1561), 477}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1569), 81}, {-1}, {pool_offset(1571), 307}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1576), 281}, {-1}, {pool_offset(1578), 381}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1586), 411}, {-1}, {-1}, {pool_offset(1589), 70}, {-1}, {pool_offset(1591), 184}, {-1}, {pool_offset(1593), 409}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1598), 487}, {pool_offset(1599), 207}, {-1}, {pool_offset(1601), 86}, {-1}, {-1}, {pool_offset(1604), 12}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1612), 425}, {-1}, {pool_offset(1614), 394}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1620), 206}, {pool_offset(1621), 31}, {-1}, {pool_offset(1623), 328}, {pool_offset(1624), 71}, {-1}, {-1}, {pool_offset(1627), 32}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1639), 51}, {pool_offset(1640), 199}, {-1}, {-1}, {-1}, {pool_offset(1644), 137}, {-1}, {-1}, {-1}, {pool_offset(1648), 84}, {pool_offset(1649), 152}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1654), 58}, {-1}, {-1}, {-1}, {pool_offset(1658), 161}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1669), 73}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1684), 390}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1693), 322}, {-1}, {pool_offset(1695), 286}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1702), 370}, {-1}, {-1}, {pool_offset(1705), 72}, {pool_offset(1706), 74}, {-1}, {pool_offset(1708), 29}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1717), 165}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1724), 88}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1732), 497}, {pool_offset(1733), 22}, {-1}, {-1}, {-1}, {pool_offset(1737), 191}, {-1}, {-1}, {-1}, {pool_offset(1741), 305}, {-1}, {pool_offset(1743), 176}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1752), 136}, {-1}, {pool_offset(1754), 119}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1771), 308}, {-1}, {-1}, {-1}, {pool_offset(1775), 257}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1783), 489}, {-1}, {-1}, {pool_offset(1786), 324}, {-1}, {pool_offset(1788), 265}, {-1}, {-1}, {-1}, {pool_offset(1792), 101}, {pool_offset(1793), 181}, {-1}, {-1}, {pool_offset(1796), 43}, {pool_offset(1797), 4}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1802), 204}, {-1}, {-1}, {-1}, {pool_offset(1806), 441}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1818), 365}, {-1}, {-1}, {-1}, {pool_offset(1822), 384}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1836), 229}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1844), 393}, {-1}, {-1}, {pool_offset(1847), 89}, {-1}, {pool_offset(1849), 387}, {-1}, {pool_offset(1851), 439}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1857), 214}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1864), 186}, {pool_offset(1865), 134}, {-1}, {pool_offset(1867), 8}, {-1}, {-1}, {pool_offset(1870), 164}, {pool_offset(1871), 343}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1878), 5}, {pool_offset(1879), 124}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1885), 178}, {-1}, {pool_offset(1887), 348}, {-1}, {-1}, {pool_offset(1890), 124}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1895), 205}, {-1}, {pool_offset(1897), 495}, {-1}, {-1}, {pool_offset(1900), 133}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1909), 170}, {-1}, {-1}, {pool_offset(1912), 102}, {-1}, {-1}, {pool_offset(1915), 273}, {-1}, {pool_offset(1917), 92}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1935), 380}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1948), 359}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1964), 18}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1969), 174}, {-1}, {-1}, {pool_offset(1972), 244}, {pool_offset(1973), 252}, {-1}, {pool_offset(1975), 466}, {-1}, {pool_offset(1977), 61}, {pool_offset(1978), 391}, {-1}, {-1}, {-1}, {pool_offset(1982), 309}, {-1}, {-1}, {-1}, {-1}, {pool_offset(1987), 258}, {-1}, {pool_offset(1989), 282}, {-1}, {pool_offset(1991), 17}, {-1}, {-1}, {-1}, {pool_offset(1995), 154}, {-1}, {-1}, {pool_offset(1998), 125}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2005), 427}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2011), 63}, {pool_offset(2012), 300}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2019), 63}, {pool_offset(2020), 303}, {-1}, {-1}, {-1}, {pool_offset(2024), 488}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2030), 284}, {-1}, {-1}, {-1}, {pool_offset(2034), 46}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2058), 452}, {-1}, {-1}, {pool_offset(2061), 61}, {pool_offset(2062), 214}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2080), 45}, {-1}, {pool_offset(2082), 99}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2093), 181}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2104), 464}, {-1}, {pool_offset(2106), 29}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2116), 445}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2126), 25}, {pool_offset(2127), 360}, {pool_offset(2128), 48}, {-1}, {-1}, {pool_offset(2131), 290}, {pool_offset(2132), 224}, {pool_offset(2133), 122}, {-1}, {-1}, {pool_offset(2136), 99}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2145), 112}, {-1}, {pool_offset(2147), 60}, {-1}, {-1}, {-1}, {pool_offset(2151), 480}, {-1}, {pool_offset(2153), 249}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2161), 201}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2167), 223}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2172), 357}, {pool_offset(2173), 330}, {-1}, {pool_offset(2175), 386}, {-1}, {-1}, {pool_offset(2178), 153}, {-1}, {-1}, {-1}, {pool_offset(2182), 259}, {-1}, {-1}, {pool_offset(2185), 153}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2195), 40}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2210), 160}, {pool_offset(2211), 28}, {pool_offset(2212), 264}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2218), 87}, {-1}, {-1}, {pool_offset(2221), 291}, {-1}, {-1}, {-1}, {pool_offset(2225), 280}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2240), 57}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2249), 287}, {-1}, {-1}, {pool_offset(2252), 75}, {-1}, {-1}, {pool_offset(2255), 210}, {-1}, {-1}, {-1}, {pool_offset(2259), 418}, {-1}, {-1}, {-1}, {pool_offset(2263), 283}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2268), 400}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2275), 349}, {pool_offset(2276), 71}, {pool_offset(2277), 125}, {pool_offset(2278), 173}, {-1}, {pool_offset(2280), 104}, {-1}, {-1}, {-1}, {pool_offset(2284), 103}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2292), 223}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2300), 395}, {-1}, {-1}, {-1}, {pool_offset(2304), 498}, {-1}, {pool_offset(2306), 228}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2311), 148}, {pool_offset(2312), 148}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2330), 461}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2336), 209}, {-1}, {pool_offset(2338), 19}, {pool_offset(2339), 132}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2348), 78}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2358), 47}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2363), 100}, {pool_offset(2364), 154}, {pool_offset(2365), 78}, {-1}, {-1}, {pool_offset(2368), 30}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2373), 476}, {-1}, {-1}, {pool_offset(2376), 344}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2386), 103}, {-1}, {pool_offset(2388), 100}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2401), 105}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2422), 50}, {-1}, {-1}, {-1}, {pool_offset(2426), 241}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2432), 178}, {-1}, {-1}, {pool_offset(2435), 65}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2443), 355}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2451), 70}, {-1}, {pool_offset(2453), 189}, {-1}, {pool_offset(2455), 170}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2477), 40}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2491), 104}, {-1}, {-1}, {pool_offset(2494), 74}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2503), 195}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2529), 293}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2542), 131}, {-1}, {pool_offset(2544), 160}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2550), 49}, {-1}, {pool_offset(2552), 84}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2570), 337}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2581), 156}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2587), 341}, {-1}, {-1}, {pool_offset(2590), 165}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2613), 367}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2621), 209}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2628), 55}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2650), 30}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2679), 333}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2704), 226}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2711), 224}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2742), 455}, {pool_offset(2743), 176}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2774), 490}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2792), 138}, {-1}, {pool_offset(2794), 382}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2802), 383}, {pool_offset(2803), 171}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2834), 185}, {pool_offset(2835), 26}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2864), 10}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2878), 326}, {pool_offset(2879), 346}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2918), 339}, {-1}, {-1}, {-1}, {pool_offset(2922), 426}, {-1}, {-1}, {pool_offset(2925), 199}, {-1}, {-1}, {pool_offset(2928), 338}, {-1}, {pool_offset(2930), 172}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2952), 368}, {pool_offset(2953), 122}, {-1}, {pool_offset(2955), 27}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2960), 296}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2968), 351}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2983), 34}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(2989), 66}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3009), 500}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3043), 459}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3084), 77}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3176), 33}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3230), 49}, {-1}, {-1}, {-1}, {pool_offset(3234), 236}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3254), 33}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3282), 79}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3299), 347}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3312), 216}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3343), 187}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3364), 447}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3370), 102}, {-1}, {pool_offset(3372), 159}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3396), 499}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3479), 345}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3491), 53}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3555), 187}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3566), 34}, {pool_offset(3567), 201}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3582), 225}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3619), 106}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3644), 101}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3670), 492}, {-1}, {-1}, {pool_offset(3673), 352}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3685), 354}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3700), 494}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3743), 65}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3763), 66}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(3853), 318}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4106), 105}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4244), 493}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4722), 27}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4765), 491}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4780), 2}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4851), 77}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(4943), 76}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(5054), 79}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(5162), 76} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register int o = wordlist[key].name; if (o >= 0) { register const char *s = o + unicode_prop_name_pool; if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') return &wordlist[key]; } } } return 0; } #define PROPERTY_VERSION 8_0_0 #define PROPERTY_NAME_MAX_SIZE 59 #define CODE_RANGES_NUM 501 oniguruma-6.7.0/src/unicode_property_data_posix.c000066400000000000000000002534311321242335200222770ustar00rootroot00000000000000/* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -T -C -c -t -j1 -L ANSI-C --ignore-case --pic -Q unicode_prop_name_pool -N unicode_lookup_property_name --output-file gperf.tmp unicode_property_data_posix.gperf */ /* Computed positions: -k'1,3' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126)) /* The character set is not based on ISO-646. */ #error "gperf generated tables don't work with this execution character set. Please report a bug to ." #endif /* Generated by make_unicode_property_data.py. */ /* PROPERTY: 'NEWLINE': POSIX [[:NEWLINE:]] */ static const OnigCodePoint CR_NEWLINE[] = { 1, 0x000a, 0x000a, }; /* END of CR_NEWLINE */ /* PROPERTY: 'Alpha': POSIX [[:Alpha:]] */ static const OnigCodePoint CR_Alpha[] = { 617, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x065f, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06ef, 0x06fa, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07ca, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b4, 0x08e3, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 0x09ce, 0x09d7, 0x09d7, 0x09dc, 0x09dd, 0x09df, 0x09e3, 0x09f0, 0x09f1, 0x0a01, 0x0a03, 0x0a05, 0x0a0a, 0x0a0f, 0x0a10, 0x0a13, 0x0a28, 0x0a2a, 0x0a30, 0x0a32, 0x0a33, 0x0a35, 0x0a36, 0x0a38, 0x0a39, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a70, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0af9, 0x0af9, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 0x0b56, 0x0b57, 0x0b5c, 0x0b5d, 0x0b5f, 0x0b63, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d5f, 0x0d63, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x103f, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1950, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b80, 0x1ba9, 0x1bac, 0x1baf, 0x1bba, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c4d, 0x1c4f, 0x1c5a, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 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, 0xa61f, 0xa62a, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fd, 0xa90a, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9cf, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9ef, 0xa9fa, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabea, 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, 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, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 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, 0x11000, 0x11045, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x11100, 0x11132, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111da, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112e8, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x115d8, 0x115dd, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11680, 0x116b5, 0x11700, 0x11719, 0x1171d, 0x1172a, 0x118a0, 0x118df, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16ad0, 0x16aed, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, }; /* END of CR_Alpha */ /* PROPERTY: 'Blank': POSIX [[:Blank:]] */ static const OnigCodePoint CR_Blank[] = { 8, 0x0009, 0x0009, 0x0020, 0x0020, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Blank */ /* PROPERTY: 'Cntrl': POSIX [[:Cntrl:]] */ static const OnigCodePoint CR_Cntrl[] = { 2, 0x0000, 0x001f, 0x007f, 0x009f, }; /* END of CR_Cntrl */ /* PROPERTY: 'Digit': POSIX [[:Digit:]] */ static const OnigCodePoint CR_Digit[] = { 51, 0x0030, 0x0039, 0x0660, 0x0669, 0x06f0, 0x06f9, 0x07c0, 0x07c9, 0x0966, 0x096f, 0x09e6, 0x09ef, 0x0a66, 0x0a6f, 0x0ae6, 0x0aef, 0x0b66, 0x0b6f, 0x0be6, 0x0bef, 0x0c66, 0x0c6f, 0x0ce6, 0x0cef, 0x0d66, 0x0d6f, 0x0de6, 0x0def, 0x0e50, 0x0e59, 0x0ed0, 0x0ed9, 0x0f20, 0x0f29, 0x1040, 0x1049, 0x1090, 0x1099, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1946, 0x194f, 0x19d0, 0x19d9, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1b50, 0x1b59, 0x1bb0, 0x1bb9, 0x1c40, 0x1c49, 0x1c50, 0x1c59, 0xa620, 0xa629, 0xa8d0, 0xa8d9, 0xa900, 0xa909, 0xa9d0, 0xa9d9, 0xa9f0, 0xa9f9, 0xaa50, 0xaa59, 0xabf0, 0xabf9, 0xff10, 0xff19, 0x104a0, 0x104a9, 0x11066, 0x1106f, 0x110f0, 0x110f9, 0x11136, 0x1113f, 0x111d0, 0x111d9, 0x112f0, 0x112f9, 0x114d0, 0x114d9, 0x11650, 0x11659, 0x116c0, 0x116c9, 0x11730, 0x11739, 0x118e0, 0x118e9, 0x16a60, 0x16a69, 0x16b50, 0x16b59, 0x1d7ce, 0x1d7ff, }; /* END of CR_Digit */ /* PROPERTY: 'Graph': POSIX [[:Graph:]] */ static const OnigCodePoint CR_Graph[] = { 618, 0x0021, 0x007e, 0x00a1, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b4, 0x08e3, 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, 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, 0x0af1, 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, 0x0b77, 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, 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, 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, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x167f, 0x1681, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x200b, 0x2027, 0x202a, 0x202e, 0x2030, 0x205e, 0x2060, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 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, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 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, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 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, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 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, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 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, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Graph */ /* PROPERTY: 'Lower': POSIX [[:Lower:]] */ static const OnigCodePoint CR_Lower[] = { 637, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 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, 0x0138, 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, 0x018d, 0x0192, 0x0192, 0x0195, 0x0195, 0x0199, 0x019b, 0x019e, 0x019e, 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x01a8, 0x01a8, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x01b0, 0x01b0, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x01b9, 0x01ba, 0x01bd, 0x01bf, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 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, 0x01f0, 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, 0x0221, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, 0x0231, 0x0231, 0x0233, 0x0239, 0x023c, 0x023c, 0x023f, 0x0240, 0x0242, 0x0242, 0x0247, 0x0247, 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x0293, 0x0295, 0x02b8, 0x02c0, 0x02c1, 0x02e0, 0x02e4, 0x0345, 0x0345, 0x0371, 0x0371, 0x0373, 0x0373, 0x0377, 0x0377, 0x037a, 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, 0x03fc, 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, 0x1d00, 0x1dbf, 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, 0x1e9d, 0x1e9f, 0x1e9f, 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, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134, 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2170, 0x217f, 0x2184, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66, 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7d, 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, 0x2ce4, 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, 0xa69d, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727, 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa731, 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, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f, 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799, 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7, 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503, 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1, 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, }; /* END of CR_Lower */ /* PROPERTY: 'Print': POSIX [[:Print:]] */ static const OnigCodePoint CR_Print[] = { 615, 0x0020, 0x007e, 0x00a0, 0x0377, 0x037a, 0x037f, 0x0384, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x052f, 0x0531, 0x0556, 0x0559, 0x055f, 0x0561, 0x0587, 0x0589, 0x058a, 0x058d, 0x058f, 0x0591, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f4, 0x0600, 0x061c, 0x061e, 0x070d, 0x070f, 0x074a, 0x074d, 0x07b1, 0x07c0, 0x07fa, 0x0800, 0x082d, 0x0830, 0x083e, 0x0840, 0x085b, 0x085e, 0x085e, 0x08a0, 0x08b4, 0x08e3, 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, 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, 0x0af1, 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, 0x0b77, 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, 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, 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, 0x0d75, 0x0d79, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dca, 0x0dca, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df4, 0x0e01, 0x0e3a, 0x0e3f, 0x0e5b, 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, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f97, 0x0f99, 0x0fbc, 0x0fbe, 0x0fcc, 0x0fce, 0x0fda, 0x1000, 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, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 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, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027, 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 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, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e42, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c4, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 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, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 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, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 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, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123d, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 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, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 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, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 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, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e800, 0x1e8c4, 0x1e8c7, 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, 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, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd, }; /* END of CR_Print */ /* PROPERTY: 'Punct': POSIX [[:Punct:]] */ static const OnigCodePoint CR_Punct[] = { 161, 0x0021, 0x0023, 0x0025, 0x002a, 0x002c, 0x002f, 0x003a, 0x003b, 0x003f, 0x0040, 0x005b, 0x005d, 0x005f, 0x005f, 0x007b, 0x007b, 0x007d, 0x007d, 0x00a1, 0x00a1, 0x00a7, 0x00a7, 0x00ab, 0x00ab, 0x00b6, 0x00b7, 0x00bb, 0x00bb, 0x00bf, 0x00bf, 0x037e, 0x037e, 0x0387, 0x0387, 0x055a, 0x055f, 0x0589, 0x058a, 0x05be, 0x05be, 0x05c0, 0x05c0, 0x05c3, 0x05c3, 0x05c6, 0x05c6, 0x05f3, 0x05f4, 0x0609, 0x060a, 0x060c, 0x060d, 0x061b, 0x061b, 0x061e, 0x061f, 0x066a, 0x066d, 0x06d4, 0x06d4, 0x0700, 0x070d, 0x07f7, 0x07f9, 0x0830, 0x083e, 0x085e, 0x085e, 0x0964, 0x0965, 0x0970, 0x0970, 0x0af0, 0x0af0, 0x0df4, 0x0df4, 0x0e4f, 0x0e4f, 0x0e5a, 0x0e5b, 0x0f04, 0x0f12, 0x0f14, 0x0f14, 0x0f3a, 0x0f3d, 0x0f85, 0x0f85, 0x0fd0, 0x0fd4, 0x0fd9, 0x0fda, 0x104a, 0x104f, 0x10fb, 0x10fb, 0x1360, 0x1368, 0x1400, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1735, 0x1736, 0x17d4, 0x17d6, 0x17d8, 0x17da, 0x1800, 0x180a, 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1b5a, 0x1b60, 0x1bfc, 0x1bff, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd3, 0x1cd3, 0x2010, 0x2027, 0x2030, 0x2043, 0x2045, 0x2051, 0x2053, 0x205e, 0x207d, 0x207e, 0x208d, 0x208e, 0x2308, 0x230b, 0x2329, 0x232a, 0x2768, 0x2775, 0x27c5, 0x27c6, 0x27e6, 0x27ef, 0x2983, 0x2998, 0x29d8, 0x29db, 0x29fc, 0x29fd, 0x2cf9, 0x2cfc, 0x2cfe, 0x2cff, 0x2d70, 0x2d70, 0x2e00, 0x2e2e, 0x2e30, 0x2e42, 0x3001, 0x3003, 0x3008, 0x3011, 0x3014, 0x301f, 0x3030, 0x3030, 0x303d, 0x303d, 0x30a0, 0x30a0, 0x30fb, 0x30fb, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa673, 0xa673, 0xa67e, 0xa67e, 0xa6f2, 0xa6f7, 0xa874, 0xa877, 0xa8ce, 0xa8cf, 0xa8f8, 0xa8fa, 0xa8fc, 0xa8fc, 0xa92e, 0xa92f, 0xa95f, 0xa95f, 0xa9c1, 0xa9cd, 0xa9de, 0xa9df, 0xaa5c, 0xaa5f, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xabeb, 0xfd3e, 0xfd3f, 0xfe10, 0xfe19, 0xfe30, 0xfe52, 0xfe54, 0xfe61, 0xfe63, 0xfe63, 0xfe68, 0xfe68, 0xfe6a, 0xfe6b, 0xff01, 0xff03, 0xff05, 0xff0a, 0xff0c, 0xff0f, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3b, 0xff3d, 0xff3f, 0xff3f, 0xff5b, 0xff5b, 0xff5d, 0xff5d, 0xff5f, 0xff65, 0x10100, 0x10102, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x10857, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x10a50, 0x10a58, 0x10a7f, 0x10a7f, 0x10af0, 0x10af6, 0x10b39, 0x10b3f, 0x10b99, 0x10b9c, 0x11047, 0x1104d, 0x110bb, 0x110bc, 0x110be, 0x110c1, 0x11140, 0x11143, 0x11174, 0x11175, 0x111c5, 0x111c9, 0x111cd, 0x111cd, 0x111db, 0x111db, 0x111dd, 0x111df, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x114c6, 0x114c6, 0x115c1, 0x115d7, 0x11641, 0x11643, 0x1173c, 0x1173e, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af5, 0x16af5, 0x16b37, 0x16b3b, 0x16b44, 0x16b44, 0x1bc9f, 0x1bc9f, 0x1da87, 0x1da8b, }; /* END of CR_Punct */ /* PROPERTY: 'Space': POSIX [[:Space:]] */ static const OnigCodePoint CR_Space[] = { 10, 0x0009, 0x000d, 0x0020, 0x0020, 0x0085, 0x0085, 0x00a0, 0x00a0, 0x1680, 0x1680, 0x2000, 0x200a, 0x2028, 0x2029, 0x202f, 0x202f, 0x205f, 0x205f, 0x3000, 0x3000, }; /* END of CR_Space */ /* PROPERTY: 'Upper': POSIX [[:Upper:]] */ static const OnigCodePoint CR_Upper[] = { 630, 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, 0x01c4, 0x01c7, 0x01c7, 0x01ca, 0x01ca, 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, 0x01f1, 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, 0x03d2, 0x03d4, 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, 0x1fb8, 0x1fbb, 0x1fc8, 0x1fcb, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffb, 0x2102, 0x2102, 0x2107, 0x2107, 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f, 0x2145, 0x2145, 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, 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9, 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585, 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8, 0x1d7ca, 0x1d7ca, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, }; /* END of CR_Upper */ /* PROPERTY: 'XDigit': POSIX [[:XDigit:]] */ static const OnigCodePoint CR_XDigit[] = { 3, 0x0030, 0x0039, 0x0041, 0x0046, 0x0061, 0x0066, }; /* END of CR_XDigit */ /* PROPERTY: 'Word': POSIX [[:Word:]] */ static const OnigCodePoint CR_Word[] = { 654, 0x0030, 0x0039, 0x0041, 0x005a, 0x005f, 0x005f, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 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, 0x0386, 0x0388, 0x038a, 0x038c, 0x038c, 0x038e, 0x03a1, 0x03a3, 0x03f5, 0x03f7, 0x0481, 0x0483, 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, 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, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1ab0, 0x1abe, 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, 0x20f0, 0x2102, 0x2102, 0x2107, 0x2107, 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2e2f, 0x2e2f, 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, 0xa672, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0100, 0xe01ef, }; /* END of CR_Word */ /* PROPERTY: 'Alnum': POSIX [[:Alnum:]] */ static const OnigCodePoint CR_Alnum[] = { 648, 0x0030, 0x0039, 0x0041, 0x005a, 0x0061, 0x007a, 0x00aa, 0x00aa, 0x00b5, 0x00b5, 0x00ba, 0x00ba, 0x00c0, 0x00d6, 0x00d8, 0x00f6, 0x00f8, 0x02c1, 0x02c6, 0x02d1, 0x02e0, 0x02e4, 0x02ec, 0x02ec, 0x02ee, 0x02ee, 0x0345, 0x0345, 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, 0x05b0, 0x05bd, 0x05bf, 0x05bf, 0x05c1, 0x05c2, 0x05c4, 0x05c5, 0x05c7, 0x05c7, 0x05d0, 0x05ea, 0x05f0, 0x05f2, 0x0610, 0x061a, 0x0620, 0x0657, 0x0659, 0x0669, 0x066e, 0x06d3, 0x06d5, 0x06dc, 0x06e1, 0x06e8, 0x06ed, 0x06fc, 0x06ff, 0x06ff, 0x0710, 0x073f, 0x074d, 0x07b1, 0x07c0, 0x07ea, 0x07f4, 0x07f5, 0x07fa, 0x07fa, 0x0800, 0x0817, 0x081a, 0x082c, 0x0840, 0x0858, 0x08a0, 0x08b4, 0x08e3, 0x08e9, 0x08f0, 0x093b, 0x093d, 0x094c, 0x094e, 0x0950, 0x0955, 0x0963, 0x0966, 0x096f, 0x0971, 0x0983, 0x0985, 0x098c, 0x098f, 0x0990, 0x0993, 0x09a8, 0x09aa, 0x09b0, 0x09b2, 0x09b2, 0x09b6, 0x09b9, 0x09bd, 0x09c4, 0x09c7, 0x09c8, 0x09cb, 0x09cc, 0x09ce, 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, 0x0a3e, 0x0a42, 0x0a47, 0x0a48, 0x0a4b, 0x0a4c, 0x0a51, 0x0a51, 0x0a59, 0x0a5c, 0x0a5e, 0x0a5e, 0x0a66, 0x0a75, 0x0a81, 0x0a83, 0x0a85, 0x0a8d, 0x0a8f, 0x0a91, 0x0a93, 0x0aa8, 0x0aaa, 0x0ab0, 0x0ab2, 0x0ab3, 0x0ab5, 0x0ab9, 0x0abd, 0x0ac5, 0x0ac7, 0x0ac9, 0x0acb, 0x0acc, 0x0ad0, 0x0ad0, 0x0ae0, 0x0ae3, 0x0ae6, 0x0aef, 0x0af9, 0x0af9, 0x0b01, 0x0b03, 0x0b05, 0x0b0c, 0x0b0f, 0x0b10, 0x0b13, 0x0b28, 0x0b2a, 0x0b30, 0x0b32, 0x0b33, 0x0b35, 0x0b39, 0x0b3d, 0x0b44, 0x0b47, 0x0b48, 0x0b4b, 0x0b4c, 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, 0x0bcc, 0x0bd0, 0x0bd0, 0x0bd7, 0x0bd7, 0x0be6, 0x0bef, 0x0c00, 0x0c03, 0x0c05, 0x0c0c, 0x0c0e, 0x0c10, 0x0c12, 0x0c28, 0x0c2a, 0x0c39, 0x0c3d, 0x0c44, 0x0c46, 0x0c48, 0x0c4a, 0x0c4c, 0x0c55, 0x0c56, 0x0c58, 0x0c5a, 0x0c60, 0x0c63, 0x0c66, 0x0c6f, 0x0c81, 0x0c83, 0x0c85, 0x0c8c, 0x0c8e, 0x0c90, 0x0c92, 0x0ca8, 0x0caa, 0x0cb3, 0x0cb5, 0x0cb9, 0x0cbd, 0x0cc4, 0x0cc6, 0x0cc8, 0x0cca, 0x0ccc, 0x0cd5, 0x0cd6, 0x0cde, 0x0cde, 0x0ce0, 0x0ce3, 0x0ce6, 0x0cef, 0x0cf1, 0x0cf2, 0x0d01, 0x0d03, 0x0d05, 0x0d0c, 0x0d0e, 0x0d10, 0x0d12, 0x0d3a, 0x0d3d, 0x0d44, 0x0d46, 0x0d48, 0x0d4a, 0x0d4c, 0x0d4e, 0x0d4e, 0x0d57, 0x0d57, 0x0d5f, 0x0d63, 0x0d66, 0x0d6f, 0x0d7a, 0x0d7f, 0x0d82, 0x0d83, 0x0d85, 0x0d96, 0x0d9a, 0x0db1, 0x0db3, 0x0dbb, 0x0dbd, 0x0dbd, 0x0dc0, 0x0dc6, 0x0dcf, 0x0dd4, 0x0dd6, 0x0dd6, 0x0dd8, 0x0ddf, 0x0de6, 0x0def, 0x0df2, 0x0df3, 0x0e01, 0x0e3a, 0x0e40, 0x0e46, 0x0e4d, 0x0e4d, 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, 0x0ecd, 0x0ecd, 0x0ed0, 0x0ed9, 0x0edc, 0x0edf, 0x0f00, 0x0f00, 0x0f20, 0x0f29, 0x0f40, 0x0f47, 0x0f49, 0x0f6c, 0x0f71, 0x0f81, 0x0f88, 0x0f97, 0x0f99, 0x0fbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x1090, 0x1099, 0x109c, 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, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7, 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1946, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7, 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b50, 0x1b59, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 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, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149, 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 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, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 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, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7ad, 0xa7b0, 0xa7b7, 0xa7f7, 0xa801, 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fd, 0xa900, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabea, 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, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 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, 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, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, 0x11150, 0x11172, 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111d0, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112e8, 0x112f0, 0x112f9, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x115d8, 0x115dd, 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172a, 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, 0x16b00, 0x16b36, 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 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, 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, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, }; /* END of CR_Alnum */ /* PROPERTY: 'ASCII': POSIX [[:ASCII:]] */ static const OnigCodePoint CR_ASCII[] = { 1, 0x0000, 0x007f, }; /* END of CR_ASCII */ static const OnigCodePoint* const CodeRanges[] = { CR_NEWLINE, CR_Alpha, CR_Blank, CR_Cntrl, CR_Digit, CR_Graph, CR_Lower, CR_Print, CR_Punct, CR_Space, CR_Upper, CR_XDigit, CR_Word, CR_Alnum, CR_ASCII, }; #define pool_offset(s) offsetof(struct unicode_prop_name_pool_t, unicode_prop_name_pool_str##s) #define TOTAL_KEYWORDS 15 #define MIN_WORD_LENGTH 4 #define MAX_WORD_LENGTH 7 #define MIN_HASH_VALUE 5 #define MAX_HASH_VALUE 19 /* maximum key range = 15, duplicates = 0 */ #ifndef GPERF_DOWNCASE #define GPERF_DOWNCASE 1 static unsigned char gperf_downcase[256] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #endif #ifndef GPERF_CASE_STRNCMP #define GPERF_CASE_STRNCMP 1 static int gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n) { for (; n > 0;) { unsigned char c1 = gperf_downcase[(unsigned char)*s1++]; unsigned char c2 = gperf_downcase[(unsigned char)*s2++]; if (c1 != 0 && c1 == c2) { n--; continue; } return (int)c1 - (int)c2; } return 0; } #endif #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif static unsigned int hash (register const char *str, register unsigned int len) { static const unsigned char asso_values[] = { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 12, 5, 3, 20, 20, 10, 20, 0, 20, 20, 9, 20, 1, 20, 0, 20, 9, 7, 3, 6, 20, 2, 3, 20, 20, 20, 20, 20, 20, 20, 20, 2, 12, 5, 3, 20, 20, 10, 20, 0, 20, 20, 9, 20, 1, 20, 0, 20, 9, 7, 3, 6, 20, 2, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }; return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]]; } struct unicode_prop_name_pool_t { char unicode_prop_name_pool_str5[sizeof("print")]; char unicode_prop_name_pool_str6[sizeof("punct")]; char unicode_prop_name_pool_str7[sizeof("alpha")]; char unicode_prop_name_pool_str8[sizeof("alnum")]; char unicode_prop_name_pool_str9[sizeof("xdigit")]; char unicode_prop_name_pool_str10[sizeof("newline")]; char unicode_prop_name_pool_str11[sizeof("upper")]; char unicode_prop_name_pool_str12[sizeof("ascii")]; char unicode_prop_name_pool_str13[sizeof("cntrl")]; char unicode_prop_name_pool_str14[sizeof("space")]; char unicode_prop_name_pool_str15[sizeof("word")]; char unicode_prop_name_pool_str16[sizeof("lower")]; char unicode_prop_name_pool_str17[sizeof("graph")]; char unicode_prop_name_pool_str18[sizeof("digit")]; char unicode_prop_name_pool_str19[sizeof("blank")]; }; static const struct unicode_prop_name_pool_t unicode_prop_name_pool_contents = { "print", "punct", "alpha", "alnum", "xdigit", "newline", "upper", "ascii", "cntrl", "space", "word", "lower", "graph", "digit", "blank" }; #define unicode_prop_name_pool ((const char *) &unicode_prop_name_pool_contents) #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif const struct PoolPropertyNameCtype * unicode_lookup_property_name (register const char *str, register unsigned int len) { static const struct PoolPropertyNameCtype wordlist[] = { {-1}, {-1}, {-1}, {-1}, {-1}, {pool_offset(5), 7}, {pool_offset(6), 8}, {pool_offset(7), 1}, {pool_offset(8), 13}, {pool_offset(9), 11}, {pool_offset(10), 0}, {pool_offset(11), 10}, {pool_offset(12), 14}, {pool_offset(13), 3}, {pool_offset(14), 9}, {pool_offset(15), 12}, {pool_offset(16), 6}, {pool_offset(17), 5}, {pool_offset(18), 4}, {pool_offset(19), 2} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) { register int key = hash (str, len); if (key <= MAX_HASH_VALUE && key >= 0) { register int o = wordlist[key].name; if (o >= 0) { register const char *s = o + unicode_prop_name_pool; if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0') return &wordlist[key]; } } } return 0; } #define PROPERTY_VERSION 8_0_0 #define PROPERTY_NAME_MAX_SIZE 17 #define CODE_RANGES_NUM 15 oniguruma-6.7.0/src/unicode_unfold_key.c000066400000000000000000001234701321242335200203360ustar00rootroot00000000000000/* This file was converted by gperf_unfold_key_conv.py from gperf output file. */ /* ANSI-C code produced by gperf version 3.0.4 */ /* Command-line: gperf -n -C -T -c -t -j1 -L ANSI-C -F,-1,0 -N unicode_unfold_key unicode_unfold_key.gperf */ /* Computed positions: -k'1-3' */ /* This gperf source file was generated by make_unicode_fold_data.py */ #include #include "regenc.h" #define TOTAL_KEYWORDS 1321 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 3 #define MIN_HASH_VALUE 11 #define MAX_HASH_VALUE 1544 /* maximum key range = 1534, duplicates = 0 */ #ifdef __GNUC__ __inline #else #ifdef __cplusplus inline #endif #endif /*ARGSUSED*/ static unsigned int hash(OnigCodePoint codes[]) { static const unsigned short asso_values[] = { 8, 6, 2, 124, 5, 1, 36, 1545, 1545, 1545, 1545, 1545, 1545, 11, 1545, 1545, 1545, 16, 1545, 1545, 562, 1545, 1545, 1545, 1545, 77, 1545, 1545, 1545, 1545, 1545, 0, 3, 1545, 61, 628, 1379, 206, 1378, 607, 1372, 597, 1399, 569, 1371, 4, 1365, 559, 1359, 548, 1353, 836, 1393, 830, 1345, 587, 1344, 581, 1336, 539, 1335, 530, 982, 521, 970, 818, 1389, 723, 1329, 351, 1320, 333, 1312, 293, 1311, 320, 1304, 176, 589, 311, 1165, 302, 1384, 1243, 579, 780, 173, 1230, 147, 1213, 75, 1219, 1296, 1009, 1293, 1282, 1267, 1217, 1030, 331, 1291, 1210, 1286, 998, 500, 993, 1359, 806, 1281, 510, 1048, 501, 662, 797, 754, 792, 372, 775, 290, 768, 228, 755, 292, 1159, 489, 1135, 267, 1229, 233, 1053, 222, 728, 159, 708, 484, 695, 155, 995, 247, 686, 859, 674, 747, 618, 561, 381, 313, 987, 167, 975, 165, 1279, 388, 1207, 157, 765, 900, 1007, 794, 476, 21, 1198, 1271, 490, 1265, 478, 1245, 18, 8, 253, 1188, 652, 7, 245, 1185, 415, 1256, 226, 1177, 54, 1169, 214, 1155, 195, 607, 42, 963, 30, 1147, 185, 1139, 465, 1129, 451, 1121, 86, 948, 136, 940, 76, 909, 66, 664, 126, 644, 116, 632, 106, 930, 166, 925, 149, 915, 96, 903, 390, 364, 283, 746, 273, 1098, 372, 1095, 265, 528, 361, 311, 897, 1195, 396, 1103, 425, 1094, 1088, 893, 887, 573, 407, 237, 1083, 934, 1145, 432, 1076, 679, 714, 956, 1112, 509, 880, 62, 873, 157, 864, 276, 1069, 112, 855, 156, 1063, 1545, 848, 152, 1057, 1545, 1047, 145, 1041, 144, 1035, 49, 1025, 142, 1256, 1545, 1239, 355, 342, 21, 1019, 14, 1233, 459, 843, 822, 740, 38, 553, 96, 448, 8 }; return asso_values[(unsigned char)onig_codes_byte_at(codes, 2)+35] + asso_values[(unsigned char)onig_codes_byte_at(codes, 1)+1] + asso_values[(unsigned char)onig_codes_byte_at(codes, 0)]; } #ifdef __GNUC__ __inline #if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif const struct ByUnfoldKey * unicode_unfold_key(OnigCodePoint code) { static const struct ByUnfoldKey wordlist[] = { {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x1040a, 3267, 1}, {0x1e0a, 1727, 1}, {0x040a, 1016, 1}, {0x010a, 186, 1}, {0x1f0a, 2088, 1}, {0x2c0a, 2451, 1}, {0x0189, 619, 1}, {0x1f89, 134, 2}, {0x1f85, 154, 2}, {0x0389, 733, 1}, {0x03ff, 724, 1}, {0xab89, 1523, 1}, {0xab85, 1511, 1}, {0x10c89, 3384, 1}, {0x10c85, 3372, 1}, {0x1e84, 1911, 1}, {0x03f5, 752, 1}, {0x0184, 360, 1}, {0x1f84, 149, 2}, {0x2c84, 2592, 1}, {0x017d, 351, 1}, {0x1ff3, 96, 2}, {0xab84, 1508, 1}, {0xa784, 3105, 1}, {0x10c84, 3369, 1}, {0xab7d, 1487, 1}, {0xa77d, 1706, 1}, {0x1e98, 38, 2}, {0x0498, 1106, 1}, {0x0198, 375, 1}, {0x1f98, 169, 2}, {0x2c98, 2622, 1}, {0x0398, 762, 1}, {0xa684, 2940, 1}, {0xab98, 1568, 1}, {0xa798, 3123, 1}, {0x10c98, 3429, 1}, {0x050a, 1277, 1}, {0x1ffb, 2265, 1}, {0x1e96, 16, 2}, {0x0496, 1103, 1}, {0x0196, 652, 1}, {0x1f96, 199, 2}, {0x2c96, 2619, 1}, {0x0396, 756, 1}, {0xa698, 2970, 1}, {0xab96, 1562, 1}, {0xa796, 3120, 1}, {0x10c96, 3423, 1}, {0x1feb, 2259, 1}, {0x2ceb, 2736, 1}, {0x1e90, 1929, 1}, {0x0490, 1094, 1}, {0x0190, 628, 1}, {0x1f90, 169, 2}, {0x2c90, 2610, 1}, {0x0390, 25, 3}, {0xa696, 2967, 1}, {0xab90, 1544, 1}, {0xa790, 3114, 1}, {0x10c90, 3405, 1}, {0x01d7, 444, 1}, {0x1fd7, 31, 3}, {0x1ea6, 1947, 1}, {0x04a6, 1127, 1}, {0x01a6, 676, 1}, {0x1fa6, 239, 2}, {0x2ca6, 2643, 1}, {0x03a6, 810, 1}, {0xa690, 2958, 1}, {0xaba6, 1610, 1}, {0xa7a6, 3144, 1}, {0x10ca6, 3471, 1}, {0x1ea4, 1944, 1}, {0x04a4, 1124, 1}, {0x01a4, 390, 1}, {0x1fa4, 229, 2}, {0x2ca4, 2640, 1}, {0x03a4, 804, 1}, {0x10a6, 2763, 1}, {0xaba4, 1604, 1}, {0xa7a4, 3141, 1}, {0x10ca4, 3465, 1}, {0x1ea0, 1938, 1}, {0x04a0, 1118, 1}, {0x01a0, 384, 1}, {0x1fa0, 209, 2}, {0x2ca0, 2634, 1}, {0x03a0, 792, 1}, {0x10a4, 2757, 1}, {0xaba0, 1592, 1}, {0xa7a0, 3135, 1}, {0x10ca0, 3453, 1}, {0x1eb2, 1965, 1}, {0x04b2, 1145, 1}, {0x01b2, 694, 1}, {0x1fb2, 249, 2}, {0x2cb2, 2661, 1}, {0x03fd, 718, 1}, {0x10a0, 2745, 1}, {0xabb2, 1646, 1}, {0xa7b2, 703, 1}, {0x10cb2, 3507, 1}, {0x1eac, 1956, 1}, {0x04ac, 1136, 1}, {0x01ac, 396, 1}, {0x1fac, 229, 2}, {0x2cac, 2652, 1}, {0x0537, 1352, 1}, {0x10b2, 2799, 1}, {0xabac, 1628, 1}, {0xa7ac, 637, 1}, {0x10cac, 3489, 1}, {0x1eaa, 1953, 1}, {0x04aa, 1133, 1}, {0x00dd, 162, 1}, {0x1faa, 219, 2}, {0x2caa, 2649, 1}, {0x03aa, 824, 1}, {0x10ac, 2781, 1}, {0xabaa, 1622, 1}, {0xa7aa, 646, 1}, {0x10caa, 3483, 1}, {0x1ea8, 1950, 1}, {0x04a8, 1130, 1}, {0x020a, 517, 1}, {0x1fa8, 209, 2}, {0x2ca8, 2646, 1}, {0x03a8, 817, 1}, {0x10aa, 2775, 1}, {0xaba8, 1616, 1}, {0xa7a8, 3147, 1}, {0x10ca8, 3477, 1}, {0x1ea2, 1941, 1}, {0x04a2, 1121, 1}, {0x01a2, 387, 1}, {0x1fa2, 219, 2}, {0x2ca2, 2637, 1}, {0x118a6, 3528, 1}, {0x10a8, 2769, 1}, {0xaba2, 1598, 1}, {0xa7a2, 3138, 1}, {0x10ca2, 3459, 1}, {0x2ced, 2739, 1}, {0x1fe9, 2283, 1}, {0x1fe7, 47, 3}, {0x1eb0, 1962, 1}, {0x04b0, 1142, 1}, {0x118a4, 3522, 1}, {0x10a2, 2751, 1}, {0x2cb0, 2658, 1}, {0x03b0, 41, 3}, {0x1fe3, 41, 3}, {0xabb0, 1640, 1}, {0xa7b0, 706, 1}, {0x10cb0, 3501, 1}, {0x01d9, 447, 1}, {0x1fd9, 2277, 1}, {0x118a0, 3510, 1}, {0x00df, 24, 2}, {0x00d9, 150, 1}, {0xab77, 1469, 1}, {0x10b0, 2793, 1}, {0x1eae, 1959, 1}, {0x04ae, 1139, 1}, {0x01ae, 685, 1}, {0x1fae, 239, 2}, {0x2cae, 2655, 1}, {0x118b2, 3564, 1}, {0xab73, 1457, 1}, {0xabae, 1634, 1}, {0xab71, 1451, 1}, {0x10cae, 3495, 1}, {0x1e2a, 1775, 1}, {0x042a, 968, 1}, {0x012a, 234, 1}, {0x1f2a, 2130, 1}, {0x2c2a, 2547, 1}, {0x118ac, 3546, 1}, {0x10ae, 2787, 1}, {0x0535, 1346, 1}, {0xa72a, 2988, 1}, {0x1e9a, 0, 2}, {0x049a, 1109, 1}, {0xff37, 3225, 1}, {0x1f9a, 179, 2}, {0x2c9a, 2625, 1}, {0x039a, 772, 1}, {0x118aa, 3540, 1}, {0xab9a, 1574, 1}, {0xa79a, 3126, 1}, {0x10c9a, 3435, 1}, {0x1e94, 1935, 1}, {0x0494, 1100, 1}, {0x0194, 640, 1}, {0x1f94, 189, 2}, {0x2c94, 2616, 1}, {0x0394, 749, 1}, {0x118a8, 3534, 1}, {0xab94, 1556, 1}, {0xa69a, 2973, 1}, {0x10c94, 3417, 1}, {0x10402, 3243, 1}, {0x1e02, 1715, 1}, {0x0402, 992, 1}, {0x0102, 174, 1}, {0x0533, 1340, 1}, {0x2c02, 2427, 1}, {0x118a2, 3516, 1}, {0x052a, 1325, 1}, {0xa694, 2964, 1}, {0x1e92, 1932, 1}, {0x0492, 1097, 1}, {0x2165, 2307, 1}, {0x1f92, 179, 2}, {0x2c92, 2613, 1}, {0x0392, 742, 1}, {0x2161, 2295, 1}, {0xab92, 1550, 1}, {0xa792, 3117, 1}, {0x10c92, 3411, 1}, {0x118b0, 3558, 1}, {0x1f5f, 2199, 1}, {0x1e8e, 1926, 1}, {0x048e, 1091, 1}, {0x018e, 453, 1}, {0x1f8e, 159, 2}, {0x2c8e, 2607, 1}, {0x038e, 833, 1}, {0xa692, 2961, 1}, {0xab8e, 1538, 1}, {0x0055, 59, 1}, {0x10c8e, 3399, 1}, {0x1f5d, 2196, 1}, {0x212a, 27, 1}, {0x04cb, 1181, 1}, {0x01cb, 425, 1}, {0x1fcb, 2241, 1}, {0x118ae, 3552, 1}, {0x0502, 1265, 1}, {0x00cb, 111, 1}, {0xa68e, 2955, 1}, {0x1e8a, 1920, 1}, {0x048a, 1085, 1}, {0x018a, 622, 1}, {0x1f8a, 139, 2}, {0x2c8a, 2601, 1}, {0x038a, 736, 1}, {0x2c67, 2571, 1}, {0xab8a, 1526, 1}, {0x1e86, 1914, 1}, {0x10c8a, 3387, 1}, {0x0186, 616, 1}, {0x1f86, 159, 2}, {0x2c86, 2595, 1}, {0x0386, 727, 1}, {0xff35, 3219, 1}, {0xab86, 1514, 1}, {0xa786, 3108, 1}, {0x10c86, 3375, 1}, {0xa68a, 2949, 1}, {0x0555, 1442, 1}, {0x1ebc, 1980, 1}, {0x04bc, 1160, 1}, {0x01bc, 411, 1}, {0x1fbc, 62, 2}, {0x2cbc, 2676, 1}, {0x1f5b, 2193, 1}, {0xa686, 2943, 1}, {0xabbc, 1676, 1}, {0x1eb8, 1974, 1}, {0x04b8, 1154, 1}, {0x01b8, 408, 1}, {0x1fb8, 2268, 1}, {0x2cb8, 2670, 1}, {0x01db, 450, 1}, {0x1fdb, 2247, 1}, {0xabb8, 1664, 1}, {0x10bc, 2829, 1}, {0x00db, 156, 1}, {0x1eb6, 1971, 1}, {0x04b6, 1151, 1}, {0xff33, 3213, 1}, {0x1fb6, 58, 2}, {0x2cb6, 2667, 1}, {0xff2a, 3186, 1}, {0x10b8, 2817, 1}, {0xabb6, 1658, 1}, {0xa7b6, 3153, 1}, {0x10426, 3351, 1}, {0x1e26, 1769, 1}, {0x0426, 956, 1}, {0x0126, 228, 1}, {0x0053, 52, 1}, {0x2c26, 2535, 1}, {0x0057, 65, 1}, {0x10b6, 2811, 1}, {0x022a, 562, 1}, {0xa726, 2982, 1}, {0x1e2e, 1781, 1}, {0x042e, 980, 1}, {0x012e, 240, 1}, {0x1f2e, 2142, 1}, {0x2c2e, 2559, 1}, {0xffffffff, -1, 0}, {0x2167, 2313, 1}, {0xffffffff, -1, 0}, {0xa72e, 2994, 1}, {0x1e2c, 1778, 1}, {0x042c, 974, 1}, {0x012c, 237, 1}, {0x1f2c, 2136, 1}, {0x2c2c, 2553, 1}, {0x1f6f, 2223, 1}, {0x2c6f, 604, 1}, {0xabbf, 1685, 1}, {0xa72c, 2991, 1}, {0x1e28, 1772, 1}, {0x0428, 962, 1}, {0x0128, 231, 1}, {0x1f28, 2124, 1}, {0x2c28, 2541, 1}, {0xffffffff, -1, 0}, {0x0553, 1436, 1}, {0x10bf, 2838, 1}, {0xa728, 2985, 1}, {0x0526, 1319, 1}, {0x0202, 505, 1}, {0x1e40, 1808, 1}, {0x10424, 3345, 1}, {0x1e24, 1766, 1}, {0x0424, 950, 1}, {0x0124, 225, 1}, {0xffffffff, -1, 0}, {0x2c24, 2529, 1}, {0x052e, 1331, 1}, {0xa740, 3018, 1}, {0x118bc, 3594, 1}, {0xa724, 2979, 1}, {0x1ef2, 2061, 1}, {0x04f2, 1241, 1}, {0x01f2, 483, 1}, {0x1ff2, 257, 2}, {0x2cf2, 2742, 1}, {0x052c, 1328, 1}, {0x118b8, 3582, 1}, {0xa640, 2865, 1}, {0x10422, 3339, 1}, {0x1e22, 1763, 1}, {0x0422, 944, 1}, {0x0122, 222, 1}, {0x2126, 820, 1}, {0x2c22, 2523, 1}, {0x0528, 1322, 1}, {0x01f1, 483, 1}, {0x118b6, 3576, 1}, {0xa722, 2976, 1}, {0x03f1, 796, 1}, {0x1ebe, 1983, 1}, {0x04be, 1163, 1}, {0xfb02, 12, 2}, {0x1fbe, 767, 1}, {0x2cbe, 2679, 1}, {0x01b5, 405, 1}, {0x0540, 1379, 1}, {0xabbe, 1682, 1}, {0x0524, 1316, 1}, {0x00b5, 779, 1}, {0xabb5, 1655, 1}, {0x1eba, 1977, 1}, {0x04ba, 1157, 1}, {0x216f, 2337, 1}, {0x1fba, 2226, 1}, {0x2cba, 2673, 1}, {0x10be, 2835, 1}, {0x0051, 46, 1}, {0xabba, 1670, 1}, {0x10b5, 2808, 1}, {0x1e6e, 1878, 1}, {0x046e, 1055, 1}, {0x016e, 330, 1}, {0x1f6e, 2220, 1}, {0x2c6e, 664, 1}, {0x118bf, 3603, 1}, {0x0522, 1313, 1}, {0x10ba, 2823, 1}, {0xa76e, 3087, 1}, {0x1eb4, 1968, 1}, {0x04b4, 1148, 1}, {0x2c75, 2583, 1}, {0x1fb4, 50, 2}, {0x2cb4, 2664, 1}, {0xab75, 1463, 1}, {0x1ec2, 1989, 1}, {0xabb4, 1652, 1}, {0xa7b4, 3150, 1}, {0x1fc2, 253, 2}, {0x2cc2, 2685, 1}, {0x03c2, 800, 1}, {0x00c2, 83, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff26, 3174, 1}, {0x10b4, 2805, 1}, {0x1eca, 2001, 1}, {0x0551, 1430, 1}, {0x01ca, 425, 1}, {0x1fca, 2238, 1}, {0x2cca, 2697, 1}, {0x10c2, 2847, 1}, {0x00ca, 108, 1}, {0xff2e, 3198, 1}, {0x1e8c, 1923, 1}, {0x048c, 1088, 1}, {0x0226, 556, 1}, {0x1f8c, 149, 2}, {0x2c8c, 2604, 1}, {0x038c, 830, 1}, {0xffffffff, -1, 0}, {0xab8c, 1532, 1}, {0xff2c, 3192, 1}, {0x10c8c, 3393, 1}, {0x1ec4, 1992, 1}, {0x022e, 568, 1}, {0x01c4, 417, 1}, {0x1fc4, 54, 2}, {0x2cc4, 2688, 1}, {0xffffffff, -1, 0}, {0x00c4, 89, 1}, {0xff28, 3180, 1}, {0xa68c, 2952, 1}, {0x01cf, 432, 1}, {0x022c, 565, 1}, {0x118be, 3600, 1}, {0x03cf, 839, 1}, {0x00cf, 123, 1}, {0x118b5, 3573, 1}, {0xffffffff, -1, 0}, {0x10c4, 2853, 1}, {0x216e, 2334, 1}, {0x24cb, 2406, 1}, {0x0228, 559, 1}, {0xff24, 3168, 1}, {0xffffffff, -1, 0}, {0x118ba, 3588, 1}, {0x1efe, 2079, 1}, {0x04fe, 1259, 1}, {0x01fe, 499, 1}, {0x1e9e, 24, 2}, {0x049e, 1115, 1}, {0x03fe, 721, 1}, {0x1f9e, 199, 2}, {0x2c9e, 2631, 1}, {0x039e, 786, 1}, {0x0224, 553, 1}, {0xab9e, 1586, 1}, {0xa79e, 3132, 1}, {0x10c9e, 3447, 1}, {0x01f7, 414, 1}, {0x1ff7, 67, 3}, {0xff22, 3162, 1}, {0x03f7, 884, 1}, {0x118b4, 3570, 1}, {0x049c, 1112, 1}, {0x019c, 661, 1}, {0x1f9c, 189, 2}, {0x2c9c, 2628, 1}, {0x039c, 779, 1}, {0x24bc, 2361, 1}, {0xab9c, 1580, 1}, {0xa79c, 3129, 1}, {0x10c9c, 3441, 1}, {0x0222, 550, 1}, {0x1e7c, 1899, 1}, {0x047c, 1076, 1}, {0x1e82, 1908, 1}, {0x24b8, 2349, 1}, {0x0182, 357, 1}, {0x1f82, 139, 2}, {0x2c82, 2589, 1}, {0xab7c, 1484, 1}, {0xffffffff, -1, 0}, {0xab82, 1502, 1}, {0xa782, 3102, 1}, {0x10c82, 3363, 1}, {0x2c63, 1709, 1}, {0x24b6, 2343, 1}, {0x1e80, 1905, 1}, {0x0480, 1082, 1}, {0x1f59, 2190, 1}, {0x1f80, 129, 2}, {0x2c80, 2586, 1}, {0x0059, 71, 1}, {0xa682, 2937, 1}, {0xab80, 1496, 1}, {0xa780, 3099, 1}, {0x10c80, 3357, 1}, {0xffffffff, -1, 0}, {0x1e4c, 1826, 1}, {0x0145, 270, 1}, {0x014c, 279, 1}, {0x1f4c, 2184, 1}, {0x0345, 767, 1}, {0x0045, 12, 1}, {0x004c, 31, 1}, {0xa680, 2934, 1}, {0xa74c, 3036, 1}, {0x1e4a, 1823, 1}, {0x01d5, 441, 1}, {0x014a, 276, 1}, {0x1f4a, 2178, 1}, {0x03d5, 810, 1}, {0x00d5, 141, 1}, {0x004a, 24, 1}, {0x24bf, 2370, 1}, {0xa74a, 3033, 1}, {0xa64c, 2883, 1}, {0x1041c, 3321, 1}, {0x1e1c, 1754, 1}, {0x041c, 926, 1}, {0x011c, 213, 1}, {0x1f1c, 2118, 1}, {0x2c1c, 2505, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xa64a, 2880, 1}, {0x1041a, 3315, 1}, {0x1e1a, 1751, 1}, {0x041a, 920, 1}, {0x011a, 210, 1}, {0x1f1a, 2112, 1}, {0x2c1a, 2499, 1}, {0xabbd, 1679, 1}, {0x0545, 1394, 1}, {0x054c, 1415, 1}, {0x10418, 3309, 1}, {0x1e18, 1748, 1}, {0x0418, 914, 1}, {0x0118, 207, 1}, {0x1f18, 2106, 1}, {0x2c18, 2493, 1}, {0x10bd, 2832, 1}, {0x2163, 2301, 1}, {0x054a, 1409, 1}, {0x1040e, 3279, 1}, {0x1e0e, 1733, 1}, {0x040e, 1028, 1}, {0x010e, 192, 1}, {0x1f0e, 2100, 1}, {0x2c0e, 2463, 1}, {0x1efc, 2076, 1}, {0x04fc, 1256, 1}, {0x01fc, 496, 1}, {0x1ffc, 96, 2}, {0x051c, 1304, 1}, {0x1040c, 3273, 1}, {0x1e0c, 1730, 1}, {0x040c, 1022, 1}, {0x010c, 189, 1}, {0x1f0c, 2094, 1}, {0x2c0c, 2457, 1}, {0x1f6d, 2217, 1}, {0x2c6d, 607, 1}, {0x051a, 1301, 1}, {0x24be, 2367, 1}, {0x10408, 3261, 1}, {0x1e08, 1724, 1}, {0x0408, 1010, 1}, {0x0108, 183, 1}, {0x1f08, 2082, 1}, {0x2c08, 2445, 1}, {0x04c9, 1178, 1}, {0x0518, 1298, 1}, {0x1fc9, 2235, 1}, {0xffffffff, -1, 0}, {0x24ba, 2355, 1}, {0x00c9, 105, 1}, {0x10416, 3303, 1}, {0x1e16, 1745, 1}, {0x0416, 908, 1}, {0x0116, 204, 1}, {0x050e, 1283, 1}, {0x2c16, 2487, 1}, {0x10414, 3297, 1}, {0x1e14, 1742, 1}, {0x0414, 902, 1}, {0x0114, 201, 1}, {0x042b, 971, 1}, {0x2c14, 2481, 1}, {0x1f2b, 2133, 1}, {0x2c2b, 2550, 1}, {0xffffffff, -1, 0}, {0x050c, 1280, 1}, {0x10406, 3255, 1}, {0x1e06, 1721, 1}, {0x0406, 1004, 1}, {0x0106, 180, 1}, {0x13fb, 1697, 1}, {0x2c06, 2439, 1}, {0x24c2, 2379, 1}, {0x118bd, 3597, 1}, {0xffffffff, -1, 0}, {0x0508, 1274, 1}, {0x10404, 3249, 1}, {0x1e04, 1718, 1}, {0x0404, 998, 1}, {0x0104, 177, 1}, {0x1f95, 194, 2}, {0x2c04, 2433, 1}, {0x0395, 752, 1}, {0x24ca, 2403, 1}, {0xab95, 1559, 1}, {0x0531, 1334, 1}, {0x10c95, 3420, 1}, {0x0516, 1295, 1}, {0x1e6c, 1875, 1}, {0x046c, 1052, 1}, {0x016c, 327, 1}, {0x1f6c, 2214, 1}, {0x216d, 2331, 1}, {0x0514, 1292, 1}, {0x0245, 697, 1}, {0x024c, 598, 1}, {0xa76c, 3084, 1}, {0x10400, 3237, 1}, {0x1e00, 1712, 1}, {0x0400, 986, 1}, {0x0100, 171, 1}, {0x24c4, 2385, 1}, {0x2c00, 2421, 1}, {0x0506, 1271, 1}, {0x024a, 595, 1}, {0x1fab, 224, 2}, {0xa66c, 2931, 1}, {0x03ab, 827, 1}, {0x24cf, 2418, 1}, {0xabab, 1625, 1}, {0xa7ab, 631, 1}, {0x10cab, 3486, 1}, {0xffffffff, -1, 0}, {0x0504, 1268, 1}, {0xffffffff, -1, 0}, {0x021c, 544, 1}, {0x01a9, 679, 1}, {0x1fa9, 214, 2}, {0x10ab, 2778, 1}, {0x03a9, 820, 1}, {0x212b, 92, 1}, {0xaba9, 1619, 1}, {0x1e88, 1917, 1}, {0x10ca9, 3480, 1}, {0x021a, 541, 1}, {0x1f88, 129, 2}, {0x2c88, 2598, 1}, {0x0388, 730, 1}, {0x13fd, 1703, 1}, {0xab88, 1520, 1}, {0x10a9, 2772, 1}, {0x10c88, 3381, 1}, {0xffffffff, -1, 0}, {0x0218, 538, 1}, {0x0500, 1262, 1}, {0x1f4d, 2187, 1}, {0x01a7, 393, 1}, {0x1fa7, 244, 2}, {0x004d, 34, 1}, {0x03a7, 814, 1}, {0xa688, 2946, 1}, {0xaba7, 1613, 1}, {0x020e, 523, 1}, {0x10ca7, 3474, 1}, {0x1e6a, 1872, 1}, {0x046a, 1049, 1}, {0x016a, 324, 1}, {0x1f6a, 2208, 1}, {0xffffffff, -1, 0}, {0x216c, 2328, 1}, {0x10a7, 2766, 1}, {0x01d1, 435, 1}, {0xa76a, 3081, 1}, {0x020c, 520, 1}, {0x03d1, 762, 1}, {0x00d1, 129, 1}, {0x1e68, 1869, 1}, {0x0468, 1046, 1}, {0x0168, 321, 1}, {0x1f68, 2202, 1}, {0xffffffff, -1, 0}, {0xff31, 3207, 1}, {0xa66a, 2928, 1}, {0x0208, 514, 1}, {0xa768, 3078, 1}, {0x1e64, 1863, 1}, {0x0464, 1040, 1}, {0x0164, 315, 1}, {0x054d, 1418, 1}, {0x2c64, 673, 1}, {0xffffffff, -1, 0}, {0xff2b, 3189, 1}, {0xffffffff, -1, 0}, {0xa764, 3072, 1}, {0xa668, 2925, 1}, {0x0216, 535, 1}, {0xffffffff, -1, 0}, {0x118ab, 3543, 1}, {0x1e62, 1860, 1}, {0x0462, 1037, 1}, {0x0162, 312, 1}, {0x0214, 532, 1}, {0x2c62, 655, 1}, {0xa664, 2919, 1}, {0x1ed2, 2013, 1}, {0x04d2, 1193, 1}, {0xa762, 3069, 1}, {0x1fd2, 20, 3}, {0x2cd2, 2709, 1}, {0x118a9, 3537, 1}, {0x00d2, 132, 1}, {0x0206, 511, 1}, {0x10420, 3333, 1}, {0x1e20, 1760, 1}, {0x0420, 938, 1}, {0x0120, 219, 1}, {0xa662, 2916, 1}, {0x2c20, 2517, 1}, {0x1e60, 1856, 1}, {0x0460, 1034, 1}, {0x0160, 309, 1}, {0x0204, 508, 1}, {0x2c60, 2562, 1}, {0xffffffff, -1, 0}, {0x24bd, 2364, 1}, {0x216a, 2322, 1}, {0xa760, 3066, 1}, {0xffffffff, -1, 0}, {0xfb16, 125, 2}, {0x118a7, 3531, 1}, {0x1efa, 2073, 1}, {0x04fa, 1253, 1}, {0x01fa, 493, 1}, {0x1ffa, 2262, 1}, {0xfb14, 109, 2}, {0x03fa, 887, 1}, {0xa660, 2913, 1}, {0x2168, 2316, 1}, {0x01b7, 700, 1}, {0x1fb7, 10, 3}, {0x1f6b, 2211, 1}, {0x2c6b, 2577, 1}, {0x0200, 502, 1}, {0xabb7, 1661, 1}, {0xfb06, 29, 2}, {0x1e56, 1841, 1}, {0x2164, 2304, 1}, {0x0156, 294, 1}, {0x1f56, 62, 3}, {0x0520, 1310, 1}, {0x004f, 40, 1}, {0x0056, 62, 1}, {0x10b7, 2814, 1}, {0xa756, 3051, 1}, {0xfb04, 5, 3}, {0x1e78, 1893, 1}, {0x0478, 1070, 1}, {0x0178, 168, 1}, {0x1e54, 1838, 1}, {0x2162, 2298, 1}, {0x0154, 291, 1}, {0x1f54, 57, 3}, {0xab78, 1472, 1}, {0xa656, 2898, 1}, {0x0054, 56, 1}, {0x1e52, 1835, 1}, {0xa754, 3048, 1}, {0x0152, 288, 1}, {0x1f52, 52, 3}, {0x24c9, 2400, 1}, {0x1e32, 1787, 1}, {0x0052, 49, 1}, {0x0132, 243, 1}, {0xa752, 3045, 1}, {0xffffffff, -1, 0}, {0xfb00, 4, 2}, {0xa654, 2895, 1}, {0xffffffff, -1, 0}, {0xa732, 2997, 1}, {0x2160, 2292, 1}, {0x054f, 1424, 1}, {0x0556, 1445, 1}, {0x1e50, 1832, 1}, {0xa652, 2892, 1}, {0x0150, 285, 1}, {0x1f50, 84, 2}, {0x017b, 348, 1}, {0x1e4e, 1829, 1}, {0x0050, 43, 1}, {0x014e, 282, 1}, {0xa750, 3042, 1}, {0xab7b, 1481, 1}, {0xa77b, 3093, 1}, {0x004e, 37, 1}, {0x0554, 1439, 1}, {0xa74e, 3039, 1}, {0x1e48, 1820, 1}, {0xffffffff, -1, 0}, {0x216b, 2325, 1}, {0x1f48, 2172, 1}, {0xa650, 2889, 1}, {0x0552, 1433, 1}, {0x0048, 21, 1}, {0xffffffff, -1, 0}, {0xa748, 3030, 1}, {0xa64e, 2886, 1}, {0x0532, 1337, 1}, {0x1041e, 3327, 1}, {0x1e1e, 1757, 1}, {0x041e, 932, 1}, {0x011e, 216, 1}, {0x118b7, 3579, 1}, {0x2c1e, 2511, 1}, {0xffffffff, -1, 0}, {0xa648, 2877, 1}, {0x1ff9, 2253, 1}, {0xffffffff, -1, 0}, {0x03f9, 878, 1}, {0x0550, 1427, 1}, {0x10412, 3291, 1}, {0x1e12, 1739, 1}, {0x0412, 896, 1}, {0x0112, 198, 1}, {0x054e, 1421, 1}, {0x2c12, 2475, 1}, {0x10410, 3285, 1}, {0x1e10, 1736, 1}, {0x0410, 890, 1}, {0x0110, 195, 1}, {0xffffffff, -1, 0}, {0x2c10, 2469, 1}, {0x2132, 2289, 1}, {0x0548, 1403, 1}, {0x1ef8, 2070, 1}, {0x04f8, 1250, 1}, {0x01f8, 490, 1}, {0x1ff8, 2250, 1}, {0x0220, 381, 1}, {0x1ee2, 2037, 1}, {0x04e2, 1217, 1}, {0x01e2, 462, 1}, {0x1fe2, 36, 3}, {0x2ce2, 2733, 1}, {0x03e2, 857, 1}, {0x051e, 1307, 1}, {0x1ede, 2031, 1}, {0x04de, 1211, 1}, {0x01de, 456, 1}, {0xffffffff, -1, 0}, {0x2cde, 2727, 1}, {0x03de, 851, 1}, {0x00de, 165, 1}, {0x1f69, 2205, 1}, {0x2c69, 2574, 1}, {0x1eda, 2025, 1}, {0x04da, 1205, 1}, {0x0512, 1289, 1}, {0x1fda, 2244, 1}, {0x2cda, 2721, 1}, {0x03da, 845, 1}, {0x00da, 153, 1}, {0xffffffff, -1, 0}, {0x0510, 1286, 1}, {0x1ed8, 2022, 1}, {0x04d8, 1202, 1}, {0xffffffff, -1, 0}, {0x1fd8, 2274, 1}, {0x2cd8, 2718, 1}, {0x03d8, 842, 1}, {0x00d8, 147, 1}, {0x1ed6, 2019, 1}, {0x04d6, 1199, 1}, {0xffffffff, -1, 0}, {0x1fd6, 76, 2}, {0x2cd6, 2715, 1}, {0x03d6, 792, 1}, {0x00d6, 144, 1}, {0x1ec8, 1998, 1}, {0xffffffff, -1, 0}, {0x01c8, 421, 1}, {0x1fc8, 2232, 1}, {0x2cc8, 2694, 1}, {0xff32, 3210, 1}, {0x00c8, 102, 1}, {0x04c7, 1175, 1}, {0x01c7, 421, 1}, {0x1fc7, 15, 3}, {0x1ec0, 1986, 1}, {0x04c0, 1187, 1}, {0x00c7, 99, 1}, {0xffffffff, -1, 0}, {0x2cc0, 2682, 1}, {0x0179, 345, 1}, {0x00c0, 77, 1}, {0x0232, 574, 1}, {0x01b3, 402, 1}, {0x1fb3, 62, 2}, {0xab79, 1475, 1}, {0xa779, 3090, 1}, {0x10c7, 2859, 1}, {0xabb3, 1649, 1}, {0xa7b3, 3156, 1}, {0x1fa5, 234, 2}, {0x10c0, 2841, 1}, {0x03a5, 807, 1}, {0xffffffff, -1, 0}, {0xaba5, 1607, 1}, {0x01b1, 691, 1}, {0x10ca5, 3468, 1}, {0x10b3, 2802, 1}, {0x2169, 2319, 1}, {0x024e, 601, 1}, {0xabb1, 1643, 1}, {0xa7b1, 682, 1}, {0x10cb1, 3504, 1}, {0x10a5, 2760, 1}, {0xffffffff, -1, 0}, {0x01af, 399, 1}, {0x1faf, 244, 2}, {0xffffffff, -1, 0}, {0x0248, 592, 1}, {0x10b1, 2796, 1}, {0xabaf, 1637, 1}, {0x1fad, 234, 2}, {0x10caf, 3498, 1}, {0x04cd, 1184, 1}, {0x01cd, 429, 1}, {0xabad, 1631, 1}, {0xa7ad, 658, 1}, {0x10cad, 3492, 1}, {0x00cd, 117, 1}, {0x10af, 2790, 1}, {0x021e, 547, 1}, {0x1fa3, 224, 2}, {0xffffffff, -1, 0}, {0x03a3, 800, 1}, {0x10ad, 2784, 1}, {0xaba3, 1601, 1}, {0xffffffff, -1, 0}, {0x10ca3, 3462, 1}, {0x10cd, 2862, 1}, {0x1fa1, 214, 2}, {0x24b7, 2346, 1}, {0x03a1, 796, 1}, {0x0212, 529, 1}, {0xaba1, 1595, 1}, {0x10a3, 2754, 1}, {0x10ca1, 3456, 1}, {0x01d3, 438, 1}, {0x1fd3, 25, 3}, {0x0210, 526, 1}, {0xffffffff, -1, 0}, {0x00d3, 135, 1}, {0x1e97, 34, 2}, {0x10a1, 2748, 1}, {0x0197, 649, 1}, {0x1f97, 204, 2}, {0xffffffff, -1, 0}, {0x0397, 759, 1}, {0x1041d, 3324, 1}, {0xab97, 1565, 1}, {0x041d, 929, 1}, {0x10c97, 3426, 1}, {0x1f1d, 2121, 1}, {0x2c1d, 2508, 1}, {0x1e72, 1884, 1}, {0x0472, 1061, 1}, {0x0172, 336, 1}, {0x118b3, 3567, 1}, {0x2c72, 2580, 1}, {0x0372, 712, 1}, {0x1041b, 3318, 1}, {0xab72, 1454, 1}, {0x041b, 923, 1}, {0x118a5, 3525, 1}, {0x1f1b, 2115, 1}, {0x2c1b, 2502, 1}, {0x1e70, 1881, 1}, {0x0470, 1058, 1}, {0x0170, 333, 1}, {0x118b1, 3561, 1}, {0x2c70, 610, 1}, {0x0370, 709, 1}, {0x1e46, 1817, 1}, {0xab70, 1448, 1}, {0x1e66, 1866, 1}, {0x0466, 1043, 1}, {0x0166, 318, 1}, {0x1e44, 1814, 1}, {0x0046, 15, 1}, {0x118af, 3555, 1}, {0xa746, 3027, 1}, {0xffffffff, -1, 0}, {0xa766, 3075, 1}, {0x0044, 9, 1}, {0x118ad, 3549, 1}, {0xa744, 3024, 1}, {0x1e7a, 1896, 1}, {0x047a, 1073, 1}, {0x1e3a, 1799, 1}, {0xffffffff, -1, 0}, {0xa646, 2874, 1}, {0x1f3a, 2154, 1}, {0xa666, 2922, 1}, {0xab7a, 1478, 1}, {0x118a3, 3519, 1}, {0xa644, 2871, 1}, {0xa73a, 3009, 1}, {0xffffffff, -1, 0}, {0x1ef4, 2064, 1}, {0x04f4, 1244, 1}, {0x01f4, 487, 1}, {0x1ff4, 101, 2}, {0x118a1, 3513, 1}, {0x03f4, 762, 1}, {0x1eec, 2052, 1}, {0x04ec, 1232, 1}, {0x01ec, 477, 1}, {0x1fec, 2286, 1}, {0x0546, 1397, 1}, {0x03ec, 872, 1}, {0xffffffff, -1, 0}, {0x013f, 261, 1}, {0x1f3f, 2169, 1}, {0x0544, 1391, 1}, {0x1eea, 2049, 1}, {0x04ea, 1229, 1}, {0x01ea, 474, 1}, {0x1fea, 2256, 1}, {0xffffffff, -1, 0}, {0x03ea, 869, 1}, {0x1ee8, 2046, 1}, {0x04e8, 1226, 1}, {0x01e8, 471, 1}, {0x1fe8, 2280, 1}, {0x053a, 1361, 1}, {0x03e8, 866, 1}, {0x1ee6, 2043, 1}, {0x04e6, 1223, 1}, {0x01e6, 468, 1}, {0x1fe6, 88, 2}, {0x1f4b, 2181, 1}, {0x03e6, 863, 1}, {0x1e5e, 1853, 1}, {0x004b, 27, 1}, {0x015e, 306, 1}, {0x2166, 2310, 1}, {0x1ee4, 2040, 1}, {0x04e4, 1220, 1}, {0x01e4, 465, 1}, {0x1fe4, 80, 2}, {0xa75e, 3063, 1}, {0x03e4, 860, 1}, {0x1ee0, 2034, 1}, {0x04e0, 1214, 1}, {0x01e0, 459, 1}, {0x053f, 1376, 1}, {0x2ce0, 2730, 1}, {0x03e0, 854, 1}, {0x1edc, 2028, 1}, {0x04dc, 1208, 1}, {0xa65e, 2910, 1}, {0xffffffff, -1, 0}, {0x2cdc, 2724, 1}, {0x03dc, 848, 1}, {0x00dc, 159, 1}, {0x1ed0, 2010, 1}, {0x04d0, 1190, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x2cd0, 2706, 1}, {0x03d0, 742, 1}, {0x00d0, 126, 1}, {0x1ecc, 2004, 1}, {0x054b, 1412, 1}, {0xffffffff, -1, 0}, {0x1fcc, 71, 2}, {0x2ccc, 2700, 1}, {0x1ec6, 1995, 1}, {0x00cc, 114, 1}, {0xffffffff, -1, 0}, {0x1fc6, 67, 2}, {0x2cc6, 2691, 1}, {0x24c8, 2397, 1}, {0x00c6, 96, 1}, {0x04c5, 1172, 1}, {0x01c5, 417, 1}, {0xffffffff, -1, 0}, {0x1fbb, 2229, 1}, {0x24c7, 2394, 1}, {0x00c5, 92, 1}, {0x1fb9, 2271, 1}, {0xabbb, 1673, 1}, {0x24c0, 2373, 1}, {0x04c3, 1169, 1}, {0xabb9, 1667, 1}, {0x1fc3, 71, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x00c3, 86, 1}, {0x10c5, 2856, 1}, {0x10bb, 2826, 1}, {0x1ed4, 2016, 1}, {0x04d4, 1196, 1}, {0x10b9, 2820, 1}, {0x13fc, 1700, 1}, {0x2cd4, 2712, 1}, {0x0246, 589, 1}, {0x00d4, 138, 1}, {0x10c3, 2850, 1}, {0xffffffff, -1, 0}, {0xff3a, 3234, 1}, {0x0244, 688, 1}, {0x019f, 670, 1}, {0x1f9f, 204, 2}, {0xffffffff, -1, 0}, {0x039f, 789, 1}, {0xffffffff, -1, 0}, {0xab9f, 1589, 1}, {0xffffffff, -1, 0}, {0x10c9f, 3450, 1}, {0x019d, 667, 1}, {0x1f9d, 194, 2}, {0x023a, 2565, 1}, {0x039d, 783, 1}, {0x1e5a, 1847, 1}, {0xab9d, 1583, 1}, {0x015a, 300, 1}, {0x10c9d, 3444, 1}, {0x1e9b, 1856, 1}, {0x24cd, 2412, 1}, {0x005a, 74, 1}, {0x1f9b, 184, 2}, {0xa75a, 3057, 1}, {0x039b, 776, 1}, {0x1ece, 2007, 1}, {0xab9b, 1577, 1}, {0x1e99, 42, 2}, {0x10c9b, 3438, 1}, {0x2cce, 2703, 1}, {0x1f99, 174, 2}, {0x00ce, 120, 1}, {0x0399, 767, 1}, {0xa65a, 2904, 1}, {0xab99, 1571, 1}, {0xffffffff, -1, 0}, {0x10c99, 3432, 1}, {0x0193, 634, 1}, {0x1f93, 184, 2}, {0x1e58, 1844, 1}, {0x0393, 746, 1}, {0x0158, 297, 1}, {0xab93, 1553, 1}, {0xffffffff, -1, 0}, {0x10c93, 3414, 1}, {0x0058, 68, 1}, {0x042d, 977, 1}, {0xa758, 3054, 1}, {0x1f2d, 2139, 1}, {0x2c2d, 2556, 1}, {0x118bb, 3591, 1}, {0x0191, 369, 1}, {0x1f91, 174, 2}, {0x118b9, 3585, 1}, {0x0391, 739, 1}, {0xffffffff, -1, 0}, {0xab91, 1547, 1}, {0xa658, 2901, 1}, {0x10c91, 3408, 1}, {0x018f, 625, 1}, {0x1f8f, 164, 2}, {0xffffffff, -1, 0}, {0x038f, 836, 1}, {0xffffffff, -1, 0}, {0xab8f, 1541, 1}, {0xffffffff, -1, 0}, {0x10c8f, 3402, 1}, {0x018b, 366, 1}, {0x1f8b, 144, 2}, {0xffffffff, -1, 0}, {0x0187, 363, 1}, {0x1f87, 164, 2}, {0xab8b, 1529, 1}, {0xa78b, 3111, 1}, {0x10c8b, 3390, 1}, {0xab87, 1517, 1}, {0x04c1, 1166, 1}, {0x10c87, 3378, 1}, {0x1e7e, 1902, 1}, {0x047e, 1079, 1}, {0xffffffff, -1, 0}, {0x00c1, 80, 1}, {0x2c7e, 580, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xab7e, 1490, 1}, {0xa77e, 3096, 1}, {0x1e76, 1890, 1}, {0x0476, 1067, 1}, {0x0176, 342, 1}, {0x1e42, 1811, 1}, {0x10c1, 2844, 1}, {0x0376, 715, 1}, {0x1e36, 1793, 1}, {0xab76, 1466, 1}, {0x0136, 249, 1}, {0x0042, 3, 1}, {0x1e3e, 1805, 1}, {0xa742, 3021, 1}, {0x1e38, 1796, 1}, {0x1f3e, 2166, 1}, {0xa736, 3003, 1}, {0x1f38, 2148, 1}, {0xffffffff, -1, 0}, {0x0587, 105, 2}, {0xa73e, 3015, 1}, {0xffffffff, -1, 0}, {0xa738, 3006, 1}, {0xa642, 2868, 1}, {0x1e5c, 1850, 1}, {0x1e34, 1790, 1}, {0x015c, 303, 1}, {0x0134, 246, 1}, {0x1ef6, 2067, 1}, {0x04f6, 1247, 1}, {0x01f6, 372, 1}, {0x1ff6, 92, 2}, {0xa75c, 3060, 1}, {0xa734, 3000, 1}, {0x1ef0, 2058, 1}, {0x04f0, 1238, 1}, {0x01f0, 20, 2}, {0xffffffff, -1, 0}, {0x1e30, 1784, 1}, {0x03f0, 772, 1}, {0x0130, 261, 2}, {0x0542, 1385, 1}, {0xa65c, 2907, 1}, {0x1f83, 144, 2}, {0x0536, 1349, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xab83, 1505, 1}, {0x053e, 1373, 1}, {0x10c83, 3366, 1}, {0x0538, 1355, 1}, {0x1eee, 2055, 1}, {0x04ee, 1235, 1}, {0x01ee, 480, 1}, {0x1f8d, 154, 2}, {0xffffffff, -1, 0}, {0x03ee, 875, 1}, {0xffffffff, -1, 0}, {0xab8d, 1535, 1}, {0xa78d, 643, 1}, {0x10c8d, 3396, 1}, {0x0534, 1343, 1}, {0x0181, 613, 1}, {0x1f81, 134, 2}, {0x013d, 258, 1}, {0x1f3d, 2163, 1}, {0xffffffff, -1, 0}, {0xab81, 1499, 1}, {0x017f, 52, 1}, {0x10c81, 3360, 1}, {0x2c7f, 583, 1}, {0x037f, 881, 1}, {0xff2d, 3195, 1}, {0xab7f, 1493, 1}, {0x1e74, 1887, 1}, {0x0474, 1064, 1}, {0x0174, 339, 1}, {0x1e3c, 1802, 1}, {0x0149, 46, 2}, {0x1f49, 2175, 1}, {0x1f3c, 2160, 1}, {0xab74, 1460, 1}, {0x0049, 3606, 1}, {0x0143, 267, 1}, {0x24cc, 2409, 1}, {0xa73c, 3012, 1}, {0xffffffff, -1, 0}, {0x0043, 6, 1}, {0x0141, 264, 1}, {0x24c6, 2391, 1}, {0x013b, 255, 1}, {0x1f3b, 2157, 1}, {0x0041, 0, 1}, {0x0139, 252, 1}, {0x1f39, 2151, 1}, {0x24c5, 2388, 1}, {0x24bb, 2358, 1}, {0x13fa, 1694, 1}, {0x053d, 1370, 1}, {0x24b9, 2352, 1}, {0x0429, 965, 1}, {0x2183, 2340, 1}, {0x1f29, 2127, 1}, {0x2c29, 2544, 1}, {0x24c3, 2382, 1}, {0x10427, 3354, 1}, {0x10425, 3348, 1}, {0x0427, 959, 1}, {0x0425, 953, 1}, {0xffffffff, -1, 0}, {0x2c27, 2538, 1}, {0x2c25, 2532, 1}, {0x0549, 1406, 1}, {0x053c, 1367, 1}, {0x10423, 3342, 1}, {0xffffffff, -1, 0}, {0x0423, 947, 1}, {0x0543, 1388, 1}, {0xffffffff, -1, 0}, {0x2c23, 2526, 1}, {0xff36, 3222, 1}, {0xffffffff, -1, 0}, {0x0541, 1382, 1}, {0x10421, 3336, 1}, {0x053b, 1364, 1}, {0x0421, 941, 1}, {0xff38, 3228, 1}, {0x0539, 1358, 1}, {0x2c21, 2520, 1}, {0x10419, 3312, 1}, {0x10417, 3306, 1}, {0x0419, 917, 1}, {0x0417, 911, 1}, {0x1f19, 2109, 1}, {0x2c19, 2496, 1}, {0x2c17, 2490, 1}, {0x023e, 2568, 1}, {0xff34, 3216, 1}, {0x10415, 3300, 1}, {0x10413, 3294, 1}, {0x0415, 905, 1}, {0x0413, 899, 1}, {0xffffffff, -1, 0}, {0x2c15, 2484, 1}, {0x2c13, 2478, 1}, {0xffffffff, -1, 0}, {0x24ce, 2415, 1}, {0x1040f, 3282, 1}, {0xffffffff, -1, 0}, {0x040f, 1031, 1}, {0xff30, 3204, 1}, {0x1f0f, 2103, 1}, {0x2c0f, 2466, 1}, {0x1040d, 3276, 1}, {0xffffffff, -1, 0}, {0x040d, 1025, 1}, {0x0147, 273, 1}, {0x1f0d, 2097, 1}, {0x2c0d, 2460, 1}, {0x1040b, 3270, 1}, {0x0047, 18, 1}, {0x040b, 1019, 1}, {0x0230, 571, 1}, {0x1f0b, 2091, 1}, {0x2c0b, 2454, 1}, {0x10409, 3264, 1}, {0x10405, 3252, 1}, {0x0409, 1013, 1}, {0x0405, 1001, 1}, {0x1f09, 2085, 1}, {0x2c09, 2448, 1}, {0x2c05, 2436, 1}, {0x10403, 3246, 1}, {0x10401, 3240, 1}, {0x0403, 995, 1}, {0x0401, 989, 1}, {0xffffffff, -1, 0}, {0x2c03, 2430, 1}, {0x2c01, 2424, 1}, {0x13f9, 1691, 1}, {0x042f, 983, 1}, {0xffffffff, -1, 0}, {0x1f2f, 2145, 1}, {0x1041f, 3330, 1}, {0xffffffff, -1, 0}, {0x041f, 935, 1}, {0x023d, 378, 1}, {0x10411, 3288, 1}, {0x2c1f, 2514, 1}, {0x0411, 893, 1}, {0x0547, 1400, 1}, {0xffffffff, -1, 0}, {0x2c11, 2472, 1}, {0x10407, 3258, 1}, {0xffffffff, -1, 0}, {0x0407, 1007, 1}, {0x24c1, 2376, 1}, {0xffffffff, -1, 0}, {0x2c07, 2442, 1}, {0xffffffff, -1, 0}, {0x13f8, 1688, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff39, 3231, 1}, {0xffffffff, -1, 0}, {0x0243, 354, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0x0241, 586, 1}, {0xff29, 3183, 1}, {0x023b, 577, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff27, 3177, 1}, {0xff25, 3171, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff23, 3165, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff21, 3159, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb17, 117, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xff2f, 3201, 1}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb15, 113, 2}, {0xfb13, 121, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb05, 29, 2}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xffffffff, -1, 0}, {0xfb03, 0, 3}, {0xfb01, 8, 2} }; if (0 == 0) { int key = hash(&code); if (key <= MAX_HASH_VALUE && key >= 0) { OnigCodePoint gcode = wordlist[key].code; if (code == gcode && wordlist[key].index >= 0) return &wordlist[key]; } } return 0; } oniguruma-6.7.0/src/utf16_be.c000066400000000000000000000145311321242335200161010ustar00rootroot00000000000000/********************************************************************** utf16_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; static int utf16be_mbc_enc_len(const UChar* p) { return EncLen_UTF16[*p]; } static int is_valid_mbc_string(const UChar* s, const UChar* end) { return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_UTF16_BE, s, end); } static int utf16be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { if (*(p+1) == 0x0a && *p == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( #ifndef USE_CRNL_AS_LINE_TERMINATOR *(p+1) == 0x0d || #endif *(p+1) == 0x85) && *p == 0x00) return 1; if (*p == 0x20 && (*(p+1) == 0x29 || *(p+1) == 0x28)) return 1; #endif } return 0; } static OnigCodePoint utf16be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { OnigCodePoint code; if (UTF16_IS_SURROGATE_FIRST(*p)) { code = ((((p[0] - 0xd8) << 2) + ((p[1] & 0xc0) >> 6) + 1) << 16) + ((((p[1] & 0x3f) << 2) + (p[2] - 0xdc)) << 8) + p[3]; } else { code = p[0] * 256 + p[1]; } return code; } static int utf16be_code_to_mbclen(OnigCodePoint code) { return (code > 0xffff ? 4 : 2); } static int utf16be_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; if (code > 0xffff) { unsigned int plane, high; plane = (code >> 16) - 1; *p++ = (plane >> 2) + 0xd8; high = (code & 0xff00) >> 8; *p++ = ((plane & 0x03) << 6) + (high >> 2); *p++ = (high & 0x03) + 0xdc; *p = (UChar )(code & 0xff); return 4; } else { *p++ = (UChar )((code & 0xff00) >> 8); *p++ = (UChar )(code & 0xff); return 2; } } static int utf16be_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; if (ONIGENC_IS_ASCII_CODE(*(p+1)) && *p == 0) { p++; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { *fold++ = 0x01; *fold = 0x31; (*pp) += 2; return 2; } } #endif *fold++ = 0; *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); *pp += 2; return 2; } else return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_BE, flag, pp, end, fold); } #if 0 static int utf16be_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; (*pp) += EncLen_UTF16[*p]; if (*p == 0) { int c, v; p++; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { return TRUE; } c = *p; v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (c >= 0xaa && c <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } return FALSE; } #endif static UChar* utf16be_left_adjust_char_head(const UChar* start, const UChar* s) { if (s <= start) return (UChar* )s; if ((s - start) % 2 == 1) { s--; } if (UTF16_IS_SURROGATE_SECOND(*s) && s > start + 1) s -= 2; return (UChar* )s; } static int utf16be_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_BE, flag, p, end, items); } OnigEncodingType OnigEncodingUTF16_BE = { utf16be_mbc_enc_len, "UTF-16BE", /* name */ 4, /* max byte length */ 2, /* min byte length */ utf16be_is_mbc_newline, utf16be_mbc_to_code, utf16be_code_to_mbclen, utf16be_code_to_mbc, utf16be_mbc_case_fold, onigenc_unicode_apply_all_case_fold, utf16be_get_case_fold_codes_by_str, onigenc_unicode_property_name_to_ctype, onigenc_unicode_is_code_ctype, onigenc_utf16_32_get_ctype_code_range, utf16be_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/utf16_le.c000066400000000000000000000147111321242335200161130ustar00rootroot00000000000000/********************************************************************** utf16_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static const int EncLen_UTF16[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; static int utf16le_code_to_mbclen(OnigCodePoint code) { return (code > 0xffff ? 4 : 2); } static int utf16le_mbc_enc_len(const UChar* p) { return EncLen_UTF16[*(p+1)]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { const UChar* end1 = end - 1; while (p < end1) { p += utf16le_mbc_enc_len(p); } if (p != end) return FALSE; else return TRUE; } static int utf16le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 1 < end) { if (*p == 0x0a && *(p+1) == 0x00) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( #ifndef USE_CRNL_AS_LINE_TERMINATOR *p == 0x0d || #endif *p == 0x85) && *(p+1) == 0x00) return 1; if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28)) return 1; #endif } return 0; } static OnigCodePoint utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { OnigCodePoint code; UChar c0 = *p; UChar c1 = *(p+1); if (UTF16_IS_SURROGATE_FIRST(c1)) { code = ((((c1 - 0xd8) << 2) + ((c0 & 0xc0) >> 6) + 1) << 16) + ((((c0 & 0x3f) << 2) + (p[3] - 0xdc)) << 8) + p[2]; } else { code = c1 * 256 + p[0]; } return code; } static int utf16le_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; if (code > 0xffff) { unsigned int plane, high; plane = (code >> 16) - 1; high = (code & 0xff00) >> 8; *p++ = ((plane & 0x03) << 6) + (high >> 2); *p++ = (plane >> 2) + 0xd8; *p++ = (UChar )(code & 0xff); *p = (high & 0x03) + 0xdc; return 4; } else { *p++ = (UChar )(code & 0xff); *p++ = (UChar )((code & 0xff00) >> 8); return 2; } } static int utf16le_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; if (ONIGENC_IS_ASCII_CODE(*p) && *(p+1) == 0) { #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { *fold++ = 0x31; *fold = 0x01; (*pp) += 2; return 2; } } #endif *fold++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); *fold = 0; *pp += 2; return 2; } else return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_LE, flag, pp, end, fold); } #if 0 static int utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; (*pp) += EncLen_UTF16[*(p+1)]; if (*(p+1) == 0) { int c, v; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { return TRUE; } c = *p; v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (c >= 0xaa && c <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } return FALSE; } #endif static UChar* utf16le_left_adjust_char_head(const UChar* start, const UChar* s) { if (s <= start) return (UChar* )s; if ((s - start) % 2 == 1) { s--; } if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1) s -= 2; return (UChar* )s; } static int utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_LE, flag, p, end, items); } OnigEncodingType OnigEncodingUTF16_LE = { utf16le_mbc_enc_len, "UTF-16LE", /* name */ 4, /* max byte length */ 2, /* min byte length */ utf16le_is_mbc_newline, utf16le_mbc_to_code, utf16le_code_to_mbclen, utf16le_code_to_mbc, utf16le_mbc_case_fold, onigenc_unicode_apply_all_case_fold, utf16le_get_case_fold_codes_by_str, onigenc_unicode_property_name_to_ctype, onigenc_unicode_is_code_ctype, onigenc_utf16_32_get_ctype_code_range, utf16le_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/utf32_be.c000066400000000000000000000124021321242335200160720ustar00rootroot00000000000000/********************************************************************** utf32_be.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static int utf32be_mbc_enc_len(const UChar* p ARG_UNUSED) { return 4; } static int is_valid_mbc_string(const UChar* s, const UChar* end) { return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_UTF32_BE, s, end); } static int utf32be_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { if (*(p+3) == 0x0a && *(p+2) == 0 && *(p+1) == 0 && *p == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( #ifndef USE_CRNL_AS_LINE_TERMINATOR *(p+3) == 0x0d || #endif *(p+3) == 0x85) && *(p+2) == 0 && *(p+1) == 0 && *p == 0x00) return 1; if (*(p+2) == 0x20 && (*(p+3) == 0x29 || *(p+3) == 0x28) && *(p+1) == 0 && *p == 0) return 1; #endif } return 0; } static OnigCodePoint utf32be_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { return (OnigCodePoint )(((p[0] * 256 + p[1]) * 256 + p[2]) * 256 + p[3]); } static int utf32be_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { return 4; } static int utf32be_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; *p++ = (UChar )((code & 0xff000000) >>24); *p++ = (UChar )((code & 0xff0000) >>16); *p++ = (UChar )((code & 0xff00) >> 8); *p++ = (UChar ) (code & 0xff); return 4; } static int utf32be_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; if (ONIGENC_IS_ASCII_CODE(*(p+3)) && *(p+2) == 0 && *(p+1) == 0 && *p == 0) { *fold++ = 0; *fold++ = 0; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*(p+3) == 0x49) { *fold++ = 0x01; *fold = 0x31; (*pp) += 4; return 4; } } #endif *fold++ = 0; *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*(p+3)); *pp += 4; return 4; } else return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF32_BE, flag, pp, end, fold); } #if 0 static int utf32be_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; (*pp) += 4; if (*(p+2) == 0 && *(p+1) == 0 && *p == 0) { int c, v; p += 3; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { return TRUE; } c = *p; v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (c >= 0xaa && c <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } return FALSE; } #endif static UChar* utf32be_left_adjust_char_head(const UChar* start, const UChar* s) { int rem; if (s <= start) return (UChar* )s; rem = (s - start) % 4; return (UChar* )(s - rem); } static int utf32be_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF32_BE, flag, p, end, items); } OnigEncodingType OnigEncodingUTF32_BE = { utf32be_mbc_enc_len, "UTF-32BE", /* name */ 4, /* max byte length */ 4, /* min byte length */ utf32be_is_mbc_newline, utf32be_mbc_to_code, utf32be_code_to_mbclen, utf32be_code_to_mbc, utf32be_mbc_case_fold, onigenc_unicode_apply_all_case_fold, utf32be_get_case_fold_codes_by_str, onigenc_unicode_property_name_to_ctype, onigenc_unicode_is_code_ctype, onigenc_utf16_32_get_ctype_code_range, utf32be_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/utf32_le.c000066400000000000000000000124701321242335200161110ustar00rootroot00000000000000/********************************************************************** utf32_le.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2016 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" static int utf32le_mbc_enc_len(const UChar* p ARG_UNUSED) { return 4; } static int is_valid_mbc_string(const UChar* s, const UChar* end) { return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_UTF32_LE, s, end); } static int utf32le_is_mbc_newline(const UChar* p, const UChar* end) { if (p + 3 < end) { if (*p == 0x0a && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS if (( #ifndef USE_CRNL_AS_LINE_TERMINATOR *p == 0x0d || #endif *p == 0x85) && *(p+1) == 0x00 && (p+2) == 0x00 && *(p+3) == 0x00) return 1; if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28) && *(p+2) == 0x00 && *(p+3) == 0x00) return 1; #endif } return 0; } static OnigCodePoint utf32le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED) { return (OnigCodePoint )(((p[3] * 256 + p[2]) * 256 + p[1]) * 256 + p[0]); } static int utf32le_code_to_mbclen(OnigCodePoint code ARG_UNUSED) { return 4; } static int utf32le_code_to_mbc(OnigCodePoint code, UChar *buf) { UChar* p = buf; *p++ = (UChar ) (code & 0xff); *p++ = (UChar )((code & 0xff00) >> 8); *p++ = (UChar )((code & 0xff0000) >>16); *p++ = (UChar )((code & 0xff000000) >>24); return 4; } static int utf32le_mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; if (ONIGENC_IS_ASCII_CODE(*p) && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) { #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { *fold++ = 0x31; *fold++ = 0x01; } } else { #endif *fold++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); *fold++ = 0; #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI } #endif *fold++ = 0; *fold = 0; *pp += 4; return 4; } else return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF32_LE, flag, pp, end, fold); } #if 0 static int utf32le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp, const UChar* end) { const UChar* p = *pp; (*pp) += 4; if (*(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0) { int c, v; if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) { return TRUE; } c = *p; v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c, (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER)); if ((v | BIT_CTYPE_LOWER) != 0) { /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */ if (c >= 0xaa && c <= 0xba) return FALSE; else return TRUE; } return (v != 0 ? TRUE : FALSE); } return FALSE; } #endif static UChar* utf32le_left_adjust_char_head(const UChar* start, const UChar* s) { int rem; if (s <= start) return (UChar* )s; rem = (s - start) % 4; return (UChar* )(s - rem); } static int utf32le_get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF32_LE, flag, p, end, items); } OnigEncodingType OnigEncodingUTF32_LE = { utf32le_mbc_enc_len, "UTF-32LE", /* name */ 4, /* max byte length */ 4, /* min byte length */ utf32le_is_mbc_newline, utf32le_mbc_to_code, utf32le_code_to_mbclen, utf32le_code_to_mbc, utf32le_mbc_case_fold, onigenc_unicode_apply_all_case_fold, utf32le_get_case_fold_codes_by_str, onigenc_unicode_property_name_to_ctype, onigenc_unicode_is_code_ctype, onigenc_utf16_32_get_ctype_code_range, utf32le_left_adjust_char_head, onigenc_always_false_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/src/utf8.c000066400000000000000000000176771321242335200153720ustar00rootroot00000000000000/********************************************************************** utf8.c - Oniguruma (regular expression library) **********************************************************************/ /*- * Copyright (c) 2002-2017 K.Kosako * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include "regenc.h" //#define USE_INVALID_CODE_SCHEME #ifdef USE_INVALID_CODE_SCHEME /* virtual codepoint values for invalid encoding byte 0xfe and 0xff */ #define INVALID_CODE_FE 0xfffffffe #define INVALID_CODE_FF 0xffffffff #define VALID_CODE_LIMIT 0x7fffffff #endif #define utf8_islead(c) ((UChar )((c) & 0xc0) != 0x80) #define utf8_istail(c) ((UChar )((c) & 0xc0) == 0x80) static const int EncLen_UTF8[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1 }; static int mbc_enc_len(const UChar* p) { return EncLen_UTF8[*p]; } static int is_valid_mbc_string(const UChar* p, const UChar* end) { int i, len; while (p < end) { if (! utf8_islead(*p)) return FALSE; len = mbc_enc_len(p++); if (len > 1) { for (i = 1; i < len; i++) { if (p == end) return FALSE; if (! utf8_istail(*p++)) return FALSE; } } } return TRUE; } #if 0 static int is_mbc_newline(const UChar* p, const UChar* end) { if (p < end) { if (*p == 0x0a) return 1; #ifdef USE_UNICODE_ALL_LINE_TERMINATORS #ifndef USE_CRNL_AS_LINE_TERMINATOR if (*p == 0x0d) return 1; #endif if (p + 1 < end) { if (*(p+1) == 0x85 && *p == 0xc2) /* U+0085 */ return 1; if (p + 2 < end) { if ((*(p+2) == 0xa8 || *(p+2) == 0xa9) && *(p+1) == 0x80 && *p == 0xe2) /* U+2028, U+2029 */ return 1; } } #endif } return 0; } #endif static OnigCodePoint mbc_to_code(const UChar* p, const UChar* end) { int c, len; OnigCodePoint n; len = mbc_enc_len(p); if (len > (int )(end - p)) len = (int )(end - p); c = *p++; if (len > 1) { len--; n = c & ((1 << (6 - len)) - 1); while (len--) { c = *p++; n = (n << 6) | (c & ((1 << 6) - 1)); } return n; } else { #ifdef USE_INVALID_CODE_SCHEME if (c > 0xfd) { return ((c == 0xfe) ? INVALID_CODE_FE : INVALID_CODE_FF); } #endif return (OnigCodePoint )c; } } static int code_to_mbclen(OnigCodePoint code) { if ((code & 0xffffff80) == 0) return 1; else if ((code & 0xfffff800) == 0) return 2; else if ((code & 0xffff0000) == 0) return 3; else if ((code & 0xffe00000) == 0) return 4; else if ((code & 0xfc000000) == 0) return 5; else if ((code & 0x80000000) == 0) return 6; #ifdef USE_INVALID_CODE_SCHEME else if (code == INVALID_CODE_FE) return 1; else if (code == INVALID_CODE_FF) return 1; #endif else return ONIGERR_INVALID_CODE_POINT_VALUE; } static int code_to_mbc(OnigCodePoint code, UChar *buf) { #define UTF8_TRAILS(code, shift) (UChar )((((code) >> (shift)) & 0x3f) | 0x80) #define UTF8_TRAIL0(code) (UChar )(((code) & 0x3f) | 0x80) if ((code & 0xffffff80) == 0) { *buf = (UChar )code; return 1; } else { UChar *p = buf; if ((code & 0xfffff800) == 0) { *p++ = (UChar )(((code>>6)& 0x1f) | 0xc0); } else if ((code & 0xffff0000) == 0) { *p++ = (UChar )(((code>>12) & 0x0f) | 0xe0); *p++ = UTF8_TRAILS(code, 6); } else if ((code & 0xffe00000) == 0) { *p++ = (UChar )(((code>>18) & 0x07) | 0xf0); *p++ = UTF8_TRAILS(code, 12); *p++ = UTF8_TRAILS(code, 6); } else if ((code & 0xfc000000) == 0) { *p++ = (UChar )(((code>>24) & 0x03) | 0xf8); *p++ = UTF8_TRAILS(code, 18); *p++ = UTF8_TRAILS(code, 12); *p++ = UTF8_TRAILS(code, 6); } else if ((code & 0x80000000) == 0) { *p++ = (UChar )(((code>>30) & 0x01) | 0xfc); *p++ = UTF8_TRAILS(code, 24); *p++ = UTF8_TRAILS(code, 18); *p++ = UTF8_TRAILS(code, 12); *p++ = UTF8_TRAILS(code, 6); } #ifdef USE_INVALID_CODE_SCHEME else if (code == INVALID_CODE_FE) { *p = 0xfe; return 1; } else if (code == INVALID_CODE_FF) { *p = 0xff; return 1; } #endif else { return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE; } *p++ = UTF8_TRAIL0(code); return (int )(p - buf); } } static int mbc_case_fold(OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold) { const UChar* p = *pp; if (ONIGENC_IS_MBC_ASCII(p)) { #ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) { if (*p == 0x49) { *fold++ = 0xc4; *fold = 0xb1; (*pp)++; return 2; } } #endif *fold = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p); (*pp)++; return 1; /* return byte length of converted char to lower */ } else { return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF8, flag, pp, end, fold); } } static int get_ctype_code_range(OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]) { *sb_out = 0x80; return onigenc_unicode_ctype_code_range(ctype, ranges); } static UChar* left_adjust_char_head(const UChar* start, const UChar* s) { const UChar *p; if (s <= start) return (UChar* )s; p = s; while (!utf8_islead(*p) && p > start) p--; return (UChar* )p; } static int get_case_fold_codes_by_str(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]) { return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF8, flag, p, end, items); } OnigEncodingType OnigEncodingUTF8 = { mbc_enc_len, "UTF-8", /* name */ 6, /* max byte length */ 1, /* min byte length */ onigenc_is_mbc_newline_0x0a, mbc_to_code, code_to_mbclen, code_to_mbc, mbc_case_fold, onigenc_unicode_apply_all_case_fold, get_case_fold_codes_by_str, onigenc_unicode_property_name_to_ctype, onigenc_unicode_is_code_ctype, get_ctype_code_range, left_adjust_char_head, onigenc_always_true_is_allowed_reverse_match, NULL, /* init */ NULL, /* is_initialized */ is_valid_mbc_string }; oniguruma-6.7.0/test-driver000077500000000000000000000110401321242335200157210ustar00rootroot00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2013-07-13.22; # UTC # Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: oniguruma-6.7.0/test/000077500000000000000000000000001321242335200145065ustar00rootroot00000000000000oniguruma-6.7.0/test/.gitignore000066400000000000000000000000411321242335200164710ustar00rootroot00000000000000/test_utf8 /testc /testcu /testp oniguruma-6.7.0/test/Makefile.am000066400000000000000000000014211321242335200165400ustar00rootroot00000000000000## Makefile.am for Oniguruma lib_onig = ../src/libonig.la AM_LDFLAGS = -L$(prefix)/lib AM_CFLAGS = AM_CPPFLAGS = -I$(top_srcdir)/src -I$(includedir) TESTS = test_utf8 testc testp testcu check_PROGRAMS = test_utf8 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]" @./testp | grep RESULT @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) testp_SOURCES = testc.c testp_LDADD = $(lib_onig) testp_CFLAGS = -DPOSIX_TEST testcu_SOURCES = testu.c testcu_LDADD = $(lib_onig) oniguruma-6.7.0/test/test_utf8.c000066400000000000000000001117351321242335200166070ustar00rootroot00000000000000/* * This program was generated by testconv.rb. */ #include "config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #include #include "oniguruma.h" #ifdef HAVE_STRING_H # include #else # include #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)", "a", 0, 1); x2("(?ab)\\g", "abab", 0, 4); x2("(?.zv.)\\k", "azvbazvb", 0, 8); x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); x2("(?|a\\g)+", "", 0, 0); x2("(?|\\(\\g\\))+$", "()(())", 0, 6); x3("\\g(?.){0}", "X", 0, 1, 1); x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); x2("(?:(?)|(?efg))\\k", "", 0, 0); x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); n("(?:(?abc)|(?efg))\\k", "abcefg"); x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); x2("(?a|\\(\\g\\))", "a", 0, 1); x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); x2("\\g|\\zEND(?.*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|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((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("(?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("<[^>]*>(?~[<>])]*>", "vvv ", 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("繧繧√b\\Z", "繧繧√b", 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("縺ゅ>|(?:縺ゅ≧|縺ゅr)", "縺ゅr", 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("(?=繧偵≠)..縺|(?=繧偵r)..縺", "繧偵r縺", 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("(繧+)", "繧九k繧九k繧九k繧", 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("((?=縺ゅs)縺)", "縺ゅs縺", 0, 3, 1); x3("縺ゅ>縺|(.縺ゅ>縺)", "繧薙≠縺縺", 0, 12, 1); x3("縺*(.)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); x3("縺*?(.)", "縺ゅ≠縺ゅ≠繧", 0, 3, 1); x3("縺*?(繧)", "縺ゅ≠縺ゅ≠繧", 12, 15, 1); x3("[縺縺縺]縺*(.)", "縺医≠縺ゅ≠縺ゅs", 15, 18, 1); x3("(\\A縺縺)縺縺", "縺縺縺縺", 0, 6, 1); n("(\\A縺縺)縺縺", "繧薙>縺縺縺"); x3("(^縺縺)縺縺", "縺縺縺縺", 0, 6, 1); n("(^縺縺)縺縺", "繧薙>縺縺縺"); x3("繧阪m(繧九k$)", "繧阪m繧九k", 6, 12, 1); n("繧阪m(繧九k$)", "繧阪m繧九k繧"); 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", "縺B縺りェーシ溯ェーシ", 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:縺W縺))\\1", "縺W縺壹≠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>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); x2(".繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝<\\/b>", "a繝舌シ繧ク繝ァ繝ウ縺ョ繝繧ヲ繝ウ繝ュ繝シ繝", 0, 44); x2("\\n?\\z", "縺薙s縺ォ縺。縺ッ", 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})", "シ", 0, 3); n("(?D:\\p{Digit})", "シ"); 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"); // a + COMBINING GRAVE ACCENT (U+0300) x2("h\\Xllo", "ha\xCC\x80llo", 0, 7); x2("\\x40", "@", 0, 1); x2("\\x1", "\x01", 0, 1); x2("\\x{1}", "\x01", 0, 1); x2("\\x{4E38}", "\xE4\xB8\xB8", 0, 3); x2("\\u4E38", "\xE4\xB8\xB8", 0, 3); x2("\\u0040", "@", 0, 1); x2("c.*\\b", "abc", 2, 3); x2("\\b.*abc.*\\b", "abc", 0, 3); e("\\u040", "@", ONIGERR_INVALID_CODE_POINT_VALUE); e("(?\\g)", "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); } oniguruma-6.7.0/test/testc.c000066400000000000000000000773101321242335200160040ustar00rootroot00000000000000/* * This program was generated by testconv.rb. */ #include "config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #include #ifdef POSIX_TEST #include "onigposix.h" #else #include "oniguruma.h" #endif #ifdef HAVE_STRING_H # include #else # include #endif #define SLEN(s) strlen(s) static int nsucc = 0; static int nfail = 0; static int nerror = 0; static FILE* err_file; #ifndef POSIX_TEST static OnigRegion* region; #endif static void xx(char* pattern, char* str, int from, int to, int mem, int not) { int r; #ifdef POSIX_TEST regex_t reg; char buf[200]; regmatch_t pmatch[25]; r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); if (r != 0 && r != REG_NOMATCH) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } if (r == REG_NOMATCH) { 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 (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == 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, pmatch[mem].rm_so, pmatch[mem].rm_eo); nfail++; } } } regfree(®); #else regex_t* reg; OnigErrorInfo einfo; r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), ONIG_OPTION_DEFAULT, ONIG_ENCODING_EUC_JP, ONIG_SYNTAX_DEFAULT, &einfo); if (r) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(err_file, "ERROR: %s\n", s); nerror++; 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]; onig_error_code_to_str((UChar* )s, r); fprintf(err_file, "ERROR: %s\n", s); nerror++; 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); #endif } static void x2(char* pattern, char* str, int from, int to) { xx(pattern, str, from, to, 0, 0); } static void x3(char* pattern, char* str, int from, int to, int mem) { xx(pattern, str, from, to, mem, 0); } static void n(char* pattern, char* str) { xx(pattern, str, 0, 0, 0, 1); } extern int main(int argc, char* argv[]) { #ifndef POSIX_TEST static OnigEncoding use_encs[] = { ONIG_ENCODING_EUC_JP }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); #endif err_file = stdout; #ifdef POSIX_TEST reg_set_encoding(REG_POSIX_ENCODING_EUC_JP); #else region = onig_region_new(); #endif 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); x2("(a)\\g<1>", "aa", 0, 2); x2("(?a)", "a", 0, 1); x2("(?ab)\\g", "abab", 0, 4); x2("(?.zv.)\\k", "azvbazvb", 0, 8); x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); x2("(?|a\\g)+", "", 0, 0); x2("(?|\\(\\g\\))+$", "()(())", 0, 6); x3("\\g(?.){0}", "X", 0, 1, 1); x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); x2("(?:(?)|(?efg))\\k", "", 0, 0); x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); n("(?:(?abc)|(?efg))\\k", "abcefg"); x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); x2("(?a|\\(\\g\\))", "a", 0, 1); x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); x2("\\g|\\zEND(?.*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|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((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("\\xED\\xF2", "\xed\xf2", 0, 2); 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("(?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"); n("\\R", "\xc2\x85"); // because euc-jp is not Unicode 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("<[^>]*>(?~[<>])]*>", "vvv ", 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 stopper 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("(?~|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 > for testcases print warnings #63 warning: illegal character encoding in string literal [-Winvalid-source-encoding] */ #ifndef IGNORE_EUC_JP x2("", "、「", 0, 0); x2("、「", "、「", 0, 2); n("、、", "、「"); x2("、ヲ、ヲ", "、ヲ、ヲ", 0, 4); x2("、「、、、ヲ", "、「、、、ヲ", 0, 6); x2("、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ", "、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ、ウ", 0, 70); x2("、「", "、、、「", 2, 4); x2("、、、ヲ", "、「、、、ヲ", 2, 6); x2("\\xca\\xb8", "\xca\xb8", 0, 2); x2(".", "、「", 0, 2); x2("..", "、ォ、ュ", 0, 4); x2("\\w", "、ェ", 0, 2); n("\\W", "、「"); x2("[\\W]", "、ヲ$", 2, 3); x2("\\S", "、ス", 0, 2); x2("\\S", "エチ", 0, 2); x2("\\b", "オ、 ", 0, 0); x2("\\b", " 、ロ", 1, 1); x2("\\B", "、サ、ス ", 2, 2); x2("\\B", "、ヲ ", 3, 3); x2("\\B", " 、、", 0, 0); x2("[、ソ、チ]", "、チ", 0, 2); n("[、ハ、ヒ]", "、フ"); x2("[、ヲ-、ェ]", "、ィ", 0, 2); n("[^、ア]", "、ア"); x2("[\\w]", "、ヘ", 0, 2); n("[\\d]", "、ユ"); x2("[\\D]", "、マ", 0, 2); n("[\\s]", "、ッ"); x2("[\\S]", "、リ", 0, 2); x2("[\\w\\d]", "、", 0, 2); x2("[\\w\\d]", " 、", 3, 5); n("\\wオエシヨ", " オエシヨ"); x2("オエ\\Wシヨ", "オエ シヨ", 0, 5); x2("、「.、、.、ヲ", "、「、「、、、、、ヲ", 0, 10); x2(".\\w、ヲ\\W..、セ", "、ィ、ヲ、ヲ 、ヲ、セ、セ", 0, 13); x2("\\s\\w、ウ、ウ、ウ", " 、ウ、ウ、ウ、ウ", 0, 9); x2("、「、「.、ア", "、「、「、ア、ア", 0, 8); n(".、、", "、、、ィ"); x2(".、ェ", "、ェ、ェ", 0, 4); x2("^、「", "、「", 0, 2); x2("^、$", "、", 0, 2); x2("^\\w$", "、ヒ", 0, 2); x2("^\\w、ォ、ュ、ッ、ア、ウ$", "z、ォ、ュ、ッ、ア、ウ", 0, 11); x2("^\\w...、ヲ、ィ、ェ$", "z、「、、、ヲ、ヲ、ィ、ェ", 0, 13); x2("\\w\\w\\s\\W、ェ、ェ、ェ\\d", "a、ェ 、ェ、ェ、ェ4", 0, 12); x2("\\A、ソ、チ、ト", "、ソ、チ、ト", 0, 6); x2("、爨皃秉\Z", "、爨皃", 0, 6); x2("、ォ、ュ、ッ\\z", "、ォ、ュ、ッ", 0, 6); x2("、ォ、ュ、ッ\\Z", "、ォ、ュ、ッ\n", 0, 6); x2("\\G、ン、ヤ", "、ン、ヤ", 0, 4); n("\\G、ィ", "、ヲ、ィ、ェ"); n("、ネ、ニ\\G", "、ネ、ニ"); n("、゙、゚\\A", "、゙、゚"); n("、゙\\A、゚", "、゙、゚"); x2("(?=、サ)、サ", "、サ", 0, 2); n("(?=、ヲ).", "、、"); x2("(?!、ヲ)、ォ", "、ォ", 0, 2); n("(?!、ネ)、「", "、ネ"); x2("(?i:、「)", "、「", 0, 2); x2("(?i:、ヨ、ル)", "、ヨ、ル", 0, 4); n("(?i:、、)", "、ヲ"); x2("(?m:、.)", "、鐔n", 0, 3); x2("(?m:.、)", "、゙\n、", 2, 5); x2("、「?", "", 0, 0); x2("ハム?", "イス", 0, 0); x2("ハム?", "ハム", 0, 2); x2("ホフ*", "", 0, 0); x2("ホフ*", "ホフ", 0, 2); x2("サメ*", "サメサメサメ", 0, 6); x2("ヌマ*", "シッヌマヌマヌマヌマ", 0, 0); n("サウ+", ""); x2("イマ+", "イマ", 0, 2); x2("サ+", "ササササ", 0, 8); x2("、ィ+", "、ィ、ィ、ヲ、ヲ、ヲ", 0, 4); x2("、ヲ+", "、ェ、ヲ、ヲ、ヲ、ヲ", 2, 10); x2(".?", "、ソ", 0, 2); x2(".*", "、ム、ヤ、ラ、レ", 0, 8); x2(".+", "、", 0, 2); x2(".+", "、、、ヲ、ィ、ォ\n", 0, 8); x2("、「|、、", "、「", 0, 2); x2("、「|、、", "、、", 0, 2); x2("、「、、|、、、ヲ", "、「、、", 0, 4); x2("、「、、|、、、ヲ", "、、、ヲ", 0, 4); x2("、(?:、ォ、ュ|、ュ、ッ)", "、、ォ、ュ", 0, 6); x2("、(?:、ォ、ュ|、ュ、ッ)、ア", "、、ュ、ッ、ア", 0, 8); x2("、「、、|(?:、「、ヲ|、「、)", "、「、", 0, 4); x2("、「|、、|、ヲ", "、ィ、ヲ", 2, 4); x2("、「|、、|、ヲ、ィ|、ェ、ォ、ュ|、ッ|、ア、ウ、オ|、キ、ケ、サ|、ス|、ソ、チ|、ト、ニ、ネ、ハ、ヒ|、フ、ヘ", "、キ、ケ、サ", 0, 6); n("、「|、、|、ヲ、ィ|、ェ、ォ、ュ|、ッ|、ア、ウ、オ|、キ、ケ、サ|、ス|、ソ、チ|、ト、ニ、ネ、ハ、ヒ|、フ、ヘ", "、ケ、サ"); x2("、「|^、", "、ヨ、「", 2, 4); x2("、「|^、", "、、「", 0, 2); x2("オエ|\\Gシヨ", "、アシヨオエ", 4, 6); x2("オエ|\\Gシヨ", "シヨオエ", 0, 2); x2("オエ|\\Aシヨ", "bシヨオエ", 3, 5); x2("オエ|\\Aシヨ", "シヨ", 0, 2); x2("オエ|シヨ\\Z", "シヨオエ", 2, 4); x2("オエ|シヨ\\Z", "シヨ", 0, 2); x2("オエ|シヨ\\Z", "シヨ\n", 0, 2); x2("オエ|シヨ\\z", "シヨオエ", 2, 4); x2("オエ|シヨ\\z", "シヨ", 0, 2); x2("\\w|\\s", "、ェ", 0, 2); x2("\\w|%", "%、ェ", 0, 1); x2("\\w|[&$]", "、ヲ&", 0, 2); x2("[、、-、ア]", "、ヲ", 0, 2); x2("[、、-、ア]|[^、ォ-、ウ]", "、「", 0, 2); x2("[、、-、ア]|[^、ォ-、ウ]", "、ォ", 0, 2); x2("[^、「]", "\n", 0, 1); x2("(?:、「|[、ヲ-、ュ])|、、、", "、ヲ、", 0, 2); x2("(?:、「|[、ヲ-、ュ])|、、、", "、、、", 0, 4); x2("、「、、、ヲ|(?=、ア、ア)..、ロ", "、ア、ア、ロ", 0, 6); x2("、「、、、ヲ|(?!、ア、ア)..、ロ", "、「、、、ロ", 0, 6); x2("(?=、、「)..、「|(?=、、)..、「", "、、、「", 0, 6); x2("(?<=、「|、、、ヲ)、、", "、、、ヲ、、", 4, 6); n("(?>、「|、「、、、ィ)、ヲ", "、「、、、ィ、ヲ"); x2("(?>、「、、、ィ|、「)、ヲ", "、「、、、ィ、ヲ", 0, 8); x2("、「?|、、", "、「", 0, 2); x2("、「?|、、", "、、", 0, 0); x2("、「?|、、", "", 0, 0); x2("、「*|、、", "、「、「", 0, 4); x2("、「*|、、*", "、、、「", 0, 0); x2("、「*|、、*", "、「、、", 0, 2); x2("[a、「]*|、、*", "a、「、、、、、、", 0, 3); x2("、「+|、、*", "", 0, 0); x2("、「+|、、*", "、、、、、、", 0, 6); x2("、「+|、、*", "、「、、、、、、", 0, 2); x2("、「+|、、*", "a、「、、、、、、", 0, 0); n("、「+|、、+", ""); x2("(、「|、、)?", "、、", 0, 2); x2("(、「|、、)*", "、、、「", 0, 4); x2("(、「|、、)+", "、、、「、、", 0, 6); x2("(、「、、|、ヲ、「)+", "、ヲ、「、「、、、ヲ、ィ", 0, 8); x2("(、「、、|、ヲ、ィ)+", "、ヲ、「、「、、、ヲ、ィ", 4, 12); x2("(、「、、|、ヲ、「)+", "、「、「、、、ヲ、「", 2, 10); x2("(、「、、|、ヲ、「)+", "、「、、、、ヲ、「", 0, 4); x2("(、「、、|、ヲ、「)+", "$$zzzz、「、、、、ヲ、「", 6, 10); x2("(、「|、、、「、、)+", "、「、、、「、、、「", 0, 10); x2("(、「|、、、「、、)+", "、、、「", 2, 4); x2("(、「|、、、「、、)+", "、、、「、「、「、、、「", 2, 8); x2("(?:、「|、、)(?:、「|、、)", "、「、、", 0, 4); x2("(?:、「*|、、*)(?:、「*|、、*)", "、「、「、「、、、、、、", 0, 6); x2("(?:、「*|、、*)(?:、「+|、、+)", "、「、「、「、、、、、、", 0, 12); x2("(?:、「+|、、+){2}", "、「、「、「、、、、、、", 0, 12); x2("(?:、「+|、、+){1,2}", "、「、「、「、、、、、、", 0, 12); x2("(?:、「+|\\A、、*)、ヲ、ヲ", "、ヲ、ヲ", 0, 4); n("(?:、「+|\\A、、*)、ヲ、ヲ", "、「、、、ヲ、ヲ"); x2("(?:^、「+|、、+)*、ヲ", "、「、「、、、、、、、「、、、ヲ", 12, 16); x2("(?:^、「+|、、+)*、ヲ", "、「、「、、、、、、、、、ヲ", 0, 14); x2("、ヲ{0,}", "、ヲ、ヲ、ヲ、ヲ", 0, 8); x2("、「|(?i)c", "C", 0, 1); x2("(?i)c|、「", "C", 0, 1); x2("(?i:、「)|a", "a", 0, 1); n("(?i:、「)|a", "A"); x2("[、「、、、ヲ]?", "、「、、、ヲ", 0, 2); x2("[、「、、、ヲ]*", "、「、、、ヲ", 0, 6); x2("[^、「、、、ヲ]*", "、「、、、ヲ", 0, 0); n("[^、「、、、ヲ]+", "、「、、、ヲ"); x2("、「?\?", "、「、「、「", 0, 0); x2("、、、「?\?、、", "、、、「、、", 0, 6); x2("、「*?", "、「、「、「", 0, 0); x2("、、、「*?", "、、、「、「", 0, 2); x2("、、、「*?、、", "、、、「、「、、", 0, 8); x2("、「+?", "、「、「、「", 0, 2); x2("、、、「+?", "、、、「、「", 0, 4); x2("、、、「+?、、", "、、、「、「、、", 0, 8); x2("(?:ナキ?)?\?", "ナキ", 0, 0); x2("(?:ナキ?\?)?", "ナキ", 0, 0); x2("(?:フエ?)+?", "フエフエフエ", 0, 2); x2("(?:ノ+)?\?", "ノノノ", 0, 0); x2("(?:タ+)?\?チ", "タ翅翅翆", 0, 8); x2("(?:、「、、)?{2}", "", 0, 0); x2("(?:オエシヨ)?{2}", "オエシヨオエシヨオエ", 0, 8); x2("(?:オエシヨ)*{0}", "オエシヨオエシヨオエ", 0, 0); x2("(?:オエシヨ){3,}", "オエシヨオエシヨオエシヨオエシヨ", 0, 16); n("(?:オエシヨ){3,}", "オエシヨオエシヨ"); x2("(?:オエシヨ){2,4}", "オエシヨオエシヨオエシヨ", 0, 12); x2("(?:オエシヨ){2,4}", "オエシヨオエシヨオエシヨオエシヨオエシヨ", 0, 16); x2("(?:オエシヨ){2,4}?", "オエシヨオエシヨオエシヨオエシヨオエシヨ", 0, 8); x2("(?:オエシヨ){,}", "オエシヨ{,}", 0, 7); x2("(?:、ォ、ュ、ッ)+?{2}", "、ォ、ュ、ッ、ォ、ュ、ッ、ォ、ュ、ッ", 0, 12); x3("(イミ)", "イミ", 0, 2, 1); x3("(イミソ)", "イミソ", 0, 4, 1); x2("((サエヨ))", "サエヨ", 0, 4); x3("((ノソ))", "ノソ", 0, 4, 1); x3("((コニ))", "コニ", 0, 4, 2); x3("((((((((((((((((((((ホフサメ))))))))))))))))))))", "ホフサメ", 0, 4, 20); x3("(、「、、)(、ヲ、ィ)", "、「、、、ヲ、ィ", 0, 4, 1); x3("(、「、、)(、ヲ、ィ)", "、「、、、ヲ、ィ", 4, 8, 2); x3("()(、「)、、、ヲ(、ィ、ェ、ォ)、ュ、ッ、ア、ウ", "、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ", 6, 12, 3); x3("(()(、「)、、、ヲ(、ィ、ェ、ォ)、ュ、ッ、ア、ウ)", "、「、、、ヲ、ィ、ェ、ォ、ュ、ッ、ア、ウ", 6, 12, 4); x3(".*(・ユ・ゥ)・。ヲ・゙(・()・キ・螂ソ)・、・", "・ユ・ゥ・。ヲ・゙・・キ・螂ソ・、・", 10, 18, 2); x2("(^、「)", "、「", 0, 2); x3("(、「)|(、「)", "、、、「", 2, 4, 1); x3("(^、「)|(、「)", "、、、「", 2, 4, 2); x3("(、「?)", "、「、「、「", 0, 2, 1); x3("(、゙*)", "、゙、゙、゙", 0, 6, 1); x3("(、ネ*)", "", 0, 0, 1); x3("(、+)", "、、、、、、、", 0, 14, 1); x3("(、ユ+|、リ*)", "、ユ、ユ、ユ、リ、リ", 0, 6, 1); x3("(、「+|、、?)", "、、、、、、、「、「", 0, 2, 1); x3("(、「、、、ヲ)?", "、「、、、ヲ", 0, 6, 1); x3("(、「、、、ヲ)*", "、「、、、ヲ", 0, 6, 1); x3("(、「、、、ヲ)+", "、「、、、ヲ", 0, 6, 1); x3("(、オ、キ、ケ|、「、、、ヲ)+", "、「、、、ヲ", 0, 6, 1); x3("([、ハ、ヒ、フ][、ォ、ュ、ッ]|、ォ、ュ、ッ)+", "、ォ、ュ、ッ", 0, 6, 1); x3("((?i:、「、、、ヲ))", "、「、、、ヲ", 0, 6, 1); x3("((?m:、「.、ヲ))", "、「\n、ヲ", 0, 5, 1); x3("((?=、「、)、「)", "、「、、、", 0, 2, 1); x3("、「、、、ヲ|(.、「、、、ィ)", "、、「、、、ィ", 0, 8, 1); x3("、「*(.)", "、「、「、「、「、", 8, 10, 1); x3("、「*?(.)", "、「、「、「、「、", 0, 2, 1); x3("、「*?(、)", "、「、「、「、「、", 8, 10, 1); x3("[、、、ヲ、ィ]、「*(.)", "、ィ、「、「、「、「、", 10, 12, 1); x3("(\\A、、、、)、ヲ、ヲ", "、、、、、ヲ、ヲ", 0, 4, 1); n("(\\A、、、、)、ヲ、ヲ", "、、、、、、ヲ、ヲ"); x3("(^、、、、)、ヲ、ヲ", "、、、、、ヲ、ヲ", 0, 4, 1); n("(^、、、、)、ヲ、ヲ", "、、、、、、ヲ、ヲ"); x3("、、(、、$)", "、、、、", 4, 8, 1); n("、、(、、$)", "、、、、、"); x2("(フオ)\\1", "フオフオ", 0, 4); n("(フオ)\\1", "フオノ"); x2("(カ?)\\1", "カカ", 0, 4); x2("(カ?\?)\\1", "カカ", 0, 0); x2("(カ*)\\1", "カカカカカ", 0, 8); x3("(カ*)\\1", "カカカカカ", 0, 4, 1); x2("、「(、、*)\\1", "、「、、、、、、、、", 0, 10); x2("、「(、、*)\\1", "、「、、", 0, 2); x2("(、「*)(、、*)\\1\\2", "、「、「、「、、、、、「、「、「、、、、", 0, 20); x2("(、「*)(、、*)\\2", "、「、「、「、、、、、、、、", 0, 14); x3("(、「*)(、、*)\\2", "、「、「、「、、、、、、、、", 6, 10, 2); x2("(((((((、ン*)、レ))))))、ヤ\\7", "、ン、ン、ン、レ、ヤ、ン、ン、ン", 0, 16); x3("(((((((、ン*)、レ))))))、ヤ\\7", "、ン、ン、ン、レ、ヤ、ン、ン、ン", 0, 6, 7); x2("(、マ)(、メ)(、ユ)\\2\\1\\3", "、マ、メ、ユ、メ、マ、ユ", 0, 12); x2("([、ュ-、ア])\\1", "、ッ、ッ", 0, 4); x2("(\\w\\d\\s)\\1", "、「5 、「5 ", 0, 8); n("(\\w\\d\\s)\\1", "、「5 、「5"); x2("(テッ。ゥ|[、「-、ヲ]{3})\\1", "テッ。ゥテッ。ゥ", 0, 8); x2("...(テッ。ゥ|[、「-、ヲ]{3})\\1", "、「a、「テッ。ゥテッ。ゥ", 0, 13); x2("(テッ。ゥ|[、「-、ヲ]{3})\\1", "、ヲ、、、ヲ、ヲ、、、ヲ", 0, 12); x2("(^、ウ)\\1", "、ウ、ウ", 0, 4); n("(^、)\\1", "、皃爨"); n("(、「$)\\1", "、「、「"); n("(、「、、\\Z)\\1", "、「、、"); x2("(、「*\\Z)\\1", "、「", 2, 2); x2(".(、「*\\Z)\\1", "、、、「", 2, 4); x3("(.(、荀、、)\\2)", "z、荀、、讀荀、、", 0, 13, 1); x3("(.(..\\d.)\\2)", "、「12341234", 0, 10, 1); x2("((?i:、「v、コ))\\1", "、「v、コ、「v、コ", 0, 10); x2("(?<カ、ォ>ハム|\\(\\g<カ、ォ>\\))", "((((((ハム))))))", 0, 14); x2("\\A(?:\\g<ー、_1>|\\g<アセ_2>|\\zスェホサ (?<ー、_1>エム|シォ\\g<アセ_2>シォ)(?<アセ_2>コ゚|ハサァ\\g<ー、_1>ハサァ))$", "ハサァシォハサァシォコ゚シォハサァシォハサァ", 0, 26); x2("[[、メ、ユ]]", "、ユ", 0, 2); x2("[[、、、ェ、ヲ]、ォ]", "、ォ", 0, 2); n("[[^、「]]", "、「"); n("[^[、「]]", "、「"); x2("[^[^、「]]", "、「", 0, 2); x2("[[、ォ、ュ、ッ]&&、ュ、ッ]", "、ッ", 0, 2); n("[[、ォ、ュ、ッ]&&、ュ、ッ]", "、ォ"); n("[[、ォ、ュ、ッ]&&、ュ、ッ]", "、ア"); x2("[、「-、&&、、-、&&、ヲ-、]", "、", 0, 2); n("[^、「-、&&、、-、&&、ヲ-、]", "、"); x2("[[^、「&&、「]&&、「-、]", "、、", 0, 2); n("[[^、「&&、「]&&、「-、]", "、「"); x2("[[^、「-、&&、、、ヲ、ィ、ェ]&&[^、ヲ-、ォ]]", "、ュ", 0, 2); n("[[^、「-、&&、、、ヲ、ィ、ェ]&&[^、ヲ-、ォ]]", "、、"); x2("[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]", "、ヲ", 0, 2); x2("[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]", "、ィ", 0, 2); n("[^[^、「、、、ヲ]&&[^、ヲ、ィ、ェ]]", "、ォ"); x2("[、「-&&-、「]", "-", 0, 1); x2("[^[^a-z、「、、、ヲ]&&[^bcdefg、ヲ、ィ、ェ]q-w]", "、ィ", 0, 2); 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>", "a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ", 0, 32); x2(".・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ<\\/b>", "a・ミ。シ・ク・逾、ホ・タ・ヲ・・。シ・ノ", 0, 32); x2("\\n?\\z", "、ウ、、ヒ、チ、マ", 10, 10); #ifndef POSIX_TEST x2("\\p{Hiragana}", "、ヤ", 0, 2); n("\\P{Hiragana}", "、ヤ"); #endif #endif /* IGNORE_EUC_JP */ fprintf(stdout, "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", nsucc, nfail, nerror, onig_version()); #ifndef POSIX_TEST onig_region_free(region, 1); onig_end(); #endif return ((nfail == 0 && nerror == 0) ? 0 : -1); } oniguruma-6.7.0/test/testu.c000066400000000000000000002207221321242335200160230ustar00rootroot00000000000000/* * This program was generated by testconv.rb. */ #include #ifdef POSIX_TEST #include "onigposix.h" #else #include "oniguruma.h" #endif static int nsucc = 0; static int nfail = 0; static int nerror = 0; static FILE* err_file; #ifndef POSIX_TEST static OnigRegion* region; static OnigEncoding ENC; #endif #define ulen(p) onigenc_str_bytelen_null(ENC, (UChar* )p) static void uconv(char* from, char* to, int len) { int i; unsigned char c; char *q; q = to; for (i = 0; i < len; i += 2) { c = (unsigned char )from[i]; if (c == 0) { c = (unsigned char )from[i+1]; if (c < 0x20 || c >= 0x7f || c == 0x5c || c == 0x22) { sprintf(q, "\\%03o", c); q += 4; } else { sprintf(q, "%c", c); q++; } } else { sprintf(q, "\\%03o", c); q += 4; c = (unsigned char )from[i+1]; sprintf(q, "\\%03o", c); q += 4; } } *q = 0; } static void xx(char* pattern, char* str, int from, int to, int mem, int not) { int r; char cpat[4000], cstr[4000]; #ifdef POSIX_TEST regex_t reg; char buf[200]; regmatch_t pmatch[20]; uconv(pattern, cpat, ulen(pattern)); uconv(str, cstr, ulen(str)); r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); if (r != 0 && r != REG_NOMATCH) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } if (r == REG_NOMATCH) { if (not) { fprintf(stdout, "OK(N): /%s/ '%s'\n", cpat, cstr); nsucc++; } else { fprintf(stdout, "FAIL: /%s/ '%s'\n", cpat, cstr); nfail++; } } else { if (not) { fprintf(stdout, "FAIL(N): /%s/ '%s'\n", cpat, cstr); nfail++; } else { if (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == to) { fprintf(stdout, "OK: /%s/ '%s'\n", cpat, cstr); nsucc++; } else { fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", cpat, cstr, from, to, pmatch[mem].rm_so, pmatch[mem].rm_eo); nfail++; } } } regfree(®); #else regex_t* reg; OnigCompileInfo ci; OnigErrorInfo einfo; uconv(pattern, cpat, ulen(pattern)); uconv(str, cstr, ulen(str)); #if 0 r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + ulen(pattern)), ONIG_OPTION_DEFAULT, ENC, ONIG_SYNTAX_DEFAULT, &einfo); #else ci.num_of_elements = 5; ci.pattern_enc = ENC; ci.target_enc = ENC; ci.syntax = ONIG_SYNTAX_DEFAULT; ci.option = ONIG_OPTION_DEFAULT; ci.case_fold_flag = ONIGENC_CASE_FOLD_DEFAULT; r = onig_new_deluxe(®, (UChar* )pattern, (UChar* )(pattern + ulen(pattern)), &ci, &einfo); #endif if (r) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r, &einfo); fprintf(err_file, "ERROR: %s\n", s); nerror++; return ; } r = onig_search(reg, (UChar* )str, (UChar* )(str + ulen(str)), (UChar* )str, (UChar* )(str + ulen(str)), region, ONIG_OPTION_NONE); if (r < ONIG_MISMATCH) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str(s, r); fprintf(err_file, "ERROR: %s\n", s); nerror++; return ; } if (r == ONIG_MISMATCH) { if (not) { fprintf(stdout, "OK(N): /%s/ '%s'\n", cpat, cstr); nsucc++; } else { fprintf(stdout, "FAIL: /%s/ '%s'\n", cpat, cstr); nfail++; } } else { if (not) { fprintf(stdout, "FAIL(N): /%s/ '%s'\n", cpat, cstr); nfail++; } else { if (region->beg[mem] == from && region->end[mem] == to) { fprintf(stdout, "OK: /%s/ '%s'\n", cpat, cstr); nsucc++; } else { fprintf(stdout, "FAIL: /%s/ '%s' %d-%d : %d-%d\n", cpat, cstr, from, to, region->beg[mem], region->end[mem]); nfail++; } } } onig_free(reg); #endif } static void x2(char* pattern, char* str, int from, int to) { xx(pattern, str, from, to, 0, 0); } static void x3(char* pattern, char* str, int from, int to, int mem) { xx(pattern, str, from, to, mem, 0); } static void n(char* pattern, char* str) { xx(pattern, str, 0, 0, 0, 1); } extern int main(int argc, char* argv[]) { static OnigEncoding use_encs[] = { ONIG_ENCODING_UTF16_BE }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); err_file = stdout; #ifndef POSIX_TEST region = onig_region_new(); #endif #ifdef POSIX_TEST reg_set_encoding(REG_POSIX_ENCODING_UTF16_BE); #else ENC = ONIG_ENCODING_UTF16_BE; #endif x2("\000\000", "\000\000", 0, 0); x2("\000^\000\000", "\000\000", 0, 0); x2("\000$\000\000", "\000\000", 0, 0); x2("\000\134\000G\000\000", "\000\000", 0, 0); x2("\000\134\000A\000\000", "\000\000", 0, 0); x2("\000\134\000Z\000\000", "\000\000", 0, 0); x2("\000\134\000z\000\000", "\000\000", 0, 0); x2("\000^\000$\000\000", "\000\000", 0, 0); x2("\000\134\000c\000a\000\000", "\000\001\000\000", 0, 2); x2("\000\134\000C\000-\000b\000\000", "\000\002\000\000", 0, 2); x2("\000\134\000c\000\134\000\134\000\000", "\000\034\000\000", 0, 2); x2("\000q\000[\000\134\000c\000\134\000\134\000]\000\000", "\000q\000\034\000\000", 0, 4); x2("\000\000", "\000a\000\000", 0, 0); x2("\000a\000\000", "\000a\000\000", 0, 2); x2("\000\134\000x\0000\0000\000\134\000x\0006\0001\000\000", "\000a\000\000", 0, 2); x2("\000a\000a\000\000", "\000a\000a\000\000", 0, 4); x2("\000a\000a\000a\000\000", "\000a\000a\000a\000\000", 0, 6); x2("\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000\000", "\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000\000", 0, 70); x2("\000a\000b\000\000", "\000a\000b\000\000", 0, 4); x2("\000b\000\000", "\000a\000b\000\000", 2, 4); x2("\000b\000c\000\000", "\000a\000b\000c\000\000", 2, 6); x2("\000(\000?\000i\000:\000#\000R\000E\000T\000#\000)\000\000", "\000#\000I\000N\000S\000#\000#\000R\000E\000T\000#\000\000", 10, 20); x2("\000\134\0000\0000\0000\000\134\0001\0007\000\000", "\000\017\000\000", 0, 2); x2("\000\134\000x\0000\0000\000\134\000x\0001\000f\000\000", "\000\037\000\000", 0, 2); x2("\000a\000(\000?\000#\000.\000.\000.\000.\000\134\000\134\000J\000J\000J\000J\000)\000b\000\000", "\000a\000b\000\000", 0, 4); x2("\000(\000?\000x\000)\000 \000 \000G\000 \000(\000o\000 \000O\000(\000?\000-\000x\000)\000o\000O\000)\000 \000g\000 \000L\000\000", "\000G\000o\000O\000o\000O\000g\000L\000e\000\000", 0, 14); x2("\000.\000\000", "\000a\000\000", 0, 2); n("\000.\000\000", "\000\000"); x2("\000.\000.\000\000", "\000a\000b\000\000", 0, 4); x2("\000\134\000w\000\000", "\000e\000\000", 0, 2); n("\000\134\000W\000\000", "\000e\000\000"); x2("\000\134\000s\000\000", "\000 \000\000", 0, 2); x2("\000\134\000S\000\000", "\000b\000\000", 0, 2); x2("\000\134\000d\000\000", "\0004\000\000", 0, 2); n("\000\134\000D\000\000", "\0004\000\000"); x2("\000\134\000b\000\000", "\000z\000 \000\000", 0, 0); x2("\000\134\000b\000\000", "\000 \000z\000\000", 2, 2); x2("\000\134\000B\000\000", "\000z\000z\000 \000\000", 2, 2); x2("\000\134\000B\000\000", "\000z\000 \000\000", 4, 4); x2("\000\134\000B\000\000", "\000 \000z\000\000", 0, 0); x2("\000[\000a\000b\000]\000\000", "\000b\000\000", 0, 2); n("\000[\000a\000b\000]\000\000", "\000c\000\000"); x2("\000[\000a\000-\000z\000]\000\000", "\000t\000\000", 0, 2); n("\000[\000^\000a\000]\000\000", "\000a\000\000"); x2("\000[\000^\000a\000]\000\000", "\000\012\000\000", 0, 2); x2("\000[\000]\000]\000\000", "\000]\000\000", 0, 2); n("\000[\000^\000]\000]\000\000", "\000]\000\000"); x2("\000[\000\134\000^\000]\000+\000\000", "\0000\000^\000^\0001\000\000", 2, 6); x2("\000[\000b\000-\000]\000\000", "\000b\000\000", 0, 2); x2("\000[\000b\000-\000]\000\000", "\000-\000\000", 0, 2); x2("\000[\000\134\000w\000]\000\000", "\000z\000\000", 0, 2); n("\000[\000\134\000w\000]\000\000", "\000 \000\000"); x2("\000[\000\134\000W\000]\000\000", "\000b\000$\000\000", 2, 4); x2("\000[\000\134\000d\000]\000\000", "\0005\000\000", 0, 2); n("\000[\000\134\000d\000]\000\000", "\000e\000\000"); x2("\000[\000\134\000D\000]\000\000", "\000t\000\000", 0, 2); n("\000[\000\134\000D\000]\000\000", "\0003\000\000"); x2("\000[\000\134\000s\000]\000\000", "\000 \000\000", 0, 2); n("\000[\000\134\000s\000]\000\000", "\000a\000\000"); x2("\000[\000\134\000S\000]\000\000", "\000b\000\000", 0, 2); n("\000[\000\134\000S\000]\000\000", "\000 \000\000"); x2("\000[\000\134\000w\000\134\000d\000]\000\000", "\0002\000\000", 0, 2); n("\000[\000\134\000w\000\134\000d\000]\000\000", "\000 \000\000"); x2("\000[\000[\000:\000u\000p\000p\000e\000r\000:\000]\000]\000\000", "\000B\000\000", 0, 2); x2("\000[\000*\000[\000:\000x\000d\000i\000g\000i\000t\000:\000]\000+\000]\000\000", "\000+\000\000", 0, 2); x2("\000[\000*\000[\000:\000x\000d\000i\000g\000i\000t\000:\000]\000+\000]\000\000", "\000G\000H\000I\000K\000K\000-\0009\000+\000*\000\000", 12, 14); x2("\000[\000*\000[\000:\000x\000d\000i\000g\000i\000t\000:\000]\000+\000]\000\000", "\000-\000@\000^\000+\000\000", 6, 8); n("\000[\000[\000:\000u\000p\000p\000e\000r\000]\000]\000\000", "\000A\000\000"); x2("\000[\000[\000:\000u\000p\000p\000e\000r\000]\000]\000\000", "\000:\000\000", 0, 2); x2("\000[\000\134\0000\0000\0000\000\134\0000\0004\0004\000-\000\134\0000\0000\0000\000\134\0000\0004\0007\000]\000\000", "\000&\000\000", 0, 2); x2("\000[\000\134\000x\0000\0000\000\134\000x\0005\000a\000-\000\134\000x\0000\0000\000\134\000x\0005\000c\000]\000\000", "\000[\000\000", 0, 2); x2("\000[\000\134\000x\0000\0000\000\134\000x\0006\000A\000-\000\134\000x\0000\0000\000\134\000x\0006\000D\000]\000\000", "\000l\000\000", 0, 2); n("\000[\000\134\000x\0000\0000\000\134\000x\0006\000A\000-\000\134\000x\0000\0000\000\134\000x\0006\000D\000]\000\000", "\000n\000\000"); n("\000^\000[\0000\000-\0009\000A\000-\000F\000]\000+\000 \0000\000+\000 \000U\000N\000D\000E\000F\000 \000\000", "\0007\0005\000F\000 \0000\0000\0000\0000\0000\0000\0000\0000\000 \000S\000E\000C\000T\0001\0004\000A\000 \000n\000o\000t\000y\000p\000e\000 \000(\000)\000 \000 \000 \000 \000E\000x\000t\000e\000r\000n\000a\000l\000 \000 \000 \000 \000|\000 \000_\000r\000b\000_\000a\000p\000p\000l\000y\000\000"); x2("\000[\000\134\000[\000]\000\000", "\000[\000\000", 0, 2); x2("\000[\000\134\000]\000]\000\000", "\000]\000\000", 0, 2); x2("\000[\000&\000]\000\000", "\000&\000\000", 0, 2); x2("\000[\000[\000a\000b\000]\000]\000\000", "\000b\000\000", 0, 2); x2("\000[\000[\000a\000b\000]\000c\000]\000\000", "\000c\000\000", 0, 2); n("\000[\000[\000^\000a\000]\000]\000\000", "\000a\000\000"); n("\000[\000^\000[\000a\000]\000]\000\000", "\000a\000\000"); x2("\000[\000[\000a\000b\000]\000&\000&\000b\000c\000]\000\000", "\000b\000\000", 0, 2); n("\000[\000[\000a\000b\000]\000&\000&\000b\000c\000]\000\000", "\000a\000\000"); n("\000[\000[\000a\000b\000]\000&\000&\000b\000c\000]\000\000", "\000c\000\000"); x2("\000[\000a\000-\000z\000&\000&\000b\000-\000y\000&\000&\000c\000-\000x\000]\000\000", "\000w\000\000", 0, 2); n("\000[\000^\000a\000-\000z\000&\000&\000b\000-\000y\000&\000&\000c\000-\000x\000]\000\000", "\000w\000\000"); x2("\000[\000[\000^\000a\000&\000&\000a\000]\000&\000&\000a\000-\000z\000]\000\000", "\000b\000\000", 0, 2); n("\000[\000[\000^\000a\000&\000&\000a\000]\000&\000&\000a\000-\000z\000]\000\000", "\000a\000\000"); x2("\000[\000[\000^\000a\000-\000z\000&\000&\000b\000c\000d\000e\000f\000]\000&\000&\000[\000^\000c\000-\000g\000]\000]\000\000", "\000h\000\000", 0, 2); n("\000[\000[\000^\000a\000-\000z\000&\000&\000b\000c\000d\000e\000f\000]\000&\000&\000[\000^\000c\000-\000g\000]\000]\000\000", "\000c\000\000"); x2("\000[\000^\000[\000^\000a\000b\000c\000]\000&\000&\000[\000^\000c\000d\000e\000]\000]\000\000", "\000c\000\000", 0, 2); x2("\000[\000^\000[\000^\000a\000b\000c\000]\000&\000&\000[\000^\000c\000d\000e\000]\000]\000\000", "\000e\000\000", 0, 2); n("\000[\000^\000[\000^\000a\000b\000c\000]\000&\000&\000[\000^\000c\000d\000e\000]\000]\000\000", "\000f\000\000"); x2("\000[\000a\000-\000&\000&\000-\000a\000]\000\000", "\000-\000\000", 0, 2); n("\000[\000a\000\134\000-\000&\000&\000\134\000-\000a\000]\000\000", "\000&\000\000"); n("\000\134\000w\000a\000b\000c\000\000", "\000 \000a\000b\000c\000\000"); x2("\000a\000\134\000W\000b\000c\000\000", "\000a\000 \000b\000c\000\000", 0, 8); x2("\000a\000.\000b\000.\000c\000\000", "\000a\000a\000b\000b\000c\000\000", 0, 10); x2("\000.\000\134\000w\000b\000\134\000W\000.\000.\000c\000\000", "\000a\000b\000b\000 \000b\000c\000c\000\000", 0, 14); x2("\000\134\000s\000\134\000w\000z\000z\000z\000\000", "\000 \000z\000z\000z\000z\000\000", 0, 10); x2("\000a\000a\000.\000b\000\000", "\000a\000a\000b\000b\000\000", 0, 8); n("\000.\000a\000\000", "\000a\000b\000\000"); x2("\000.\000a\000\000", "\000a\000a\000\000", 0, 4); x2("\000^\000a\000\000", "\000a\000\000", 0, 2); x2("\000^\000a\000$\000\000", "\000a\000\000", 0, 2); x2("\000^\000\134\000w\000$\000\000", "\000a\000\000", 0, 2); n("\000^\000\134\000w\000$\000\000", "\000 \000\000"); x2("\000^\000\134\000w\000a\000b\000$\000\000", "\000z\000a\000b\000\000", 0, 6); x2("\000^\000\134\000w\000a\000b\000c\000d\000e\000f\000$\000\000", "\000z\000a\000b\000c\000d\000e\000f\000\000", 0, 14); x2("\000^\000\134\000w\000.\000.\000.\000d\000e\000f\000$\000\000", "\000z\000a\000b\000c\000d\000e\000f\000\000", 0, 14); x2("\000\134\000w\000\134\000w\000\134\000s\000\134\000W\000a\000a\000a\000\134\000d\000\000", "\000a\000a\000 \000 \000a\000a\000a\0004\000\000", 0, 16); x2("\000\134\000A\000\134\000Z\000\000", "\000\000", 0, 0); x2("\000\134\000A\000x\000y\000z\000\000", "\000x\000y\000z\000\000", 0, 6); x2("\000x\000y\000z\000\134\000Z\000\000", "\000x\000y\000z\000\000", 0, 6); x2("\000x\000y\000z\000\134\000z\000\000", "\000x\000y\000z\000\000", 0, 6); x2("\000a\000\134\000Z\000\000", "\000a\000\000", 0, 2); x2("\000\134\000G\000a\000z\000\000", "\000a\000z\000\000", 0, 4); n("\000\134\000G\000z\000\000", "\000b\000z\000a\000\000"); n("\000a\000z\000\134\000G\000\000", "\000a\000z\000\000"); n("\000a\000z\000\134\000A\000\000", "\000a\000z\000\000"); n("\000a\000\134\000A\000z\000\000", "\000a\000z\000\000"); x2("\000\134\000^\000\134\000$\000\000", "\000^\000$\000\000", 0, 4); x2("\000^\000x\000?\000y\000\000", "\000x\000y\000\000", 0, 4); x2("\000^\000(\000x\000?\000y\000)\000\000", "\000x\000y\000\000", 0, 4); x2("\000\134\000w\000\000", "\000_\000\000", 0, 2); n("\000\134\000W\000\000", "\000_\000\000"); x2("\000(\000?\000=\000z\000)\000z\000\000", "\000z\000\000", 0, 2); n("\000(\000?\000=\000z\000)\000.\000\000", "\000a\000\000"); x2("\000(\000?\000!\000z\000)\000a\000\000", "\000a\000\000", 0, 2); n("\000(\000?\000!\000z\000)\000a\000\000", "\000z\000\000"); x2("\000(\000?\000i\000:\000a\000)\000\000", "\000a\000\000", 0, 2); x2("\000(\000?\000i\000:\000a\000)\000\000", "\000A\000\000", 0, 2); x2("\000(\000?\000i\000:\000A\000)\000\000", "\000a\000\000", 0, 2); n("\000(\000?\000i\000:\000A\000)\000\000", "\000b\000\000"); x2("\000(\000?\000i\000:\000[\000A\000-\000Z\000]\000)\000\000", "\000a\000\000", 0, 2); x2("\000(\000?\000i\000:\000[\000f\000-\000m\000]\000)\000\000", "\000H\000\000", 0, 2); x2("\000(\000?\000i\000:\000[\000f\000-\000m\000]\000)\000\000", "\000h\000\000", 0, 2); n("\000(\000?\000i\000:\000[\000f\000-\000m\000]\000)\000\000", "\000e\000\000"); x2("\000(\000?\000i\000:\000[\000A\000-\000c\000]\000)\000\000", "\000D\000\000", 0, 2); n("\000(\000?\000i\000:\000[\000^\000a\000-\000z\000]\000)\000\000", "\000A\000\000"); n("\000(\000?\000i\000:\000[\000^\000a\000-\000z\000]\000)\000\000", "\000a\000\000"); x2("\000(\000?\000i\000:\000[\000!\000-\000k\000]\000)\000\000", "\000Z\000\000", 0, 2); x2("\000(\000?\000i\000:\000[\000!\000-\000k\000]\000)\000\000", "\0007\000\000", 0, 2); x2("\000(\000?\000i\000:\000[\000T\000-\000}\000]\000)\000\000", "\000b\000\000", 0, 2); x2("\000(\000?\000i\000:\000[\000T\000-\000}\000]\000)\000\000", "\000{\000\000", 0, 2); x2("\000(\000?\000i\000:\000\134\000?\000a\000)\000\000", "\000?\000A\000\000", 0, 4); x2("\000(\000?\000i\000:\000\134\000*\000A\000)\000\000", "\000*\000a\000\000", 0, 4); n("\000.\000\000", "\000\012\000\000"); x2("\000(\000?\000m\000:\000.\000)\000\000", "\000\012\000\000", 0, 2); x2("\000(\000?\000m\000:\000a\000.\000)\000\000", "\000a\000\012\000\000", 0, 4); x2("\000(\000?\000m\000:\000.\000b\000)\000\000", "\000a\000\012\000b\000\000", 2, 6); x2("\000.\000*\000a\000b\000c\000\000", "\000d\000d\000d\000a\000b\000d\000d\000\012\000d\000d\000a\000b\000c\000\000", 16, 26); x2("\000(\000?\000m\000:\000.\000*\000a\000b\000c\000)\000\000", "\000d\000d\000d\000a\000b\000d\000d\000a\000b\000c\000\000", 0, 20); n("\000(\000?\000i\000)\000(\000?\000-\000i\000)\000a\000\000", "\000A\000\000"); n("\000(\000?\000i\000)\000(\000?\000-\000i\000:\000a\000)\000\000", "\000A\000\000"); x2("\000a\000?\000\000", "\000\000", 0, 0); x2("\000a\000?\000\000", "\000b\000\000", 0, 0); x2("\000a\000?\000\000", "\000a\000\000", 0, 2); x2("\000a\000*\000\000", "\000\000", 0, 0); x2("\000a\000*\000\000", "\000a\000\000", 0, 2); x2("\000a\000*\000\000", "\000a\000a\000a\000\000", 0, 6); x2("\000a\000*\000\000", "\000b\000a\000a\000a\000a\000\000", 0, 0); n("\000a\000+\000\000", "\000\000"); x2("\000a\000+\000\000", "\000a\000\000", 0, 2); x2("\000a\000+\000\000", "\000a\000a\000a\000a\000\000", 0, 8); x2("\000a\000+\000\000", "\000a\000a\000b\000b\000b\000\000", 0, 4); x2("\000a\000+\000\000", "\000b\000a\000a\000a\000a\000\000", 2, 10); x2("\000.\000?\000\000", "\000\000", 0, 0); x2("\000.\000?\000\000", "\000f\000\000", 0, 2); x2("\000.\000?\000\000", "\000\012\000\000", 0, 0); x2("\000.\000*\000\000", "\000\000", 0, 0); x2("\000.\000*\000\000", "\000a\000b\000c\000d\000e\000\000", 0, 10); x2("\000.\000+\000\000", "\000z\000\000", 0, 2); x2("\000.\000+\000\000", "\000z\000d\000s\000w\000e\000r\000\012\000\000", 0, 12); x2("\000(\000.\000*\000)\000a\000\134\0001\000f\000\000", "\000b\000a\000b\000f\000b\000a\000c\000\000", 0, 8); x2("\000(\000.\000*\000)\000a\000\134\0001\000f\000\000", "\000b\000a\000c\000b\000a\000b\000f\000\000", 6, 14); x2("\000(\000(\000.\000*\000)\000a\000\134\0002\000f\000)\000\000", "\000b\000a\000c\000b\000a\000b\000f\000\000", 6, 14); x2("\000(\000.\000*\000)\000a\000\134\0001\000f\000\000", "\000b\000a\000c\000z\000z\000z\000z\000z\000z\000\012\000b\000a\000z\000z\000\012\000z\000z\000z\000z\000b\000a\000b\000f\000\000", 38, 46); x2("\000a\000|\000b\000\000", "\000a\000\000", 0, 2); x2("\000a\000|\000b\000\000", "\000b\000\000", 0, 2); x2("\000|\000a\000\000", "\000a\000\000", 0, 0); x2("\000(\000|\000a\000)\000\000", "\000a\000\000", 0, 0); x2("\000a\000b\000|\000b\000c\000\000", "\000a\000b\000\000", 0, 4); x2("\000a\000b\000|\000b\000c\000\000", "\000b\000c\000\000", 0, 4); x2("\000z\000(\000?\000:\000a\000b\000|\000b\000c\000)\000\000", "\000z\000b\000c\000\000", 0, 6); x2("\000a\000(\000?\000:\000a\000b\000|\000b\000c\000)\000c\000\000", "\000a\000a\000b\000c\000\000", 0, 8); x2("\000a\000b\000|\000(\000?\000:\000a\000c\000|\000a\000z\000)\000\000", "\000a\000z\000\000", 0, 4); x2("\000a\000|\000b\000|\000c\000\000", "\000d\000c\000\000", 2, 4); x2("\000a\000|\000b\000|\000c\000d\000|\000e\000f\000g\000|\000h\000|\000i\000j\000k\000|\000l\000m\000n\000|\000o\000|\000p\000q\000|\000r\000s\000t\000u\000v\000w\000x\000|\000y\000z\000\000", "\000p\000q\000r\000\000", 0, 4); n("\000a\000|\000b\000|\000c\000d\000|\000e\000f\000g\000|\000h\000|\000i\000j\000k\000|\000l\000m\000n\000|\000o\000|\000p\000q\000|\000r\000s\000t\000u\000v\000w\000x\000|\000y\000z\000\000", "\000m\000n\000\000"); x2("\000a\000|\000^\000z\000\000", "\000b\000a\000\000", 2, 4); x2("\000a\000|\000^\000z\000\000", "\000z\000a\000\000", 0, 2); x2("\000a\000|\000\134\000G\000z\000\000", "\000b\000z\000a\000\000", 4, 6); x2("\000a\000|\000\134\000G\000z\000\000", "\000z\000a\000\000", 0, 2); x2("\000a\000|\000\134\000A\000z\000\000", "\000b\000z\000a\000\000", 4, 6); x2("\000a\000|\000\134\000A\000z\000\000", "\000z\000a\000\000", 0, 2); x2("\000a\000|\000b\000\134\000Z\000\000", "\000b\000a\000\000", 2, 4); x2("\000a\000|\000b\000\134\000Z\000\000", "\000b\000\000", 0, 2); x2("\000a\000|\000b\000\134\000z\000\000", "\000b\000a\000\000", 2, 4); x2("\000a\000|\000b\000\134\000z\000\000", "\000b\000\000", 0, 2); x2("\000\134\000w\000|\000\134\000s\000\000", "\000 \000\000", 0, 2); n("\000\134\000w\000|\000\134\000w\000\000", "\000 \000\000"); x2("\000\134\000w\000|\000%\000\000", "\000%\000\000", 0, 2); x2("\000\134\000w\000|\000[\000&\000$\000]\000\000", "\000&\000\000", 0, 2); x2("\000[\000b\000-\000d\000]\000|\000[\000^\000e\000-\000z\000]\000\000", "\000a\000\000", 0, 2); x2("\000(\000?\000:\000a\000|\000[\000c\000-\000f\000]\000)\000|\000b\000z\000\000", "\000d\000z\000\000", 0, 2); x2("\000(\000?\000:\000a\000|\000[\000c\000-\000f\000]\000)\000|\000b\000z\000\000", "\000b\000z\000\000", 0, 4); x2("\000a\000b\000c\000|\000(\000?\000=\000z\000z\000)\000.\000.\000f\000\000", "\000z\000z\000f\000\000", 0, 6); x2("\000a\000b\000c\000|\000(\000?\000!\000z\000z\000)\000.\000.\000f\000\000", "\000a\000b\000f\000\000", 0, 6); x2("\000(\000?\000=\000z\000a\000)\000.\000.\000a\000|\000(\000?\000=\000z\000z\000)\000.\000.\000a\000\000", "\000z\000z\000a\000\000", 0, 6); n("\000(\000?\000>\000a\000|\000a\000b\000d\000)\000c\000\000", "\000a\000b\000d\000c\000\000"); x2("\000(\000?\000>\000a\000b\000d\000|\000a\000)\000c\000\000", "\000a\000b\000d\000c\000\000", 0, 8); x2("\000a\000?\000|\000b\000\000", "\000a\000\000", 0, 2); x2("\000a\000?\000|\000b\000\000", "\000b\000\000", 0, 0); x2("\000a\000?\000|\000b\000\000", "\000\000", 0, 0); x2("\000a\000*\000|\000b\000\000", "\000a\000a\000\000", 0, 4); x2("\000a\000*\000|\000b\000*\000\000", "\000b\000a\000\000", 0, 0); x2("\000a\000*\000|\000b\000*\000\000", "\000a\000b\000\000", 0, 2); x2("\000a\000+\000|\000b\000*\000\000", "\000\000", 0, 0); x2("\000a\000+\000|\000b\000*\000\000", "\000b\000b\000b\000\000", 0, 6); x2("\000a\000+\000|\000b\000*\000\000", "\000a\000b\000b\000b\000\000", 0, 2); n("\000a\000+\000|\000b\000+\000\000", "\000\000"); x2("\000(\000a\000|\000b\000)\000?\000\000", "\000b\000\000", 0, 2); x2("\000(\000a\000|\000b\000)\000*\000\000", "\000b\000a\000\000", 0, 4); x2("\000(\000a\000|\000b\000)\000+\000\000", "\000b\000a\000b\000\000", 0, 6); x2("\000(\000a\000b\000|\000c\000a\000)\000+\000\000", "\000c\000a\000a\000b\000b\000c\000\000", 0, 8); x2("\000(\000a\000b\000|\000c\000a\000)\000+\000\000", "\000a\000a\000b\000c\000a\000\000", 2, 10); x2("\000(\000a\000b\000|\000c\000a\000)\000+\000\000", "\000a\000b\000z\000c\000a\000\000", 0, 4); x2("\000(\000a\000|\000b\000a\000b\000)\000+\000\000", "\000a\000b\000a\000b\000a\000\000", 0, 10); x2("\000(\000a\000|\000b\000a\000b\000)\000+\000\000", "\000b\000a\000\000", 2, 4); x2("\000(\000a\000|\000b\000a\000b\000)\000+\000\000", "\000b\000a\000a\000a\000b\000a\000\000", 2, 8); x2("\000(\000?\000:\000a\000|\000b\000)\000(\000?\000:\000a\000|\000b\000)\000\000", "\000a\000b\000\000", 0, 4); x2("\000(\000?\000:\000a\000*\000|\000b\000*\000)\000(\000?\000:\000a\000*\000|\000b\000*\000)\000\000", "\000a\000a\000a\000b\000b\000b\000\000", 0, 6); x2("\000(\000?\000:\000a\000*\000|\000b\000*\000)\000(\000?\000:\000a\000+\000|\000b\000+\000)\000\000", "\000a\000a\000a\000b\000b\000b\000\000", 0, 12); x2("\000(\000?\000:\000a\000+\000|\000b\000+\000)\000{\0002\000}\000\000", "\000a\000a\000a\000b\000b\000b\000\000", 0, 12); x2("\000h\000{\0000\000,\000}\000\000", "\000h\000h\000h\000h\000\000", 0, 8); x2("\000(\000?\000:\000a\000+\000|\000b\000+\000)\000{\0001\000,\0002\000}\000\000", "\000a\000a\000a\000b\000b\000b\000\000", 0, 12); n("\000a\000x\000{\0002\000}\000*\000a\000\000", "\0000\000a\000x\000x\000x\000a\0001\000\000"); n("\000a\000.\000{\0000\000,\0002\000}\000a\000\000", "\0000\000a\000X\000X\000X\000a\0000\000\000"); n("\000a\000.\000{\0000\000,\0002\000}\000?\000a\000\000", "\0000\000a\000X\000X\000X\000a\0000\000\000"); n("\000a\000.\000{\0000\000,\0002\000}\000?\000a\000\000", "\0000\000a\000X\000X\000X\000X\000a\0000\000\000"); x2("\000^\000a\000{\0002\000,\000}\000?\000a\000$\000\000", "\000a\000a\000a\000\000", 0, 6); x2("\000^\000[\000a\000-\000z\000]\000{\0002\000,\000}\000?\000$\000\000", "\000a\000a\000a\000\000", 0, 6); x2("\000(\000?\000:\000a\000+\000|\000\134\000A\000b\000*\000)\000c\000c\000\000", "\000c\000c\000\000", 0, 4); n("\000(\000?\000:\000a\000+\000|\000\134\000A\000b\000*\000)\000c\000c\000\000", "\000a\000b\000c\000c\000\000"); x2("\000(\000?\000:\000^\000a\000+\000|\000b\000+\000)\000*\000c\000\000", "\000a\000a\000b\000b\000b\000a\000b\000c\000\000", 12, 16); x2("\000(\000?\000:\000^\000a\000+\000|\000b\000+\000)\000*\000c\000\000", "\000a\000a\000b\000b\000b\000b\000c\000\000", 0, 14); x2("\000a\000|\000(\000?\000i\000)\000c\000\000", "\000C\000\000", 0, 2); x2("\000(\000?\000i\000)\000c\000|\000a\000\000", "\000C\000\000", 0, 2); x2("\000(\000?\000i\000)\000c\000|\000a\000\000", "\000A\000\000", 0, 2); x2("\000(\000?\000i\000:\000c\000)\000|\000a\000\000", "\000C\000\000", 0, 2); n("\000(\000?\000i\000:\000c\000)\000|\000a\000\000", "\000A\000\000"); x2("\000[\000a\000b\000c\000]\000?\000\000", "\000a\000b\000c\000\000", 0, 2); x2("\000[\000a\000b\000c\000]\000*\000\000", "\000a\000b\000c\000\000", 0, 6); x2("\000[\000^\000a\000b\000c\000]\000*\000\000", "\000a\000b\000c\000\000", 0, 0); n("\000[\000^\000a\000b\000c\000]\000+\000\000", "\000a\000b\000c\000\000"); x2("\000a\000?\000?\000\000", "\000a\000a\000a\000\000", 0, 0); x2("\000b\000a\000?\000?\000b\000\000", "\000b\000a\000b\000\000", 0, 6); x2("\000a\000*\000?\000\000", "\000a\000a\000a\000\000", 0, 0); x2("\000b\000a\000*\000?\000\000", "\000b\000a\000a\000\000", 0, 2); x2("\000b\000a\000*\000?\000b\000\000", "\000b\000a\000a\000b\000\000", 0, 8); x2("\000a\000+\000?\000\000", "\000a\000a\000a\000\000", 0, 2); x2("\000b\000a\000+\000?\000\000", "\000b\000a\000a\000\000", 0, 4); x2("\000b\000a\000+\000?\000b\000\000", "\000b\000a\000a\000b\000\000", 0, 8); x2("\000(\000?\000:\000a\000?\000)\000?\000?\000\000", "\000a\000\000", 0, 0); x2("\000(\000?\000:\000a\000?\000?\000)\000?\000\000", "\000a\000\000", 0, 0); x2("\000(\000?\000:\000a\000?\000)\000+\000?\000\000", "\000a\000a\000a\000\000", 0, 2); x2("\000(\000?\000:\000a\000+\000)\000?\000?\000\000", "\000a\000a\000a\000\000", 0, 0); x2("\000(\000?\000:\000a\000+\000)\000?\000?\000b\000\000", "\000a\000a\000a\000b\000\000", 0, 8); x2("\000(\000?\000:\000a\000b\000)\000?\000{\0002\000}\000\000", "\000\000", 0, 0); x2("\000(\000?\000:\000a\000b\000)\000?\000{\0002\000}\000\000", "\000a\000b\000a\000b\000a\000\000", 0, 8); x2("\000(\000?\000:\000a\000b\000)\000*\000{\0000\000}\000\000", "\000a\000b\000a\000b\000a\000\000", 0, 0); x2("\000(\000?\000:\000a\000b\000)\000{\0003\000,\000}\000\000", "\000a\000b\000a\000b\000a\000b\000a\000b\000\000", 0, 16); n("\000(\000?\000:\000a\000b\000)\000{\0003\000,\000}\000\000", "\000a\000b\000a\000b\000\000"); x2("\000(\000?\000:\000a\000b\000)\000{\0002\000,\0004\000}\000\000", "\000a\000b\000a\000b\000a\000b\000\000", 0, 12); x2("\000(\000?\000:\000a\000b\000)\000{\0002\000,\0004\000}\000\000", "\000a\000b\000a\000b\000a\000b\000a\000b\000a\000b\000\000", 0, 16); x2("\000(\000?\000:\000a\000b\000)\000{\0002\000,\0004\000}\000?\000\000", "\000a\000b\000a\000b\000a\000b\000a\000b\000a\000b\000\000", 0, 8); x2("\000(\000?\000:\000a\000b\000)\000{\000,\000}\000\000", "\000a\000b\000{\000,\000}\000\000", 0, 10); x2("\000(\000?\000:\000a\000b\000c\000)\000+\000?\000{\0002\000}\000\000", "\000a\000b\000c\000a\000b\000c\000a\000b\000c\000\000", 0, 12); x2("\000(\000?\000:\000X\000*\000)\000(\000?\000i\000:\000x\000a\000)\000\000", "\000X\000X\000X\000a\000\000", 0, 8); x2("\000(\000d\000+\000)\000(\000[\000^\000a\000b\000c\000]\000z\000)\000\000", "\000d\000d\000d\000z\000\000", 0, 8); x2("\000(\000[\000^\000a\000b\000c\000]\000*\000)\000(\000[\000^\000a\000b\000c\000]\000z\000)\000\000", "\000d\000d\000d\000z\000\000", 0, 8); x2("\000(\000\134\000w\000+\000)\000(\000\134\000w\000z\000)\000\000", "\000d\000d\000d\000z\000\000", 0, 8); x3("\000(\000a\000)\000\000", "\000a\000\000", 0, 2, 1); x3("\000(\000a\000b\000)\000\000", "\000a\000b\000\000", 0, 4, 1); x2("\000(\000(\000a\000b\000)\000)\000\000", "\000a\000b\000\000", 0, 4); x3("\000(\000(\000a\000b\000)\000)\000\000", "\000a\000b\000\000", 0, 4, 1); x3("\000(\000(\000a\000b\000)\000)\000\000", "\000a\000b\000\000", 0, 4, 2); x3("\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000a\000b\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000\000", "\000a\000b\000\000", 0, 4, 20); x3("\000(\000a\000b\000)\000(\000c\000d\000)\000\000", "\000a\000b\000c\000d\000\000", 0, 4, 1); x3("\000(\000a\000b\000)\000(\000c\000d\000)\000\000", "\000a\000b\000c\000d\000\000", 4, 8, 2); x3("\000(\000)\000(\000a\000)\000b\000c\000(\000d\000e\000f\000)\000g\000h\000i\000j\000k\000\000", "\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000\000", 6, 12, 3); x3("\000(\000(\000)\000(\000a\000)\000b\000c\000(\000d\000e\000f\000)\000g\000h\000i\000j\000k\000)\000\000", "\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000\000", 6, 12, 4); x2("\000(\000^\000a\000)\000\000", "\000a\000\000", 0, 2); x3("\000(\000a\000)\000|\000(\000a\000)\000\000", "\000b\000a\000\000", 2, 4, 1); x3("\000(\000^\000a\000)\000|\000(\000a\000)\000\000", "\000b\000a\000\000", 2, 4, 2); x3("\000(\000a\000?\000)\000\000", "\000a\000a\000a\000\000", 0, 2, 1); x3("\000(\000a\000*\000)\000\000", "\000a\000a\000a\000\000", 0, 6, 1); x3("\000(\000a\000*\000)\000\000", "\000\000", 0, 0, 1); x3("\000(\000a\000+\000)\000\000", "\000a\000a\000a\000a\000a\000a\000a\000\000", 0, 14, 1); x3("\000(\000a\000+\000|\000b\000*\000)\000\000", "\000b\000b\000b\000a\000a\000\000", 0, 6, 1); x3("\000(\000a\000+\000|\000b\000?\000)\000\000", "\000b\000b\000b\000a\000a\000\000", 0, 2, 1); x3("\000(\000a\000b\000c\000)\000?\000\000", "\000a\000b\000c\000\000", 0, 6, 1); x3("\000(\000a\000b\000c\000)\000*\000\000", "\000a\000b\000c\000\000", 0, 6, 1); x3("\000(\000a\000b\000c\000)\000+\000\000", "\000a\000b\000c\000\000", 0, 6, 1); x3("\000(\000x\000y\000z\000|\000a\000b\000c\000)\000+\000\000", "\000a\000b\000c\000\000", 0, 6, 1); x3("\000(\000[\000x\000y\000z\000]\000[\000a\000b\000c\000]\000|\000a\000b\000c\000)\000+\000\000", "\000a\000b\000c\000\000", 0, 6, 1); x3("\000(\000(\000?\000i\000:\000a\000b\000c\000)\000)\000\000", "\000A\000b\000C\000\000", 0, 6, 1); x2("\000(\000a\000b\000c\000)\000(\000?\000i\000:\000\134\0001\000)\000\000", "\000a\000b\000c\000A\000B\000C\000\000", 0, 12); x3("\000(\000(\000?\000m\000:\000a\000.\000c\000)\000)\000\000", "\000a\000\012\000c\000\000", 0, 6, 1); x3("\000(\000(\000?\000=\000a\000z\000)\000a\000)\000\000", "\000a\000z\000b\000\000", 0, 2, 1); x3("\000a\000b\000c\000|\000(\000.\000a\000b\000d\000)\000\000", "\000z\000a\000b\000d\000\000", 0, 8, 1); x2("\000(\000?\000:\000a\000b\000c\000)\000|\000(\000A\000B\000C\000)\000\000", "\000a\000b\000c\000\000", 0, 6); x3("\000(\000?\000i\000:\000(\000a\000b\000c\000)\000)\000|\000(\000z\000z\000z\000)\000\000", "\000A\000B\000C\000\000", 0, 6, 1); x3("\000a\000*\000(\000.\000)\000\000", "\000a\000a\000a\000a\000z\000\000", 8, 10, 1); x3("\000a\000*\000?\000(\000.\000)\000\000", "\000a\000a\000a\000a\000z\000\000", 0, 2, 1); x3("\000a\000*\000?\000(\000c\000)\000\000", "\000a\000a\000a\000a\000c\000\000", 8, 10, 1); x3("\000[\000b\000c\000d\000]\000a\000*\000(\000.\000)\000\000", "\000c\000a\000a\000a\000a\000z\000\000", 10, 12, 1); x3("\000(\000\134\000A\000b\000b\000)\000c\000c\000\000", "\000b\000b\000c\000c\000\000", 0, 4, 1); n("\000(\000\134\000A\000b\000b\000)\000c\000c\000\000", "\000z\000b\000b\000c\000c\000\000"); x3("\000(\000^\000b\000b\000)\000c\000c\000\000", "\000b\000b\000c\000c\000\000", 0, 4, 1); n("\000(\000^\000b\000b\000)\000c\000c\000\000", "\000z\000b\000b\000c\000c\000\000"); x3("\000c\000c\000(\000b\000b\000$\000)\000\000", "\000c\000c\000b\000b\000\000", 4, 8, 1); n("\000c\000c\000(\000b\000b\000$\000)\000\000", "\000c\000c\000b\000b\000b\000\000"); n("\000(\000\134\0001\000)\000\000", "\000\000"); n("\000\134\0001\000(\000a\000)\000\000", "\000a\000a\000\000"); n("\000(\000a\000(\000b\000)\000\134\0001\000)\000\134\0002\000+\000\000", "\000a\000b\000a\000b\000b\000\000"); n("\000(\000?\000:\000(\000?\000:\000\134\0001\000|\000z\000)\000(\000a\000)\000)\000+\000$\000\000", "\000z\000a\000a\000\000"); x2("\000(\000?\000:\000(\000?\000:\000\134\0001\000|\000z\000)\000(\000a\000)\000)\000+\000$\000\000", "\000z\000a\000a\000a\000\000", 0, 8); x2("\000(\000a\000)\000(\000?\000=\000\134\0001\000)\000\000", "\000a\000a\000\000", 0, 2); n("\000(\000a\000)\000$\000|\000\134\0001\000\000", "\000a\000z\000\000"); x2("\000(\000a\000)\000\134\0001\000\000", "\000a\000a\000\000", 0, 4); n("\000(\000a\000)\000\134\0001\000\000", "\000a\000b\000\000"); x2("\000(\000a\000?\000)\000\134\0001\000\000", "\000a\000a\000\000", 0, 4); x2("\000(\000a\000?\000?\000)\000\134\0001\000\000", "\000a\000a\000\000", 0, 0); x2("\000(\000a\000*\000)\000\134\0001\000\000", "\000a\000a\000a\000a\000a\000\000", 0, 8); x3("\000(\000a\000*\000)\000\134\0001\000\000", "\000a\000a\000a\000a\000a\000\000", 0, 4, 1); x2("\000a\000(\000b\000*\000)\000\134\0001\000\000", "\000a\000b\000b\000b\000b\000\000", 0, 10); x2("\000a\000(\000b\000*\000)\000\134\0001\000\000", "\000a\000b\000\000", 0, 2); x2("\000(\000a\000*\000)\000(\000b\000*\000)\000\134\0001\000\134\0002\000\000", "\000a\000a\000a\000b\000b\000a\000a\000a\000b\000b\000\000", 0, 20); x2("\000(\000a\000*\000)\000(\000b\000*\000)\000\134\0002\000\000", "\000a\000a\000a\000b\000b\000b\000b\000\000", 0, 14); x2("\000(\000(\000(\000(\000(\000(\000(\000a\000*\000)\000b\000)\000)\000)\000)\000)\000)\000c\000\134\0007\000\000", "\000a\000a\000a\000b\000c\000a\000a\000a\000\000", 0, 16); x3("\000(\000(\000(\000(\000(\000(\000(\000a\000*\000)\000b\000)\000)\000)\000)\000)\000)\000c\000\134\0007\000\000", "\000a\000a\000a\000b\000c\000a\000a\000a\000\000", 0, 6, 7); x2("\000(\000a\000)\000(\000b\000)\000(\000c\000)\000\134\0002\000\134\0001\000\134\0003\000\000", "\000a\000b\000c\000b\000a\000c\000\000", 0, 12); x2("\000(\000[\000a\000-\000d\000]\000)\000\134\0001\000\000", "\000c\000c\000\000", 0, 4); x2("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "\000f\0005\000 \000f\0005\000 \000\000", 0, 12); n("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "\000f\0005\000 \000f\0005\000\000"); x2("\000(\000w\000h\000o\000|\000[\000a\000-\000c\000]\000{\0003\000}\000)\000\134\0001\000\000", "\000w\000h\000o\000w\000h\000o\000\000", 0, 12); x2("\000.\000.\000.\000(\000w\000h\000o\000|\000[\000a\000-\000c\000]\000{\0003\000}\000)\000\134\0001\000\000", "\000a\000b\000c\000w\000h\000o\000w\000h\000o\000\000", 0, 18); x2("\000(\000w\000h\000o\000|\000[\000a\000-\000c\000]\000{\0003\000}\000)\000\134\0001\000\000", "\000c\000b\000c\000c\000b\000c\000\000", 0, 12); x2("\000(\000^\000a\000)\000\134\0001\000\000", "\000a\000a\000\000", 0, 4); n("\000(\000^\000a\000)\000\134\0001\000\000", "\000b\000a\000a\000\000"); n("\000(\000a\000$\000)\000\134\0001\000\000", "\000a\000a\000\000"); n("\000(\000a\000b\000\134\000Z\000)\000\134\0001\000\000", "\000a\000b\000\000"); x2("\000(\000a\000*\000\134\000Z\000)\000\134\0001\000\000", "\000a\000\000", 2, 2); x2("\000.\000(\000a\000*\000\134\000Z\000)\000\134\0001\000\000", "\000b\000a\000\000", 2, 4); x3("\000(\000.\000(\000a\000b\000c\000)\000\134\0002\000)\000\000", "\000z\000a\000b\000c\000a\000b\000c\000\000", 0, 14, 1); x3("\000(\000.\000(\000.\000.\000\134\000d\000.\000)\000\134\0002\000)\000\000", "\000z\0001\0002\0003\0004\0001\0002\0003\0004\000\000", 0, 18, 1); x2("\000(\000(\000?\000i\000:\000a\000z\000)\000)\000\134\0001\000\000", "\000A\000z\000A\000z\000\000", 0, 8); n("\000(\000(\000?\000i\000:\000a\000z\000)\000)\000\134\0001\000\000", "\000A\000z\000a\000z\000\000"); x2("\000(\000?\000<\000=\000a\000)\000b\000\000", "\000a\000b\000\000", 2, 4); n("\000(\000?\000<\000=\000a\000)\000b\000\000", "\000b\000b\000\000"); x2("\000(\000?\000<\000=\000a\000|\000b\000)\000b\000\000", "\000b\000b\000\000", 2, 4); x2("\000(\000?\000<\000=\000a\000|\000b\000c\000)\000b\000\000", "\000b\000c\000b\000\000", 4, 6); x2("\000(\000?\000<\000=\000a\000|\000b\000c\000)\000b\000\000", "\000a\000b\000\000", 2, 4); x2("\000(\000?\000<\000=\000a\000|\000b\000c\000|\000|\000d\000e\000f\000g\000h\000i\000j\000|\000k\000l\000m\000n\000o\000p\000q\000|\000r\000)\000z\000\000", "\000r\000z\000\000", 2, 4); x2("\000(\000a\000)\000\134\000g\000<\0001\000>\000\000", "\000a\000a\000\000", 0, 4); x2("\000(\000?\000<\000!\000a\000)\000b\000\000", "\000c\000b\000\000", 2, 4); n("\000(\000?\000<\000!\000a\000)\000b\000\000", "\000a\000b\000\000"); x2("\000(\000?\000<\000!\000a\000|\000b\000c\000)\000b\000\000", "\000b\000b\000b\000\000", 0, 2); n("\000(\000?\000<\000!\000a\000|\000b\000c\000)\000z\000\000", "\000b\000c\000z\000\000"); x2("\000(\000?\000<\000n\000a\000m\000e\0001\000>\000a\000)\000\000", "\000a\000\000", 0, 2); x2("\000(\000?\000<\000n\000a\000m\000e\000_\0002\000>\000a\000b\000)\000\134\000g\000<\000n\000a\000m\000e\000_\0002\000>\000\000", "\000a\000b\000a\000b\000\000", 0, 8); x2("\000(\000?\000<\000n\000a\000m\000e\000_\0003\000>\000.\000z\000v\000.\000)\000\134\000k\000<\000n\000a\000m\000e\000_\0003\000>\000\000", "\000a\000z\000v\000b\000a\000z\000v\000b\000\000", 0, 16); x2("\000(\000?\000<\000=\000\134\000g\000<\000a\000b\000>\000)\000|\000-\000\134\000z\000E\000N\000D\000 \000(\000?\000<\000a\000b\000>\000X\000y\000Z\000)\000\000", "\000X\000y\000Z\000\000", 6, 6); x2("\000(\000?\000<\000n\000>\000|\000a\000\134\000g\000<\000n\000>\000)\000+\000\000", "\000\000", 0, 0); x2("\000(\000?\000<\000n\000>\000|\000\134\000(\000\134\000g\000<\000n\000>\000\134\000)\000)\000+\000$\000\000", "\000(\000)\000(\000(\000)\000)\000\000", 0, 12); x3("\000\134\000g\000<\000n\000>\000(\000?\000<\000n\000>\000.\000)\000{\0000\000}\000\000", "\000X\000\000", 0, 2, 1); x2("\000\134\000g\000<\000n\000>\000(\000a\000b\000c\000|\000d\000f\000(\000?\000<\000n\000>\000.\000Y\000Z\000)\000{\0002\000,\0008\000}\000)\000{\0000\000}\000\000", "\000X\000Y\000Z\000\000", 0, 6); x2("\000\134\000A\000(\000?\000<\000n\000>\000(\000a\000\134\000g\000<\000n\000>\000)\000|\000)\000\134\000z\000\000", "\000a\000a\000a\000a\000\000", 0, 8); x2("\000(\000?\000<\000n\000>\000|\000\134\000g\000<\000m\000>\000\134\000g\000<\000n\000>\000)\000\134\000z\000|\000\134\000z\000E\000N\000D\000 \000(\000?\000<\000m\000>\000a\000|\000(\000b\000)\000\134\000g\000<\000m\000>\000)\000\000", "\000b\000b\000b\000b\000a\000b\000b\000a\000\000", 0, 16); x2("\000(\000?\000<\000n\000a\000m\000e\0001\0002\0004\0000\000>\000\134\000w\000+\000\134\000s\000x\000)\000a\000+\000\134\000k\000<\000n\000a\000m\000e\0001\0002\0004\0000\000>\000\000", "\000 \000 \000f\000g\000 \000x\000a\000a\000a\000a\000a\000a\000a\000a\000f\000g\000 \000x\000\000", 4, 36); x3("\000(\000z\000)\000(\000)\000(\000)\000(\000?\000<\000_\0009\000>\000a\000)\000\134\000g\000<\000_\0009\000>\000\000", "\000z\000a\000a\000\000", 4, 6, 1); x2("\000(\000.\000)\000(\000(\000(\000?\000<\000_\000>\000a\000)\000)\000)\000\134\000k\000<\000_\000>\000\000", "\000z\000a\000a\000\000", 0, 6); x2("\000(\000(\000?\000<\000n\000a\000m\000e\0001\000>\000\134\000d\000)\000|\000(\000?\000<\000n\000a\000m\000e\0002\000>\000\134\000w\000)\000)\000(\000\134\000k\000<\000n\000a\000m\000e\0001\000>\000|\000\134\000k\000<\000n\000a\000m\000e\0002\000>\000)\000\000", "\000f\000f\000\000", 0, 4); x2("\000(\000?\000:\000(\000?\000<\000x\000>\000)\000|\000(\000?\000<\000x\000>\000e\000f\000g\000)\000)\000\134\000k\000<\000x\000>\000\000", "\000\000", 0, 0); x2("\000(\000?\000:\000(\000?\000<\000x\000>\000a\000b\000c\000)\000|\000(\000?\000<\000x\000>\000e\000f\000g\000)\000)\000\134\000k\000<\000x\000>\000\000", "\000a\000b\000c\000e\000f\000g\000e\000f\000g\000\000", 6, 18); n("\000(\000?\000:\000(\000?\000<\000x\000>\000a\000b\000c\000)\000|\000(\000?\000<\000x\000>\000e\000f\000g\000)\000)\000\134\000k\000<\000x\000>\000\000", "\000a\000b\000c\000e\000f\000g\000\000"); x2("\000(\000?\000:\000(\000?\000<\000n\0001\000>\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000)\000\134\000k\000<\000n\0001\000>\000$\000\000", "\000a\000-\000p\000y\000u\000m\000p\000y\000u\000m\000\000", 4, 20); x3("\000(\000?\000:\000(\000?\000<\000n\0001\000>\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000|\000(\000?\000<\000n\0001\000>\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000.\000)\000)\000\134\000k\000<\000n\0001\000>\000$\000\000", "\000x\000x\000x\000x\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000l\000m\000n\000a\000b\000c\000d\000e\000f\000g\000h\000i\000j\000k\000l\000m\000n\000\000", 8, 36, 14); x3("\000(\000?\000<\000n\000a\000m\000e\0001\000>\000)\000(\000?\000<\000n\000a\000m\000e\0002\000>\000)\000(\000?\000<\000n\000a\000m\000e\0003\000>\000)\000(\000?\000<\000n\000a\000m\000e\0004\000>\000)\000(\000?\000<\000n\000a\000m\000e\0005\000>\000)\000(\000?\000<\000n\000a\000m\000e\0006\000>\000)\000(\000?\000<\000n\000a\000m\000e\0007\000>\000)\000(\000?\000<\000n\000a\000m\000e\0008\000>\000)\000(\000?\000<\000n\000a\000m\000e\0009\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0000\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0001\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0002\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0003\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0004\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0005\000>\000)\000(\000?\000<\000n\000a\000m\000e\0001\0006\000>\000a\000a\000a\000)\000(\000?\000<\000n\000a\000m\000e\0001\0007\000>\000)\000$\000\000", "\000a\000a\000a\000\000", 0, 6, 16); x2("\000(\000?\000<\000f\000o\000o\000>\000a\000|\000\134\000(\000\134\000g\000<\000f\000o\000o\000>\000\134\000)\000)\000\000", "\000a\000\000", 0, 2); x2("\000(\000?\000<\000f\000o\000o\000>\000a\000|\000\134\000(\000\134\000g\000<\000f\000o\000o\000>\000\134\000)\000)\000\000", "\000(\000(\000(\000(\000(\000(\000a\000)\000)\000)\000)\000)\000)\000\000", 0, 26); x3("\000(\000?\000<\000f\000o\000o\000>\000a\000|\000\134\000(\000\134\000g\000<\000f\000o\000o\000>\000\134\000)\000)\000\000", "\000(\000(\000(\000(\000(\000(\000(\000(\000a\000)\000)\000)\000)\000)\000)\000)\000)\000\000", 0, 34, 1); x2("\000\134\000g\000<\000b\000a\000r\000>\000|\000\134\000z\000E\000N\000D\000(\000?\000<\000b\000a\000r\000>\000.\000*\000a\000b\000c\000$\000)\000\000", "\000a\000b\000c\000x\000x\000x\000a\000b\000c\000\000", 0, 18); x2("\000\134\000g\000<\0001\000>\000|\000\134\000z\000E\000N\000D\000(\000.\000a\000.\000)\000\000", "\000b\000a\000c\000\000", 0, 6); x3("\000\134\000g\000<\000_\000A\000>\000\134\000g\000<\000_\000A\000>\000|\000\134\000z\000E\000N\000D\000(\000.\000a\000.\000)\000(\000?\000<\000_\000A\000>\000.\000b\000.\000)\000\000", "\000x\000b\000x\000y\000b\000y\000\000", 6, 12, 1); x2("\000\134\000A\000(\000?\000:\000\134\000g\000<\000p\000o\000n\000>\000|\000\134\000g\000<\000p\000a\000n\000>\000|\000\134\000z\000E\000N\000D\000 \000 \000(\000?\000<\000p\000a\000n\000>\000a\000|\000c\000\134\000g\000<\000p\000o\000n\000>\000c\000)\000(\000?\000<\000p\000o\000n\000>\000b\000|\000d\000\134\000g\000<\000p\000a\000n\000>\000d\000)\000)\000$\000\000", "\000c\000d\000c\000b\000c\000d\000c\000\000", 0, 14); x2("\000\134\000A\000(\000?\000<\000n\000>\000|\000a\000\134\000g\000<\000m\000>\000)\000\134\000z\000|\000\134\000z\000E\000N\000D\000 \000(\000?\000<\000m\000>\000\134\000g\000<\000n\000>\000)\000\000", "\000a\000a\000a\000a\000\000", 0, 8); x2("\000(\000?\000<\000n\000>\000(\000a\000|\000b\000\134\000g\000<\000n\000>\000c\000)\000{\0003\000,\0005\000}\000)\000\000", "\000b\000a\000a\000a\000a\000c\000a\000\000", 2, 10); x2("\000(\000?\000<\000n\000>\000(\000a\000|\000b\000\134\000g\000<\000n\000>\000c\000)\000{\0003\000,\0005\000}\000)\000\000", "\000b\000a\000a\000a\000a\000c\000a\000a\000a\000a\000a\000\000", 0, 20); x2("\000(\000?\000<\000p\000a\000r\000e\000>\000\134\000(\000(\000[\000^\000\134\000(\000\134\000)\000]\000+\000+\000|\000\134\000g\000<\000p\000a\000r\000e\000>\000)\000*\000+\000\134\000)\000)\000\000", "\000(\000(\000a\000)\000)\000\000", 0, 10); x2("\000(\000)\000*\000\134\0001\000\000", "\000\000", 0, 0); x2("\000(\000?\000:\000(\000)\000|\000(\000)\000)\000*\000\134\0001\000\134\0002\000\000", "\000\000", 0, 0); x3("\000(\000?\000:\000\134\0001\000a\000|\000(\000)\000)\000*\000\000", "\000a\000\000", 0, 0, 1); x2("\000x\000(\000(\000.\000)\000*\000)\000*\000x\000\000", "\0000\000x\0001\000x\0002\000x\0003\000\000", 2, 12); x2("\000x\000(\000(\000.\000)\000*\000)\000*\000x\000(\000?\000i\000:\000\134\0001\000)\000\134\000Z\000\000", "\0000\000x\0001\000x\0002\000x\0001\000X\0002\000\000", 2, 18); x2("\000(\000?\000:\000(\000)\000|\000(\000)\000|\000(\000)\000|\000(\000)\000|\000(\000)\000|\000(\000)\000)\000*\000\134\0002\000\134\0005\000\000", "\000\000", 0, 0); x2("\000(\000?\000:\000(\000)\000|\000(\000)\000|\000(\000)\000|\000(\000x\000)\000|\000(\000)\000|\000(\000)\000)\000*\000\134\0002\000b\000\134\0005\000\000", "\000b\000\000", 0, 2); x2("\217\372\000\000", "\217\372\000\000", 0, 2); x2("\000\000", "0B\000\000", 0, 0); x2("0B\000\000", "0B\000\000", 0, 2); n("0D\000\000", "0B\000\000"); x2("0F0F\000\000", "0F0F\000\000", 0, 4); x2("0B0D0F\000\000", "0B0D0F\000\000", 0, 6); x2("0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S\000\000", "0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S0S\000\000", 0, 70); x2("0B\000\000", "0D0B\000\000", 2, 4); x2("0D0F\000\000", "0B0D0F\000\000", 2, 6); x2("e\207\000\000", "e\207\000\000", 0, 2); x2("\000.\000\000", "0B\000\000", 0, 2); x2("\000.\000.\000\000", "0K0M\000\000", 0, 4); x2("\000\134\000w\000\000", "0J\000\000", 0, 2); n("\000\134\000W\000\000", "0B\000\000"); x2("\000[\000\134\000W\000]\000\000", "0F\000$\000\000", 2, 4); x2("\000\134\000S\000\000", "0]\000\000", 0, 2); x2("\000\134\000S\000\000", "o\042\000\000", 0, 2); x2("\000\134\000b\000\000", "l\027\000 \000\000", 0, 0); x2("\000\134\000b\000\000", "\000 0{\000\000", 2, 2); x2("\000\134\000B\000\000", "0[0]\000 \000\000", 2, 2); x2("\000\134\000B\000\000", "0F\000 \000\000", 4, 4); x2("\000\134\000B\000\000", "\000 0D\000\000", 0, 0); x2("\000[0_0a\000]\000\000", "0a\000\000", 0, 2); n("\000[0j0k\000]\000\000", "0l\000\000"); x2("\000[0F\000-0J\000]\000\000", "0H\000\000", 0, 2); n("\000[\000^0Q\000]\000\000", "0Q\000\000"); x2("\000[\000\134\000w\000]\000\000", "0m\000\000", 0, 2); n("\000[\000\134\000d\000]\000\000", "0u\000\000"); x2("\000[\000\134\000D\000]\000\000", "0o\000\000", 0, 2); n("\000[\000\134\000s\000]\000\000", "0O\000\000"); x2("\000[\000\134\000S\000]\000\000", "0x\000\000", 0, 2); x2("\000[\000\134\000w\000\134\000d\000]\000\000", "0\210\000\000", 0, 2); x2("\000[\000\134\000w\000\134\000d\000]\000\000", "\000 \000 \000 0\210\000\000", 6, 8); n("\000\134\000w\233<\216\312\000\000", "\000 \233<\216\312\000\000"); x2("\233<\000\134\000W\216\312\000\000", "\233<\000 \216\312\000\000", 0, 6); x2("0B\000.0D\000.0F\000\000", "0B0B0D0D0F\000\000", 0, 10); x2("\000.\000\134\000w0F\000\134\000W\000.\000.0^\000\000", "0H0F0F\000 0F0^0^\000\000", 0, 14); x2("\000\134\000s\000\134\000w0S0S0S\000\000", "\000 0S0S0S0S\000\000", 0, 10); x2("0B0B\000.0Q\000\000", "0B0B0Q0Q\000\000", 0, 8); n("\000.0D\000\000", "0D0H\000\000"); x2("\000.0J\000\000", "0J0J\000\000", 0, 4); x2("\000^0B\000\000", "0B\000\000", 0, 2); x2("\000^0\200\000$\000\000", "0\200\000\000", 0, 2); x2("\000^\000\134\000w\000$\000\000", "0k\000\000", 0, 2); x2("\000^\000\134\000w0K0M0O0Q0S\000$\000\000", "\000z0K0M0O0Q0S\000\000", 0, 12); x2("\000^\000\134\000w\000.\000.\000.0F0H0J\000$\000\000", "\000z0B0D0F0F0H0J\000\000", 0, 14); x2("\000\134\000w\000\134\000w\000\134\000s\000\134\000W0J0J0J\000\134\000d\000\000", "\000a0J\000 \000 0J0J0J\0004\000\000", 0, 16); x2("\000\134\000A0_0a0d\000\000", "0_0a0d\000\000", 0, 6); x2("0\2000\2010\202\000\134\000Z\000\000", "0\2000\2010\202\000\000", 0, 6); x2("0K0M0O\000\134\000z\000\000", "0K0M0O\000\000", 0, 6); x2("0K0M0O\000\134\000Z\000\000", "0K0M0O\000\012\000\000", 0, 6); x2("\000\134\000G0}0t\000\000", "0}0t\000\000", 0, 4); n("\000\134\000G0H\000\000", "0F0H0J\000\000"); n("0h0f\000\134\000G\000\000", "0h0f\000\000"); n("0~0\177\000\134\000A\000\000", "0~0\177\000\000"); n("0~\000\134\000A0\177\000\000", "0~0\177\000\000"); x2("\000(\000?\000=0[\000)0[\000\000", "0[\000\000", 0, 2); n("\000(\000?\000=0F\000)\000.\000\000", "0D\000\000"); x2("\000(\000?\000!0F\000)0K\000\000", "0K\000\000", 0, 2); n("\000(\000?\000!0h\000)0B\000\000", "0h\000\000"); x2("\000(\000?\000i\000:0B\000)\000\000", "0B\000\000", 0, 2); x2("\000(\000?\000i\000:0v0y\000)\000\000", "0v0y\000\000", 0, 4); n("\000(\000?\000i\000:0D\000)\000\000", "0F\000\000"); x2("\000(\000?\000m\000:0\210\000.\000)\000\000", "0\210\000\012\000\000", 0, 4); x2("\000(\000?\000m\000:\000.0\201\000)\000\000", "0~\000\0120\201\000\000", 2, 6); x2("0B\000?\000\000", "\000\000", 0, 0); x2("Y\011\000?\000\000", "S\026\000\000", 0, 0); x2("Y\011\000?\000\000", "Y\011\000\000", 0, 2); x2("\221\317\000*\000\000", "\000\000", 0, 0); x2("\221\317\000*\000\000", "\221\317\000\000", 0, 2); x2("[P\000*\000\000", "[P[P[P\000\000", 0, 6); x2("\231\254\000*\000\000", "\236\177\231\254\231\254\231\254\231\254\000\000", 0, 0); n("\134q\000+\000\000", "\000\000"); x2("l\263\000+\000\000", "l\263\000\000", 0, 2); x2("fB\000+\000\000", "fBfBfBfB\000\000", 0, 8); x2("0H\000+\000\000", "0H0H0F0F0F\000\000", 0, 4); x2("0F\000+\000\000", "0J0F0F0F0F\000\000", 2, 10); x2("\000.\000?\000\000", "0_\000\000", 0, 2); x2("\000.\000*\000\000", "0q0t0w0z\000\000", 0, 8); x2("\000.\000+\000\000", "0\215\000\000", 0, 2); x2("\000.\000+\000\000", "0D0F0H0K\000\012\000\000", 0, 8); x2("0B\000|0D\000\000", "0B\000\000", 0, 2); x2("0B\000|0D\000\000", "0D\000\000", 0, 2); x2("0B0D\000|0D0F\000\000", "0B0D\000\000", 0, 4); x2("0B0D\000|0D0F\000\000", "0D0F\000\000", 0, 4); x2("0\222\000(\000?\000:0K0M\000|0M0O\000)\000\000", "0\2220K0M\000\000", 0, 6); x2("0\222\000(\000?\000:0K0M\000|0M0O\000)0Q\000\000", "0\2220M0O0Q\000\000", 0, 8); x2("0B0D\000|\000(\000?\000:0B0F\000|0B0\222\000)\000\000", "0B0\222\000\000", 0, 4); x2("0B\000|0D\000|0F\000\000", "0H0F\000\000", 2, 4); x2("0B\000|0D\000|0F0H\000|0J0K0M\000|0O\000|0Q0S0U\000|0W0Y0[\000|0]\000|0_0a\000|0d0f0h0j0k\000|0l0m\000\000", "0W0Y0[\000\000", 0, 6); n("0B\000|0D\000|0F0H\000|0J0K0M\000|0O\000|0Q0S0U\000|0W0Y0[\000|0]\000|0_0a\000|0d0f0h0j0k\000|0l0m\000\000", "0Y0[\000\000"); x2("0B\000|\000^0\217\000\000", "0v0B\000\000", 2, 4); x2("0B\000|\000^0\222\000\000", "0\2220B\000\000", 0, 2); x2("\233<\000|\000\134\000G\216\312\000\000", "0Q\216\312\233<\000\000", 4, 6); x2("\233<\000|\000\134\000G\216\312\000\000", "\216\312\233<\000\000", 0, 2); x2("\233<\000|\000\134\000A\216\312\000\000", "\000b\216\312\233<\000\000", 4, 6); x2("\233<\000|\000\134\000A\216\312\000\000", "\216\312\000\000", 0, 2); x2("\233<\000|\216\312\000\134\000Z\000\000", "\216\312\233<\000\000", 2, 4); x2("\233<\000|\216\312\000\134\000Z\000\000", "\216\312\000\000", 0, 2); x2("\233<\000|\216\312\000\134\000Z\000\000", "\216\312\000\012\000\000", 0, 2); x2("\233<\000|\216\312\000\134\000z\000\000", "\216\312\233<\000\000", 2, 4); x2("\233<\000|\216\312\000\134\000z\000\000", "\216\312\000\000", 0, 2); x2("\000\134\000w\000|\000\134\000s\000\000", "0J\000\000", 0, 2); x2("\000\134\000w\000|\000%\000\000", "\000%0J\000\000", 0, 2); x2("\000\134\000w\000|\000[\000&\000$\000]\000\000", "0F\000&\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000\000", "0F\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000|\000[\000^0K\000-0S\000]\000\000", "0B\000\000", 0, 2); x2("\000[0D\000-0Q\000]\000|\000[\000^0K\000-0S\000]\000\000", "0K\000\000", 0, 2); x2("\000[\000^0B\000]\000\000", "\000\012\000\000", 0, 2); x2("\000(\000?\000:0B\000|\000[0F\000-0M\000]\000)\000|0D0\222\000\000", "0F0\222\000\000", 0, 2); x2("\000(\000?\000:0B\000|\000[0F\000-0M\000]\000)\000|0D0\222\000\000", "0D0\222\000\000", 0, 4); x2("0B0D0F\000|\000(\000?\000=0Q0Q\000)\000.\000.0{\000\000", "0Q0Q0{\000\000", 0, 6); x2("0B0D0F\000|\000(\000?\000!0Q0Q\000)\000.\000.0{\000\000", "0B0D0{\000\000", 0, 6); x2("\000(\000?\000=0\2220B\000)\000.\000.0B\000|\000(\000?\000=0\2220\222\000)\000.\000.0B\000\000", "0\2220\2220B\000\000", 0, 6); x2("\000(\000?\000<\000=0B\000|0D0F\000)0D\000\000", "0D0F0D\000\000", 4, 6); n("\000(\000?\000>0B\000|0B0D0H\000)0F\000\000", "0B0D0H0F\000\000"); x2("\000(\000?\000>0B0D0H\000|0B\000)0F\000\000", "0B0D0H0F\000\000", 0, 8); x2("0B\000?\000|0D\000\000", "0B\000\000", 0, 2); x2("0B\000?\000|0D\000\000", "0D\000\000", 0, 0); x2("0B\000?\000|0D\000\000", "\000\000", 0, 0); x2("0B\000*\000|0D\000\000", "0B0B\000\000", 0, 4); x2("0B\000*\000|0D\000*\000\000", "0D0B\000\000", 0, 0); x2("0B\000*\000|0D\000*\000\000", "0B0D\000\000", 0, 2); x2("\000[\000a0B\000]\000*\000|0D\000*\000\000", "\000a0B0D0D0D\000\000", 0, 4); x2("0B\000+\000|0D\000*\000\000", "\000\000", 0, 0); x2("0B\000+\000|0D\000*\000\000", "0D0D0D\000\000", 0, 6); x2("0B\000+\000|0D\000*\000\000", "0B0D0D0D\000\000", 0, 2); x2("0B\000+\000|0D\000*\000\000", "\000a0B0D0D0D\000\000", 0, 0); n("0B\000+\000|0D\000+\000\000", "\000\000"); x2("\000(0B\000|0D\000)\000?\000\000", "0D\000\000", 0, 2); x2("\000(0B\000|0D\000)\000*\000\000", "0D0B\000\000", 0, 4); x2("\000(0B\000|0D\000)\000+\000\000", "0D0B0D\000\000", 0, 6); x2("\000(0B0D\000|0F0B\000)\000+\000\000", "0F0B0B0D0F0H\000\000", 0, 8); x2("\000(0B0D\000|0F0H\000)\000+\000\000", "0F0B0B0D0F0H\000\000", 4, 12); x2("\000(0B0D\000|0F0B\000)\000+\000\000", "0B0B0D0F0B\000\000", 2, 10); x2("\000(0B0D\000|0F0B\000)\000+\000\000", "0B0D0\2220F0B\000\000", 0, 4); x2("\000(0B0D\000|0F0B\000)\000+\000\000", "\000$\000$\000z\000z\000z\000z0B0D0\2220F0B\000\000", 12, 16); x2("\000(0B\000|0D0B0D\000)\000+\000\000", "0B0D0B0D0B\000\000", 0, 10); x2("\000(0B\000|0D0B0D\000)\000+\000\000", "0D0B\000\000", 2, 4); x2("\000(0B\000|0D0B0D\000)\000+\000\000", "0D0B0B0B0D0B\000\000", 2, 8); x2("\000(\000?\000:0B\000|0D\000)\000(\000?\000:0B\000|0D\000)\000\000", "0B0D\000\000", 0, 4); x2("\000(\000?\000:0B\000*\000|0D\000*\000)\000(\000?\000:0B\000*\000|0D\000*\000)\000\000", "0B0B0B0D0D0D\000\000", 0, 6); x2("\000(\000?\000:0B\000*\000|0D\000*\000)\000(\000?\000:0B\000+\000|0D\000+\000)\000\000", "0B0B0B0D0D0D\000\000", 0, 12); x2("\000(\000?\000:0B\000+\000|0D\000+\000)\000{\0002\000}\000\000", "0B0B0B0D0D0D\000\000", 0, 12); x2("\000(\000?\000:0B\000+\000|0D\000+\000)\000{\0001\000,\0002\000}\000\000", "0B0B0B0D0D0D\000\000", 0, 12); x2("\000(\000?\000:0B\000+\000|\000\134\000A0D\000*\000)0F0F\000\000", "0F0F\000\000", 0, 4); n("\000(\000?\000:0B\000+\000|\000\134\000A0D\000*\000)0F0F\000\000", "0B0D0F0F\000\000"); x2("\000(\000?\000:\000^0B\000+\000|0D\000+\000)\000*0F\000\000", "0B0B0D0D0D0B0D0F\000\000", 12, 16); x2("\000(\000?\000:\000^0B\000+\000|0D\000+\000)\000*0F\000\000", "0B0B0D0D0D0D0F\000\000", 0, 14); x2("0F\000{\0000\000,\000}\000\000", "0F0F0F0F\000\000", 0, 8); x2("0B\000|\000(\000?\000i\000)\000c\000\000", "\000C\000\000", 0, 2); x2("\000(\000?\000i\000)\000c\000|0B\000\000", "\000C\000\000", 0, 2); x2("\000(\000?\000i\000:0B\000)\000|\000a\000\000", "\000a\000\000", 0, 2); n("\000(\000?\000i\000:0B\000)\000|\000a\000\000", "\000A\000\000"); x2("\000[0B0D0F\000]\000?\000\000", "0B0D0F\000\000", 0, 2); x2("\000[0B0D0F\000]\000*\000\000", "0B0D0F\000\000", 0, 6); x2("\000[\000^0B0D0F\000]\000*\000\000", "0B0D0F\000\000", 0, 0); n("\000[\000^0B0D0F\000]\000+\000\000", "0B0D0F\000\000"); x2("0B\000?\000?\000\000", "0B0B0B\000\000", 0, 0); x2("0D0B\000?\000?0D\000\000", "0D0B0D\000\000", 0, 6); x2("0B\000*\000?\000\000", "0B0B0B\000\000", 0, 0); x2("0D0B\000*\000?\000\000", "0D0B0B\000\000", 0, 2); x2("0D0B\000*\000?0D\000\000", "0D0B0B0D\000\000", 0, 8); x2("0B\000+\000?\000\000", "0B0B0B\000\000", 0, 2); x2("0D0B\000+\000?\000\000", "0D0B0B\000\000", 0, 4); x2("0D0B\000+\000?0D\000\000", "0D0B0B0D\000\000", 0, 8); x2("\000(\000?\000:Y)\000?\000)\000?\000?\000\000", "Y)\000\000", 0, 0); x2("\000(\000?\000:Y)\000?\000?\000)\000?\000\000", "Y)\000\000", 0, 0); x2("\000(\000?\000:Y\042\000?\000)\000+\000?\000\000", "Y\042Y\042Y\042\000\000", 0, 2); x2("\000(\000?\000:\230\250\000+\000)\000?\000?\000\000", "\230\250\230\250\230\250\000\000", 0, 0); x2("\000(\000?\000:\226\352\000+\000)\000?\000?\227\034\000\000", "\226\352\226\352\226\352\227\034\000\000", 0, 8); x2("\000(\000?\000:0B0D\000)\000?\000{\0002\000}\000\000", "\000\000", 0, 0); x2("\000(\000?\000:\233<\216\312\000)\000?\000{\0002\000}\000\000", "\233<\216\312\233<\216\312\233<\000\000", 0, 8); x2("\000(\000?\000:\233<\216\312\000)\000*\000{\0000\000}\000\000", "\233<\216\312\233<\216\312\233<\000\000", 0, 0); x2("\000(\000?\000:\233<\216\312\000)\000{\0003\000,\000}\000\000", "\233<\216\312\233<\216\312\233<\216\312\233<\216\312\000\000", 0, 16); n("\000(\000?\000:\233<\216\312\000)\000{\0003\000,\000}\000\000", "\233<\216\312\233<\216\312\000\000"); x2("\000(\000?\000:\233<\216\312\000)\000{\0002\000,\0004\000}\000\000", "\233<\216\312\233<\216\312\233<\216\312\000\000", 0, 12); x2("\000(\000?\000:\233<\216\312\000)\000{\0002\000,\0004\000}\000\000", "\233<\216\312\233<\216\312\233<\216\312\233<\216\312\233<\216\312\000\000", 0, 16); x2("\000(\000?\000:\233<\216\312\000)\000{\0002\000,\0004\000}\000?\000\000", "\233<\216\312\233<\216\312\233<\216\312\233<\216\312\233<\216\312\000\000", 0, 8); x2("\000(\000?\000:\233<\216\312\000)\000{\000,\000}\000\000", "\233<\216\312\000{\000,\000}\000\000", 0, 10); x2("\000(\000?\000:0K0M0O\000)\000+\000?\000{\0002\000}\000\000", "0K0M0O0K0M0O0K0M0O\000\000", 0, 12); x3("\000(pk\000)\000\000", "pk\000\000", 0, 2, 1); x3("\000(pkl4\000)\000\000", "pkl4\000\000", 0, 4, 1); x2("\000(\000(fB\225\223\000)\000)\000\000", "fB\225\223\000\000", 0, 4); x3("\000(\000(\230\250l4\000)\000)\000\000", "\230\250l4\000\000", 0, 4, 1); x3("\000(\000(f(e\345\000)\000)\000\000", "f(e\345\000\000", 0, 4, 2); x3("\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\000(\221\317[P\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000)\000\000", "\221\317[P\000\000", 0, 4, 20); x3("\000(0B0D\000)\000(0F0H\000)\000\000", "0B0D0F0H\000\000", 0, 4, 1); x3("\000(0B0D\000)\000(0F0H\000)\000\000", "0B0D0F0H\000\000", 4, 8, 2); x3("\000(\000)\000(0B\000)0D0F\000(0H0J0K\000)0M0O0Q0S\000\000", "0B0D0F0H0J0K0M0O0Q0S\000\000", 6, 12, 3); x3("\000(\000(\000)\000(0B\000)0D0F\000(0H0J0K\000)0M0O0Q0S\000)\000\000", "0B0D0F0H0J0K0M0O0Q0S\000\000", 6, 12, 4); x3("\000.\000*\000(0\3250\251\000)0\3630\3730\336\000(0\363\000(\000)0\2670\3450\277\000)0\2440\363\000\000", "0\3250\2510\3630\3730\3360\3630\2670\3450\2770\2440\363\000\000", 10, 18, 2); x2("\000(\000^0B\000)\000\000", "0B\000\000", 0, 2); x3("\000(0B\000)\000|\000(0B\000)\000\000", "0D0B\000\000", 2, 4, 1); x3("\000(\000^0B\000)\000|\000(0B\000)\000\000", "0D0B\000\000", 2, 4, 2); x3("\000(0B\000?\000)\000\000", "0B0B0B\000\000", 0, 2, 1); x3("\000(0~\000*\000)\000\000", "0~0~0~\000\000", 0, 6, 1); x3("\000(0h\000*\000)\000\000", "\000\000", 0, 0, 1); x3("\000(0\213\000+\000)\000\000", "0\2130\2130\2130\2130\2130\2130\213\000\000", 0, 14, 1); x3("\000(0u\000+\000|0x\000*\000)\000\000", "0u0u0u0x0x\000\000", 0, 6, 1); x3("\000(0B\000+\000|0D\000?\000)\000\000", "0D0D0D0B0B\000\000", 0, 2, 1); x3("\000(0B0D0F\000)\000?\000\000", "0B0D0F\000\000", 0, 6, 1); x3("\000(0B0D0F\000)\000*\000\000", "0B0D0F\000\000", 0, 6, 1); x3("\000(0B0D0F\000)\000+\000\000", "0B0D0F\000\000", 0, 6, 1); x3("\000(0U0W0Y\000|0B0D0F\000)\000+\000\000", "0B0D0F\000\000", 0, 6, 1); x3("\000(\000[0j0k0l\000]\000[0K0M0O\000]\000|0K0M0O\000)\000+\000\000", "0K0M0O\000\000", 0, 6, 1); x3("\000(\000(\000?\000i\000:0B0D0F\000)\000)\000\000", "0B0D0F\000\000", 0, 6, 1); x3("\000(\000(\000?\000m\000:0B\000.0F\000)\000)\000\000", "0B\000\0120F\000\000", 0, 6, 1); x3("\000(\000(\000?\000=0B0\223\000)0B\000)\000\000", "0B0\2230D\000\000", 0, 2, 1); x3("0B0D0F\000|\000(\000.0B0D0H\000)\000\000", "0\2230B0D0H\000\000", 0, 8, 1); x3("0B\000*\000(\000.\000)\000\000", "0B0B0B0B0\223\000\000", 8, 10, 1); x3("0B\000*\000?\000(\000.\000)\000\000", "0B0B0B0B0\223\000\000", 0, 2, 1); x3("0B\000*\000?\000(0\223\000)\000\000", "0B0B0B0B0\223\000\000", 8, 10, 1); x3("\000[0D0F0H\000]0B\000*\000(\000.\000)\000\000", "0H0B0B0B0B0\223\000\000", 10, 12, 1); x3("\000(\000\134\000A0D0D\000)0F0F\000\000", "0D0D0F0F\000\000", 0, 4, 1); n("\000(\000\134\000A0D0D\000)0F0F\000\000", "0\2230D0D0F0F\000\000"); x3("\000(\000^0D0D\000)0F0F\000\000", "0D0D0F0F\000\000", 0, 4, 1); n("\000(\000^0D0D\000)0F0F\000\000", "0\2230D0D0F0F\000\000"); x3("0\2150\215\000(0\2130\213\000$\000)\000\000", "0\2150\2150\2130\213\000\000", 4, 8, 1); n("0\2150\215\000(0\2130\213\000$\000)\000\000", "0\2150\2150\2130\2130\213\000\000"); x2("\000(q!\000)\000\134\0001\000\000", "q!q!\000\000", 0, 4); n("\000(q!\000)\000\134\0001\000\000", "q!kf\000\000"); x2("\000(zz\000?\000)\000\134\0001\000\000", "zzzz\000\000", 0, 4); x2("\000(zz\000?\000?\000)\000\134\0001\000\000", "zzzz\000\000", 0, 0); x2("\000(zz\000*\000)\000\134\0001\000\000", "zzzzzzzzzz\000\000", 0, 8); x3("\000(zz\000*\000)\000\134\0001\000\000", "zzzzzzzzzz\000\000", 0, 4, 1); x2("0B\000(0D\000*\000)\000\134\0001\000\000", "0B0D0D0D0D\000\000", 0, 10); x2("0B\000(0D\000*\000)\000\134\0001\000\000", "0B0D\000\000", 0, 2); x2("\000(0B\000*\000)\000(0D\000*\000)\000\134\0001\000\134\0002\000\000", "0B0B0B0D0D0B0B0B0D0D\000\000", 0, 20); x2("\000(0B\000*\000)\000(0D\000*\000)\000\134\0002\000\000", "0B0B0B0D0D0D0D\000\000", 0, 14); x3("\000(0B\000*\000)\000(0D\000*\000)\000\134\0002\000\000", "0B0B0B0D0D0D0D\000\000", 6, 10, 2); x2("\000(\000(\000(\000(\000(\000(\000(0}\000*\000)0z\000)\000)\000)\000)\000)\000)0t\000\134\0007\000\000", "0}0}0}0z0t0}0}0}\000\000", 0, 16); x3("\000(\000(\000(\000(\000(\000(\000(0}\000*\000)0z\000)\000)\000)\000)\000)\000)0t\000\134\0007\000\000", "0}0}0}0z0t0}0}0}\000\000", 0, 6, 7); x2("\000(0o\000)\000(0r\000)\000(0u\000)\000\134\0002\000\134\0001\000\134\0003\000\000", "0o0r0u0r0o0u\000\000", 0, 12); x2("\000(\000[0M\000-0Q\000]\000)\000\134\0001\000\000", "0O0O\000\000", 0, 4); x2("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000 \000\000", 0, 12); n("\000(\000\134\000w\000\134\000d\000\134\000s\000)\000\134\0001\000\000", "0B\0005\000 0B\0005\000\000"); x2("\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "\212\260\377\037\212\260\377\037\000\000", 0, 8); x2("\000.\000.\000.\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "0B\000a0B\212\260\377\037\212\260\377\037\000\000", 0, 14); x2("\000(\212\260\377\037\000|\000[0B\000-0F\000]\000{\0003\000}\000)\000\134\0001\000\000", "0F0D0F0F0D0F\000\000", 0, 12); x2("\000(\000^0S\000)\000\134\0001\000\000", "0S0S\000\000", 0, 4); n("\000(\000^0\200\000)\000\134\0001\000\000", "0\2010\2000\200\000\000"); n("\000(0B\000$\000)\000\134\0001\000\000", "0B0B\000\000"); n("\000(0B0D\000\134\000Z\000)\000\134\0001\000\000", "0B0D\000\000"); x2("\000(0B\000*\000\134\000Z\000)\000\134\0001\000\000", "0B\000\000", 2, 2); x2("\000.\000(0B\000*\000\134\000Z\000)\000\134\0001\000\000", "0D0B\000\000", 2, 4); x3("\000(\000.\000(0\2040D0\206\000)\000\134\0002\000)\000\000", "\000z0\2040D0\2060\2040D0\206\000\000", 0, 14, 1); x3("\000(\000.\000(\000.\000.\000\134\000d\000.\000)\000\134\0002\000)\000\000", "0B\0001\0002\0003\0004\0001\0002\0003\0004\000\000", 0, 18, 1); x2("\000(\000(\000?\000i\000:0B\000v0Z\000)\000)\000\134\0001\000\000", "0B\000v0Z0B\000v0Z\000\000", 0, 12); x2("\000(\000?\000Y\011\000|\000\134\000(\000\134\000g\000\000\134\000)\000)\000\000", "\000(\000(\000(\000(\000(\000(Y\011\000)\000)\000)\000)\000)\000)\000\000", 0, 26); x2("\000\134\000A\000(\000?\000:\000\134\000g\000<\226?\000_\0001\000>\000|\000\134\000g\000\000|\000\134\000z}BN\206\000 \000 \000(\000?\000<\226?\000_\0001\000>\211\263\000|\201\352\000\134\000g\000\201\352\000)\000(\000?\000W(\000|\203\351\205\251\000\134\000g\000<\226?\000_\0001\000>\203\351\205\251\000)\000)\000$\000\000", "\203\351\205\251\201\352\203\351\205\251\201\352W(\201\352\203\351\205\251\201\352\203\351\205\251\000\000", 0, 26); x2("\000[\000[0r0u\000]\000]\000\000", "0u\000\000", 0, 2); x2("\000[\000[0D0J0F\000]0K\000]\000\000", "0K\000\000", 0, 2); n("\000[\000[\000^0B\000]\000]\000\000", "0B\000\000"); n("\000[\000^\000[0B\000]\000]\000\000", "0B\000\000"); x2("\000[\000^\000[\000^0B\000]\000]\000\000", "0B\000\000", 0, 2); x2("\000[\000[0K0M0O\000]\000&\000&0M0O\000]\000\000", "0O\000\000", 0, 2); n("\000[\000[0K0M0O\000]\000&\000&0M0O\000]\000\000", "0K\000\000"); n("\000[\000[0K0M0O\000]\000&\000&0M0O\000]\000\000", "0Q\000\000"); x2("\000[0B\000-0\223\000&\000&0D\000-0\222\000&\000&0F\000-0\221\000]\000\000", "0\221\000\000", 0, 2); n("\000[\000^0B\000-0\223\000&\000&0D\000-0\222\000&\000&0F\000-0\221\000]\000\000", "0\221\000\000"); x2("\000[\000[\000^0B\000&\000&0B\000]\000&\000&0B\000-0\223\000]\000\000", "0D\000\000", 0, 2); n("\000[\000[\000^0B\000&\000&0B\000]\000&\000&0B\000-0\223\000]\000\000", "0B\000\000"); x2("\000[\000[\000^0B\000-0\223\000&\000&0D0F0H0J\000]\000&\000&\000[\000^0F\000-0K\000]\000]\000\000", "0M\000\000", 0, 2); n("\000[\000[\000^0B\000-0\223\000&\000&0D0F0H0J\000]\000&\000&\000[\000^0F\000-0K\000]\000]\000\000", "0D\000\000"); x2("\000[\000^\000[\000^0B0D0F\000]\000&\000&\000[\000^0F0H0J\000]\000]\000\000", "0F\000\000", 0, 2); x2("\000[\000^\000[\000^0B0D0F\000]\000&\000&\000[\000^0F0H0J\000]\000]\000\000", "0H\000\000", 0, 2); n("\000[\000^\000[\000^0B0D0F\000]\000&\000&\000[\000^0F0H0J\000]\000]\000\000", "0K\000\000"); x2("\000[0B\000-\000&\000&\000-0B\000]\000\000", "\000-\000\000", 0, 2); x2("\000[\000^\000[\000^\000a\000-\000z0B0D0F\000]\000&\000&\000[\000^\000b\000c\000d\000e\000f\000g0F0H0J\000]\000q\000-\000w\000]\000\000", "0H\000\000", 0, 2); x2("\000[\000^\000[\000^\000a\000-\000z0B0D0F\000]\000&\000&\000[\000^\000b\000c\000d\000e\000f\000g0F0H0J\000]\000g\000-\000w\000]\000\000", "\000f\000\000", 0, 2); x2("\000[\000^\000[\000^\000a\000-\000z0B0D0F\000]\000&\000&\000[\000^\000b\000c\000d\000e\000f\000g0F0H0J\000]\000g\000-\000w\000]\000\000", "\000g\000\000", 0, 2); n("\000[\000^\000[\000^\000a\000-\000z0B0D0F\000]\000&\000&\000[\000^\000b\000c\000d\000e\000f\000g0F0H0J\000]\000g\000-\000w\000]\000\000", "\0002\000\000"); x2("\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000\134\000/\000b\000>\000\000", "\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000/\000b\000>\000\000", 0, 40); x2("\000.\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000\134\000/\000b\000>\000\000", "\000a\000<\000b\000>0\3200\3740\2700\3470\3630n0\3000\2460\3630\3550\3740\311\000<\000/\000b\000>\000\000", 0, 40); x2("\000^\000\\\000p\000{\000K\000a\000t\000a\000k\000a\000n\000a\000}\000$\000\000", "\060\277\000\000", 0, 2); x2("\000\\\000o\000{\0001\0000\0001\000}\000\000", "\000A\000\000", 0, 2); x2("\000\\\000o\000{\0001\0001\0000\0007\0002\0001\000}\000\000", "\221\321\000\000", 0, 2); x2("\000\\\000R\000\000", "\000\015\000\012\000\000", 0, 4); // \R: general newline x2("\000\\\000R\000\000", "\000\012\000\000", 0, 2); x2("\000\\\000R\000\000", "\000\015\000\000", 0, 2); x2("\000\\\000R\000\000", "\000\013\000\000", 0, 2); n("\000\\\000R\000\012\000\000", "\000\015\000\012\000\000"); x2("\000\\\000R\000\000", "\x00\x85\000\000", 0, 2); x2("\000\\\000R\000\000", "\x20\x28\000\000", 0, 2); 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()); #ifndef POSIX_TEST onig_region_free(region, 1); onig_end(); #endif return ((nfail == 0 && nerror == 0) ? 0 : -1); } oniguruma-6.7.0/windows/000077500000000000000000000000001321242335200152215ustar00rootroot00000000000000oniguruma-6.7.0/windows/testc.c000066400000000000000000000704411321242335200165150ustar00rootroot00000000000000/* * This program was generated by testconv.rb. */ #include "config.h" #ifdef ONIG_ESCAPE_UCHAR_COLLISION #undef ONIG_ESCAPE_UCHAR_COLLISION #endif #include #ifdef POSIX_TEST #include "onigposix.h" #else #include "oniguruma.h" #endif #ifdef HAVE_STRING_H # include #else # include #endif #define SLEN(s) strlen(s) static int nsucc = 0; static int nfail = 0; static int nerror = 0; static FILE* err_file; #ifndef POSIX_TEST static OnigRegion* region; #endif static void xx(char* pattern, char* str, int from, int to, int mem, int not) { int r; #ifdef POSIX_TEST regex_t reg; char buf[200]; regmatch_t pmatch[25]; r = regcomp(®, pattern, REG_EXTENDED | REG_NEWLINE); if (r) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } r = regexec(®, str, reg.re_nsub + 1, pmatch, 0); if (r != 0 && r != REG_NOMATCH) { regerror(r, ®, buf, sizeof(buf)); fprintf(err_file, "ERROR: %s\n", buf); nerror++; return ; } if (r == REG_NOMATCH) { 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 (pmatch[mem].rm_so == from && pmatch[mem].rm_eo == 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, pmatch[mem].rm_so, pmatch[mem].rm_eo); nfail++; } } } regfree(®); #else regex_t* reg; OnigErrorInfo einfo; r = onig_new(®, (UChar* )pattern, (UChar* )(pattern + SLEN(pattern)), ONIG_OPTION_DEFAULT, ONIG_ENCODING_SJIS, ONIG_SYNTAX_DEFAULT, &einfo); if (r) { char s[ONIG_MAX_ERROR_MESSAGE_LEN]; onig_error_code_to_str((UChar* )s, r, &einfo); fprintf(err_file, "ERROR: %s\n", s); nerror++; 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]; onig_error_code_to_str((UChar* )s, r); fprintf(err_file, "ERROR: %s\n", s); nerror++; 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); #endif } static void x2(char* pattern, char* str, int from, int to) { xx(pattern, str, from, to, 0, 0); } static void x3(char* pattern, char* str, int from, int to, int mem) { xx(pattern, str, from, to, mem, 0); } static void n(char* pattern, char* str) { xx(pattern, str, 0, 0, 0, 1); } extern int main(int argc, char* argv[]) { #ifndef POSIX_TEST static OnigEncoding use_encs[] = { ONIG_ENCODING_SJIS }; onig_initialize(use_encs, sizeof(use_encs)/sizeof(use_encs[0])); #endif err_file = stdout; #ifdef POSIX_TEST reg_set_encoding(REG_POSIX_ENCODING_SJIS); #else region = onig_region_new(); #endif 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); x2("(a)\\g<1>", "aa", 0, 2); x2("(?a)", "a", 0, 1); x2("(?ab)\\g", "abab", 0, 4); x2("(?.zv.)\\k", "azvbazvb", 0, 8); x2("(?<=\\g)|-\\zEND (?XyZ)", "XyZ", 3, 3); x2("(?|a\\g)+", "", 0, 0); x2("(?|\\(\\g\\))+$", "()(())", 0, 6); x3("\\g(?.){0}", "X", 0, 1, 1); x2("\\g(abc|df(?.YZ){2,8}){0}", "XYZ", 0, 3); x2("\\A(?(a\\g)|)\\z", "aaaa", 0, 4); x2("(?|\\g\\g)\\z|\\zEND (?a|(b)\\g)", "bbbbabba", 0, 8); x2("(?\\w+\\sx)a+\\k", " fg xaaaaaaaafg x", 2, 18); x3("(z)()()(?<_9>a)\\g<_9>", "zaa", 2, 3, 1); x2("(.)(((?<_>a)))\\k<_>", "zaa", 0, 3); x2("((?\\d)|(?\\w))(\\k|\\k)", "ff", 0, 2); x2("(?:(?)|(?efg))\\k", "", 0, 0); x2("(?:(?abc)|(?efg))\\k", "abcefgefg", 3, 9); n("(?:(?abc)|(?efg))\\k", "abcefg"); x2("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "a-pyumpyum", 2, 10); x3("(?:(?.)|(?..)|(?...)|(?....)|(?.....)|(?......)|(?.......)|(?........)|(?.........)|(?..........)|(?...........)|(?............)|(?.............)|(?..............))\\k$", "xxxxabcdefghijklmnabcdefghijklmn", 4, 18, 14); x3("(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?)(?aaa)(?)$", "aaa", 0, 3, 16); x2("(?a|\\(\\g\\))", "a", 0, 1); x2("(?a|\\(\\g\\))", "((((((a))))))", 0, 13); x3("(?a|\\(\\g\\))", "((((((((a))))))))", 0, 17, 1); x2("\\g|\\zEND(?.*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|\\g|\\zEND (?a|c\\gc)(?b|d\\gd))$", "cdcbcdc", 0, 7); x2("\\A(?|a\\g)\\z|\\zEND (?\\g)", "aaaa", 0, 4); x2("(?(a|b\\gc){3,5})", "baaaaca", 1, 5); x2("(?(a|b\\gc){3,5})", "baaaacaaaaa", 0, 10); x2("(?\\(([^\\(\\)]++|\\g)*+\\))", "((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("\\xED\\xF2", "\xed\xf2", 0, 2); x2("", "あ", 0, 0); x2("あ", "あ", 0, 2); n("い", "あ"); x2("うう", "うう", 0, 4); x2("あいう", "あいう", 0, 6); x2("こここここここここここここここここここここここここここここここここここ", "こここここここここここここここここここここここここここここここここここ", 0, 70); x2("あ", "いあ", 2, 4); x2("いう", "あいう", 2, 6); x2("\\xca\\xb8", "\xca\xb8", 0, 2); x2(".", "あ", 0, 2); x2("..", "かき", 0, 4); x2("\\w", "お", 0, 2); n("\\W", "あ"); x2("[\\W]", "う$", 2, 3); x2("\\S", "そ", 0, 2); x2("\\S", "漢", 0, 2); x2("\\b", "気 ", 0, 0); x2("\\b", " ほ", 1, 1); x2("\\B", "せそ ", 2, 2); x2("\\B", "う ", 3, 3); x2("\\B", " い", 0, 0); x2("[たち]", "ち", 0, 2); n("[なに]", "ぬ"); x2("[う-お]", "え", 0, 2); n("[^け]", "け"); x2("[\\w]", "ね", 0, 2); n("[\\d]", "ふ"); x2("[\\D]", "は", 0, 2); n("[\\s]", "く"); x2("[\\S]", "へ", 0, 2); x2("[\\w\\d]", "よ", 0, 2); x2("[\\w\\d]", " よ", 3, 5); n("\\w鬼車", " 鬼車"); x2("鬼\\W車", "鬼 車", 0, 5); x2("あ.い.う", "ああいいう", 0, 10); x2(".\\wう\\W..ぞ", "えうう うぞぞ", 0, 13); x2("\\s\\wこここ", " ここここ", 0, 9); x2("ああ.け", "ああけけ", 0, 8); n(".い", "いえ"); x2(".お", "おお", 0, 4); x2("^あ", "あ", 0, 2); x2("^む$", "む", 0, 2); x2("^\\w$", "に", 0, 2); x2("^\\wかきくけこ$", "zかきくけこ", 0, 11); x2("^\\w...うえお$", "zあいううえお", 0, 13); x2("\\w\\w\\s\\Wおおお\\d", "aお おおお4", 0, 12); x2("\\Aたちつ", "たちつ", 0, 6); x2("むめも\\Z", "むめも", 0, 6); x2("かきく\\z", "かきく", 0, 6); x2("かきく\\Z", "かきく\n", 0, 6); x2("\\Gぽぴ", "ぽぴ", 0, 4); n("\\Gえ", "うえお"); n("とて\\G", "とて"); n("まみ\\A", "まみ"); n("ま\\Aみ", "まみ"); x2("(?=せ)せ", "せ", 0, 2); n("(?=う).", "い"); x2("(?!う)か", "か", 0, 2); n("(?!と)あ", "と"); x2("(?i:あ)", "あ", 0, 2); x2("(?i:ぶべ)", "ぶべ", 0, 4); n("(?i:い)", "う"); x2("(?m:よ.)", "よ\n", 0, 3); x2("(?m:.め)", "ま\nめ", 2, 5); x2("あ?", "", 0, 0); x2("変?", "化", 0, 0); x2("変?", "変", 0, 2); x2("量*", "", 0, 0); x2("量*", "量", 0, 2); x2("子*", "子子子", 0, 6); x2("馬*", "鹿馬馬馬馬", 0, 0); n("山+", ""); x2("河+", "河", 0, 2); x2("時+", "時時時時", 0, 8); x2("え+", "ええううう", 0, 4); x2("う+", "おうううう", 2, 10); x2(".?", "た", 0, 2); x2(".*", "ぱぴぷぺ", 0, 8); x2(".+", "ろ", 0, 2); x2(".+", "いうえか\n", 0, 8); x2("あ|い", "あ", 0, 2); x2("あ|い", "い", 0, 2); x2("あい|いう", "あい", 0, 4); x2("あい|いう", "いう", 0, 4); x2("を(?:かき|きく)", "をかき", 0, 6); x2("を(?:かき|きく)け", "をきくけ", 0, 8); x2("あい|(?:あう|あを)", "あを", 0, 4); x2("あ|い|う", "えう", 2, 4); x2("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "しすせ", 0, 6); n("あ|い|うえ|おかき|く|けこさ|しすせ|そ|たち|つてとなに|ぬね", "すせ"); x2("あ|^わ", "ぶあ", 2, 4); x2("あ|^を", "をあ", 0, 2); x2("鬼|\\G車", "け車鬼", 4, 6); x2("鬼|\\G車", "車鬼", 0, 2); x2("鬼|\\A車", "b車鬼", 3, 5); x2("鬼|\\A車", "車", 0, 2); x2("鬼|車\\Z", "車鬼", 2, 4); x2("鬼|車\\Z", "車", 0, 2); x2("鬼|車\\Z", "車\n", 0, 2); x2("鬼|車\\z", "車鬼", 2, 4); x2("鬼|車\\z", "車", 0, 2); x2("\\w|\\s", "お", 0, 2); x2("\\w|%", "%お", 0, 1); x2("\\w|[&$]", "う&", 0, 2); x2("[い-け]", "う", 0, 2); x2("[い-け]|[^か-こ]", "あ", 0, 2); x2("[い-け]|[^か-こ]", "か", 0, 2); x2("[^あ]", "\n", 0, 1); x2("(?:あ|[う-き])|いを", "うを", 0, 2); x2("(?:あ|[う-き])|いを", "いを", 0, 4); x2("あいう|(?=けけ)..ほ", "けけほ", 0, 6); x2("あいう|(?!けけ)..ほ", "あいほ", 0, 6); x2("(?=をあ)..あ|(?=をを)..あ", "ををあ", 0, 6); x2("(?<=あ|いう)い", "いうい", 4, 6); n("(?>あ|あいえ)う", "あいえう"); x2("(?>あいえ|あ)う", "あいえう", 0, 8); x2("あ?|い", "あ", 0, 2); x2("あ?|い", "い", 0, 0); x2("あ?|い", "", 0, 0); x2("あ*|い", "ああ", 0, 4); x2("あ*|い*", "いあ", 0, 0); x2("あ*|い*", "あい", 0, 2); x2("[aあ]*|い*", "aあいいい", 0, 3); x2("あ+|い*", "", 0, 0); x2("あ+|い*", "いいい", 0, 6); x2("あ+|い*", "あいいい", 0, 2); x2("あ+|い*", "aあいいい", 0, 0); n("あ+|い+", ""); x2("(あ|い)?", "い", 0, 2); x2("(あ|い)*", "いあ", 0, 4); x2("(あ|い)+", "いあい", 0, 6); x2("(あい|うあ)+", "うああいうえ", 0, 8); x2("(あい|うえ)+", "うああいうえ", 4, 12); x2("(あい|うあ)+", "ああいうあ", 2, 10); x2("(あい|うあ)+", "あいをうあ", 0, 4); x2("(あい|うあ)+", "$$zzzzあいをうあ", 6, 10); x2("(あ|いあい)+", "あいあいあ", 0, 10); x2("(あ|いあい)+", "いあ", 2, 4); x2("(あ|いあい)+", "いあああいあ", 2, 8); x2("(?:あ|い)(?:あ|い)", "あい", 0, 4); x2("(?:あ*|い*)(?:あ*|い*)", "あああいいい", 0, 6); x2("(?:あ*|い*)(?:あ+|い+)", "あああいいい", 0, 12); x2("(?:あ+|い+){2}", "あああいいい", 0, 12); x2("(?:あ+|い+){1,2}", "あああいいい", 0, 12); x2("(?:あ+|\\Aい*)うう", "うう", 0, 4); n("(?:あ+|\\Aい*)うう", "あいうう"); x2("(?:^あ+|い+)*う", "ああいいいあいう", 12, 16); x2("(?:^あ+|い+)*う", "ああいいいいう", 0, 14); x2("う{0,}", "うううう", 0, 8); x2("あ|(?i)c", "C", 0, 1); x2("(?i)c|あ", "C", 0, 1); x2("(?i:あ)|a", "a", 0, 1); n("(?i:あ)|a", "A"); x2("[あいう]?", "あいう", 0, 2); x2("[あいう]*", "あいう", 0, 6); x2("[^あいう]*", "あいう", 0, 0); n("[^あいう]+", "あいう"); x2("あ?\?", "あああ", 0, 0); x2("いあ?\?い", "いあい", 0, 6); x2("あ*?", "あああ", 0, 0); x2("いあ*?", "いああ", 0, 2); x2("いあ*?い", "いああい", 0, 8); x2("あ+?", "あああ", 0, 2); x2("いあ+?", "いああ", 0, 4); x2("いあ+?い", "いああい", 0, 8); x2("(?:天?)?\?", "天", 0, 0); x2("(?:天?\?)?", "天", 0, 0); x2("(?:夢?)+?", "夢夢夢", 0, 2); x2("(?:風+)?\?", "風風風", 0, 0); x2("(?:雪+)?\?霜", "雪雪雪霜", 0, 8); x2("(?:あい)?{2}", "", 0, 0); x2("(?:鬼車)?{2}", "鬼車鬼車鬼", 0, 8); x2("(?:鬼車)*{0}", "鬼車鬼車鬼", 0, 0); x2("(?:鬼車){3,}", "鬼車鬼車鬼車鬼車", 0, 16); n("(?:鬼車){3,}", "鬼車鬼車"); x2("(?:鬼車){2,4}", "鬼車鬼車鬼車", 0, 12); x2("(?:鬼車){2,4}", "鬼車鬼車鬼車鬼車鬼車", 0, 16); x2("(?:鬼車){2,4}?", "鬼車鬼車鬼車鬼車鬼車", 0, 8); x2("(?:鬼車){,}", "鬼車{,}", 0, 7); x2("(?:かきく)+?{2}", "かきくかきくかきく", 0, 12); x3("(火)", "火", 0, 2, 1); x3("(火水)", "火水", 0, 4, 1); x2("((時間))", "時間", 0, 4); x3("((風水))", "風水", 0, 4, 1); x3("((昨日))", "昨日", 0, 4, 2); x3("((((((((((((((((((((量子))))))))))))))))))))", "量子", 0, 4, 20); x3("(あい)(うえ)", "あいうえ", 0, 4, 1); x3("(あい)(うえ)", "あいうえ", 4, 8, 2); x3("()(あ)いう(えおか)きくけこ", "あいうえおかきくけこ", 6, 12, 3); x3("(()(あ)いう(えおか)きくけこ)", "あいうえおかきくけこ", 6, 12, 4); x3(".*(フォ)ン・マ(ン()シュタ)イン", "フォン・マンシュタイン", 10, 18, 2); x2("(^あ)", "あ", 0, 2); x3("(あ)|(あ)", "いあ", 2, 4, 1); x3("(^あ)|(あ)", "いあ", 2, 4, 2); x3("(あ?)", "あああ", 0, 2, 1); x3("(ま*)", "ままま", 0, 6, 1); x3("(と*)", "", 0, 0, 1); x3("(る+)", "るるるるるるる", 0, 14, 1); x3("(ふ+|へ*)", "ふふふへへ", 0, 6, 1); x3("(あ+|い?)", "いいいああ", 0, 2, 1); x3("(あいう)?", "あいう", 0, 6, 1); x3("(あいう)*", "あいう", 0, 6, 1); x3("(あいう)+", "あいう", 0, 6, 1); x3("(さしす|あいう)+", "あいう", 0, 6, 1); x3("([なにぬ][かきく]|かきく)+", "かきく", 0, 6, 1); x3("((?i:あいう))", "あいう", 0, 6, 1); x3("((?m:あ.う))", "あ\nう", 0, 5, 1); x3("((?=あん)あ)", "あんい", 0, 2, 1); x3("あいう|(.あいえ)", "んあいえ", 0, 8, 1); x3("あ*(.)", "ああああん", 8, 10, 1); x3("あ*?(.)", "ああああん", 0, 2, 1); x3("あ*?(ん)", "ああああん", 8, 10, 1); x3("[いうえ]あ*(.)", "えああああん", 10, 12, 1); x3("(\\Aいい)うう", "いいうう", 0, 4, 1); n("(\\Aいい)うう", "んいいうう"); x3("(^いい)うう", "いいうう", 0, 4, 1); n("(^いい)うう", "んいいうう"); x3("ろろ(るる$)", "ろろるる", 4, 8, 1); n("ろろ(るる$)", "ろろるるる"); x2("(無)\\1", "無無", 0, 4); n("(無)\\1", "無武"); x2("(空?)\\1", "空空", 0, 4); x2("(空?\?)\\1", "空空", 0, 0); x2("(空*)\\1", "空空空空空", 0, 8); x3("(空*)\\1", "空空空空空", 0, 4, 1); x2("あ(い*)\\1", "あいいいい", 0, 10); x2("あ(い*)\\1", "あい", 0, 2); x2("(あ*)(い*)\\1\\2", "あああいいあああいい", 0, 20); x2("(あ*)(い*)\\2", "あああいいいい", 0, 14); x3("(あ*)(い*)\\2", "あああいいいい", 6, 10, 2); x2("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 16); x3("(((((((ぽ*)ぺ))))))ぴ\\7", "ぽぽぽぺぴぽぽぽ", 0, 6, 7); x2("(は)(ひ)(ふ)\\2\\1\\3", "はひふひはふ", 0, 12); x2("([き-け])\\1", "くく", 0, 4); x2("(\\w\\d\\s)\\1", "あ5 あ5 ", 0, 8); n("(\\w\\d\\s)\\1", "あ5 あ5"); x2("(誰?|[あ-う]{3})\\1", "誰?誰?", 0, 8); x2("...(誰?|[あ-う]{3})\\1", "あaあ誰?誰?", 0, 13); x2("(誰?|[あ-う]{3})\\1", "ういうういう", 0, 12); x2("(^こ)\\1", "ここ", 0, 4); n("(^む)\\1", "めむむ"); n("(あ$)\\1", "ああ"); n("(あい\\Z)\\1", "あい"); x2("(あ*\\Z)\\1", "あ", 2, 2); x2(".(あ*\\Z)\\1", "いあ", 2, 4); x3("(.(やいゆ)\\2)", "zやいゆやいゆ", 0, 13, 1); x3("(.(..\\d.)\\2)", "あ12341234", 0, 10, 1); x2("((?i:あvず))\\1", "あvずあvず", 0, 10); x2("(?<愚か>変|\\(\\g<愚か>\\))", "((((((変))))))", 0, 14); x2("\\A(?:\\g<阿_1>|\\g<云_2>|\\z終了 (?<阿_1>観|自\\g<云_2>自)(?<云_2>在|菩薩\\g<阿_1>菩薩))$", "菩薩自菩薩自在自菩薩自菩薩", 0, 26); x2("[[ひふ]]", "ふ", 0, 2); x2("[[いおう]か]", "か", 0, 2); n("[[^あ]]", "あ"); n("[^[あ]]", "あ"); x2("[^[^あ]]", "あ", 0, 2); x2("[[かきく]&&きく]", "く", 0, 2); n("[[かきく]&&きく]", "か"); n("[[かきく]&&きく]", "け"); x2("[あ-ん&&い-を&&う-ゑ]", "ゑ", 0, 2); n("[^あ-ん&&い-を&&う-ゑ]", "ゑ"); x2("[[^あ&&あ]&&あ-ん]", "い", 0, 2); n("[[^あ&&あ]&&あ-ん]", "あ"); x2("[[^あ-ん&&いうえお]&&[^う-か]]", "き", 0, 2); n("[[^あ-ん&&いうえお]&&[^う-か]]", "い"); x2("[^[^あいう]&&[^うえお]]", "う", 0, 2); x2("[^[^あいう]&&[^うえお]]", "え", 0, 2); n("[^[^あいう]&&[^うえお]]", "か"); x2("[あ-&&-あ]", "-", 0, 1); x2("[^[^a-zあいう]&&[^bcdefgうえお]q-w]", "え", 0, 2); 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>", "aバージョンのダウンロード", 0, 32); x2(".バージョンのダウンロード<\\/b>", "aバージョンのダウンロード", 0, 32); fprintf(stdout, "\nRESULT SUCC: %d, FAIL: %d, ERROR: %d (by Oniguruma %s)\n", nsucc, nfail, nerror, onig_version()); #ifndef POSIX_TEST onig_region_free(region, 1); onig_end(); #endif return ((nfail == 0 && nerror == 0) ? 0 : -1); }